diff --git a/artifacts/build-info/24725923d734a8bf04a89645a2c314a8.json b/artifacts/build-info/24725923d734a8bf04a89645a2c314a8.json new file mode 100644 index 000000000..791839f46 --- /dev/null +++ b/artifacts/build-info/24725923d734a8bf04a89645a2c314a8.json @@ -0,0 +1 @@ +{"id":"24725923d734a8bf04a89645a2c314a8","_format":"hh-sol-build-info-1","solcVersion":"0.5.17","solcLongVersion":"0.5.17+commit.d19bba13","input":{"language":"Solidity","sources":{"contracts/BaseJumpRateModelV2.sol":{"content":"pragma solidity 0.5.17;\n\nimport \"./SafeMath.sol\";\n\n/**\n * @title Logic for Compound's JumpRateModel Contract V2.\n * @author Compound (modified by Dharma Labs, refactored by Arr00)\n * @notice Version 2 modifies Version 1 by enabling updateable parameters.\n */\ncontract BaseJumpRateModelV2 {\n using SafeMath for uint;\n\n event NewInterestParams(uint baseRatePerBlock, uint multiplierPerBlock, uint jumpMultiplierPerBlock, uint kink);\n\n /**\n * @notice The address of the owner, i.e. the Timelock contract, which can update parameters directly\n */\n address public owner;\n\n /**\n * @notice The approximate number of blocks per year that is assumed by the interest rate model\n */\n uint public constant blocksPerYear = 2372500; // 6500 blocks/day * 365 days/year\n\n /**\n * @notice The multiplier of utilization rate that gives the slope of the interest rate\n */\n uint public multiplierPerBlock;\n\n /**\n * @notice The base interest rate which is the y-intercept when utilization rate is 0\n */\n uint public baseRatePerBlock;\n\n /**\n * @notice The multiplierPerBlock after hitting a specified utilization point\n */\n uint public jumpMultiplierPerBlock;\n\n /**\n * @notice The utilization point at which the jump multiplier is applied\n */\n uint public kink;\n\n /**\n * @notice Construct an interest rate model\n * @param baseRatePerYear The approximate target base APR, as a mantissa (scaled by 1e18)\n * @param multiplierPerYear The rate of increase in interest rate wrt utilization (scaled by 1e18)\n * @param jumpMultiplierPerYear The multiplierPerBlock after hitting a specified utilization point\n * @param kink_ The utilization point at which the jump multiplier is applied\n * @param owner_ The address of the owner, i.e. the Timelock contract (which has the ability to update parameters directly)\n */\n constructor(uint baseRatePerYear, uint multiplierPerYear, uint jumpMultiplierPerYear, uint kink_, address owner_) internal {\n owner = owner_;\n\n updateJumpRateModelInternal(baseRatePerYear, multiplierPerYear, jumpMultiplierPerYear, kink_);\n }\n\n /**\n * @notice Update the parameters of the interest rate model (only callable by owner, i.e. Timelock)\n * @param baseRatePerYear The approximate target base APR, as a mantissa (scaled by 1e18)\n * @param multiplierPerYear The rate of increase in interest rate wrt utilization (scaled by 1e18)\n * @param jumpMultiplierPerYear The multiplierPerBlock after hitting a specified utilization point\n * @param kink_ The utilization point at which the jump multiplier is applied\n */\n function updateJumpRateModel(uint baseRatePerYear, uint multiplierPerYear, uint jumpMultiplierPerYear, uint kink_) external {\n require(msg.sender == owner, \"only the owner may call this function.\");\n\n updateJumpRateModelInternal(baseRatePerYear, multiplierPerYear, jumpMultiplierPerYear, kink_);\n }\n\n /**\n * @notice Calculates the utilization rate of the market: `borrows / (cash + borrows - reserves)`\n * @param cash The amount of cash in the market\n * @param borrows The amount of borrows in the market\n * @param reserves The amount of reserves in the market (currently unused)\n * @return The utilization rate as a mantissa between [0, 1e18]\n */\n function utilizationRate(uint cash, uint borrows, uint reserves) public pure returns (uint) {\n // Utilization rate is 0 when there are no borrows\n if (borrows == 0) {\n return 0;\n }\n\n return borrows.mul(1e18).div(cash.add(borrows).sub(reserves));\n }\n\n /**\n * @notice Calculates the current borrow rate per block, with the error code expected by the market\n * @param cash The amount of cash in the market\n * @param borrows The amount of borrows in the market\n * @param reserves The amount of reserves in the market\n * @return The borrow rate percentage per block as a mantissa (scaled by 1e18)\n */\n function getBorrowRateInternal(uint cash, uint borrows, uint reserves) internal view returns (uint) {\n uint util = utilizationRate(cash, borrows, reserves);\n\n if (util <= kink) {\n return util.mul(multiplierPerBlock).div(1e18).add(baseRatePerBlock);\n } else {\n uint normalRate = kink.mul(multiplierPerBlock).div(1e18).add(baseRatePerBlock);\n uint excessUtil = util.sub(kink);\n return excessUtil.mul(jumpMultiplierPerBlock).div(1e18).add(normalRate);\n }\n }\n\n /**\n * @notice Calculates the current supply rate per block\n * @param cash The amount of cash in the market\n * @param borrows The amount of borrows in the market\n * @param reserves The amount of reserves in the market\n * @param reserveFactorMantissa The current reserve factor for the market\n * @return The supply rate percentage per block as a mantissa (scaled by 1e18)\n */\n function getSupplyRate(uint cash, uint borrows, uint reserves, uint reserveFactorMantissa) public view returns (uint) {\n uint oneMinusReserveFactor = uint(1e18).sub(reserveFactorMantissa);\n uint borrowRate = getBorrowRateInternal(cash, borrows, reserves);\n uint rateToPool = borrowRate.mul(oneMinusReserveFactor).div(1e18);\n return utilizationRate(cash, borrows, reserves).mul(rateToPool).div(1e18);\n }\n\n /**\n * @notice Internal function to update the parameters of the interest rate model\n * @param baseRatePerYear The approximate target base APR, as a mantissa (scaled by 1e18)\n * @param multiplierPerYear The rate of increase in interest rate wrt utilization (scaled by 1e18)\n * @param jumpMultiplierPerYear The multiplierPerBlock after hitting a specified utilization point\n * @param kink_ The utilization point at which the jump multiplier is applied\n */\n function updateJumpRateModelInternal(uint baseRatePerYear, uint multiplierPerYear, uint jumpMultiplierPerYear, uint kink_) internal {\n baseRatePerBlock = baseRatePerYear.div(blocksPerYear);\n multiplierPerBlock = (multiplierPerYear.mul(1e18)).div(blocksPerYear.mul(kink_));\n jumpMultiplierPerBlock = jumpMultiplierPerYear.div(blocksPerYear);\n kink = kink_;\n\n emit NewInterestParams(baseRatePerBlock, multiplierPerBlock, jumpMultiplierPerBlock, kink);\n }\n}\n"},"contracts/SafeMath.sol":{"content":"pragma solidity 0.5.17;\n\n// From https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/math/Math.sol\n// Subject to the MIT license.\n\n/**\n * @dev Wrappers over Solidity's arithmetic operations with added overflow\n * checks.\n *\n * Arithmetic operations in Solidity wrap on overflow. This can easily result\n * in bugs, because programmers usually assume that an overflow raises an\n * error, which is the standard behavior in high level programming languages.\n * `SafeMath` restores this intuition by reverting the transaction when an\n * operation overflows.\n *\n * Using this library instead of the unchecked operations eliminates an entire\n * class of bugs, so it's recommended to use it always.\n */\nlibrary SafeMath {\n /**\n * @dev Returns the addition of two unsigned integers, reverting on overflow.\n *\n * Counterpart to Solidity's `+` operator.\n *\n * Requirements:\n * - Addition cannot overflow.\n */\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\n uint256 c = a + b;\n require(c >= a, \"SafeMath: addition overflow\");\n\n return c;\n }\n\n /**\n * @dev Returns the addition of two unsigned integers, reverting with custom message on overflow.\n *\n * Counterpart to Solidity's `+` operator.\n *\n * Requirements:\n * - Addition cannot overflow.\n */\n function add(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\n uint256 c = a + b;\n require(c >= a, errorMessage);\n\n return c;\n }\n\n /**\n * @dev Returns the subtraction of two unsigned integers, reverting on underflow (when the result is negative).\n *\n * Counterpart to Solidity's `-` operator.\n *\n * Requirements:\n * - Subtraction cannot underflow.\n */\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n return sub(a, b, \"SafeMath: subtraction underflow\");\n }\n\n /**\n * @dev Returns the subtraction of two unsigned integers, reverting with custom message on underflow (when the result is negative).\n *\n * Counterpart to Solidity's `-` operator.\n *\n * Requirements:\n * - Subtraction cannot underflow.\n */\n function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\n require(b <= a, errorMessage);\n uint256 c = a - b;\n\n return c;\n }\n\n /**\n * @dev Returns the multiplication of two unsigned integers, reverting on overflow.\n *\n * Counterpart to Solidity's `*` operator.\n *\n * Requirements:\n * - Multiplication cannot overflow.\n */\n function mul(uint256 a, uint256 b) internal pure returns (uint256) {\n // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\n // benefit is lost if 'b' is also tested.\n // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\n if (a == 0) {\n return 0;\n }\n\n uint256 c = a * b;\n require(c / a == b, \"SafeMath: multiplication overflow\");\n\n return c;\n }\n\n /**\n * @dev Returns the multiplication of two unsigned integers, reverting on overflow.\n *\n * Counterpart to Solidity's `*` operator.\n *\n * Requirements:\n * - Multiplication cannot overflow.\n */\n function mul(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\n // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\n // benefit is lost if 'b' is also tested.\n // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\n if (a == 0) {\n return 0;\n }\n\n uint256 c = a * b;\n require(c / a == b, errorMessage);\n\n return c;\n }\n\n /**\n * @dev Returns the integer division of two unsigned integers.\n * Reverts on division by zero. The result is rounded towards zero.\n *\n * Counterpart to Solidity's `/` operator. Note: this function uses a\n * `revert` opcode (which leaves remaining gas untouched) while Solidity\n * uses an invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n * - The divisor cannot be zero.\n */\n function div(uint256 a, uint256 b) internal pure returns (uint256) {\n return div(a, b, \"SafeMath: division by zero\");\n }\n\n /**\n * @dev Returns the integer division of two unsigned integers.\n * Reverts with custom message on division by zero. The result is rounded towards zero.\n *\n * Counterpart to Solidity's `/` operator. Note: this function uses a\n * `revert` opcode (which leaves remaining gas untouched) while Solidity\n * uses an invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n * - The divisor cannot be zero.\n */\n function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\n // Solidity only automatically asserts when dividing by 0\n require(b > 0, errorMessage);\n uint256 c = a / b;\n // assert(a == b * c + a % b); // There is no case in which this doesn't hold\n\n return c;\n }\n\n /**\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n * Reverts when dividing by zero.\n *\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\n * opcode (which leaves remaining gas untouched) while Solidity uses an\n * invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n * - The divisor cannot be zero.\n */\n function mod(uint256 a, uint256 b) internal pure returns (uint256) {\n return mod(a, b, \"SafeMath: modulo by zero\");\n }\n\n /**\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n * Reverts with custom message when dividing by zero.\n *\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\n * opcode (which leaves remaining gas untouched) while Solidity uses an\n * invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n * - The divisor cannot be zero.\n */\n function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\n require(b != 0, errorMessage);\n return a % b;\n }\n}\n"},"contracts/ReactiveJumpRateModelV2.sol":{"content":"pragma solidity 0.5.17;\n\nimport \"./BaseJumpRateModelV2.sol\";\nimport \"./InterestRateModel.sol\";\nimport \"./CToken.sol\";\n\n\n/**\n * @title Compound's JumpRateModel Contract V2 for V2 cTokens\n * @author Arr00\n * @notice Supports only for V2 cTokens\n */\ncontract ReactiveJumpRateModelV2 is InterestRateModel, BaseJumpRateModelV2 {\n /**\n * @notice CToken to react to\n */\n CToken public cToken;\n\n /**\n * @notice Buffer size of interest checkpoints\n */\n uint constant internal INTEREST_CHECKPOINT_BUFFER = 16;\n \n /**\n * @notice Number of interest checkpoints\n */\n uint internal interestCheckpointCount;\n\n /**\n * @notice Struct for interest checkpoints\n */\n struct InterestCheckpoint {\n uint blockNumber;\n uint borrowIndex;\n uint borrowRateMantissa;\n }\n\n /**\n * @notice Array of interest checkpoints\n */\n InterestCheckpoint[] internal interestCheckpoints;\n\n /**\n * @notice Calculates the current borrow rate per block\n * @param cash The amount of cash in the market\n * @param borrows The amount of borrows in the market\n * @param reserves The amount of reserves in the market\n * @return The borrow rate percentage per block as a mantissa (scaled by 1e18)\n */\n function getBorrowRate(uint cash, uint borrows, uint reserves) external view returns (uint) {\n return getBorrowRateInternal(cash, borrows, reserves);\n }\n\n constructor (uint baseRatePerYear, uint multiplierPerYear, uint jumpMultiplierPerYear, uint kink_, address owner_, address cToken_) \n BaseJumpRateModelV2(baseRatePerYear, multiplierPerYear, jumpMultiplierPerYear, kink_, owner_) public {\n cToken = CToken(cToken_);\n }\n\n /**\n * @dev Checkpoints the current borrow index and adjusts parameters based on the average borrow rate calculated from past checkpoints.\n */\n function checkpointInterest() external {\n checkpointInterest(cToken.borrowRatePerBlock());\n }\n\n /**\n * @dev Checkpoints the current borrow index and adjusts parameters based on the average borrow rate calculated from past checkpoints.\n */\n function checkpointInterest(uint borrowRateMantissa) public {\n // Make sure the sender is the cToken\n require(msg.sender == address(cToken));\n\n // Get cToken variables\n uint accrualBlockNumber = cToken.accrualBlockNumber();\n uint borrowIndex = cToken.borrowIndex();\n\n // Add latest interest checkpoint\n InterestCheckpoint memory checkpointNow = InterestCheckpoint(accrualBlockNumber, borrowIndex, borrowRateMantissa);\n\n // Check if the two latest checkpoints were within the last day\n if (interestCheckpointCount >= 2 && interestCheckpoints[(interestCheckpointCount - 2) % INTEREST_CHECKPOINT_BUFFER].blockNumber >= accrualBlockNumber.sub(6500)) {\n // If yes, overwrite the last checkpoint\n interestCheckpoints[(interestCheckpointCount - 1) % INTEREST_CHECKPOINT_BUFFER] = checkpointNow;\n } else {\n // If not, add a fresh checkpoint\n interestCheckpoints[interestCheckpointCount % INTEREST_CHECKPOINT_BUFFER] = checkpointNow;\n interestCheckpointCount++;\n\n // Make sure earliest checkpoint is at least 6 days old\n uint256 blockNumberSixDaysAgo = accrualBlockNumber.sub(6500 * 6);\n if (interestCheckpoints[interestCheckpointCount > INTEREST_CHECKPOINT_BUFFER ? interestCheckpointCount % INTEREST_CHECKPOINT_BUFFER : 0].blockNumber > blockNumberSixDaysAgo) return;\n\n // Check interest checkpoints (assuming earliest checkpoint is at least 6 days old)\n InterestCheckpoint memory interestCheckpoint;\n bool checkpointNotOld = false;\n uint256 i;\n\n // Start looping from the oldest checkpoint\n for (i = interestCheckpointCount > INTEREST_CHECKPOINT_BUFFER ? interestCheckpointCount - INTEREST_CHECKPOINT_BUFFER : 0; i < interestCheckpointCount; i++) {\n interestCheckpoint = interestCheckpoints[i % INTEREST_CHECKPOINT_BUFFER];\n\n // If we can find a checkpoint within 1 day of a week ago (i.e., 6 to 8 days ago), use it\n if (interestCheckpoint.blockNumber >= accrualBlockNumber.sub(6500 * 8) && interestCheckpoint.blockNumber <= blockNumberSixDaysAgo) {\n checkpointNotOld = true;\n break;\n }\n\n // If we have looped too far (newer than 6 days ago), break so we use the previous (old) checkpoint\n if (interestCheckpoint.blockNumber > blockNumberSixDaysAgo) break;\n }\n\n // If previous checkpoint is old (because either the loop ended or we broke the loop), find the interest rate at 7 days (using the previous checkpoint, which must be at least 8 days old given the above conditions)\n if (!checkpointNotOld) {\n interestCheckpoint = interestCheckpoints[(i - 1) % INTEREST_CHECKPOINT_BUFFER];\n uint blockNumberOneWeekAgo = accrualBlockNumber.sub(6500 * 7);\n uint blockDelta = blockNumberOneWeekAgo.sub(interestCheckpoint.blockNumber);\n uint simpleInterestFactor = interestCheckpoint.borrowRateMantissa.mul(blockDelta);\n interestCheckpoint = InterestCheckpoint(blockNumberOneWeekAgo, borrowIndex.add(borrowIndex.mul(simpleInterestFactor).div(1e18)), interestCheckpoint.borrowRateMantissa);\n }\n\n // Get average borrow rate per block over the last (roughly) one week\n uint avgBorrowRateLastWeek = borrowIndex.mul(1e18).div(interestCheckpoint.borrowIndex).sub(1e18);\n uint avgBorrowRatePerBlock = avgBorrowRateLastWeek.div(accrualBlockNumber.sub(interestCheckpoint.blockNumber));\n\n // Get ideal JumpRateModel multiplierPerBlock param\n uint idealMultiplierPerBlock = avgBorrowRatePerBlock < baseRatePerBlock ? 0 : avgBorrowRatePerBlock.sub(baseRatePerBlock).mul(1e18).div(kink.sub(0.05e18));\n\n // Only reset params if idealMultiplierPerBlock differs from currentMultiplierPerBlock by >= 5%\n uint256 ratio = idealMultiplierPerBlock.mul(1e18).div(multiplierPerBlock);\n\n if (ratio <= 0.95e18 || ratio >= 1.05e18) {\n // Set JumpRateModelV2 params (multiplying per-block values to per-year)\n updateJumpRateModelInternal(\n baseRatePerBlock.mul(blocksPerYear),\n idealMultiplierPerBlock.mul(blocksPerYear.mul(kink)).div(1e18), // Note that the JumpRateModelV2 computes multiplierPerBlock from muliplierPerYear differently than the JumpRateModel\n jumpMultiplierPerBlock.mul(blocksPerYear),\n kink\n );\n }\n }\n }\n\n /**\n * @dev Resets the interest checkpoint count to 0.\n */\n function resetInterestCheckpoints() external {\n // Make sure the sender is the cToken\n require(msg.sender == address(cToken));\n\n // Reset checkpoint count to 0\n interestCheckpointCount = 0;\n }\n}\n"},"contracts/InterestRateModel.sol":{"content":"pragma solidity 0.5.17;\n\n/**\n * @title Compound's InterestRateModel Interface\n * @author Compound\n */\ncontract InterestRateModel {\n /// @notice Indicator that this is an InterestRateModel contract (for inspection)\n bool public constant isInterestRateModel = true;\n\n /**\n * @notice Calculates the current borrow interest rate per block\n * @param cash The total amount of cash the market has\n * @param borrows The total amount of borrows the market has outstanding\n * @param reserves The total amount of reserves the market has\n * @return The borrow rate per block (as a percentage, and scaled by 1e18)\n */\n function getBorrowRate(uint cash, uint borrows, uint reserves) external view returns (uint);\n\n /**\n * @notice Calculates the current supply interest rate per block\n * @param cash The total amount of cash the market has\n * @param borrows The total amount of borrows the market has outstanding\n * @param reserves The total amount of reserves the market has\n * @param reserveFactorMantissa The current reserve factor the market has\n * @return The supply rate per block (as a percentage, and scaled by 1e18)\n */\n function getSupplyRate(uint cash, uint borrows, uint reserves, uint reserveFactorMantissa) external view returns (uint);\n\n}\n"},"contracts/CToken.sol":{"content":"pragma solidity 0.5.17;\n\nimport \"./ComptrollerInterface.sol\";\nimport \"./CTokenInterfaces.sol\";\nimport \"./ErrorReporter.sol\";\nimport \"./Exponential.sol\";\nimport \"./EIP20Interface.sol\";\nimport \"./EIP20NonStandardInterface.sol\";\nimport \"./InterestRateModel.sol\";\n\n/**\n * @title Compound's CToken Contract\n * @notice Abstract base for CTokens\n * @author Compound\n */\ncontract CToken is CTokenInterface, Exponential, TokenErrorReporter {\n /**\n * @notice Returns a boolean indicating if the sender has admin rights\n */\n function hasAdminRights() internal view returns (bool) {\n ComptrollerV3Storage comptrollerStorage = ComptrollerV3Storage(address(comptroller));\n return (msg.sender == comptrollerStorage.admin() && comptrollerStorage.adminHasRights()) || (msg.sender == address(fuseAdmin) && comptrollerStorage.fuseAdminHasRights());\n }\n\n /**\n * @notice Initialize the money market\n * @param comptroller_ The address of the Comptroller\n * @param interestRateModel_ The address of the interest rate model\n * @param initialExchangeRateMantissa_ The initial exchange rate, scaled by 1e18\n * @param name_ EIP-20 name of this token\n * @param symbol_ EIP-20 symbol of this token\n * @param decimals_ EIP-20 decimal precision of this token\n */\n function initialize(ComptrollerInterface comptroller_,\n InterestRateModel interestRateModel_,\n uint initialExchangeRateMantissa_,\n string memory name_,\n string memory symbol_,\n uint8 decimals_,\n uint256 reserveFactorMantissa_,\n uint256 adminFeeMantissa_) public {\n require(msg.sender == address(fuseAdmin), \"only Fuse admin may initialize the market\");\n require(accrualBlockNumber == 0 && borrowIndex == 0, \"market may only be initialized once\");\n\n // Set initial exchange rate\n initialExchangeRateMantissa = initialExchangeRateMantissa_;\n require(initialExchangeRateMantissa > 0, \"initial exchange rate must be greater than zero.\");\n\n // Set the comptroller\n uint err = _setComptroller(comptroller_);\n require(err == uint(Error.NO_ERROR), \"setting comptroller failed\");\n\n // Initialize block number and borrow index (block number mocks depend on comptroller being set)\n accrualBlockNumber = getBlockNumber();\n borrowIndex = mantissaOne;\n\n // Set the interest rate model (depends on block number / borrow index)\n err = _setInterestRateModelFresh(interestRateModel_);\n require(err == uint(Error.NO_ERROR), \"setting interest rate model failed\");\n\n name = name_;\n symbol = symbol_;\n decimals = decimals_;\n\n // Set reserve factor\n err = _setReserveFactorFresh(reserveFactorMantissa_);\n require(err == uint(Error.NO_ERROR), \"setting reserve factor failed\");\n\n // Set admin fee\n err = _setAdminFeeFresh(adminFeeMantissa_);\n require(err == uint(Error.NO_ERROR), \"setting admin fee failed\");\n\n // The counter starts true to prevent changing it from zero to non-zero (i.e. smaller cost/refund)\n _notEntered = true;\n }\n \n /**\n * @dev Returns latest pending Fuse fee (to be set with `_setFuseFeeFresh`)\n */\n function getPendingFuseFeeFromAdmin() internal view returns (uint) {\n return fuseAdmin.interestFeeRate();\n }\n\n /**\n * @notice Transfer `tokens` tokens from `src` to `dst` by `spender`\n * @dev Called by both `transfer` and `transferFrom` internally\n * @param spender The address of the account performing the transfer\n * @param src The address of the source account\n * @param dst The address of the destination account\n * @param tokens The number of tokens to transfer\n * @return Whether or not the transfer succeeded\n */\n function transferTokens(address spender, address src, address dst, uint tokens) internal returns (uint) {\n /* Fail if transfer not allowed */\n uint allowed = comptroller.transferAllowed(address(this), src, dst, tokens);\n if (allowed != 0) {\n return failOpaque(Error.COMPTROLLER_REJECTION, FailureInfo.TRANSFER_COMPTROLLER_REJECTION, allowed);\n }\n\n /* Do not allow self-transfers */\n if (src == dst) {\n return fail(Error.BAD_INPUT, FailureInfo.TRANSFER_NOT_ALLOWED);\n }\n\n /* Get the allowance, infinite for the account owner */\n uint startingAllowance = 0;\n if (spender == src) {\n startingAllowance = uint(-1);\n } else {\n startingAllowance = transferAllowances[src][spender];\n }\n\n /* Do the calculations, checking for {under,over}flow */\n MathError mathErr;\n uint allowanceNew;\n uint srcTokensNew;\n uint dstTokensNew;\n\n (mathErr, allowanceNew) = subUInt(startingAllowance, tokens);\n if (mathErr != MathError.NO_ERROR) {\n return fail(Error.MATH_ERROR, FailureInfo.TRANSFER_NOT_ALLOWED);\n }\n\n (mathErr, srcTokensNew) = subUInt(accountTokens[src], tokens);\n if (mathErr != MathError.NO_ERROR) {\n return fail(Error.MATH_ERROR, FailureInfo.TRANSFER_NOT_ENOUGH);\n }\n\n (mathErr, dstTokensNew) = addUInt(accountTokens[dst], tokens);\n if (mathErr != MathError.NO_ERROR) {\n return fail(Error.MATH_ERROR, FailureInfo.TRANSFER_TOO_MUCH);\n }\n\n /////////////////////////\n // EFFECTS & INTERACTIONS\n // (No safe failures beyond this point)\n\n accountTokens[src] = srcTokensNew;\n accountTokens[dst] = dstTokensNew;\n\n /* Eat some of the allowance (if necessary) */\n if (startingAllowance != uint(-1)) {\n transferAllowances[src][spender] = allowanceNew;\n }\n\n /* We emit a Transfer event */\n emit Transfer(src, dst, tokens);\n\n /* We call the defense hook */\n // unused function\n // comptroller.transferVerify(address(this), src, dst, tokens);\n\n return uint(Error.NO_ERROR);\n }\n\n /**\n * @notice Transfer `amount` tokens from `msg.sender` to `dst`\n * @param dst The address of the destination account\n * @param amount The number of tokens to transfer\n * @return Whether or not the transfer succeeded\n */\n function transfer(address dst, uint256 amount) external nonReentrant(false) returns (bool) {\n return transferTokens(msg.sender, msg.sender, dst, amount) == uint(Error.NO_ERROR);\n }\n\n /**\n * @notice Transfer `amount` tokens from `src` to `dst`\n * @param src The address of the source account\n * @param dst The address of the destination account\n * @param amount The number of tokens to transfer\n * @return Whether or not the transfer succeeded\n */\n function transferFrom(address src, address dst, uint256 amount) external nonReentrant(false) returns (bool) {\n return transferTokens(msg.sender, src, dst, amount) == uint(Error.NO_ERROR);\n }\n\n /**\n * @notice Approve `spender` to transfer up to `amount` from `src`\n * @dev This will overwrite the approval amount for `spender`\n * and is subject to issues noted [here](https://eips.ethereum.org/EIPS/eip-20#approve)\n * @param spender The address of the account which may transfer tokens\n * @param amount The number of tokens that are approved (-1 means infinite)\n * @return Whether or not the approval succeeded\n */\n function approve(address spender, uint256 amount) external returns (bool) {\n address src = msg.sender;\n transferAllowances[src][spender] = amount;\n emit Approval(src, spender, amount);\n return true;\n }\n\n /**\n * @notice Get the current allowance from `owner` for `spender`\n * @param owner The address of the account which owns the tokens to be spent\n * @param spender The address of the account which may transfer tokens\n * @return The number of tokens allowed to be spent (-1 means infinite)\n */\n function allowance(address owner, address spender) external view returns (uint256) {\n return transferAllowances[owner][spender];\n }\n\n /**\n * @notice Get the token balance of the `owner`\n * @param owner The address of the account to query\n * @return The number of tokens owned by `owner`\n */\n function balanceOf(address owner) external view returns (uint256) {\n return accountTokens[owner];\n }\n\n /**\n * @notice Get the underlying balance of the `owner`\n * @dev This also accrues interest in a transaction\n * @param owner The address of the account to query\n * @return The amount of underlying owned by `owner`\n */\n function balanceOfUnderlying(address owner) external returns (uint) {\n Exp memory exchangeRate = Exp({mantissa: exchangeRateCurrent()});\n (MathError mErr, uint balance) = mulScalarTruncate(exchangeRate, accountTokens[owner]);\n require(mErr == MathError.NO_ERROR, \"balance could not be calculated\");\n return balance;\n }\n\n /**\n * @notice Get a snapshot of the account's balances, and the cached exchange rate\n * @dev This is used by comptroller to more efficiently perform liquidity checks.\n * @param account Address of the account to snapshot\n * @return (possible error, token balance, borrow balance, exchange rate mantissa)\n */\n function getAccountSnapshot(address account) external view returns (uint, uint, uint, uint) {\n uint cTokenBalance = accountTokens[account];\n uint borrowBalance;\n uint exchangeRateMantissa;\n\n MathError mErr;\n\n (mErr, borrowBalance) = borrowBalanceStoredInternal(account);\n if (mErr != MathError.NO_ERROR) {\n return (uint(Error.MATH_ERROR), 0, 0, 0);\n }\n\n (mErr, exchangeRateMantissa) = exchangeRateStoredInternal();\n if (mErr != MathError.NO_ERROR) {\n return (uint(Error.MATH_ERROR), 0, 0, 0);\n }\n\n return (uint(Error.NO_ERROR), cTokenBalance, borrowBalance, exchangeRateMantissa);\n }\n\n /**\n * @dev Function to simply retrieve block number\n * This exists mainly for inheriting test contracts to stub this result.\n */\n function getBlockNumber() internal view returns (uint) {\n return block.number;\n }\n\n /**\n * @notice Returns the current per-block borrow interest rate for this cToken\n * @return The borrow interest rate per block, scaled by 1e18\n */\n function borrowRatePerBlock() external view returns (uint) {\n return interestRateModel.getBorrowRate(getCashPrior(), totalBorrows, add_(totalReserves, add_(totalAdminFees, totalFuseFees)));\n }\n\n /**\n * @notice Returns the current per-block supply interest rate for this cToken\n * @return The supply interest rate per block, scaled by 1e18\n */\n function supplyRatePerBlock() external view returns (uint) {\n return interestRateModel.getSupplyRate(getCashPrior(), totalBorrows, add_(totalReserves, add_(totalAdminFees, totalFuseFees)), reserveFactorMantissa + fuseFeeMantissa + adminFeeMantissa);\n }\n\n /**\n * @notice Returns the current total borrows plus accrued interest\n * @return The total borrows with interest\n */\n function totalBorrowsCurrent() external nonReentrant(false) returns (uint) {\n require(accrueInterest() == uint(Error.NO_ERROR), \"accrue interest failed\");\n return totalBorrows;\n }\n\n /**\n * @notice Accrue interest to updated borrowIndex and then calculate account's borrow balance using the updated borrowIndex\n * @param account The address whose balance should be calculated after updating borrowIndex\n * @return The calculated balance\n */\n function borrowBalanceCurrent(address account) external nonReentrant(false) returns (uint) {\n require(accrueInterest() == uint(Error.NO_ERROR), \"accrue interest failed\");\n return borrowBalanceStored(account);\n }\n\n /**\n * @notice Return the borrow balance of account based on stored data\n * @param account The address whose balance should be calculated\n * @return The calculated balance\n */\n function borrowBalanceStored(address account) public view returns (uint) {\n (MathError err, uint result) = borrowBalanceStoredInternal(account);\n require(err == MathError.NO_ERROR, \"borrowBalanceStored: borrowBalanceStoredInternal failed\");\n return result;\n }\n\n /**\n * @notice Return the borrow balance of account based on stored data\n * @param account The address whose balance should be calculated\n * @return (error code, the calculated balance or 0 if error code is non-zero)\n */\n function borrowBalanceStoredInternal(address account) internal view returns (MathError, uint) {\n /* Note: we do not assert that the market is up to date */\n MathError mathErr;\n uint principalTimesIndex;\n uint result;\n\n /* Get borrowBalance and borrowIndex */\n BorrowSnapshot storage borrowSnapshot = accountBorrows[account];\n\n /* If borrowBalance = 0 then borrowIndex is likely also 0.\n * Rather than failing the calculation with a division by 0, we immediately return 0 in this case.\n */\n if (borrowSnapshot.principal == 0) {\n return (MathError.NO_ERROR, 0);\n }\n\n /* Calculate new borrow balance using the interest index:\n * recentBorrowBalance = borrower.borrowBalance * market.borrowIndex / borrower.borrowIndex\n */\n (mathErr, principalTimesIndex) = mulUInt(borrowSnapshot.principal, borrowIndex);\n if (mathErr != MathError.NO_ERROR) {\n return (mathErr, 0);\n }\n\n (mathErr, result) = divUInt(principalTimesIndex, borrowSnapshot.interestIndex);\n if (mathErr != MathError.NO_ERROR) {\n return (mathErr, 0);\n }\n\n return (MathError.NO_ERROR, result);\n }\n\n /**\n * @notice Accrue interest then return the up-to-date exchange rate\n * @return Calculated exchange rate scaled by 1e18\n */\n function exchangeRateCurrent() public nonReentrant(false) returns (uint) {\n require(accrueInterest() == uint(Error.NO_ERROR), \"accrue interest failed\");\n return exchangeRateStored();\n }\n\n /**\n * @notice Calculates the exchange rate from the underlying to the CToken\n * @dev This function does not accrue interest before calculating the exchange rate\n * @return Calculated exchange rate scaled by 1e18\n */\n function exchangeRateStored() public view returns (uint) {\n (MathError err, uint result) = exchangeRateStoredInternal();\n require(err == MathError.NO_ERROR, \"exchangeRateStored: exchangeRateStoredInternal failed\");\n return result;\n }\n\n /**\n * @notice Calculates the exchange rate from the underlying to the CToken\n * @dev This function does not accrue interest before calculating the exchange rate\n * @return (error code, calculated exchange rate scaled by 1e18)\n */\n function exchangeRateStoredInternal() internal view returns (MathError, uint) {\n uint _totalSupply = totalSupply;\n if (_totalSupply == 0) {\n /*\n * If there are no tokens minted:\n * exchangeRate = initialExchangeRate\n */\n return (MathError.NO_ERROR, initialExchangeRateMantissa);\n } else {\n /*\n * Otherwise:\n * exchangeRate = (totalCash + totalBorrows - (totalReserves + totalFuseFees + totalAdminFees)) / totalSupply\n */\n uint totalCash = getCashPrior();\n uint cashPlusBorrowsMinusReserves;\n Exp memory exchangeRate;\n MathError mathErr;\n\n (mathErr, cashPlusBorrowsMinusReserves) = addThenSubUInt(totalCash, totalBorrows, add_(totalReserves, add_(totalAdminFees, totalFuseFees)));\n if (mathErr != MathError.NO_ERROR) {\n return (mathErr, 0);\n }\n\n (mathErr, exchangeRate) = getExp(cashPlusBorrowsMinusReserves, _totalSupply);\n if (mathErr != MathError.NO_ERROR) {\n return (mathErr, 0);\n }\n\n return (MathError.NO_ERROR, exchangeRate.mantissa);\n }\n }\n\n /**\n * @notice Get cash balance of this cToken in the underlying asset\n * @return The quantity of underlying asset owned by this contract\n */\n function getCash() external view returns (uint) {\n return getCashPrior();\n }\n\n /**\n * @notice Applies accrued interest to total borrows and reserves\n * @dev This calculates interest accrued from the last checkpointed block\n * up to the current block and writes new checkpoint to storage.\n */\n function accrueInterest() public returns (uint) {\n /* Remember the initial block number */\n uint currentBlockNumber = getBlockNumber();\n\n /* Short-circuit accumulating 0 interest */\n if (accrualBlockNumber == currentBlockNumber) {\n return uint(Error.NO_ERROR);\n }\n\n /* Read the previous values out of storage */\n uint cashPrior = getCashPrior();\n\n /* Calculate the current borrow interest rate */\n uint borrowRateMantissa = interestRateModel.getBorrowRate(cashPrior, totalBorrows, add_(totalReserves, add_(totalAdminFees, totalFuseFees)));\n require(borrowRateMantissa <= borrowRateMaxMantissa, \"borrow rate is absurdly high\");\n\n /* Calculate the number of blocks elapsed since the last accrual */\n (MathError mathErr, uint blockDelta) = subUInt(currentBlockNumber, accrualBlockNumber);\n require(mathErr == MathError.NO_ERROR, \"could not calculate block delta\");\n\n return finishInterestAccrual(currentBlockNumber, cashPrior, borrowRateMantissa, blockDelta);\n }\n\n /**\n * @dev Split off from `accrueInterest` to avoid \"stack too deep\" error\".\n */\n function finishInterestAccrual(uint currentBlockNumber, uint cashPrior, uint borrowRateMantissa, uint blockDelta) private returns (uint) {\n /*\n * Calculate the interest accumulated into borrows and reserves and the new index:\n * simpleInterestFactor = borrowRate * blockDelta\n * interestAccumulated = simpleInterestFactor * totalBorrows\n * totalBorrowsNew = interestAccumulated + totalBorrows\n * totalReservesNew = interestAccumulated * reserveFactor + totalReserves\n * totalFuseFeesNew = interestAccumulated * fuseFee + totalFuseFees\n * totalAdminFeesNew = interestAccumulated * adminFee + totalAdminFees\n * borrowIndexNew = simpleInterestFactor * borrowIndex + borrowIndex\n */\n\n Exp memory simpleInterestFactor = mul_(Exp({mantissa: borrowRateMantissa}), blockDelta);\n uint interestAccumulated = mul_ScalarTruncate(simpleInterestFactor, totalBorrows);\n uint totalBorrowsNew = add_(interestAccumulated, totalBorrows);\n uint totalReservesNew = mul_ScalarTruncateAddUInt(Exp({mantissa: reserveFactorMantissa}), interestAccumulated, totalReserves);\n uint totalFuseFeesNew = mul_ScalarTruncateAddUInt(Exp({mantissa: fuseFeeMantissa}), interestAccumulated, totalFuseFees);\n uint totalAdminFeesNew = mul_ScalarTruncateAddUInt(Exp({mantissa: adminFeeMantissa}), interestAccumulated, totalAdminFees);\n uint borrowIndexNew = mul_ScalarTruncateAddUInt(simpleInterestFactor, borrowIndex, borrowIndex);\n\n /////////////////////////\n // EFFECTS & INTERACTIONS\n // (No safe failures beyond this point)\n\n /* We write the previously calculated values into storage */\n accrualBlockNumber = currentBlockNumber;\n borrowIndex = borrowIndexNew;\n totalBorrows = totalBorrowsNew;\n totalReserves = totalReservesNew;\n totalFuseFees = totalFuseFeesNew;\n totalAdminFees = totalAdminFeesNew;\n\n /* We emit an AccrueInterest event */\n emit AccrueInterest(cashPrior, interestAccumulated, borrowIndexNew, totalBorrowsNew);\n\n // Attempt to add interest checkpoint\n address(interestRateModel).call(abi.encodeWithSignature(\"checkpointInterest(uint256)\", borrowRateMantissa));\n\n return uint(Error.NO_ERROR);\n }\n\n /**\n * @notice Sender supplies assets into the market and receives cTokens in exchange\n * @dev Accrues interest whether or not the operation succeeds, unless reverted\n * @param mintAmount The amount of the underlying asset to supply\n * @return (uint, uint) An error code (0=success, otherwise a failure, see ErrorReporter.sol), and the actual mint amount.\n */\n function mintInternal(uint mintAmount) internal nonReentrant(false) returns (uint, uint) {\n uint error = accrueInterest();\n if (error != uint(Error.NO_ERROR)) {\n // accrueInterest emits logs on errors, but we still want to log the fact that an attempted borrow failed\n return (fail(Error(error), FailureInfo.MINT_ACCRUE_INTEREST_FAILED), 0);\n }\n // mintFresh emits the actual Mint event if successful and logs on errors, so we don't need to\n return mintFresh(msg.sender, mintAmount);\n }\n\n struct MintLocalVars {\n Error err;\n MathError mathErr;\n uint exchangeRateMantissa;\n uint mintTokens;\n uint totalSupplyNew;\n uint accountTokensNew;\n uint actualMintAmount;\n }\n\n /**\n * @notice User supplies assets into the market and receives cTokens in exchange\n * @dev Assumes interest has already been accrued up to the current block\n * @param minter The address of the account which is supplying the assets\n * @param mintAmount The amount of the underlying asset to supply\n * @return (uint, uint) An error code (0=success, otherwise a failure, see ErrorReporter.sol), and the actual mint amount.\n */\n function mintFresh(address minter, uint mintAmount) internal returns (uint, uint) {\n /* Fail if mint not allowed */\n uint allowed = comptroller.mintAllowed(address(this), minter, mintAmount);\n if (allowed != 0) {\n return (failOpaque(Error.COMPTROLLER_REJECTION, FailureInfo.MINT_COMPTROLLER_REJECTION, allowed), 0);\n }\n\n /* Verify market's block number equals current block number */\n if (accrualBlockNumber != getBlockNumber()) {\n return (fail(Error.MARKET_NOT_FRESH, FailureInfo.MINT_FRESHNESS_CHECK), 0);\n }\n\n MintLocalVars memory vars;\n\n (vars.mathErr, vars.exchangeRateMantissa) = exchangeRateStoredInternal();\n if (vars.mathErr != MathError.NO_ERROR) {\n return (failOpaque(Error.MATH_ERROR, FailureInfo.MINT_EXCHANGE_RATE_READ_FAILED, uint(vars.mathErr)), 0);\n }\n\n // Check max supply\n // unused function\n /* allowed = comptroller.mintWithinLimits(address(this), vars.exchangeRateMantissa, accountTokens[minter], mintAmount);\n if (allowed != 0) {\n return (failOpaque(Error.COMPTROLLER_REJECTION, FailureInfo.MINT_COMPTROLLER_REJECTION, allowed), 0);\n } */\n\n /////////////////////////\n // EFFECTS & INTERACTIONS\n // (No safe failures beyond this point)\n\n /*\n * We call `doTransferIn` for the minter and the mintAmount.\n * Note: The cToken must handle variations between ERC-20 and ETH underlying.\n * `doTransferIn` reverts if anything goes wrong, since we can't be sure if\n * side-effects occurred. The function returns the amount actually transferred,\n * in case of a fee. On success, the cToken holds an additional `actualMintAmount`\n * of cash.\n */\n vars.actualMintAmount = doTransferIn(minter, mintAmount);\n\n /*\n * We get the current exchange rate and calculate the number of cTokens to be minted:\n * mintTokens = actualMintAmount / exchangeRate\n */\n\n (vars.mathErr, vars.mintTokens) = divScalarByExpTruncate(vars.actualMintAmount, Exp({mantissa: vars.exchangeRateMantissa}));\n require(vars.mathErr == MathError.NO_ERROR, \"MINT_EXCHANGE_CALCULATION_FAILED\");\n\n /*\n * We calculate the new total supply of cTokens and minter token balance, checking for overflow:\n * totalSupplyNew = totalSupply + mintTokens\n * accountTokensNew = accountTokens[minter] + mintTokens\n */\n vars.totalSupplyNew = add_(totalSupply, vars.mintTokens);\n\n vars.accountTokensNew = add_(accountTokens[minter], vars.mintTokens);\n\n /* We write previously calculated values into storage */\n totalSupply = vars.totalSupplyNew;\n accountTokens[minter] = vars.accountTokensNew;\n\n /* We emit a Mint event, and a Transfer event */\n emit Mint(minter, vars.actualMintAmount, vars.mintTokens);\n emit Transfer(address(this), minter, vars.mintTokens);\n\n /* We call the defense hook */\n comptroller.mintVerify(address(this), minter, vars.actualMintAmount, vars.mintTokens);\n\n return (uint(Error.NO_ERROR), vars.actualMintAmount);\n }\n\n /**\n * @notice Sender redeems cTokens in exchange for the underlying asset\n * @dev Accrues interest whether or not the operation succeeds, unless reverted\n * @param redeemTokens The number of cTokens to redeem into underlying\n * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\n */\n function redeemInternal(uint redeemTokens) internal nonReentrant(false) returns (uint) {\n uint error = accrueInterest();\n if (error != uint(Error.NO_ERROR)) {\n // accrueInterest emits logs on errors, but we still want to log the fact that an attempted redeem failed\n return fail(Error(error), FailureInfo.REDEEM_ACCRUE_INTEREST_FAILED);\n }\n // redeemFresh emits redeem-specific logs on errors, so we don't need to\n return redeemFresh(msg.sender, redeemTokens, 0);\n }\n\n /**\n * @notice Sender redeems cTokens in exchange for a specified amount of underlying asset\n * @dev Accrues interest whether or not the operation succeeds, unless reverted\n * @param redeemAmount The amount of underlying to receive from redeeming cTokens\n * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\n */\n function redeemUnderlyingInternal(uint redeemAmount) internal nonReentrant(false) returns (uint) {\n uint error = accrueInterest();\n if (error != uint(Error.NO_ERROR)) {\n // accrueInterest emits logs on errors, but we still want to log the fact that an attempted redeem failed\n return fail(Error(error), FailureInfo.REDEEM_ACCRUE_INTEREST_FAILED);\n }\n // redeemFresh emits redeem-specific logs on errors, so we don't need to\n return redeemFresh(msg.sender, 0, redeemAmount);\n }\n\n struct RedeemLocalVars {\n Error err;\n MathError mathErr;\n uint exchangeRateMantissa;\n uint redeemTokens;\n uint redeemAmount;\n uint totalSupplyNew;\n uint accountTokensNew;\n }\n\n /**\n * @notice User redeems cTokens in exchange for the underlying asset\n * @dev Assumes interest has already been accrued up to the current block\n * @param redeemer The address of the account which is redeeming the tokens\n * @param redeemTokensIn The number of cTokens to redeem into underlying (only one of redeemTokensIn or redeemAmountIn may be non-zero)\n * @param redeemAmountIn The number of underlying tokens to receive from redeeming cTokens (only one of redeemTokensIn or redeemAmountIn may be non-zero)\n * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\n */\n function redeemFresh(address payable redeemer, uint redeemTokensIn, uint redeemAmountIn) internal returns (uint) {\n require(redeemTokensIn == 0 || redeemAmountIn == 0, \"one of redeemTokensIn or redeemAmountIn must be zero\");\n\n RedeemLocalVars memory vars;\n\n /* exchangeRate = invoke Exchange Rate Stored() */\n (vars.mathErr, vars.exchangeRateMantissa) = exchangeRateStoredInternal();\n if (vars.mathErr != MathError.NO_ERROR) {\n return failOpaque(Error.MATH_ERROR, FailureInfo.REDEEM_EXCHANGE_RATE_READ_FAILED, uint(vars.mathErr));\n }\n\n /* If redeemTokensIn > 0: */\n if (redeemTokensIn > 0) {\n /*\n * We calculate the exchange rate and the amount of underlying to be redeemed:\n * redeemTokens = redeemTokensIn\n * redeemAmount = redeemTokensIn x exchangeRateCurrent\n */\n vars.redeemTokens = redeemTokensIn;\n\n (vars.mathErr, vars.redeemAmount) = mulScalarTruncate(Exp({mantissa: vars.exchangeRateMantissa}), redeemTokensIn);\n if (vars.mathErr != MathError.NO_ERROR) {\n return failOpaque(Error.MATH_ERROR, FailureInfo.REDEEM_EXCHANGE_TOKENS_CALCULATION_FAILED, uint(vars.mathErr));\n }\n } else {\n /*\n * We get the current exchange rate and calculate the amount to be redeemed:\n * redeemTokens = redeemAmountIn / exchangeRate\n * redeemAmount = redeemAmountIn\n */\n\n (vars.mathErr, vars.redeemTokens) = divScalarByExpTruncate(redeemAmountIn, Exp({mantissa: vars.exchangeRateMantissa}));\n if (vars.mathErr != MathError.NO_ERROR) {\n return failOpaque(Error.MATH_ERROR, FailureInfo.REDEEM_EXCHANGE_AMOUNT_CALCULATION_FAILED, uint(vars.mathErr));\n }\n\n vars.redeemAmount = redeemAmountIn;\n }\n\n /* Fail if redeem not allowed */\n uint allowed = comptroller.redeemAllowed(address(this), redeemer, vars.redeemTokens);\n if (allowed != 0) {\n return failOpaque(Error.COMPTROLLER_REJECTION, FailureInfo.REDEEM_COMPTROLLER_REJECTION, allowed);\n }\n\n /* Verify market's block number equals current block number */\n if (accrualBlockNumber != getBlockNumber()) {\n return fail(Error.MARKET_NOT_FRESH, FailureInfo.REDEEM_FRESHNESS_CHECK);\n }\n\n /*\n * We calculate the new total supply and redeemer balance, checking for underflow:\n * totalSupplyNew = totalSupply - redeemTokens\n * accountTokensNew = accountTokens[redeemer] - redeemTokens\n */\n (vars.mathErr, vars.totalSupplyNew) = subUInt(totalSupply, vars.redeemTokens);\n if (vars.mathErr != MathError.NO_ERROR) {\n return failOpaque(Error.MATH_ERROR, FailureInfo.REDEEM_NEW_TOTAL_SUPPLY_CALCULATION_FAILED, uint(vars.mathErr));\n }\n\n (vars.mathErr, vars.accountTokensNew) = subUInt(accountTokens[redeemer], vars.redeemTokens);\n if (vars.mathErr != MathError.NO_ERROR) {\n return failOpaque(Error.MATH_ERROR, FailureInfo.REDEEM_NEW_ACCOUNT_BALANCE_CALCULATION_FAILED, uint(vars.mathErr));\n }\n\n /* Fail gracefully if protocol has insufficient cash */\n if (getCashPrior() < vars.redeemAmount) {\n return fail(Error.TOKEN_INSUFFICIENT_CASH, FailureInfo.REDEEM_TRANSFER_OUT_NOT_POSSIBLE);\n }\n\n /////////////////////////\n // EFFECTS & INTERACTIONS\n // (No safe failures beyond this point)\n\n /* We write previously calculated values into storage */\n totalSupply = vars.totalSupplyNew;\n accountTokens[redeemer] = vars.accountTokensNew;\n\n /*\n * We invoke doTransferOut for the redeemer and the redeemAmount.\n * Note: The cToken must handle variations between ERC-20 and ETH underlying.\n * On success, the cToken has redeemAmount less of cash.\n * doTransferOut reverts if anything goes wrong, since we can't be sure if side effects occurred.\n */\n doTransferOut(redeemer, vars.redeemAmount);\n\n /* We emit a Transfer event, and a Redeem event */\n emit Transfer(redeemer, address(this), vars.redeemTokens);\n emit Redeem(redeemer, vars.redeemAmount, vars.redeemTokens);\n\n /* We call the defense hook */\n comptroller.redeemVerify(address(this), redeemer, vars.redeemAmount, vars.redeemTokens);\n\n return uint(Error.NO_ERROR);\n }\n\n /**\n * @notice Sender borrows assets from the protocol to their own address\n * @param borrowAmount The amount of the underlying asset to borrow\n * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\n */\n function borrowInternal(uint borrowAmount) internal nonReentrant(false) returns (uint) {\n uint error = accrueInterest();\n if (error != uint(Error.NO_ERROR)) {\n // accrueInterest emits logs on errors, but we still want to log the fact that an attempted borrow failed\n return fail(Error(error), FailureInfo.BORROW_ACCRUE_INTEREST_FAILED);\n }\n // borrowFresh emits borrow-specific logs on errors, so we don't need to\n return borrowFresh(msg.sender, borrowAmount);\n }\n\n struct BorrowLocalVars {\n MathError mathErr;\n uint accountBorrows;\n uint accountBorrowsNew;\n uint totalBorrowsNew;\n }\n\n /**\n * @notice Users borrow assets from the protocol to their own address\n * @param borrowAmount The amount of the underlying asset to borrow\n * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\n */\n function borrowFresh(address payable borrower, uint borrowAmount) internal returns (uint) {\n /* Fail if borrow not allowed */\n uint allowed = comptroller.borrowAllowed(address(this), borrower, borrowAmount);\n if (allowed != 0) {\n return failOpaque(Error.COMPTROLLER_REJECTION, FailureInfo.BORROW_COMPTROLLER_REJECTION, allowed);\n }\n\n /* Verify market's block number equals current block number */\n if (accrualBlockNumber != getBlockNumber()) {\n return fail(Error.MARKET_NOT_FRESH, FailureInfo.BORROW_FRESHNESS_CHECK);\n }\n\n /* Fail gracefully if protocol has insufficient underlying cash */\n uint cashPrior = getCashPrior();\n\n if (cashPrior < borrowAmount) {\n return fail(Error.TOKEN_INSUFFICIENT_CASH, FailureInfo.BORROW_CASH_NOT_AVAILABLE);\n }\n\n BorrowLocalVars memory vars;\n\n /*\n * We calculate the new borrower and total borrow balances, failing on overflow:\n * accountBorrowsNew = accountBorrows + borrowAmount\n * totalBorrowsNew = totalBorrows + borrowAmount\n */\n (vars.mathErr, vars.accountBorrows) = borrowBalanceStoredInternal(borrower);\n if (vars.mathErr != MathError.NO_ERROR) {\n return failOpaque(Error.MATH_ERROR, FailureInfo.BORROW_ACCUMULATED_BALANCE_CALCULATION_FAILED, uint(vars.mathErr));\n }\n\n (vars.mathErr, vars.accountBorrowsNew) = addUInt(vars.accountBorrows, borrowAmount);\n if (vars.mathErr != MathError.NO_ERROR) {\n return failOpaque(Error.MATH_ERROR, FailureInfo.BORROW_NEW_ACCOUNT_BORROW_BALANCE_CALCULATION_FAILED, uint(vars.mathErr));\n }\n\n // Check min borrow for this user for this asset\n allowed = comptroller.borrowWithinLimits(address(this), vars.accountBorrowsNew);\n if (allowed != 0) {\n return failOpaque(Error.COMPTROLLER_REJECTION, FailureInfo.BORROW_COMPTROLLER_REJECTION, allowed);\n }\n\n (vars.mathErr, vars.totalBorrowsNew) = addUInt(totalBorrows, borrowAmount);\n if (vars.mathErr != MathError.NO_ERROR) {\n return failOpaque(Error.MATH_ERROR, FailureInfo.BORROW_NEW_TOTAL_BALANCE_CALCULATION_FAILED, uint(vars.mathErr));\n }\n\n /////////////////////////\n // EFFECTS & INTERACTIONS\n // (No safe failures beyond this point)\n\n /* We write the previously calculated values into storage */\n accountBorrows[borrower].principal = vars.accountBorrowsNew;\n accountBorrows[borrower].interestIndex = borrowIndex;\n totalBorrows = vars.totalBorrowsNew;\n\n /*\n * We invoke doTransferOut for the borrower and the borrowAmount.\n * Note: The cToken must handle variations between ERC-20 and ETH underlying.\n * On success, the cToken borrowAmount less of cash.\n * doTransferOut reverts if anything goes wrong, since we can't be sure if side effects occurred.\n */\n doTransferOut(borrower, borrowAmount);\n\n /* We emit a Borrow event */\n emit Borrow(borrower, borrowAmount, vars.accountBorrowsNew, vars.totalBorrowsNew);\n\n /* We call the defense hook */\n // unused function\n // comptroller.borrowVerify(address(this), borrower, borrowAmount);\n\n return uint(Error.NO_ERROR);\n }\n\n /**\n * @notice Sender repays their own borrow\n * @param repayAmount The amount to repay\n * @return (uint, uint) An error code (0=success, otherwise a failure, see ErrorReporter.sol), and the actual repayment amount.\n */\n function repayBorrowInternal(uint repayAmount) internal nonReentrant(false) returns (uint, uint) {\n uint error = accrueInterest();\n if (error != uint(Error.NO_ERROR)) {\n // accrueInterest emits logs on errors, but we still want to log the fact that an attempted borrow failed\n return (fail(Error(error), FailureInfo.REPAY_BORROW_ACCRUE_INTEREST_FAILED), 0);\n }\n // repayBorrowFresh emits repay-borrow-specific logs on errors, so we don't need to\n return repayBorrowFresh(msg.sender, msg.sender, repayAmount);\n }\n\n /**\n * @notice Sender repays a borrow belonging to borrower\n * @param borrower the account with the debt being payed off\n * @param repayAmount The amount to repay\n * @return (uint, uint) An error code (0=success, otherwise a failure, see ErrorReporter.sol), and the actual repayment amount.\n */\n function repayBorrowBehalfInternal(address borrower, uint repayAmount) internal nonReentrant(false) returns (uint, uint) {\n uint error = accrueInterest();\n if (error != uint(Error.NO_ERROR)) {\n // accrueInterest emits logs on errors, but we still want to log the fact that an attempted borrow failed\n return (fail(Error(error), FailureInfo.REPAY_BEHALF_ACCRUE_INTEREST_FAILED), 0);\n }\n // repayBorrowFresh emits repay-borrow-specific logs on errors, so we don't need to\n return repayBorrowFresh(msg.sender, borrower, repayAmount);\n }\n\n struct RepayBorrowLocalVars {\n Error err;\n MathError mathErr;\n uint repayAmount;\n uint borrowerIndex;\n uint accountBorrows;\n uint accountBorrowsNew;\n uint totalBorrowsNew;\n uint actualRepayAmount;\n }\n\n /**\n * @notice Borrows are repaid by another user (possibly the borrower).\n * @param payer the account paying off the borrow\n * @param borrower the account with the debt being payed off\n * @param repayAmount the amount of undelrying tokens being returned\n * @return (uint, uint) An error code (0=success, otherwise a failure, see ErrorReporter.sol), and the actual repayment amount.\n */\n function repayBorrowFresh(address payer, address borrower, uint repayAmount) internal returns (uint, uint) {\n /* Fail if repayBorrow not allowed */\n uint allowed = comptroller.repayBorrowAllowed(address(this), payer, borrower, repayAmount);\n if (allowed != 0) {\n return (failOpaque(Error.COMPTROLLER_REJECTION, FailureInfo.REPAY_BORROW_COMPTROLLER_REJECTION, allowed), 0);\n }\n\n /* Verify market's block number equals current block number */\n if (accrualBlockNumber != getBlockNumber()) {\n return (fail(Error.MARKET_NOT_FRESH, FailureInfo.REPAY_BORROW_FRESHNESS_CHECK), 0);\n }\n\n RepayBorrowLocalVars memory vars;\n\n /* We remember the original borrowerIndex for verification purposes */\n vars.borrowerIndex = accountBorrows[borrower].interestIndex;\n\n /* We fetch the amount the borrower owes, with accumulated interest */\n (vars.mathErr, vars.accountBorrows) = borrowBalanceStoredInternal(borrower);\n if (vars.mathErr != MathError.NO_ERROR) {\n return (failOpaque(Error.MATH_ERROR, FailureInfo.REPAY_BORROW_ACCUMULATED_BALANCE_CALCULATION_FAILED, uint(vars.mathErr)), 0);\n }\n\n /* If repayAmount == -1, repayAmount = accountBorrows */\n if (repayAmount == uint(-1)) {\n vars.repayAmount = vars.accountBorrows;\n } else {\n vars.repayAmount = repayAmount;\n }\n\n /////////////////////////\n // EFFECTS & INTERACTIONS\n // (No safe failures beyond this point)\n\n /*\n * We call doTransferIn for the payer and the repayAmount\n * Note: The cToken must handle variations between ERC-20 and ETH underlying.\n * On success, the cToken holds an additional repayAmount of cash.\n * doTransferIn reverts if anything goes wrong, since we can't be sure if side effects occurred.\n * it returns the amount actually transferred, in case of a fee.\n */\n vars.actualRepayAmount = doTransferIn(payer, vars.repayAmount);\n\n /*\n * We calculate the new borrower and total borrow balances, failing on underflow:\n * accountBorrowsNew = accountBorrows - actualRepayAmount\n * totalBorrowsNew = totalBorrows - actualRepayAmount\n */\n (vars.mathErr, vars.accountBorrowsNew) = subUInt(vars.accountBorrows, vars.actualRepayAmount);\n require(vars.mathErr == MathError.NO_ERROR, \"REPAY_BORROW_NEW_ACCOUNT_BORROW_BALANCE_CALCULATION_FAILED\");\n\n (vars.mathErr, vars.totalBorrowsNew) = subUInt(totalBorrows, vars.actualRepayAmount);\n require(vars.mathErr == MathError.NO_ERROR, \"REPAY_BORROW_NEW_TOTAL_BALANCE_CALCULATION_FAILED\");\n\n /* We write the previously calculated values into storage */\n accountBorrows[borrower].principal = vars.accountBorrowsNew;\n accountBorrows[borrower].interestIndex = borrowIndex;\n totalBorrows = vars.totalBorrowsNew;\n\n /* We emit a RepayBorrow event */\n emit RepayBorrow(payer, borrower, vars.actualRepayAmount, vars.accountBorrowsNew, vars.totalBorrowsNew);\n\n /* We call the defense hook */\n // unused function\n // comptroller.repayBorrowVerify(address(this), payer, borrower, vars.actualRepayAmount, vars.borrowerIndex);\n\n return (uint(Error.NO_ERROR), vars.actualRepayAmount);\n }\n\n /**\n * @notice The sender liquidates the borrowers collateral.\n * The collateral seized is transferred to the liquidator.\n * @param borrower The borrower of this cToken to be liquidated\n * @param cTokenCollateral The market in which to seize collateral from the borrower\n * @param repayAmount The amount of the underlying borrowed asset to repay\n * @return (uint, uint) An error code (0=success, otherwise a failure, see ErrorReporter.sol), and the actual repayment amount.\n */\n function liquidateBorrowInternal(address borrower, uint repayAmount, CTokenInterface cTokenCollateral) internal nonReentrant(false) returns (uint, uint) {\n uint error = accrueInterest();\n if (error != uint(Error.NO_ERROR)) {\n // accrueInterest emits logs on errors, but we still want to log the fact that an attempted liquidation failed\n return (fail(Error(error), FailureInfo.LIQUIDATE_ACCRUE_BORROW_INTEREST_FAILED), 0);\n }\n\n error = cTokenCollateral.accrueInterest();\n if (error != uint(Error.NO_ERROR)) {\n // accrueInterest emits logs on errors, but we still want to log the fact that an attempted liquidation failed\n return (fail(Error(error), FailureInfo.LIQUIDATE_ACCRUE_COLLATERAL_INTEREST_FAILED), 0);\n }\n\n // liquidateBorrowFresh emits borrow-specific logs on errors, so we don't need to\n return liquidateBorrowFresh(msg.sender, borrower, repayAmount, cTokenCollateral);\n }\n\n /**\n * @notice The liquidator liquidates the borrowers collateral.\n * The collateral seized is transferred to the liquidator.\n * @param borrower The borrower of this cToken to be liquidated\n * @param liquidator The address repaying the borrow and seizing collateral\n * @param cTokenCollateral The market in which to seize collateral from the borrower\n * @param repayAmount The amount of the underlying borrowed asset to repay\n * @return (uint, uint) An error code (0=success, otherwise a failure, see ErrorReporter.sol), and the actual repayment amount.\n */\n function liquidateBorrowFresh(address liquidator, address borrower, uint repayAmount, CTokenInterface cTokenCollateral) internal returns (uint, uint) {\n /* Fail if liquidate not allowed */\n uint allowed = comptroller.liquidateBorrowAllowed(address(this), address(cTokenCollateral), liquidator, borrower, repayAmount);\n if (allowed != 0) {\n return (failOpaque(Error.COMPTROLLER_REJECTION, FailureInfo.LIQUIDATE_COMPTROLLER_REJECTION, allowed), 0);\n }\n\n /* Verify market's block number equals current block number */\n if (accrualBlockNumber != getBlockNumber()) {\n return (fail(Error.MARKET_NOT_FRESH, FailureInfo.LIQUIDATE_FRESHNESS_CHECK), 0);\n }\n\n /* Verify cTokenCollateral market's block number equals current block number */\n if (cTokenCollateral.accrualBlockNumber() != getBlockNumber()) {\n return (fail(Error.MARKET_NOT_FRESH, FailureInfo.LIQUIDATE_COLLATERAL_FRESHNESS_CHECK), 0);\n }\n\n /* Fail if borrower = liquidator */\n if (borrower == liquidator) {\n return (fail(Error.INVALID_ACCOUNT_PAIR, FailureInfo.LIQUIDATE_LIQUIDATOR_IS_BORROWER), 0);\n }\n\n /* Fail if repayAmount = 0 */\n if (repayAmount == 0) {\n return (fail(Error.INVALID_CLOSE_AMOUNT_REQUESTED, FailureInfo.LIQUIDATE_CLOSE_AMOUNT_IS_ZERO), 0);\n }\n\n /* Fail if repayAmount = -1 */\n if (repayAmount == uint(-1)) {\n return (fail(Error.INVALID_CLOSE_AMOUNT_REQUESTED, FailureInfo.LIQUIDATE_CLOSE_AMOUNT_IS_UINT_MAX), 0);\n }\n\n\n /* Fail if repayBorrow fails */\n (uint repayBorrowError, uint actualRepayAmount) = repayBorrowFresh(liquidator, borrower, repayAmount);\n if (repayBorrowError != uint(Error.NO_ERROR)) {\n return (fail(Error(repayBorrowError), FailureInfo.LIQUIDATE_REPAY_BORROW_FRESH_FAILED), 0);\n }\n\n /////////////////////////\n // EFFECTS & INTERACTIONS\n // (No safe failures beyond this point)\n\n /* We calculate the number of collateral tokens that will be seized */\n (uint amountSeizeError, uint seizeTokens) = comptroller.liquidateCalculateSeizeTokens(address(this), address(cTokenCollateral), actualRepayAmount);\n require(amountSeizeError == uint(Error.NO_ERROR), \"LIQUIDATE_COMPTROLLER_CALCULATE_AMOUNT_SEIZE_FAILED\");\n\n /* Revert if borrower collateral token balance < seizeTokens */\n require(cTokenCollateral.balanceOf(borrower) >= seizeTokens, \"LIQUIDATE_SEIZE_TOO_MUCH\");\n\n // If this is also the collateral, run seizeInternal to avoid re-entrancy, otherwise make an external call\n uint seizeError;\n if (address(cTokenCollateral) == address(this)) {\n seizeError = seizeInternal(address(this), liquidator, borrower, seizeTokens);\n } else {\n seizeError = cTokenCollateral.seize(liquidator, borrower, seizeTokens);\n }\n\n /* Revert if seize tokens fails (since we cannot be sure of side effects) */\n require(seizeError == uint(Error.NO_ERROR), \"token seizure failed\");\n\n /* We emit a LiquidateBorrow event */\n emit LiquidateBorrow(liquidator, borrower, actualRepayAmount, address(cTokenCollateral), seizeTokens);\n\n /* We call the defense hook */\n // unused function\n // comptroller.liquidateBorrowVerify(address(this), address(cTokenCollateral), liquidator, borrower, actualRepayAmount, seizeTokens);\n\n return (uint(Error.NO_ERROR), actualRepayAmount);\n }\n\n /**\n * @notice Transfers collateral tokens (this market) to the liquidator.\n * @dev Will fail unless called by another cToken during the process of liquidation.\n * Its absolutely critical to use msg.sender as the borrowed cToken and not a parameter.\n * @param liquidator The account receiving seized collateral\n * @param borrower The account having collateral seized\n * @param seizeTokens The number of cTokens to seize\n * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\n */\n function seize(address liquidator, address borrower, uint seizeTokens) external nonReentrant(true) returns (uint) {\n return seizeInternal(msg.sender, liquidator, borrower, seizeTokens);\n }\n\n struct SeizeInternalLocalVars {\n MathError mathErr;\n uint borrowerTokensNew;\n uint liquidatorTokensNew;\n uint liquidatorSeizeTokens;\n uint protocolSeizeTokens;\n uint protocolSeizeAmount;\n uint exchangeRateMantissa;\n uint totalReservesNew;\n uint totalSupplyNew;\n }\n\n /**\n * @notice Transfers collateral tokens (this market) to the liquidator.\n * @dev Called only during an in-kind liquidation, or by liquidateBorrow during the liquidation of another CToken.\n * Its absolutely critical to use msg.sender as the seizer cToken and not a parameter.\n * @param seizerToken The contract seizing the collateral (i.e. borrowed cToken)\n * @param liquidator The account receiving seized collateral\n * @param borrower The account having collateral seized\n * @param seizeTokens The number of cTokens to seize\n * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\n */\n function seizeInternal(address seizerToken, address liquidator, address borrower, uint seizeTokens) internal returns (uint) {\n /* Fail if seize not allowed */\n uint allowed = comptroller.seizeAllowed(address(this), seizerToken, liquidator, borrower, seizeTokens);\n if (allowed != 0) {\n return failOpaque(Error.COMPTROLLER_REJECTION, FailureInfo.LIQUIDATE_SEIZE_COMPTROLLER_REJECTION, allowed);\n }\n\n /* Fail if borrower = liquidator */\n if (borrower == liquidator) {\n return fail(Error.INVALID_ACCOUNT_PAIR, FailureInfo.LIQUIDATE_SEIZE_LIQUIDATOR_IS_BORROWER);\n }\n\n SeizeInternalLocalVars memory vars;\n\n /*\n * We calculate the new borrower and liquidator token balances, failing on underflow/overflow:\n * borrowerTokensNew = accountTokens[borrower] - seizeTokens\n * liquidatorTokensNew = accountTokens[liquidator] + seizeTokens\n */\n (vars.mathErr, vars.borrowerTokensNew) = subUInt(accountTokens[borrower], seizeTokens);\n if (vars.mathErr != MathError.NO_ERROR) {\n return failOpaque(Error.MATH_ERROR, FailureInfo.LIQUIDATE_SEIZE_BALANCE_DECREMENT_FAILED, uint(vars.mathErr));\n }\n\n vars.protocolSeizeTokens = mul_(seizeTokens, Exp({mantissa: protocolSeizeShareMantissa}));\n vars.liquidatorSeizeTokens = sub_(seizeTokens, vars.protocolSeizeTokens);\n\n (vars.mathErr, vars.exchangeRateMantissa) = exchangeRateStoredInternal();\n require(vars.mathErr == MathError.NO_ERROR, \"exchange rate math error\");\n\n vars.protocolSeizeAmount = mul_ScalarTruncate(Exp({mantissa: vars.exchangeRateMantissa}), vars.protocolSeizeTokens);\n\n vars.totalReservesNew = add_(totalReserves, vars.protocolSeizeAmount);\n vars.totalSupplyNew = sub_(totalSupply, vars.protocolSeizeTokens);\n\n (vars.mathErr, vars.liquidatorTokensNew) = addUInt(accountTokens[liquidator], vars.liquidatorSeizeTokens);\n if (vars.mathErr != MathError.NO_ERROR) {\n return failOpaque(Error.MATH_ERROR, FailureInfo.LIQUIDATE_SEIZE_BALANCE_INCREMENT_FAILED, uint(vars.mathErr));\n }\n\n /////////////////////////\n // EFFECTS & INTERACTIONS\n // (No safe failures beyond this point)\n\n /* We write the previously calculated values into storage */\n totalReserves = vars.totalReservesNew;\n totalSupply = vars.totalSupplyNew;\n accountTokens[borrower] = vars.borrowerTokensNew;\n accountTokens[liquidator] = vars.liquidatorTokensNew;\n\n /* Emit a Transfer event */\n emit Transfer(borrower, liquidator, vars.liquidatorSeizeTokens);\n emit Transfer(borrower, address(this), vars.protocolSeizeTokens);\n emit ReservesAdded(address(this), vars.protocolSeizeAmount, vars.totalReservesNew);\n\n /* We call the defense hook */\n // unused function\n // comptroller.seizeVerify(address(this), seizerToken, liquidator, borrower, seizeTokens);\n\n return uint(Error.NO_ERROR);\n }\n\n\n /*** Admin Functions ***/\n\n /**\n * @notice Sets a new comptroller for the market\n * @dev Internal function to set a new comptroller\n * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\n */\n function _setComptroller(ComptrollerInterface newComptroller) internal returns (uint) {\n ComptrollerInterface oldComptroller = comptroller;\n // Ensure invoke comptroller.isComptroller() returns true\n require(newComptroller.isComptroller(), \"marker method returned false\");\n\n // Set market's comptroller to newComptroller\n comptroller = newComptroller;\n\n // Emit NewComptroller(oldComptroller, newComptroller)\n emit NewComptroller(oldComptroller, newComptroller);\n\n return uint(Error.NO_ERROR);\n }\n\n /**\n * @notice accrues interest and sets a new admin fee for the protocol using _setAdminFeeFresh\n * @dev Admin function to accrue interest and set a new admin fee\n * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\n */\n function _setAdminFee(uint newAdminFeeMantissa) external nonReentrant(false) returns (uint) {\n uint error = accrueInterest();\n if (error != uint(Error.NO_ERROR)) {\n // accrueInterest emits logs on errors, but on top of that we want to log the fact that an attempted admin fee change failed.\n return fail(Error(error), FailureInfo.SET_ADMIN_FEE_ACCRUE_INTEREST_FAILED);\n }\n // _setAdminFeeFresh emits reserve-factor-specific logs on errors, so we don't need to.\n return _setAdminFeeFresh(newAdminFeeMantissa);\n }\n\n /**\n * @notice Sets a new admin fee for the protocol (*requires fresh interest accrual)\n * @dev Admin function to set a new admin fee\n * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\n */\n function _setAdminFeeFresh(uint newAdminFeeMantissa) internal returns (uint) {\n // Verify market's block number equals current block number\n if (accrualBlockNumber != getBlockNumber()) {\n return fail(Error.MARKET_NOT_FRESH, FailureInfo.SET_ADMIN_FEE_FRESH_CHECK);\n }\n\n // Sanitize newAdminFeeMantissa\n if (newAdminFeeMantissa == uint(-1)) newAdminFeeMantissa = adminFeeMantissa;\n\n // Get latest Fuse fee\n uint newFuseFeeMantissa = getPendingFuseFeeFromAdmin();\n\n // Check reserveFactorMantissa + newAdminFeeMantissa + newFuseFeeMantissa ≤ reserveFactorPlusFeesMaxMantissa\n if (add_(add_(reserveFactorMantissa, newAdminFeeMantissa), newFuseFeeMantissa) > reserveFactorPlusFeesMaxMantissa) {\n return fail(Error.BAD_INPUT, FailureInfo.SET_ADMIN_FEE_BOUNDS_CHECK);\n }\n\n // If setting admin fee\n if (adminFeeMantissa != newAdminFeeMantissa) {\n // Check caller is admin\n if (!hasAdminRights()) {\n return fail(Error.UNAUTHORIZED, FailureInfo.SET_ADMIN_FEE_ADMIN_CHECK);\n }\n\n // Set admin fee\n uint oldAdminFeeMantissa = adminFeeMantissa;\n adminFeeMantissa = newAdminFeeMantissa;\n\n // Emit event\n emit NewAdminFee(oldAdminFeeMantissa, newAdminFeeMantissa);\n }\n\n // If setting Fuse fee\n if (fuseFeeMantissa != newFuseFeeMantissa) {\n // Set Fuse fee\n uint oldFuseFeeMantissa = fuseFeeMantissa;\n fuseFeeMantissa = newFuseFeeMantissa;\n\n // Emit event\n emit NewFuseFee(oldFuseFeeMantissa, newFuseFeeMantissa);\n }\n\n return uint(Error.NO_ERROR);\n }\n\n /**\n * @notice accrues interest and sets a new reserve factor for the protocol using _setReserveFactorFresh\n * @dev Admin function to accrue interest and set a new reserve factor\n * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\n */\n function _setReserveFactor(uint newReserveFactorMantissa) external nonReentrant(false) returns (uint) {\n uint error = accrueInterest();\n if (error != uint(Error.NO_ERROR)) {\n // accrueInterest emits logs on errors, but on top of that we want to log the fact that an attempted reserve factor change failed.\n return fail(Error(error), FailureInfo.SET_RESERVE_FACTOR_ACCRUE_INTEREST_FAILED);\n }\n // _setReserveFactorFresh emits reserve-factor-specific logs on errors, so we don't need to.\n return _setReserveFactorFresh(newReserveFactorMantissa);\n }\n\n /**\n * @notice Sets a new reserve factor for the protocol (*requires fresh interest accrual)\n * @dev Admin function to set a new reserve factor\n * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\n */\n function _setReserveFactorFresh(uint newReserveFactorMantissa) internal returns (uint) {\n // Check caller is admin\n if (!hasAdminRights()) {\n return fail(Error.UNAUTHORIZED, FailureInfo.SET_RESERVE_FACTOR_ADMIN_CHECK);\n }\n\n // Verify market's block number equals current block number\n if (accrualBlockNumber != getBlockNumber()) {\n return fail(Error.MARKET_NOT_FRESH, FailureInfo.SET_RESERVE_FACTOR_FRESH_CHECK);\n }\n\n // Check newReserveFactor ≤ maxReserveFactor\n if (add_(add_(newReserveFactorMantissa, adminFeeMantissa), fuseFeeMantissa) > reserveFactorPlusFeesMaxMantissa) {\n return fail(Error.BAD_INPUT, FailureInfo.SET_RESERVE_FACTOR_BOUNDS_CHECK);\n }\n\n uint oldReserveFactorMantissa = reserveFactorMantissa;\n reserveFactorMantissa = newReserveFactorMantissa;\n\n emit NewReserveFactor(oldReserveFactorMantissa, newReserveFactorMantissa);\n\n return uint(Error.NO_ERROR);\n }\n\n /**\n * @notice Accrues interest and reduces reserves by transferring to admin\n * @param reduceAmount Amount of reduction to reserves\n * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\n */\n function _reduceReserves(uint reduceAmount) external nonReentrant(false) returns (uint) {\n uint error = accrueInterest();\n if (error != uint(Error.NO_ERROR)) {\n // accrueInterest emits logs on errors, but on top of that we want to log the fact that an attempted reduce reserves failed.\n return fail(Error(error), FailureInfo.REDUCE_RESERVES_ACCRUE_INTEREST_FAILED);\n }\n // _reduceReservesFresh emits reserve-reduction-specific logs on errors, so we don't need to.\n return _reduceReservesFresh(reduceAmount);\n }\n\n /**\n * @notice Reduces reserves by transferring to admin\n * @dev Requires fresh interest accrual\n * @param reduceAmount Amount of reduction to reserves\n * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\n */\n function _reduceReservesFresh(uint reduceAmount) internal returns (uint) {\n // totalReserves - reduceAmount\n uint totalReservesNew;\n\n // Check caller is admin\n if (!hasAdminRights()) {\n return fail(Error.UNAUTHORIZED, FailureInfo.REDUCE_RESERVES_ADMIN_CHECK);\n }\n\n // We fail gracefully unless market's block number equals current block number\n if (accrualBlockNumber != getBlockNumber()) {\n return fail(Error.MARKET_NOT_FRESH, FailureInfo.REDUCE_RESERVES_FRESH_CHECK);\n }\n\n // Fail gracefully if protocol has insufficient underlying cash\n if (getCashPrior() < reduceAmount) {\n return fail(Error.TOKEN_INSUFFICIENT_CASH, FailureInfo.REDUCE_RESERVES_CASH_NOT_AVAILABLE);\n }\n\n // Check reduceAmount ≤ reserves[n] (totalReserves)\n if (reduceAmount > totalReserves) {\n return fail(Error.BAD_INPUT, FailureInfo.REDUCE_RESERVES_VALIDATION);\n }\n\n /////////////////////////\n // EFFECTS & INTERACTIONS\n // (No safe failures beyond this point)\n\n // We checked reduceAmount <= totalReserves above, so this should never revert.\n totalReservesNew = sub_(totalReserves, reduceAmount);\n\n // Store reserves[n+1] = reserves[n] - reduceAmount\n totalReserves = totalReservesNew;\n\n // doTransferOut reverts if anything goes wrong, since we can't be sure if side effects occurred.\n doTransferOut(msg.sender, reduceAmount);\n\n emit ReservesReduced(msg.sender, reduceAmount, totalReservesNew);\n\n return uint(Error.NO_ERROR);\n }\n\n /**\n * @notice Accrues interest and reduces Fuse fees by transferring to Fuse\n * @param withdrawAmount Amount of fees to withdraw\n * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\n */\n function _withdrawFuseFees(uint withdrawAmount) external nonReentrant(false) returns (uint) {\n uint error = accrueInterest();\n if (error != uint(Error.NO_ERROR)) {\n // accrueInterest emits logs on errors, but on top of that we want to log the fact that an attempted Fuse fee withdrawal failed.\n return fail(Error(error), FailureInfo.WITHDRAW_FUSE_FEES_ACCRUE_INTEREST_FAILED);\n }\n // _withdrawFuseFeesFresh emits reserve-reduction-specific logs on errors, so we don't need to.\n return _withdrawFuseFeesFresh(withdrawAmount);\n }\n\n /**\n * @notice Reduces Fuse fees by transferring to Fuse\n * @dev Requires fresh interest accrual\n * @param withdrawAmount Amount of fees to withdraw\n * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\n */\n function _withdrawFuseFeesFresh(uint withdrawAmount) internal returns (uint) {\n // totalFuseFees - reduceAmount\n uint totalFuseFeesNew;\n\n // We fail gracefully unless market's block number equals current block number\n if (accrualBlockNumber != getBlockNumber()) {\n return fail(Error.MARKET_NOT_FRESH, FailureInfo.WITHDRAW_FUSE_FEES_FRESH_CHECK);\n }\n\n // Fail gracefully if protocol has insufficient underlying cash\n if (getCashPrior() < withdrawAmount) {\n return fail(Error.TOKEN_INSUFFICIENT_CASH, FailureInfo.WITHDRAW_FUSE_FEES_CASH_NOT_AVAILABLE);\n }\n\n // Check withdrawAmount ≤ fuseFees[n] (totalFuseFees)\n if (withdrawAmount > totalFuseFees) {\n return fail(Error.BAD_INPUT, FailureInfo.WITHDRAW_FUSE_FEES_VALIDATION);\n }\n\n /////////////////////////\n // EFFECTS & INTERACTIONS\n // (No safe failures beyond this point)\n\n // We checked withdrawAmount <= totalFuseFees above, so this should never revert.\n totalFuseFeesNew = sub_(totalFuseFees, withdrawAmount);\n\n // Store fuseFees[n+1] = fuseFees[n] - withdrawAmount\n totalFuseFees = totalFuseFeesNew;\n\n // doTransferOut reverts if anything goes wrong, since we can't be sure if side effects occurred.\n doTransferOut(address(fuseAdmin), withdrawAmount);\n\n return uint(Error.NO_ERROR);\n }\n\n /**\n * @notice Accrues interest and reduces admin fees by transferring to admin\n * @param withdrawAmount Amount of fees to withdraw\n * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\n */\n function _withdrawAdminFees(uint withdrawAmount) external nonReentrant(false) returns (uint) {\n uint error = accrueInterest();\n if (error != uint(Error.NO_ERROR)) {\n // accrueInterest emits logs on errors, but on top of that we want to log the fact that an attempted admin fee withdrawal failed.\n return fail(Error(error), FailureInfo.WITHDRAW_ADMIN_FEES_ACCRUE_INTEREST_FAILED);\n }\n // _withdrawAdminFeesFresh emits reserve-reduction-specific logs on errors, so we don't need to.\n return _withdrawAdminFeesFresh(withdrawAmount);\n }\n\n /**\n * @notice Reduces admin fees by transferring to admin\n * @dev Requires fresh interest accrual\n * @param withdrawAmount Amount of fees to withdraw\n * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\n */\n function _withdrawAdminFeesFresh(uint withdrawAmount) internal returns (uint) {\n // totalAdminFees - reduceAmount\n uint totalAdminFeesNew;\n\n // We fail gracefully unless market's block number equals current block number\n if (accrualBlockNumber != getBlockNumber()) {\n return fail(Error.MARKET_NOT_FRESH, FailureInfo.WITHDRAW_ADMIN_FEES_FRESH_CHECK);\n }\n\n // Fail gracefully if protocol has insufficient underlying cash\n if (getCashPrior() < withdrawAmount) {\n return fail(Error.TOKEN_INSUFFICIENT_CASH, FailureInfo.WITHDRAW_ADMIN_FEES_CASH_NOT_AVAILABLE);\n }\n\n // Check withdrawAmount ≤ adminFees[n] (totalAdminFees)\n if (withdrawAmount > totalAdminFees) {\n return fail(Error.BAD_INPUT, FailureInfo.WITHDRAW_ADMIN_FEES_VALIDATION);\n }\n\n /////////////////////////\n // EFFECTS & INTERACTIONS\n // (No safe failures beyond this point)\n\n // We checked withdrawAmount <= totalAdminFees above, so this should never revert.\n totalAdminFeesNew = sub_(totalAdminFees, withdrawAmount);\n\n // Store adminFees[n+1] = adminFees[n] - withdrawAmount\n totalAdminFees = totalAdminFeesNew;\n\n // doTransferOut reverts if anything goes wrong, since we can't be sure if side effects occurred.\n doTransferOut(address(uint160(UnitrollerAdminStorage(address(comptroller)).admin())), withdrawAmount);\n\n return uint(Error.NO_ERROR);\n }\n\n /**\n * @notice accrues interest and updates the interest rate model using _setInterestRateModelFresh\n * @dev Admin function to accrue interest and update the interest rate model\n * @param newInterestRateModel the new interest rate model to use\n * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\n */\n function _setInterestRateModel(InterestRateModel newInterestRateModel) public returns (uint) {\n uint error = accrueInterest();\n if (error != uint(Error.NO_ERROR)) {\n // accrueInterest emits logs on errors, but on top of that we want to log the fact that an attempted change of interest rate model failed\n return fail(Error(error), FailureInfo.SET_INTEREST_RATE_MODEL_ACCRUE_INTEREST_FAILED);\n }\n // _setInterestRateModelFresh emits interest-rate-model-update-specific logs on errors, so we don't need to.\n return _setInterestRateModelFresh(newInterestRateModel);\n }\n\n /**\n * @notice updates the interest rate model (*requires fresh interest accrual)\n * @dev Admin function to update the interest rate model\n * @param newInterestRateModel the new interest rate model to use\n * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\n */\n function _setInterestRateModelFresh(InterestRateModel newInterestRateModel) internal returns (uint) {\n // Used to store old model for use in the event that is emitted on success\n InterestRateModel oldInterestRateModel;\n\n // Check caller is admin\n if (!hasAdminRights()) {\n return fail(Error.UNAUTHORIZED, FailureInfo.SET_INTEREST_RATE_MODEL_OWNER_CHECK);\n }\n\n // We fail gracefully unless market's block number equals current block number\n if (accrualBlockNumber != getBlockNumber()) {\n return fail(Error.MARKET_NOT_FRESH, FailureInfo.SET_INTEREST_RATE_MODEL_FRESH_CHECK);\n }\n\n // Track the market's current interest rate model\n oldInterestRateModel = interestRateModel;\n\n // Ensure invoke newInterestRateModel.isInterestRateModel() returns true\n require(newInterestRateModel.isInterestRateModel(), \"marker method returned false\");\n\n // Set the interest rate model to newInterestRateModel\n interestRateModel = newInterestRateModel;\n\n // Emit NewMarketInterestRateModel(oldInterestRateModel, newInterestRateModel)\n emit NewMarketInterestRateModel(oldInterestRateModel, newInterestRateModel);\n\n // Attempt to reset interest checkpoints on old IRM\n if (address(oldInterestRateModel) != address(0)) address(oldInterestRateModel).call(abi.encodeWithSignature(\"resetInterestCheckpoints()\"));\n\n // Attempt to add first interest checkpoint on new IRM\n address(newInterestRateModel).call(abi.encodeWithSignature(\"checkpointInterest()\"));\n\n return uint(Error.NO_ERROR);\n }\n\n /**\n * @notice updates the cToken ERC20 name and symbol\n * @dev Admin function to update the cToken ERC20 name and symbol\n * @param _name the new ERC20 token name to use\n * @param _symbol the new ERC20 token symbol to use\n * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\n */\n function _setNameAndSymbol(string calldata _name, string calldata _symbol) external {\n // Check caller is admin\n require(hasAdminRights(), \"caller not admin\");\n\n // Set ERC20 name and symbol\n name = _name;\n symbol = _symbol;\n }\n\n /*** Safe Token ***/\n\n /**\n * @notice Gets balance of this contract in terms of the underlying\n * @dev This excludes the value of the current message, if any\n * @return The quantity of underlying owned by this contract\n */\n function getCashPrior() internal view returns (uint);\n\n /**\n * @dev Performs a transfer in, reverting upon failure. Returns the amount actually transferred to the protocol, in case of a fee.\n * This may revert due to insufficient balance or insufficient allowance.\n */\n function doTransferIn(address from, uint amount) internal returns (uint);\n\n /**\n * @dev Performs a transfer out, ideally returning an explanatory error code upon failure tather than reverting.\n * If caller has not called checked protocol's balance, may revert due to insufficient cash held in the contract.\n * If caller has checked protocol's balance, and verified it is >= amount, this should not revert in normal conditions.\n */\n function doTransferOut(address payable to, uint amount) internal;\n\n\n /*** Reentrancy Guard ***/\n\n /**\n * @dev Prevents a contract from calling itself, directly or indirectly.\n */\n modifier nonReentrant(bool localOnly) {\n _beforeNonReentrant(localOnly);\n _;\n _afterNonReentrant(localOnly);\n }\n\n /**\n * @dev Split off from `nonReentrant` to keep contract below the 24 KB size limit.\n * Saves space because function modifier code is \"inlined\" into every function with the modifier).\n * In this specific case, the optimization saves around 1500 bytes of that valuable 24 KB limit.\n */\n function _beforeNonReentrant(bool localOnly) private {\n require(_notEntered, \"re-entered\");\n if (!localOnly) comptroller._beforeNonReentrant();\n _notEntered = false;\n }\n\n /**\n * @dev Split off from `nonReentrant` to keep contract below the 24 KB size limit.\n * Saves space because function modifier code is \"inlined\" into every function with the modifier).\n * In this specific case, the optimization saves around 150 bytes of that valuable 24 KB limit.\n */\n function _afterNonReentrant(bool localOnly) private {\n _notEntered = true; // get a gas-refund post-Istanbul\n if (!localOnly) comptroller._afterNonReentrant();\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 * 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 * @param data The call data (encoded using abi.encode or one of its variants).\n * @param errorMessage The revert string to return on failure.\n */\n function _functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {\n (bool success, bytes memory returndata) = target.call(data);\n\n if (!success) {\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 // solhint-disable-next-line no-inline-assembly\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 return returndata;\n }\n}\n"},"contracts/ComptrollerInterface.sol":{"content":"pragma solidity 0.5.17;\n\ncontract ComptrollerInterface {\n /// @notice Indicator that this is a Comptroller contract (for inspection)\n bool public constant isComptroller = true;\n\n /*** Assets You Are In ***/\n\n function enterMarkets(address[] calldata cTokens) external returns (uint[] memory);\n function exitMarket(address cToken) external returns (uint);\n\n /*** Policy Hooks ***/\n\n function mintAllowed(address cToken, address minter, uint mintAmount) external returns (uint);\n function mintWithinLimits(address cToken, uint exchangeRateMantissa, uint accountTokens, uint mintAmount) external returns (uint);\n function mintVerify(address cToken, address minter, uint mintAmount, uint mintTokens) external;\n\n function redeemAllowed(address cToken, address redeemer, uint redeemTokens) external returns (uint);\n function redeemVerify(address cToken, address redeemer, uint redeemAmount, uint redeemTokens) external;\n\n function borrowAllowed(address cToken, address borrower, uint borrowAmount) external returns (uint);\n function borrowWithinLimits(address cToken, uint accountBorrowsNew) external returns (uint);\n function borrowVerify(address cToken, address borrower, uint borrowAmount) external;\n\n function repayBorrowAllowed(\n address cToken,\n address payer,\n address borrower,\n uint repayAmount) external returns (uint);\n function repayBorrowVerify(\n address cToken,\n address payer,\n address borrower,\n uint repayAmount,\n uint borrowerIndex) external;\n\n function liquidateBorrowAllowed(\n address cTokenBorrowed,\n address cTokenCollateral,\n address liquidator,\n address borrower,\n uint repayAmount) external returns (uint);\n function liquidateBorrowVerify(\n address cTokenBorrowed,\n address cTokenCollateral,\n address liquidator,\n address borrower,\n uint repayAmount,\n uint seizeTokens) external;\n\n function seizeAllowed(\n address cTokenCollateral,\n address cTokenBorrowed,\n address liquidator,\n address borrower,\n uint seizeTokens) external returns (uint);\n function seizeVerify(\n address cTokenCollateral,\n address cTokenBorrowed,\n address liquidator,\n address borrower,\n uint seizeTokens) external;\n\n function transferAllowed(address cToken, address src, address dst, uint transferTokens) external returns (uint);\n function transferVerify(address cToken, address src, address dst, uint transferTokens) external;\n\n /*** Liquidity/Liquidation Calculations ***/\n\n function liquidateCalculateSeizeTokens(\n address cTokenBorrowed,\n address cTokenCollateral,\n uint repayAmount) external view returns (uint, uint);\n \n /*** Pool-Wide/Cross-Asset Reentrancy Prevention ***/\n\n function _beforeNonReentrant() external;\n function _afterNonReentrant() external;\n}\n"},"contracts/CTokenInterfaces.sol":{"content":"pragma solidity 0.5.17;\n\nimport \"./IFuseFeeDistributor.sol\";\nimport \"./ComptrollerStorage.sol\";\nimport \"./ComptrollerInterface.sol\";\nimport \"./InterestRateModel.sol\";\n\ncontract CTokenAdminStorage {\n /**\n * @notice Administrator for Fuse\n */\n IFuseFeeDistributor internal constant fuseAdmin = IFuseFeeDistributor(0xa731585ab05fC9f83555cf9Bff8F58ee94e18F85);\n\n /**\n * @dev LEGACY USE ONLY: Administrator for this contract\n */\n address payable internal __admin;\n\n /**\n * @dev LEGACY USE ONLY: Whether or not the Fuse admin has admin rights\n */\n bool internal __fuseAdminHasRights;\n\n /**\n * @dev LEGACY USE ONLY: Whether or not the admin has admin rights\n */\n bool internal __adminHasRights;\n}\n\ncontract CTokenStorage is CTokenAdminStorage {\n /**\n * @dev Guard variable for re-entrancy checks\n */\n bool internal _notEntered;\n\n /**\n * @notice EIP-20 token name for this token\n */\n string public name;\n\n /**\n * @notice EIP-20 token symbol for this token\n */\n string public symbol;\n\n /**\n * @notice EIP-20 token decimals for this token\n */\n uint8 public decimals;\n\n /**\n * @notice Maximum borrow rate that can ever be applied (.0005% / block)\n */\n uint internal constant borrowRateMaxMantissa = 0.0005e16;\n\n /**\n * @notice Maximum fraction of interest that can be set aside for reserves + fees\n */\n uint internal constant reserveFactorPlusFeesMaxMantissa = 1e18;\n\n /**\n * @notice LEGACY USE ONLY: Pending administrator for this contract\n */\n address payable private __pendingAdmin;\n\n /**\n * @notice Contract which oversees inter-cToken operations\n */\n ComptrollerInterface public comptroller;\n\n /**\n * @notice Model which tells what the current interest rate should be\n */\n InterestRateModel public interestRateModel;\n\n /**\n * @notice Initial exchange rate used when minting the first CTokens (used when totalSupply = 0)\n */\n uint internal initialExchangeRateMantissa;\n\n /**\n * @notice Fraction of interest currently set aside for admin fees\n */\n uint public adminFeeMantissa;\n\n /**\n * @notice Fraction of interest currently set aside for Fuse fees\n */\n uint public fuseFeeMantissa;\n\n /**\n * @notice Fraction of interest currently set aside for reserves\n */\n uint public reserveFactorMantissa;\n\n /**\n * @notice Block number that interest was last accrued at\n */\n uint public accrualBlockNumber;\n\n /**\n * @notice Accumulator of the total earned interest rate since the opening of the market\n */\n uint public borrowIndex;\n\n /**\n * @notice Total amount of outstanding borrows of the underlying in this market\n */\n uint public totalBorrows;\n\n /**\n * @notice Total amount of reserves of the underlying held in this market\n */\n uint public totalReserves;\n\n /**\n * @notice Total amount of admin fees of the underlying held in this market\n */\n uint public totalAdminFees;\n\n /**\n * @notice Total amount of Fuse fees of the underlying held in this market\n */\n uint public totalFuseFees;\n\n /**\n * @notice Total number of tokens in circulation\n */\n uint public totalSupply;\n\n /**\n * @notice Official record of token balances for each account\n */\n mapping (address => uint) internal accountTokens;\n\n /**\n * @notice Approved token transfer amounts on behalf of others\n */\n mapping (address => mapping (address => uint)) internal transferAllowances;\n\n /**\n * @notice Container for borrow balance information\n * @member principal Total balance (with accrued interest), after applying the most recent balance-changing action\n * @member interestIndex Global borrowIndex as of the most recent balance-changing action\n */\n struct BorrowSnapshot {\n uint principal;\n uint interestIndex;\n }\n\n /**\n * @notice Mapping of account addresses to outstanding borrow balances\n */\n mapping(address => BorrowSnapshot) internal accountBorrows;\n\n /**\n * @notice Share of seized collateral that is added to reserves\n */\n uint public constant protocolSeizeShareMantissa = 2.8e16; //2.8%\n}\n\ncontract CTokenInterface is CTokenStorage {\n /**\n * @notice Indicator that this is a CToken contract (for inspection)\n */\n bool public constant isCToken = true;\n\n /**\n * @notice Indicator that this is or is not a CEther contract (for inspection)\n */\n bool public constant isCEther = false;\n\n /*** Market Events ***/\n\n /**\n * @notice Event emitted when interest is accrued\n */\n event AccrueInterest(uint cashPrior, uint interestAccumulated, uint borrowIndex, uint totalBorrows);\n\n /**\n * @notice Event emitted when tokens are minted\n */\n event Mint(address minter, uint mintAmount, uint mintTokens);\n\n /**\n * @notice Event emitted when tokens are redeemed\n */\n event Redeem(address redeemer, uint redeemAmount, uint redeemTokens);\n\n /**\n * @notice Event emitted when underlying is borrowed\n */\n event Borrow(address borrower, uint borrowAmount, uint accountBorrows, uint totalBorrows);\n\n /**\n * @notice Event emitted when a borrow is repaid\n */\n event RepayBorrow(address payer, address borrower, uint repayAmount, uint accountBorrows, uint totalBorrows);\n\n /**\n * @notice Event emitted when a borrow is liquidated\n */\n event LiquidateBorrow(address liquidator, address borrower, uint repayAmount, address cTokenCollateral, uint seizeTokens);\n\n\n /*** Admin Events ***/\n\n /**\n * @notice Event emitted when comptroller is changed\n */\n event NewComptroller(ComptrollerInterface oldComptroller, ComptrollerInterface newComptroller);\n\n /**\n * @notice Event emitted when interestRateModel is changed\n */\n event NewMarketInterestRateModel(InterestRateModel oldInterestRateModel, InterestRateModel newInterestRateModel);\n\n /**\n * @notice Event emitted when the reserve factor is changed\n */\n event NewReserveFactor(uint oldReserveFactorMantissa, uint newReserveFactorMantissa);\n\n /**\n * @notice Event emitted when the reserves are added\n */\n event ReservesAdded(address benefactor, uint addAmount, uint newTotalReserves);\n\n /**\n * @notice Event emitted when the reserves are reduced\n */\n event ReservesReduced(address admin, uint reduceAmount, uint newTotalReserves);\n\n /**\n * @notice Event emitted when the admin fee is changed\n */\n event NewAdminFee(uint oldAdminFeeMantissa, uint newAdminFeeMantissa);\n\n /**\n * @notice Event emitted when the Fuse fee is changed\n */\n event NewFuseFee(uint oldFuseFeeMantissa, uint newFuseFeeMantissa);\n\n /**\n * @notice EIP20 Transfer event\n */\n event Transfer(address indexed from, address indexed to, uint amount);\n\n /**\n * @notice EIP20 Approval event\n */\n event Approval(address indexed owner, address indexed spender, uint amount);\n\n /**\n * @notice Failure event\n */\n event Failure(uint error, uint info, uint detail);\n\n\n /*** User Interface ***/\n\n function transfer(address dst, uint amount) external returns (bool);\n function transferFrom(address src, address dst, uint amount) external returns (bool);\n function approve(address spender, uint amount) external returns (bool);\n function allowance(address owner, address spender) external view returns (uint);\n function balanceOf(address owner) external view returns (uint);\n function balanceOfUnderlying(address owner) external returns (uint);\n function getAccountSnapshot(address account) external view returns (uint, uint, uint, uint);\n function borrowRatePerBlock() external view returns (uint);\n function supplyRatePerBlock() external view returns (uint);\n function totalBorrowsCurrent() external returns (uint);\n function borrowBalanceCurrent(address account) external returns (uint);\n function borrowBalanceStored(address account) public view returns (uint);\n function exchangeRateCurrent() public returns (uint);\n function exchangeRateStored() public view returns (uint);\n function getCash() external view returns (uint);\n function accrueInterest() public returns (uint);\n function seize(address liquidator, address borrower, uint seizeTokens) external returns (uint);\n\n\n /*** Admin Functions ***/\n\n function _setReserveFactor(uint newReserveFactorMantissa) external returns (uint);\n function _reduceReserves(uint reduceAmount) external returns (uint);\n function _setInterestRateModel(InterestRateModel newInterestRateModel) public returns (uint);\n}\n\ncontract CErc20Storage {\n /**\n * @notice Underlying asset for this CToken\n */\n address public underlying;\n}\n\ncontract CErc20Interface is CErc20Storage {\n\n /*** User Interface ***/\n\n function mint(uint mintAmount) external returns (uint);\n function redeem(uint redeemTokens) external returns (uint);\n function redeemUnderlying(uint redeemAmount) external returns (uint);\n function borrow(uint borrowAmount) external returns (uint);\n function repayBorrow(uint repayAmount) external returns (uint);\n function repayBorrowBehalf(address borrower, uint repayAmount) external returns (uint);\n function liquidateBorrow(address borrower, uint repayAmount, CTokenInterface cTokenCollateral) external returns (uint);\n\n}\n\ncontract CEtherInterface is CErc20Storage {\n /**\n * @notice Indicator that this is a CEther contract (for inspection)\n */\n bool public constant isCEther = true;\n}\n\ncontract CDelegationStorage {\n /**\n * @notice Implementation address for this contract\n */\n address public implementation;\n}\n\ncontract CDelegateInterface is CDelegationStorage {\n /**\n * @notice Emitted when implementation is changed\n */\n event NewImplementation(address oldImplementation, address newImplementation);\n\n /**\n * @notice Called by the admin to update the implementation of the delegator\n * @param implementation_ The address of the new implementation for delegation\n * @param allowResign Flag to indicate whether to call _resignImplementation on the old implementation\n * @param becomeImplementationData The encoded bytes data to be passed to _becomeImplementation\n */\n function _setImplementationSafe(address implementation_, bool allowResign, bytes calldata becomeImplementationData) external;\n\n /**\n * @notice Called by the delegator on a delegate to initialize it for duty\n * @dev Should revert if any issues arise which make it unfit for delegation\n * @param data The encoded bytes data for any initialization\n */\n function _becomeImplementation(bytes calldata data) external;\n\n /**\n * @notice Function called before all delegator functions\n * @dev Checks comptroller.autoImplementation and upgrades the implementation if necessary\n */\n function _prepare() external payable;\n}\n"},"contracts/ErrorReporter.sol":{"content":"pragma solidity 0.5.17;\n\ncontract ComptrollerErrorReporter {\n enum Error {\n NO_ERROR,\n UNAUTHORIZED,\n COMPTROLLER_MISMATCH,\n INSUFFICIENT_SHORTFALL,\n INSUFFICIENT_LIQUIDITY,\n INVALID_CLOSE_FACTOR,\n INVALID_COLLATERAL_FACTOR,\n INVALID_LIQUIDATION_INCENTIVE,\n MARKET_NOT_ENTERED, // no longer possible\n MARKET_NOT_LISTED,\n MARKET_ALREADY_LISTED,\n MATH_ERROR,\n NONZERO_BORROW_BALANCE,\n PRICE_ERROR,\n REJECTION,\n SNAPSHOT_ERROR,\n TOO_MANY_ASSETS,\n TOO_MUCH_REPAY,\n SUPPLIER_NOT_WHITELISTED,\n BORROW_BELOW_MIN,\n SUPPLY_ABOVE_MAX,\n NONZERO_TOTAL_SUPPLY\n }\n\n enum FailureInfo {\n ACCEPT_ADMIN_PENDING_ADMIN_CHECK,\n ACCEPT_PENDING_IMPLEMENTATION_ADDRESS_CHECK,\n ADD_REWARDS_DISTRIBUTOR_OWNER_CHECK,\n EXIT_MARKET_BALANCE_OWED,\n EXIT_MARKET_REJECTION,\n TOGGLE_ADMIN_RIGHTS_OWNER_CHECK,\n TOGGLE_AUTO_IMPLEMENTATIONS_ENABLED_OWNER_CHECK,\n SET_CLOSE_FACTOR_OWNER_CHECK,\n SET_CLOSE_FACTOR_VALIDATION,\n SET_COLLATERAL_FACTOR_OWNER_CHECK,\n SET_COLLATERAL_FACTOR_NO_EXISTS,\n SET_COLLATERAL_FACTOR_VALIDATION,\n SET_COLLATERAL_FACTOR_WITHOUT_PRICE,\n SET_LIQUIDATION_INCENTIVE_OWNER_CHECK,\n SET_LIQUIDATION_INCENTIVE_VALIDATION,\n SET_MAX_ASSETS_OWNER_CHECK,\n SET_PENDING_ADMIN_OWNER_CHECK,\n SET_PENDING_IMPLEMENTATION_CONTRACT_CHECK,\n SET_PENDING_IMPLEMENTATION_OWNER_CHECK,\n SET_PRICE_ORACLE_OWNER_CHECK,\n SET_WHITELIST_ENFORCEMENT_OWNER_CHECK,\n SET_WHITELIST_STATUS_OWNER_CHECK,\n SUPPORT_MARKET_EXISTS,\n SUPPORT_MARKET_OWNER_CHECK,\n SET_PAUSE_GUARDIAN_OWNER_CHECK,\n UNSUPPORT_MARKET_OWNER_CHECK,\n UNSUPPORT_MARKET_DOES_NOT_EXIST,\n UNSUPPORT_MARKET_IN_USE\n }\n\n /**\n * @dev `error` corresponds to enum Error; `info` corresponds to enum FailureInfo, and `detail` is an arbitrary\n * contract-specific code that enables us to report opaque error codes from upgradeable contracts.\n **/\n event Failure(uint error, uint info, uint detail);\n\n /**\n * @dev use this when reporting a known error from the money market or a non-upgradeable collaborator\n */\n function fail(Error err, FailureInfo info) internal returns (uint) {\n emit Failure(uint(err), uint(info), 0);\n\n return uint(err);\n }\n\n /**\n * @dev use this when reporting an opaque error from an upgradeable collaborator contract\n */\n function failOpaque(Error err, FailureInfo info, uint opaqueError) internal returns (uint) {\n emit Failure(uint(err), uint(info), opaqueError);\n\n return uint(err);\n }\n}\n\ncontract TokenErrorReporter {\n enum Error {\n NO_ERROR,\n UNAUTHORIZED,\n BAD_INPUT,\n COMPTROLLER_REJECTION,\n COMPTROLLER_CALCULATION_ERROR,\n INTEREST_RATE_MODEL_ERROR,\n INVALID_ACCOUNT_PAIR,\n INVALID_CLOSE_AMOUNT_REQUESTED,\n INVALID_COLLATERAL_FACTOR,\n MATH_ERROR,\n MARKET_NOT_FRESH,\n MARKET_NOT_LISTED,\n TOKEN_INSUFFICIENT_ALLOWANCE,\n TOKEN_INSUFFICIENT_BALANCE,\n TOKEN_INSUFFICIENT_CASH,\n TOKEN_TRANSFER_IN_FAILED,\n TOKEN_TRANSFER_OUT_FAILED,\n UTILIZATION_ABOVE_MAX\n }\n\n /*\n * Note: FailureInfo (but not Error) is kept in alphabetical order\n * This is because FailureInfo grows significantly faster, and\n * the order of Error has some meaning, while the order of FailureInfo\n * is entirely arbitrary.\n */\n enum FailureInfo {\n ACCEPT_ADMIN_PENDING_ADMIN_CHECK,\n ACCRUE_INTEREST_ACCUMULATED_INTEREST_CALCULATION_FAILED,\n ACCRUE_INTEREST_BORROW_RATE_CALCULATION_FAILED,\n ACCRUE_INTEREST_NEW_BORROW_INDEX_CALCULATION_FAILED,\n ACCRUE_INTEREST_NEW_TOTAL_BORROWS_CALCULATION_FAILED,\n ACCRUE_INTEREST_NEW_TOTAL_RESERVES_CALCULATION_FAILED,\n ACCRUE_INTEREST_NEW_TOTAL_FUSE_FEES_CALCULATION_FAILED,\n ACCRUE_INTEREST_NEW_TOTAL_ADMIN_FEES_CALCULATION_FAILED,\n ACCRUE_INTEREST_SIMPLE_INTEREST_FACTOR_CALCULATION_FAILED,\n BORROW_ACCUMULATED_BALANCE_CALCULATION_FAILED,\n BORROW_ACCRUE_INTEREST_FAILED,\n BORROW_CASH_NOT_AVAILABLE,\n BORROW_FRESHNESS_CHECK,\n BORROW_NEW_TOTAL_BALANCE_CALCULATION_FAILED,\n BORROW_NEW_ACCOUNT_BORROW_BALANCE_CALCULATION_FAILED,\n BORROW_MARKET_NOT_LISTED,\n BORROW_COMPTROLLER_REJECTION,\n LIQUIDATE_ACCRUE_BORROW_INTEREST_FAILED,\n LIQUIDATE_ACCRUE_COLLATERAL_INTEREST_FAILED,\n LIQUIDATE_COLLATERAL_FRESHNESS_CHECK,\n LIQUIDATE_COMPTROLLER_REJECTION,\n LIQUIDATE_COMPTROLLER_CALCULATE_AMOUNT_SEIZE_FAILED,\n LIQUIDATE_CLOSE_AMOUNT_IS_UINT_MAX,\n LIQUIDATE_CLOSE_AMOUNT_IS_ZERO,\n LIQUIDATE_FRESHNESS_CHECK,\n LIQUIDATE_LIQUIDATOR_IS_BORROWER,\n LIQUIDATE_REPAY_BORROW_FRESH_FAILED,\n LIQUIDATE_SEIZE_BALANCE_INCREMENT_FAILED,\n LIQUIDATE_SEIZE_BALANCE_DECREMENT_FAILED,\n LIQUIDATE_SEIZE_COMPTROLLER_REJECTION,\n LIQUIDATE_SEIZE_LIQUIDATOR_IS_BORROWER,\n LIQUIDATE_SEIZE_TOO_MUCH,\n MINT_ACCRUE_INTEREST_FAILED,\n MINT_COMPTROLLER_REJECTION,\n MINT_EXCHANGE_CALCULATION_FAILED,\n MINT_EXCHANGE_RATE_READ_FAILED,\n MINT_FRESHNESS_CHECK,\n MINT_NEW_ACCOUNT_BALANCE_CALCULATION_FAILED,\n MINT_NEW_TOTAL_SUPPLY_CALCULATION_FAILED,\n MINT_TRANSFER_IN_FAILED,\n MINT_TRANSFER_IN_NOT_POSSIBLE,\n NEW_UTILIZATION_RATE_ABOVE_MAX,\n REDEEM_ACCRUE_INTEREST_FAILED,\n REDEEM_COMPTROLLER_REJECTION,\n REDEEM_EXCHANGE_TOKENS_CALCULATION_FAILED,\n REDEEM_EXCHANGE_AMOUNT_CALCULATION_FAILED,\n REDEEM_EXCHANGE_RATE_READ_FAILED,\n REDEEM_FRESHNESS_CHECK,\n REDEEM_NEW_ACCOUNT_BALANCE_CALCULATION_FAILED,\n REDEEM_NEW_TOTAL_SUPPLY_CALCULATION_FAILED,\n REDEEM_TRANSFER_OUT_NOT_POSSIBLE,\n WITHDRAW_FUSE_FEES_ACCRUE_INTEREST_FAILED,\n WITHDRAW_FUSE_FEES_CASH_NOT_AVAILABLE,\n WITHDRAW_FUSE_FEES_FRESH_CHECK,\n WITHDRAW_FUSE_FEES_VALIDATION,\n WITHDRAW_ADMIN_FEES_ACCRUE_INTEREST_FAILED,\n WITHDRAW_ADMIN_FEES_CASH_NOT_AVAILABLE,\n WITHDRAW_ADMIN_FEES_FRESH_CHECK,\n WITHDRAW_ADMIN_FEES_VALIDATION,\n REDUCE_RESERVES_ACCRUE_INTEREST_FAILED,\n REDUCE_RESERVES_ADMIN_CHECK,\n REDUCE_RESERVES_CASH_NOT_AVAILABLE,\n REDUCE_RESERVES_FRESH_CHECK,\n REDUCE_RESERVES_VALIDATION,\n REPAY_BEHALF_ACCRUE_INTEREST_FAILED,\n REPAY_BORROW_ACCRUE_INTEREST_FAILED,\n REPAY_BORROW_ACCUMULATED_BALANCE_CALCULATION_FAILED,\n REPAY_BORROW_COMPTROLLER_REJECTION,\n REPAY_BORROW_FRESHNESS_CHECK,\n REPAY_BORROW_NEW_ACCOUNT_BORROW_BALANCE_CALCULATION_FAILED,\n REPAY_BORROW_NEW_TOTAL_BALANCE_CALCULATION_FAILED,\n REPAY_BORROW_TRANSFER_IN_NOT_POSSIBLE,\n SET_COLLATERAL_FACTOR_OWNER_CHECK,\n SET_COLLATERAL_FACTOR_VALIDATION,\n SET_COMPTROLLER_OWNER_CHECK,\n SET_INTEREST_RATE_MODEL_ACCRUE_INTEREST_FAILED,\n SET_INTEREST_RATE_MODEL_FRESH_CHECK,\n SET_INTEREST_RATE_MODEL_OWNER_CHECK,\n SET_MAX_ASSETS_OWNER_CHECK,\n SET_ORACLE_MARKET_NOT_LISTED,\n TOGGLE_ADMIN_RIGHTS_OWNER_CHECK,\n SET_PENDING_ADMIN_OWNER_CHECK,\n SET_ADMIN_FEE_ACCRUE_INTEREST_FAILED,\n SET_ADMIN_FEE_ADMIN_CHECK,\n SET_ADMIN_FEE_FRESH_CHECK,\n SET_ADMIN_FEE_BOUNDS_CHECK,\n SET_FUSE_FEE_ACCRUE_INTEREST_FAILED,\n SET_FUSE_FEE_FRESH_CHECK,\n SET_FUSE_FEE_BOUNDS_CHECK,\n SET_RESERVE_FACTOR_ACCRUE_INTEREST_FAILED,\n SET_RESERVE_FACTOR_ADMIN_CHECK,\n SET_RESERVE_FACTOR_FRESH_CHECK,\n SET_RESERVE_FACTOR_BOUNDS_CHECK,\n TRANSFER_COMPTROLLER_REJECTION,\n TRANSFER_NOT_ALLOWED,\n TRANSFER_NOT_ENOUGH,\n TRANSFER_TOO_MUCH,\n ADD_RESERVES_ACCRUE_INTEREST_FAILED,\n ADD_RESERVES_FRESH_CHECK,\n ADD_RESERVES_TRANSFER_IN_NOT_POSSIBLE\n }\n\n /**\n * @dev `error` corresponds to enum Error; `info` corresponds to enum FailureInfo, and `detail` is an arbitrary\n * contract-specific code that enables us to report opaque error codes from upgradeable contracts.\n **/\n event Failure(uint error, uint info, uint detail);\n\n /**\n * @dev use this when reporting a known error from the money market or a non-upgradeable collaborator\n */\n function fail(Error err, FailureInfo info) internal returns (uint) {\n emit Failure(uint(err), uint(info), 0);\n\n return uint(err);\n }\n\n /**\n * @dev use this when reporting an opaque error from an upgradeable collaborator contract\n */\n function failOpaque(Error err, FailureInfo info, uint opaqueError) internal returns (uint) {\n emit Failure(uint(err), uint(info), opaqueError);\n\n return err == Error.COMPTROLLER_REJECTION ? 1000 + opaqueError : uint(err);\n }\n}"},"contracts/Exponential.sol":{"content":"pragma solidity 0.5.17;\n\nimport \"./CarefulMath.sol\";\nimport \"./ExponentialNoError.sol\";\n\n/**\n * @title Exponential module for storing fixed-precision decimals\n * @author Compound\n * @dev Legacy contract for compatibility reasons with existing contracts that still use MathError\n * @notice Exp is a struct which stores decimals with a fixed precision of 18 decimal places.\n * Thus, if we wanted to store the 5.1, mantissa would store 5.1e18. That is:\n * `Exp({mantissa: 5100000000000000000})`.\n */\ncontract Exponential is CarefulMath, ExponentialNoError {\n /**\n * @dev Creates an exponential from numerator and denominator values.\n * Note: Returns an error if (`num` * 10e18) > MAX_INT,\n * or if `denom` is zero.\n */\n function getExp(uint num, uint denom) pure internal returns (MathError, Exp memory) {\n (MathError err0, uint scaledNumerator) = mulUInt(num, expScale);\n if (err0 != MathError.NO_ERROR) {\n return (err0, Exp({mantissa: 0}));\n }\n\n (MathError err1, uint rational) = divUInt(scaledNumerator, denom);\n if (err1 != MathError.NO_ERROR) {\n return (err1, Exp({mantissa: 0}));\n }\n\n return (MathError.NO_ERROR, Exp({mantissa: rational}));\n }\n\n /**\n * @dev Adds two exponentials, returning a new exponential.\n */\n function addExp(Exp memory a, Exp memory b) pure internal returns (MathError, Exp memory) {\n (MathError error, uint result) = addUInt(a.mantissa, b.mantissa);\n\n return (error, Exp({mantissa: result}));\n }\n\n /**\n * @dev Subtracts two exponentials, returning a new exponential.\n */\n function subExp(Exp memory a, Exp memory b) pure internal returns (MathError, Exp memory) {\n (MathError error, uint result) = subUInt(a.mantissa, b.mantissa);\n\n return (error, Exp({mantissa: result}));\n }\n\n /**\n * @dev Multiply an Exp by a scalar, returning a new Exp.\n */\n function mulScalar(Exp memory a, uint scalar) pure internal returns (MathError, Exp memory) {\n (MathError err0, uint scaledMantissa) = mulUInt(a.mantissa, scalar);\n if (err0 != MathError.NO_ERROR) {\n return (err0, Exp({mantissa: 0}));\n }\n\n return (MathError.NO_ERROR, Exp({mantissa: scaledMantissa}));\n }\n\n /**\n * @dev Multiply an Exp by a scalar, then truncate to return an unsigned integer.\n */\n function mulScalarTruncate(Exp memory a, uint scalar) pure internal returns (MathError, uint) {\n (MathError err, Exp memory product) = mulScalar(a, scalar);\n if (err != MathError.NO_ERROR) {\n return (err, 0);\n }\n\n return (MathError.NO_ERROR, truncate(product));\n }\n\n /**\n * @dev Multiply an Exp by a scalar, truncate, then add an to an unsigned integer, returning an unsigned integer.\n */\n function mulScalarTruncateAddUInt(Exp memory a, uint scalar, uint addend) pure internal returns (MathError, uint) {\n (MathError err, Exp memory product) = mulScalar(a, scalar);\n if (err != MathError.NO_ERROR) {\n return (err, 0);\n }\n\n return addUInt(truncate(product), addend);\n }\n\n /**\n * @dev Divide an Exp by a scalar, returning a new Exp.\n */\n function divScalar(Exp memory a, uint scalar) pure internal returns (MathError, Exp memory) {\n (MathError err0, uint descaledMantissa) = divUInt(a.mantissa, scalar);\n if (err0 != MathError.NO_ERROR) {\n return (err0, Exp({mantissa: 0}));\n }\n\n return (MathError.NO_ERROR, Exp({mantissa: descaledMantissa}));\n }\n\n /**\n * @dev Divide a scalar by an Exp, returning a new Exp.\n */\n function divScalarByExp(uint scalar, Exp memory divisor) pure internal returns (MathError, Exp memory) {\n /*\n We are doing this as:\n getExp(mulUInt(expScale, scalar), divisor.mantissa)\n\n How it works:\n Exp = a / b;\n Scalar = s;\n `s / (a / b)` = `b * s / a` and since for an Exp `a = mantissa, b = expScale`\n */\n (MathError err0, uint numerator) = mulUInt(expScale, scalar);\n if (err0 != MathError.NO_ERROR) {\n return (err0, Exp({mantissa: 0}));\n }\n return getExp(numerator, divisor.mantissa);\n }\n\n /**\n * @dev Divide a scalar by an Exp, then truncate to return an unsigned integer.\n */\n function divScalarByExpTruncate(uint scalar, Exp memory divisor) pure internal returns (MathError, uint) {\n (MathError err, Exp memory fraction) = divScalarByExp(scalar, divisor);\n if (err != MathError.NO_ERROR) {\n return (err, 0);\n }\n\n return (MathError.NO_ERROR, truncate(fraction));\n }\n\n /**\n * @dev Multiplies two exponentials, returning a new exponential.\n */\n function mulExp(Exp memory a, Exp memory b) pure internal returns (MathError, Exp memory) {\n\n (MathError err0, uint doubleScaledProduct) = mulUInt(a.mantissa, b.mantissa);\n if (err0 != MathError.NO_ERROR) {\n return (err0, Exp({mantissa: 0}));\n }\n\n // We add half the scale before dividing so that we get rounding instead of truncation.\n // See \"Listing 6\" and text above it at https://accu.org/index.php/journals/1717\n // Without this change, a result like 6.6...e-19 will be truncated to 0 instead of being rounded to 1e-18.\n (MathError err1, uint doubleScaledProductWithHalfScale) = addUInt(halfExpScale, doubleScaledProduct);\n if (err1 != MathError.NO_ERROR) {\n return (err1, Exp({mantissa: 0}));\n }\n\n (MathError err2, uint product) = divUInt(doubleScaledProductWithHalfScale, expScale);\n // The only error `div` can return is MathError.DIVISION_BY_ZERO but we control `expScale` and it is not zero.\n assert(err2 == MathError.NO_ERROR);\n\n return (MathError.NO_ERROR, Exp({mantissa: product}));\n }\n\n /**\n * @dev Multiplies two exponentials given their mantissas, returning a new exponential.\n */\n function mulExp(uint a, uint b) pure internal returns (MathError, Exp memory) {\n return mulExp(Exp({mantissa: a}), Exp({mantissa: b}));\n }\n\n /**\n * @dev Multiplies three exponentials, returning a new exponential.\n */\n function mulExp3(Exp memory a, Exp memory b, Exp memory c) pure internal returns (MathError, Exp memory) {\n (MathError err, Exp memory ab) = mulExp(a, b);\n if (err != MathError.NO_ERROR) {\n return (err, ab);\n }\n return mulExp(ab, c);\n }\n\n /**\n * @dev Divides two exponentials, returning a new exponential.\n * (a/scale) / (b/scale) = (a/scale) * (scale/b) = a/b,\n * which we can scale as an Exp by calling getExp(a.mantissa, b.mantissa)\n */\n function divExp(Exp memory a, Exp memory b) pure internal returns (MathError, Exp memory) {\n return getExp(a.mantissa, b.mantissa);\n }\n}\n"},"contracts/EIP20Interface.sol":{"content":"pragma solidity 0.5.17;\n\n/**\n * @title ERC 20 Token Standard Interface\n * https://eips.ethereum.org/EIPS/eip-20\n */\ninterface EIP20Interface {\n function name() external view returns (string memory);\n function symbol() external view returns (string memory);\n function decimals() external view returns (uint8);\n\n /**\n * @notice Get the total number of tokens in circulation\n * @return The supply of tokens\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @notice Gets the balance of the specified address\n * @param owner The address from which the balance will be retrieved\n * @return The balance\n */\n function balanceOf(address owner) external view returns (uint256 balance);\n\n /**\n * @notice Transfer `amount` tokens from `msg.sender` to `dst`\n * @param dst The address of the destination account\n * @param amount The number of tokens to transfer\n * @return Whether or not the transfer succeeded\n */\n function transfer(address dst, uint256 amount) external returns (bool success);\n\n /**\n * @notice Transfer `amount` tokens from `src` to `dst`\n * @param src The address of the source account\n * @param dst The address of the destination account\n * @param amount The number of tokens to transfer\n * @return Whether or not the transfer succeeded\n */\n function transferFrom(address src, address dst, uint256 amount) external returns (bool success);\n\n /**\n * @notice Approve `spender` to transfer up to `amount` from `src`\n * @dev This will overwrite the approval amount for `spender`\n * and is subject to issues noted [here](https://eips.ethereum.org/EIPS/eip-20#approve)\n * @param spender The address of the account which may transfer tokens\n * @param amount The number of tokens that are approved (-1 means infinite)\n * @return Whether or not the approval succeeded\n */\n function approve(address spender, uint256 amount) external returns (bool success);\n\n /**\n * @notice Get the current allowance from `owner` for `spender`\n * @param owner The address of the account which owns the tokens to be spent\n * @param spender The address of the account which may transfer tokens\n * @return The number of tokens allowed to be spent (-1 means infinite)\n */\n function allowance(address owner, address spender) external view returns (uint256 remaining);\n\n event Transfer(address indexed from, address indexed to, uint256 amount);\n event Approval(address indexed owner, address indexed spender, uint256 amount);\n}\n"},"contracts/EIP20NonStandardInterface.sol":{"content":"pragma solidity 0.5.17;\n\n/**\n * @title EIP20NonStandardInterface\n * @dev Version of ERC20 with no return values for `transfer` and `transferFrom`\n * See https://medium.com/coinmonks/missing-return-value-bug-at-least-130-tokens-affected-d67bf08521ca\n */\ninterface EIP20NonStandardInterface {\n\n /**\n * @notice Get the total number of tokens in circulation\n * @return The supply of tokens\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @notice Gets the balance of the specified address\n * @param owner The address from which the balance will be retrieved\n * @return The balance\n */\n function balanceOf(address owner) external view returns (uint256 balance);\n\n ///\n /// !!!!!!!!!!!!!!\n /// !!! NOTICE !!! `transfer` does not return a value, in violation of the ERC-20 specification\n /// !!!!!!!!!!!!!!\n ///\n\n /**\n * @notice Transfer `amount` tokens from `msg.sender` to `dst`\n * @param dst The address of the destination account\n * @param amount The number of tokens to transfer\n */\n function transfer(address dst, uint256 amount) external;\n\n ///\n /// !!!!!!!!!!!!!!\n /// !!! NOTICE !!! `transferFrom` does not return a value, in violation of the ERC-20 specification\n /// !!!!!!!!!!!!!!\n ///\n\n /**\n * @notice Transfer `amount` tokens from `src` to `dst`\n * @param src The address of the source account\n * @param dst The address of the destination account\n * @param amount The number of tokens to transfer\n */\n function transferFrom(address src, address dst, uint256 amount) external;\n\n /**\n * @notice Approve `spender` to transfer up to `amount` from `src`\n * @dev This will overwrite the approval amount for `spender`\n * and is subject to issues noted [here](https://eips.ethereum.org/EIPS/eip-20#approve)\n * @param spender The address of the account which may transfer tokens\n * @param amount The number of tokens that are approved\n * @return Whether or not the approval succeeded\n */\n function approve(address spender, uint256 amount) external returns (bool success);\n\n /**\n * @notice Get the current allowance from `owner` for `spender`\n * @param owner The address of the account which owns the tokens to be spent\n * @param spender The address of the account which may transfer tokens\n * @return The number of tokens allowed to be spent\n */\n function allowance(address owner, address spender) external view returns (uint256 remaining);\n\n event Transfer(address indexed from, address indexed to, uint256 amount);\n event Approval(address indexed owner, address indexed spender, uint256 amount);\n}\n"},"contracts/IFuseFeeDistributor.sol":{"content":"pragma solidity 0.5.17;\n\ninterface IFuseFeeDistributor {\n function minBorrowEth() external view returns (uint256);\n function maxSupplyEth() external view returns (uint256);\n function maxUtilizationRate() external view returns (uint256);\n function interestFeeRate() external view returns (uint256);\n function comptrollerImplementationWhitelist(address oldImplementation, address newImplementation) external view returns (bool);\n function cErc20DelegateWhitelist(address oldImplementation, address newImplementation, bool allowResign) external view returns (bool);\n function cEtherDelegateWhitelist(address oldImplementation, address newImplementation, bool allowResign) external view returns (bool);\n function latestComptrollerImplementation(address oldImplementation) external view returns (address);\n function latestCErc20Delegate(address oldImplementation) external view returns (address cErc20Delegate, bool allowResign, bytes memory becomeImplementationData);\n function latestCEtherDelegate(address oldImplementation) external view returns (address cEtherDelegate, bool allowResign, bytes memory becomeImplementationData);\n function deployCEther(bytes calldata constructorData) external returns (address);\n function deployCErc20(bytes calldata constructorData) external returns (address);\n function () external payable;\n}\n"},"contracts/ComptrollerStorage.sol":{"content":"pragma solidity 0.5.17;\n\nimport \"./IFuseFeeDistributor.sol\";\nimport \"./CToken.sol\";\nimport \"./PriceOracle.sol\";\n\ncontract UnitrollerAdminStorage {\n /**\n * @notice Administrator for Fuse\n */\n IFuseFeeDistributor internal constant fuseAdmin = IFuseFeeDistributor(0xa731585ab05fC9f83555cf9Bff8F58ee94e18F85);\n\n /**\n * @notice Administrator for this contract\n */\n address public admin;\n\n /**\n * @notice Pending administrator for this contract\n */\n address public pendingAdmin;\n\n /**\n * @notice Whether or not the Fuse admin has admin rights\n */\n bool public fuseAdminHasRights = true;\n\n /**\n * @notice Whether or not the admin has admin rights\n */\n bool public adminHasRights = true;\n\n /**\n * @notice Returns a boolean indicating if the sender has admin rights\n */\n function hasAdminRights() internal view returns (bool) {\n return (msg.sender == admin && adminHasRights) || (msg.sender == address(fuseAdmin) && fuseAdminHasRights);\n }\n\n /**\n * @notice Active brains of Unitroller\n */\n address public comptrollerImplementation;\n\n /**\n * @notice Pending brains of Unitroller\n */\n address public pendingComptrollerImplementation;\n}\n\ncontract ComptrollerV1Storage is UnitrollerAdminStorage {\n /**\n * @notice Oracle which gives the price of any given asset\n */\n PriceOracle public oracle;\n\n /**\n * @notice Multiplier used to calculate the maximum repayAmount when liquidating a borrow\n */\n uint public closeFactorMantissa;\n\n /**\n * @notice Multiplier representing the discount on collateral that a liquidator receives\n */\n uint public liquidationIncentiveMantissa;\n\n /**\n * @notice UNUSED AFTER UPGRADE: Max number of assets a single account can participate in (borrow or use as collateral)\n */\n uint internal maxAssets;\n\n /**\n * @notice Per-account mapping of \"assets you are in\", capped by maxAssets\n */\n mapping(address => CToken[]) public accountAssets;\n\n}\n\ncontract ComptrollerV2Storage is ComptrollerV1Storage {\n struct Market {\n /**\n * @notice Whether or not this market is listed\n */\n bool isListed;\n\n /**\n * @notice Multiplier representing the most one can borrow against their collateral in this market.\n * For instance, 0.9 to allow borrowing 90% of collateral value.\n * Must be between 0 and 1, and stored as a mantissa.\n */\n uint collateralFactorMantissa;\n\n /**\n * @notice Per-market mapping of \"accounts in this asset\"\n */\n mapping(address => bool) accountMembership;\n }\n\n /**\n * @notice Official mapping of cTokens -> Market metadata\n * @dev Used e.g. to determine if a market is supported\n */\n mapping(address => Market) public markets;\n\n /// @notice A list of all markets\n CToken[] public allMarkets;\n\n /**\n * @dev Maps borrowers to booleans indicating if they have entered any markets\n */\n mapping(address => bool) internal borrowers;\n\n /// @notice A list of all borrowers who have entered markets\n address[] public allBorrowers;\n\n /// @notice Indexes of borrower account addresses in the `allBorrowers` array\n mapping(address => uint256) internal borrowerIndexes;\n\n /**\n * @dev Maps suppliers to booleans indicating if they have ever supplied to any markets\n */\n mapping(address => bool) public suppliers;\n\n /// @notice All cTokens addresses mapped by their underlying token addresses\n mapping(address => CToken) public cTokensByUnderlying;\n\n /// @notice Whether or not the supplier whitelist is enforced\n bool public enforceWhitelist;\n\n /// @notice Maps addresses to booleans indicating if they are allowed to supply assets (i.e., mint cTokens)\n mapping(address => bool) public whitelist;\n\n /// @notice An array of all whitelisted accounts\n address[] public whitelistArray;\n\n /// @notice Indexes of account addresses in the `whitelistArray` array\n mapping(address => uint256) internal whitelistIndexes;\n\n /**\n * @notice The Pause Guardian can pause certain actions as a safety mechanism.\n * Actions which allow users to remove their own assets cannot be paused.\n * Liquidation / seizing / transfer can only be paused globally, not by market.\n */\n address public pauseGuardian;\n bool public _mintGuardianPaused;\n bool public _borrowGuardianPaused;\n bool public transferGuardianPaused;\n bool public seizeGuardianPaused;\n mapping(address => bool) public mintGuardianPaused;\n mapping(address => bool) public borrowGuardianPaused;\n}\n\ncontract ComptrollerV3Storage is ComptrollerV2Storage {\n /**\n * @dev Whether or not the implementation should be auto-upgraded.\n */\n bool public autoImplementation;\n\n /// @notice The borrowCapGuardian can set borrowCaps to any number for any market. Lowering the borrow cap could disable borrowing on the given market.\n address public borrowCapGuardian;\n\n /// @notice Borrow caps enforced by borrowAllowed for each cToken address. Defaults to zero which corresponds to unlimited borrowing.\n mapping(address => uint) public borrowCaps;\n\n /// @notice Supply caps enforced by mintAllowed for each cToken address. Defaults to zero which corresponds to unlimited supplying.\n mapping(address => uint) public supplyCaps;\n\n /// @notice RewardsDistributor contracts to notify of flywheel changes.\n address[] public rewardsDistributors;\n\n /// @dev Guard variable for pool-wide/cross-asset re-entrancy checks\n bool internal _notEntered;\n\n /// @dev Whether or not _notEntered has been initialized\n bool internal _notEnteredInitialized;\n}\n"},"contracts/PriceOracle.sol":{"content":"pragma solidity 0.5.17;\n\nimport \"./CToken.sol\";\n\ncontract PriceOracle {\n /// @notice Indicator that this is a PriceOracle contract (for inspection)\n bool public constant isPriceOracle = true;\n\n /**\n * @notice Get the underlying price of a cToken asset\n * @param cToken The cToken to get the underlying price of\n * @return The underlying asset price mantissa (scaled by 1e18).\n * Zero means the price is unavailable.\n */\n function getUnderlyingPrice(CToken cToken) external view returns (uint);\n}\n"},"contracts/CarefulMath.sol":{"content":"pragma solidity 0.5.17;\n\n/**\n * @title Careful Math\n * @author Compound\n * @notice Derived from OpenZeppelin's SafeMath library\n * https://github.com/OpenZeppelin/openzeppelin-solidity/blob/master/contracts/math/SafeMath.sol\n */\ncontract CarefulMath {\n\n /**\n * @dev Possible error codes that we can return\n */\n enum MathError {\n NO_ERROR,\n DIVISION_BY_ZERO,\n INTEGER_OVERFLOW,\n INTEGER_UNDERFLOW\n }\n\n /**\n * @dev Multiplies two numbers, returns an error on overflow.\n */\n function mulUInt(uint a, uint b) internal pure returns (MathError, uint) {\n if (a == 0) {\n return (MathError.NO_ERROR, 0);\n }\n\n uint c = a * b;\n\n if (c / a != b) {\n return (MathError.INTEGER_OVERFLOW, 0);\n } else {\n return (MathError.NO_ERROR, c);\n }\n }\n\n /**\n * @dev Integer division of two numbers, truncating the quotient.\n */\n function divUInt(uint a, uint b) internal pure returns (MathError, uint) {\n if (b == 0) {\n return (MathError.DIVISION_BY_ZERO, 0);\n }\n\n return (MathError.NO_ERROR, a / b);\n }\n\n /**\n * @dev Subtracts two numbers, returns an error on overflow (i.e. if subtrahend is greater than minuend).\n */\n function subUInt(uint a, uint b) internal pure returns (MathError, uint) {\n if (b <= a) {\n return (MathError.NO_ERROR, a - b);\n } else {\n return (MathError.INTEGER_UNDERFLOW, 0);\n }\n }\n\n /**\n * @dev Adds two numbers, returns an error on overflow.\n */\n function addUInt(uint a, uint b) internal pure returns (MathError, uint) {\n uint c = a + b;\n\n if (c >= a) {\n return (MathError.NO_ERROR, c);\n } else {\n return (MathError.INTEGER_OVERFLOW, 0);\n }\n }\n\n /**\n * @dev add a and b and then subtract c\n */\n function addThenSubUInt(uint a, uint b, uint c) internal pure returns (MathError, uint) {\n (MathError err0, uint sum) = addUInt(a, b);\n\n if (err0 != MathError.NO_ERROR) {\n return (err0, 0);\n }\n\n return subUInt(sum, c);\n }\n}\n"},"contracts/ExponentialNoError.sol":{"content":"pragma solidity 0.5.17;\n\n/**\n * @title Exponential module for storing fixed-precision decimals\n * @author Compound\n * @notice Exp is a struct which stores decimals with a fixed precision of 18 decimal places.\n * Thus, if we wanted to store the 5.1, mantissa would store 5.1e18. That is:\n * `Exp({mantissa: 5100000000000000000})`.\n */\ncontract ExponentialNoError {\n uint constant expScale = 1e18;\n uint constant doubleScale = 1e36;\n uint constant halfExpScale = expScale/2;\n uint constant mantissaOne = expScale;\n\n struct Exp {\n uint mantissa;\n }\n\n struct Double {\n uint mantissa;\n }\n\n /**\n * @dev Truncates the given exp to a whole number value.\n * For example, truncate(Exp{mantissa: 15 * expScale}) = 15\n */\n function truncate(Exp memory exp) pure internal returns (uint) {\n // Note: We are not using careful math here as we're performing a division that cannot fail\n return exp.mantissa / expScale;\n }\n\n /**\n * @dev Multiply an Exp by a scalar, then truncate to return an unsigned integer.\n */\n function mul_ScalarTruncate(Exp memory a, uint scalar) pure internal returns (uint) {\n Exp memory product = mul_(a, scalar);\n return truncate(product);\n }\n\n /**\n * @dev Multiply an Exp by a scalar, truncate, then add an to an unsigned integer, returning an unsigned integer.\n */\n function mul_ScalarTruncateAddUInt(Exp memory a, uint scalar, uint addend) pure internal returns (uint) {\n Exp memory product = mul_(a, scalar);\n return add_(truncate(product), addend);\n }\n\n /**\n * @dev Checks if first Exp is less than second Exp.\n */\n function lessThanExp(Exp memory left, Exp memory right) pure internal returns (bool) {\n return left.mantissa < right.mantissa;\n }\n\n /**\n * @dev Checks if left Exp <= right Exp.\n */\n function lessThanOrEqualExp(Exp memory left, Exp memory right) pure internal returns (bool) {\n return left.mantissa <= right.mantissa;\n }\n\n /**\n * @dev Checks if left Exp > right Exp.\n */\n function greaterThanExp(Exp memory left, Exp memory right) pure internal returns (bool) {\n return left.mantissa > right.mantissa;\n }\n\n /**\n * @dev returns true if Exp is exactly zero\n */\n function isZeroExp(Exp memory value) pure internal returns (bool) {\n return value.mantissa == 0;\n }\n\n function safe224(uint n, string memory errorMessage) pure internal returns (uint224) {\n require(n < 2**224, errorMessage);\n return uint224(n);\n }\n\n function safe32(uint n, string memory errorMessage) pure internal returns (uint32) {\n require(n < 2**32, errorMessage);\n return uint32(n);\n }\n\n function add_(Exp memory a, Exp memory b) pure internal returns (Exp memory) {\n return Exp({mantissa: add_(a.mantissa, b.mantissa)});\n }\n\n function add_(Double memory a, Double memory b) pure internal returns (Double memory) {\n return Double({mantissa: add_(a.mantissa, b.mantissa)});\n }\n\n function add_(uint a, uint b) pure internal returns (uint) {\n return add_(a, b, \"addition overflow\");\n }\n\n function add_(uint a, uint b, string memory errorMessage) pure internal returns (uint) {\n uint c = a + b;\n require(c >= a, errorMessage);\n return c;\n }\n\n function sub_(Exp memory a, Exp memory b) pure internal returns (Exp memory) {\n return Exp({mantissa: sub_(a.mantissa, b.mantissa)});\n }\n\n function sub_(Double memory a, Double memory b) pure internal returns (Double memory) {\n return Double({mantissa: sub_(a.mantissa, b.mantissa)});\n }\n\n function sub_(uint a, uint b) pure internal returns (uint) {\n return sub_(a, b, \"subtraction underflow\");\n }\n\n function sub_(uint a, uint b, string memory errorMessage) pure internal returns (uint) {\n require(b <= a, errorMessage);\n return a - b;\n }\n\n function mul_(Exp memory a, Exp memory b) pure internal returns (Exp memory) {\n return Exp({mantissa: mul_(a.mantissa, b.mantissa) / expScale});\n }\n\n function mul_(Exp memory a, uint b) pure internal returns (Exp memory) {\n return Exp({mantissa: mul_(a.mantissa, b)});\n }\n\n function mul_(uint a, Exp memory b) pure internal returns (uint) {\n return mul_(a, b.mantissa) / expScale;\n }\n\n function mul_(Double memory a, Double memory b) pure internal returns (Double memory) {\n return Double({mantissa: mul_(a.mantissa, b.mantissa) / doubleScale});\n }\n\n function mul_(Double memory a, uint b) pure internal returns (Double memory) {\n return Double({mantissa: mul_(a.mantissa, b)});\n }\n\n function mul_(uint a, Double memory b) pure internal returns (uint) {\n return mul_(a, b.mantissa) / doubleScale;\n }\n\n function mul_(uint a, uint b) pure internal returns (uint) {\n return mul_(a, b, \"multiplication overflow\");\n }\n\n function mul_(uint a, uint b, string memory errorMessage) pure internal returns (uint) {\n if (a == 0 || b == 0) {\n return 0;\n }\n uint c = a * b;\n require(c / a == b, errorMessage);\n return c;\n }\n\n function div_(Exp memory a, Exp memory b) pure internal returns (Exp memory) {\n return Exp({mantissa: div_(mul_(a.mantissa, expScale), b.mantissa)});\n }\n\n function div_(Exp memory a, uint b) pure internal returns (Exp memory) {\n return Exp({mantissa: div_(a.mantissa, b)});\n }\n\n function div_(uint a, Exp memory b) pure internal returns (uint) {\n return div_(mul_(a, expScale), b.mantissa);\n }\n\n function div_(Double memory a, Double memory b) pure internal returns (Double memory) {\n return Double({mantissa: div_(mul_(a.mantissa, doubleScale), b.mantissa)});\n }\n\n function div_(Double memory a, uint b) pure internal returns (Double memory) {\n return Double({mantissa: div_(a.mantissa, b)});\n }\n\n function div_(uint a, Double memory b) pure internal returns (uint) {\n return div_(mul_(a, doubleScale), b.mantissa);\n }\n\n function div_(uint a, uint b) pure internal returns (uint) {\n return div_(a, b, \"divide by zero\");\n }\n\n function div_(uint a, uint b, string memory errorMessage) pure internal returns (uint) {\n require(b > 0, errorMessage);\n return a / b;\n }\n\n function fraction(uint a, uint b) pure internal returns (Double memory) {\n return Double({mantissa: div_(mul_(a, doubleScale), b)});\n }\n}\n"},"contracts/RewardsDistributorStorage.sol":{"content":"pragma solidity 0.5.17;\n\nimport \"./CToken.sol\";\n\ncontract RewardsDistributorDelegatorStorage {\n /// @notice Administrator for this contract\n address public admin;\n\n /// @notice Pending administrator for this contract\n address public pendingAdmin;\n\n /// @notice Active brains of RewardsDistributor\n address public implementation;\n}\n\n/**\n * @title Storage for RewardsDistributorDelegate\n * @notice For future upgrades, do not change RewardsDistributorDelegateStorageV1. Create a new\n * contract which implements RewardsDistributorDelegateStorageV1 and following the naming convention\n * RewardsDistributorDelegateStorageVX.\n */\ncontract RewardsDistributorDelegateStorageV1 is RewardsDistributorDelegatorStorage {\n /// @dev The token to reward (i.e., COMP)\n address public rewardToken;\n\n struct CompMarketState {\n /// @notice The market's last updated compBorrowIndex or compSupplyIndex\n uint224 index;\n\n /// @notice The block number the index was last updated at\n uint32 block;\n }\n\n /// @notice A list of all markets\n CToken[] public allMarkets;\n\n /// @notice Rewards per block that each market currently receives\n mapping(address => uint) public compSupplySpeeds;\n\n /// @notice Rewards per block that each market currently receives\n mapping(address => uint) public compBorrowSpeeds;\n\n /// @notice The COMP market supply state for each market\n mapping(address => CompMarketState) public compSupplyState;\n\n /// @notice The COMP market borrow state for each market\n mapping(address => CompMarketState) public compBorrowState;\n\n /// @notice The COMP borrow index for each market for each supplier as of the last time they accrued COMP\n mapping(address => mapping(address => uint)) public compSupplierIndex;\n\n /// @notice The COMP borrow index for each market for each borrower as of the last time they accrued COMP\n mapping(address => mapping(address => uint)) public compBorrowerIndex;\n\n /// @notice The COMP accrued but not yet transferred to each user\n mapping(address => uint) public compAccrued;\n\n /// @notice The portion of COMP that each contributor receives per block\n mapping(address => uint) public compContributorSpeeds;\n\n /// @notice Last block at which a contributor's COMP rewards have been allocated\n mapping(address => uint) public lastContributorBlock;\n}\n"},"contracts/RewardsDistributorDelegator.sol":{"content":"pragma solidity 0.5.17;\n\nimport \"./RewardsDistributorStorage.sol\";\n\ncontract RewardsDistributorDelegator is RewardsDistributorDelegatorStorage {\n /// @notice Emitted when implementation is changed\n event NewImplementation(address oldImplementation, address newImplementation);\n\n\tconstructor(\n\t\t\taddress admin_,\n\t\t\taddress rewardToken_,\n\t address implementation_) public {\n\n // Admin set to msg.sender for initialization\n admin = msg.sender;\n\n delegateTo(implementation_, abi.encodeWithSignature(\"initialize(address)\", rewardToken_));\n\n _setImplementation(implementation_);\n\n admin = admin_;\n\t}\n\n\n\t/**\n * @notice Called by the admin to update the implementation of the delegator\n * @param implementation_ The address of the new implementation for delegation\n */\n function _setImplementation(address implementation_) public {\n require(msg.sender == admin, \"RewardsDistributorDelegator::_setImplementation: admin only\");\n require(implementation_ != address(0), \"RewardsDistributorDelegator::_setImplementation: invalid implementation address\");\n\n address oldImplementation = implementation;\n implementation = implementation_;\n\n emit NewImplementation(oldImplementation, implementation);\n }\n\n /**\n * @notice Internal method to delegate execution to another contract\n * @dev It returns to the external caller whatever the implementation returns or forwards reverts\n * @param callee The contract to delegatecall\n * @param data The raw data to delegatecall\n */\n function delegateTo(address callee, bytes memory data) internal {\n (bool success, bytes memory returnData) = callee.delegatecall(data);\n assembly {\n if eq(success, 0) {\n revert(add(returnData, 0x20), returndatasize)\n }\n }\n }\n\n\t/**\n * @dev Delegates execution to an implementation contract.\n * It returns to the external caller whatever the implementation returns\n * or forwards reverts.\n */\n function () external payable {\n // delegate all other functions to current implementation\n (bool success, ) = implementation.delegatecall(msg.data);\n\n assembly {\n let free_mem_ptr := mload(0x40)\n returndatacopy(free_mem_ptr, 0, returndatasize)\n\n switch success\n case 0 { revert(free_mem_ptr, returndatasize) }\n default { return(free_mem_ptr, returndatasize) }\n }\n }\n}\n"},"contracts/RewardsDistributorDelegate.sol":{"content":"pragma solidity 0.5.17;\n\nimport \"./CToken.sol\";\nimport \"./ExponentialNoError.sol\";\nimport \"./Comptroller.sol\";\nimport \"./RewardsDistributorStorage.sol\";\n\n/**\n * @title RewardsDistributorDelegate (COMP distribution logic extracted from `Comptroller`)\n * @author Compound\n */\ncontract RewardsDistributorDelegate is RewardsDistributorDelegateStorageV1, ExponentialNoError {\n /// @dev Notice that this contract is a RewardsDistributor\n bool public constant isRewardsDistributor = true;\n\n /// @notice Emitted when pendingAdmin is changed\n event NewPendingAdmin(address oldPendingAdmin, address newPendingAdmin);\n\n /// @notice Emitted when pendingAdmin is accepted, which means admin is updated\n event NewAdmin(address oldAdmin, address newAdmin);\n\n /// @notice Emitted when a new COMP speed is calculated for a market\n event CompSupplySpeedUpdated(CToken indexed cToken, uint newSpeed);\n\n /// @notice Emitted when a new COMP speed is calculated for a market\n event CompBorrowSpeedUpdated(CToken indexed cToken, uint newSpeed);\n\n /// @notice Emitted when a new COMP speed is set for a contributor\n event ContributorCompSpeedUpdated(address indexed contributor, uint newSpeed);\n\n /// @notice Emitted when COMP is distributed to a supplier\n event DistributedSupplierComp(CToken indexed cToken, address indexed supplier, uint compDelta, uint compSupplyIndex);\n\n /// @notice Emitted when COMP is distributed to a borrower\n event DistributedBorrowerComp(CToken indexed cToken, address indexed borrower, uint compDelta, uint compBorrowIndex);\n\n /// @notice Emitted when COMP is granted by admin\n event CompGranted(address recipient, uint amount);\n\n /// @notice The initial COMP index for a market\n uint224 public constant compInitialIndex = 1e36;\n\n /// @dev Intitializer to set admin to caller and set reward token\n function initialize(address _rewardToken) external {\n require(msg.sender == admin, \"Only admin can initialize.\");\n require(rewardToken == address(0), \"Already initialized.\");\n require(_rewardToken != address(0), \"Cannot initialize reward token to the zero address.\");\n rewardToken = _rewardToken;\n }\n\n /*** Set Admin ***/\n\n /**\n * @notice Begins transfer of admin rights. The newPendingAdmin must call `_acceptAdmin` to finalize the transfer.\n * @dev Admin function to begin change of admin. The newPendingAdmin must call `_acceptAdmin` to finalize the transfer.\n * @param newPendingAdmin New pending admin.\n */\n function _setPendingAdmin(address newPendingAdmin) external {\n // Check caller = admin\n require(msg.sender == admin, \"RewardsDistributor:_setPendingAdmin: admin only\");\n\n // Save current value, if any, for inclusion in log\n address oldPendingAdmin = pendingAdmin;\n\n // Store pendingAdmin with value newPendingAdmin\n pendingAdmin = newPendingAdmin;\n\n // Emit NewPendingAdmin(oldPendingAdmin, newPendingAdmin)\n emit NewPendingAdmin(oldPendingAdmin, newPendingAdmin);\n }\n\n /**\n * @notice Accepts transfer of admin rights. msg.sender must be pendingAdmin\n * @dev Admin function for pending admin to accept role and update admin\n */\n function _acceptAdmin() external {\n // Check caller is pendingAdmin and pendingAdmin ≠ address(0)\n require(msg.sender == pendingAdmin && msg.sender != address(0), \"RewardsDistributor:_acceptAdmin: pending admin only\");\n\n // Save current values for inclusion in log\n address oldAdmin = admin;\n address oldPendingAdmin = pendingAdmin;\n\n // Store admin with value pendingAdmin\n admin = pendingAdmin;\n\n // Clear the pending value\n pendingAdmin = address(0);\n\n emit NewAdmin(oldAdmin, admin);\n emit NewPendingAdmin(oldPendingAdmin, pendingAdmin);\n }\n\n /*** Comp Distribution ***/\n\n /**\n * @notice Check the cToken before adding\n * @param cToken The market to add\n */\n function checkCToken(CToken cToken) internal view {\n // Make sure cToken is listed\n Comptroller comptroller = Comptroller(address(cToken.comptroller()));\n (bool isListed, ) = comptroller.markets(address(cToken));\n require(isListed == true, \"comp market is not listed\");\n\n // Make sure distributor is added\n bool distributorAdded = false;\n address[] memory distributors = comptroller.getRewardsDistributors();\n for (uint256 i = 0; i < distributors.length; i++) if (distributors[i] == address(this)) distributorAdded = true; \n require(distributorAdded == true, \"distributor not added\");\n }\n\n /**\n * @notice Set COMP speed for a single market\n * @param cToken The market whose COMP speed to update\n * @param compSpeed New COMP speed for market\n */\n function setCompSupplySpeedInternal(CToken cToken, uint compSpeed) internal {\n uint currentCompSpeed = compSupplySpeeds[address(cToken)];\n if (currentCompSpeed != 0) {\n // note that COMP speed could be set to 0 to halt liquidity rewards for a market\n updateCompSupplyIndex(address(cToken));\n } else if (compSpeed != 0) {\n // Make sure cToken is listed and distributor is added\n checkCToken(cToken);\n\n // Add the COMP market\n if (compSupplyState[address(cToken)].index == 0) {\n compSupplyState[address(cToken)] = CompMarketState({\n index: compInitialIndex,\n block: safe32(getBlockNumber(), \"block number exceeds 32 bits\")\n });\n\n // Add to allMarkets array if not already there\n if (compBorrowState[address(cToken)].index == 0) {\n allMarkets.push(cToken);\n }\n } else {\n // Update block number to ensure extra interest is not accrued during the prior period\n compSupplyState[address(cToken)].block = safe32(getBlockNumber(), \"block number exceeds 32 bits\");\n }\n }\n\n if (currentCompSpeed != compSpeed) {\n compSupplySpeeds[address(cToken)] = compSpeed;\n emit CompSupplySpeedUpdated(cToken, compSpeed);\n }\n }\n\n /**\n * @notice Set COMP speed for a single market\n * @param cToken The market whose COMP speed to update\n * @param compSpeed New COMP speed for market\n */\n function setCompBorrowSpeedInternal(CToken cToken, uint compSpeed) internal {\n uint currentCompSpeed = compBorrowSpeeds[address(cToken)];\n if (currentCompSpeed != 0) {\n // note that COMP speed could be set to 0 to halt liquidity rewards for a market\n Exp memory borrowIndex = Exp({mantissa: cToken.borrowIndex()});\n updateCompBorrowIndex(address(cToken), borrowIndex);\n } else if (compSpeed != 0) {\n // Make sure cToken is listed and distributor is added\n checkCToken(cToken);\n\n // Add the COMP market\n if (compBorrowState[address(cToken)].index == 0) {\n compBorrowState[address(cToken)] = CompMarketState({\n index: compInitialIndex,\n block: safe32(getBlockNumber(), \"block number exceeds 32 bits\")\n });\n\n // Add to allMarkets array if not already there\n if (compSupplyState[address(cToken)].index == 0) {\n allMarkets.push(cToken);\n }\n } else {\n // Update block number to ensure extra interest is not accrued during the prior period\n compBorrowState[address(cToken)].block = safe32(getBlockNumber(), \"block number exceeds 32 bits\");\n }\n }\n\n if (currentCompSpeed != compSpeed) {\n compBorrowSpeeds[address(cToken)] = compSpeed;\n emit CompBorrowSpeedUpdated(cToken, compSpeed);\n }\n }\n\n /**\n * @notice Accrue COMP to the market by updating the supply index\n * @param cToken The market whose supply index to update\n */\n function updateCompSupplyIndex(address cToken) internal {\n CompMarketState storage supplyState = compSupplyState[cToken];\n uint supplySpeed = compSupplySpeeds[cToken];\n uint blockNumber = getBlockNumber();\n uint deltaBlocks = sub_(blockNumber, uint(supplyState.block));\n if (deltaBlocks > 0 && supplySpeed > 0) {\n uint supplyTokens = CToken(cToken).totalSupply();\n uint compAccrued_ = mul_(deltaBlocks, supplySpeed);\n Double memory ratio = supplyTokens > 0 ? fraction(compAccrued_, supplyTokens) : Double({mantissa: 0});\n Double memory index = add_(Double({mantissa: supplyState.index}), ratio);\n compSupplyState[cToken] = CompMarketState({\n index: safe224(index.mantissa, \"new index exceeds 224 bits\"),\n block: safe32(blockNumber, \"block number exceeds 32 bits\")\n });\n } else if (deltaBlocks > 0 && supplyState.index > 0) {\n supplyState.block = safe32(blockNumber, \"block number exceeds 32 bits\");\n }\n }\n\n /**\n * @notice Accrue COMP to the market by updating the borrow index\n * @param cToken The market whose borrow index to update\n */\n function updateCompBorrowIndex(address cToken, Exp memory marketBorrowIndex) internal {\n CompMarketState storage borrowState = compBorrowState[cToken];\n uint borrowSpeed = compBorrowSpeeds[cToken];\n uint blockNumber = getBlockNumber();\n uint deltaBlocks = sub_(blockNumber, uint(borrowState.block));\n if (deltaBlocks > 0 && borrowSpeed > 0) {\n uint borrowAmount = div_(CToken(cToken).totalBorrows(), marketBorrowIndex);\n uint compAccrued_ = mul_(deltaBlocks, borrowSpeed);\n Double memory ratio = borrowAmount > 0 ? fraction(compAccrued_, borrowAmount) : Double({mantissa: 0});\n Double memory index = add_(Double({mantissa: borrowState.index}), ratio);\n compBorrowState[cToken] = CompMarketState({\n index: safe224(index.mantissa, \"new index exceeds 224 bits\"),\n block: safe32(blockNumber, \"block number exceeds 32 bits\")\n });\n } else if (deltaBlocks > 0 && borrowState.index > 0) {\n borrowState.block = safe32(blockNumber, \"block number exceeds 32 bits\");\n }\n }\n\n /**\n * @notice Calculate COMP accrued by a supplier and possibly transfer it to them\n * @param cToken The market in which the supplier is interacting\n * @param supplier The address of the supplier to distribute COMP to\n */\n function distributeSupplierComp(address cToken, address supplier) internal {\n CompMarketState storage supplyState = compSupplyState[cToken];\n Double memory supplyIndex = Double({mantissa: supplyState.index});\n Double memory supplierIndex = Double({mantissa: compSupplierIndex[cToken][supplier]});\n compSupplierIndex[cToken][supplier] = supplyIndex.mantissa;\n\n if (supplierIndex.mantissa == 0 && supplyIndex.mantissa > 0) {\n // Set the supplier reward index to the initial reward index if it has never been set before.\n // If it has never been set before, the supplier has not taken any action since the reward stream was set up, meaning they have been supplying the whole time, so their index should start at the beginning.\n supplierIndex.mantissa = compInitialIndex;\n }\n\n Double memory deltaIndex = sub_(supplyIndex, supplierIndex);\n uint supplierTokens = CToken(cToken).balanceOf(supplier);\n uint supplierDelta = mul_(supplierTokens, deltaIndex);\n uint supplierAccrued = add_(compAccrued[supplier], supplierDelta);\n compAccrued[supplier] = supplierAccrued;\n emit DistributedSupplierComp(CToken(cToken), supplier, supplierDelta, supplyIndex.mantissa);\n }\n\n /**\n * @notice Calculate COMP accrued by a borrower and possibly transfer it to them\n * @param cToken The market in which the borrower is interacting\n * @param borrower The address of the borrower to distribute COMP to\n */\n function distributeBorrowerComp(address cToken, address borrower, Exp memory marketBorrowIndex) internal {\n CompMarketState storage borrowState = compBorrowState[cToken];\n Double memory borrowIndex = Double({mantissa: borrowState.index});\n Double memory borrowerIndex = Double({mantissa: compBorrowerIndex[cToken][borrower]});\n compBorrowerIndex[cToken][borrower] = borrowIndex.mantissa;\n\n if (borrowerIndex.mantissa == 0 && borrowIndex.mantissa > 0) {\n // Set the borrower reward index to the initial reward index if it has never been set before.\n // If it has never been set before, the borrower has not taken any action since the reward stream was set up, meaning they have been borrowing the whole time, so their index should start at the beginning.\n // (Originally, Compound set this up so that borrowers would not begin to accrue COMP until after the first interaction with the protocol.)\n borrowerIndex.mantissa = compInitialIndex;\n }\n\n Double memory deltaIndex = sub_(borrowIndex, borrowerIndex);\n uint borrowerAmount = div_(CToken(cToken).borrowBalanceStored(borrower), marketBorrowIndex);\n uint borrowerDelta = mul_(borrowerAmount, deltaIndex);\n uint borrowerAccrued = add_(compAccrued[borrower], borrowerDelta);\n compAccrued[borrower] = borrowerAccrued;\n emit DistributedBorrowerComp(CToken(cToken), borrower, borrowerDelta, borrowIndex.mantissa);\n }\n\n /**\n * @notice Keeps the flywheel moving pre-mint and pre-redeem\n * @dev Called by the Comptroller\n * @param cToken The relevant market\n * @param supplier The minter/redeemer\n */\n function flywheelPreSupplierAction(address cToken, address supplier) external {\n if (compSupplyState[cToken].index > 0) {\n updateCompSupplyIndex(cToken);\n distributeSupplierComp(cToken, supplier);\n }\n }\n\n /**\n * @notice Keeps the flywheel moving pre-borrow and pre-repay\n * @dev Called by the Comptroller\n * @param cToken The relevant market\n * @param borrower The borrower\n */\n function flywheelPreBorrowerAction(address cToken, address borrower) external {\n if (compBorrowState[cToken].index > 0) {\n Exp memory borrowIndex = Exp({mantissa: CToken(cToken).borrowIndex()});\n updateCompBorrowIndex(cToken, borrowIndex);\n distributeBorrowerComp(cToken, borrower, borrowIndex);\n }\n }\n\n /**\n * @notice Keeps the flywheel moving pre-transfer and pre-seize\n * @dev Called by the Comptroller\n * @param cToken The relevant market\n * @param src The account which sources the tokens\n * @param dst The account which receives the tokens\n */\n function flywheelPreTransferAction(address cToken, address src, address dst) external {\n if (compSupplyState[cToken].index > 0) {\n updateCompSupplyIndex(cToken);\n distributeSupplierComp(cToken, src);\n distributeSupplierComp(cToken, dst);\n }\n }\n\n /**\n * @notice Calculate additional accrued COMP for a contributor since last accrual\n * @param contributor The address to calculate contributor rewards for\n */\n function updateContributorRewards(address contributor) public {\n uint compSpeed = compContributorSpeeds[contributor];\n uint blockNumber = getBlockNumber();\n uint deltaBlocks = sub_(blockNumber, lastContributorBlock[contributor]);\n if (deltaBlocks > 0 && compSpeed > 0) {\n uint newAccrued = mul_(deltaBlocks, compSpeed);\n uint contributorAccrued = add_(compAccrued[contributor], newAccrued);\n\n compAccrued[contributor] = contributorAccrued;\n lastContributorBlock[contributor] = blockNumber;\n }\n }\n\n /**\n * @notice Claim all the comp accrued by holder in all markets\n * @param holder The address to claim COMP for\n */\n function claimRewards(address holder) public {\n return claimRewards(holder, allMarkets);\n }\n\n /**\n * @notice Claim all the comp accrued by holder in the specified markets\n * @param holder The address to claim COMP for\n * @param cTokens The list of markets to claim COMP in\n */\n function claimRewards(address holder, CToken[] memory cTokens) public {\n address[] memory holders = new address[](1);\n holders[0] = holder;\n claimRewards(holders, cTokens, true, true);\n }\n\n /**\n * @notice Claim all comp accrued by the holders\n * @param holders The addresses to claim COMP for\n * @param cTokens The list of markets to claim COMP in\n * @param borrowers Whether or not to claim COMP earned by borrowing\n * @param suppliers Whether or not to claim COMP earned by supplying\n */\n function claimRewards(address[] memory holders, CToken[] memory cTokens, bool borrowers, bool suppliers) public {\n for (uint i = 0; i < cTokens.length; i++) {\n CToken cToken = cTokens[i];\n if (borrowers == true && compBorrowState[address(cToken)].index > 0) {\n Exp memory borrowIndex = Exp({mantissa: cToken.borrowIndex()});\n updateCompBorrowIndex(address(cToken), borrowIndex);\n for (uint j = 0; j < holders.length; j++) {\n distributeBorrowerComp(address(cToken), holders[j], borrowIndex);\n }\n }\n if (suppliers == true && compSupplyState[address(cToken)].index > 0) {\n updateCompSupplyIndex(address(cToken));\n for (uint j = 0; j < holders.length; j++) {\n distributeSupplierComp(address(cToken), holders[j]);\n }\n }\n }\n for (uint j = 0; j < holders.length; j++) {\n compAccrued[holders[j]] = grantCompInternal(holders[j], compAccrued[holders[j]]);\n }\n }\n\n /**\n * @notice Transfer COMP to the user\n * @dev Note: If there is not enough COMP, we do not perform the transfer all.\n * @param user The address of the user to transfer COMP to\n * @param amount The amount of COMP to (possibly) transfer\n * @return The amount of COMP which was NOT transferred to the user\n */\n function grantCompInternal(address user, uint amount) internal returns (uint) {\n EIP20NonStandardInterface comp = EIP20NonStandardInterface(rewardToken);\n uint compRemaining = comp.balanceOf(address(this));\n if (amount > 0 && amount <= compRemaining) {\n comp.transfer(user, amount);\n return 0;\n }\n return amount;\n }\n\n /*** Comp Distribution Admin ***/\n\n /**\n * @notice Transfer COMP to the recipient\n * @dev Note: If there is not enough COMP, we do not perform the transfer all.\n * @param recipient The address of the recipient to transfer COMP to\n * @param amount The amount of COMP to (possibly) transfer\n */\n function _grantComp(address recipient, uint amount) public {\n require(msg.sender == admin, \"only admin can grant comp\");\n uint amountLeft = grantCompInternal(recipient, amount);\n require(amountLeft == 0, \"insufficient comp for grant\");\n emit CompGranted(recipient, amount);\n }\n\n /**\n * @notice Set COMP speed for a single market\n * @param cToken The market whose COMP speed to update\n * @param compSpeed New COMP speed for market\n */\n function _setCompSupplySpeed(CToken cToken, uint compSpeed) public {\n require(msg.sender == admin, \"only admin can set comp speed\");\n setCompSupplySpeedInternal(cToken, compSpeed);\n }\n\n /**\n * @notice Set COMP speed for a single market\n * @param cToken The market whose COMP speed to update\n * @param compSpeed New COMP speed for market\n */\n function _setCompBorrowSpeed(CToken cToken, uint compSpeed) public {\n require(msg.sender == admin, \"only admin can set comp speed\");\n setCompBorrowSpeedInternal(cToken, compSpeed);\n }\n\n /**\n * @notice Set COMP borrow and supply speeds for the specified markets.\n * @param cTokens The markets whose COMP speed to update.\n * @param supplySpeeds New supply-side COMP speed for the corresponding market.\n * @param borrowSpeeds New borrow-side COMP speed for the corresponding market.\n */\n function _setCompSpeeds(CToken[] memory cTokens, uint[] memory supplySpeeds, uint[] memory borrowSpeeds) public {\n require(msg.sender == admin, \"only admin can set comp speed\");\n\n uint numTokens = cTokens.length;\n require(numTokens == supplySpeeds.length && numTokens == borrowSpeeds.length, \"RewardsDistributor::_setCompSpeeds invalid input\");\n\n for (uint i = 0; i < numTokens; ++i) {\n setCompSupplySpeedInternal(cTokens[i], supplySpeeds[i]);\n setCompBorrowSpeedInternal(cTokens[i], borrowSpeeds[i]);\n }\n }\n\n /**\n * @notice Set COMP speed for a single contributor\n * @param contributor The contributor whose COMP speed to update\n * @param compSpeed New COMP speed for contributor\n */\n function _setContributorCompSpeed(address contributor, uint compSpeed) public {\n require(msg.sender == admin, \"only admin can set comp speed\");\n\n // note that COMP speed could be set to 0 to halt liquidity rewards for a contributor\n updateContributorRewards(contributor);\n if (compSpeed == 0) {\n // release storage\n delete lastContributorBlock[contributor];\n } else {\n lastContributorBlock[contributor] = getBlockNumber();\n }\n compContributorSpeeds[contributor] = compSpeed;\n\n emit ContributorCompSpeedUpdated(contributor, compSpeed);\n }\n\n /*** Helper Functions */\n\n function getBlockNumber() public view returns (uint) {\n return block.number;\n }\n\n /**\n * @notice Returns an array of all markets.\n */\n function getAllMarkets() external view returns (CToken[] memory) {\n return allMarkets;\n }\n}\n"},"contracts/Comptroller.sol":{"content":"pragma solidity 0.5.17;\n\nimport \"./CToken.sol\";\nimport \"./CErc20.sol\";\nimport \"./ErrorReporter.sol\";\nimport \"./Exponential.sol\";\nimport \"./PriceOracle.sol\";\nimport \"./ComptrollerInterface.sol\";\nimport \"./ComptrollerStorage.sol\";\nimport \"./Unitroller.sol\";\nimport \"./RewardsDistributorDelegate.sol\";\n\n/**\n * @title Compound's Comptroller Contract\n * @author Compound\n * @dev This contract should not to be deployed alone; instead, deploy `Unitroller` (proxy contract) on top of this `Comptroller` (logic/implementation contract).\n */\ncontract Comptroller is ComptrollerV3Storage, ComptrollerInterface, ComptrollerErrorReporter, Exponential {\n /// @notice Emitted when an admin supports a market\n event MarketListed(CToken cToken);\n\n /// @notice Emitted when an admin unsupports a market\n event MarketUnlisted(CToken cToken);\n\n /// @notice Emitted when an account enters a market\n event MarketEntered(CToken cToken, address account);\n\n /// @notice Emitted when an account exits a market\n event MarketExited(CToken cToken, address account);\n\n /// @notice Emitted when close factor is changed by admin\n event NewCloseFactor(uint oldCloseFactorMantissa, uint newCloseFactorMantissa);\n\n /// @notice Emitted when a collateral factor is changed by admin\n event NewCollateralFactor(CToken cToken, uint oldCollateralFactorMantissa, uint newCollateralFactorMantissa);\n\n /// @notice Emitted when liquidation incentive is changed by admin\n event NewLiquidationIncentive(uint oldLiquidationIncentiveMantissa, uint newLiquidationIncentiveMantissa);\n\n /// @notice Emitted when price oracle is changed\n event NewPriceOracle(PriceOracle oldPriceOracle, PriceOracle newPriceOracle);\n\n /// @notice Emitted when pause guardian is changed\n event NewPauseGuardian(address oldPauseGuardian, address newPauseGuardian);\n\n /// @notice Emitted when an action is paused globally\n event ActionPaused(string action, bool pauseState);\n\n /// @notice Emitted when an action is paused on a market\n event ActionPaused(CToken cToken, string action, bool pauseState);\n\n /// @notice Emitted when the whitelist enforcement is changed\n event WhitelistEnforcementChanged(bool enforce);\n\n /// @notice Emitted when auto implementations are toggled\n event AutoImplementationsToggled(bool enabled);\n\n /// @notice Emitted when supply cap for a cToken is changed\n event NewSupplyCap(CToken indexed cToken, uint newSupplyCap);\n\n /// @notice Emitted when borrow cap for a cToken is changed\n event NewBorrowCap(CToken indexed cToken, uint newBorrowCap);\n\n /// @notice Emitted when borrow cap guardian is changed\n event NewBorrowCapGuardian(address oldBorrowCapGuardian, address newBorrowCapGuardian);\n\n /// @notice Emitted when a new RewardsDistributor contract is added to hooks\n event AddedRewardsDistributor(address rewardsDistributor);\n\n // closeFactorMantissa must be strictly greater than this value\n uint internal constant closeFactorMinMantissa = 0.05e18; // 0.05\n\n // closeFactorMantissa must not exceed this value\n uint internal constant closeFactorMaxMantissa = 0.9e18; // 0.9\n\n // No collateralFactorMantissa may exceed this value\n uint internal constant collateralFactorMaxMantissa = 0.9e18; // 0.9\n\n // liquidationIncentiveMantissa must be no less than this value\n uint internal constant liquidationIncentiveMinMantissa = 1.0e18; // 1.0\n\n // liquidationIncentiveMantissa must be no greater than this value\n uint internal constant liquidationIncentiveMaxMantissa = 1.5e18; // 1.5\n\n /*** Assets You Are In ***/\n\n /**\n * @notice Returns the assets an account has entered\n * @param account The address of the account to pull assets for\n * @return A dynamic list with the assets the account has entered\n */\n function getAssetsIn(address account) external view returns (CToken[] memory) {\n CToken[] memory assetsIn = accountAssets[account];\n\n return assetsIn;\n }\n\n /**\n * @notice Returns whether the given account is entered in the given asset\n * @param account The address of the account to check\n * @param cToken The cToken to check\n * @return True if the account is in the asset, otherwise false.\n */\n function checkMembership(address account, CToken cToken) external view returns (bool) {\n return markets[address(cToken)].accountMembership[account];\n }\n\n /**\n * @notice Add assets to be included in account liquidity calculation\n * @param cTokens The list of addresses of the cToken markets to be enabled\n * @return Success indicator for whether each corresponding market was entered\n */\n function enterMarkets(address[] memory cTokens) public returns (uint[] memory) {\n uint len = cTokens.length;\n\n uint[] memory results = new uint[](len);\n for (uint i = 0; i < len; i++) {\n CToken cToken = CToken(cTokens[i]);\n\n results[i] = uint(addToMarketInternal(cToken, msg.sender));\n }\n\n return results;\n }\n\n /**\n * @notice Add the market to the borrower's \"assets in\" for liquidity calculations\n * @param cToken The market to enter\n * @param borrower The address of the account to modify\n * @return Success indicator for whether the market was entered\n */\n function addToMarketInternal(CToken cToken, address borrower) internal returns (Error) {\n Market storage marketToJoin = markets[address(cToken)];\n\n if (!marketToJoin.isListed) {\n // market is not listed, cannot join\n return Error.MARKET_NOT_LISTED;\n }\n\n if (marketToJoin.accountMembership[borrower] == true) {\n // already joined\n return Error.NO_ERROR;\n }\n\n // survived the gauntlet, add to list\n // NOTE: we store these somewhat redundantly as a significant optimization\n // this avoids having to iterate through the list for the most common use cases\n // that is, only when we need to perform liquidity checks\n // and not whenever we want to check if an account is in a particular market\n marketToJoin.accountMembership[borrower] = true;\n accountAssets[borrower].push(cToken);\n \n // Add to allBorrowers\n if (!borrowers[borrower]) {\n allBorrowers.push(borrower);\n borrowers[borrower] = true;\n borrowerIndexes[borrower] = allBorrowers.length - 1;\n }\n\n emit MarketEntered(cToken, borrower);\n\n return Error.NO_ERROR;\n }\n\n /**\n * @notice Removes asset from sender's account liquidity calculation\n * @dev Sender must not have an outstanding borrow balance in the asset,\n * or be providing neccessary collateral for an outstanding borrow.\n * @param cTokenAddress The address of the asset to be removed\n * @return Whether or not the account successfully exited the market\n */\n function exitMarket(address cTokenAddress) external returns (uint) {\n CToken cToken = CToken(cTokenAddress);\n /* Get sender tokensHeld and amountOwed underlying from the cToken */\n (uint oErr, uint tokensHeld, uint amountOwed, ) = cToken.getAccountSnapshot(msg.sender);\n require(oErr == 0, \"exitMarket: getAccountSnapshot failed\"); // semi-opaque error code\n\n /* Fail if the sender has a borrow balance */\n if (amountOwed != 0) {\n return fail(Error.NONZERO_BORROW_BALANCE, FailureInfo.EXIT_MARKET_BALANCE_OWED);\n }\n\n /* Fail if the sender is not permitted to redeem all of their tokens */\n uint allowed = redeemAllowedInternal(cTokenAddress, msg.sender, tokensHeld);\n if (allowed != 0) {\n return failOpaque(Error.REJECTION, FailureInfo.EXIT_MARKET_REJECTION, allowed);\n }\n\n Market storage marketToExit = markets[address(cToken)];\n\n /* Return true if the sender is not already ‘in’ the market */\n if (!marketToExit.accountMembership[msg.sender]) {\n return uint(Error.NO_ERROR);\n }\n\n /* Set cToken account membership to false */\n delete marketToExit.accountMembership[msg.sender];\n\n /* Delete cToken from the account’s list of assets */\n // load into memory for faster iteration\n CToken[] memory userAssetList = accountAssets[msg.sender];\n uint len = userAssetList.length;\n uint assetIndex = len;\n for (uint i = 0; i < len; i++) {\n if (userAssetList[i] == cToken) {\n assetIndex = i;\n break;\n }\n }\n\n // We *must* have found the asset in the list or our redundant data structure is broken\n assert(assetIndex < len);\n\n // copy last item in list to location of item to be removed, reduce length by 1\n CToken[] storage storedList = accountAssets[msg.sender];\n storedList[assetIndex] = storedList[storedList.length - 1];\n storedList.length--;\n\n // If the user has exited all markets, remove them from the `allBorrowers` array\n if (storedList.length == 0) {\n uint256 borrowerIndex = borrowerIndexes[msg.sender];\n\n // If borrower not at the end of the borrower array, replace it with the item at the end of the borrower array\n if (borrowerIndex < allBorrowers.length - 1) {\n address lastElement = allBorrowers[allBorrowers.length - 1];\n allBorrowers[borrowerIndex] = lastElement; // Copy last item in list to location of item to be removed\n borrowerIndexes[lastElement] = borrowerIndex; // Set borrower index of moved item to correct index\n }\n\n // Remove the last element of the borrower array\n allBorrowers.length--; // Reduce length by 1\n borrowerIndexes[msg.sender] = 0; // Reset sender borrower index to 0 for a gas refund\n borrowers[msg.sender] = false; // Tell the contract that the sender is no longer a borrower (so it knows to add the borrower back if they enter a market in the future)\n }\n\n emit MarketExited(cToken, msg.sender);\n\n return uint(Error.NO_ERROR);\n }\n\n /*** Policy Hooks ***/\n\n /**\n * @notice Checks if the account should be allowed to mint tokens in the given market\n * @param cToken The market to verify the mint against\n * @param minter The account which would get the minted tokens\n * @param mintAmount The amount of underlying being supplied to the market in exchange for tokens\n * @return 0 if the mint is allowed, otherwise a semi-opaque error code (See ErrorReporter.sol)\n */\n function mintAllowed(address cToken, address minter, uint mintAmount) external returns (uint) {\n // Pausing is a very serious situation - we revert to sound the alarms\n require(!mintGuardianPaused[cToken], \"mint is paused\");\n\n // Shh - currently unused\n minter;\n mintAmount;\n\n // Make sure market is listed\n if (!markets[cToken].isListed) {\n return uint(Error.MARKET_NOT_LISTED);\n }\n \n // Make sure minter is whitelisted\n if (enforceWhitelist && !whitelist[minter]) {\n return uint(Error.SUPPLIER_NOT_WHITELISTED);\n }\n\n // Check supply cap\n uint supplyCap = supplyCaps[cToken];\n // Supply cap of 0 corresponds to unlimited supplying\n if (supplyCap != 0) {\n uint totalCash = CToken(cToken).getCash();\n uint totalBorrows = CToken(cToken).totalBorrows();\n uint totalReserves = CToken(cToken).totalReserves();\n uint totalFuseFees = CToken(cToken).totalFuseFees();\n uint totalAdminFees = CToken(cToken).totalAdminFees();\n\n // totalUnderlyingSupply = totalCash + totalBorrows - (totalReserves + totalFuseFees + totalAdminFees)\n (MathError mathErr, uint totalUnderlyingSupply) = addThenSubUInt(totalCash, totalBorrows, add_(add_(totalReserves, totalFuseFees), totalAdminFees));\n if (mathErr != MathError.NO_ERROR) return uint(Error.MATH_ERROR);\n\n uint nextTotalUnderlyingSupply;\n (mathErr, nextTotalUnderlyingSupply) = addUInt(totalUnderlyingSupply, mintAmount);\n if (mathErr != MathError.NO_ERROR) return uint(Error.MATH_ERROR);\n\n require(nextTotalUnderlyingSupply < supplyCap, \"market supply cap reached\");\n }\n\n // Keep the flywheel moving\n flywheelPreSupplierAction(cToken, minter);\n\n return uint(Error.NO_ERROR);\n }\n\n /**\n * @notice Validates mint and reverts on rejection. May emit logs.\n * @param cToken Asset being minted\n * @param minter The address minting the tokens\n * @param actualMintAmount The amount of the underlying asset being minted\n * @param mintTokens The number of tokens being minted\n */\n function mintVerify(address cToken, address minter, uint actualMintAmount, uint mintTokens) external {\n // Shh - currently unused\n cToken;\n minter;\n actualMintAmount;\n mintTokens;\n\n // Shh - we don't ever want this hook to be marked pure\n if (false) {\n maxAssets = maxAssets;\n }\n\n // Add minter to suppliers mapping\n suppliers[minter] = true;\n }\n\n /**\n * @notice Checks if the account should be allowed to redeem tokens in the given market\n * @param cToken The market to verify the redeem against\n * @param redeemer The account which would redeem the tokens\n * @param redeemTokens The number of cTokens to exchange for the underlying asset in the market\n * @return 0 if the redeem is allowed, otherwise a semi-opaque error code (See ErrorReporter.sol)\n */\n function redeemAllowed(address cToken, address redeemer, uint redeemTokens) external returns (uint) {\n uint allowed = redeemAllowedInternal(cToken, redeemer, redeemTokens);\n if (allowed != uint(Error.NO_ERROR)) {\n return allowed;\n }\n\n // Keep the flywheel moving\n flywheelPreSupplierAction(cToken, redeemer);\n\n return uint(Error.NO_ERROR);\n }\n\n function redeemAllowedInternal(address cToken, address redeemer, uint redeemTokens) internal view returns (uint) {\n if (!markets[cToken].isListed) {\n return uint(Error.MARKET_NOT_LISTED);\n }\n\n /* If the redeemer is not 'in' the market, then we can bypass the liquidity check */\n if (!markets[cToken].accountMembership[redeemer]) {\n return uint(Error.NO_ERROR);\n }\n\n /* Otherwise, perform a hypothetical liquidity check to guard against shortfall */\n (Error err, , uint shortfall) = getHypotheticalAccountLiquidityInternal(redeemer, CToken(cToken), redeemTokens, 0);\n if (err != Error.NO_ERROR) {\n return uint(err);\n }\n if (shortfall > 0) {\n return uint(Error.INSUFFICIENT_LIQUIDITY);\n }\n\n return uint(Error.NO_ERROR);\n }\n\n /**\n * @notice Validates redeem and reverts on rejection. May emit logs.\n * @param cToken Asset being redeemed\n * @param redeemer The address redeeming the tokens\n * @param redeemAmount The amount of the underlying asset being redeemed\n * @param redeemTokens The number of tokens being redeemed\n */\n function redeemVerify(address cToken, address redeemer, uint redeemAmount, uint redeemTokens) external {\n // Shh - currently unused\n cToken;\n redeemer;\n\n // Require tokens is zero or amount is also zero\n if (redeemTokens == 0 && redeemAmount > 0) {\n revert(\"redeemTokens zero\");\n }\n }\n\n /**\n * @notice Checks if the account should be allowed to borrow the underlying asset of the given market\n * @param cToken The market to verify the borrow against\n * @param borrower The account which would borrow the asset\n * @param borrowAmount The amount of underlying the account would borrow\n * @return 0 if the borrow is allowed, otherwise a semi-opaque error code (See ErrorReporter.sol)\n */\n function borrowAllowed(address cToken, address borrower, uint borrowAmount) external returns (uint) {\n // Pausing is a very serious situation - we revert to sound the alarms\n require(!borrowGuardianPaused[cToken], \"borrow is paused\");\n\n // Make sure market is listed\n if (!markets[cToken].isListed) {\n return uint(Error.MARKET_NOT_LISTED);\n }\n\n if (!markets[cToken].accountMembership[borrower]) {\n // only cTokens may call borrowAllowed if borrower not in market\n require(msg.sender == cToken, \"sender must be cToken\");\n\n // attempt to add borrower to the market\n Error err = addToMarketInternal(CToken(msg.sender), borrower);\n if (err != Error.NO_ERROR) {\n return uint(err);\n }\n\n // it should be impossible to break the important invariant\n assert(markets[cToken].accountMembership[borrower]);\n }\n\n // Make sure oracle price is available\n if (oracle.getUnderlyingPrice(CToken(cToken)) == 0) {\n return uint(Error.PRICE_ERROR);\n }\n \n // Make sure borrower is whitelisted\n if (enforceWhitelist && !whitelist[borrower]) {\n return uint(Error.SUPPLIER_NOT_WHITELISTED);\n }\n\n // Check borrow cap\n uint borrowCap = borrowCaps[cToken];\n // Borrow cap of 0 corresponds to unlimited borrowing\n if (borrowCap != 0) {\n uint totalBorrows = CToken(cToken).totalBorrows();\n (MathError mathErr, uint nextTotalBorrows) = addUInt(totalBorrows, borrowAmount);\n if (mathErr != MathError.NO_ERROR) return uint(Error.MATH_ERROR);\n require(nextTotalBorrows < borrowCap, \"market borrow cap reached\");\n }\n\n // Keep the flywheel moving\n flywheelPreBorrowerAction(cToken, borrower);\n\n // Perform a hypothetical liquidity check to guard against shortfall\n (Error err, , uint shortfall) = getHypotheticalAccountLiquidityInternal(borrower, CToken(cToken), 0, borrowAmount);\n if (err != Error.NO_ERROR) {\n return uint(err);\n }\n if (shortfall > 0) {\n return uint(Error.INSUFFICIENT_LIQUIDITY);\n }\n\n return uint(Error.NO_ERROR);\n }\n\n /**\n * @notice Checks if the account should be allowed to borrow the underlying asset of the given market\n * @param cToken Asset whose underlying is being borrowed\n * @param accountBorrowsNew The user's new borrow balance of the underlying asset\n */\n function borrowWithinLimits(address cToken, uint accountBorrowsNew) external returns (uint) {\n // Check if min borrow exists\n uint minBorrowEth = fuseAdmin.minBorrowEth();\n\n if (minBorrowEth > 0) {\n // Get new underlying borrow balance of account for this cToken\n uint oraclePriceMantissa = oracle.getUnderlyingPrice(CToken(cToken));\n if (oraclePriceMantissa == 0) return uint(Error.PRICE_ERROR);\n (MathError mathErr, uint borrowBalanceEth) = mulScalarTruncate(Exp({mantissa: oraclePriceMantissa}), accountBorrowsNew);\n if (mathErr != MathError.NO_ERROR) return uint(Error.MATH_ERROR);\n\n // Check against min borrow\n if (borrowBalanceEth < minBorrowEth) return uint(Error.BORROW_BELOW_MIN);\n }\n\n // Return no error\n return uint(Error.NO_ERROR);\n }\n\n /**\n * @notice Checks if the account should be allowed to borrow the underlying asset of the given market\n * @param cToken Asset whose underlying is being borrowed\n * @param exchangeRateMantissa Underlying/cToken exchange rate\n * @param accountTokens Initial account cToken balance\n * @param accountTokens Underlying amount to mint\n */\n function mintWithinLimits(address cToken, uint exchangeRateMantissa, uint accountTokens, uint mintAmount) external returns (uint) {\n // Return no error\n return uint(Error.NO_ERROR);\n }\n\n /**\n * @notice Validates borrow and reverts on rejection. May emit logs.\n * @param cToken Asset whose underlying is being borrowed\n * @param borrower The address borrowing the underlying\n * @param borrowAmount The amount of the underlying asset requested to borrow\n */\n function borrowVerify(address cToken, address borrower, uint borrowAmount) external {\n // Shh - currently unused\n cToken;\n borrower;\n borrowAmount;\n\n // Shh - we don't ever want this hook to be marked pure\n if (false) {\n maxAssets = maxAssets;\n }\n }\n\n /**\n * @notice Checks if the account should be allowed to repay a borrow in the given market\n * @param cToken The market to verify the repay against\n * @param payer The account which would repay the asset\n * @param borrower The account which would borrowed the asset\n * @param repayAmount The amount of the underlying asset the account would repay\n * @return 0 if the repay is allowed, otherwise a semi-opaque error code (See ErrorReporter.sol)\n */\n function repayBorrowAllowed(\n address cToken,\n address payer,\n address borrower,\n uint repayAmount) external returns (uint) {\n // Shh - currently unused\n payer;\n borrower;\n repayAmount;\n\n // Make sure market is listed\n if (!markets[cToken].isListed) {\n return uint(Error.MARKET_NOT_LISTED);\n }\n\n // Keep the flywheel moving\n flywheelPreBorrowerAction(cToken, borrower);\n\n return uint(Error.NO_ERROR);\n }\n\n /**\n * @notice Validates repayBorrow and reverts on rejection. May emit logs.\n * @param cToken Asset being repaid\n * @param payer The address repaying the borrow\n * @param borrower The address of the borrower\n * @param actualRepayAmount The amount of underlying being repaid\n */\n function repayBorrowVerify(\n address cToken,\n address payer,\n address borrower,\n uint actualRepayAmount,\n uint borrowerIndex) external {\n // Shh - currently unused\n cToken;\n payer;\n borrower;\n actualRepayAmount;\n borrowerIndex;\n\n // Shh - we don't ever want this hook to be marked pure\n if (false) {\n maxAssets = maxAssets;\n }\n }\n\n /**\n * @notice Checks if the liquidation should be allowed to occur\n * @param cTokenBorrowed Asset which was borrowed by the borrower\n * @param cTokenCollateral Asset which was used as collateral and will be seized\n * @param liquidator The address repaying the borrow and seizing the collateral\n * @param borrower The address of the borrower\n * @param repayAmount The amount of underlying being repaid\n */\n function liquidateBorrowAllowed(\n address cTokenBorrowed,\n address cTokenCollateral,\n address liquidator,\n address borrower,\n uint repayAmount) external returns (uint) {\n // Shh - currently unused\n liquidator;\n\n // Make sure markets are listed\n if (!markets[cTokenBorrowed].isListed || !markets[cTokenCollateral].isListed) {\n return uint(Error.MARKET_NOT_LISTED);\n }\n\n // Get borrowers's underlying borrow balance\n uint borrowBalance = CToken(cTokenBorrowed).borrowBalanceStored(borrower);\n\n /* allow accounts to be liquidated if the market is deprecated */\n if (isDeprecated(CToken(cTokenBorrowed))) {\n require(borrowBalance >= repayAmount, \"Can not repay more than the total borrow\");\n } else {\n /* The borrower must have shortfall in order to be liquidatable */\n (Error err, , uint shortfall) = getAccountLiquidityInternal(borrower);\n if (err != Error.NO_ERROR) {\n return uint(err);\n }\n\n if (shortfall == 0) {\n return uint(Error.INSUFFICIENT_SHORTFALL);\n }\n\n /* The liquidator may not repay more than what is allowed by the closeFactor */\n uint maxClose = mul_ScalarTruncate(Exp({mantissa: closeFactorMantissa}), borrowBalance);\n if (repayAmount > maxClose) {\n return uint(Error.TOO_MUCH_REPAY);\n }\n }\n\n return uint(Error.NO_ERROR);\n }\n\n /**\n * @notice Validates liquidateBorrow and reverts on rejection. May emit logs.\n * @param cTokenBorrowed Asset which was borrowed by the borrower\n * @param cTokenCollateral Asset which was used as collateral and will be seized\n * @param liquidator The address repaying the borrow and seizing the collateral\n * @param borrower The address of the borrower\n * @param actualRepayAmount The amount of underlying being repaid\n */\n function liquidateBorrowVerify(\n address cTokenBorrowed,\n address cTokenCollateral,\n address liquidator,\n address borrower,\n uint actualRepayAmount,\n uint seizeTokens) external {\n // Shh - currently unused\n cTokenBorrowed;\n cTokenCollateral;\n liquidator;\n borrower;\n actualRepayAmount;\n seizeTokens;\n\n // Shh - we don't ever want this hook to be marked pure\n if (false) {\n maxAssets = maxAssets;\n }\n }\n\n /**\n * @notice Checks if the seizing of assets should be allowed to occur\n * @param cTokenCollateral Asset which was used as collateral and will be seized\n * @param cTokenBorrowed Asset which was borrowed by the borrower\n * @param liquidator The address repaying the borrow and seizing the collateral\n * @param borrower The address of the borrower\n * @param seizeTokens The number of collateral tokens to seize\n */\n function seizeAllowed(\n address cTokenCollateral,\n address cTokenBorrowed,\n address liquidator,\n address borrower,\n uint seizeTokens) external returns (uint) {\n // Pausing is a very serious situation - we revert to sound the alarms\n require(!seizeGuardianPaused, \"seize is paused\");\n\n // Shh - currently unused\n liquidator;\n borrower;\n seizeTokens;\n\n // Make sure markets are listed\n if (!markets[cTokenCollateral].isListed || !markets[cTokenBorrowed].isListed) {\n return uint(Error.MARKET_NOT_LISTED);\n }\n\n // Make sure cToken Comptrollers are identical\n if (CToken(cTokenCollateral).comptroller() != CToken(cTokenBorrowed).comptroller()) {\n return uint(Error.COMPTROLLER_MISMATCH);\n }\n\n // Keep the flywheel moving\n flywheelPreTransferAction(cTokenCollateral, borrower, liquidator);\n\n return uint(Error.NO_ERROR);\n }\n\n /**\n * @notice Validates seize and reverts on rejection. May emit logs.\n * @param cTokenCollateral Asset which was used as collateral and will be seized\n * @param cTokenBorrowed Asset which was borrowed by the borrower\n * @param liquidator The address repaying the borrow and seizing the collateral\n * @param borrower The address of the borrower\n * @param seizeTokens The number of collateral tokens to seize\n */\n function seizeVerify(\n address cTokenCollateral,\n address cTokenBorrowed,\n address liquidator,\n address borrower,\n uint seizeTokens) external {\n // Shh - currently unused\n cTokenCollateral;\n cTokenBorrowed;\n liquidator;\n borrower;\n seizeTokens;\n\n // Shh - we don't ever want this hook to be marked pure\n if (false) {\n maxAssets = maxAssets;\n }\n }\n\n /**\n * @notice Checks if the account should be allowed to transfer tokens in the given market\n * @param cToken The market to verify the transfer against\n * @param src The account which sources the tokens\n * @param dst The account which receives the tokens\n * @param transferTokens The number of cTokens to transfer\n * @return 0 if the transfer is allowed, otherwise a semi-opaque error code (See ErrorReporter.sol)\n */\n function transferAllowed(address cToken, address src, address dst, uint transferTokens) external returns (uint) {\n // Pausing is a very serious situation - we revert to sound the alarms\n require(!transferGuardianPaused, \"transfer is paused\");\n\n // Currently the only consideration is whether or not\n // the src is allowed to redeem this many tokens\n uint allowed = redeemAllowedInternal(cToken, src, transferTokens);\n if (allowed != uint(Error.NO_ERROR)) {\n return allowed;\n }\n\n // Keep the flywheel moving\n flywheelPreTransferAction(cToken, src, dst);\n\n return uint(Error.NO_ERROR);\n }\n\n /**\n * @notice Validates transfer and reverts on rejection. May emit logs.\n * @param cToken Asset being transferred\n * @param src The account which sources the tokens\n * @param dst The account which receives the tokens\n * @param transferTokens The number of cTokens to transfer\n */\n function transferVerify(address cToken, address src, address dst, uint transferTokens) external {\n // Shh - currently unused\n cToken;\n src;\n dst;\n transferTokens;\n\n // Shh - we don't ever want this hook to be marked pure\n if (false) {\n maxAssets = maxAssets;\n }\n }\n\n /*** Flywheel Hooks ***/\n\n /**\n * @notice Keeps the flywheel moving pre-mint and pre-redeem\n * @param cToken The relevant market\n * @param supplier The minter/redeemer\n */\n function flywheelPreSupplierAction(address cToken, address supplier) internal {\n for (uint256 i = 0; i < rewardsDistributors.length; i++) RewardsDistributorDelegate(rewardsDistributors[i]).flywheelPreSupplierAction(cToken, supplier);\n }\n\n /**\n * @notice Keeps the flywheel moving pre-borrow and pre-repay\n * @param cToken The relevant market\n * @param borrower The borrower\n */\n function flywheelPreBorrowerAction(address cToken, address borrower) internal {\n for (uint256 i = 0; i < rewardsDistributors.length; i++) RewardsDistributorDelegate(rewardsDistributors[i]).flywheelPreBorrowerAction(cToken, borrower);\n }\n\n /**\n * @notice Keeps the flywheel moving pre-transfer and pre-seize\n * @param cToken The relevant market\n * @param src The account which sources the tokens\n * @param dst The account which receives the tokens\n */\n function flywheelPreTransferAction(address cToken, address src, address dst) internal {\n for (uint256 i = 0; i < rewardsDistributors.length; i++) RewardsDistributorDelegate(rewardsDistributors[i]).flywheelPreTransferAction(cToken, src, dst);\n }\n\n /*** Liquidity/Liquidation Calculations ***/\n\n /**\n * @dev Local vars for avoiding stack-depth limits in calculating account liquidity.\n * Note that `cTokenBalance` is the number of cTokens the account owns in the market,\n * whereas `borrowBalance` is the amount of underlying that the account has borrowed.\n */\n struct AccountLiquidityLocalVars {\n uint sumCollateral;\n uint sumBorrowPlusEffects;\n uint cTokenBalance;\n uint borrowBalance;\n uint exchangeRateMantissa;\n uint oraclePriceMantissa;\n Exp collateralFactor;\n Exp exchangeRate;\n Exp oraclePrice;\n Exp tokensToDenom;\n }\n\n /**\n * @notice Determine the current account liquidity wrt collateral requirements\n * @return (possible error code (semi-opaque),\n account liquidity in excess of collateral requirements,\n * account shortfall below collateral requirements)\n */\n function getAccountLiquidity(address account) public view returns (uint, uint, uint) {\n (Error err, uint liquidity, uint shortfall) = getHypotheticalAccountLiquidityInternal(account, CToken(0), 0, 0);\n\n return (uint(err), liquidity, shortfall);\n }\n\n /**\n * @notice Determine the current account liquidity wrt collateral requirements\n * @return (possible error code,\n account liquidity in excess of collateral requirements,\n * account shortfall below collateral requirements)\n */\n function getAccountLiquidityInternal(address account) internal view returns (Error, uint, uint) {\n return getHypotheticalAccountLiquidityInternal(account, CToken(0), 0, 0);\n }\n\n /**\n * @notice Determine what the account liquidity would be if the given amounts were redeemed/borrowed\n * @param cTokenModify The market to hypothetically redeem/borrow in\n * @param account The account to determine liquidity for\n * @param redeemTokens The number of tokens to hypothetically redeem\n * @param borrowAmount The amount of underlying to hypothetically borrow\n * @return (possible error code (semi-opaque),\n hypothetical account liquidity in excess of collateral requirements,\n * hypothetical account shortfall below collateral requirements)\n */\n function getHypotheticalAccountLiquidity(\n address account,\n address cTokenModify,\n uint redeemTokens,\n uint borrowAmount) public view returns (uint, uint, uint) {\n (Error err, uint liquidity, uint shortfall) = getHypotheticalAccountLiquidityInternal(account, CToken(cTokenModify), redeemTokens, borrowAmount);\n return (uint(err), liquidity, shortfall);\n }\n\n /**\n * @notice Determine what the account liquidity would be if the given amounts were redeemed/borrowed\n * @param cTokenModify The market to hypothetically redeem/borrow in\n * @param account The account to determine liquidity for\n * @param redeemTokens The number of tokens to hypothetically redeem\n * @param borrowAmount The amount of underlying to hypothetically borrow\n * @dev Note that we calculate the exchangeRateStored for each collateral cToken using stored data,\n * without calculating accumulated interest.\n * @return (possible error code,\n hypothetical account liquidity in excess of collateral requirements,\n * hypothetical account shortfall below collateral requirements)\n */\n function getHypotheticalAccountLiquidityInternal(\n address account,\n CToken cTokenModify,\n uint redeemTokens,\n uint borrowAmount) internal view returns (Error, uint, uint) {\n\n AccountLiquidityLocalVars memory vars; // Holds all our calculation results\n uint oErr;\n\n // For each asset the account is in\n CToken[] memory assets = accountAssets[account];\n for (uint i = 0; i < assets.length; i++) {\n CToken asset = assets[i];\n\n // Read the balances and exchange rate from the cToken\n (oErr, vars.cTokenBalance, vars.borrowBalance, vars.exchangeRateMantissa) = asset.getAccountSnapshot(account);\n if (oErr != 0) { // semi-opaque error code, we assume NO_ERROR == 0 is invariant between upgrades\n return (Error.SNAPSHOT_ERROR, 0, 0);\n }\n vars.collateralFactor = Exp({mantissa: markets[address(asset)].collateralFactorMantissa});\n vars.exchangeRate = Exp({mantissa: vars.exchangeRateMantissa});\n\n // Get the normalized price of the asset\n vars.oraclePriceMantissa = oracle.getUnderlyingPrice(asset);\n if (vars.oraclePriceMantissa == 0) {\n return (Error.PRICE_ERROR, 0, 0);\n }\n vars.oraclePrice = Exp({mantissa: vars.oraclePriceMantissa});\n\n // Pre-compute a conversion factor from tokens -> ether (normalized price value)\n vars.tokensToDenom = mul_(mul_(vars.collateralFactor, vars.exchangeRate), vars.oraclePrice);\n\n // sumCollateral += tokensToDenom * cTokenBalance\n vars.sumCollateral = mul_ScalarTruncateAddUInt(vars.tokensToDenom, vars.cTokenBalance, vars.sumCollateral);\n\n // sumBorrowPlusEffects += oraclePrice * borrowBalance\n vars.sumBorrowPlusEffects = mul_ScalarTruncateAddUInt(vars.oraclePrice, vars.borrowBalance, vars.sumBorrowPlusEffects);\n\n // Calculate effects of interacting with cTokenModify\n if (asset == cTokenModify) {\n // redeem effect\n // sumBorrowPlusEffects += tokensToDenom * redeemTokens\n vars.sumBorrowPlusEffects = mul_ScalarTruncateAddUInt(vars.tokensToDenom, redeemTokens, vars.sumBorrowPlusEffects);\n\n // borrow effect\n // sumBorrowPlusEffects += oraclePrice * borrowAmount\n vars.sumBorrowPlusEffects = mul_ScalarTruncateAddUInt(vars.oraclePrice, borrowAmount, vars.sumBorrowPlusEffects);\n }\n }\n\n // These are safe, as the underflow condition is checked first\n if (vars.sumCollateral > vars.sumBorrowPlusEffects) {\n return (Error.NO_ERROR, vars.sumCollateral - vars.sumBorrowPlusEffects, 0);\n } else {\n return (Error.NO_ERROR, 0, vars.sumBorrowPlusEffects - vars.sumCollateral);\n }\n }\n\n /**\n * @notice Calculate number of tokens of collateral asset to seize given an underlying amount\n * @dev Used in liquidation (called in cToken.liquidateBorrowFresh)\n * @param cTokenBorrowed The address of the borrowed cToken\n * @param cTokenCollateral The address of the collateral cToken\n * @param actualRepayAmount The amount of cTokenBorrowed underlying to convert into cTokenCollateral tokens\n * @return (errorCode, number of cTokenCollateral tokens to be seized in a liquidation)\n */\n function liquidateCalculateSeizeTokens(address cTokenBorrowed, address cTokenCollateral, uint actualRepayAmount) external view returns (uint, uint) {\n /* Read oracle prices for borrowed and collateral markets */\n uint priceBorrowedMantissa = oracle.getUnderlyingPrice(CToken(cTokenBorrowed));\n uint priceCollateralMantissa = oracle.getUnderlyingPrice(CToken(cTokenCollateral));\n if (priceBorrowedMantissa == 0 || priceCollateralMantissa == 0) {\n return (uint(Error.PRICE_ERROR), 0);\n }\n\n /*\n * Get the exchange rate and calculate the number of collateral tokens to seize:\n * seizeAmount = actualRepayAmount * liquidationIncentive * priceBorrowed / priceCollateral\n * seizeTokens = seizeAmount / exchangeRate\n * = actualRepayAmount * (liquidationIncentive * priceBorrowed) / (priceCollateral * exchangeRate)\n */\n uint exchangeRateMantissa = CToken(cTokenCollateral).exchangeRateStored(); // Note: reverts on error\n uint seizeTokens;\n Exp memory numerator;\n Exp memory denominator;\n Exp memory ratio;\n\n numerator = mul_(Exp({mantissa: liquidationIncentiveMantissa}), Exp({mantissa: priceBorrowedMantissa}));\n denominator = mul_(Exp({mantissa: priceCollateralMantissa}), Exp({mantissa: exchangeRateMantissa}));\n ratio = div_(numerator, denominator);\n\n seizeTokens = mul_ScalarTruncate(ratio, actualRepayAmount);\n\n return (uint(Error.NO_ERROR), seizeTokens);\n }\n\n /*** Admin Functions ***/\n\n /**\n * @notice Add a RewardsDistributor contracts.\n * @dev Admin function to add a RewardsDistributor contract\n * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\n */\n function _addRewardsDistributor(address distributor) external returns (uint) {\n // Check caller is admin\n if (!hasAdminRights()) {\n return fail(Error.UNAUTHORIZED, FailureInfo.ADD_REWARDS_DISTRIBUTOR_OWNER_CHECK);\n }\n\n // Check marker method\n require(RewardsDistributorDelegate(distributor).isRewardsDistributor(), \"marker method returned false\");\n\n // Check for existing RewardsDistributor\n for (uint i = 0; i < rewardsDistributors.length; i++) require(distributor != rewardsDistributors[i], \"RewardsDistributor contract already added\");\n\n // Add RewardsDistributor to array\n rewardsDistributors.push(distributor);\n emit AddedRewardsDistributor(distributor);\n\n return uint(Error.NO_ERROR);\n }\n\n /**\n * @notice Sets the whitelist enforcement for the comptroller\n * @dev Admin function to set a new whitelist enforcement boolean\n * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\n */\n function _setWhitelistEnforcement(bool enforce) external returns (uint) {\n // Check caller is admin\n if (!hasAdminRights()) {\n return fail(Error.UNAUTHORIZED, FailureInfo.SET_WHITELIST_ENFORCEMENT_OWNER_CHECK);\n }\n\n // Check if `enforceWhitelist` already equals `enforce`\n if (enforceWhitelist == enforce) {\n return uint(Error.NO_ERROR);\n }\n\n // Set comptroller's `enforceWhitelist` to `enforce`\n enforceWhitelist = enforce;\n\n // Emit WhitelistEnforcementChanged(bool enforce);\n emit WhitelistEnforcementChanged(enforce);\n\n return uint(Error.NO_ERROR);\n }\n\n /**\n * @notice Sets the whitelist `statuses` for `suppliers`\n * @dev Admin function to set the whitelist `statuses` for `suppliers`\n * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\n */\n function _setWhitelistStatuses(address[] calldata suppliers, bool[] calldata statuses) external returns (uint) {\n // Check caller is admin\n if (!hasAdminRights()) {\n return fail(Error.UNAUTHORIZED, FailureInfo.SET_WHITELIST_STATUS_OWNER_CHECK);\n }\n\n // Set whitelist statuses for suppliers\n for (uint i = 0; i < suppliers.length; i++) {\n address supplier = suppliers[i];\n\n if (statuses[i]) {\n // If not already whitelisted, add to whitelist\n if (!whitelist[supplier]) {\n whitelist[supplier] = true;\n whitelistArray.push(supplier);\n whitelistIndexes[supplier] = whitelistArray.length - 1;\n }\n } else {\n // If whitelisted, remove from whitelist\n if (whitelist[supplier]) {\n uint256 supplierIndex = whitelistIndexes[supplier];\n\n // If supplier not at the end of the whitelist array, replace it with the item at the end of the whitelist array\n if (supplierIndex < whitelistArray.length - 1) {\n address lastElement = whitelistArray[whitelistArray.length - 1];\n whitelistArray[supplierIndex] = lastElement; // Copy last item in list to location of item to be removed\n whitelistIndexes[lastElement] = supplierIndex; // Set whitelist index of moved item to correct index\n }\n\n // Remove the last element of the whitelist array\n whitelistArray.length--; // Reduce length by 1\n whitelistIndexes[supplier] = 0; // Reset supplier whitelist index to 0 for a gas refund\n whitelist[supplier] = false; // Tell the contract that the supplier is no longer whitelisted\n }\n }\n }\n\n return uint(Error.NO_ERROR);\n }\n\n /**\n * @notice Sets a new price oracle for the comptroller\n * @dev Admin function to set a new price oracle\n * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\n */\n function _setPriceOracle(PriceOracle newOracle) public returns (uint) {\n // Check caller is admin\n if (!hasAdminRights()) {\n return fail(Error.UNAUTHORIZED, FailureInfo.SET_PRICE_ORACLE_OWNER_CHECK);\n }\n\n // Track the old oracle for the comptroller\n PriceOracle oldOracle = oracle;\n\n // Set comptroller's oracle to newOracle\n oracle = newOracle;\n\n // Emit NewPriceOracle(oldOracle, newOracle)\n emit NewPriceOracle(oldOracle, newOracle);\n\n return uint(Error.NO_ERROR);\n }\n\n /**\n * @notice Sets the closeFactor used when liquidating borrows\n * @dev Admin function to set closeFactor\n * @param newCloseFactorMantissa New close factor, scaled by 1e18\n * @return uint 0=success, otherwise a failure. (See ErrorReporter for details)\n */\n function _setCloseFactor(uint newCloseFactorMantissa) external returns (uint256) {\n // Check caller is admin\n if (!hasAdminRights()) {\n return fail(Error.UNAUTHORIZED, FailureInfo.SET_CLOSE_FACTOR_OWNER_CHECK);\n }\n\n // Check limits\n Exp memory newCloseFactorExp = Exp({mantissa: newCloseFactorMantissa});\n Exp memory lowLimit = Exp({mantissa: closeFactorMinMantissa});\n if (lessThanOrEqualExp(newCloseFactorExp, lowLimit)) {\n return fail(Error.INVALID_CLOSE_FACTOR, FailureInfo.SET_CLOSE_FACTOR_VALIDATION);\n }\n\n Exp memory highLimit = Exp({mantissa: closeFactorMaxMantissa});\n if (lessThanExp(highLimit, newCloseFactorExp)) {\n return fail(Error.INVALID_CLOSE_FACTOR, FailureInfo.SET_CLOSE_FACTOR_VALIDATION);\n }\n\n // Set pool close factor to new close factor, remember old value\n uint oldCloseFactorMantissa = closeFactorMantissa;\n closeFactorMantissa = newCloseFactorMantissa;\n\n // Emit event\n emit NewCloseFactor(oldCloseFactorMantissa, closeFactorMantissa);\n\n return uint(Error.NO_ERROR);\n }\n\n /**\n * @notice Sets the collateralFactor for a market\n * @dev Admin function to set per-market collateralFactor\n * @param cToken The market to set the factor on\n * @param newCollateralFactorMantissa The new collateral factor, scaled by 1e18\n * @return uint 0=success, otherwise a failure. (See ErrorReporter for details)\n */\n function _setCollateralFactor(CToken cToken, uint newCollateralFactorMantissa) public returns (uint256) {\n // Check caller is admin\n if (!hasAdminRights()) {\n return fail(Error.UNAUTHORIZED, FailureInfo.SET_COLLATERAL_FACTOR_OWNER_CHECK);\n }\n\n // Verify market is listed\n Market storage market = markets[address(cToken)];\n if (!market.isListed) {\n return fail(Error.MARKET_NOT_LISTED, FailureInfo.SET_COLLATERAL_FACTOR_NO_EXISTS);\n }\n\n Exp memory newCollateralFactorExp = Exp({mantissa: newCollateralFactorMantissa});\n\n // Check collateral factor <= 0.9\n Exp memory highLimit = Exp({mantissa: collateralFactorMaxMantissa});\n if (lessThanExp(highLimit, newCollateralFactorExp)) {\n return fail(Error.INVALID_COLLATERAL_FACTOR, FailureInfo.SET_COLLATERAL_FACTOR_VALIDATION);\n }\n\n // If collateral factor != 0, fail if price == 0\n if (newCollateralFactorMantissa != 0 && oracle.getUnderlyingPrice(cToken) == 0) {\n return fail(Error.PRICE_ERROR, FailureInfo.SET_COLLATERAL_FACTOR_WITHOUT_PRICE);\n }\n\n // Set market's collateral factor to new collateral factor, remember old value\n uint oldCollateralFactorMantissa = market.collateralFactorMantissa;\n market.collateralFactorMantissa = newCollateralFactorMantissa;\n\n // Emit event with asset, old collateral factor, and new collateral factor\n emit NewCollateralFactor(cToken, oldCollateralFactorMantissa, newCollateralFactorMantissa);\n\n return uint(Error.NO_ERROR);\n }\n\n /**\n * @notice Sets liquidationIncentive\n * @dev Admin function to set liquidationIncentive\n * @param newLiquidationIncentiveMantissa New liquidationIncentive scaled by 1e18\n * @return uint 0=success, otherwise a failure. (See ErrorReporter for details)\n */\n function _setLiquidationIncentive(uint newLiquidationIncentiveMantissa) external returns (uint) {\n // Check caller is admin\n if (!hasAdminRights()) {\n return fail(Error.UNAUTHORIZED, FailureInfo.SET_LIQUIDATION_INCENTIVE_OWNER_CHECK);\n }\n\n // Check de-scaled min <= newLiquidationIncentive <= max\n Exp memory newLiquidationIncentive = Exp({mantissa: newLiquidationIncentiveMantissa});\n Exp memory minLiquidationIncentive = Exp({mantissa: liquidationIncentiveMinMantissa});\n if (lessThanExp(newLiquidationIncentive, minLiquidationIncentive)) {\n return fail(Error.INVALID_LIQUIDATION_INCENTIVE, FailureInfo.SET_LIQUIDATION_INCENTIVE_VALIDATION);\n }\n\n Exp memory maxLiquidationIncentive = Exp({mantissa: liquidationIncentiveMaxMantissa});\n if (lessThanExp(maxLiquidationIncentive, newLiquidationIncentive)) {\n return fail(Error.INVALID_LIQUIDATION_INCENTIVE, FailureInfo.SET_LIQUIDATION_INCENTIVE_VALIDATION);\n }\n\n // Save current value for use in log\n uint oldLiquidationIncentiveMantissa = liquidationIncentiveMantissa;\n\n // Set liquidation incentive to new incentive\n liquidationIncentiveMantissa = newLiquidationIncentiveMantissa;\n\n // Emit event with old incentive, new incentive\n emit NewLiquidationIncentive(oldLiquidationIncentiveMantissa, newLiquidationIncentiveMantissa);\n\n return uint(Error.NO_ERROR);\n }\n\n /**\n * @notice Add the market to the markets mapping and set it as listed\n * @dev Admin function to set isListed and add support for the market\n * @param cToken The address of the market (token) to list\n * @return uint 0=success, otherwise a failure. (See enum Error for details)\n */\n function _supportMarket(CToken cToken) internal returns (uint) {\n // Check caller is admin\n if (!hasAdminRights()) {\n return fail(Error.UNAUTHORIZED, FailureInfo.SUPPORT_MARKET_OWNER_CHECK);\n }\n\n // Is market already listed?\n if (markets[address(cToken)].isListed) {\n return fail(Error.MARKET_ALREADY_LISTED, FailureInfo.SUPPORT_MARKET_EXISTS);\n }\n\n // Sanity check to make sure its really a CToken\n require(cToken.isCToken(), \"marker method returned false\");\n\n // Check cToken.comptroller == this\n require(address(cToken.comptroller()) == address(this), \"Cannot support a market with a different Comptroller.\");\n\n // Make sure market is not already listed\n address underlying = cToken.isCEther() ? address(0) : CErc20(address(cToken)).underlying();\n\n if (address(cTokensByUnderlying[underlying]) != address(0)) {\n return fail(Error.MARKET_ALREADY_LISTED, FailureInfo.SUPPORT_MARKET_EXISTS);\n }\n\n // List market and emit event\n markets[address(cToken)] = Market({isListed: true, collateralFactorMantissa: 0});\n allMarkets.push(cToken);\n cTokensByUnderlying[underlying] = cToken;\n emit MarketListed(cToken);\n\n return uint(Error.NO_ERROR);\n }\n\n /**\n * @notice Deploy cToken, add the market to the markets mapping, and set it as listed and set the collateral factor\n * @dev Admin function to deploy cToken, set isListed, and add support for the market and set the collateral factor\n * @return uint 0=success, otherwise a failure. (See enum Error for details)\n */\n function _deployMarket(\n bool isCEther,\n bytes calldata constructorData,\n uint collateralFactorMantissa\n ) external returns (uint) {\n // Check caller is admin\n if (!hasAdminRights()) {\n return fail(Error.UNAUTHORIZED, FailureInfo.SUPPORT_MARKET_OWNER_CHECK);\n }\n\n // Temporarily enable Fuse admin rights for asset deployment (storing the original value)\n bool oldFuseAdminHasRights = fuseAdminHasRights;\n fuseAdminHasRights = true;\n\n // Deploy via Fuse admin\n CToken cToken = CToken(isCEther ? fuseAdmin.deployCEther(constructorData) : fuseAdmin.deployCErc20(constructorData));\n\n // Reset Fuse admin rights to the original value\n fuseAdminHasRights = oldFuseAdminHasRights;\n\n // Support market here in the Comptroller\n uint256 err = _supportMarket(cToken);\n\n // Set collateral factor\n return err == uint(Error.NO_ERROR) ? _setCollateralFactor(cToken, collateralFactorMantissa) : err;\n }\n\n /**\n * @notice Removed a market from the markets mapping and sets it as unlisted\n * @dev Admin function unset isListed and collateralFactorMantissa and unadd support for the market\n * @param cToken The address of the market (token) to unlist\n * @return uint 0=success, otherwise a failure. (See enum Error for details)\n */\n function _unsupportMarket(CToken cToken) external returns (uint) {\n // Check admin rights\n if (!hasAdminRights()) return fail(Error.UNAUTHORIZED, FailureInfo.UNSUPPORT_MARKET_OWNER_CHECK);\n\n // Check if market is already unlisted\n if (!markets[address(cToken)].isListed) return fail(Error.MARKET_NOT_LISTED, FailureInfo.UNSUPPORT_MARKET_DOES_NOT_EXIST);\n\n // Check if market is in use\n if (cToken.totalSupply() > 0) return fail(Error.NONZERO_TOTAL_SUPPLY, FailureInfo.UNSUPPORT_MARKET_IN_USE);\n\n // Unlist market\n delete markets[address(cToken)];\n \n /* Delete cToken from allMarkets */\n // load into memory for faster iteration\n CToken[] memory _allMarkets = allMarkets;\n uint len = _allMarkets.length;\n uint assetIndex = len;\n for (uint i = 0; i < len; i++) {\n if (_allMarkets[i] == cToken) {\n assetIndex = i;\n break;\n }\n }\n\n // We *must* have found the asset in the list or our redundant data structure is broken\n assert(assetIndex < len);\n\n // copy last item in list to location of item to be removed, reduce length by 1\n allMarkets[assetIndex] = allMarkets[allMarkets.length - 1];\n allMarkets.length--;\n\n cTokensByUnderlying[cToken.isCEther() ? address(0) : CErc20(address(cToken)).underlying()] = CToken(address(0));\n emit MarketUnlisted(cToken);\n\n return uint(Error.NO_ERROR);\n }\n\n /**\n * @notice Toggles the auto-implementation feature\n * @param enabled If the feature is to be enabled\n * @return uint 0=success, otherwise a failure. (See enum Error for details)\n */\n function _toggleAutoImplementations(bool enabled) public returns (uint) {\n if (!hasAdminRights()) {\n return fail(Error.UNAUTHORIZED, FailureInfo.TOGGLE_AUTO_IMPLEMENTATIONS_ENABLED_OWNER_CHECK);\n }\n\n // Return no error if already set to the desired value\n if (autoImplementation == enabled) return uint(Error.NO_ERROR);\n\n // Store autoImplementation with value enabled\n autoImplementation = enabled;\n\n // Emit AutoImplementationsToggled(enabled)\n emit AutoImplementationsToggled(enabled);\n\n return uint(Error.NO_ERROR);\n }\n\n /**\n * @notice Set the given supply caps for the given cToken markets. Supplying that brings total underlying supply to or above supply cap will revert.\n * @dev Admin or borrowCapGuardian function to set the supply caps. A supply cap of 0 corresponds to unlimited supplying.\n * @param cTokens The addresses of the markets (tokens) to change the supply caps for\n * @param newSupplyCaps The new supply cap values in underlying to be set. A value of 0 corresponds to unlimited supplying.\n */\n function _setMarketSupplyCaps(CToken[] calldata cTokens, uint[] calldata newSupplyCaps) external {\n \trequire(hasAdminRights() || msg.sender == borrowCapGuardian, \"only admin or borrow cap guardian can set supply caps\"); \n\n uint numMarkets = cTokens.length;\n uint numSupplyCaps = newSupplyCaps.length;\n\n require(numMarkets != 0 && numMarkets == numSupplyCaps, \"invalid input\");\n\n for(uint i = 0; i < numMarkets; i++) {\n supplyCaps[address(cTokens[i])] = newSupplyCaps[i];\n emit NewSupplyCap(cTokens[i], newSupplyCaps[i]);\n }\n }\n\n /**\n * @notice Set the given borrow caps for the given cToken markets. Borrowing that brings total borrows to or above borrow cap will revert.\n * @dev Admin or borrowCapGuardian function to set the borrow caps. A borrow cap of 0 corresponds to unlimited borrowing.\n * @param cTokens The addresses of the markets (tokens) to change the borrow caps for\n * @param newBorrowCaps The new borrow cap values in underlying to be set. A value of 0 corresponds to unlimited borrowing.\n */\n function _setMarketBorrowCaps(CToken[] calldata cTokens, uint[] calldata newBorrowCaps) external {\n \trequire(hasAdminRights() || msg.sender == borrowCapGuardian, \"only admin or borrow cap guardian can set borrow caps\"); \n\n uint numMarkets = cTokens.length;\n uint numBorrowCaps = newBorrowCaps.length;\n\n require(numMarkets != 0 && numMarkets == numBorrowCaps, \"invalid input\");\n\n for(uint i = 0; i < numMarkets; i++) {\n borrowCaps[address(cTokens[i])] = newBorrowCaps[i];\n emit NewBorrowCap(cTokens[i], newBorrowCaps[i]);\n }\n }\n\n /**\n * @notice Admin function to change the Borrow Cap Guardian\n * @param newBorrowCapGuardian The address of the new Borrow Cap Guardian\n */\n function _setBorrowCapGuardian(address newBorrowCapGuardian) external {\n require(hasAdminRights(), \"only admin can set borrow cap guardian\");\n\n // Save current value for inclusion in log\n address oldBorrowCapGuardian = borrowCapGuardian;\n\n // Store borrowCapGuardian with value newBorrowCapGuardian\n borrowCapGuardian = newBorrowCapGuardian;\n\n // Emit NewBorrowCapGuardian(OldBorrowCapGuardian, NewBorrowCapGuardian)\n emit NewBorrowCapGuardian(oldBorrowCapGuardian, newBorrowCapGuardian);\n }\n\n /**\n * @notice Admin function to change the Pause Guardian\n * @param newPauseGuardian The address of the new Pause Guardian\n * @return uint 0=success, otherwise a failure. (See enum Error for details)\n */\n function _setPauseGuardian(address newPauseGuardian) public returns (uint) {\n if (!hasAdminRights()) {\n return fail(Error.UNAUTHORIZED, FailureInfo.SET_PAUSE_GUARDIAN_OWNER_CHECK);\n }\n\n // Save current value for inclusion in log\n address oldPauseGuardian = pauseGuardian;\n\n // Store pauseGuardian with value newPauseGuardian\n pauseGuardian = newPauseGuardian;\n\n // Emit NewPauseGuardian(OldPauseGuardian, NewPauseGuardian)\n emit NewPauseGuardian(oldPauseGuardian, pauseGuardian);\n\n return uint(Error.NO_ERROR);\n }\n\n function _setMintPaused(CToken cToken, bool state) public returns (bool) {\n require(markets[address(cToken)].isListed, \"cannot pause a market that is not listed\");\n require(msg.sender == pauseGuardian || hasAdminRights(), \"only pause guardian and admin can pause\");\n require(hasAdminRights() || state == true, \"only admin can unpause\");\n\n mintGuardianPaused[address(cToken)] = state;\n emit ActionPaused(cToken, \"Mint\", state);\n return state;\n }\n\n function _setBorrowPaused(CToken cToken, bool state) public returns (bool) {\n require(markets[address(cToken)].isListed, \"cannot pause a market that is not listed\");\n require(msg.sender == pauseGuardian || hasAdminRights(), \"only pause guardian and admin can pause\");\n require(hasAdminRights() || state == true, \"only admin can unpause\");\n\n borrowGuardianPaused[address(cToken)] = state;\n emit ActionPaused(cToken, \"Borrow\", state);\n return state;\n }\n\n function _setTransferPaused(bool state) public returns (bool) {\n require(msg.sender == pauseGuardian || hasAdminRights(), \"only pause guardian and admin can pause\");\n require(hasAdminRights() || state == true, \"only admin can unpause\");\n\n transferGuardianPaused = state;\n emit ActionPaused(\"Transfer\", state);\n return state;\n }\n\n function _setSeizePaused(bool state) public returns (bool) {\n require(msg.sender == pauseGuardian || hasAdminRights(), \"only pause guardian and admin can pause\");\n require(hasAdminRights() || state == true, \"only admin can unpause\");\n\n seizeGuardianPaused = state;\n emit ActionPaused(\"Seize\", state);\n return state;\n }\n\n function _become(Unitroller unitroller) public {\n require((msg.sender == address(fuseAdmin) && unitroller.fuseAdminHasRights()) || (msg.sender == unitroller.admin() && unitroller.adminHasRights()), \"only unitroller admin can change brains\");\n\n uint changeStatus = unitroller._acceptImplementation();\n require(changeStatus == 0, \"change not authorized\");\n\n Comptroller(address(unitroller))._becomeImplementation();\n }\n\n function _becomeImplementation() external {\n require(msg.sender == comptrollerImplementation, \"only implementation may call _becomeImplementation\");\n\n if (!_notEnteredInitialized) {\n _notEntered = true;\n _notEnteredInitialized = true;\n }\n }\n\n /*** Helper Functions ***/\n\n /**\n * @notice Return all of the markets\n * @dev The automatic getter may be used to access an individual market.\n * @return The list of market addresses\n */\n function getAllMarkets() public view returns (CToken[] memory) {\n return allMarkets;\n }\n\n /**\n * @notice Return all of the borrowers\n * @dev The automatic getter may be used to access an individual borrower.\n * @return The list of borrower account addresses\n */\n function getAllBorrowers() public view returns (address[] memory) {\n return allBorrowers;\n }\n\n /**\n * @notice Return all of the whitelist\n * @dev The automatic getter may be used to access an individual whitelist status.\n * @return The list of borrower account addresses\n */\n function getWhitelist() external view returns (address[] memory) {\n return whitelistArray;\n }\n\n /**\n * @notice Returns an array of all RewardsDistributors\n */\n function getRewardsDistributors() external view returns (address[] memory) {\n return rewardsDistributors;\n }\n\n /**\n * @notice Returns true if the given cToken market has been deprecated\n * @dev All borrows in a deprecated cToken market can be immediately liquidated\n * @param cToken The market to check if deprecated\n */\n function isDeprecated(CToken cToken) public view returns (bool) {\n return\n markets[address(cToken)].collateralFactorMantissa == 0 && \n borrowGuardianPaused[address(cToken)] == true && \n add_(add_(cToken.reserveFactorMantissa(), cToken.adminFeeMantissa()), cToken.fuseFeeMantissa()) == 1e18\n ;\n }\n\n /*** Pool-Wide/Cross-Asset Reentrancy Prevention ***/\n\n /**\n * @dev Called by cTokens before a non-reentrant function for pool-wide reentrancy prevention.\n * Prevents pool-wide/cross-asset reentrancy exploits like AMP on Cream.\n */\n function _beforeNonReentrant() external {\n require(markets[msg.sender].isListed, \"Comptroller:_beforeNonReentrant: caller not listed as market\");\n require(_notEntered, \"re-entered across assets\");\n _notEntered = false;\n }\n\n /**\n * @dev Called by cTokens after a non-reentrant function for pool-wide reentrancy prevention.\n * Prevents pool-wide/cross-asset reentrancy exploits like AMP on Cream.\n */\n function _afterNonReentrant() external {\n require(markets[msg.sender].isListed, \"Comptroller:_afterNonReentrant: caller not listed as market\");\n _notEntered = true; // get a gas-refund post-Istanbul\n }\n}\n"},"contracts/CErc20.sol":{"content":"pragma solidity 0.5.17;\n\nimport \"./CToken.sol\";\n\ninterface CompLike {\n function delegate(address delegatee) external;\n}\n\n/**\n * @title Compound's CErc20 Contract\n * @notice CTokens which wrap an EIP-20 underlying\n * @dev This contract should not to be deployed on its own; instead, deploy `CErc20Delegator` (proxy contract) and `CErc20Delegate` (logic/implementation contract).\n * @author Compound\n */\ncontract CErc20 is CToken, CErc20Interface {\n /**\n * @notice Initialize the new money market\n * @param underlying_ The address of the underlying asset\n * @param comptroller_ The address of the Comptroller\n * @param interestRateModel_ The address of the interest rate model\n * @param name_ ERC-20 name of this token\n * @param symbol_ ERC-20 symbol of this token\n */\n function initialize(address underlying_,\n ComptrollerInterface comptroller_,\n InterestRateModel interestRateModel_,\n string memory name_,\n string memory symbol_,\n uint256 reserveFactorMantissa_,\n uint256 adminFeeMantissa_) public {\n // CToken initialize does the bulk of the work\n uint256 initialExchangeRateMantissa_ = 0.2e18;\n uint8 decimals_ = EIP20Interface(underlying_).decimals();\n super.initialize(comptroller_, interestRateModel_, initialExchangeRateMantissa_, name_, symbol_, decimals_, reserveFactorMantissa_, adminFeeMantissa_);\n\n // Set underlying and sanity check it\n underlying = underlying_;\n EIP20Interface(underlying).totalSupply();\n }\n\n /*** User Interface ***/\n\n /**\n * @notice Sender supplies assets into the market and receives cTokens in exchange\n * @dev Accrues interest whether or not the operation succeeds, unless reverted\n * @param mintAmount The amount of the underlying asset to supply\n * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\n */\n function mint(uint mintAmount) external returns (uint) {\n (uint err,) = mintInternal(mintAmount);\n return err;\n }\n\n /**\n * @notice Sender redeems cTokens in exchange for the underlying asset\n * @dev Accrues interest whether or not the operation succeeds, unless reverted\n * @param redeemTokens The number of cTokens to redeem into underlying\n * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\n */\n function redeem(uint redeemTokens) external returns (uint) {\n return redeemInternal(redeemTokens);\n }\n\n /**\n * @notice Sender redeems cTokens in exchange for a specified amount of underlying asset\n * @dev Accrues interest whether or not the operation succeeds, unless reverted\n * @param redeemAmount The amount of underlying to redeem\n * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\n */\n function redeemUnderlying(uint redeemAmount) external returns (uint) {\n return redeemUnderlyingInternal(redeemAmount);\n }\n\n /**\n * @notice Sender borrows assets from the protocol to their own address\n * @param borrowAmount The amount of the underlying asset to borrow\n * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\n */\n function borrow(uint borrowAmount) external returns (uint) {\n return borrowInternal(borrowAmount);\n }\n\n /**\n * @notice Sender repays their own borrow\n * @param repayAmount The amount to repay\n * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\n */\n function repayBorrow(uint repayAmount) external returns (uint) {\n (uint err,) = repayBorrowInternal(repayAmount);\n return err;\n }\n\n /**\n * @notice Sender repays a borrow belonging to borrower\n * @param borrower the account with the debt being payed off\n * @param repayAmount The amount to repay\n * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\n */\n function repayBorrowBehalf(address borrower, uint repayAmount) external returns (uint) {\n (uint err,) = repayBorrowBehalfInternal(borrower, repayAmount);\n return err;\n }\n\n /**\n * @notice The sender liquidates the borrowers collateral.\n * The collateral seized is transferred to the liquidator.\n * @param borrower The borrower of this cToken to be liquidated\n * @param repayAmount The amount of the underlying borrowed asset to repay\n * @param cTokenCollateral The market in which to seize collateral from the borrower\n * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\n */\n function liquidateBorrow(address borrower, uint repayAmount, CTokenInterface cTokenCollateral) external returns (uint) {\n (uint err,) = liquidateBorrowInternal(borrower, repayAmount, cTokenCollateral);\n return err;\n }\n\n /*** Safe Token ***/\n\n /**\n * @notice Gets balance of this contract in terms of the underlying\n * @dev This excludes the value of the current message, if any\n * @return The quantity of underlying tokens owned by this contract\n */\n function getCashPrior() internal view returns (uint) {\n EIP20Interface token = EIP20Interface(underlying);\n return token.balanceOf(address(this));\n }\n\n /**\n * @dev Similar to EIP20 transfer, except it handles a False result from `transferFrom` and reverts in that case.\n * This will revert due to insufficient balance or insufficient allowance.\n * This function returns the actual amount received,\n * which may be less than `amount` if there is a fee attached to the transfer.\n *\n * Note: This wrapper safely handles non-standard ERC-20 tokens that do not return a value.\n * See here: https://medium.com/coinmonks/missing-return-value-bug-at-least-130-tokens-affected-d67bf08521ca\n */\n function doTransferIn(address from, uint amount) internal returns (uint) {\n uint balanceBefore = EIP20Interface(underlying).balanceOf(address(this));\n _callOptionalReturn(abi.encodeWithSelector(EIP20NonStandardInterface(underlying).transferFrom.selector, from, address(this), amount), \"TOKEN_TRANSFER_IN_FAILED\");\n\n // Calculate the amount that was *actually* transferred\n uint balanceAfter = EIP20Interface(underlying).balanceOf(address(this));\n require(balanceAfter >= balanceBefore, \"TOKEN_TRANSFER_IN_OVERFLOW\");\n return balanceAfter - balanceBefore; // underflow already checked above, just subtract\n }\n\n /**\n * @dev Similar to EIP20 transfer, except it handles a False success from `transfer` and returns an explanatory\n * error code rather than reverting. If caller has not called checked protocol's balance, this may revert due to\n * insufficient cash held in this contract. If caller has checked protocol's balance prior to this call, and verified\n * it is >= amount, this should not revert in normal conditions.\n *\n * Note: This wrapper safely handles non-standard ERC-20 tokens that do not return a value.\n * See here: https://medium.com/coinmonks/missing-return-value-bug-at-least-130-tokens-affected-d67bf08521ca\n */\n function doTransferOut(address payable to, uint amount) internal {\n _callOptionalReturn(abi.encodeWithSelector(EIP20NonStandardInterface(underlying).transfer.selector, to, amount), \"TOKEN_TRANSFER_OUT_FAILED\");\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 data The call data (encoded using abi.encode or one of its variants).\n * @param errorMessage The revert string to return on failure.\n */\n function _callOptionalReturn(bytes memory data, string memory errorMessage) internal {\n bytes memory returndata = _functionCall(underlying, data, errorMessage);\n if (returndata.length > 0) require(abi.decode(returndata, (bool)), errorMessage);\n }\n\n /**\n * @notice Admin call to delegate the votes of the COMP-like underlying\n * @param compLikeDelegatee The address to delegate votes to\n * @dev CTokens whose underlying are not CompLike should revert here\n */\n function _delegateCompLikeTo(address compLikeDelegatee) external {\n require(hasAdminRights(), \"only the admin may set the comp-like delegate\");\n CompLike(underlying).delegate(compLikeDelegatee);\n }\n}\n"},"contracts/Unitroller.sol":{"content":"pragma solidity 0.5.17;\n\nimport \"./ErrorReporter.sol\";\nimport \"./ComptrollerStorage.sol\";\n\n/**\n * @title Unitroller\n * @dev Storage for the comptroller is at this address, while execution is delegated to the `comptrollerImplementation`.\n * CTokens should reference this contract as their comptroller.\n */\ncontract Unitroller is UnitrollerAdminStorage, ComptrollerErrorReporter {\n /**\n * @notice Emitted when pendingComptrollerImplementation is changed\n */\n event NewPendingImplementation(address oldPendingImplementation, address newPendingImplementation);\n\n /**\n * @notice Emitted when pendingComptrollerImplementation is accepted, which means comptroller implementation is updated\n */\n event NewImplementation(address oldImplementation, address newImplementation);\n\n /**\n * @notice Event emitted when the Fuse admin rights are changed\n */\n event FuseAdminRightsToggled(bool hasRights);\n\n /**\n * @notice Event emitted when the admin rights are changed\n */\n event AdminRightsToggled(bool hasRights);\n\n /**\n * @notice Emitted when pendingAdmin is changed\n */\n event NewPendingAdmin(address oldPendingAdmin, address newPendingAdmin);\n\n /**\n * @notice Emitted when pendingAdmin is accepted, which means admin is updated\n */\n event NewAdmin(address oldAdmin, address newAdmin);\n\n constructor() public {\n // Set admin to caller\n admin = msg.sender;\n }\n\n /*** Admin Functions ***/\n\n function _setPendingImplementation(address newPendingImplementation) public returns (uint) {\n if (!hasAdminRights()) {\n return fail(Error.UNAUTHORIZED, FailureInfo.SET_PENDING_IMPLEMENTATION_OWNER_CHECK);\n }\n\n if (!fuseAdmin.comptrollerImplementationWhitelist(comptrollerImplementation, newPendingImplementation)) {\n return fail(Error.UNAUTHORIZED, FailureInfo.SET_PENDING_IMPLEMENTATION_CONTRACT_CHECK);\n }\n\n address oldPendingImplementation = pendingComptrollerImplementation;\n\n pendingComptrollerImplementation = newPendingImplementation;\n\n emit NewPendingImplementation(oldPendingImplementation, pendingComptrollerImplementation);\n\n return uint(Error.NO_ERROR);\n }\n\n /**\n * @notice Accepts new implementation of comptroller. msg.sender must be pendingImplementation\n * @dev Admin function for new implementation to accept it's role as implementation\n * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\n */\n function _acceptImplementation() public returns (uint) {\n // Check caller is pendingImplementation and pendingImplementation ≠ address(0)\n if (msg.sender != pendingComptrollerImplementation || pendingComptrollerImplementation == address(0)) {\n return fail(Error.UNAUTHORIZED, FailureInfo.ACCEPT_PENDING_IMPLEMENTATION_ADDRESS_CHECK);\n }\n\n // Save current values for inclusion in log\n address oldImplementation = comptrollerImplementation;\n address oldPendingImplementation = pendingComptrollerImplementation;\n\n comptrollerImplementation = pendingComptrollerImplementation;\n\n pendingComptrollerImplementation = address(0);\n\n emit NewImplementation(oldImplementation, comptrollerImplementation);\n emit NewPendingImplementation(oldPendingImplementation, pendingComptrollerImplementation);\n\n return uint(Error.NO_ERROR);\n }\n\n /**\n * @notice Toggles Fuse admin rights.\n * @param hasRights Boolean indicating if the Fuse admin is to have rights.\n * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\n */\n function _toggleFuseAdminRights(bool hasRights) external returns (uint) {\n // Check caller = admin\n if (!hasAdminRights()) {\n return fail(Error.UNAUTHORIZED, FailureInfo.TOGGLE_ADMIN_RIGHTS_OWNER_CHECK);\n }\n\n // Check that rights have not already been set to the desired value\n if (fuseAdminHasRights == hasRights) return uint(Error.NO_ERROR);\n\n // Set fuseAdminHasRights\n fuseAdminHasRights = hasRights;\n\n // Emit FuseAdminRightsToggled()\n emit FuseAdminRightsToggled(fuseAdminHasRights);\n\n return uint(Error.NO_ERROR);\n }\n\n /**\n * @notice Toggles admin rights.\n * @param hasRights Boolean indicating if the admin is to have rights.\n * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\n */\n function _toggleAdminRights(bool hasRights) external returns (uint) {\n // Check caller = admin\n if (!hasAdminRights()) {\n return fail(Error.UNAUTHORIZED, FailureInfo.TOGGLE_ADMIN_RIGHTS_OWNER_CHECK);\n }\n\n // Check that rights have not already been set to the desired value\n if (adminHasRights == hasRights) return uint(Error.NO_ERROR);\n\n // Set adminHasRights\n adminHasRights = hasRights;\n\n // Emit AdminRightsToggled()\n emit AdminRightsToggled(hasRights);\n\n return uint(Error.NO_ERROR);\n }\n\n /**\n * @notice Begins transfer of admin rights. The newPendingAdmin must call `_acceptAdmin` to finalize the transfer.\n * @dev Admin function to begin change of admin. The newPendingAdmin must call `_acceptAdmin` to finalize the transfer.\n * @param newPendingAdmin New pending admin.\n * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\n */\n function _setPendingAdmin(address newPendingAdmin) public returns (uint) {\n // Check caller = admin\n if (!hasAdminRights()) {\n return fail(Error.UNAUTHORIZED, FailureInfo.SET_PENDING_ADMIN_OWNER_CHECK);\n }\n\n // Save current value, if any, for inclusion in log\n address oldPendingAdmin = pendingAdmin;\n\n // Store pendingAdmin with value newPendingAdmin\n pendingAdmin = newPendingAdmin;\n\n // Emit NewPendingAdmin(oldPendingAdmin, newPendingAdmin)\n emit NewPendingAdmin(oldPendingAdmin, newPendingAdmin);\n\n return uint(Error.NO_ERROR);\n }\n\n /**\n * @notice Accepts transfer of admin rights. msg.sender must be pendingAdmin\n * @dev Admin function for pending admin to accept role and update admin\n * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\n */\n function _acceptAdmin() public returns (uint) {\n // Check caller is pendingAdmin and pendingAdmin ≠ address(0)\n if (msg.sender != pendingAdmin || msg.sender == address(0)) {\n return fail(Error.UNAUTHORIZED, FailureInfo.ACCEPT_ADMIN_PENDING_ADMIN_CHECK);\n }\n\n // Save current values for inclusion in log\n address oldAdmin = admin;\n address oldPendingAdmin = pendingAdmin;\n\n // Store admin with value pendingAdmin\n admin = pendingAdmin;\n\n // Clear the pending value\n pendingAdmin = address(0);\n\n emit NewAdmin(oldAdmin, admin);\n emit NewPendingAdmin(oldPendingAdmin, pendingAdmin);\n\n return uint(Error.NO_ERROR);\n }\n\n /**\n * @dev Delegates execution to an implementation contract.\n * It returns to the external caller whatever the implementation returns\n * or forwards reverts.\n */\n function () payable external {\n // Check for automatic implementation\n if (msg.sender != address(this)) {\n (bool callSuccess, bytes memory data) = address(this).staticcall(abi.encodeWithSignature(\"autoImplementation()\"));\n bool autoImplementation;\n if (callSuccess) (autoImplementation) = abi.decode(data, (bool));\n\n if (autoImplementation) {\n address latestComptrollerImplementation = fuseAdmin.latestComptrollerImplementation(comptrollerImplementation);\n\n if (comptrollerImplementation != latestComptrollerImplementation) {\n address oldImplementation = comptrollerImplementation; // Save current value for inclusion in log\n comptrollerImplementation = latestComptrollerImplementation;\n emit NewImplementation(oldImplementation, comptrollerImplementation);\n }\n }\n }\n\n // delegate all other functions to current implementation\n (bool success, ) = comptrollerImplementation.delegatecall(msg.data);\n\n assembly {\n let free_mem_ptr := mload(0x40)\n returndatacopy(free_mem_ptr, 0, returndatasize)\n\n switch success\n case 0 { revert(free_mem_ptr, returndatasize) }\n default { return(free_mem_ptr, returndatasize) }\n }\n }\n}\n"},"contracts/ComptrollerG1.sol":{"content":"pragma solidity 0.5.17;\n\nimport \"./CToken.sol\";\nimport \"./ErrorReporter.sol\";\nimport \"./Exponential.sol\";\nimport \"./PriceOracle.sol\";\nimport \"./ComptrollerInterface.sol\";\nimport \"./ComptrollerStorage.sol\";\nimport \"./Unitroller.sol\";\n\n/**\n * @title Compound's Comptroller Contract\n * @author Compound\n * @dev This was the first version of the Comptroller brains.\n * We keep it so our tests can continue to do the real-life behavior of upgrading from this logic forward.\n */\ncontract ComptrollerG1 is ComptrollerV1Storage, ComptrollerInterface, ComptrollerErrorReporter, Exponential {\n struct Market {\n /**\n * @notice Whether or not this market is listed\n */\n bool isListed;\n\n /**\n * @notice Multiplier representing the most one can borrow against their collateral in this market.\n * For instance, 0.9 to allow borrowing 90% of collateral value.\n * Must be between 0 and 1, and stored as a mantissa.\n */\n uint collateralFactorMantissa;\n\n /**\n * @notice Per-market mapping of \"accounts in this asset\"\n */\n mapping(address => bool) accountMembership;\n }\n\n /**\n * @notice Official mapping of cTokens -> Market metadata\n * @dev Used e.g. to determine if a market is supported\n */\n mapping(address => Market) public markets;\n\n /**\n * @notice Emitted when an admin supports a market\n */\n event MarketListed(CToken cToken);\n\n /**\n * @notice Emitted when an account enters a market\n */\n event MarketEntered(CToken cToken, address account);\n\n /**\n * @notice Emitted when an account exits a market\n */\n event MarketExited(CToken cToken, address account);\n\n /**\n * @notice Emitted when close factor is changed by admin\n */\n event NewCloseFactor(uint oldCloseFactorMantissa, uint newCloseFactorMantissa);\n\n /**\n * @notice Emitted when a collateral factor is changed by admin\n */\n event NewCollateralFactor(CToken cToken, uint oldCollateralFactorMantissa, uint newCollateralFactorMantissa);\n\n /**\n * @notice Emitted when liquidation incentive is changed by admin\n */\n event NewLiquidationIncentive(uint oldLiquidationIncentiveMantissa, uint newLiquidationIncentiveMantissa);\n\n /**\n * @notice Emitted when maxAssets is changed by admin\n */\n event NewMaxAssets(uint oldMaxAssets, uint newMaxAssets);\n\n /**\n * @notice Emitted when price oracle is changed\n */\n event NewPriceOracle(PriceOracle oldPriceOracle, PriceOracle newPriceOracle);\n\n // closeFactorMantissa must be strictly greater than this value\n uint constant closeFactorMinMantissa = 5e16; // 0.05\n\n // closeFactorMantissa must not exceed this value\n uint constant closeFactorMaxMantissa = 9e17; // 0.9\n\n // No collateralFactorMantissa may exceed this value\n uint constant collateralFactorMaxMantissa = 9e17; // 0.9\n\n // liquidationIncentiveMantissa must be no less than this value\n uint constant liquidationIncentiveMinMantissa = mantissaOne;\n\n // liquidationIncentiveMantissa must be no greater than this value\n uint constant liquidationIncentiveMaxMantissa = 15e17; // 1.5\n\n constructor() public {\n admin = msg.sender;\n }\n\n /*** Assets You Are In ***/\n\n /**\n * @notice Returns the assets an account has entered\n * @param account The address of the account to pull assets for\n * @return A dynamic list with the assets the account has entered\n */\n function getAssetsIn(address account) external view returns (CToken[] memory) {\n CToken[] memory assetsIn = accountAssets[account];\n\n return assetsIn;\n }\n\n /**\n * @notice Returns whether the given account is entered in the given asset\n * @param account The address of the account to check\n * @param cToken The cToken to check\n * @return True if the account is in the asset, otherwise false.\n */\n function checkMembership(address account, CToken cToken) external view returns (bool) {\n return markets[address(cToken)].accountMembership[account];\n }\n\n /**\n * @notice Add assets to be included in account liquidity calculation\n * @param cTokens The list of addresses of the cToken markets to be enabled\n * @return Success indicator for whether each corresponding market was entered\n */\n function enterMarkets(address[] memory cTokens) public returns (uint[] memory) {\n uint len = cTokens.length;\n\n uint[] memory results = new uint[](len);\n for (uint i = 0; i < len; i++) {\n CToken cToken = CToken(cTokens[i]);\n Market storage marketToJoin = markets[address(cToken)];\n\n if (!marketToJoin.isListed) {\n // if market is not listed, cannot join move along\n results[i] = uint(Error.MARKET_NOT_LISTED);\n continue;\n }\n\n if (marketToJoin.accountMembership[msg.sender] == true) {\n // if already joined, move along\n results[i] = uint(Error.NO_ERROR);\n continue;\n }\n\n if (accountAssets[msg.sender].length >= maxAssets) {\n // if no space, cannot join, move along\n results[i] = uint(Error.TOO_MANY_ASSETS);\n continue;\n }\n\n // survived the gauntlet, add to list\n // NOTE: we store these somewhat redundantly as a significant optimization\n // this avoids having to iterate through the list for the most common use cases\n // that is, only when we need to perform liquidity checks\n // and not whenever we want to check if an account is in a particular market\n marketToJoin.accountMembership[msg.sender] = true;\n accountAssets[msg.sender].push(cToken);\n\n emit MarketEntered(cToken, msg.sender);\n\n results[i] = uint(Error.NO_ERROR);\n }\n\n return results;\n }\n\n /**\n * @notice Removes asset from sender's account liquidity calculation\n * @dev Sender must not have an outstanding borrow balance in the asset,\n * or be providing neccessary collateral for an outstanding borrow.\n * @param cTokenAddress The address of the asset to be removed\n * @return Whether or not the account successfully exited the market\n */\n function exitMarket(address cTokenAddress) external returns (uint) {\n CToken cToken = CToken(cTokenAddress);\n /* Get sender tokensHeld and amountOwed underlying from the cToken */\n (uint oErr, uint tokensHeld, uint amountOwed, ) = cToken.getAccountSnapshot(msg.sender);\n require(oErr == 0, \"exitMarket: getAccountSnapshot failed\"); // semi-opaque error code\n\n /* Fail if the sender has a borrow balance */\n if (amountOwed != 0) {\n return fail(Error.NONZERO_BORROW_BALANCE, FailureInfo.EXIT_MARKET_BALANCE_OWED);\n }\n\n /* Fail if the sender is not permitted to redeem all of their tokens */\n uint allowed = redeemAllowedInternal(cTokenAddress, msg.sender, tokensHeld);\n if (allowed != 0) {\n return failOpaque(Error.REJECTION, FailureInfo.EXIT_MARKET_REJECTION, allowed);\n }\n\n Market storage marketToExit = markets[address(cToken)];\n\n /* Return true if the sender is not already ‘in’ the market */\n if (!marketToExit.accountMembership[msg.sender]) {\n return uint(Error.NO_ERROR);\n }\n\n /* Set cToken account membership to false */\n delete marketToExit.accountMembership[msg.sender];\n\n /* Delete cToken from the account’s list of assets */\n // load into memory for faster iteration\n CToken[] memory userAssetList = accountAssets[msg.sender];\n uint len = userAssetList.length;\n uint assetIndex = len;\n for (uint i = 0; i < len; i++) {\n if (userAssetList[i] == cToken) {\n assetIndex = i;\n break;\n }\n }\n\n // We *must* have found the asset in the list or our redundant data structure is broken\n assert(assetIndex < len);\n\n // copy last item in list to location of item to be removed, reduce length by 1\n CToken[] storage storedList = accountAssets[msg.sender];\n storedList[assetIndex] = storedList[storedList.length - 1];\n storedList.length--;\n\n emit MarketExited(cToken, msg.sender);\n\n return uint(Error.NO_ERROR);\n }\n\n /*** Policy Hooks ***/\n\n /**\n * @notice Checks if the account should be allowed to mint tokens in the given market\n * @param cToken The market to verify the mint against\n * @param minter The account which would get the minted tokens\n * @param mintAmount The amount of underlying being supplied to the market in exchange for tokens\n * @return 0 if the mint is allowed, otherwise a semi-opaque error code (See ErrorReporter.sol)\n */\n function mintAllowed(address cToken, address minter, uint mintAmount) external returns (uint) {\n minter; // currently unused\n mintAmount; // currently unused\n\n if (!markets[cToken].isListed) {\n return uint(Error.MARKET_NOT_LISTED);\n }\n\n // *may include Policy Hook-type checks\n\n return uint(Error.NO_ERROR);\n }\n\n /**\n * @notice Validates mint and reverts on rejection. May emit logs.\n * @param cToken Asset being minted\n * @param minter The address minting the tokens\n * @param mintAmount The amount of the underlying asset being minted\n * @param mintTokens The number of tokens being minted\n */\n function mintVerify(address cToken, address minter, uint mintAmount, uint mintTokens) external {\n cToken; // currently unused\n minter; // currently unused\n mintAmount; // currently unused\n mintTokens; // currently unused\n\n if (false) {\n maxAssets = maxAssets; // not pure\n }\n }\n\n /**\n * @notice Checks if the account should be allowed to redeem tokens in the given market\n * @param cToken The market to verify the redeem against\n * @param redeemer The account which would redeem the tokens\n * @param redeemTokens The number of cTokens to exchange for the underlying asset in the market\n * @return 0 if the redeem is allowed, otherwise a semi-opaque error code (See ErrorReporter.sol)\n */\n function redeemAllowed(address cToken, address redeemer, uint redeemTokens) external returns (uint) {\n return redeemAllowedInternal(cToken, redeemer, redeemTokens);\n }\n\n function redeemAllowedInternal(address cToken, address redeemer, uint redeemTokens) internal view returns (uint) {\n if (!markets[cToken].isListed) {\n return uint(Error.MARKET_NOT_LISTED);\n }\n\n // *may include Policy Hook-type checks\n\n /* If the redeemer is not 'in' the market, then we can bypass the liquidity check */\n if (!markets[cToken].accountMembership[redeemer]) {\n return uint(Error.NO_ERROR);\n }\n\n /* Otherwise, perform a hypothetical liquidity check to guard against shortfall */\n (Error err, , uint shortfall) = getHypotheticalAccountLiquidityInternal(redeemer, CToken(cToken), redeemTokens, 0);\n if (err != Error.NO_ERROR) {\n return uint(err);\n }\n if (shortfall > 0) {\n return uint(Error.INSUFFICIENT_LIQUIDITY);\n }\n\n return uint(Error.NO_ERROR);\n }\n\n /**\n * @notice Validates redeem and reverts on rejection. May emit logs.\n * @param cToken Asset being redeemed\n * @param redeemer The address redeeming the tokens\n * @param redeemAmount The amount of the underlying asset being redeemed\n * @param redeemTokens The number of tokens being redeemed\n */\n function redeemVerify(address cToken, address redeemer, uint redeemAmount, uint redeemTokens) external {\n cToken; // currently unused\n redeemer; // currently unused\n redeemAmount; // currently unused\n redeemTokens; // currently unused\n\n // Require tokens is zero or amount is also zero\n if (redeemTokens == 0 && redeemAmount > 0) {\n revert(\"redeemTokens zero\");\n }\n }\n\n /**\n * @notice Checks if the account should be allowed to borrow the underlying asset of the given market\n * @param cToken The market to verify the borrow against\n * @param borrower The account which would borrow the asset\n * @param borrowAmount The amount of underlying the account would borrow\n * @return 0 if the borrow is allowed, otherwise a semi-opaque error code (See ErrorReporter.sol)\n */\n function borrowAllowed(address cToken, address borrower, uint borrowAmount) external returns (uint) {\n if (!markets[cToken].isListed) {\n return uint(Error.MARKET_NOT_LISTED);\n }\n\n // *may include Policy Hook-type checks\n\n if (!markets[cToken].accountMembership[borrower]) {\n return uint(Error.MARKET_NOT_ENTERED);\n }\n\n if (oracle.getUnderlyingPrice(CToken(cToken)) == 0) {\n return uint(Error.PRICE_ERROR);\n }\n\n (Error err, , uint shortfall) = getHypotheticalAccountLiquidityInternal(borrower, CToken(cToken), 0, borrowAmount);\n if (err != Error.NO_ERROR) {\n return uint(err);\n }\n if (shortfall > 0) {\n return uint(Error.INSUFFICIENT_LIQUIDITY);\n }\n\n return uint(Error.NO_ERROR);\n }\n\n /**\n * @notice Validates borrow and reverts on rejection. May emit logs.\n * @param cToken Asset whose underlying is being borrowed\n * @param borrower The address borrowing the underlying\n * @param borrowAmount The amount of the underlying asset requested to borrow\n */\n function borrowVerify(address cToken, address borrower, uint borrowAmount) external {\n cToken; // currently unused\n borrower; // currently unused\n borrowAmount; // currently unused\n\n if (false) {\n maxAssets = maxAssets; // not pure\n }\n }\n\n /**\n * @notice Checks if the account should be allowed to repay a borrow in the given market\n * @param cToken The market to verify the repay against\n * @param payer The account which would repay the asset\n * @param borrower The account which would borrowed the asset\n * @param repayAmount The amount of the underlying asset the account would repay\n * @return 0 if the repay is allowed, otherwise a semi-opaque error code (See ErrorReporter.sol)\n */\n function repayBorrowAllowed(\n address cToken,\n address payer,\n address borrower,\n uint repayAmount) external returns (uint) {\n payer; // currently unused\n borrower; // currently unused\n repayAmount; // currently unused\n\n if (!markets[cToken].isListed) {\n return uint(Error.MARKET_NOT_LISTED);\n }\n\n // *may include Policy Hook-type checks\n\n return uint(Error.NO_ERROR);\n }\n\n /**\n * @notice Validates repayBorrow and reverts on rejection. May emit logs.\n * @param cToken Asset being repaid\n * @param payer The address repaying the borrow\n * @param borrower The address of the borrower\n * @param repayAmount The amount of underlying being repaid\n */\n function repayBorrowVerify(\n address cToken,\n address payer,\n address borrower,\n uint repayAmount,\n uint borrowerIndex) external {\n cToken; // currently unused\n payer; // currently unused\n borrower; // currently unused\n repayAmount; // currently unused\n borrowerIndex; // currently unused\n\n if (false) {\n maxAssets = maxAssets; // not pure\n }\n }\n\n /**\n * @notice Checks if the liquidation should be allowed to occur\n * @param cTokenBorrowed Asset which was borrowed by the borrower\n * @param cTokenCollateral Asset which was used as collateral and will be seized\n * @param liquidator The address repaying the borrow and seizing the collateral\n * @param borrower The address of the borrower\n * @param repayAmount The amount of underlying being repaid\n */\n function liquidateBorrowAllowed(\n address cTokenBorrowed,\n address cTokenCollateral,\n address liquidator,\n address borrower,\n uint repayAmount) external returns (uint) {\n liquidator; // currently unused\n borrower; // currently unused\n repayAmount; // currently unused\n\n if (!markets[cTokenBorrowed].isListed || !markets[cTokenCollateral].isListed) {\n return uint(Error.MARKET_NOT_LISTED);\n }\n\n // *may include Policy Hook-type checks\n\n /* The borrower must have shortfall in order to be liquidatable */\n (Error err, , uint shortfall) = getAccountLiquidityInternal(borrower);\n if (err != Error.NO_ERROR) {\n return uint(err);\n }\n if (shortfall == 0) {\n return uint(Error.INSUFFICIENT_SHORTFALL);\n }\n\n /* The liquidator may not repay more than what is allowed by the closeFactor */\n uint borrowBalance = CToken(cTokenBorrowed).borrowBalanceStored(borrower);\n (MathError mathErr, uint maxClose) = mulScalarTruncate(Exp({mantissa: closeFactorMantissa}), borrowBalance);\n if (mathErr != MathError.NO_ERROR) {\n return uint(Error.MATH_ERROR);\n }\n if (repayAmount > maxClose) {\n return uint(Error.TOO_MUCH_REPAY);\n }\n\n return uint(Error.NO_ERROR);\n }\n\n /**\n * @notice Validates liquidateBorrow and reverts on rejection. May emit logs.\n * @param cTokenBorrowed Asset which was borrowed by the borrower\n * @param cTokenCollateral Asset which was used as collateral and will be seized\n * @param liquidator The address repaying the borrow and seizing the collateral\n * @param borrower The address of the borrower\n * @param repayAmount The amount of underlying being repaid\n */\n function liquidateBorrowVerify(\n address cTokenBorrowed,\n address cTokenCollateral,\n address liquidator,\n address borrower,\n uint repayAmount,\n uint seizeTokens) external {\n cTokenBorrowed; // currently unused\n cTokenCollateral; // currently unused\n liquidator; // currently unused\n borrower; // currently unused\n repayAmount; // currently unused\n seizeTokens; // currently unused\n\n if (false) {\n maxAssets = maxAssets; // not pure\n }\n }\n\n /**\n * @notice Checks if the seizing of assets should be allowed to occur\n * @param cTokenCollateral Asset which was used as collateral and will be seized\n * @param cTokenBorrowed Asset which was borrowed by the borrower\n * @param liquidator The address repaying the borrow and seizing the collateral\n * @param borrower The address of the borrower\n * @param seizeTokens The number of collateral tokens to seize\n */\n function seizeAllowed(\n address cTokenCollateral,\n address cTokenBorrowed,\n address liquidator,\n address borrower,\n uint seizeTokens) external returns (uint) {\n liquidator; // currently unused\n borrower; // currently unused\n seizeTokens; // currently unused\n\n if (!markets[cTokenCollateral].isListed || !markets[cTokenBorrowed].isListed) {\n return uint(Error.MARKET_NOT_LISTED);\n }\n\n if (CToken(cTokenCollateral).comptroller() != CToken(cTokenBorrowed).comptroller()) {\n return uint(Error.COMPTROLLER_MISMATCH);\n }\n\n // *may include Policy Hook-type checks\n\n return uint(Error.NO_ERROR);\n }\n\n /**\n * @notice Validates seize and reverts on rejection. May emit logs.\n * @param cTokenCollateral Asset which was used as collateral and will be seized\n * @param cTokenBorrowed Asset which was borrowed by the borrower\n * @param liquidator The address repaying the borrow and seizing the collateral\n * @param borrower The address of the borrower\n * @param seizeTokens The number of collateral tokens to seize\n */\n function seizeVerify(\n address cTokenCollateral,\n address cTokenBorrowed,\n address liquidator,\n address borrower,\n uint seizeTokens) external {\n cTokenCollateral; // currently unused\n cTokenBorrowed; // currently unused\n liquidator; // currently unused\n borrower; // currently unused\n seizeTokens; // currently unused\n\n if (false) {\n maxAssets = maxAssets; // not pure\n }\n }\n\n /**\n * @notice Checks if the account should be allowed to transfer tokens in the given market\n * @param cToken The market to verify the transfer against\n * @param src The account which sources the tokens\n * @param dst The account which receives the tokens\n * @param transferTokens The number of cTokens to transfer\n * @return 0 if the transfer is allowed, otherwise a semi-opaque error code (See ErrorReporter.sol)\n */\n function transferAllowed(address cToken, address src, address dst, uint transferTokens) external returns (uint) {\n cToken; // currently unused\n src; // currently unused\n dst; // currently unused\n transferTokens; // currently unused\n\n // *may include Policy Hook-type checks\n\n // Currently the only consideration is whether or not\n // the src is allowed to redeem this many tokens\n return redeemAllowedInternal(cToken, src, transferTokens);\n }\n\n /**\n * @notice Validates transfer and reverts on rejection. May emit logs.\n * @param cToken Asset being transferred\n * @param src The account which sources the tokens\n * @param dst The account which receives the tokens\n * @param transferTokens The number of cTokens to transfer\n */\n function transferVerify(address cToken, address src, address dst, uint transferTokens) external {\n cToken; // currently unused\n src; // currently unused\n dst; // currently unused\n transferTokens; // currently unused\n\n if (false) {\n maxAssets = maxAssets; // not pure\n }\n }\n\n /*** Liquidity/Liquidation Calculations ***/\n\n /**\n * @dev Local vars for avoiding stack-depth limits in calculating account liquidity.\n * Note that `cTokenBalance` is the number of cTokens the account owns in the market,\n * whereas `borrowBalance` is the amount of underlying that the account has borrowed.\n */\n struct AccountLiquidityLocalVars {\n uint sumCollateral;\n uint sumBorrowPlusEffects;\n uint cTokenBalance;\n uint borrowBalance;\n uint exchangeRateMantissa;\n uint oraclePriceMantissa;\n Exp collateralFactor;\n Exp exchangeRate;\n Exp oraclePrice;\n Exp tokensToEther;\n }\n\n /**\n * @notice Determine the current account liquidity wrt collateral requirements\n * @return (possible error code (semi-opaque),\n account liquidity in excess of collateral requirements,\n * account shortfall below collateral requirements)\n */\n function getAccountLiquidity(address account) public view returns (uint, uint, uint) {\n (Error err, uint liquidity, uint shortfall) = getHypotheticalAccountLiquidityInternal(account, CToken(0), 0, 0);\n\n return (uint(err), liquidity, shortfall);\n }\n\n /**\n * @notice Determine the current account liquidity wrt collateral requirements\n * @return (possible error code,\n account liquidity in excess of collateral requirements,\n * account shortfall below collateral requirements)\n */\n function getAccountLiquidityInternal(address account) internal view returns (Error, uint, uint) {\n return getHypotheticalAccountLiquidityInternal(account, CToken(0), 0, 0);\n }\n\n /**\n * @notice Determine what the account liquidity would be if the given amounts were redeemed/borrowed\n * @param cTokenModify The market to hypothetically redeem/borrow in\n * @param account The account to determine liquidity for\n * @param redeemTokens The number of tokens to hypothetically redeem\n * @param borrowAmount The amount of underlying to hypothetically borrow\n * @dev Note that we calculate the exchangeRateStored for each collateral cToken using stored data,\n * without calculating accumulated interest.\n * @return (possible error code,\n hypothetical account liquidity in excess of collateral requirements,\n * hypothetical account shortfall below collateral requirements)\n */\n function getHypotheticalAccountLiquidityInternal(\n address account,\n CToken cTokenModify,\n uint redeemTokens,\n uint borrowAmount) internal view returns (Error, uint, uint) {\n\n AccountLiquidityLocalVars memory vars; // Holds all our calculation results\n uint oErr;\n MathError mErr;\n\n // For each asset the account is in\n CToken[] memory assets = accountAssets[account];\n for (uint i = 0; i < assets.length; i++) {\n CToken asset = assets[i];\n\n // Read the balances and exchange rate from the cToken\n (oErr, vars.cTokenBalance, vars.borrowBalance, vars.exchangeRateMantissa) = asset.getAccountSnapshot(account);\n if (oErr != 0) { // semi-opaque error code, we assume NO_ERROR == 0 is invariant between upgrades\n return (Error.SNAPSHOT_ERROR, 0, 0);\n }\n vars.collateralFactor = Exp({mantissa: markets[address(asset)].collateralFactorMantissa});\n vars.exchangeRate = Exp({mantissa: vars.exchangeRateMantissa});\n\n // Get the normalized price of the asset\n vars.oraclePriceMantissa = oracle.getUnderlyingPrice(asset);\n if (vars.oraclePriceMantissa == 0) {\n return (Error.PRICE_ERROR, 0, 0);\n }\n vars.oraclePrice = Exp({mantissa: vars.oraclePriceMantissa});\n\n // Pre-compute a conversion factor from tokens -> ether (normalized price value)\n (mErr, vars.tokensToEther) = mulExp3(vars.collateralFactor, vars.exchangeRate, vars.oraclePrice);\n if (mErr != MathError.NO_ERROR) {\n return (Error.MATH_ERROR, 0, 0);\n }\n\n // sumCollateral += tokensToEther * cTokenBalance\n (mErr, vars.sumCollateral) = mulScalarTruncateAddUInt(vars.tokensToEther, vars.cTokenBalance, vars.sumCollateral);\n if (mErr != MathError.NO_ERROR) {\n return (Error.MATH_ERROR, 0, 0);\n }\n\n // sumBorrowPlusEffects += oraclePrice * borrowBalance\n (mErr, vars.sumBorrowPlusEffects) = mulScalarTruncateAddUInt(vars.oraclePrice, vars.borrowBalance, vars.sumBorrowPlusEffects);\n if (mErr != MathError.NO_ERROR) {\n return (Error.MATH_ERROR, 0, 0);\n }\n\n // Calculate effects of interacting with cTokenModify\n if (asset == cTokenModify) {\n // redeem effect\n // sumBorrowPlusEffects += tokensToEther * redeemTokens\n (mErr, vars.sumBorrowPlusEffects) = mulScalarTruncateAddUInt(vars.tokensToEther, redeemTokens, vars.sumBorrowPlusEffects);\n if (mErr != MathError.NO_ERROR) {\n return (Error.MATH_ERROR, 0, 0);\n }\n\n // borrow effect\n // sumBorrowPlusEffects += oraclePrice * borrowAmount\n (mErr, vars.sumBorrowPlusEffects) = mulScalarTruncateAddUInt(vars.oraclePrice, borrowAmount, vars.sumBorrowPlusEffects);\n if (mErr != MathError.NO_ERROR) {\n return (Error.MATH_ERROR, 0, 0);\n }\n }\n }\n\n // These are safe, as the underflow condition is checked first\n if (vars.sumCollateral > vars.sumBorrowPlusEffects) {\n return (Error.NO_ERROR, vars.sumCollateral - vars.sumBorrowPlusEffects, 0);\n } else {\n return (Error.NO_ERROR, 0, vars.sumBorrowPlusEffects - vars.sumCollateral);\n }\n }\n\n /**\n * @notice Calculate number of tokens of collateral asset to seize given an underlying amount\n * @dev Used in liquidation (called in cToken.liquidateBorrowFresh)\n * @param cTokenBorrowed The address of the borrowed cToken\n * @param cTokenCollateral The address of the collateral cToken\n * @param repayAmount The amount of cTokenBorrowed underlying to convert into cTokenCollateral tokens\n * @return (errorCode, number of cTokenCollateral tokens to be seized in a liquidation)\n */\n function liquidateCalculateSeizeTokens(address cTokenBorrowed, address cTokenCollateral, uint repayAmount) external view returns (uint, uint) {\n /* Read oracle prices for borrowed and collateral markets */\n uint priceBorrowedMantissa = oracle.getUnderlyingPrice(CToken(cTokenBorrowed));\n uint priceCollateralMantissa = oracle.getUnderlyingPrice(CToken(cTokenCollateral));\n if (priceBorrowedMantissa == 0 || priceCollateralMantissa == 0) {\n return (uint(Error.PRICE_ERROR), 0);\n }\n\n /*\n * Get the exchange rate and calculate the number of collateral tokens to seize:\n * seizeAmount = repayAmount * liquidationIncentive * priceBorrowed / priceCollateral\n * seizeTokens = seizeAmount / exchangeRate\n * = repayAmount * (liquidationIncentive * priceBorrowed) / (priceCollateral * exchangeRate)\n */\n uint exchangeRateMantissa = CToken(cTokenCollateral).exchangeRateStored(); // Note: reverts on error\n uint seizeTokens;\n Exp memory numerator;\n Exp memory denominator;\n Exp memory ratio;\n MathError mathErr;\n\n (mathErr, numerator) = mulExp(liquidationIncentiveMantissa, priceBorrowedMantissa);\n if (mathErr != MathError.NO_ERROR) {\n return (uint(Error.MATH_ERROR), 0);\n }\n\n (mathErr, denominator) = mulExp(priceCollateralMantissa, exchangeRateMantissa);\n if (mathErr != MathError.NO_ERROR) {\n return (uint(Error.MATH_ERROR), 0);\n }\n\n (mathErr, ratio) = divExp(numerator, denominator);\n if (mathErr != MathError.NO_ERROR) {\n return (uint(Error.MATH_ERROR), 0);\n }\n\n (mathErr, seizeTokens) = mulScalarTruncate(ratio, repayAmount);\n if (mathErr != MathError.NO_ERROR) {\n return (uint(Error.MATH_ERROR), 0);\n }\n\n return (uint(Error.NO_ERROR), seizeTokens);\n }\n\n /*** Admin Functions ***/\n\n /**\n * @notice Sets a new price oracle for the comptroller\n * @dev Admin function to set a new price oracle\n * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\n */\n function _setPriceOracle(PriceOracle newOracle) public returns (uint) {\n // Check caller is admin OR currently initialzing as new unitroller implementation\n if (!adminOrInitializing()) {\n return fail(Error.UNAUTHORIZED, FailureInfo.SET_PRICE_ORACLE_OWNER_CHECK);\n }\n\n // Track the old oracle for the comptroller\n PriceOracle oldOracle = oracle;\n\n // Ensure invoke newOracle.isPriceOracle() returns true\n // require(newOracle.isPriceOracle(), \"oracle method isPriceOracle returned false\");\n\n // Set comptroller's oracle to newOracle\n oracle = newOracle;\n\n // Emit NewPriceOracle(oldOracle, newOracle)\n emit NewPriceOracle(oldOracle, newOracle);\n\n return uint(Error.NO_ERROR);\n }\n\n /**\n * @notice Sets the closeFactor used when liquidating borrows\n * @dev Admin function to set closeFactor\n * @param newCloseFactorMantissa New close factor, scaled by 1e18\n * @return uint 0=success, otherwise a failure. (See ErrorReporter for details)\n */\n function _setCloseFactor(uint newCloseFactorMantissa) external returns (uint256) {\n // Check caller is admin OR currently initialzing as new unitroller implementation\n if (!adminOrInitializing()) {\n return fail(Error.UNAUTHORIZED, FailureInfo.SET_CLOSE_FACTOR_OWNER_CHECK);\n }\n\n Exp memory newCloseFactorExp = Exp({mantissa: newCloseFactorMantissa});\n Exp memory lowLimit = Exp({mantissa: closeFactorMinMantissa});\n if (lessThanOrEqualExp(newCloseFactorExp, lowLimit)) {\n return fail(Error.INVALID_CLOSE_FACTOR, FailureInfo.SET_CLOSE_FACTOR_VALIDATION);\n }\n\n Exp memory highLimit = Exp({mantissa: closeFactorMaxMantissa});\n if (lessThanExp(highLimit, newCloseFactorExp)) {\n return fail(Error.INVALID_CLOSE_FACTOR, FailureInfo.SET_CLOSE_FACTOR_VALIDATION);\n }\n\n uint oldCloseFactorMantissa = closeFactorMantissa;\n closeFactorMantissa = newCloseFactorMantissa;\n emit NewCloseFactor(oldCloseFactorMantissa, closeFactorMantissa);\n\n return uint(Error.NO_ERROR);\n }\n\n /**\n * @notice Sets the collateralFactor for a market\n * @dev Admin function to set per-market collateralFactor\n * @param cToken The market to set the factor on\n * @param newCollateralFactorMantissa The new collateral factor, scaled by 1e18\n * @return uint 0=success, otherwise a failure. (See ErrorReporter for details)\n */\n function _setCollateralFactor(CToken cToken, uint newCollateralFactorMantissa) external returns (uint256) {\n // Check caller is admin\n if (!hasAdminRights()) {\n return fail(Error.UNAUTHORIZED, FailureInfo.SET_COLLATERAL_FACTOR_OWNER_CHECK);\n }\n\n // Verify market is listed\n Market storage market = markets[address(cToken)];\n if (!market.isListed) {\n return fail(Error.MARKET_NOT_LISTED, FailureInfo.SET_COLLATERAL_FACTOR_NO_EXISTS);\n }\n\n Exp memory newCollateralFactorExp = Exp({mantissa: newCollateralFactorMantissa});\n\n // Check collateral factor <= 0.9\n Exp memory highLimit = Exp({mantissa: collateralFactorMaxMantissa});\n if (lessThanExp(highLimit, newCollateralFactorExp)) {\n return fail(Error.INVALID_COLLATERAL_FACTOR, FailureInfo.SET_COLLATERAL_FACTOR_VALIDATION);\n }\n\n // If collateral factor != 0, fail if price == 0\n if (newCollateralFactorMantissa != 0 && oracle.getUnderlyingPrice(cToken) == 0) {\n return fail(Error.PRICE_ERROR, FailureInfo.SET_COLLATERAL_FACTOR_WITHOUT_PRICE);\n }\n\n // Set market's collateral factor to new collateral factor, remember old value\n uint oldCollateralFactorMantissa = market.collateralFactorMantissa;\n market.collateralFactorMantissa = newCollateralFactorMantissa;\n\n // Emit event with asset, old collateral factor, and new collateral factor\n emit NewCollateralFactor(cToken, oldCollateralFactorMantissa, newCollateralFactorMantissa);\n\n return uint(Error.NO_ERROR);\n }\n\n /**\n * @notice Sets maxAssets which controls how many markets can be entered\n * @dev Admin function to set maxAssets\n * @param newMaxAssets New max assets\n * @return uint 0=success, otherwise a failure. (See ErrorReporter for details)\n */\n function _setMaxAssets(uint newMaxAssets) external returns (uint) {\n // Check caller is admin OR currently initialzing as new unitroller implementation\n if (!adminOrInitializing()) {\n return fail(Error.UNAUTHORIZED, FailureInfo.SET_MAX_ASSETS_OWNER_CHECK);\n }\n\n uint oldMaxAssets = maxAssets;\n maxAssets = newMaxAssets;\n emit NewMaxAssets(oldMaxAssets, newMaxAssets);\n\n return uint(Error.NO_ERROR);\n }\n\n /**\n * @notice Sets liquidationIncentive\n * @dev Admin function to set liquidationIncentive\n * @param newLiquidationIncentiveMantissa New liquidationIncentive scaled by 1e18\n * @return uint 0=success, otherwise a failure. (See ErrorReporter for details)\n */\n function _setLiquidationIncentive(uint newLiquidationIncentiveMantissa) external returns (uint) {\n // Check caller is admin OR currently initialzing as new unitroller implementation\n if (!adminOrInitializing()) {\n return fail(Error.UNAUTHORIZED, FailureInfo.SET_LIQUIDATION_INCENTIVE_OWNER_CHECK);\n }\n\n // Check de-scaled 1 <= newLiquidationDiscount <= 1.5\n Exp memory newLiquidationIncentive = Exp({mantissa: newLiquidationIncentiveMantissa});\n Exp memory minLiquidationIncentive = Exp({mantissa: liquidationIncentiveMinMantissa});\n if (lessThanExp(newLiquidationIncentive, minLiquidationIncentive)) {\n return fail(Error.INVALID_LIQUIDATION_INCENTIVE, FailureInfo.SET_LIQUIDATION_INCENTIVE_VALIDATION);\n }\n\n Exp memory maxLiquidationIncentive = Exp({mantissa: liquidationIncentiveMaxMantissa});\n if (lessThanExp(maxLiquidationIncentive, newLiquidationIncentive)) {\n return fail(Error.INVALID_LIQUIDATION_INCENTIVE, FailureInfo.SET_LIQUIDATION_INCENTIVE_VALIDATION);\n }\n\n // Save current value for use in log\n uint oldLiquidationIncentiveMantissa = liquidationIncentiveMantissa;\n\n // Set liquidation incentive to new incentive\n liquidationIncentiveMantissa = newLiquidationIncentiveMantissa;\n\n // Emit event with old incentive, new incentive\n emit NewLiquidationIncentive(oldLiquidationIncentiveMantissa, newLiquidationIncentiveMantissa);\n\n return uint(Error.NO_ERROR);\n }\n\n /**\n * @notice Add the market to the markets mapping and set it as listed\n * @dev Admin function to set isListed and add support for the market\n * @param cToken The address of the market (token) to list\n * @return uint 0=success, otherwise a failure. (See enum Error for details)\n */\n function _supportMarket(CToken cToken) external returns (uint) {\n if (!hasAdminRights()) {\n return fail(Error.UNAUTHORIZED, FailureInfo.SUPPORT_MARKET_OWNER_CHECK);\n }\n\n if (markets[address(cToken)].isListed) {\n return fail(Error.MARKET_ALREADY_LISTED, FailureInfo.SUPPORT_MARKET_EXISTS);\n }\n\n cToken.isCToken(); // Sanity check to make sure its really a CToken\n\n markets[address(cToken)] = Market({isListed: true, collateralFactorMantissa: 0});\n emit MarketListed(cToken);\n\n return uint(Error.NO_ERROR);\n }\n\n function _become(Unitroller unitroller, PriceOracle _oracle, uint _closeFactorMantissa, uint _maxAssets, bool reinitializing) public {\n require(msg.sender == unitroller.admin(), \"only unitroller admin can change brains\");\n uint changeStatus = unitroller._acceptImplementation();\n\n require(changeStatus == 0, \"change not authorized\");\n\n if (!reinitializing) {\n ComptrollerG1 freshBrainedComptroller = ComptrollerG1(address(unitroller));\n\n // Ensure invoke _setPriceOracle() = 0\n uint err = freshBrainedComptroller._setPriceOracle(_oracle);\n require (err == uint(Error.NO_ERROR), \"set price oracle error\");\n\n // Ensure invoke _setCloseFactor() = 0\n err = freshBrainedComptroller._setCloseFactor(_closeFactorMantissa);\n require (err == uint(Error.NO_ERROR), \"set close factor error\");\n\n // Ensure invoke _setMaxAssets() = 0\n err = freshBrainedComptroller._setMaxAssets(_maxAssets);\n require (err == uint(Error.NO_ERROR), \"set max asssets error\");\n\n // Ensure invoke _setLiquidationIncentive(liquidationIncentiveMinMantissa) = 0\n err = freshBrainedComptroller._setLiquidationIncentive(liquidationIncentiveMinMantissa);\n require (err == uint(Error.NO_ERROR), \"set liquidation incentive error\");\n }\n }\n\n /**\n * @dev Check that caller is admin or this contract is initializing itself as\n * the new implementation.\n * There should be no way to satisfy msg.sender == comptrollerImplementaiton\n * without tx.origin also being admin, but both are included for extra safety\n */\n function adminOrInitializing() internal view returns (bool) {\n bool initializing = (\n msg.sender == comptrollerImplementation\n &&\n //solium-disable-next-line security/no-tx-origin\n tx.origin == admin\n );\n bool isAdmin = hasAdminRights();\n return isAdmin || initializing;\n }\n}"},"contracts/SimplePriceOracle.sol":{"content":"pragma solidity 0.5.17;\n\nimport \"./PriceOracle.sol\";\nimport \"./CErc20.sol\";\n\ncontract SimplePriceOracle is PriceOracle {\n mapping(address => uint) prices;\n event PricePosted(address asset, uint previousPriceMantissa, uint requestedPriceMantissa, uint newPriceMantissa);\n\n function getUnderlyingPrice(CToken cToken) public view returns (uint) {\n if (compareStrings(cToken.symbol(), \"cETH\")) {\n return 1e18;\n } else {\n return prices[address(CErc20(address(cToken)).underlying())];\n }\n }\n\n function setUnderlyingPrice(CToken cToken, uint underlyingPriceMantissa) public {\n address asset = address(CErc20(address(cToken)).underlying());\n emit PricePosted(asset, prices[asset], underlyingPriceMantissa, underlyingPriceMantissa);\n prices[asset] = underlyingPriceMantissa;\n }\n\n function setDirectPrice(address asset, uint price) public {\n emit PricePosted(asset, prices[asset], price, price);\n prices[asset] = price;\n }\n\n // v1 price oracle interface for use as backing of proxy\n function assetPrices(address asset) external view returns (uint) {\n return prices[asset];\n }\n\n function compareStrings(string memory a, string memory b) internal pure returns (bool) {\n return (keccak256(abi.encodePacked((a))) == keccak256(abi.encodePacked((b))));\n }\n}\n"},"contracts/Lens/CompoundLens.sol":{"content":"pragma solidity 0.5.17;\npragma experimental ABIEncoderV2;\n\nimport \"../CErc20.sol\";\nimport \"../CToken.sol\";\nimport \"../Comptroller.sol\";\nimport \"../EIP20Interface.sol\";\nimport \"../Governance/GovernorAlpha.sol\";\nimport \"../Governance/Comp.sol\";\n\ncontract CompoundLens {\n struct CTokenMetadata {\n address cToken;\n uint exchangeRateCurrent;\n uint supplyRatePerBlock;\n uint borrowRatePerBlock;\n uint reserveFactorMantissa;\n uint totalBorrows;\n uint totalReserves;\n uint totalSupply;\n uint totalCash;\n bool isListed;\n uint collateralFactorMantissa;\n address underlyingAssetAddress;\n uint cTokenDecimals;\n uint underlyingDecimals;\n }\n\n function cTokenMetadata(CToken cToken) public returns (CTokenMetadata memory) {\n uint exchangeRateCurrent = cToken.exchangeRateCurrent();\n Comptroller comptroller = Comptroller(address(cToken.comptroller()));\n (bool isListed, uint collateralFactorMantissa) = comptroller.markets(address(cToken));\n address underlyingAssetAddress;\n uint underlyingDecimals;\n\n if (compareStrings(cToken.symbol(), \"cETH\")) {\n underlyingAssetAddress = address(0);\n underlyingDecimals = 18;\n } else {\n CErc20 cErc20 = CErc20(address(cToken));\n underlyingAssetAddress = cErc20.underlying();\n underlyingDecimals = EIP20Interface(cErc20.underlying()).decimals();\n }\n\n return CTokenMetadata({\n cToken: address(cToken),\n exchangeRateCurrent: exchangeRateCurrent,\n supplyRatePerBlock: cToken.supplyRatePerBlock(),\n borrowRatePerBlock: cToken.borrowRatePerBlock(),\n reserveFactorMantissa: cToken.reserveFactorMantissa(),\n totalBorrows: cToken.totalBorrows(),\n totalReserves: cToken.totalReserves(),\n totalSupply: cToken.totalSupply(),\n totalCash: cToken.getCash(),\n isListed: isListed,\n collateralFactorMantissa: collateralFactorMantissa,\n underlyingAssetAddress: underlyingAssetAddress,\n cTokenDecimals: cToken.decimals(),\n underlyingDecimals: underlyingDecimals\n });\n }\n\n function cTokenMetadataAll(CToken[] calldata cTokens) external returns (CTokenMetadata[] memory) {\n uint cTokenCount = cTokens.length;\n CTokenMetadata[] memory res = new CTokenMetadata[](cTokenCount);\n for (uint i = 0; i < cTokenCount; i++) {\n res[i] = cTokenMetadata(cTokens[i]);\n }\n return res;\n }\n\n struct CTokenBalances {\n address cToken;\n uint balanceOf;\n uint borrowBalanceCurrent;\n uint balanceOfUnderlying;\n uint tokenBalance;\n uint tokenAllowance;\n }\n\n function cTokenBalances(CToken cToken, address payable account) public returns (CTokenBalances memory) {\n uint balanceOf = cToken.balanceOf(account);\n uint borrowBalanceCurrent = cToken.borrowBalanceCurrent(account);\n uint balanceOfUnderlying = cToken.balanceOfUnderlying(account);\n uint tokenBalance;\n uint tokenAllowance;\n\n if (compareStrings(cToken.symbol(), \"cETH\")) {\n tokenBalance = account.balance;\n tokenAllowance = account.balance;\n } else {\n CErc20 cErc20 = CErc20(address(cToken));\n EIP20Interface underlying = EIP20Interface(cErc20.underlying());\n tokenBalance = underlying.balanceOf(account);\n tokenAllowance = underlying.allowance(account, address(cToken));\n }\n\n return CTokenBalances({\n cToken: address(cToken),\n balanceOf: balanceOf,\n borrowBalanceCurrent: borrowBalanceCurrent,\n balanceOfUnderlying: balanceOfUnderlying,\n tokenBalance: tokenBalance,\n tokenAllowance: tokenAllowance\n });\n }\n\n function cTokenBalancesAll(CToken[] calldata cTokens, address payable account) external returns (CTokenBalances[] memory) {\n uint cTokenCount = cTokens.length;\n CTokenBalances[] memory res = new CTokenBalances[](cTokenCount);\n for (uint i = 0; i < cTokenCount; i++) {\n res[i] = cTokenBalances(cTokens[i], account);\n }\n return res;\n }\n\n struct CTokenUnderlyingPrice {\n address cToken;\n uint underlyingPrice;\n }\n\n function cTokenUnderlyingPrice(CToken cToken) public returns (CTokenUnderlyingPrice memory) {\n Comptroller comptroller = Comptroller(address(cToken.comptroller()));\n PriceOracle priceOracle = comptroller.oracle();\n\n return CTokenUnderlyingPrice({\n cToken: address(cToken),\n underlyingPrice: priceOracle.getUnderlyingPrice(cToken)\n });\n }\n\n function cTokenUnderlyingPriceAll(CToken[] calldata cTokens) external returns (CTokenUnderlyingPrice[] memory) {\n uint cTokenCount = cTokens.length;\n CTokenUnderlyingPrice[] memory res = new CTokenUnderlyingPrice[](cTokenCount);\n for (uint i = 0; i < cTokenCount; i++) {\n res[i] = cTokenUnderlyingPrice(cTokens[i]);\n }\n return res;\n }\n\n struct AccountLimits {\n CToken[] markets;\n uint liquidity;\n uint shortfall;\n }\n\n function getAccountLimits(Comptroller comptroller, address account) public returns (AccountLimits memory) {\n (uint errorCode, uint liquidity, uint shortfall) = comptroller.getAccountLiquidity(account);\n require(errorCode == 0);\n\n return AccountLimits({\n markets: comptroller.getAssetsIn(account),\n liquidity: liquidity,\n shortfall: shortfall\n });\n }\n\n struct GovReceipt {\n uint proposalId;\n bool hasVoted;\n bool support;\n uint96 votes;\n }\n\n function getGovReceipts(GovernorAlpha governor, address voter, uint[] memory proposalIds) public view returns (GovReceipt[] memory) {\n uint proposalCount = proposalIds.length;\n GovReceipt[] memory res = new GovReceipt[](proposalCount);\n for (uint i = 0; i < proposalCount; i++) {\n GovernorAlpha.Receipt memory receipt = governor.getReceipt(proposalIds[i], voter);\n res[i] = GovReceipt({\n proposalId: proposalIds[i],\n hasVoted: receipt.hasVoted,\n support: receipt.support,\n votes: receipt.votes\n });\n }\n return res;\n }\n\n struct GovProposal {\n uint proposalId;\n address proposer;\n uint eta;\n address[] targets;\n uint[] values;\n string[] signatures;\n bytes[] calldatas;\n uint startBlock;\n uint endBlock;\n uint forVotes;\n uint againstVotes;\n bool canceled;\n bool executed;\n }\n\n function setProposal(GovProposal memory res, GovernorAlpha governor, uint proposalId) internal view {\n (\n ,\n address proposer,\n uint eta,\n uint startBlock,\n uint endBlock,\n uint forVotes,\n uint againstVotes,\n bool canceled,\n bool executed\n ) = governor.proposals(proposalId);\n res.proposalId = proposalId;\n res.proposer = proposer;\n res.eta = eta;\n res.startBlock = startBlock;\n res.endBlock = endBlock;\n res.forVotes = forVotes;\n res.againstVotes = againstVotes;\n res.canceled = canceled;\n res.executed = executed;\n }\n\n function getGovProposals(GovernorAlpha governor, uint[] calldata proposalIds) external view returns (GovProposal[] memory) {\n GovProposal[] memory res = new GovProposal[](proposalIds.length);\n for (uint i = 0; i < proposalIds.length; i++) {\n (\n address[] memory targets,\n uint[] memory values,\n string[] memory signatures,\n bytes[] memory calldatas\n ) = governor.getActions(proposalIds[i]);\n res[i] = GovProposal({\n proposalId: 0,\n proposer: address(0),\n eta: 0,\n targets: targets,\n values: values,\n signatures: signatures,\n calldatas: calldatas,\n startBlock: 0,\n endBlock: 0,\n forVotes: 0,\n againstVotes: 0,\n canceled: false,\n executed: false\n });\n setProposal(res[i], governor, proposalIds[i]);\n }\n return res;\n }\n\n struct CompBalanceMetadata {\n uint balance;\n uint votes;\n address delegate;\n }\n\n function getCompBalanceMetadata(Comp comp, address account) external view returns (CompBalanceMetadata memory) {\n return CompBalanceMetadata({\n balance: comp.balanceOf(account),\n votes: uint256(comp.getCurrentVotes(account)),\n delegate: comp.delegates(account)\n });\n }\n\n struct CompVotes {\n uint blockNumber;\n uint votes;\n }\n\n function getCompVotes(Comp comp, address account, uint32[] calldata blockNumbers) external view returns (CompVotes[] memory) {\n CompVotes[] memory res = new CompVotes[](blockNumbers.length);\n for (uint i = 0; i < blockNumbers.length; i++) {\n res[i] = CompVotes({\n blockNumber: uint256(blockNumbers[i]),\n votes: uint256(comp.getPriorVotes(account, blockNumbers[i]))\n });\n }\n return res;\n }\n\n function compareStrings(string memory a, string memory b) internal pure returns (bool) {\n return (keccak256(abi.encodePacked((a))) == keccak256(abi.encodePacked((b))));\n }\n}\n"},"contracts/Governance/GovernorAlpha.sol":{"content":"pragma solidity 0.5.17;\npragma experimental ABIEncoderV2;\n\ncontract GovernorAlpha {\n /// @notice The name of this contract\n string public constant name = \"Compound Governor Alpha\";\n\n /// @notice The number of votes in support of a proposal required in order for a quorum to be reached and for a vote to succeed\n function quorumVotes() public pure returns (uint) { return 400000e18; } // 400,000 = 4% of Comp\n\n /// @notice The number of votes required in order for a voter to become a proposer\n function proposalThreshold() public pure returns (uint) { return 100000e18; } // 100,000 = 1% of Comp\n\n /// @notice The maximum number of actions that can be included in a proposal\n function proposalMaxOperations() public pure returns (uint) { return 10; } // 10 actions\n\n /// @notice The delay before voting on a proposal may take place, once proposed\n function votingDelay() public pure returns (uint) { return 1; } // 1 block\n\n /// @notice The duration of voting on a proposal, in blocks\n function votingPeriod() public pure returns (uint) { return 17280; } // ~3 days in blocks (assuming 15s blocks)\n\n /// @notice The address of the Compound Protocol Timelock\n TimelockInterface public timelock;\n\n /// @notice The address of the Compound governance token\n CompInterface public comp;\n\n /// @notice The address of the Governor Guardian\n address public guardian;\n\n /// @notice The total number of proposals\n uint public proposalCount;\n\n struct Proposal {\n /// @notice Unique id for looking up a proposal\n uint id;\n\n /// @notice Creator of the proposal\n address proposer;\n\n /// @notice The timestamp that the proposal will be available for execution, set once the vote succeeds\n uint eta;\n\n /// @notice the ordered list of target addresses for calls to be made\n address[] targets;\n\n /// @notice The ordered list of values (i.e. msg.value) to be passed to the calls to be made\n uint[] values;\n\n /// @notice The ordered list of function signatures to be called\n string[] signatures;\n\n /// @notice The ordered list of calldata to be passed to each call\n bytes[] calldatas;\n\n /// @notice The block at which voting begins: holders must delegate their votes prior to this block\n uint startBlock;\n\n /// @notice The block at which voting ends: votes must be cast prior to this block\n uint endBlock;\n\n /// @notice Current number of votes in favor of this proposal\n uint forVotes;\n\n /// @notice Current number of votes in opposition to this proposal\n uint againstVotes;\n\n /// @notice Flag marking whether the proposal has been canceled\n bool canceled;\n\n /// @notice Flag marking whether the proposal has been executed\n bool executed;\n\n /// @notice Receipts of ballots for the entire set of voters\n mapping (address => Receipt) receipts;\n }\n\n /// @notice Ballot receipt record for a voter\n struct Receipt {\n /// @notice Whether or not a vote has been cast\n bool hasVoted;\n\n /// @notice Whether or not the voter supports the proposal\n bool support;\n\n /// @notice The number of votes the voter had, which were cast\n uint96 votes;\n }\n\n /// @notice Possible states that a proposal may be in\n enum ProposalState {\n Pending,\n Active,\n Canceled,\n Defeated,\n Succeeded,\n Queued,\n Expired,\n Executed\n }\n\n /// @notice The official record of all proposals ever proposed\n mapping (uint => Proposal) public proposals;\n\n /// @notice The latest proposal for each proposer\n mapping (address => uint) public latestProposalIds;\n\n /// @notice The EIP-712 typehash for the contract's domain\n bytes32 public constant DOMAIN_TYPEHASH = keccak256(\"EIP712Domain(string name,uint256 chainId,address verifyingContract)\");\n\n /// @notice The EIP-712 typehash for the ballot struct used by the contract\n bytes32 public constant BALLOT_TYPEHASH = keccak256(\"Ballot(uint256 proposalId,bool support)\");\n\n /// @notice An event emitted when a new proposal is created\n event ProposalCreated(uint id, address proposer, address[] targets, uint[] values, string[] signatures, bytes[] calldatas, uint startBlock, uint endBlock, string description);\n\n /// @notice An event emitted when a vote has been cast on a proposal\n event VoteCast(address voter, uint proposalId, bool support, uint votes);\n\n /// @notice An event emitted when a proposal has been canceled\n event ProposalCanceled(uint id);\n\n /// @notice An event emitted when a proposal has been queued in the Timelock\n event ProposalQueued(uint id, uint eta);\n\n /// @notice An event emitted when a proposal has been executed in the Timelock\n event ProposalExecuted(uint id);\n\n constructor(address timelock_, address comp_, address guardian_) public {\n timelock = TimelockInterface(timelock_);\n comp = CompInterface(comp_);\n guardian = guardian_;\n }\n\n function propose(address[] memory targets, uint[] memory values, string[] memory signatures, bytes[] memory calldatas, string memory description) public returns (uint) {\n require(comp.getPriorVotes(msg.sender, sub256(block.number, 1)) > proposalThreshold(), \"GovernorAlpha::propose: proposer votes below proposal threshold\");\n require(targets.length == values.length && targets.length == signatures.length && targets.length == calldatas.length, \"GovernorAlpha::propose: proposal function information arity mismatch\");\n require(targets.length != 0, \"GovernorAlpha::propose: must provide actions\");\n require(targets.length <= proposalMaxOperations(), \"GovernorAlpha::propose: too many actions\");\n\n uint latestProposalId = latestProposalIds[msg.sender];\n if (latestProposalId != 0) {\n ProposalState proposersLatestProposalState = state(latestProposalId);\n require(proposersLatestProposalState != ProposalState.Active, \"GovernorAlpha::propose: one live proposal per proposer, found an already active proposal\");\n require(proposersLatestProposalState != ProposalState.Pending, \"GovernorAlpha::propose: one live proposal per proposer, found an already pending proposal\");\n }\n\n uint startBlock = add256(block.number, votingDelay());\n uint endBlock = add256(startBlock, votingPeriod());\n\n proposalCount++;\n Proposal memory newProposal = Proposal({\n id: proposalCount,\n proposer: msg.sender,\n eta: 0,\n targets: targets,\n values: values,\n signatures: signatures,\n calldatas: calldatas,\n startBlock: startBlock,\n endBlock: endBlock,\n forVotes: 0,\n againstVotes: 0,\n canceled: false,\n executed: false\n });\n\n proposals[newProposal.id] = newProposal;\n latestProposalIds[newProposal.proposer] = newProposal.id;\n\n emit ProposalCreated(newProposal.id, msg.sender, targets, values, signatures, calldatas, startBlock, endBlock, description);\n return newProposal.id;\n }\n\n function queue(uint proposalId) public {\n require(state(proposalId) == ProposalState.Succeeded, \"GovernorAlpha::queue: proposal can only be queued if it is succeeded\");\n Proposal storage proposal = proposals[proposalId];\n uint eta = add256(block.timestamp, timelock.delay());\n for (uint i = 0; i < proposal.targets.length; i++) {\n _queueOrRevert(proposal.targets[i], proposal.values[i], proposal.signatures[i], proposal.calldatas[i], eta);\n }\n proposal.eta = eta;\n emit ProposalQueued(proposalId, eta);\n }\n\n function _queueOrRevert(address target, uint value, string memory signature, bytes memory data, uint eta) internal {\n require(!timelock.queuedTransactions(keccak256(abi.encode(target, value, signature, data, eta))), \"GovernorAlpha::_queueOrRevert: proposal action already queued at eta\");\n timelock.queueTransaction(target, value, signature, data, eta);\n }\n\n function execute(uint proposalId) public payable {\n require(state(proposalId) == ProposalState.Queued, \"GovernorAlpha::execute: proposal can only be executed if it is queued\");\n Proposal storage proposal = proposals[proposalId];\n proposal.executed = true;\n for (uint i = 0; i < proposal.targets.length; i++) {\n timelock.executeTransaction.value(proposal.values[i])(proposal.targets[i], proposal.values[i], proposal.signatures[i], proposal.calldatas[i], proposal.eta);\n }\n emit ProposalExecuted(proposalId);\n }\n\n function cancel(uint proposalId) public {\n ProposalState state = state(proposalId);\n require(state != ProposalState.Executed, \"GovernorAlpha::cancel: cannot cancel executed proposal\");\n\n Proposal storage proposal = proposals[proposalId];\n require(msg.sender == guardian || comp.getPriorVotes(proposal.proposer, sub256(block.number, 1)) < proposalThreshold(), \"GovernorAlpha::cancel: proposer above threshold\");\n\n proposal.canceled = true;\n for (uint i = 0; i < proposal.targets.length; i++) {\n timelock.cancelTransaction(proposal.targets[i], proposal.values[i], proposal.signatures[i], proposal.calldatas[i], proposal.eta);\n }\n\n emit ProposalCanceled(proposalId);\n }\n\n function getActions(uint proposalId) public view returns (address[] memory targets, uint[] memory values, string[] memory signatures, bytes[] memory calldatas) {\n Proposal storage p = proposals[proposalId];\n return (p.targets, p.values, p.signatures, p.calldatas);\n }\n\n function getReceipt(uint proposalId, address voter) public view returns (Receipt memory) {\n return proposals[proposalId].receipts[voter];\n }\n\n function state(uint proposalId) public view returns (ProposalState) {\n require(proposalCount >= proposalId && proposalId > 0, \"GovernorAlpha::state: invalid proposal id\");\n Proposal storage proposal = proposals[proposalId];\n if (proposal.canceled) {\n return ProposalState.Canceled;\n } else if (block.number <= proposal.startBlock) {\n return ProposalState.Pending;\n } else if (block.number <= proposal.endBlock) {\n return ProposalState.Active;\n } else if (proposal.forVotes <= proposal.againstVotes || proposal.forVotes < quorumVotes()) {\n return ProposalState.Defeated;\n } else if (proposal.eta == 0) {\n return ProposalState.Succeeded;\n } else if (proposal.executed) {\n return ProposalState.Executed;\n } else if (block.timestamp >= add256(proposal.eta, timelock.GRACE_PERIOD())) {\n return ProposalState.Expired;\n } else {\n return ProposalState.Queued;\n }\n }\n\n function castVote(uint proposalId, bool support) public {\n return _castVote(msg.sender, proposalId, support);\n }\n\n function castVoteBySig(uint proposalId, bool support, uint8 v, bytes32 r, bytes32 s) public {\n bytes32 domainSeparator = keccak256(abi.encode(DOMAIN_TYPEHASH, keccak256(bytes(name)), getChainId(), address(this)));\n bytes32 structHash = keccak256(abi.encode(BALLOT_TYPEHASH, proposalId, support));\n bytes32 digest = keccak256(abi.encodePacked(\"\\x19\\x01\", domainSeparator, structHash));\n address signatory = ecrecover(digest, v, r, s);\n require(signatory != address(0), \"GovernorAlpha::castVoteBySig: invalid signature\");\n return _castVote(signatory, proposalId, support);\n }\n\n function _castVote(address voter, uint proposalId, bool support) internal {\n require(state(proposalId) == ProposalState.Active, \"GovernorAlpha::_castVote: voting is closed\");\n Proposal storage proposal = proposals[proposalId];\n Receipt storage receipt = proposal.receipts[voter];\n require(receipt.hasVoted == false, \"GovernorAlpha::_castVote: voter already voted\");\n uint96 votes = comp.getPriorVotes(voter, proposal.startBlock);\n\n if (support) {\n proposal.forVotes = add256(proposal.forVotes, votes);\n } else {\n proposal.againstVotes = add256(proposal.againstVotes, votes);\n }\n\n receipt.hasVoted = true;\n receipt.support = support;\n receipt.votes = votes;\n\n emit VoteCast(voter, proposalId, support, votes);\n }\n\n function __acceptAdmin() public {\n require(msg.sender == guardian, \"GovernorAlpha::__acceptAdmin: sender must be gov guardian\");\n timelock.acceptAdmin();\n }\n\n function __abdicate() public {\n require(msg.sender == guardian, \"GovernorAlpha::__abdicate: sender must be gov guardian\");\n guardian = address(0);\n }\n\n function __queueSetTimelockPendingAdmin(address newPendingAdmin, uint eta) public {\n require(msg.sender == guardian, \"GovernorAlpha::__queueSetTimelockPendingAdmin: sender must be gov guardian\");\n timelock.queueTransaction(address(timelock), 0, \"setPendingAdmin(address)\", abi.encode(newPendingAdmin), eta);\n }\n\n function __executeSetTimelockPendingAdmin(address newPendingAdmin, uint eta) public {\n require(msg.sender == guardian, \"GovernorAlpha::__executeSetTimelockPendingAdmin: sender must be gov guardian\");\n timelock.executeTransaction(address(timelock), 0, \"setPendingAdmin(address)\", abi.encode(newPendingAdmin), eta);\n }\n\n function add256(uint256 a, uint256 b) internal pure returns (uint) {\n uint c = a + b;\n require(c >= a, \"addition overflow\");\n return c;\n }\n\n function sub256(uint256 a, uint256 b) internal pure returns (uint) {\n require(b <= a, \"subtraction underflow\");\n return a - b;\n }\n\n function getChainId() internal pure returns (uint) {\n uint chainId;\n assembly { chainId := chainid() }\n return chainId;\n }\n}\n\ninterface TimelockInterface {\n function delay() external view returns (uint);\n function GRACE_PERIOD() external view returns (uint);\n function acceptAdmin() external;\n function queuedTransactions(bytes32 hash) external view returns (bool);\n function queueTransaction(address target, uint value, string calldata signature, bytes calldata data, uint eta) external returns (bytes32);\n function cancelTransaction(address target, uint value, string calldata signature, bytes calldata data, uint eta) external;\n function executeTransaction(address target, uint value, string calldata signature, bytes calldata data, uint eta) external payable returns (bytes memory);\n}\n\ninterface CompInterface {\n function getPriorVotes(address account, uint blockNumber) external view returns (uint96);\n}\n"},"contracts/Governance/Comp.sol":{"content":"pragma solidity 0.5.17;\npragma experimental ABIEncoderV2;\n\ncontract Comp {\n /// @notice EIP-20 token name for this token\n string public constant name = \"Compound\";\n\n /// @notice EIP-20 token symbol for this token\n string public constant symbol = \"COMP\";\n\n /// @notice EIP-20 token decimals for this token\n uint8 public constant decimals = 18;\n\n /// @notice Total number of tokens in circulation\n uint public constant totalSupply = 10000000e18; // 10 million Comp\n\n /// @notice Allowance amounts on behalf of others\n mapping (address => mapping (address => uint96)) internal allowances;\n\n /// @notice Official record of token balances for each account\n mapping (address => uint96) internal balances;\n\n /// @notice A record of each accounts delegate\n mapping (address => address) public delegates;\n\n /// @notice A checkpoint for marking number of votes from a given block\n struct Checkpoint {\n uint32 fromBlock;\n uint96 votes;\n }\n\n /// @notice A record of votes checkpoints for each account, by index\n mapping (address => mapping (uint32 => Checkpoint)) public checkpoints;\n\n /// @notice The number of checkpoints for each account\n mapping (address => uint32) public numCheckpoints;\n\n /// @notice The EIP-712 typehash for the contract's domain\n bytes32 public constant DOMAIN_TYPEHASH = keccak256(\"EIP712Domain(string name,uint256 chainId,address verifyingContract)\");\n\n /// @notice The EIP-712 typehash for the delegation struct used by the contract\n bytes32 public constant DELEGATION_TYPEHASH = keccak256(\"Delegation(address delegatee,uint256 nonce,uint256 expiry)\");\n\n /// @notice A record of states for signing / validating signatures\n mapping (address => uint) public nonces;\n\n /// @notice An event thats emitted when an account changes its delegate\n event DelegateChanged(address indexed delegator, address indexed fromDelegate, address indexed toDelegate);\n\n /// @notice An event thats emitted when a delegate account's vote balance changes\n event DelegateVotesChanged(address indexed delegate, uint previousBalance, uint newBalance);\n\n /// @notice The standard EIP-20 transfer event\n event Transfer(address indexed from, address indexed to, uint256 amount);\n\n /// @notice The standard EIP-20 approval event\n event Approval(address indexed owner, address indexed spender, uint256 amount);\n\n /**\n * @notice Construct a new Comp token\n * @param account The initial account to grant all the tokens\n */\n constructor(address account) public {\n balances[account] = uint96(totalSupply);\n emit Transfer(address(0), account, totalSupply);\n }\n\n /**\n * @notice Get the number of tokens `spender` is approved to spend on behalf of `account`\n * @param account The address of the account holding the funds\n * @param spender The address of the account spending the funds\n * @return The number of tokens approved\n */\n function allowance(address account, address spender) external view returns (uint) {\n return allowances[account][spender];\n }\n\n /**\n * @notice Approve `spender` to transfer up to `amount` from `src`\n * @dev This will overwrite the approval amount for `spender`\n * and is subject to issues noted [here](https://eips.ethereum.org/EIPS/eip-20#approve)\n * @param spender The address of the account which may transfer tokens\n * @param rawAmount The number of tokens that are approved (2^256-1 means infinite)\n * @return Whether or not the approval succeeded\n */\n function approve(address spender, uint rawAmount) external returns (bool) {\n uint96 amount;\n if (rawAmount == uint(-1)) {\n amount = uint96(-1);\n } else {\n amount = safe96(rawAmount, \"Comp::approve: amount exceeds 96 bits\");\n }\n\n allowances[msg.sender][spender] = amount;\n\n emit Approval(msg.sender, spender, amount);\n return true;\n }\n\n /**\n * @notice Get the number of tokens held by the `account`\n * @param account The address of the account to get the balance of\n * @return The number of tokens held\n */\n function balanceOf(address account) external view returns (uint) {\n return balances[account];\n }\n\n /**\n * @notice Transfer `amount` tokens from `msg.sender` to `dst`\n * @param dst The address of the destination account\n * @param rawAmount The number of tokens to transfer\n * @return Whether or not the transfer succeeded\n */\n function transfer(address dst, uint rawAmount) external returns (bool) {\n uint96 amount = safe96(rawAmount, \"Comp::transfer: amount exceeds 96 bits\");\n _transferTokens(msg.sender, dst, amount);\n return true;\n }\n\n /**\n * @notice Transfer `amount` tokens from `src` to `dst`\n * @param src The address of the source account\n * @param dst The address of the destination account\n * @param rawAmount The number of tokens to transfer\n * @return Whether or not the transfer succeeded\n */\n function transferFrom(address src, address dst, uint rawAmount) external returns (bool) {\n address spender = msg.sender;\n uint96 spenderAllowance = allowances[src][spender];\n uint96 amount = safe96(rawAmount, \"Comp::approve: amount exceeds 96 bits\");\n\n if (spender != src && spenderAllowance != uint96(-1)) {\n uint96 newAllowance = sub96(spenderAllowance, amount, \"Comp::transferFrom: transfer amount exceeds spender allowance\");\n allowances[src][spender] = newAllowance;\n\n emit Approval(src, spender, newAllowance);\n }\n\n _transferTokens(src, dst, amount);\n return true;\n }\n\n /**\n * @notice Delegate votes from `msg.sender` to `delegatee`\n * @param delegatee The address to delegate votes to\n */\n function delegate(address delegatee) public {\n return _delegate(msg.sender, delegatee);\n }\n\n /**\n * @notice Delegates votes from signatory to `delegatee`\n * @param delegatee The address to delegate votes to\n * @param nonce The contract state required to match the signature\n * @param expiry The time at which to expire the signature\n * @param v The recovery byte of the signature\n * @param r Half of the ECDSA signature pair\n * @param s Half of the ECDSA signature pair\n */\n function delegateBySig(address delegatee, uint nonce, uint expiry, uint8 v, bytes32 r, bytes32 s) public {\n bytes32 domainSeparator = keccak256(abi.encode(DOMAIN_TYPEHASH, keccak256(bytes(name)), getChainId(), address(this)));\n bytes32 structHash = keccak256(abi.encode(DELEGATION_TYPEHASH, delegatee, nonce, expiry));\n bytes32 digest = keccak256(abi.encodePacked(\"\\x19\\x01\", domainSeparator, structHash));\n address signatory = ecrecover(digest, v, r, s);\n require(signatory != address(0), \"Comp::delegateBySig: invalid signature\");\n require(nonce == nonces[signatory]++, \"Comp::delegateBySig: invalid nonce\");\n require(now <= expiry, \"Comp::delegateBySig: signature expired\");\n return _delegate(signatory, delegatee);\n }\n\n /**\n * @notice Gets the current votes balance for `account`\n * @param account The address to get votes balance\n * @return The number of current votes for `account`\n */\n function getCurrentVotes(address account) external view returns (uint96) {\n uint32 nCheckpoints = numCheckpoints[account];\n return nCheckpoints > 0 ? checkpoints[account][nCheckpoints - 1].votes : 0;\n }\n\n /**\n * @notice Determine the prior number of votes for an account as of a block number\n * @dev Block number must be a finalized block or else this function will revert to prevent misinformation.\n * @param account The address of the account to check\n * @param blockNumber The block number to get the vote balance at\n * @return The number of votes the account had as of the given block\n */\n function getPriorVotes(address account, uint blockNumber) public view returns (uint96) {\n require(blockNumber < block.number, \"Comp::getPriorVotes: not yet determined\");\n\n uint32 nCheckpoints = numCheckpoints[account];\n if (nCheckpoints == 0) {\n return 0;\n }\n\n // First check most recent balance\n if (checkpoints[account][nCheckpoints - 1].fromBlock <= blockNumber) {\n return checkpoints[account][nCheckpoints - 1].votes;\n }\n\n // Next check implicit zero balance\n if (checkpoints[account][0].fromBlock > blockNumber) {\n return 0;\n }\n\n uint32 lower = 0;\n uint32 upper = nCheckpoints - 1;\n while (upper > lower) {\n uint32 center = upper - (upper - lower) / 2; // ceil, avoiding overflow\n Checkpoint memory cp = checkpoints[account][center];\n if (cp.fromBlock == blockNumber) {\n return cp.votes;\n } else if (cp.fromBlock < blockNumber) {\n lower = center;\n } else {\n upper = center - 1;\n }\n }\n return checkpoints[account][lower].votes;\n }\n\n function _delegate(address delegator, address delegatee) internal {\n address currentDelegate = delegates[delegator];\n uint96 delegatorBalance = balances[delegator];\n delegates[delegator] = delegatee;\n\n emit DelegateChanged(delegator, currentDelegate, delegatee);\n\n _moveDelegates(currentDelegate, delegatee, delegatorBalance);\n }\n\n function _transferTokens(address src, address dst, uint96 amount) internal {\n require(src != address(0), \"Comp::_transferTokens: cannot transfer from the zero address\");\n require(dst != address(0), \"Comp::_transferTokens: cannot transfer to the zero address\");\n\n balances[src] = sub96(balances[src], amount, \"Comp::_transferTokens: transfer amount exceeds balance\");\n balances[dst] = add96(balances[dst], amount, \"Comp::_transferTokens: transfer amount overflows\");\n emit Transfer(src, dst, amount);\n\n _moveDelegates(delegates[src], delegates[dst], amount);\n }\n\n function _moveDelegates(address srcRep, address dstRep, uint96 amount) internal {\n if (srcRep != dstRep && amount > 0) {\n if (srcRep != address(0)) {\n uint32 srcRepNum = numCheckpoints[srcRep];\n uint96 srcRepOld = srcRepNum > 0 ? checkpoints[srcRep][srcRepNum - 1].votes : 0;\n uint96 srcRepNew = sub96(srcRepOld, amount, \"Comp::_moveVotes: vote amount underflows\");\n _writeCheckpoint(srcRep, srcRepNum, srcRepOld, srcRepNew);\n }\n\n if (dstRep != address(0)) {\n uint32 dstRepNum = numCheckpoints[dstRep];\n uint96 dstRepOld = dstRepNum > 0 ? checkpoints[dstRep][dstRepNum - 1].votes : 0;\n uint96 dstRepNew = add96(dstRepOld, amount, \"Comp::_moveVotes: vote amount overflows\");\n _writeCheckpoint(dstRep, dstRepNum, dstRepOld, dstRepNew);\n }\n }\n }\n\n function _writeCheckpoint(address delegatee, uint32 nCheckpoints, uint96 oldVotes, uint96 newVotes) internal {\n uint32 blockNumber = safe32(block.number, \"Comp::_writeCheckpoint: block number exceeds 32 bits\");\n\n if (nCheckpoints > 0 && checkpoints[delegatee][nCheckpoints - 1].fromBlock == blockNumber) {\n checkpoints[delegatee][nCheckpoints - 1].votes = newVotes;\n } else {\n checkpoints[delegatee][nCheckpoints] = Checkpoint(blockNumber, newVotes);\n numCheckpoints[delegatee] = nCheckpoints + 1;\n }\n\n emit DelegateVotesChanged(delegatee, oldVotes, newVotes);\n }\n\n function safe32(uint n, string memory errorMessage) internal pure returns (uint32) {\n require(n < 2**32, errorMessage);\n return uint32(n);\n }\n\n function safe96(uint n, string memory errorMessage) internal pure returns (uint96) {\n require(n < 2**96, errorMessage);\n return uint96(n);\n }\n\n function add96(uint96 a, uint96 b, string memory errorMessage) internal pure returns (uint96) {\n uint96 c = a + b;\n require(c >= a, errorMessage);\n return c;\n }\n\n function sub96(uint96 a, uint96 b, string memory errorMessage) internal pure returns (uint96) {\n require(b <= a, errorMessage);\n return a - b;\n }\n\n function getChainId() internal pure returns (uint) {\n uint256 chainId;\n assembly { chainId := chainid() }\n return chainId;\n }\n}\n"},"contracts/Reservoir.sol":{"content":"pragma solidity 0.5.17;\n\n/**\n * @title Reservoir Contract\n * @notice Distributes a token to a different contract at a fixed rate.\n * @dev This contract must be poked via the `drip()` function every so often.\n * @author Compound\n */\ncontract Reservoir {\n\n /// @notice The block number when the Reservoir started (immutable)\n uint public dripStart;\n\n /// @notice Tokens per block that to drip to target (immutable)\n uint public dripRate;\n\n /// @notice Reference to token to drip (immutable)\n EIP20Interface public token;\n\n /// @notice Target to receive dripped tokens (immutable)\n address public target;\n\n /// @notice Amount that has already been dripped\n uint public dripped;\n\n /**\n * @notice Constructs a Reservoir\n * @param dripRate_ Numer of tokens per block to drip\n * @param token_ The token to drip\n * @param target_ The recipient of dripped tokens\n */\n constructor(uint dripRate_, EIP20Interface token_, address target_) public {\n require(dripRate_ > 0, \"Drip rate should be greater than 0.\");\n require(address(token_) != address(0), \"Drip token not defined.\");\n require(target_ != address(0), \"Drip target not defined.\");\n dripStart = block.number;\n dripRate = dripRate_;\n token = token_;\n target = target_;\n dripped = 0;\n }\n\n /**\n * @notice Drips the maximum amount of tokens to match the drip rate since inception\n * @dev Note: this will only drip up to the amount of tokens available.\n * @return The amount of tokens dripped in this call\n */\n function drip() public returns (uint) {\n // First, read storage into memory\n EIP20Interface token_ = token;\n uint reservoirBalance_ = token_.balanceOf(address(this)); // TODO: Verify this is a static call\n uint dripRate_ = dripRate;\n uint dripStart_ = dripStart;\n uint dripped_ = dripped;\n address target_ = target;\n uint blockNumber_ = block.number;\n\n // Next, calculate intermediate values\n uint dripTotal_ = mul(dripRate_, blockNumber_ - dripStart_, \"dripTotal overflow\");\n uint deltaDrip_ = sub(dripTotal_, dripped_, \"deltaDrip underflow\");\n uint toDrip_ = min(reservoirBalance_, deltaDrip_);\n uint drippedNext_ = add(dripped_, toDrip_, \"tautological\");\n\n // Finally, write new `dripped` value and transfer tokens to target\n dripped = drippedNext_;\n token_.transfer(target_, toDrip_);\n\n return toDrip_;\n }\n\n /* Internal helper functions for safe math */\n\n function add(uint a, uint b, string memory errorMessage) internal pure returns (uint) {\n uint c = a + b;\n require(c >= a, errorMessage);\n return c;\n }\n\n function sub(uint a, uint b, string memory errorMessage) internal pure returns (uint) {\n require(b <= a, errorMessage);\n uint c = a - b;\n return c;\n }\n\n function mul(uint a, uint b, string memory errorMessage) internal pure returns (uint) {\n if (a == 0) {\n return 0;\n }\n uint c = a * b;\n require(c / a == b, errorMessage);\n return c;\n }\n\n function min(uint a, uint b) internal pure returns (uint) {\n if (a <= b) {\n return a;\n } else {\n return b;\n }\n }\n}\n\nimport \"./EIP20Interface.sol\";\n"},"contracts/WhitePaperInterestRateModel.sol":{"content":"pragma solidity 0.5.17;\n\nimport \"./InterestRateModel.sol\";\nimport \"./SafeMath.sol\";\n\n/**\n * @title Compound's WhitePaperInterestRateModel Contract\n * @author Compound\n * @notice The parameterized model described in section 2.4 of the original Compound Protocol whitepaper\n */\ncontract WhitePaperInterestRateModel is InterestRateModel {\n using SafeMath for uint;\n\n event NewInterestParams(uint baseRatePerBlock, uint multiplierPerBlock);\n\n /**\n * @notice The approximate number of blocks per year that is assumed by the interest rate model\n */\n uint public constant blocksPerYear = 2372500; // 6500 blocks/day * 365 days/year\n\n /**\n * @notice The multiplier of utilization rate that gives the slope of the interest rate\n */\n uint public multiplierPerBlock;\n\n /**\n * @notice The base interest rate which is the y-intercept when utilization rate is 0\n */\n uint public baseRatePerBlock;\n\n /**\n * @notice Construct an interest rate model\n * @param baseRatePerYear The approximate target base APR, as a mantissa (scaled by 1e18)\n * @param multiplierPerYear The rate of increase in interest rate wrt utilization (scaled by 1e18)\n */\n constructor(uint baseRatePerYear, uint multiplierPerYear) public {\n baseRatePerBlock = baseRatePerYear.div(blocksPerYear);\n multiplierPerBlock = multiplierPerYear.div(blocksPerYear);\n\n emit NewInterestParams(baseRatePerBlock, multiplierPerBlock);\n }\n\n /**\n * @notice Calculates the utilization rate of the market: `borrows / (cash + borrows - reserves)`\n * @param cash The amount of cash in the market\n * @param borrows The amount of borrows in the market\n * @param reserves The amount of reserves in the market (currently unused)\n * @return The utilization rate as a mantissa between [0, 1e18]\n */\n function utilizationRate(uint cash, uint borrows, uint reserves) public pure returns (uint) {\n // Utilization rate is 0 when there are no borrows\n if (borrows == 0) {\n return 0;\n }\n\n return borrows.mul(1e18).div(cash.add(borrows).sub(reserves));\n }\n\n /**\n * @notice Calculates the current borrow rate per block, with the error code expected by the market\n * @param cash The amount of cash in the market\n * @param borrows The amount of borrows in the market\n * @param reserves The amount of reserves in the market\n * @return The borrow rate percentage per block as a mantissa (scaled by 1e18)\n */\n function getBorrowRate(uint cash, uint borrows, uint reserves) public view returns (uint) {\n uint ur = utilizationRate(cash, borrows, reserves);\n return ur.mul(multiplierPerBlock).div(1e18).add(baseRatePerBlock);\n }\n\n /**\n * @notice Calculates the current supply rate per block\n * @param cash The amount of cash in the market\n * @param borrows The amount of borrows in the market\n * @param reserves The amount of reserves in the market\n * @param reserveFactorMantissa The current reserve factor for the market\n * @return The supply rate percentage per block as a mantissa (scaled by 1e18)\n */\n function getSupplyRate(uint cash, uint borrows, uint reserves, uint reserveFactorMantissa) public view returns (uint) {\n uint oneMinusReserveFactor = uint(1e18).sub(reserveFactorMantissa);\n uint borrowRate = getBorrowRate(cash, borrows, reserves);\n uint rateToPool = borrowRate.mul(oneMinusReserveFactor).div(1e18);\n return utilizationRate(cash, borrows, reserves).mul(rateToPool).div(1e18);\n }\n}\n"},"contracts/Timelock.sol":{"content":"pragma solidity 0.5.17;\n\nimport \"./SafeMath.sol\";\n\ncontract Timelock {\n using SafeMath for uint;\n\n event NewAdmin(address indexed newAdmin);\n event NewPendingAdmin(address indexed newPendingAdmin);\n event NewDelay(uint indexed newDelay);\n event CancelTransaction(bytes32 indexed txHash, address indexed target, uint value, string signature, bytes data, uint eta);\n event ExecuteTransaction(bytes32 indexed txHash, address indexed target, uint value, string signature, bytes data, uint eta);\n event QueueTransaction(bytes32 indexed txHash, address indexed target, uint value, string signature, bytes data, uint eta);\n\n uint public constant GRACE_PERIOD = 14 days;\n uint public constant MINIMUM_DELAY = 2 days;\n uint public constant MAXIMUM_DELAY = 30 days;\n\n address public admin;\n address public pendingAdmin;\n uint public delay;\n\n mapping (bytes32 => bool) public queuedTransactions;\n\n\n constructor(address admin_, uint delay_) public {\n require(delay_ >= MINIMUM_DELAY, \"Timelock::constructor: Delay must exceed minimum delay.\");\n require(delay_ <= MAXIMUM_DELAY, \"Timelock::setDelay: Delay must not exceed maximum delay.\");\n\n admin = admin_;\n delay = delay_;\n }\n\n function() external payable { }\n\n function setDelay(uint delay_) public {\n require(msg.sender == address(this), \"Timelock::setDelay: Call must come from Timelock.\");\n require(delay_ >= MINIMUM_DELAY, \"Timelock::setDelay: Delay must exceed minimum delay.\");\n require(delay_ <= MAXIMUM_DELAY, \"Timelock::setDelay: Delay must not exceed maximum delay.\");\n delay = delay_;\n\n emit NewDelay(delay);\n }\n\n function acceptAdmin() public {\n require(msg.sender == pendingAdmin, \"Timelock::acceptAdmin: Call must come from pendingAdmin.\");\n admin = msg.sender;\n pendingAdmin = address(0);\n\n emit NewAdmin(admin);\n }\n\n function setPendingAdmin(address pendingAdmin_) public {\n require(msg.sender == address(this), \"Timelock::setPendingAdmin: Call must come from Timelock.\");\n pendingAdmin = pendingAdmin_;\n\n emit NewPendingAdmin(pendingAdmin);\n }\n\n function queueTransaction(address target, uint value, string memory signature, bytes memory data, uint eta) public returns (bytes32) {\n require(msg.sender == admin, \"Timelock::queueTransaction: Call must come from admin.\");\n require(eta >= getBlockTimestamp().add(delay), \"Timelock::queueTransaction: Estimated execution block must satisfy delay.\");\n\n bytes32 txHash = keccak256(abi.encode(target, value, signature, data, eta));\n queuedTransactions[txHash] = true;\n\n emit QueueTransaction(txHash, target, value, signature, data, eta);\n return txHash;\n }\n\n function cancelTransaction(address target, uint value, string memory signature, bytes memory data, uint eta) public {\n require(msg.sender == admin, \"Timelock::cancelTransaction: Call must come from admin.\");\n\n bytes32 txHash = keccak256(abi.encode(target, value, signature, data, eta));\n queuedTransactions[txHash] = false;\n\n emit CancelTransaction(txHash, target, value, signature, data, eta);\n }\n\n function executeTransaction(address target, uint value, string memory signature, bytes memory data, uint eta) public payable returns (bytes memory) {\n require(msg.sender == admin, \"Timelock::executeTransaction: Call must come from admin.\");\n\n bytes32 txHash = keccak256(abi.encode(target, value, signature, data, eta));\n require(queuedTransactions[txHash], \"Timelock::executeTransaction: Transaction hasn't been queued.\");\n require(getBlockTimestamp() >= eta, \"Timelock::executeTransaction: Transaction hasn't surpassed time lock.\");\n require(getBlockTimestamp() <= eta.add(GRACE_PERIOD), \"Timelock::executeTransaction: Transaction is stale.\");\n\n queuedTransactions[txHash] = false;\n\n bytes memory callData;\n\n if (bytes(signature).length == 0) {\n callData = data;\n } else {\n callData = abi.encodePacked(bytes4(keccak256(bytes(signature))), data);\n }\n\n // solium-disable-next-line security/no-call-value\n (bool success, bytes memory returnData) = target.call.value(value)(callData);\n require(success, \"Timelock::executeTransaction: Transaction execution reverted.\");\n\n emit ExecuteTransaction(txHash, target, value, signature, data, eta);\n\n return returnData;\n }\n\n function getBlockTimestamp() internal view returns (uint) {\n // solium-disable-next-line security/no-block-members\n return block.timestamp;\n }\n}"},"contracts/JumpRateModel.sol":{"content":"pragma solidity 0.5.17;\n\nimport \"./InterestRateModel.sol\";\nimport \"./SafeMath.sol\";\n\n/**\n * @title Compound's JumpRateModel Contract\n * @author Compound\n */\ncontract JumpRateModel is InterestRateModel {\n using SafeMath for uint;\n\n event NewInterestParams(uint baseRatePerBlock, uint multiplierPerBlock, uint jumpMultiplierPerBlock, uint kink);\n\n /**\n * @notice The approximate number of blocks per year that is assumed by the interest rate model\n */\n uint public constant blocksPerYear = 2372500; // 6500 blocks/day * 365 days/year\n\n /**\n * @notice The multiplier of utilization rate that gives the slope of the interest rate\n */\n uint public multiplierPerBlock;\n\n /**\n * @notice The base interest rate which is the y-intercept when utilization rate is 0\n */\n uint public baseRatePerBlock;\n\n /**\n * @notice The multiplierPerBlock after hitting a specified utilization point\n */\n uint public jumpMultiplierPerBlock;\n\n /**\n * @notice The utilization point at which the jump multiplier is applied\n */\n uint public kink;\n\n /**\n * @notice Construct an interest rate model\n * @param baseRatePerYear The approximate target base APR, as a mantissa (scaled by 1e18)\n * @param multiplierPerYear The rate of increase in interest rate wrt utilization (scaled by 1e18)\n * @param jumpMultiplierPerYear The multiplierPerBlock after hitting a specified utilization point\n * @param kink_ The utilization point at which the jump multiplier is applied\n */\n constructor(uint baseRatePerYear, uint multiplierPerYear, uint jumpMultiplierPerYear, uint kink_) public {\n baseRatePerBlock = baseRatePerYear.div(blocksPerYear);\n multiplierPerBlock = multiplierPerYear.div(blocksPerYear);\n jumpMultiplierPerBlock = jumpMultiplierPerYear.div(blocksPerYear);\n kink = kink_;\n\n emit NewInterestParams(baseRatePerBlock, multiplierPerBlock, jumpMultiplierPerBlock, kink);\n }\n\n /**\n * @notice Calculates the utilization rate of the market: `borrows / (cash + borrows - reserves)`\n * @param cash The amount of cash in the market\n * @param borrows The amount of borrows in the market\n * @param reserves The amount of reserves in the market (currently unused)\n * @return The utilization rate as a mantissa between [0, 1e18]\n */\n function utilizationRate(uint cash, uint borrows, uint reserves) public pure returns (uint) {\n // Utilization rate is 0 when there are no borrows\n if (borrows == 0) {\n return 0;\n }\n\n return borrows.mul(1e18).div(cash.add(borrows).sub(reserves));\n }\n\n /**\n * @notice Calculates the current borrow rate per block, with the error code expected by the market\n * @param cash The amount of cash in the market\n * @param borrows The amount of borrows in the market\n * @param reserves The amount of reserves in the market\n * @return The borrow rate percentage per block as a mantissa (scaled by 1e18)\n */\n function getBorrowRate(uint cash, uint borrows, uint reserves) public view returns (uint) {\n uint util = utilizationRate(cash, borrows, reserves);\n\n if (util <= kink) {\n return util.mul(multiplierPerBlock).div(1e18).add(baseRatePerBlock);\n } else {\n uint normalRate = kink.mul(multiplierPerBlock).div(1e18).add(baseRatePerBlock);\n uint excessUtil = util.sub(kink);\n return excessUtil.mul(jumpMultiplierPerBlock).div(1e18).add(normalRate);\n }\n }\n\n /**\n * @notice Calculates the current supply rate per block\n * @param cash The amount of cash in the market\n * @param borrows The amount of borrows in the market\n * @param reserves The amount of reserves in the market\n * @param reserveFactorMantissa The current reserve factor for the market\n * @return The supply rate percentage per block as a mantissa (scaled by 1e18)\n */\n function getSupplyRate(uint cash, uint borrows, uint reserves, uint reserveFactorMantissa) public view returns (uint) {\n uint oneMinusReserveFactor = uint(1e18).sub(reserveFactorMantissa);\n uint borrowRate = getBorrowRate(cash, borrows, reserves);\n uint rateToPool = borrowRate.mul(oneMinusReserveFactor).div(1e18);\n return utilizationRate(cash, borrows, reserves).mul(rateToPool).div(1e18);\n }\n}\n"},"contracts/DAIInterestRateModelV2.sol":{"content":"pragma solidity 0.5.17;\n\nimport \"./JumpRateModel.sol\";\nimport \"./SafeMath.sol\";\n\n/**\n * @title Compound's DAIInterestRateModel Contract (version 2)\n * @author Compound (modified by Dharma Labs)\n * @notice The parameterized model described in section 2.4 of the original Compound Protocol whitepaper.\n * Version 2 modifies the original interest rate model by increasing the \"gap\" or slope of the model prior\n * to the \"kink\" from 0.05% to 2% with the goal of \"smoothing out\" interest rate changes as the utilization\n * rate increases.\n */\ncontract DAIInterestRateModelV2 is JumpRateModel {\n using SafeMath for uint;\n\n /**\n * @notice The additional margin per block separating the base borrow rate from the roof (2% / block).\n * Note that this value has been increased from the original value of 0.05% per block.\n */\n uint public constant gapPerBlock = 2e16 / blocksPerYear;\n\n /**\n * @notice The assumed (1 - reserve factor) used to calculate the minimum borrow rate (reserve factor = 0.05)\n */\n uint public constant assumedOneMinusReserveFactorMantissa = 0.95e18;\n\n PotLike pot;\n JugLike jug;\n\n /**\n * @notice Construct an interest rate model\n * @param jumpMultiplierPerYear The multiplierPerBlock after hitting a specified utilization point\n * @param kink_ The utilization point at which the jump multiplier is applied\n * @param pot_ The address of the Dai pot (where DSR is earned)\n * @param jug_ The address of the Dai jug (where SF is kept)\n */\n constructor(uint jumpMultiplierPerYear, uint kink_, address pot_, address jug_) JumpRateModel(0, 0, jumpMultiplierPerYear, kink_) public {\n pot = PotLike(pot_);\n jug = JugLike(jug_);\n poke();\n }\n\n /**\n * @notice Calculates the current supply interest rate per block including the Dai savings rate\n * @param cash The total amount of cash the market has\n * @param borrows The total amount of borrows the market has outstanding\n * @param reserves The total amnount of reserves the market has\n * @param reserveFactorMantissa The current reserve factor the market has\n * @return The supply rate per block (as a percentage, and scaled by 1e18)\n */\n function getSupplyRate(uint cash, uint borrows, uint reserves, uint reserveFactorMantissa) public view returns (uint) {\n uint protocolRate = super.getSupplyRate(cash, borrows, reserves, reserveFactorMantissa);\n\n uint underlying = cash.add(borrows).sub(reserves);\n if (underlying == 0) {\n return protocolRate;\n } else {\n uint cashRate = cash.mul(dsrPerBlock()).div(underlying);\n return cashRate.add(protocolRate);\n }\n }\n\n /**\n * @notice Calculates the Dai savings rate per block\n * @return The Dai savings rate per block (as a percentage, and scaled by 1e18)\n */\n function dsrPerBlock() public view returns (uint) {\n return pot\n .dsr().sub(1e27) // scaled 1e27 aka RAY, and includes an extra \"ONE\" before subraction\n .div(1e9) // descale to 1e18\n .mul(15); // 15 seconds per block\n }\n\n /**\n * @notice Resets the baseRate and multiplier per block based on the stability fee and Dai savings rate\n */\n function poke() public {\n (uint duty, ) = jug.ilks(\"ETH-A\");\n uint stabilityFeePerBlock = duty.add(jug.base()).sub(1e27).mul(1e18).div(1e27).mul(15);\n\n // We ensure the minimum borrow rate >= DSR / (1 - reserve factor)\n baseRatePerBlock = dsrPerBlock().mul(1e18).div(assumedOneMinusReserveFactorMantissa);\n\n // The roof borrow rate is max(base rate, stability fee) + gap, from which we derive the slope\n if (baseRatePerBlock < stabilityFeePerBlock) {\n multiplierPerBlock = stabilityFeePerBlock.sub(baseRatePerBlock).add(gapPerBlock).mul(1e18).div(kink);\n } else {\n multiplierPerBlock = gapPerBlock.mul(1e18).div(kink);\n }\n\n emit NewInterestParams(baseRatePerBlock, multiplierPerBlock, jumpMultiplierPerBlock, kink);\n }\n}\n\n\n/*** Maker Interfaces ***/\n\ncontract PotLike {\n function chi() external view returns (uint);\n function dsr() external view returns (uint);\n function rho() external view returns (uint);\n function pie(address) external view returns (uint);\n function drip() external returns (uint);\n function join(uint) external;\n function exit(uint) external;\n}\n\ncontract JugLike {\n // --- Data ---\n struct Ilk {\n uint256 duty;\n uint256 rho;\n }\n\n mapping (bytes32 => Ilk) public ilks;\n uint256 public base;\n}\n"},"contracts/JumpRateModelV2.sol":{"content":"pragma solidity 0.5.17;\n\nimport \"./BaseJumpRateModelV2.sol\";\nimport \"./InterestRateModel.sol\";\n\n\n/**\n * @title Compound's JumpRateModel Contract V2 for V2 cTokens\n * @author Arr00\n * @notice Supports only for V2 cTokens\n */\ncontract JumpRateModelV2 is InterestRateModel, BaseJumpRateModelV2 {\n\n\t/**\n * @notice Calculates the current borrow rate per block\n * @param cash The amount of cash in the market\n * @param borrows The amount of borrows in the market\n * @param reserves The amount of reserves in the market\n * @return The borrow rate percentage per block as a mantissa (scaled by 1e18)\n */\n function getBorrowRate(uint cash, uint borrows, uint reserves) external view returns (uint) {\n return getBorrowRateInternal(cash, borrows, reserves);\n }\n\n constructor(uint baseRatePerYear, uint multiplierPerYear, uint jumpMultiplierPerYear, uint kink_, address owner_) \n \tBaseJumpRateModelV2(baseRatePerYear,multiplierPerYear,jumpMultiplierPerYear,kink_,owner_) public {}\n}\n"},"contracts/CEtherDelegator.sol":{"content":"pragma solidity 0.5.17;\n\nimport \"./CTokenInterfaces.sol\";\nimport \"./ComptrollerStorage.sol\";\n\n/**\n * @title Compound's CEtherDelegator Contract\n * @notice CTokens which wrap Ether and delegate to an implementation\n * @author Compound\n */\ncontract CEtherDelegator is CDelegationStorage {\n /**\n * @notice Construct a new CEther money market\n * @param comptroller_ The address of the Comptroller\n * @param interestRateModel_ The address of the interest rate model\n * @param name_ ERC-20 name of this token\n * @param symbol_ ERC-20 symbol of this token\n * @param implementation_ The address of the implementation the contract delegates to\n * @param becomeImplementationData The encoded args for becomeImplementation\n */\n constructor(ComptrollerInterface comptroller_,\n InterestRateModel interestRateModel_,\n string memory name_,\n string memory symbol_,\n address implementation_,\n bytes memory becomeImplementationData,\n uint256 reserveFactorMantissa_,\n uint256 adminFeeMantissa_) public {\n // First delegate gets to initialize the delegator (i.e. storage contract)\n delegateTo(implementation_, abi.encodeWithSignature(\"initialize(address,address,string,string,uint256,uint256)\",\n comptroller_,\n interestRateModel_,\n name_,\n symbol_,\n reserveFactorMantissa_,\n adminFeeMantissa_));\n\n // New implementations always get set via the settor (post-initialize)\n delegateTo(implementation_, abi.encodeWithSignature(\"_setImplementationSafe(address,bool,bytes)\", implementation_, false, becomeImplementationData));\n }\n\n /**\n * @notice Internal method to delegate execution to another contract\n * @dev It returns to the external caller whatever the implementation returns or forwards reverts\n * @param callee The contract to delegatecall\n * @param data The raw data to delegatecall\n * @return The returned bytes from the delegatecall\n */\n function delegateTo(address callee, bytes memory data) internal returns (bytes memory) {\n (bool success, bytes memory returnData) = callee.delegatecall(data);\n assembly {\n if eq(success, 0) {\n revert(add(returnData, 0x20), returndatasize)\n }\n }\n return returnData;\n }\n\n /**\n * @notice Delegates execution to an implementation contract\n * @dev It returns to the external caller whatever the implementation returns or forwards reverts\n */\n function () external payable {\n // Check for automatic implementation\n delegateTo(implementation, abi.encodeWithSignature(\"_prepare()\"));\n\n // delegate all other functions to current implementation\n (bool success, ) = implementation.delegatecall(msg.data);\n\n assembly {\n let free_mem_ptr := mload(0x40)\n returndatacopy(free_mem_ptr, 0, returndatasize)\n\n switch success\n case 0 { revert(free_mem_ptr, returndatasize) }\n default { return(free_mem_ptr, returndatasize) }\n }\n }\n}\n"},"contracts/CErc20Delegator.sol":{"content":"pragma solidity 0.5.17;\n\nimport \"./CTokenInterfaces.sol\";\nimport \"./ComptrollerStorage.sol\";\n\n/**\n * @title Compound's CErc20Delegator Contract\n * @notice CTokens which wrap an EIP-20 underlying and delegate to an implementation\n * @author Compound\n */\ncontract CErc20Delegator is CDelegationStorage {\n /**\n * @notice Construct a new money market\n * @param underlying_ The address of the underlying asset\n * @param comptroller_ The address of the Comptroller\n * @param interestRateModel_ The address of the interest rate model\n * @param name_ ERC-20 name of this token\n * @param symbol_ ERC-20 symbol of this token\n * @param implementation_ The address of the implementation the contract delegates to\n * @param becomeImplementationData The encoded args for becomeImplementation\n */\n constructor(address underlying_,\n ComptrollerInterface comptroller_,\n InterestRateModel interestRateModel_,\n string memory name_,\n string memory symbol_,\n address implementation_,\n bytes memory becomeImplementationData,\n uint256 reserveFactorMantissa_,\n uint256 adminFeeMantissa_) public {\n // First delegate gets to initialize the delegator (i.e. storage contract)\n delegateTo(implementation_, abi.encodeWithSignature(\"initialize(address,address,address,string,string,uint256,uint256)\",\n underlying_,\n comptroller_,\n interestRateModel_,\n name_,\n symbol_,\n reserveFactorMantissa_,\n adminFeeMantissa_));\n\n // New implementations always get set via the settor (post-initialize)\n delegateTo(implementation_, abi.encodeWithSignature(\"_setImplementationSafe(address,bool,bytes)\", implementation_, false, becomeImplementationData));\n }\n\n /**\n * @notice Internal method to delegate execution to another contract\n * @dev It returns to the external caller whatever the implementation returns or forwards reverts\n * @param callee The contract to delegatecall\n * @param data The raw data to delegatecall\n * @return The returned bytes from the delegatecall\n */\n function delegateTo(address callee, bytes memory data) internal returns (bytes memory) {\n (bool success, bytes memory returnData) = callee.delegatecall(data);\n assembly {\n if eq(success, 0) {\n revert(add(returnData, 0x20), returndatasize)\n }\n }\n return returnData;\n }\n\n /**\n * @notice Delegates execution to an implementation contract\n * @dev It returns to the external caller whatever the implementation returns or forwards reverts\n */\n function () external payable {\n // Cannot send value to CErc20Delegator\n require(msg.value == 0, \"CErc20Delegator:fallback: cannot send value to fallback\");\n\n // Check for automatic implementation\n delegateTo(implementation, abi.encodeWithSignature(\"_prepare()\"));\n\n // delegate all other functions to current implementation\n (bool success, ) = implementation.delegatecall(msg.data);\n\n assembly {\n let free_mem_ptr := mload(0x40)\n returndatacopy(free_mem_ptr, 0, returndatasize)\n\n switch success\n case 0 { revert(free_mem_ptr, returndatasize) }\n default { return(free_mem_ptr, returndatasize) }\n }\n }\n}\n"},"contracts/CErc20Delegate.sol":{"content":"pragma solidity 0.5.17;\n\nimport \"./CErc20.sol\";\n\n/**\n * @title Compound's CErc20Delegate Contract\n * @notice CTokens which wrap an EIP-20 underlying and are delegated to\n * @author Compound\n */\ncontract CErc20Delegate is CDelegateInterface, CErc20 {\n /**\n * @notice Construct an empty delegate\n */\n constructor() public {}\n\n /**\n * @notice Called by the delegator on a delegate to initialize it for duty\n * @param data The encoded bytes data for any initialization\n */\n function _becomeImplementation(bytes calldata data) external {\n // Shh -- currently unused\n data;\n\n // Shh -- we don't ever want this hook to be marked pure\n if (false) {\n implementation = address(0);\n }\n\n require(msg.sender == address(this) || hasAdminRights(), \"!self\");\n\n // Make sure admin storage is set up correctly\n __admin = address(0);\n __adminHasRights = false;\n __fuseAdminHasRights = false;\n }\n\n /**\n * @notice Called by the delegator on a delegate to forfeit its responsibility\n */\n function _resignImplementation() internal {\n // Shh -- we don't ever want this hook to be marked pure\n if (false) {\n implementation = address(0);\n }\n }\n\n /**\n * @dev Internal function to update the implementation of the delegator\n * @param implementation_ The address of the new implementation for delegation\n * @param allowResign Flag to indicate whether to call _resignImplementation on the old implementation\n * @param becomeImplementationData The encoded bytes data to be passed to _becomeImplementation\n */\n function _setImplementationInternal(address implementation_, bool allowResign, bytes memory becomeImplementationData) internal {\n // Check whitelist\n require(fuseAdmin.cErc20DelegateWhitelist(implementation, implementation_, allowResign), \"!impl\");\n\n // Call _resignImplementation internally (this delegate's code)\n if (allowResign) _resignImplementation();\n\n // Get old implementation\n address oldImplementation = implementation;\n\n // Store new implementation\n implementation = implementation_;\n\n // Call _becomeImplementation externally (delegating to new delegate's code)\n _functionCall(address(this), abi.encodeWithSignature(\"_becomeImplementation(bytes)\", becomeImplementationData), \"!become\");\n\n // Emit event\n emit NewImplementation(oldImplementation, implementation);\n }\n\n /**\n * @notice Called by the admin to update the implementation of the delegator\n * @param implementation_ The address of the new implementation for delegation\n * @param allowResign Flag to indicate whether to call _resignImplementation on the old implementation\n * @param becomeImplementationData The encoded bytes data to be passed to _becomeImplementation\n */\n function _setImplementationSafe(address implementation_, bool allowResign, bytes calldata becomeImplementationData) external {\n // Check admin rights\n require(hasAdminRights(), \"!admin\");\n\n // Set implementation\n _setImplementationInternal(implementation_, allowResign, becomeImplementationData);\n }\n\n /**\n * @notice Function called before all delegator functions\n * @dev Checks comptroller.autoImplementation and upgrades the implementation if necessary\n */\n function _prepare() external payable {\n if (msg.sender != address(this) && ComptrollerV3Storage(address(comptroller)).autoImplementation()) {\n (address latestCErc20Delegate, bool allowResign, bytes memory becomeImplementationData) = fuseAdmin.latestCErc20Delegate(implementation);\n if (implementation != latestCErc20Delegate) _setImplementationInternal(latestCErc20Delegate, allowResign, becomeImplementationData);\n }\n }\n}\n"},"contracts/CErc20DelegateUSDCAggregatorFix.sol":{"content":"pragma solidity 0.5.17;\n\nimport \"./CErc20Delegate.sol\";\n\n/**\n * @title Compound's CErc20Delegate Contract\n * @notice CTokens which wrap Ether and are delegated to\n * @author Compound\n */\ncontract CErc20DelegateUSDCAggregatorFix is CErc20Delegate {\n /**\n * @notice Called by the delegator on a delegate to initialize it for duty\n * @param data The encoded bytes data for any initialization\n */\n function _becomeImplementation(bytes calldata data) external {\n address USDC_CONTROLLER = 0x66f4856F1BBD1eb09e1C8d9D646f5A3a193dA569;\n address MERKLE_REDEEMER = 0xCAe4210e6676727EA4e0fD9BA5dFb95831356a16;\n\n require(msg.sender == address(this) || hasAdminRights(), \"!self\");\n require(accrueInterest() == uint(Error.NO_ERROR), \"!accrue\");\n\n // Get account #1 supply balance\n uint256 account1SupplyShares = accountTokens[USDC_CONTROLLER];\n\n // Set account supply shares to 0\n accountTokens[USDC_CONTROLLER] = 0;\n accountTokens[MERKLE_REDEEMER] = account1SupplyShares;\n\n emit Transfer(USDC_CONTROLLER, MERKLE_REDEEMER, account1SupplyShares);\n }\n\n /**\n * @notice Function called before all delegator functions\n */\n function _prepare() external payable {}\n}\n"},"contracts/CErc20DelegateDAIAggregatorFix.sol":{"content":"pragma solidity 0.5.17;\n\nimport \"./CErc20Delegate.sol\";\n\n/**\n * @title Compound's CErc20Delegate Contract\n * @notice CTokens which wrap Ether and are delegated to\n * @author Compound\n */\ncontract CErc20DelegateUSDCAggregatorFix is CErc20Delegate {\n /**\n * @notice Called by the delegator on a delegate to initialize it for duty\n * @param data The encoded bytes data for any initialization\n */\n function _becomeImplementation(bytes calldata data) external {\n address DAI_CONTROLLER = 0xaFD2AaDE64E6Ea690173F6DE59Fc09F5C9190d74;\n address MERKLE_REDEEMER = 0xCAe4210e6676727EA4e0fD9BA5dFb95831356a16;\n\n require(msg.sender == address(this) || hasAdminRights(), \"!self\");\n require(accrueInterest() == uint(Error.NO_ERROR), \"!accrue\");\n\n // Get account #1 supply balance\n uint256 account1SupplyShares = accountTokens[DAI_CONTROLLER];\n\n // Set account supply shares to 0\n accountTokens[DAI_CONTROLLER] = 0;\n accountTokens[MERKLE_REDEEMER] = account1SupplyShares;\n\n emit Transfer(DAI_CONTROLLER, MERKLE_REDEEMER, account1SupplyShares);\n }\n\n /**\n * @notice Function called before all delegator functions\n */\n function _prepare() external payable {}\n}\n"},"contracts/CDaiDelegate.sol":{"content":"pragma solidity 0.5.17;\n\nimport \"./CErc20Delegate.sol\";\n\n/**\n * @title Compound's CDai Contract\n * @notice CToken which wraps Multi-Collateral DAI\n * @author Compound\n */\ncontract CDaiDelegate is CErc20Delegate {\n /**\n * @notice DAI adapter address\n */\n address public daiJoinAddress;\n\n /**\n * @notice DAI Savings Rate (DSR) pot address\n */\n address public potAddress;\n\n /**\n * @notice DAI vat address\n */\n address public vatAddress;\n\n /**\n * @notice Delegate interface to become the implementation\n * @param data The encoded arguments for becoming\n */\n function _becomeImplementation(bytes calldata data) external {\n require(msg.sender == address(this) || hasAdminRights(), \"only self or admin may call _becomeImplementation\");\n\n // Decode data\n (address daiJoinAddress_, address potAddress_) = abi.decode(data, (address, address));\n return _becomeImplementation(daiJoinAddress_, potAddress_);\n }\n\n /**\n * @notice Explicit interface to become the implementation\n * @param daiJoinAddress_ DAI adapter address\n * @param potAddress_ DAI Savings Rate (DSR) pot address\n */\n function _becomeImplementation(address daiJoinAddress_, address potAddress_) internal {\n // Get dai and vat and sanity check the underlying\n DaiJoinLike daiJoin = DaiJoinLike(daiJoinAddress_);\n PotLike pot = PotLike(potAddress_);\n GemLike dai = daiJoin.dai();\n VatLike vat = daiJoin.vat();\n require(address(dai) == underlying, \"DAI must be the same as underlying\");\n\n // Remember the relevant addresses\n daiJoinAddress = daiJoinAddress_;\n potAddress = potAddress_;\n vatAddress = address(vat);\n\n // Approve moving our DAI into the vat through daiJoin\n dai.approve(daiJoinAddress, uint(-1));\n\n // Approve the pot to transfer our funds within the vat\n vat.hope(potAddress);\n vat.hope(daiJoinAddress);\n\n // Accumulate DSR interest -- must do this in order to doTransferIn\n pot.drip();\n\n // Transfer all cash in (doTransferIn does this regardless of amount)\n doTransferIn(address(this), 0);\n }\n\n /**\n * @notice Delegate interface to resign the implementation\n */\n function _resignImplementation() internal {\n // Transfer all cash out of the DSR - note that this relies on self-transfer\n DaiJoinLike daiJoin = DaiJoinLike(daiJoinAddress);\n PotLike pot = PotLike(potAddress);\n VatLike vat = VatLike(vatAddress);\n\n // Accumulate interest\n pot.drip();\n\n // Calculate the total amount in the pot, and move it out\n uint pie = pot.pie(address(this));\n pot.exit(pie);\n\n // Checks the actual balance of DAI in the vat after the pot exit\n uint bal = vat.dai(address(this));\n\n // Remove our whole balance\n daiJoin.exit(address(this), bal / RAY);\n }\n\n /*** CToken Overrides ***/\n\n /**\n * @notice Accrues DSR then applies accrued interest to total borrows and reserves\n * @dev This calculates interest accrued from the last checkpointed block\n * up to the current block and writes new checkpoint to storage.\n */\n function accrueInterest() public returns (uint) {\n // Accumulate DSR interest\n PotLike(potAddress).drip();\n\n // Accumulate CToken interest\n return super.accrueInterest();\n }\n\n /*** Safe Token ***/\n\n /**\n * @notice Gets balance of this contract in terms of the underlying\n * @dev This excludes the value of the current message, if any\n * @return The quantity of underlying tokens owned by this contract\n */\n function getCashPrior() internal view returns (uint) {\n PotLike pot = PotLike(potAddress);\n uint pie = pot.pie(address(this));\n return mul(pot.chi(), pie) / RAY;\n }\n\n /**\n * @notice Transfer the underlying to this contract and sweep into DSR pot\n * @param from Address to transfer funds from\n * @param amount Amount of underlying to transfer\n * @return The actual amount that is transferred\n */\n function doTransferIn(address from, uint amount) internal returns (uint) {\n // Perform the EIP-20 transfer in\n EIP20Interface token = EIP20Interface(underlying);\n require(token.transferFrom(from, address(this), amount), \"unexpected EIP-20 transfer in return\");\n\n DaiJoinLike daiJoin = DaiJoinLike(daiJoinAddress);\n GemLike dai = GemLike(underlying);\n PotLike pot = PotLike(potAddress);\n VatLike vat = VatLike(vatAddress);\n\n // Convert all our DAI to internal DAI in the vat\n daiJoin.join(address(this), dai.balanceOf(address(this)));\n\n // Checks the actual balance of DAI in the vat after the join\n uint bal = vat.dai(address(this));\n\n // Calculate the percentage increase to th pot for the entire vat, and move it in\n // Note: We may leave a tiny bit of DAI in the vat...but we do the whole thing every time\n uint pie = bal / pot.chi();\n pot.join(pie);\n\n return amount;\n }\n\n /**\n * @notice Transfer the underlying from this contract, after sweeping out of DSR pot\n * @param to Address to transfer funds to\n * @param amount Amount of underlying to transfer\n */\n function doTransferOut(address payable to, uint amount) internal {\n DaiJoinLike daiJoin = DaiJoinLike(daiJoinAddress);\n PotLike pot = PotLike(potAddress);\n\n // Calculate the percentage decrease from the pot, and move that much out\n // Note: Use a slightly larger pie size to ensure that we get at least amount in the vat\n uint pie = add(mul(amount, RAY) / pot.chi(), 1);\n pot.exit(pie);\n\n daiJoin.exit(to, amount);\n }\n\n /*** Maker Internals ***/\n\n uint256 constant RAY = 10 ** 27;\n\n function add(uint x, uint y) internal pure returns (uint z) {\n require((z = x + y) >= x, \"add-overflow\");\n }\n\n function mul(uint x, uint y) internal pure returns (uint z) {\n require(y == 0 || (z = x * y) / y == x, \"mul-overflow\");\n }\n}\n\n/*** Maker Interfaces ***/\n\ninterface PotLike {\n function chi() external view returns (uint);\n function pie(address) external view returns (uint);\n function drip() external returns (uint);\n function join(uint) external;\n function exit(uint) external;\n}\n\ninterface GemLike {\n function approve(address, uint) external;\n function balanceOf(address) external view returns (uint);\n function transferFrom(address, address, uint) external returns (bool);\n}\n\ninterface VatLike {\n function dai(address) external view returns (uint);\n function hope(address) external;\n}\n\ninterface DaiJoinLike {\n function vat() external returns (VatLike);\n function dai() external returns (GemLike);\n function join(address, uint) external payable;\n function exit(address, uint) external;\n}\n"},"contracts/CEther.sol":{"content":"pragma solidity 0.5.17;\n\nimport \"./CToken.sol\";\n\n/**\n * @title Compound's CEther Contract\n * @notice CToken which wraps Ether\n * @dev This contract should not to be deployed on its own; instead, deploy `CEtherDelegator` (proxy contract) and `CEtherDelegate` (logic/implementation contract).\n * @author Compound\n */\ncontract CEther is CToken, CEtherInterface {\n /**\n * @notice Initialize the new money market\n * @param comptroller_ The address of the Comptroller\n * @param interestRateModel_ The address of the interest rate model\n * @param name_ ERC-20 name of this token\n * @param symbol_ ERC-20 symbol of this token\n */\n function initialize(ComptrollerInterface comptroller_,\n InterestRateModel interestRateModel_,\n string memory name_,\n string memory symbol_,\n uint256 reserveFactorMantissa_,\n uint256 adminFeeMantissa_) public {\n // CToken initialize does the bulk of the work\n uint256 initialExchangeRateMantissa_ = 0.2e18;\n uint8 decimals_ = 18;\n super.initialize(comptroller_, interestRateModel_, initialExchangeRateMantissa_, name_, symbol_, decimals_, reserveFactorMantissa_, adminFeeMantissa_);\n }\n\n /*** User Interface ***/\n\n /**\n * @notice Sender supplies assets into the market and receives cTokens in exchange\n * @dev Reverts upon any failure\n */\n function mint() external payable {\n (uint err,) = mintInternal(msg.value);\n requireNoError(err, \"mint failed\");\n }\n\n /**\n * @notice Sender redeems cTokens in exchange for the underlying asset\n * @dev Accrues interest whether or not the operation succeeds, unless reverted\n * @param redeemTokens The number of cTokens to redeem into underlying\n * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\n */\n function redeem(uint redeemTokens) external returns (uint) {\n return redeemInternal(redeemTokens);\n }\n\n /**\n * @notice Sender redeems cTokens in exchange for a specified amount of underlying asset\n * @dev Accrues interest whether or not the operation succeeds, unless reverted\n * @param redeemAmount The amount of underlying to redeem\n * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\n */\n function redeemUnderlying(uint redeemAmount) external returns (uint) {\n return redeemUnderlyingInternal(redeemAmount);\n }\n\n /**\n * @notice Sender borrows assets from the protocol to their own address\n * @param borrowAmount The amount of the underlying asset to borrow\n * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\n */\n function borrow(uint borrowAmount) external returns (uint) {\n return borrowInternal(borrowAmount);\n }\n\n /**\n * @notice Sender repays their own borrow\n * @dev Reverts upon any failure\n */\n function repayBorrow() external payable {\n (uint err,) = repayBorrowInternal(msg.value);\n requireNoError(err, \"repayBorrow failed\");\n }\n\n /**\n * @notice Sender repays a borrow belonging to borrower\n * @dev Reverts upon any failure\n * @param borrower the account with the debt being payed off\n */\n function repayBorrowBehalf(address borrower) external payable {\n (uint err,) = repayBorrowBehalfInternal(borrower, msg.value);\n requireNoError(err, \"repayBorrowBehalf failed\");\n }\n\n /**\n * @notice The sender liquidates the borrowers collateral.\n * The collateral seized is transferred to the liquidator.\n * @dev Reverts upon any failure\n * @param borrower The borrower of this cToken to be liquidated\n * @param cTokenCollateral The market in which to seize collateral from the borrower\n */\n function liquidateBorrow(address borrower, CToken cTokenCollateral) external payable {\n (uint err,) = liquidateBorrowInternal(borrower, msg.value, cTokenCollateral);\n requireNoError(err, \"liquidateBorrow failed\");\n }\n\n /**\n * @notice Send Ether to CEther to mint\n */\n function () external payable {\n (uint err,) = mintInternal(msg.value);\n requireNoError(err, \"mint failed\");\n }\n\n /*** Safe Token ***/\n\n /**\n * @notice Gets balance of this contract in terms of Ether, before this message\n * @dev This excludes the value of the current message, if any\n * @return The quantity of Ether owned by this contract\n */\n function getCashPrior() internal view returns (uint) {\n (MathError err, uint startingBalance) = subUInt(address(this).balance, msg.value);\n require(err == MathError.NO_ERROR);\n return startingBalance;\n }\n\n /**\n * @notice Perform the actual transfer in, which is a no-op\n * @param from Address sending the Ether\n * @param amount Amount of Ether being sent\n * @return The actual amount of Ether transferred\n */\n function doTransferIn(address from, uint amount) internal returns (uint) {\n // Sanity checks\n require(msg.sender == from, \"sender mismatch\");\n require(msg.value == amount, \"value mismatch\");\n return amount;\n }\n\n function doTransferOut(address payable to, uint amount) internal {\n // Send the Ether and revert on failure\n to.transfer(amount);\n }\n\n function requireNoError(uint errCode, string memory message) internal pure {\n if (errCode == uint(Error.NO_ERROR)) {\n return;\n }\n\n bytes memory fullMessage = new bytes(bytes(message).length + 7);\n uint i;\n\n for (i = 0; i < bytes(message).length; i++) {\n fullMessage[i] = bytes(message)[i];\n }\n\n fullMessage[i+0] = byte(uint8(32));\n fullMessage[i+1] = byte(uint8(40));\n fullMessage[i+2] = byte(uint8(48 + ( errCode / 1000 )));\n fullMessage[i+3] = byte(uint8(48 + ( errCode / 100 % 10 )));\n fullMessage[i+4] = byte(uint8(48 + ( errCode / 10 % 10 )));\n fullMessage[i+5] = byte(uint8(48 + ( errCode % 10 )));\n fullMessage[i+6] = byte(uint8(41));\n\n require(errCode == uint(Error.NO_ERROR), string(fullMessage));\n }\n}\n"},"contracts/Maximillion.sol":{"content":"pragma solidity 0.5.17;\n\nimport \"./CEther.sol\";\n\n/**\n * @title Compound's Maximillion Contract\n * @author Compound\n */\ncontract Maximillion {\n /**\n * @notice The default cEther market to repay in\n */\n CEther public cEther;\n\n /**\n * @notice Construct a Maximillion to repay max in a CEther market\n */\n constructor(CEther cEther_) public {\n cEther = cEther_;\n }\n\n /**\n * @notice msg.sender sends Ether to repay an account's borrow in the cEther market\n * @dev The provided Ether is applied towards the borrow balance, any excess is refunded\n * @param borrower The address of the borrower account to repay on behalf of\n */\n function repayBehalf(address borrower) public payable {\n repayBehalfExplicit(borrower, cEther);\n }\n\n /**\n * @notice msg.sender sends Ether to repay an account's borrow in a cEther market\n * @dev The provided Ether is applied towards the borrow balance, any excess is refunded\n * @param borrower The address of the borrower account to repay on behalf of\n * @param cEther_ The address of the cEther contract to repay in\n */\n function repayBehalfExplicit(address borrower, CEther cEther_) public payable {\n uint received = msg.value;\n uint borrows = cEther_.borrowBalanceCurrent(borrower);\n if (received > borrows) {\n cEther_.repayBorrowBehalf.value(borrows)(borrower);\n msg.sender.transfer(received - borrows);\n } else {\n cEther_.repayBorrowBehalf.value(received)(borrower);\n }\n }\n}\n"},"contracts/CEtherDelegate.sol":{"content":"pragma solidity 0.5.17;\n\nimport \"./CEther.sol\";\n\n/**\n * @title Compound's CEtherDelegate Contract\n * @notice CTokens which wrap Ether and are delegated to\n * @author Compound\n */\ncontract CEtherDelegate is CDelegateInterface, CEther {\n /**\n * @notice Construct an empty delegate\n */\n constructor() public {}\n\n /**\n * @notice Called by the delegator on a delegate to initialize it for duty\n * @param data The encoded bytes data for any initialization\n */\n function _becomeImplementation(bytes calldata data) external {\n // Shh -- currently unused\n data;\n\n // Shh -- we don't ever want this hook to be marked pure\n if (false) {\n implementation = address(0);\n }\n\n require(msg.sender == address(this) || hasAdminRights(), \"!self\");\n\n // Make sure admin storage is set up correctly\n __admin = address(0);\n __adminHasRights = false;\n __fuseAdminHasRights = false;\n }\n\n /**\n * @notice Called by the delegator on a delegate to forfeit its responsibility\n */\n function _resignImplementation() internal {\n // Shh -- we don't ever want this hook to be marked pure\n if (false) {\n implementation = address(0);\n }\n }\n\n /**\n * @dev Internal function to update the implementation of the delegator\n * @param implementation_ The address of the new implementation for delegation\n * @param allowResign Flag to indicate whether to call _resignImplementation on the old implementation\n * @param becomeImplementationData The encoded bytes data to be passed to _becomeImplementation\n */\n function _setImplementationInternal(address implementation_, bool allowResign, bytes memory becomeImplementationData) internal {\n // Check whitelist\n require(fuseAdmin.cEtherDelegateWhitelist(implementation, implementation_, allowResign), \"!impl\");\n\n // Call _resignImplementation internally (this delegate's code)\n if (allowResign) _resignImplementation();\n\n // Get old implementation\n address oldImplementation = implementation;\n\n // Store new implementation\n implementation = implementation_;\n\n // Call _becomeImplementation externally (delegating to new delegate's code)\n _functionCall(address(this), abi.encodeWithSignature(\"_becomeImplementation(bytes)\", becomeImplementationData), \"!become\");\n\n // Emit event\n emit NewImplementation(oldImplementation, implementation);\n }\n\n /**\n * @notice Called by the admin to update the implementation of the delegator\n * @param implementation_ The address of the new implementation for delegation\n * @param allowResign Flag to indicate whether to call _resignImplementation on the old implementation\n * @param becomeImplementationData The encoded bytes data to be passed to _becomeImplementation\n */\n function _setImplementationSafe(address implementation_, bool allowResign, bytes calldata becomeImplementationData) external {\n // Check admin rights\n require(hasAdminRights(), \"!admin\");\n\n // Set implementation\n _setImplementationInternal(implementation_, allowResign, becomeImplementationData);\n }\n\n /**\n * @notice Function called before all delegator functions\n * @dev Checks comptroller.autoImplementation and upgrades the implementation if necessary\n */\n function _prepare() external payable {\n if (msg.sender != address(this) && ComptrollerV3Storage(address(comptroller)).autoImplementation()) {\n (address latestCEtherDelegate, bool allowResign, bytes memory becomeImplementationData) = fuseAdmin.latestCEtherDelegate(implementation);\n if (implementation != latestCEtherDelegate) _setImplementationInternal(latestCEtherDelegate, allowResign, becomeImplementationData);\n }\n }\n}\n"}},"settings":{"optimizer":{"enabled":true,"runs":200},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"],"":["ast"]}}}},"output":{"errors":[{"component":"general","formattedMessage":"contracts/Governance/Comp.sol:2:1: Warning: Experimental features are turned on. Do not use experimental features on live deployments.\npragma experimental ABIEncoderV2;\n^-------------------------------^\n","message":"Experimental features are turned on. Do not use experimental features on live deployments.","severity":"warning","sourceLocation":{"end":57,"file":"contracts/Governance/Comp.sol","start":24},"type":"Warning"},{"component":"general","formattedMessage":"contracts/Governance/GovernorAlpha.sol:2:1: Warning: Experimental features are turned on. Do not use experimental features on live deployments.\npragma experimental ABIEncoderV2;\n^-------------------------------^\n","message":"Experimental features are turned on. Do not use experimental features on live deployments.","severity":"warning","sourceLocation":{"end":57,"file":"contracts/Governance/GovernorAlpha.sol","start":24},"type":"Warning"},{"component":"general","formattedMessage":"contracts/Lens/CompoundLens.sol:2:1: Warning: Experimental features are turned on. Do not use experimental features on live deployments.\npragma experimental ABIEncoderV2;\n^-------------------------------^\n","message":"Experimental features are turned on. Do not use experimental features on live deployments.","severity":"warning","sourceLocation":{"end":57,"file":"contracts/Lens/CompoundLens.sol","start":24},"type":"Warning"},{"component":"general","formattedMessage":"contracts/CToken.sol:473:9: Warning: Return value of low-level calls not used.\n address(interestRateModel).call(abi.encodeWithSignature(\"checkpointInterest(uint256)\", borrowRateMantissa));\n ^---------------------------------------------------------------------------------------------------------^\n","message":"Return value of low-level calls not used.","severity":"warning","sourceLocation":{"end":20302,"file":"contracts/CToken.sol","start":20195},"type":"Warning"},{"component":"general","formattedMessage":"contracts/CToken.sol:1504:58: Warning: Return value of low-level calls not used.\n if (address(oldInterestRateModel) != address(0)) address(oldInterestRateModel).call(abi.encodeWithSignature(\"resetInterestCheckpoints()\"));\n ^---------------------------------------------------------------------------------------^\n","message":"Return value of low-level calls not used.","severity":"warning","sourceLocation":{"end":69479,"file":"contracts/CToken.sol","start":69390},"type":"Warning"},{"component":"general","formattedMessage":"contracts/CToken.sol:1507:9: Warning: Return value of low-level calls not used.\n address(newInterestRateModel).call(abi.encodeWithSignature(\"checkpointInterest()\"));\n ^---------------------------------------------------------------------------------^\n","message":"Return value of low-level calls not used.","severity":"warning","sourceLocation":{"end":69636,"file":"contracts/CToken.sol","start":69553},"type":"Warning"},{"component":"general","formattedMessage":"contracts/CErc20DelegateDAIAggregatorFix.sol:15:36: Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n function _becomeImplementation(bytes calldata data) external {\n ^-----------------^\n","message":"Unused function parameter. Remove or comment out the variable name to silence this warning.","severity":"warning","sourceLocation":{"end":462,"file":"contracts/CErc20DelegateDAIAggregatorFix.sol","start":443},"type":"Warning"},{"component":"general","formattedMessage":"contracts/CErc20DelegateUSDCAggregatorFix.sol:15:36: Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n function _becomeImplementation(bytes calldata data) external {\n ^-----------------^\n","message":"Unused function parameter. Remove or comment out the variable name to silence this warning.","severity":"warning","sourceLocation":{"end":462,"file":"contracts/CErc20DelegateUSDCAggregatorFix.sol","start":443},"type":"Warning"},{"component":"general","formattedMessage":"contracts/Comptroller.sol:473:31: Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n function mintWithinLimits(address cToken, uint exchangeRateMantissa, uint accountTokens, uint mintAmount) external returns (uint) {\n ^------------^\n","message":"Unused function parameter. Remove or comment out the variable name to silence this warning.","severity":"warning","sourceLocation":{"end":19958,"file":"contracts/Comptroller.sol","start":19944},"type":"Warning"},{"component":"general","formattedMessage":"contracts/Comptroller.sol:473:47: Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n function mintWithinLimits(address cToken, uint exchangeRateMantissa, uint accountTokens, uint mintAmount) external returns (uint) {\n ^-----------------------^\n","message":"Unused function parameter. Remove or comment out the variable name to silence this warning.","severity":"warning","sourceLocation":{"end":19985,"file":"contracts/Comptroller.sol","start":19960},"type":"Warning"},{"component":"general","formattedMessage":"contracts/Comptroller.sol:473:74: Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n function mintWithinLimits(address cToken, uint exchangeRateMantissa, uint accountTokens, uint mintAmount) external returns (uint) {\n ^----------------^\n","message":"Unused function parameter. Remove or comment out the variable name to silence this warning.","severity":"warning","sourceLocation":{"end":20005,"file":"contracts/Comptroller.sol","start":19987},"type":"Warning"},{"component":"general","formattedMessage":"contracts/Comptroller.sol:473:94: Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n function mintWithinLimits(address cToken, uint exchangeRateMantissa, uint accountTokens, uint mintAmount) external returns (uint) {\n ^-------------^\n","message":"Unused function parameter. Remove or comment out the variable name to silence this warning.","severity":"warning","sourceLocation":{"end":20022,"file":"contracts/Comptroller.sol","start":20007},"type":"Warning"},{"component":"general","formattedMessage":"contracts/Lens/CompoundLens.sol:122:5: Warning: Function state mutability can be restricted to view\n function cTokenUnderlyingPrice(CToken cToken) public returns (CTokenUnderlyingPrice memory) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Function state mutability can be restricted to view","severity":"warning","sourceLocation":{"end":4819,"file":"contracts/Lens/CompoundLens.sol","start":4429},"type":"Warning"},{"component":"general","formattedMessage":"contracts/Lens/CompoundLens.sol:147:5: Warning: Function state mutability can be restricted to view\n function getAccountLimits(Comptroller comptroller, address account) public returns (AccountLimits memory) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Function state mutability can be restricted to view","severity":"warning","sourceLocation":{"end":5735,"file":"contracts/Lens/CompoundLens.sol","start":5322},"type":"Warning"}],"sources":{"contracts/BaseJumpRateModelV2.sol":{"ast":{"absolutePath":"contracts/BaseJumpRateModelV2.sol","exportedSymbols":{"BaseJumpRateModelV2":[286]},"id":287,"nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity","0.5",".17"],"nodeType":"PragmaDirective","src":"0:23:0"},{"absolutePath":"contracts/SafeMath.sol","file":"./SafeMath.sol","id":2,"nodeType":"ImportDirective","scope":287,"sourceUnit":21346,"src":"25:24:0","symbolAliases":[],"unitAlias":""},{"baseContracts":[],"contractDependencies":[],"contractKind":"contract","documentation":"@title Logic for Compound's JumpRateModel Contract V2.\n@author Compound (modified by Dharma Labs, refactored by Arr00)\n@notice Version 2 modifies Version 1 by enabling updateable parameters.","fullyImplemented":true,"id":286,"linearizedBaseContracts":[286],"name":"BaseJumpRateModelV2","nodeType":"ContractDefinition","nodes":[{"id":5,"libraryName":{"contractScope":null,"id":3,"name":"SafeMath","nodeType":"UserDefinedTypeName","referencedDeclaration":21345,"src":"304:8:0","typeDescriptions":{"typeIdentifier":"t_contract$_SafeMath_$21345","typeString":"library SafeMath"}},"nodeType":"UsingForDirective","src":"298:24:0","typeName":{"id":4,"name":"uint","nodeType":"ElementaryTypeName","src":"317:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"anonymous":false,"documentation":null,"id":15,"name":"NewInterestParams","nodeType":"EventDefinition","parameters":{"id":14,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7,"indexed":false,"name":"baseRatePerBlock","nodeType":"VariableDeclaration","scope":15,"src":"352:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6,"name":"uint","nodeType":"ElementaryTypeName","src":"352:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":9,"indexed":false,"name":"multiplierPerBlock","nodeType":"VariableDeclaration","scope":15,"src":"375:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8,"name":"uint","nodeType":"ElementaryTypeName","src":"375:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":11,"indexed":false,"name":"jumpMultiplierPerBlock","nodeType":"VariableDeclaration","scope":15,"src":"400:27:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10,"name":"uint","nodeType":"ElementaryTypeName","src":"400:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":13,"indexed":false,"name":"kink","nodeType":"VariableDeclaration","scope":15,"src":"429:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12,"name":"uint","nodeType":"ElementaryTypeName","src":"429:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"351:88:0"},"src":"328:112:0"},{"constant":false,"id":17,"name":"owner","nodeType":"VariableDeclaration","scope":286,"src":"568:20:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16,"name":"address","nodeType":"ElementaryTypeName","src":"568:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"public"},{"constant":true,"id":20,"name":"blocksPerYear","nodeType":"VariableDeclaration","scope":286,"src":"711:44:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18,"name":"uint","nodeType":"ElementaryTypeName","src":"711:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"argumentTypes":null,"hexValue":"32333732353030","id":19,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"748:7:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_2372500_by_1","typeString":"int_const 2372500"},"value":"2372500"},"visibility":"public"},{"constant":false,"id":22,"name":"multiplierPerBlock","nodeType":"VariableDeclaration","scope":286,"src":"905:30:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21,"name":"uint","nodeType":"ElementaryTypeName","src":"905:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"public"},{"constant":false,"id":24,"name":"baseRatePerBlock","nodeType":"VariableDeclaration","scope":286,"src":"1048:28:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23,"name":"uint","nodeType":"ElementaryTypeName","src":"1048:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"public"},{"constant":false,"id":26,"name":"jumpMultiplierPerBlock","nodeType":"VariableDeclaration","scope":286,"src":"1181:34:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25,"name":"uint","nodeType":"ElementaryTypeName","src":"1181:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"public"},{"constant":false,"id":28,"name":"kink","nodeType":"VariableDeclaration","scope":286,"src":"1315:16:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27,"name":"uint","nodeType":"ElementaryTypeName","src":"1315:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"public"},{"body":{"id":52,"nodeType":"Block","src":"2035:136:0","statements":[{"expression":{"argumentTypes":null,"id":43,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":41,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17,"src":"2045:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":42,"name":"owner_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38,"src":"2053:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2045:14:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":44,"nodeType":"ExpressionStatement","src":"2045:14:0"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":46,"name":"baseRatePerYear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30,"src":"2098:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":47,"name":"multiplierPerYear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32,"src":"2116:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":48,"name":"jumpMultiplierPerYear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34,"src":"2135:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":49,"name":"kink_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36,"src":"2158:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":45,"name":"updateJumpRateModelInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":285,"src":"2070:27:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,uint256,uint256)"}},"id":50,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2070:94:0","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":51,"nodeType":"ExpressionStatement","src":"2070:94:0"}]},"documentation":"@notice Construct an interest rate model\n@param baseRatePerYear The approximate target base APR, as a mantissa (scaled by 1e18)\n@param multiplierPerYear The rate of increase in interest rate wrt utilization (scaled by 1e18)\n@param jumpMultiplierPerYear The multiplierPerBlock after hitting a specified utilization point\n@param kink_ The utilization point at which the jump multiplier is applied\n@param owner_ The address of the owner, i.e. the Timelock contract (which has the ability to update parameters directly)","id":53,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":39,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30,"name":"baseRatePerYear","nodeType":"VariableDeclaration","scope":53,"src":"1924:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":29,"name":"uint","nodeType":"ElementaryTypeName","src":"1924:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":32,"name":"multiplierPerYear","nodeType":"VariableDeclaration","scope":53,"src":"1946:22:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":31,"name":"uint","nodeType":"ElementaryTypeName","src":"1946:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":34,"name":"jumpMultiplierPerYear","nodeType":"VariableDeclaration","scope":53,"src":"1970:26:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":33,"name":"uint","nodeType":"ElementaryTypeName","src":"1970:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":36,"name":"kink_","nodeType":"VariableDeclaration","scope":53,"src":"1998:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":35,"name":"uint","nodeType":"ElementaryTypeName","src":"1998:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":38,"name":"owner_","nodeType":"VariableDeclaration","scope":53,"src":"2010:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":37,"name":"address","nodeType":"ElementaryTypeName","src":"2010:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"1923:102:0"},"returnParameters":{"id":40,"nodeType":"ParameterList","parameters":[],"src":"2035:0:0"},"scope":286,"src":"1912:259:0","stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},{"body":{"id":79,"nodeType":"Block","src":"2803:191:0","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":68,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":65,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"2821:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":66,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2821:10:0","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":67,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17,"src":"2835:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2821:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"6f6e6c7920746865206f776e6572206d61792063616c6c20746869732066756e6374696f6e2e","id":69,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2842:40:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_c0c6e8489d9090913f64bf2f8f46b6fd1d40ffe2aa5774c5b17c6eb6ab3c407c","typeString":"literal_string \"only the owner may call this function.\""},"value":"only the owner may call this function."}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c0c6e8489d9090913f64bf2f8f46b6fd1d40ffe2aa5774c5b17c6eb6ab3c407c","typeString":"literal_string \"only the owner may call this function.\""}],"id":64,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"2813:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":70,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2813:70:0","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":71,"nodeType":"ExpressionStatement","src":"2813:70:0"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":73,"name":"baseRatePerYear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55,"src":"2922:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":74,"name":"multiplierPerYear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":57,"src":"2939:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":75,"name":"jumpMultiplierPerYear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59,"src":"2958:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":76,"name":"kink_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61,"src":"2981:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":72,"name":"updateJumpRateModelInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":285,"src":"2894:27:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,uint256,uint256)"}},"id":77,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2894:93:0","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":78,"nodeType":"ExpressionStatement","src":"2894:93:0"}]},"documentation":"@notice Update the parameters of the interest rate model (only callable by owner, i.e. Timelock)\n@param baseRatePerYear The approximate target base APR, as a mantissa (scaled by 1e18)\n@param multiplierPerYear The rate of increase in interest rate wrt utilization (scaled by 1e18)\n@param jumpMultiplierPerYear The multiplierPerBlock after hitting a specified utilization point\n@param kink_ The utilization point at which the jump multiplier is applied","id":80,"implemented":true,"kind":"function","modifiers":[],"name":"updateJumpRateModel","nodeType":"FunctionDefinition","parameters":{"id":62,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55,"name":"baseRatePerYear","nodeType":"VariableDeclaration","scope":80,"src":"2708:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54,"name":"uint","nodeType":"ElementaryTypeName","src":"2708:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":57,"name":"multiplierPerYear","nodeType":"VariableDeclaration","scope":80,"src":"2730:22:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56,"name":"uint","nodeType":"ElementaryTypeName","src":"2730:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":59,"name":"jumpMultiplierPerYear","nodeType":"VariableDeclaration","scope":80,"src":"2754:26:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":58,"name":"uint","nodeType":"ElementaryTypeName","src":"2754:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":61,"name":"kink_","nodeType":"VariableDeclaration","scope":80,"src":"2782:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":60,"name":"uint","nodeType":"ElementaryTypeName","src":"2782:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2707:86:0"},"returnParameters":{"id":63,"nodeType":"ParameterList","parameters":[],"src":"2803:0:0"},"scope":286,"src":"2679:315:0","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":{"id":112,"nodeType":"Block","src":"3467:198:0","statements":[{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":93,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":91,"name":"borrows","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84,"src":"3540:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":92,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3551:1:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3540:12:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":97,"nodeType":"IfStatement","src":"3536:51:0","trueBody":{"id":96,"nodeType":"Block","src":"3554:33:0","statements":[{"expression":{"argumentTypes":null,"hexValue":"30","id":94,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3575:1:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":90,"id":95,"nodeType":"Return","src":"3568:8:0"}]}},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":108,"name":"reserves","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86,"src":"3648:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":105,"name":"borrows","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84,"src":"3635:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":103,"name":"cash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82,"src":"3626:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":21122,"src":"3626:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":106,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3626:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":21165,"src":"3626:21:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":109,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3626:31:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"31653138","id":100,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3616:4:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"}],"expression":{"argumentTypes":null,"id":98,"name":"borrows","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84,"src":"3604:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":99,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":21226,"src":"3604:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":101,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3604:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"div","nodeType":"MemberAccess","referencedDeclaration":21278,"src":"3604:21:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":110,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3604:54:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":90,"id":111,"nodeType":"Return","src":"3597:61:0"}]},"documentation":"@notice Calculates the utilization rate of the market: `borrows / (cash + borrows - reserves)`\n@param cash The amount of cash in the market\n@param borrows The amount of borrows in the market\n@param reserves The amount of reserves in the market (currently unused)\n@return The utilization rate as a mantissa between [0, 1e18]","id":113,"implemented":true,"kind":"function","modifiers":[],"name":"utilizationRate","nodeType":"FunctionDefinition","parameters":{"id":87,"nodeType":"ParameterList","parameters":[{"constant":false,"id":82,"name":"cash","nodeType":"VariableDeclaration","scope":113,"src":"3400:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":81,"name":"uint","nodeType":"ElementaryTypeName","src":"3400:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":84,"name":"borrows","nodeType":"VariableDeclaration","scope":113,"src":"3411:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83,"name":"uint","nodeType":"ElementaryTypeName","src":"3411:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":86,"name":"reserves","nodeType":"VariableDeclaration","scope":113,"src":"3425:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":85,"name":"uint","nodeType":"ElementaryTypeName","src":"3425:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"3399:40:0"},"returnParameters":{"id":90,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89,"name":"","nodeType":"VariableDeclaration","scope":113,"src":"3461:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":88,"name":"uint","nodeType":"ElementaryTypeName","src":"3461:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"3460:6:0"},"scope":286,"src":"3375:290:0","stateMutability":"pure","superFunction":null,"visibility":"public"},{"body":{"id":180,"nodeType":"Block","src":"4144:429:0","statements":[{"assignments":[125],"declarations":[{"constant":false,"id":125,"name":"util","nodeType":"VariableDeclaration","scope":180,"src":"4154:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":124,"name":"uint","nodeType":"ElementaryTypeName","src":"4154:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":131,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":127,"name":"cash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":115,"src":"4182:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":128,"name":"borrows","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":117,"src":"4188:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":129,"name":"reserves","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":119,"src":"4197:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":126,"name":"utilizationRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113,"src":"4166:15:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":130,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4166:40:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4154:52:0"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":134,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":132,"name":"util","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":125,"src":"4221:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"argumentTypes":null,"id":133,"name":"kink","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28,"src":"4229:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4221:12:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":178,"nodeType":"Block","src":"4333:234:0","statements":[{"assignments":[148],"declarations":[{"constant":false,"id":148,"name":"normalRate","nodeType":"VariableDeclaration","scope":178,"src":"4347:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":147,"name":"uint","nodeType":"ElementaryTypeName","src":"4347:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":159,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":157,"name":"baseRatePerBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24,"src":"4408:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"31653138","id":154,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4398:4:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":151,"name":"multiplierPerBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22,"src":"4374:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":149,"name":"kink","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28,"src":"4365:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":21226,"src":"4365:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":152,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4365:28:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"div","nodeType":"MemberAccess","referencedDeclaration":21278,"src":"4365:32:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4365:38:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":21122,"src":"4365:42:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":158,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4365:60:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4347:78:0"},{"assignments":[161],"declarations":[{"constant":false,"id":161,"name":"excessUtil","nodeType":"VariableDeclaration","scope":178,"src":"4439:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":160,"name":"uint","nodeType":"ElementaryTypeName","src":"4439:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":166,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":164,"name":"kink","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28,"src":"4466:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":162,"name":"util","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":125,"src":"4457:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":163,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":21165,"src":"4457:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":165,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4457:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4439:32:0"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":175,"name":"normalRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":148,"src":"4545:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"31653138","id":172,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4535:4:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":169,"name":"jumpMultiplierPerBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26,"src":"4507:22:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":167,"name":"excessUtil","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161,"src":"4492:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":21226,"src":"4492:14:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":170,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4492:38:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"div","nodeType":"MemberAccess","referencedDeclaration":21278,"src":"4492:42:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":173,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4492:48:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":174,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":21122,"src":"4492:52:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":176,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4492:64:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":123,"id":177,"nodeType":"Return","src":"4485:71:0"}]},"id":179,"nodeType":"IfStatement","src":"4217:350:0","trueBody":{"id":146,"nodeType":"Block","src":"4235:92:0","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":143,"name":"baseRatePerBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24,"src":"4299:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"31653138","id":140,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4289:4:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":137,"name":"multiplierPerBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22,"src":"4265:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":135,"name":"util","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":125,"src":"4256:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":21226,"src":"4256:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":138,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4256:28:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"div","nodeType":"MemberAccess","referencedDeclaration":21278,"src":"4256:32:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":141,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4256:38:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":21122,"src":"4256:42:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":144,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4256:60:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":123,"id":145,"nodeType":"Return","src":"4249:67:0"}]}}]},"documentation":"@notice Calculates the current borrow rate per block, with the error code expected by the market\n@param cash The amount of cash in the market\n@param borrows The amount of borrows in the market\n@param reserves The amount of reserves in the market\n@return The borrow rate percentage per block as a mantissa (scaled by 1e18)","id":181,"implemented":true,"kind":"function","modifiers":[],"name":"getBorrowRateInternal","nodeType":"FunctionDefinition","parameters":{"id":120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":115,"name":"cash","nodeType":"VariableDeclaration","scope":181,"src":"4075:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":114,"name":"uint","nodeType":"ElementaryTypeName","src":"4075:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":117,"name":"borrows","nodeType":"VariableDeclaration","scope":181,"src":"4086:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":116,"name":"uint","nodeType":"ElementaryTypeName","src":"4086:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":119,"name":"reserves","nodeType":"VariableDeclaration","scope":181,"src":"4100:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":118,"name":"uint","nodeType":"ElementaryTypeName","src":"4100:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"4074:40:0"},"returnParameters":{"id":123,"nodeType":"ParameterList","parameters":[{"constant":false,"id":122,"name":"","nodeType":"VariableDeclaration","scope":181,"src":"4138:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":121,"name":"uint","nodeType":"ElementaryTypeName","src":"4138:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"4137:6:0"},"scope":286,"src":"4044:529:0","stateMutability":"view","superFunction":null,"visibility":"internal"},{"body":{"id":233,"nodeType":"Block","src":"5104:315:0","statements":[{"assignments":[195],"declarations":[{"constant":false,"id":195,"name":"oneMinusReserveFactor","nodeType":"VariableDeclaration","scope":233,"src":"5114:26:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":194,"name":"uint","nodeType":"ElementaryTypeName","src":"5114:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":202,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":200,"name":"reserveFactorMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":189,"src":"5158:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"31653138","id":197,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5148:4:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"}],"id":196,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5143:4:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":198,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5143:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":199,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":21165,"src":"5143:14:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":201,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5143:37:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5114:66:0"},{"assignments":[204],"declarations":[{"constant":false,"id":204,"name":"borrowRate","nodeType":"VariableDeclaration","scope":233,"src":"5190:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":203,"name":"uint","nodeType":"ElementaryTypeName","src":"5190:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":210,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":206,"name":"cash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":183,"src":"5230:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":207,"name":"borrows","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":185,"src":"5236:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":208,"name":"reserves","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":187,"src":"5245:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":205,"name":"getBorrowRateInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":181,"src":"5208:21:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) view returns (uint256)"}},"id":209,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5208:46:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5190:64:0"},{"assignments":[212],"declarations":[{"constant":false,"id":212,"name":"rateToPool","nodeType":"VariableDeclaration","scope":233,"src":"5264:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":211,"name":"uint","nodeType":"ElementaryTypeName","src":"5264:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":220,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"31653138","id":218,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5324:4:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":215,"name":"oneMinusReserveFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":195,"src":"5297:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":213,"name":"borrowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":204,"src":"5282:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":214,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":21226,"src":"5282:14:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":216,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5282:37:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":217,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"div","nodeType":"MemberAccess","referencedDeclaration":21278,"src":"5282:41:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":219,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5282:47:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5264:65:0"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"31653138","id":230,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5407:4:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":227,"name":"rateToPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":212,"src":"5391:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":222,"name":"cash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":183,"src":"5362:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":223,"name":"borrows","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":185,"src":"5368:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":224,"name":"reserves","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":187,"src":"5377:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":221,"name":"utilizationRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113,"src":"5346:15:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":225,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5346:40:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":226,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":21226,"src":"5346:44:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":228,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5346:56:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":229,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"div","nodeType":"MemberAccess","referencedDeclaration":21278,"src":"5346:60:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":231,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5346:66:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":193,"id":232,"nodeType":"Return","src":"5339:73:0"}]},"documentation":"@notice Calculates the current supply rate per block\n@param cash The amount of cash in the market\n@param borrows The amount of borrows in the market\n@param reserves The amount of reserves in the market\n@param reserveFactorMantissa The current reserve factor for the market\n@return The supply rate percentage per block as a mantissa (scaled by 1e18)","id":234,"implemented":true,"kind":"function","modifiers":[],"name":"getSupplyRate","nodeType":"FunctionDefinition","parameters":{"id":190,"nodeType":"ParameterList","parameters":[{"constant":false,"id":183,"name":"cash","nodeType":"VariableDeclaration","scope":234,"src":"5009:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":182,"name":"uint","nodeType":"ElementaryTypeName","src":"5009:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":185,"name":"borrows","nodeType":"VariableDeclaration","scope":234,"src":"5020:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":184,"name":"uint","nodeType":"ElementaryTypeName","src":"5020:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":187,"name":"reserves","nodeType":"VariableDeclaration","scope":234,"src":"5034:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":186,"name":"uint","nodeType":"ElementaryTypeName","src":"5034:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":189,"name":"reserveFactorMantissa","nodeType":"VariableDeclaration","scope":234,"src":"5049:26:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":188,"name":"uint","nodeType":"ElementaryTypeName","src":"5049:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"5008:68:0"},"returnParameters":{"id":193,"nodeType":"ParameterList","parameters":[{"constant":false,"id":192,"name":"","nodeType":"VariableDeclaration","scope":234,"src":"5098:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":191,"name":"uint","nodeType":"ElementaryTypeName","src":"5098:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"5097:6:0"},"scope":286,"src":"4986:433:0","stateMutability":"view","superFunction":17397,"visibility":"public"},{"body":{"id":284,"nodeType":"Block","src":"6040:358:0","statements":[{"expression":{"argumentTypes":null,"id":250,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":245,"name":"baseRatePerBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24,"src":"6050:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":248,"name":"blocksPerYear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20,"src":"6089:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":246,"name":"baseRatePerYear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":236,"src":"6069:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":247,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"div","nodeType":"MemberAccess","referencedDeclaration":21278,"src":"6069:19:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":249,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6069:34:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6050:53:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":251,"nodeType":"ExpressionStatement","src":"6050:53:0"},{"expression":{"argumentTypes":null,"id":264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":252,"name":"multiplierPerBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22,"src":"6113:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":261,"name":"kink_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":242,"src":"6186:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":259,"name":"blocksPerYear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20,"src":"6168:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":21226,"src":"6168:17:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":262,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6168:24:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"31653138","id":255,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6157:4:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"}],"expression":{"argumentTypes":null,"id":253,"name":"multiplierPerYear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":238,"src":"6135:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":21226,"src":"6135:21:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":256,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6135:27:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":257,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6134:29:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":258,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"div","nodeType":"MemberAccess","referencedDeclaration":21278,"src":"6134:33:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":263,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6134:59:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6113:80:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":265,"nodeType":"ExpressionStatement","src":"6113:80:0"},{"expression":{"argumentTypes":null,"id":271,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":266,"name":"jumpMultiplierPerBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26,"src":"6203:22:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":269,"name":"blocksPerYear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20,"src":"6254:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":267,"name":"jumpMultiplierPerYear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":240,"src":"6228:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":268,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"div","nodeType":"MemberAccess","referencedDeclaration":21278,"src":"6228:25:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":270,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6228:40:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6203:65:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":272,"nodeType":"ExpressionStatement","src":"6203:65:0"},{"expression":{"argumentTypes":null,"id":275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":273,"name":"kink","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28,"src":"6278:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":274,"name":"kink_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":242,"src":"6285:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6278:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":276,"nodeType":"ExpressionStatement","src":"6278:12:0"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":278,"name":"baseRatePerBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24,"src":"6324:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":279,"name":"multiplierPerBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22,"src":"6342:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":280,"name":"jumpMultiplierPerBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26,"src":"6362:22:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":281,"name":"kink","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28,"src":"6386:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":277,"name":"NewInterestParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15,"src":"6306:17:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,uint256,uint256)"}},"id":282,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6306:85:0","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":283,"nodeType":"EmitStatement","src":"6301:90:0"}]},"documentation":"@notice Internal function to update the parameters of the interest rate model\n@param baseRatePerYear The approximate target base APR, as a mantissa (scaled by 1e18)\n@param multiplierPerYear The rate of increase in interest rate wrt utilization (scaled by 1e18)\n@param jumpMultiplierPerYear The multiplierPerBlock after hitting a specified utilization point\n@param kink_ The utilization point at which the jump multiplier is applied","id":285,"implemented":true,"kind":"function","modifiers":[],"name":"updateJumpRateModelInternal","nodeType":"FunctionDefinition","parameters":{"id":243,"nodeType":"ParameterList","parameters":[{"constant":false,"id":236,"name":"baseRatePerYear","nodeType":"VariableDeclaration","scope":285,"src":"5945:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":235,"name":"uint","nodeType":"ElementaryTypeName","src":"5945:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":238,"name":"multiplierPerYear","nodeType":"VariableDeclaration","scope":285,"src":"5967:22:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":237,"name":"uint","nodeType":"ElementaryTypeName","src":"5967:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":240,"name":"jumpMultiplierPerYear","nodeType":"VariableDeclaration","scope":285,"src":"5991:26:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":239,"name":"uint","nodeType":"ElementaryTypeName","src":"5991:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":242,"name":"kink_","nodeType":"VariableDeclaration","scope":285,"src":"6019:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":241,"name":"uint","nodeType":"ElementaryTypeName","src":"6019:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"5944:86:0"},"returnParameters":{"id":244,"nodeType":"ParameterList","parameters":[],"src":"6040:0:0"},"scope":286,"src":"5908:490:0","stateMutability":"nonpayable","superFunction":null,"visibility":"internal"}],"scope":287,"src":"263:6137:0"}],"src":"0:6401:0"},"id":0},"contracts/CDaiDelegate.sol":{"ast":{"absolutePath":"contracts/CDaiDelegate.sol","exportedSymbols":{"CDaiDelegate":[724],"DaiJoinLike":[816],"GemLike":[778],"PotLike":[752],"VatLike":[791]},"id":817,"nodeType":"SourceUnit","nodes":[{"id":288,"literals":["solidity","0.5",".17"],"nodeType":"PragmaDirective","src":"0:23:1"},{"absolutePath":"contracts/CErc20Delegate.sol","file":"./CErc20Delegate.sol","id":289,"nodeType":"ImportDirective","scope":817,"sourceUnit":1326,"src":"25:30:1","symbolAliases":[],"unitAlias":""},{"baseContracts":[{"arguments":null,"baseName":{"contractScope":null,"id":290,"name":"CErc20Delegate","nodeType":"UserDefinedTypeName","referencedDeclaration":1325,"src":"196:14:1","typeDescriptions":{"typeIdentifier":"t_contract$_CErc20Delegate_$1325","typeString":"contract CErc20Delegate"}},"id":291,"nodeType":"InheritanceSpecifier","src":"196:14:1"}],"contractDependencies":[1143,1325,6186,6204,6271,6556,6559,6617,6626,6652,6837,13849,14371,15066],"contractKind":"contract","documentation":"@title Compound's CDai Contract\n@notice CToken which wraps Multi-Collateral DAI\n@author Compound","fullyImplemented":true,"id":724,"linearizedBaseContracts":[724,1325,1143,6617,6559,6186,13849,14371,15066,6837,6556,6271,6204,6652,6626],"name":"CDaiDelegate","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":293,"name":"daiJoinAddress","nodeType":"VariableDeclaration","scope":724,"src":"268:29:1","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":292,"name":"address","nodeType":"ElementaryTypeName","src":"268:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"public"},{"constant":false,"id":295,"name":"potAddress","nodeType":"VariableDeclaration","scope":724,"src":"370:25:1","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":294,"name":"address","nodeType":"ElementaryTypeName","src":"370:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"public"},{"constant":false,"id":297,"name":"vatAddress","nodeType":"VariableDeclaration","scope":724,"src":"449:25:1","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":296,"name":"address","nodeType":"ElementaryTypeName","src":"449:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"public"},{"body":{"id":332,"nodeType":"Block","src":"675:313:1","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":311,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":308,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":303,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"693:3:1","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"693:10:1","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":306,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22622,"src":"715:4:1","typeDescriptions":{"typeIdentifier":"t_contract$_CDaiDelegate_$724","typeString":"contract CDaiDelegate"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CDaiDelegate_$724","typeString":"contract CDaiDelegate"}],"id":305,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"707:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":307,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"707:13:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"693:27:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":309,"name":"hasAdminRights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2322,"src":"724:14:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":310,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"724:16:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"693:47:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"6f6e6c792073656c66206f722061646d696e206d61792063616c6c205f6265636f6d65496d706c656d656e746174696f6e","id":312,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"742:51:1","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_1d56e70fed4db0a2997c3893b4fb0e2eaa1cb48990225b93cb53baa6a7a81f89","typeString":"literal_string \"only self or admin may call _becomeImplementation\""},"value":"only self or admin may call _becomeImplementation"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1d56e70fed4db0a2997c3893b4fb0e2eaa1cb48990225b93cb53baa6a7a81f89","typeString":"literal_string \"only self or admin may call _becomeImplementation\""}],"id":302,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"685:7:1","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":313,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"685:109:1","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":314,"nodeType":"ExpressionStatement","src":"685:109:1"},{"assignments":[316,318],"declarations":[{"constant":false,"id":316,"name":"daiJoinAddress_","nodeType":"VariableDeclaration","scope":332,"src":"829:23:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":315,"name":"address","nodeType":"ElementaryTypeName","src":"829:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":318,"name":"potAddress_","nodeType":"VariableDeclaration","scope":332,"src":"854:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":317,"name":"address","nodeType":"ElementaryTypeName","src":"854:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":326,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":321,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":299,"src":"888:4:1","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"argumentTypes":null,"components":[{"argumentTypes":null,"id":322,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"895:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},{"argumentTypes":null,"id":323,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"904:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"}],"id":324,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"894:18:1","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_address_$_$_t_type$_t_address_$_$","typeString":"tuple(type(address),type(address))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_tuple$_t_type$_t_address_$_$_t_type$_t_address_$_$","typeString":"tuple(type(address),type(address))"}],"expression":{"argumentTypes":null,"id":319,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22537,"src":"877:3:1","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":320,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","referencedDeclaration":null,"src":"877:10:1","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":325,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"877:36:1","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_payable_$_t_address_payable_$","typeString":"tuple(address payable,address payable)"}},"nodeType":"VariableDeclarationStatement","src":"828:85:1"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":328,"name":"daiJoinAddress_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":316,"src":"952:15:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":329,"name":"potAddress_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":318,"src":"969:11:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":327,"name":"_becomeImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":422,"src":"930:21:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":330,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"930:51:1","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"functionReturnParameters":301,"id":331,"nodeType":"Return","src":"923:58:1"}]},"documentation":"@notice Delegate interface to become the implementation\n@param data The encoded arguments for becoming","id":333,"implemented":true,"kind":"function","modifiers":[],"name":"_becomeImplementation","nodeType":"FunctionDefinition","parameters":{"id":300,"nodeType":"ParameterList","parameters":[{"constant":false,"id":299,"name":"data","nodeType":"VariableDeclaration","scope":333,"src":"645:19:1","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":298,"name":"bytes","nodeType":"ElementaryTypeName","src":"645:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"}],"src":"644:21:1"},"returnParameters":{"id":301,"nodeType":"ParameterList","parameters":[],"src":"675:0:1"},"scope":724,"src":"614:374:1","stateMutability":"nonpayable","superFunction":1198,"visibility":"external"},{"body":{"id":421,"nodeType":"Block","src":"1270:938:1","statements":[{"assignments":[341],"declarations":[{"constant":false,"id":341,"name":"daiJoin","nodeType":"VariableDeclaration","scope":421,"src":"1339:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_DaiJoinLike_$816","typeString":"contract DaiJoinLike"},"typeName":{"contractScope":null,"id":340,"name":"DaiJoinLike","nodeType":"UserDefinedTypeName","referencedDeclaration":816,"src":"1339:11:1","typeDescriptions":{"typeIdentifier":"t_contract$_DaiJoinLike_$816","typeString":"contract DaiJoinLike"}},"value":null,"visibility":"internal"}],"id":345,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":343,"name":"daiJoinAddress_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":335,"src":"1373:15:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":342,"name":"DaiJoinLike","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":816,"src":"1361:11:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_DaiJoinLike_$816_$","typeString":"type(contract DaiJoinLike)"}},"id":344,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1361:28:1","typeDescriptions":{"typeIdentifier":"t_contract$_DaiJoinLike_$816","typeString":"contract DaiJoinLike"}},"nodeType":"VariableDeclarationStatement","src":"1339:50:1"},{"assignments":[347],"declarations":[{"constant":false,"id":347,"name":"pot","nodeType":"VariableDeclaration","scope":421,"src":"1399:11:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_PotLike_$752","typeString":"contract PotLike"},"typeName":{"contractScope":null,"id":346,"name":"PotLike","nodeType":"UserDefinedTypeName","referencedDeclaration":752,"src":"1399:7:1","typeDescriptions":{"typeIdentifier":"t_contract$_PotLike_$752","typeString":"contract PotLike"}},"value":null,"visibility":"internal"}],"id":351,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":349,"name":"potAddress_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":337,"src":"1421:11:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":348,"name":"PotLike","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":752,"src":"1413:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PotLike_$752_$","typeString":"type(contract PotLike)"}},"id":350,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1413:20:1","typeDescriptions":{"typeIdentifier":"t_contract$_PotLike_$752","typeString":"contract PotLike"}},"nodeType":"VariableDeclarationStatement","src":"1399:34:1"},{"assignments":[353],"declarations":[{"constant":false,"id":353,"name":"dai","nodeType":"VariableDeclaration","scope":421,"src":"1443:11:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_GemLike_$778","typeString":"contract GemLike"},"typeName":{"contractScope":null,"id":352,"name":"GemLike","nodeType":"UserDefinedTypeName","referencedDeclaration":778,"src":"1443:7:1","typeDescriptions":{"typeIdentifier":"t_contract$_GemLike_$778","typeString":"contract GemLike"}},"value":null,"visibility":"internal"}],"id":357,"initialValue":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":354,"name":"daiJoin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":341,"src":"1457:7:1","typeDescriptions":{"typeIdentifier":"t_contract$_DaiJoinLike_$816","typeString":"contract DaiJoinLike"}},"id":355,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"dai","nodeType":"MemberAccess","referencedDeclaration":801,"src":"1457:11:1","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$_t_contract$_GemLike_$778_$","typeString":"function () external returns (contract GemLike)"}},"id":356,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1457:13:1","typeDescriptions":{"typeIdentifier":"t_contract$_GemLike_$778","typeString":"contract GemLike"}},"nodeType":"VariableDeclarationStatement","src":"1443:27:1"},{"assignments":[359],"declarations":[{"constant":false,"id":359,"name":"vat","nodeType":"VariableDeclaration","scope":421,"src":"1480:11:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_VatLike_$791","typeString":"contract VatLike"},"typeName":{"contractScope":null,"id":358,"name":"VatLike","nodeType":"UserDefinedTypeName","referencedDeclaration":791,"src":"1480:7:1","typeDescriptions":{"typeIdentifier":"t_contract$_VatLike_$791","typeString":"contract VatLike"}},"value":null,"visibility":"internal"}],"id":363,"initialValue":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":360,"name":"daiJoin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":341,"src":"1494:7:1","typeDescriptions":{"typeIdentifier":"t_contract$_DaiJoinLike_$816","typeString":"contract DaiJoinLike"}},"id":361,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"vat","nodeType":"MemberAccess","referencedDeclaration":796,"src":"1494:11:1","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$_t_contract$_VatLike_$791_$","typeString":"function () external returns (contract VatLike)"}},"id":362,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1494:13:1","typeDescriptions":{"typeIdentifier":"t_contract$_VatLike_$791","typeString":"contract VatLike"}},"nodeType":"VariableDeclarationStatement","src":"1480:27:1"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":366,"name":"dai","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":353,"src":"1533:3:1","typeDescriptions":{"typeIdentifier":"t_contract$_GemLike_$778","typeString":"contract GemLike"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_GemLike_$778","typeString":"contract GemLike"}],"id":365,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1525:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":367,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1525:12:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":368,"name":"underlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6558,"src":"1541:10:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1525:26:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"444149206d757374206265207468652073616d6520617320756e6465726c79696e67","id":370,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1553:36:1","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_9d5ad9ba79703004e0aa26b8888e639620911e16497b9e6e3020040f4ae6191e","typeString":"literal_string \"DAI must be the same as underlying\""},"value":"DAI must be the same as underlying"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9d5ad9ba79703004e0aa26b8888e639620911e16497b9e6e3020040f4ae6191e","typeString":"literal_string \"DAI must be the same as underlying\""}],"id":364,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"1517:7:1","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":371,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1517:73:1","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":372,"nodeType":"ExpressionStatement","src":"1517:73:1"},{"expression":{"argumentTypes":null,"id":375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":373,"name":"daiJoinAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":293,"src":"1644:14:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":374,"name":"daiJoinAddress_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":335,"src":"1661:15:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1644:32:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":376,"nodeType":"ExpressionStatement","src":"1644:32:1"},{"expression":{"argumentTypes":null,"id":379,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":377,"name":"potAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":295,"src":"1686:10:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":378,"name":"potAddress_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":337,"src":"1699:11:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1686:24:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":380,"nodeType":"ExpressionStatement","src":"1686:24:1"},{"expression":{"argumentTypes":null,"id":385,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":381,"name":"vatAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":297,"src":"1720:10:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":383,"name":"vat","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":359,"src":"1741:3:1","typeDescriptions":{"typeIdentifier":"t_contract$_VatLike_$791","typeString":"contract VatLike"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_VatLike_$791","typeString":"contract VatLike"}],"id":382,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1733:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":384,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1733:12:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1720:25:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":386,"nodeType":"ExpressionStatement","src":"1720:25:1"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":390,"name":"daiJoinAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":293,"src":"1831:14:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":393,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"1852:2:1","subExpression":{"argumentTypes":null,"hexValue":"31","id":392,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1853:1:1","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"id":391,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1847:4:1","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":394,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1847:8:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":387,"name":"dai","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":353,"src":"1819:3:1","typeDescriptions":{"typeIdentifier":"t_contract$_GemLike_$778","typeString":"contract GemLike"}},"id":389,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":759,"src":"1819:11:1","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) external"}},"id":395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1819:37:1","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":396,"nodeType":"ExpressionStatement","src":"1819:37:1"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":400,"name":"potAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":295,"src":"1940:10:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":397,"name":"vat","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":359,"src":"1931:3:1","typeDescriptions":{"typeIdentifier":"t_contract$_VatLike_$791","typeString":"contract VatLike"}},"id":399,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"hope","nodeType":"MemberAccess","referencedDeclaration":790,"src":"1931:8:1","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":401,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1931:20:1","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":402,"nodeType":"ExpressionStatement","src":"1931:20:1"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":406,"name":"daiJoinAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":293,"src":"1970:14:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":403,"name":"vat","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":359,"src":"1961:3:1","typeDescriptions":{"typeIdentifier":"t_contract$_VatLike_$791","typeString":"contract VatLike"}},"id":405,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"hope","nodeType":"MemberAccess","referencedDeclaration":790,"src":"1961:8:1","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":407,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1961:24:1","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":408,"nodeType":"ExpressionStatement","src":"1961:24:1"},{"expression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":409,"name":"pot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":347,"src":"2072:3:1","typeDescriptions":{"typeIdentifier":"t_contract$_PotLike_$752","typeString":"contract PotLike"}},"id":411,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"drip","nodeType":"MemberAccess","referencedDeclaration":741,"src":"2072:8:1","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$_t_uint256_$","typeString":"function () external returns (uint256)"}},"id":412,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2072:10:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":413,"nodeType":"ExpressionStatement","src":"2072:10:1"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":416,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22622,"src":"2192:4:1","typeDescriptions":{"typeIdentifier":"t_contract$_CDaiDelegate_$724","typeString":"contract CDaiDelegate"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CDaiDelegate_$724","typeString":"contract CDaiDelegate"}],"id":415,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2184:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":417,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2184:13:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"hexValue":"30","id":418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2199:1:1","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":414,"name":"doTransferIn","nodeType":"Identifier","overloadedDeclarations":[621],"referencedDeclaration":621,"src":"2171:12:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,uint256) returns (uint256)"}},"id":419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2171:30:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":420,"nodeType":"ExpressionStatement","src":"2171:30:1"}]},"documentation":"@notice Explicit interface to become the implementation\n@param daiJoinAddress_ DAI adapter address\n@param potAddress_ DAI Savings Rate (DSR) pot address","id":422,"implemented":true,"kind":"function","modifiers":[],"name":"_becomeImplementation","nodeType":"FunctionDefinition","parameters":{"id":338,"nodeType":"ParameterList","parameters":[{"constant":false,"id":335,"name":"daiJoinAddress_","nodeType":"VariableDeclaration","scope":422,"src":"1215:23:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":334,"name":"address","nodeType":"ElementaryTypeName","src":"1215:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":337,"name":"potAddress_","nodeType":"VariableDeclaration","scope":422,"src":"1240:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":336,"name":"address","nodeType":"ElementaryTypeName","src":"1240:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"1214:46:1"},"returnParameters":{"id":339,"nodeType":"ParameterList","parameters":[],"src":"1270:0:1"},"scope":724,"src":"1184:1024:1","stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},{"body":{"id":483,"nodeType":"Block","src":"2335:625:1","statements":[{"assignments":[426],"declarations":[{"constant":false,"id":426,"name":"daiJoin","nodeType":"VariableDeclaration","scope":483,"src":"2430:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_DaiJoinLike_$816","typeString":"contract DaiJoinLike"},"typeName":{"contractScope":null,"id":425,"name":"DaiJoinLike","nodeType":"UserDefinedTypeName","referencedDeclaration":816,"src":"2430:11:1","typeDescriptions":{"typeIdentifier":"t_contract$_DaiJoinLike_$816","typeString":"contract DaiJoinLike"}},"value":null,"visibility":"internal"}],"id":430,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":428,"name":"daiJoinAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":293,"src":"2464:14:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":427,"name":"DaiJoinLike","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":816,"src":"2452:11:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_DaiJoinLike_$816_$","typeString":"type(contract DaiJoinLike)"}},"id":429,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2452:27:1","typeDescriptions":{"typeIdentifier":"t_contract$_DaiJoinLike_$816","typeString":"contract DaiJoinLike"}},"nodeType":"VariableDeclarationStatement","src":"2430:49:1"},{"assignments":[432],"declarations":[{"constant":false,"id":432,"name":"pot","nodeType":"VariableDeclaration","scope":483,"src":"2489:11:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_PotLike_$752","typeString":"contract PotLike"},"typeName":{"contractScope":null,"id":431,"name":"PotLike","nodeType":"UserDefinedTypeName","referencedDeclaration":752,"src":"2489:7:1","typeDescriptions":{"typeIdentifier":"t_contract$_PotLike_$752","typeString":"contract PotLike"}},"value":null,"visibility":"internal"}],"id":436,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":434,"name":"potAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":295,"src":"2511:10:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":433,"name":"PotLike","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":752,"src":"2503:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PotLike_$752_$","typeString":"type(contract PotLike)"}},"id":435,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2503:19:1","typeDescriptions":{"typeIdentifier":"t_contract$_PotLike_$752","typeString":"contract PotLike"}},"nodeType":"VariableDeclarationStatement","src":"2489:33:1"},{"assignments":[438],"declarations":[{"constant":false,"id":438,"name":"vat","nodeType":"VariableDeclaration","scope":483,"src":"2532:11:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_VatLike_$791","typeString":"contract VatLike"},"typeName":{"contractScope":null,"id":437,"name":"VatLike","nodeType":"UserDefinedTypeName","referencedDeclaration":791,"src":"2532:7:1","typeDescriptions":{"typeIdentifier":"t_contract$_VatLike_$791","typeString":"contract VatLike"}},"value":null,"visibility":"internal"}],"id":442,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":440,"name":"vatAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":297,"src":"2554:10:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":439,"name":"VatLike","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":791,"src":"2546:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_VatLike_$791_$","typeString":"type(contract VatLike)"}},"id":441,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2546:19:1","typeDescriptions":{"typeIdentifier":"t_contract$_VatLike_$791","typeString":"contract VatLike"}},"nodeType":"VariableDeclarationStatement","src":"2532:33:1"},{"expression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":443,"name":"pot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":432,"src":"2607:3:1","typeDescriptions":{"typeIdentifier":"t_contract$_PotLike_$752","typeString":"contract PotLike"}},"id":445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"drip","nodeType":"MemberAccess","referencedDeclaration":741,"src":"2607:8:1","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$_t_uint256_$","typeString":"function () external returns (uint256)"}},"id":446,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2607:10:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":447,"nodeType":"ExpressionStatement","src":"2607:10:1"},{"assignments":[449],"declarations":[{"constant":false,"id":449,"name":"pie","nodeType":"VariableDeclaration","scope":483,"src":"2694:8:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":448,"name":"uint","nodeType":"ElementaryTypeName","src":"2694:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":456,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":453,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22622,"src":"2721:4:1","typeDescriptions":{"typeIdentifier":"t_contract$_CDaiDelegate_$724","typeString":"contract CDaiDelegate"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CDaiDelegate_$724","typeString":"contract CDaiDelegate"}],"id":452,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2713:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":454,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2713:13:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":450,"name":"pot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":432,"src":"2705:3:1","typeDescriptions":{"typeIdentifier":"t_contract$_PotLike_$752","typeString":"contract PotLike"}},"id":451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pie","nodeType":"MemberAccess","referencedDeclaration":736,"src":"2705:7:1","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":455,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2705:22:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2694:33:1"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":460,"name":"pie","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"2746:3:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":457,"name":"pot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":432,"src":"2737:3:1","typeDescriptions":{"typeIdentifier":"t_contract$_PotLike_$752","typeString":"contract PotLike"}},"id":459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"exit","nodeType":"MemberAccess","referencedDeclaration":751,"src":"2737:8:1","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":461,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2737:13:1","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":462,"nodeType":"ExpressionStatement","src":"2737:13:1"},{"assignments":[464],"declarations":[{"constant":false,"id":464,"name":"bal","nodeType":"VariableDeclaration","scope":483,"src":"2835:8:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":463,"name":"uint","nodeType":"ElementaryTypeName","src":"2835:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":471,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":468,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22622,"src":"2862:4:1","typeDescriptions":{"typeIdentifier":"t_contract$_CDaiDelegate_$724","typeString":"contract CDaiDelegate"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CDaiDelegate_$724","typeString":"contract CDaiDelegate"}],"id":467,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2854:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":469,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2854:13:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":465,"name":"vat","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":438,"src":"2846:3:1","typeDescriptions":{"typeIdentifier":"t_contract$_VatLike_$791","typeString":"contract VatLike"}},"id":466,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"dai","nodeType":"MemberAccess","referencedDeclaration":785,"src":"2846:7:1","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":470,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2846:22:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2835:33:1"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":476,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22622,"src":"2936:4:1","typeDescriptions":{"typeIdentifier":"t_contract$_CDaiDelegate_$724","typeString":"contract CDaiDelegate"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CDaiDelegate_$724","typeString":"contract CDaiDelegate"}],"id":475,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2928:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":477,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2928:13:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":478,"name":"bal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":464,"src":"2943:3:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"argumentTypes":null,"id":479,"name":"RAY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"2949:3:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2943:9:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":472,"name":"daiJoin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":426,"src":"2915:7:1","typeDescriptions":{"typeIdentifier":"t_contract$_DaiJoinLike_$816","typeString":"contract DaiJoinLike"}},"id":474,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"exit","nodeType":"MemberAccess","referencedDeclaration":815,"src":"2915:12:1","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) external"}},"id":481,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2915:38:1","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":482,"nodeType":"ExpressionStatement","src":"2915:38:1"}]},"documentation":"@notice Delegate interface to resign the implementation","id":484,"implemented":true,"kind":"function","modifiers":[],"name":"_resignImplementation","nodeType":"FunctionDefinition","parameters":{"id":423,"nodeType":"ParameterList","parameters":[],"src":"2323:2:1"},"returnParameters":{"id":424,"nodeType":"ParameterList","parameters":[],"src":"2335:0:1"},"scope":724,"src":"2293:667:1","stateMutability":"nonpayable","superFunction":1211,"visibility":"internal"},{"body":{"id":499,"nodeType":"Block","src":"3305:156:1","statements":[{"expression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":490,"name":"potAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":295,"src":"3358:10:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":489,"name":"PotLike","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":752,"src":"3350:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PotLike_$752_$","typeString":"type(contract PotLike)"}},"id":491,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3350:19:1","typeDescriptions":{"typeIdentifier":"t_contract$_PotLike_$752","typeString":"contract PotLike"}},"id":492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"drip","nodeType":"MemberAccess","referencedDeclaration":741,"src":"3350:24:1","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$_t_uint256_$","typeString":"function () external returns (uint256)"}},"id":493,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3350:26:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":494,"nodeType":"ExpressionStatement","src":"3350:26:1"},{"expression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":495,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22623,"src":"3432:5:1","typeDescriptions":{"typeIdentifier":"t_super$_CDaiDelegate_$724","typeString":"contract super CDaiDelegate"}},"id":496,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"accrueInterest","nodeType":"MemberAccess","referencedDeclaration":3327,"src":"3432:20:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_uint256_$","typeString":"function () returns (uint256)"}},"id":497,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3432:22:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":488,"id":498,"nodeType":"Return","src":"3425:29:1"}]},"documentation":"@notice Accrues DSR then applies accrued interest to total borrows and reserves\n@dev This calculates interest accrued from the last checkpointed block\n up to the current block and writes new checkpoint to storage.","id":500,"implemented":true,"kind":"function","modifiers":[],"name":"accrueInterest","nodeType":"FunctionDefinition","parameters":{"id":485,"nodeType":"ParameterList","parameters":[],"src":"3280:2:1"},"returnParameters":{"id":488,"nodeType":"ParameterList","parameters":[{"constant":false,"id":487,"name":"","nodeType":"VariableDeclaration","scope":500,"src":"3299:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":486,"name":"uint","nodeType":"ElementaryTypeName","src":"3299:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"3298:6:1"},"scope":724,"src":"3257:204:1","stateMutability":"nonpayable","superFunction":3327,"visibility":"public"},{"body":{"id":529,"nodeType":"Block","src":"3773:135:1","statements":[{"assignments":[506],"declarations":[{"constant":false,"id":506,"name":"pot","nodeType":"VariableDeclaration","scope":529,"src":"3783:11:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_PotLike_$752","typeString":"contract PotLike"},"typeName":{"contractScope":null,"id":505,"name":"PotLike","nodeType":"UserDefinedTypeName","referencedDeclaration":752,"src":"3783:7:1","typeDescriptions":{"typeIdentifier":"t_contract$_PotLike_$752","typeString":"contract PotLike"}},"value":null,"visibility":"internal"}],"id":510,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":508,"name":"potAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":295,"src":"3805:10:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":507,"name":"PotLike","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":752,"src":"3797:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PotLike_$752_$","typeString":"type(contract PotLike)"}},"id":509,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3797:19:1","typeDescriptions":{"typeIdentifier":"t_contract$_PotLike_$752","typeString":"contract PotLike"}},"nodeType":"VariableDeclarationStatement","src":"3783:33:1"},{"assignments":[512],"declarations":[{"constant":false,"id":512,"name":"pie","nodeType":"VariableDeclaration","scope":529,"src":"3826:8:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":511,"name":"uint","nodeType":"ElementaryTypeName","src":"3826:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":519,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":516,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22622,"src":"3853:4:1","typeDescriptions":{"typeIdentifier":"t_contract$_CDaiDelegate_$724","typeString":"contract CDaiDelegate"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CDaiDelegate_$724","typeString":"contract CDaiDelegate"}],"id":515,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3845:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":517,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3845:13:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":513,"name":"pot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":506,"src":"3837:3:1","typeDescriptions":{"typeIdentifier":"t_contract$_PotLike_$752","typeString":"contract PotLike"}},"id":514,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pie","nodeType":"MemberAccess","referencedDeclaration":736,"src":"3837:7:1","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":518,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3837:22:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3826:33:1"},{"expression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":527,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":521,"name":"pot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":506,"src":"3880:3:1","typeDescriptions":{"typeIdentifier":"t_contract$_PotLike_$752","typeString":"contract PotLike"}},"id":522,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"chi","nodeType":"MemberAccess","referencedDeclaration":729,"src":"3880:7:1","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":523,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3880:9:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":524,"name":"pie","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":512,"src":"3891:3:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":520,"name":"mul","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":723,"src":"3876:3:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":525,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3876:19:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"argumentTypes":null,"id":526,"name":"RAY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"3898:3:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3876:25:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":504,"id":528,"nodeType":"Return","src":"3869:32:1"}]},"documentation":"@notice Gets balance of this contract in terms of the underlying\n@dev This excludes the value of the current message, if any\n@return The quantity of underlying tokens owned by this contract","id":530,"implemented":true,"kind":"function","modifiers":[],"name":"getCashPrior","nodeType":"FunctionDefinition","parameters":{"id":501,"nodeType":"ParameterList","parameters":[],"src":"3741:2:1"},"returnParameters":{"id":504,"nodeType":"ParameterList","parameters":[{"constant":false,"id":503,"name":"","nodeType":"VariableDeclaration","scope":530,"src":"3767:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":502,"name":"uint","nodeType":"ElementaryTypeName","src":"3767:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"3766:6:1"},"scope":724,"src":"3720:188:1","stateMutability":"view","superFunction":1010,"visibility":"internal"},{"body":{"id":620,"nodeType":"Block","src":"4239:915:1","statements":[{"assignments":[540],"declarations":[{"constant":false,"id":540,"name":"token","nodeType":"VariableDeclaration","scope":620,"src":"4291:20:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_EIP20Interface_$13484","typeString":"contract EIP20Interface"},"typeName":{"contractScope":null,"id":539,"name":"EIP20Interface","nodeType":"UserDefinedTypeName","referencedDeclaration":13484,"src":"4291:14:1","typeDescriptions":{"typeIdentifier":"t_contract$_EIP20Interface_$13484","typeString":"contract EIP20Interface"}},"value":null,"visibility":"internal"}],"id":544,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":542,"name":"underlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6558,"src":"4329:10:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":541,"name":"EIP20Interface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13484,"src":"4314:14:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_EIP20Interface_$13484_$","typeString":"type(contract EIP20Interface)"}},"id":543,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4314:26:1","typeDescriptions":{"typeIdentifier":"t_contract$_EIP20Interface_$13484","typeString":"contract EIP20Interface"}},"nodeType":"VariableDeclarationStatement","src":"4291:49:1"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":548,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":532,"src":"4377:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":550,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22622,"src":"4391:4:1","typeDescriptions":{"typeIdentifier":"t_contract$_CDaiDelegate_$724","typeString":"contract CDaiDelegate"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CDaiDelegate_$724","typeString":"contract CDaiDelegate"}],"id":549,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4383:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":551,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4383:13:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":552,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":534,"src":"4398:6:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":546,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":540,"src":"4358:5:1","typeDescriptions":{"typeIdentifier":"t_contract$_EIP20Interface_$13484","typeString":"contract EIP20Interface"}},"id":547,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":13449,"src":"4358:18:1","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4358:47:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"756e6578706563746564204549502d3230207472616e7366657220696e2072657475726e","id":554,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4407:38:1","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_b2415c46a2f56c9f86579e16ae665dcce70e15dea44f7c23ca7f7990fa1affc7","typeString":"literal_string \"unexpected EIP-20 transfer in return\""},"value":"unexpected EIP-20 transfer in return"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b2415c46a2f56c9f86579e16ae665dcce70e15dea44f7c23ca7f7990fa1affc7","typeString":"literal_string \"unexpected EIP-20 transfer in return\""}],"id":545,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"4350:7:1","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":555,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4350:96:1","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":556,"nodeType":"ExpressionStatement","src":"4350:96:1"},{"assignments":[558],"declarations":[{"constant":false,"id":558,"name":"daiJoin","nodeType":"VariableDeclaration","scope":620,"src":"4457:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_DaiJoinLike_$816","typeString":"contract DaiJoinLike"},"typeName":{"contractScope":null,"id":557,"name":"DaiJoinLike","nodeType":"UserDefinedTypeName","referencedDeclaration":816,"src":"4457:11:1","typeDescriptions":{"typeIdentifier":"t_contract$_DaiJoinLike_$816","typeString":"contract DaiJoinLike"}},"value":null,"visibility":"internal"}],"id":562,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":560,"name":"daiJoinAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":293,"src":"4491:14:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":559,"name":"DaiJoinLike","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":816,"src":"4479:11:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_DaiJoinLike_$816_$","typeString":"type(contract DaiJoinLike)"}},"id":561,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4479:27:1","typeDescriptions":{"typeIdentifier":"t_contract$_DaiJoinLike_$816","typeString":"contract DaiJoinLike"}},"nodeType":"VariableDeclarationStatement","src":"4457:49:1"},{"assignments":[564],"declarations":[{"constant":false,"id":564,"name":"dai","nodeType":"VariableDeclaration","scope":620,"src":"4516:11:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_GemLike_$778","typeString":"contract GemLike"},"typeName":{"contractScope":null,"id":563,"name":"GemLike","nodeType":"UserDefinedTypeName","referencedDeclaration":778,"src":"4516:7:1","typeDescriptions":{"typeIdentifier":"t_contract$_GemLike_$778","typeString":"contract GemLike"}},"value":null,"visibility":"internal"}],"id":568,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":566,"name":"underlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6558,"src":"4538:10:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":565,"name":"GemLike","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":778,"src":"4530:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_GemLike_$778_$","typeString":"type(contract GemLike)"}},"id":567,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4530:19:1","typeDescriptions":{"typeIdentifier":"t_contract$_GemLike_$778","typeString":"contract GemLike"}},"nodeType":"VariableDeclarationStatement","src":"4516:33:1"},{"assignments":[570],"declarations":[{"constant":false,"id":570,"name":"pot","nodeType":"VariableDeclaration","scope":620,"src":"4559:11:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_PotLike_$752","typeString":"contract PotLike"},"typeName":{"contractScope":null,"id":569,"name":"PotLike","nodeType":"UserDefinedTypeName","referencedDeclaration":752,"src":"4559:7:1","typeDescriptions":{"typeIdentifier":"t_contract$_PotLike_$752","typeString":"contract PotLike"}},"value":null,"visibility":"internal"}],"id":574,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":572,"name":"potAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":295,"src":"4581:10:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":571,"name":"PotLike","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":752,"src":"4573:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PotLike_$752_$","typeString":"type(contract PotLike)"}},"id":573,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4573:19:1","typeDescriptions":{"typeIdentifier":"t_contract$_PotLike_$752","typeString":"contract PotLike"}},"nodeType":"VariableDeclarationStatement","src":"4559:33:1"},{"assignments":[576],"declarations":[{"constant":false,"id":576,"name":"vat","nodeType":"VariableDeclaration","scope":620,"src":"4602:11:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_VatLike_$791","typeString":"contract VatLike"},"typeName":{"contractScope":null,"id":575,"name":"VatLike","nodeType":"UserDefinedTypeName","referencedDeclaration":791,"src":"4602:7:1","typeDescriptions":{"typeIdentifier":"t_contract$_VatLike_$791","typeString":"contract VatLike"}},"value":null,"visibility":"internal"}],"id":580,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":578,"name":"vatAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":297,"src":"4624:10:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":577,"name":"VatLike","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":791,"src":"4616:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_VatLike_$791_$","typeString":"type(contract VatLike)"}},"id":579,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4616:19:1","typeDescriptions":{"typeIdentifier":"t_contract$_VatLike_$791","typeString":"contract VatLike"}},"nodeType":"VariableDeclarationStatement","src":"4602:33:1"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":585,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22622,"src":"4725:4:1","typeDescriptions":{"typeIdentifier":"t_contract$_CDaiDelegate_$724","typeString":"contract CDaiDelegate"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CDaiDelegate_$724","typeString":"contract CDaiDelegate"}],"id":584,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4717:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":586,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4717:13:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":590,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22622,"src":"4754:4:1","typeDescriptions":{"typeIdentifier":"t_contract$_CDaiDelegate_$724","typeString":"contract CDaiDelegate"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CDaiDelegate_$724","typeString":"contract CDaiDelegate"}],"id":589,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4746:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":591,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4746:13:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":587,"name":"dai","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":564,"src":"4732:3:1","typeDescriptions":{"typeIdentifier":"t_contract$_GemLike_$778","typeString":"contract GemLike"}},"id":588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":766,"src":"4732:13:1","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":592,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4732:28:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":581,"name":"daiJoin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":558,"src":"4704:7:1","typeDescriptions":{"typeIdentifier":"t_contract$_DaiJoinLike_$816","typeString":"contract DaiJoinLike"}},"id":583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"join","nodeType":"MemberAccess","referencedDeclaration":808,"src":"4704:12:1","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) payable external"}},"id":593,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4704:57:1","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":594,"nodeType":"ExpressionStatement","src":"4704:57:1"},{"assignments":[596],"declarations":[{"constant":false,"id":596,"name":"bal","nodeType":"VariableDeclaration","scope":620,"src":"4842:8:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":595,"name":"uint","nodeType":"ElementaryTypeName","src":"4842:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":603,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":600,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22622,"src":"4869:4:1","typeDescriptions":{"typeIdentifier":"t_contract$_CDaiDelegate_$724","typeString":"contract CDaiDelegate"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CDaiDelegate_$724","typeString":"contract CDaiDelegate"}],"id":599,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4861:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":601,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4861:13:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":597,"name":"vat","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":576,"src":"4853:3:1","typeDescriptions":{"typeIdentifier":"t_contract$_VatLike_$791","typeString":"contract VatLike"}},"id":598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"dai","nodeType":"MemberAccess","referencedDeclaration":785,"src":"4853:7:1","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":602,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4853:22:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4842:33:1"},{"assignments":[605],"declarations":[{"constant":false,"id":605,"name":"pie","nodeType":"VariableDeclaration","scope":620,"src":"5074:8:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":604,"name":"uint","nodeType":"ElementaryTypeName","src":"5074:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":611,"initialValue":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":606,"name":"bal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":596,"src":"5085:3:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":607,"name":"pot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":570,"src":"5091:3:1","typeDescriptions":{"typeIdentifier":"t_contract$_PotLike_$752","typeString":"contract PotLike"}},"id":608,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"chi","nodeType":"MemberAccess","referencedDeclaration":729,"src":"5091:7:1","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":609,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5091:9:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5085:15:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5074:26:1"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":615,"name":"pie","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":605,"src":"5119:3:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":612,"name":"pot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":570,"src":"5110:3:1","typeDescriptions":{"typeIdentifier":"t_contract$_PotLike_$752","typeString":"contract PotLike"}},"id":614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"join","nodeType":"MemberAccess","referencedDeclaration":746,"src":"5110:8:1","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":616,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5110:13:1","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":617,"nodeType":"ExpressionStatement","src":"5110:13:1"},{"expression":{"argumentTypes":null,"id":618,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":534,"src":"5141:6:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":538,"id":619,"nodeType":"Return","src":"5134:13:1"}]},"documentation":"@notice Transfer the underlying to this contract and sweep into DSR pot\n@param from Address to transfer funds from\n@param amount Amount of underlying to transfer\n@return The actual amount that is transferred","id":621,"implemented":true,"kind":"function","modifiers":[],"name":"doTransferIn","nodeType":"FunctionDefinition","parameters":{"id":535,"nodeType":"ParameterList","parameters":[{"constant":false,"id":532,"name":"from","nodeType":"VariableDeclaration","scope":621,"src":"4188:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":531,"name":"address","nodeType":"ElementaryTypeName","src":"4188:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":534,"name":"amount","nodeType":"VariableDeclaration","scope":621,"src":"4202:11:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":533,"name":"uint","nodeType":"ElementaryTypeName","src":"4202:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"4187:27:1"},"returnParameters":{"id":538,"nodeType":"ParameterList","parameters":[{"constant":false,"id":537,"name":"","nodeType":"VariableDeclaration","scope":621,"src":"4233:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":536,"name":"uint","nodeType":"ElementaryTypeName","src":"4233:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"4232:6:1"},"scope":724,"src":"4166:988:1","stateMutability":"nonpayable","superFunction":1070,"visibility":"internal"},{"body":{"id":667,"nodeType":"Block","src":"5430:404:1","statements":[{"assignments":[629],"declarations":[{"constant":false,"id":629,"name":"daiJoin","nodeType":"VariableDeclaration","scope":667,"src":"5440:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_DaiJoinLike_$816","typeString":"contract DaiJoinLike"},"typeName":{"contractScope":null,"id":628,"name":"DaiJoinLike","nodeType":"UserDefinedTypeName","referencedDeclaration":816,"src":"5440:11:1","typeDescriptions":{"typeIdentifier":"t_contract$_DaiJoinLike_$816","typeString":"contract DaiJoinLike"}},"value":null,"visibility":"internal"}],"id":633,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":631,"name":"daiJoinAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":293,"src":"5474:14:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":630,"name":"DaiJoinLike","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":816,"src":"5462:11:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_DaiJoinLike_$816_$","typeString":"type(contract DaiJoinLike)"}},"id":632,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5462:27:1","typeDescriptions":{"typeIdentifier":"t_contract$_DaiJoinLike_$816","typeString":"contract DaiJoinLike"}},"nodeType":"VariableDeclarationStatement","src":"5440:49:1"},{"assignments":[635],"declarations":[{"constant":false,"id":635,"name":"pot","nodeType":"VariableDeclaration","scope":667,"src":"5499:11:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_PotLike_$752","typeString":"contract PotLike"},"typeName":{"contractScope":null,"id":634,"name":"PotLike","nodeType":"UserDefinedTypeName","referencedDeclaration":752,"src":"5499:7:1","typeDescriptions":{"typeIdentifier":"t_contract$_PotLike_$752","typeString":"contract PotLike"}},"value":null,"visibility":"internal"}],"id":639,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":637,"name":"potAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":295,"src":"5521:10:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":636,"name":"PotLike","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":752,"src":"5513:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PotLike_$752_$","typeString":"type(contract PotLike)"}},"id":638,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5513:19:1","typeDescriptions":{"typeIdentifier":"t_contract$_PotLike_$752","typeString":"contract PotLike"}},"nodeType":"VariableDeclarationStatement","src":"5499:33:1"},{"assignments":[641],"declarations":[{"constant":false,"id":641,"name":"pie","nodeType":"VariableDeclaration","scope":667,"src":"5722:8:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":640,"name":"uint","nodeType":"ElementaryTypeName","src":"5722:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":653,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":644,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":625,"src":"5741:6:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":645,"name":"RAY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"5749:3:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":643,"name":"mul","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":723,"src":"5737:3:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":646,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5737:16:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":647,"name":"pot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":635,"src":"5756:3:1","typeDescriptions":{"typeIdentifier":"t_contract$_PotLike_$752","typeString":"contract PotLike"}},"id":648,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"chi","nodeType":"MemberAccess","referencedDeclaration":729,"src":"5756:7:1","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":649,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5756:9:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5737:28:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"31","id":651,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5767:1:1","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":642,"name":"add","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":695,"src":"5733:3:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":652,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5733:36:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5722:47:1"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":657,"name":"pie","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":641,"src":"5788:3:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":654,"name":"pot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":635,"src":"5779:3:1","typeDescriptions":{"typeIdentifier":"t_contract$_PotLike_$752","typeString":"contract PotLike"}},"id":656,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"exit","nodeType":"MemberAccess","referencedDeclaration":751,"src":"5779:8:1","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":658,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5779:13:1","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":659,"nodeType":"ExpressionStatement","src":"5779:13:1"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":663,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":623,"src":"5816:2:1","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"id":664,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":625,"src":"5820:6:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":660,"name":"daiJoin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":629,"src":"5803:7:1","typeDescriptions":{"typeIdentifier":"t_contract$_DaiJoinLike_$816","typeString":"contract DaiJoinLike"}},"id":662,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"exit","nodeType":"MemberAccess","referencedDeclaration":815,"src":"5803:12:1","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) external"}},"id":665,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5803:24:1","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":666,"nodeType":"ExpressionStatement","src":"5803:24:1"}]},"documentation":"@notice Transfer the underlying from this contract, after sweeping out of DSR pot\n@param to Address to transfer funds to\n@param amount Amount of underlying to transfer","id":668,"implemented":true,"kind":"function","modifiers":[],"name":"doTransferOut","nodeType":"FunctionDefinition","parameters":{"id":626,"nodeType":"ParameterList","parameters":[{"constant":false,"id":623,"name":"to","nodeType":"VariableDeclaration","scope":668,"src":"5388:18:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":622,"name":"address","nodeType":"ElementaryTypeName","src":"5388:15:1","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"value":null,"visibility":"internal"},{"constant":false,"id":625,"name":"amount","nodeType":"VariableDeclaration","scope":668,"src":"5408:11:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":624,"name":"uint","nodeType":"ElementaryTypeName","src":"5408:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"5387:33:1"},"returnParameters":{"id":627,"nodeType":"ParameterList","parameters":[],"src":"5430:0:1"},"scope":724,"src":"5365:469:1","stateMutability":"nonpayable","superFunction":1092,"visibility":"internal"},{"constant":true,"id":673,"name":"RAY","nodeType":"VariableDeclaration","scope":724,"src":"5871:31:1","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":669,"name":"uint256","nodeType":"ElementaryTypeName","src":"5871:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_1000000000000000000000000000_by_1","typeString":"int_const 1000000000000000000000000000"},"id":672,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"hexValue":"3130","id":670,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5894:2:1","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"argumentTypes":null,"hexValue":"3237","id":671,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5900:2:1","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_27_by_1","typeString":"int_const 27"},"value":"27"},"src":"5894:8:1","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000000000000_by_1","typeString":"int_const 1000000000000000000000000000"}},"visibility":"internal"},{"body":{"id":694,"nodeType":"Block","src":"5969:58:1","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":690,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":687,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":683,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":680,"src":"5988:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":686,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":684,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":675,"src":"5992:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"argumentTypes":null,"id":685,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":677,"src":"5996:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5992:5:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5988:9:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":688,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5987:11:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"argumentTypes":null,"id":689,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":675,"src":"6002:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5987:16:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"6164642d6f766572666c6f77","id":691,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6005:14:1","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_e3787242fec21bbe4a16834d5732c1de0c1e635c55216b66b458554d38848a67","typeString":"literal_string \"add-overflow\""},"value":"add-overflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e3787242fec21bbe4a16834d5732c1de0c1e635c55216b66b458554d38848a67","typeString":"literal_string \"add-overflow\""}],"id":682,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"5979:7:1","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":"5979:41:1","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":693,"nodeType":"ExpressionStatement","src":"5979:41:1"}]},"documentation":null,"id":695,"implemented":true,"kind":"function","modifiers":[],"name":"add","nodeType":"FunctionDefinition","parameters":{"id":678,"nodeType":"ParameterList","parameters":[{"constant":false,"id":675,"name":"x","nodeType":"VariableDeclaration","scope":695,"src":"5922:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":674,"name":"uint","nodeType":"ElementaryTypeName","src":"5922:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":677,"name":"y","nodeType":"VariableDeclaration","scope":695,"src":"5930:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":676,"name":"uint","nodeType":"ElementaryTypeName","src":"5930:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"5921:16:1"},"returnParameters":{"id":681,"nodeType":"ParameterList","parameters":[{"constant":false,"id":680,"name":"z","nodeType":"VariableDeclaration","scope":695,"src":"5961:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":679,"name":"uint","nodeType":"ElementaryTypeName","src":"5961:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"5960:8:1"},"scope":724,"src":"5909:118:1","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":722,"nodeType":"Block","src":"6093:72:1","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":718,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":707,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":705,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":699,"src":"6111:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":706,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6116:1:1","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6111:6:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":717,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":708,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":702,"src":"6122:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":709,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":697,"src":"6126:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"argumentTypes":null,"id":710,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":699,"src":"6130:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6126:5:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6122:9:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":713,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6121:11:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"argumentTypes":null,"id":714,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":699,"src":"6135:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6121:15:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":716,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":697,"src":"6140:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6121:20:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6111:30:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"6d756c2d6f766572666c6f77","id":719,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6143:14:1","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_1a30ac25f4bfc948eccf56744de0a5a3c60d46ff6ce98b4d8839e7386b7f9d2f","typeString":"literal_string \"mul-overflow\""},"value":"mul-overflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1a30ac25f4bfc948eccf56744de0a5a3c60d46ff6ce98b4d8839e7386b7f9d2f","typeString":"literal_string \"mul-overflow\""}],"id":704,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"6103:7:1","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":720,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6103:55:1","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":721,"nodeType":"ExpressionStatement","src":"6103:55:1"}]},"documentation":null,"id":723,"implemented":true,"kind":"function","modifiers":[],"name":"mul","nodeType":"FunctionDefinition","parameters":{"id":700,"nodeType":"ParameterList","parameters":[{"constant":false,"id":697,"name":"x","nodeType":"VariableDeclaration","scope":723,"src":"6046:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":696,"name":"uint","nodeType":"ElementaryTypeName","src":"6046:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":699,"name":"y","nodeType":"VariableDeclaration","scope":723,"src":"6054:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":698,"name":"uint","nodeType":"ElementaryTypeName","src":"6054:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"6045:16:1"},"returnParameters":{"id":703,"nodeType":"ParameterList","parameters":[{"constant":false,"id":702,"name":"z","nodeType":"VariableDeclaration","scope":723,"src":"6085:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":701,"name":"uint","nodeType":"ElementaryTypeName","src":"6085:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"6084:8:1"},"scope":724,"src":"6033:132:1","stateMutability":"pure","superFunction":null,"visibility":"internal"}],"scope":817,"src":"171:5996:1"},{"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":"* Maker Interfaces **","fullyImplemented":false,"id":752,"linearizedBaseContracts":[752],"name":"PotLike","nodeType":"ContractDefinition","nodes":[{"body":null,"documentation":null,"id":729,"implemented":false,"kind":"function","modifiers":[],"name":"chi","nodeType":"FunctionDefinition","parameters":{"id":725,"nodeType":"ParameterList","parameters":[],"src":"6233:2:1"},"returnParameters":{"id":728,"nodeType":"ParameterList","parameters":[{"constant":false,"id":727,"name":"","nodeType":"VariableDeclaration","scope":729,"src":"6259:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":726,"name":"uint","nodeType":"ElementaryTypeName","src":"6259:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"6258:6:1"},"scope":752,"src":"6221:44:1","stateMutability":"view","superFunction":null,"visibility":"external"},{"body":null,"documentation":null,"id":736,"implemented":false,"kind":"function","modifiers":[],"name":"pie","nodeType":"FunctionDefinition","parameters":{"id":732,"nodeType":"ParameterList","parameters":[{"constant":false,"id":731,"name":"","nodeType":"VariableDeclaration","scope":736,"src":"6283:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":730,"name":"address","nodeType":"ElementaryTypeName","src":"6283:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"6282:9:1"},"returnParameters":{"id":735,"nodeType":"ParameterList","parameters":[{"constant":false,"id":734,"name":"","nodeType":"VariableDeclaration","scope":736,"src":"6315:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":733,"name":"uint","nodeType":"ElementaryTypeName","src":"6315:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"6314:6:1"},"scope":752,"src":"6270:51:1","stateMutability":"view","superFunction":null,"visibility":"external"},{"body":null,"documentation":null,"id":741,"implemented":false,"kind":"function","modifiers":[],"name":"drip","nodeType":"FunctionDefinition","parameters":{"id":737,"nodeType":"ParameterList","parameters":[],"src":"6339:2:1"},"returnParameters":{"id":740,"nodeType":"ParameterList","parameters":[{"constant":false,"id":739,"name":"","nodeType":"VariableDeclaration","scope":741,"src":"6360:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":738,"name":"uint","nodeType":"ElementaryTypeName","src":"6360:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"6359:6:1"},"scope":752,"src":"6326:40:1","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":null,"documentation":null,"id":746,"implemented":false,"kind":"function","modifiers":[],"name":"join","nodeType":"FunctionDefinition","parameters":{"id":744,"nodeType":"ParameterList","parameters":[{"constant":false,"id":743,"name":"","nodeType":"VariableDeclaration","scope":746,"src":"6385:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":742,"name":"uint","nodeType":"ElementaryTypeName","src":"6385:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"6384:6:1"},"returnParameters":{"id":745,"nodeType":"ParameterList","parameters":[],"src":"6399:0:1"},"scope":752,"src":"6371:29:1","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":null,"documentation":null,"id":751,"implemented":false,"kind":"function","modifiers":[],"name":"exit","nodeType":"FunctionDefinition","parameters":{"id":749,"nodeType":"ParameterList","parameters":[{"constant":false,"id":748,"name":"","nodeType":"VariableDeclaration","scope":751,"src":"6419:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":747,"name":"uint","nodeType":"ElementaryTypeName","src":"6419:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"6418:6:1"},"returnParameters":{"id":750,"nodeType":"ParameterList","parameters":[],"src":"6433:0:1"},"scope":752,"src":"6405:29:1","stateMutability":"nonpayable","superFunction":null,"visibility":"external"}],"scope":817,"src":"6197:239:1"},{"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":null,"fullyImplemented":false,"id":778,"linearizedBaseContracts":[778],"name":"GemLike","nodeType":"ContractDefinition","nodes":[{"body":null,"documentation":null,"id":759,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nodeType":"FunctionDefinition","parameters":{"id":757,"nodeType":"ParameterList","parameters":[{"constant":false,"id":754,"name":"","nodeType":"VariableDeclaration","scope":759,"src":"6479:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":753,"name":"address","nodeType":"ElementaryTypeName","src":"6479:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":756,"name":"","nodeType":"VariableDeclaration","scope":759,"src":"6488:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":755,"name":"uint","nodeType":"ElementaryTypeName","src":"6488:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"6478:15:1"},"returnParameters":{"id":758,"nodeType":"ParameterList","parameters":[],"src":"6502:0:1"},"scope":778,"src":"6462:41:1","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":null,"documentation":null,"id":766,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nodeType":"FunctionDefinition","parameters":{"id":762,"nodeType":"ParameterList","parameters":[{"constant":false,"id":761,"name":"","nodeType":"VariableDeclaration","scope":766,"src":"6527:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":760,"name":"address","nodeType":"ElementaryTypeName","src":"6527:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"6526:9:1"},"returnParameters":{"id":765,"nodeType":"ParameterList","parameters":[{"constant":false,"id":764,"name":"","nodeType":"VariableDeclaration","scope":766,"src":"6559:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":763,"name":"uint","nodeType":"ElementaryTypeName","src":"6559:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"6558:6:1"},"scope":778,"src":"6508:57:1","stateMutability":"view","superFunction":null,"visibility":"external"},{"body":null,"documentation":null,"id":777,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nodeType":"FunctionDefinition","parameters":{"id":773,"nodeType":"ParameterList","parameters":[{"constant":false,"id":768,"name":"","nodeType":"VariableDeclaration","scope":777,"src":"6592:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":767,"name":"address","nodeType":"ElementaryTypeName","src":"6592:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":770,"name":"","nodeType":"VariableDeclaration","scope":777,"src":"6601:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":769,"name":"address","nodeType":"ElementaryTypeName","src":"6601:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":772,"name":"","nodeType":"VariableDeclaration","scope":777,"src":"6610:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":771,"name":"uint","nodeType":"ElementaryTypeName","src":"6610:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"6591:24:1"},"returnParameters":{"id":776,"nodeType":"ParameterList","parameters":[{"constant":false,"id":775,"name":"","nodeType":"VariableDeclaration","scope":777,"src":"6634:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":774,"name":"bool","nodeType":"ElementaryTypeName","src":"6634:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"6633:6:1"},"scope":778,"src":"6570:70:1","stateMutability":"nonpayable","superFunction":null,"visibility":"external"}],"scope":817,"src":"6438:204:1"},{"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":null,"fullyImplemented":false,"id":791,"linearizedBaseContracts":[791],"name":"VatLike","nodeType":"ContractDefinition","nodes":[{"body":null,"documentation":null,"id":785,"implemented":false,"kind":"function","modifiers":[],"name":"dai","nodeType":"FunctionDefinition","parameters":{"id":781,"nodeType":"ParameterList","parameters":[{"constant":false,"id":780,"name":"","nodeType":"VariableDeclaration","scope":785,"src":"6681:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":779,"name":"address","nodeType":"ElementaryTypeName","src":"6681:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"6680:9:1"},"returnParameters":{"id":784,"nodeType":"ParameterList","parameters":[{"constant":false,"id":783,"name":"","nodeType":"VariableDeclaration","scope":785,"src":"6713:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":782,"name":"uint","nodeType":"ElementaryTypeName","src":"6713:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"6712:6:1"},"scope":791,"src":"6668:51:1","stateMutability":"view","superFunction":null,"visibility":"external"},{"body":null,"documentation":null,"id":790,"implemented":false,"kind":"function","modifiers":[],"name":"hope","nodeType":"FunctionDefinition","parameters":{"id":788,"nodeType":"ParameterList","parameters":[{"constant":false,"id":787,"name":"","nodeType":"VariableDeclaration","scope":790,"src":"6738:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":786,"name":"address","nodeType":"ElementaryTypeName","src":"6738:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"6737:9:1"},"returnParameters":{"id":789,"nodeType":"ParameterList","parameters":[],"src":"6755:0:1"},"scope":791,"src":"6724:32:1","stateMutability":"nonpayable","superFunction":null,"visibility":"external"}],"scope":817,"src":"6644:114:1"},{"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":null,"fullyImplemented":false,"id":816,"linearizedBaseContracts":[816],"name":"DaiJoinLike","nodeType":"ContractDefinition","nodes":[{"body":null,"documentation":null,"id":796,"implemented":false,"kind":"function","modifiers":[],"name":"vat","nodeType":"FunctionDefinition","parameters":{"id":792,"nodeType":"ParameterList","parameters":[],"src":"6800:2:1"},"returnParameters":{"id":795,"nodeType":"ParameterList","parameters":[{"constant":false,"id":794,"name":"","nodeType":"VariableDeclaration","scope":796,"src":"6821:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_VatLike_$791","typeString":"contract VatLike"},"typeName":{"contractScope":null,"id":793,"name":"VatLike","nodeType":"UserDefinedTypeName","referencedDeclaration":791,"src":"6821:7:1","typeDescriptions":{"typeIdentifier":"t_contract$_VatLike_$791","typeString":"contract VatLike"}},"value":null,"visibility":"internal"}],"src":"6820:9:1"},"scope":816,"src":"6788:42:1","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":null,"documentation":null,"id":801,"implemented":false,"kind":"function","modifiers":[],"name":"dai","nodeType":"FunctionDefinition","parameters":{"id":797,"nodeType":"ParameterList","parameters":[],"src":"6847:2:1"},"returnParameters":{"id":800,"nodeType":"ParameterList","parameters":[{"constant":false,"id":799,"name":"","nodeType":"VariableDeclaration","scope":801,"src":"6868:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_GemLike_$778","typeString":"contract GemLike"},"typeName":{"contractScope":null,"id":798,"name":"GemLike","nodeType":"UserDefinedTypeName","referencedDeclaration":778,"src":"6868:7:1","typeDescriptions":{"typeIdentifier":"t_contract$_GemLike_$778","typeString":"contract GemLike"}},"value":null,"visibility":"internal"}],"src":"6867:9:1"},"scope":816,"src":"6835:42:1","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":null,"documentation":null,"id":808,"implemented":false,"kind":"function","modifiers":[],"name":"join","nodeType":"FunctionDefinition","parameters":{"id":806,"nodeType":"ParameterList","parameters":[{"constant":false,"id":803,"name":"","nodeType":"VariableDeclaration","scope":808,"src":"6896:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":802,"name":"address","nodeType":"ElementaryTypeName","src":"6896:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":805,"name":"","nodeType":"VariableDeclaration","scope":808,"src":"6905:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":804,"name":"uint","nodeType":"ElementaryTypeName","src":"6905:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"6895:15:1"},"returnParameters":{"id":807,"nodeType":"ParameterList","parameters":[],"src":"6927:0:1"},"scope":816,"src":"6882:46:1","stateMutability":"payable","superFunction":null,"visibility":"external"},{"body":null,"documentation":null,"id":815,"implemented":false,"kind":"function","modifiers":[],"name":"exit","nodeType":"FunctionDefinition","parameters":{"id":813,"nodeType":"ParameterList","parameters":[{"constant":false,"id":810,"name":"","nodeType":"VariableDeclaration","scope":815,"src":"6947:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":809,"name":"address","nodeType":"ElementaryTypeName","src":"6947:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":812,"name":"","nodeType":"VariableDeclaration","scope":815,"src":"6956:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":811,"name":"uint","nodeType":"ElementaryTypeName","src":"6956:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"6946:15:1"},"returnParameters":{"id":814,"nodeType":"ParameterList","parameters":[],"src":"6970:0:1"},"scope":816,"src":"6933:38:1","stateMutability":"nonpayable","superFunction":null,"visibility":"external"}],"scope":817,"src":"6760:213:1"}],"src":"0:6974:1"},"id":1},"contracts/CErc20.sol":{"ast":{"absolutePath":"contracts/CErc20.sol","exportedSymbols":{"CErc20":[1143],"CompLike":[825]},"id":1144,"nodeType":"SourceUnit","nodes":[{"id":818,"literals":["solidity","0.5",".17"],"nodeType":"PragmaDirective","src":"0:23:2"},{"absolutePath":"contracts/CToken.sol","file":"./CToken.sol","id":819,"nodeType":"ImportDirective","scope":1144,"sourceUnit":6187,"src":"25:22:2","symbolAliases":[],"unitAlias":""},{"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":null,"fullyImplemented":false,"id":825,"linearizedBaseContracts":[825],"name":"CompLike","nodeType":"ContractDefinition","nodes":[{"body":null,"documentation":null,"id":824,"implemented":false,"kind":"function","modifiers":[],"name":"delegate","nodeType":"FunctionDefinition","parameters":{"id":822,"nodeType":"ParameterList","parameters":[{"constant":false,"id":821,"name":"delegatee","nodeType":"VariableDeclaration","scope":824,"src":"90:17:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":820,"name":"address","nodeType":"ElementaryTypeName","src":"90:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"89:19:2"},"returnParameters":{"id":823,"nodeType":"ParameterList","parameters":[],"src":"117:0:2"},"scope":825,"src":"72:46:2","stateMutability":"nonpayable","superFunction":null,"visibility":"external"}],"scope":1144,"src":"49:71:2"},{"baseContracts":[{"arguments":null,"baseName":{"contractScope":null,"id":826,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"422:6:2","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":827,"nodeType":"InheritanceSpecifier","src":"422:6:2"},{"arguments":null,"baseName":{"contractScope":null,"id":828,"name":"CErc20Interface","nodeType":"UserDefinedTypeName","referencedDeclaration":6617,"src":"430:15:2","typeDescriptions":{"typeIdentifier":"t_contract$_CErc20Interface_$6617","typeString":"contract CErc20Interface"}},"id":829,"nodeType":"InheritanceSpecifier","src":"430:15:2"}],"contractDependencies":[6186,6204,6271,6556,6559,6617,6837,13849,14371,15066],"contractKind":"contract","documentation":"@title Compound's CErc20 Contract\n@notice CTokens which wrap an EIP-20 underlying\n@dev This contract should not to be deployed on its own; instead, deploy `CErc20Delegator` (proxy contract) and `CErc20Delegate` (logic/implementation contract).\n@author Compound","fullyImplemented":true,"id":1143,"linearizedBaseContracts":[1143,6617,6559,6186,13849,14371,15066,6837,6556,6271,6204],"name":"CErc20","nodeType":"ContractDefinition","nodes":[{"body":{"id":881,"nodeType":"Block","src":"1171:474:2","statements":[{"assignments":[847],"declarations":[{"constant":false,"id":847,"name":"initialExchangeRateMantissa_","nodeType":"VariableDeclaration","scope":881,"src":"1236:36:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":846,"name":"uint256","nodeType":"ElementaryTypeName","src":"1236:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":849,"initialValue":{"argumentTypes":null,"hexValue":"302e32653138","id":848,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1275:6:2","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_200000000000000000_by_1","typeString":"int_const 200000000000000000"},"value":"0.2e18"},"nodeType":"VariableDeclarationStatement","src":"1236:45:2"},{"assignments":[851],"declarations":[{"constant":false,"id":851,"name":"decimals_","nodeType":"VariableDeclaration","scope":881,"src":"1291:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":850,"name":"uint8","nodeType":"ElementaryTypeName","src":"1291:5:2","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":null,"visibility":"internal"}],"id":857,"initialValue":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":853,"name":"underlying_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":831,"src":"1324:11:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":852,"name":"EIP20Interface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13484,"src":"1309:14:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_EIP20Interface_$13484_$","typeString":"type(contract EIP20Interface)"}},"id":854,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1309:27:2","typeDescriptions":{"typeIdentifier":"t_contract$_EIP20Interface_$13484","typeString":"contract EIP20Interface"}},"id":855,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":13417,"src":"1309:36:2","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":856,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1309:38:2","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"1291:56:2"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":861,"name":"comptroller_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":833,"src":"1374:12:2","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerInterface_$12980","typeString":"contract ComptrollerInterface"}},{"argumentTypes":null,"id":862,"name":"interestRateModel_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":835,"src":"1388:18:2","typeDescriptions":{"typeIdentifier":"t_contract$_InterestRateModel_$17398","typeString":"contract InterestRateModel"}},{"argumentTypes":null,"id":863,"name":"initialExchangeRateMantissa_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":847,"src":"1408:28:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":864,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":837,"src":"1438:5:2","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"argumentTypes":null,"id":865,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":839,"src":"1445:7:2","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"argumentTypes":null,"id":866,"name":"decimals_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":851,"src":"1454:9:2","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"argumentTypes":null,"id":867,"name":"reserveFactorMantissa_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":841,"src":"1465:22:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":868,"name":"adminFeeMantissa_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":843,"src":"1489:17:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ComptrollerInterface_$12980","typeString":"contract ComptrollerInterface"},{"typeIdentifier":"t_contract$_InterestRateModel_$17398","typeString":"contract InterestRateModel"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":858,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22619,"src":"1357:5:2","typeDescriptions":{"typeIdentifier":"t_super$_CErc20_$1143","typeString":"contract super CErc20"}},"id":860,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":2463,"src":"1357:16:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ComptrollerInterface_$12980_$_t_contract$_InterestRateModel_$17398_$_t_uint256_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint8_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (contract ComptrollerInterface,contract InterestRateModel,uint256,string memory,string memory,uint8,uint256,uint256)"}},"id":869,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1357:150:2","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":870,"nodeType":"ExpressionStatement","src":"1357:150:2"},{"expression":{"argumentTypes":null,"id":873,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":871,"name":"underlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6558,"src":"1564:10:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":872,"name":"underlying_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":831,"src":"1577:11:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1564:24:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":874,"nodeType":"ExpressionStatement","src":"1564:24:2"},{"expression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":876,"name":"underlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6558,"src":"1613:10:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":875,"name":"EIP20Interface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13484,"src":"1598:14:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_EIP20Interface_$13484_$","typeString":"type(contract EIP20Interface)"}},"id":877,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1598:26:2","typeDescriptions":{"typeIdentifier":"t_contract$_EIP20Interface_$13484","typeString":"contract EIP20Interface"}},"id":878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"totalSupply","nodeType":"MemberAccess","referencedDeclaration":13422,"src":"1598:38:2","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":879,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1598:40:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":880,"nodeType":"ExpressionStatement","src":"1598:40:2"}]},"documentation":"@notice Initialize the new money market\n@param underlying_ The address of the underlying asset\n@param comptroller_ The address of the Comptroller\n@param interestRateModel_ The address of the interest rate model\n@param name_ ERC-20 name of this token\n@param symbol_ ERC-20 symbol of this token","id":882,"implemented":true,"kind":"function","modifiers":[],"name":"initialize","nodeType":"FunctionDefinition","parameters":{"id":844,"nodeType":"ParameterList","parameters":[{"constant":false,"id":831,"name":"underlying_","nodeType":"VariableDeclaration","scope":882,"src":"823:19:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":830,"name":"address","nodeType":"ElementaryTypeName","src":"823:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":833,"name":"comptroller_","nodeType":"VariableDeclaration","scope":882,"src":"868:33:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerInterface_$12980","typeString":"contract ComptrollerInterface"},"typeName":{"contractScope":null,"id":832,"name":"ComptrollerInterface","nodeType":"UserDefinedTypeName","referencedDeclaration":12980,"src":"868:20:2","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerInterface_$12980","typeString":"contract ComptrollerInterface"}},"value":null,"visibility":"internal"},{"constant":false,"id":835,"name":"interestRateModel_","nodeType":"VariableDeclaration","scope":882,"src":"927:36:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_InterestRateModel_$17398","typeString":"contract InterestRateModel"},"typeName":{"contractScope":null,"id":834,"name":"InterestRateModel","nodeType":"UserDefinedTypeName","referencedDeclaration":17398,"src":"927:17:2","typeDescriptions":{"typeIdentifier":"t_contract$_InterestRateModel_$17398","typeString":"contract InterestRateModel"}},"value":null,"visibility":"internal"},{"constant":false,"id":837,"name":"name_","nodeType":"VariableDeclaration","scope":882,"src":"989:19:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":836,"name":"string","nodeType":"ElementaryTypeName","src":"989:6:2","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":null,"visibility":"internal"},{"constant":false,"id":839,"name":"symbol_","nodeType":"VariableDeclaration","scope":882,"src":"1034:21:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":838,"name":"string","nodeType":"ElementaryTypeName","src":"1034:6:2","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":null,"visibility":"internal"},{"constant":false,"id":841,"name":"reserveFactorMantissa_","nodeType":"VariableDeclaration","scope":882,"src":"1081:30:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":840,"name":"uint256","nodeType":"ElementaryTypeName","src":"1081:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":843,"name":"adminFeeMantissa_","nodeType":"VariableDeclaration","scope":882,"src":"1137:25:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":842,"name":"uint256","nodeType":"ElementaryTypeName","src":"1137:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"822:341:2"},"returnParameters":{"id":845,"nodeType":"ParameterList","parameters":[],"src":"1171:0:2"},"scope":1143,"src":"803:842:2","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":897,"nodeType":"Block","src":"2080:75:2","statements":[{"assignments":[890,null],"declarations":[{"constant":false,"id":890,"name":"err","nodeType":"VariableDeclaration","scope":897,"src":"2091:8:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":889,"name":"uint","nodeType":"ElementaryTypeName","src":"2091:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},null],"id":894,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":892,"name":"mintAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":884,"src":"2117:10:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":891,"name":"mintInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3491,"src":"2104:12:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (uint256) returns (uint256,uint256)"}},"id":893,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2104:24:2","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"2090:38:2"},{"expression":{"argumentTypes":null,"id":895,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":890,"src":"2145:3:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":888,"id":896,"nodeType":"Return","src":"2138:10:2"}]},"documentation":"@notice Sender supplies assets into the market and receives cTokens in exchange\n@dev Accrues interest whether or not the operation succeeds, unless reverted\n@param mintAmount The amount of the underlying asset to supply\n@return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)","id":898,"implemented":true,"kind":"function","modifiers":[],"name":"mint","nodeType":"FunctionDefinition","parameters":{"id":885,"nodeType":"ParameterList","parameters":[{"constant":false,"id":884,"name":"mintAmount","nodeType":"VariableDeclaration","scope":898,"src":"2039:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":883,"name":"uint","nodeType":"ElementaryTypeName","src":"2039:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2038:17:2"},"returnParameters":{"id":888,"nodeType":"ParameterList","parameters":[{"constant":false,"id":887,"name":"","nodeType":"VariableDeclaration","scope":898,"src":"2074:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":886,"name":"uint","nodeType":"ElementaryTypeName","src":"2074:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2073:6:2"},"scope":1143,"src":"2025:130:2","stateMutability":"nonpayable","superFunction":6568,"visibility":"external"},{"body":{"id":909,"nodeType":"Block","src":"2557:52:2","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":906,"name":"redeemTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":900,"src":"2589:12:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":905,"name":"redeemInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3737,"src":"2574:14:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":907,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2574:28:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":904,"id":908,"nodeType":"Return","src":"2567:35:2"}]},"documentation":"@notice Sender redeems cTokens in exchange for the underlying asset\n@dev Accrues interest whether or not the operation succeeds, unless reverted\n@param redeemTokens The number of cTokens to redeem into underlying\n@return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)","id":910,"implemented":true,"kind":"function","modifiers":[],"name":"redeem","nodeType":"FunctionDefinition","parameters":{"id":901,"nodeType":"ParameterList","parameters":[{"constant":false,"id":900,"name":"redeemTokens","nodeType":"VariableDeclaration","scope":910,"src":"2514:17:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":899,"name":"uint","nodeType":"ElementaryTypeName","src":"2514:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2513:19:2"},"returnParameters":{"id":904,"nodeType":"ParameterList","parameters":[{"constant":false,"id":903,"name":"","nodeType":"VariableDeclaration","scope":910,"src":"2551:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":902,"name":"uint","nodeType":"ElementaryTypeName","src":"2551:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2550:6:2"},"scope":1143,"src":"2498:111:2","stateMutability":"nonpayable","superFunction":6575,"visibility":"external"},{"body":{"id":921,"nodeType":"Block","src":"3026:62:2","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":918,"name":"redeemAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":912,"src":"3068:12:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":917,"name":"redeemUnderlyingInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3776,"src":"3043:24:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":919,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3043:38:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":916,"id":920,"nodeType":"Return","src":"3036:45:2"}]},"documentation":"@notice Sender redeems cTokens in exchange for a specified amount of underlying asset\n@dev Accrues interest whether or not the operation succeeds, unless reverted\n@param redeemAmount The amount of underlying to redeem\n@return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)","id":922,"implemented":true,"kind":"function","modifiers":[],"name":"redeemUnderlying","nodeType":"FunctionDefinition","parameters":{"id":913,"nodeType":"ParameterList","parameters":[{"constant":false,"id":912,"name":"redeemAmount","nodeType":"VariableDeclaration","scope":922,"src":"2983:17:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":911,"name":"uint","nodeType":"ElementaryTypeName","src":"2983:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2982:19:2"},"returnParameters":{"id":916,"nodeType":"ParameterList","parameters":[{"constant":false,"id":915,"name":"","nodeType":"VariableDeclaration","scope":922,"src":"3020:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":914,"name":"uint","nodeType":"ElementaryTypeName","src":"3020:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"3019:6:2"},"scope":1143,"src":"2957:131:2","stateMutability":"nonpayable","superFunction":6582,"visibility":"external"},{"body":{"id":933,"nodeType":"Block","src":"3408:52:2","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":930,"name":"borrowAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":924,"src":"3440:12:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":929,"name":"borrowInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4136,"src":"3425:14:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":931,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3425:28:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":928,"id":932,"nodeType":"Return","src":"3418:35:2"}]},"documentation":"@notice Sender borrows assets from the protocol to their own address\n@param borrowAmount The amount of the underlying asset to borrow\n@return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)","id":934,"implemented":true,"kind":"function","modifiers":[],"name":"borrow","nodeType":"FunctionDefinition","parameters":{"id":925,"nodeType":"ParameterList","parameters":[{"constant":false,"id":924,"name":"borrowAmount","nodeType":"VariableDeclaration","scope":934,"src":"3365:17:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":923,"name":"uint","nodeType":"ElementaryTypeName","src":"3365:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"3364:19:2"},"returnParameters":{"id":928,"nodeType":"ParameterList","parameters":[{"constant":false,"id":927,"name":"","nodeType":"VariableDeclaration","scope":934,"src":"3402:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":926,"name":"uint","nodeType":"ElementaryTypeName","src":"3402:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"3401:6:2"},"scope":1143,"src":"3349:111:2","stateMutability":"nonpayable","superFunction":6589,"visibility":"external"},{"body":{"id":949,"nodeType":"Block","src":"3724:83:2","statements":[{"assignments":[942,null],"declarations":[{"constant":false,"id":942,"name":"err","nodeType":"VariableDeclaration","scope":949,"src":"3735:8:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":941,"name":"uint","nodeType":"ElementaryTypeName","src":"3735:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},null],"id":946,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":944,"name":"repayAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":936,"src":"3768:11:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":943,"name":"repayBorrowInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4409,"src":"3748:19:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (uint256) returns (uint256,uint256)"}},"id":945,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3748:32:2","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"3734:46:2"},{"expression":{"argumentTypes":null,"id":947,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":942,"src":"3797:3:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":940,"id":948,"nodeType":"Return","src":"3790:10:2"}]},"documentation":"@notice Sender repays their own borrow\n@param repayAmount The amount to repay\n@return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)","id":950,"implemented":true,"kind":"function","modifiers":[],"name":"repayBorrow","nodeType":"FunctionDefinition","parameters":{"id":937,"nodeType":"ParameterList","parameters":[{"constant":false,"id":936,"name":"repayAmount","nodeType":"VariableDeclaration","scope":950,"src":"3682:16:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":935,"name":"uint","nodeType":"ElementaryTypeName","src":"3682:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"3681:18:2"},"returnParameters":{"id":940,"nodeType":"ParameterList","parameters":[{"constant":false,"id":939,"name":"","nodeType":"VariableDeclaration","scope":950,"src":"3718:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":938,"name":"uint","nodeType":"ElementaryTypeName","src":"3718:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"3717:6:2"},"scope":1143,"src":"3661:146:2","stateMutability":"nonpayable","superFunction":6596,"visibility":"external"},{"body":{"id":968,"nodeType":"Block","src":"4174:99:2","statements":[{"assignments":[960,null],"declarations":[{"constant":false,"id":960,"name":"err","nodeType":"VariableDeclaration","scope":968,"src":"4185:8:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":959,"name":"uint","nodeType":"ElementaryTypeName","src":"4185:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},null],"id":965,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":962,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":952,"src":"4224:8:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":963,"name":"repayAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":954,"src":"4234:11:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":961,"name":"repayBorrowBehalfInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4454,"src":"4198:25:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (address,uint256) returns (uint256,uint256)"}},"id":964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4198:48:2","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"4184:62:2"},{"expression":{"argumentTypes":null,"id":966,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":960,"src":"4263:3:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":958,"id":967,"nodeType":"Return","src":"4256:10:2"}]},"documentation":"@notice Sender repays a borrow belonging to borrower\n@param borrower the account with the debt being payed off\n@param repayAmount The amount to repay\n@return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)","id":969,"implemented":true,"kind":"function","modifiers":[],"name":"repayBorrowBehalf","nodeType":"FunctionDefinition","parameters":{"id":955,"nodeType":"ParameterList","parameters":[{"constant":false,"id":952,"name":"borrower","nodeType":"VariableDeclaration","scope":969,"src":"4114:16:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":951,"name":"address","nodeType":"ElementaryTypeName","src":"4114:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":954,"name":"repayAmount","nodeType":"VariableDeclaration","scope":969,"src":"4132:16:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":953,"name":"uint","nodeType":"ElementaryTypeName","src":"4132:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"4113:36:2"},"returnParameters":{"id":958,"nodeType":"ParameterList","parameters":[{"constant":false,"id":957,"name":"","nodeType":"VariableDeclaration","scope":969,"src":"4168:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":956,"name":"uint","nodeType":"ElementaryTypeName","src":"4168:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"4167:6:2"},"scope":1143,"src":"4087:186:2","stateMutability":"nonpayable","superFunction":6605,"visibility":"external"},{"body":{"id":990,"nodeType":"Block","src":"4864:115:2","statements":[{"assignments":[981,null],"declarations":[{"constant":false,"id":981,"name":"err","nodeType":"VariableDeclaration","scope":990,"src":"4875:8:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":980,"name":"uint","nodeType":"ElementaryTypeName","src":"4875:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},null],"id":987,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":983,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":971,"src":"4912:8:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":984,"name":"repayAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":973,"src":"4922:11:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":985,"name":"cTokenCollateral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":975,"src":"4935:16:2","typeDescriptions":{"typeIdentifier":"t_contract$_CTokenInterface_$6556","typeString":"contract CTokenInterface"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_contract$_CTokenInterface_$6556","typeString":"contract CTokenInterface"}],"id":982,"name":"liquidateBorrowInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4758,"src":"4888:23:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_contract$_CTokenInterface_$6556_$returns$_t_uint256_$_t_uint256_$","typeString":"function (address,uint256,contract CTokenInterface) returns (uint256,uint256)"}},"id":986,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4888:64:2","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"4874:78:2"},{"expression":{"argumentTypes":null,"id":988,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":981,"src":"4969:3:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":979,"id":989,"nodeType":"Return","src":"4962:10:2"}]},"documentation":"@notice The sender liquidates the borrowers collateral.\n The collateral seized is transferred to the liquidator.\n@param borrower The borrower of this cToken to be liquidated\n@param repayAmount The amount of the underlying borrowed asset to repay\n@param cTokenCollateral The market in which to seize collateral from the borrower\n@return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)","id":991,"implemented":true,"kind":"function","modifiers":[],"name":"liquidateBorrow","nodeType":"FunctionDefinition","parameters":{"id":976,"nodeType":"ParameterList","parameters":[{"constant":false,"id":971,"name":"borrower","nodeType":"VariableDeclaration","scope":991,"src":"4770:16:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":970,"name":"address","nodeType":"ElementaryTypeName","src":"4770:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":973,"name":"repayAmount","nodeType":"VariableDeclaration","scope":991,"src":"4788:16:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":972,"name":"uint","nodeType":"ElementaryTypeName","src":"4788:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":975,"name":"cTokenCollateral","nodeType":"VariableDeclaration","scope":991,"src":"4806:32:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_CTokenInterface_$6556","typeString":"contract CTokenInterface"},"typeName":{"contractScope":null,"id":974,"name":"CTokenInterface","nodeType":"UserDefinedTypeName","referencedDeclaration":6556,"src":"4806:15:2","typeDescriptions":{"typeIdentifier":"t_contract$_CTokenInterface_$6556","typeString":"contract CTokenInterface"}},"value":null,"visibility":"internal"}],"src":"4769:70:2"},"returnParameters":{"id":979,"nodeType":"ParameterList","parameters":[{"constant":false,"id":978,"name":"","nodeType":"VariableDeclaration","scope":991,"src":"4858:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":977,"name":"uint","nodeType":"ElementaryTypeName","src":"4858:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"4857:6:2"},"scope":1143,"src":"4745:234:2","stateMutability":"nonpayable","superFunction":6616,"visibility":"external"},{"body":{"id":1009,"nodeType":"Block","src":"5291:113:2","statements":[{"assignments":[997],"declarations":[{"constant":false,"id":997,"name":"token","nodeType":"VariableDeclaration","scope":1009,"src":"5301:20:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_EIP20Interface_$13484","typeString":"contract EIP20Interface"},"typeName":{"contractScope":null,"id":996,"name":"EIP20Interface","nodeType":"UserDefinedTypeName","referencedDeclaration":13484,"src":"5301:14:2","typeDescriptions":{"typeIdentifier":"t_contract$_EIP20Interface_$13484","typeString":"contract EIP20Interface"}},"value":null,"visibility":"internal"}],"id":1001,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":999,"name":"underlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6558,"src":"5339:10:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":998,"name":"EIP20Interface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13484,"src":"5324:14:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_EIP20Interface_$13484_$","typeString":"type(contract EIP20Interface)"}},"id":1000,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5324:26:2","typeDescriptions":{"typeIdentifier":"t_contract$_EIP20Interface_$13484","typeString":"contract EIP20Interface"}},"nodeType":"VariableDeclarationStatement","src":"5301:49:2"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1005,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22618,"src":"5391:4:2","typeDescriptions":{"typeIdentifier":"t_contract$_CErc20_$1143","typeString":"contract CErc20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CErc20_$1143","typeString":"contract CErc20"}],"id":1004,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5383:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":1006,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5383:13:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":1002,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":997,"src":"5367:5:2","typeDescriptions":{"typeIdentifier":"t_contract$_EIP20Interface_$13484","typeString":"contract EIP20Interface"}},"id":1003,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":13429,"src":"5367:15:2","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":1007,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5367:30:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":995,"id":1008,"nodeType":"Return","src":"5360:37:2"}]},"documentation":"@notice Gets balance of this contract in terms of the underlying\n@dev This excludes the value of the current message, if any\n@return The quantity of underlying tokens owned by this contract","id":1010,"implemented":true,"kind":"function","modifiers":[],"name":"getCashPrior","nodeType":"FunctionDefinition","parameters":{"id":992,"nodeType":"ParameterList","parameters":[],"src":"5259:2:2"},"returnParameters":{"id":995,"nodeType":"ParameterList","parameters":[{"constant":false,"id":994,"name":"","nodeType":"VariableDeclaration","scope":1010,"src":"5285:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":993,"name":"uint","nodeType":"ElementaryTypeName","src":"5285:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"5284:6:2"},"scope":1143,"src":"5238:166:2","stateMutability":"view","superFunction":6075,"visibility":"internal"},{"body":{"id":1069,"nodeType":"Block","src":"6083:581:2","statements":[{"assignments":[1020],"declarations":[{"constant":false,"id":1020,"name":"balanceBefore","nodeType":"VariableDeclaration","scope":1069,"src":"6093:18:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1019,"name":"uint","nodeType":"ElementaryTypeName","src":"6093:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":1029,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1026,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22618,"src":"6159:4:2","typeDescriptions":{"typeIdentifier":"t_contract$_CErc20_$1143","typeString":"contract CErc20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CErc20_$1143","typeString":"contract CErc20"}],"id":1025,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6151:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":1027,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6151:13:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1022,"name":"underlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6558,"src":"6129:10:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1021,"name":"EIP20Interface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13484,"src":"6114:14:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_EIP20Interface_$13484_$","typeString":"type(contract EIP20Interface)"}},"id":1023,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6114:26:2","typeDescriptions":{"typeIdentifier":"t_contract$_EIP20Interface_$13484","typeString":"contract EIP20Interface"}},"id":1024,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":13429,"src":"6114:36:2","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":1028,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6114:51:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6093:72:2"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1034,"name":"underlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6558,"src":"6244:10:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1033,"name":"EIP20NonStandardInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13549,"src":"6218:25:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_EIP20NonStandardInterface_$13549_$","typeString":"type(contract EIP20NonStandardInterface)"}},"id":1035,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6218:37:2","typeDescriptions":{"typeIdentifier":"t_contract$_EIP20NonStandardInterface_$13549","typeString":"contract EIP20NonStandardInterface"}},"id":1036,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":13514,"src":"6218:50:2","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256) external"}},"id":1037,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","referencedDeclaration":null,"src":"6218:59:2","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"argumentTypes":null,"id":1038,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1012,"src":"6279:4:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1040,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22618,"src":"6293:4:2","typeDescriptions":{"typeIdentifier":"t_contract$_CErc20_$1143","typeString":"contract CErc20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CErc20_$1143","typeString":"contract CErc20"}],"id":1039,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6285:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":1041,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6285:13:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":1042,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1014,"src":"6300:6:2","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":{"argumentTypes":null,"id":1031,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22537,"src":"6195:3:2","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1032,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","referencedDeclaration":null,"src":"6195:22:2","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":1043,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6195:112:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"argumentTypes":null,"hexValue":"544f4b454e5f5452414e534645525f494e5f4641494c4544","id":1044,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6309:26:2","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_0da3873a20fdc47c8625307ac91c3576e4c3c6ba3dbaf813e465d9b0cabb0ee0","typeString":"literal_string \"TOKEN_TRANSFER_IN_FAILED\""},"value":"TOKEN_TRANSFER_IN_FAILED"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_0da3873a20fdc47c8625307ac91c3576e4c3c6ba3dbaf813e465d9b0cabb0ee0","typeString":"literal_string \"TOKEN_TRANSFER_IN_FAILED\""}],"id":1030,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1123,"src":"6175:19:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (bytes memory,string memory)"}},"id":1045,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6175:161:2","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1046,"nodeType":"ExpressionStatement","src":"6175:161:2"},{"assignments":[1048],"declarations":[{"constant":false,"id":1048,"name":"balanceAfter","nodeType":"VariableDeclaration","scope":1069,"src":"6411:17:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1047,"name":"uint","nodeType":"ElementaryTypeName","src":"6411:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":1057,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1054,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22618,"src":"6476:4:2","typeDescriptions":{"typeIdentifier":"t_contract$_CErc20_$1143","typeString":"contract CErc20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CErc20_$1143","typeString":"contract CErc20"}],"id":1053,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6468:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":1055,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6468:13:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1050,"name":"underlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6558,"src":"6446:10:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1049,"name":"EIP20Interface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13484,"src":"6431:14:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_EIP20Interface_$13484_$","typeString":"type(contract EIP20Interface)"}},"id":1051,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6431:26:2","typeDescriptions":{"typeIdentifier":"t_contract$_EIP20Interface_$13484","typeString":"contract EIP20Interface"}},"id":1052,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":13429,"src":"6431:36:2","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":1056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6431:51:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6411:71:2"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":1059,"name":"balanceAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1048,"src":"6500:12:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"argumentTypes":null,"id":1060,"name":"balanceBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1020,"src":"6516:13:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6500:29:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"544f4b454e5f5452414e534645525f494e5f4f564552464c4f57","id":1062,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6531:28:2","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_208ce11108ba7449de4aa5a86628f67f58f67306e5252e1ebd1353b20e4e67cd","typeString":"literal_string \"TOKEN_TRANSFER_IN_OVERFLOW\""},"value":"TOKEN_TRANSFER_IN_OVERFLOW"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_208ce11108ba7449de4aa5a86628f67f58f67306e5252e1ebd1353b20e4e67cd","typeString":"literal_string \"TOKEN_TRANSFER_IN_OVERFLOW\""}],"id":1058,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"6492:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1063,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6492:68:2","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1064,"nodeType":"ExpressionStatement","src":"6492:68:2"},{"expression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1067,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":1065,"name":"balanceAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1048,"src":"6577:12:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"id":1066,"name":"balanceBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1020,"src":"6592:13:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6577:28:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1018,"id":1068,"nodeType":"Return","src":"6570:35:2"}]},"documentation":"@dev Similar to EIP20 transfer, except it handles a False result from `transferFrom` and reverts in that case.\n This will revert due to insufficient balance or insufficient allowance.\n This function returns the actual amount received,\n which may be less than `amount` if there is a fee attached to the transfer.\n * Note: This wrapper safely handles non-standard ERC-20 tokens that do not return a value.\n See here: https://medium.com/coinmonks/missing-return-value-bug-at-least-130-tokens-affected-d67bf08521ca","id":1070,"implemented":true,"kind":"function","modifiers":[],"name":"doTransferIn","nodeType":"FunctionDefinition","parameters":{"id":1015,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1012,"name":"from","nodeType":"VariableDeclaration","scope":1070,"src":"6032:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1011,"name":"address","nodeType":"ElementaryTypeName","src":"6032:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":1014,"name":"amount","nodeType":"VariableDeclaration","scope":1070,"src":"6046:11:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1013,"name":"uint","nodeType":"ElementaryTypeName","src":"6046:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"6031:27:2"},"returnParameters":{"id":1018,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1017,"name":"","nodeType":"VariableDeclaration","scope":1070,"src":"6077:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1016,"name":"uint","nodeType":"ElementaryTypeName","src":"6077:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"6076:6:2"},"scope":1143,"src":"6010:654:2","stateMutability":"nonpayable","superFunction":6084,"visibility":"internal"},{"body":{"id":1091,"nodeType":"Block","src":"7422:158:2","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1081,"name":"underlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6558,"src":"7501:10:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1080,"name":"EIP20NonStandardInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13549,"src":"7475:25:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_EIP20NonStandardInterface_$13549_$","typeString":"type(contract EIP20NonStandardInterface)"}},"id":1082,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7475:37:2","typeDescriptions":{"typeIdentifier":"t_contract$_EIP20NonStandardInterface_$13549","typeString":"contract EIP20NonStandardInterface"}},"id":1083,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":13505,"src":"7475:46:2","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) external"}},"id":1084,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","referencedDeclaration":null,"src":"7475:55:2","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"argumentTypes":null,"id":1085,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1072,"src":"7532:2:2","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"id":1086,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1074,"src":"7536:6:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":1078,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22537,"src":"7452:3:2","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1079,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","referencedDeclaration":null,"src":"7452:22:2","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":1087,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7452:91:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"argumentTypes":null,"hexValue":"544f4b454e5f5452414e534645525f4f55545f4641494c4544","id":1088,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7545:27:2","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_240ffd6c262c542faf953100ec47f7b3f7ed65e23c06d0ff5d14cbe032268909","typeString":"literal_string \"TOKEN_TRANSFER_OUT_FAILED\""},"value":"TOKEN_TRANSFER_OUT_FAILED"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_240ffd6c262c542faf953100ec47f7b3f7ed65e23c06d0ff5d14cbe032268909","typeString":"literal_string \"TOKEN_TRANSFER_OUT_FAILED\""}],"id":1077,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1123,"src":"7432:19:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (bytes memory,string memory)"}},"id":1089,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7432:141:2","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1090,"nodeType":"ExpressionStatement","src":"7432:141:2"}]},"documentation":"@dev Similar to EIP20 transfer, except it handles a False success from `transfer` and returns an explanatory\n error code rather than reverting. If caller has not called checked protocol's balance, this may revert due to\n insufficient cash held in this contract. If caller has checked protocol's balance prior to this call, and verified\n it is >= amount, this should not revert in normal conditions.\n * Note: This wrapper safely handles non-standard ERC-20 tokens that do not return a value.\n See here: https://medium.com/coinmonks/missing-return-value-bug-at-least-130-tokens-affected-d67bf08521ca","id":1092,"implemented":true,"kind":"function","modifiers":[],"name":"doTransferOut","nodeType":"FunctionDefinition","parameters":{"id":1075,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1072,"name":"to","nodeType":"VariableDeclaration","scope":1092,"src":"7380:18:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":1071,"name":"address","nodeType":"ElementaryTypeName","src":"7380:15:2","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"value":null,"visibility":"internal"},{"constant":false,"id":1074,"name":"amount","nodeType":"VariableDeclaration","scope":1092,"src":"7400:11:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1073,"name":"uint","nodeType":"ElementaryTypeName","src":"7400:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"7379:33:2"},"returnParameters":{"id":1076,"nodeType":"ParameterList","parameters":[],"src":"7422:0:2"},"scope":1143,"src":"7357:223:2","stateMutability":"nonpayable","superFunction":6091,"visibility":"internal"},{"body":{"id":1122,"nodeType":"Block","src":"8063:178:2","statements":[{"assignments":[1100],"declarations":[{"constant":false,"id":1100,"name":"returndata","nodeType":"VariableDeclaration","scope":1122,"src":"8073:23:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1099,"name":"bytes","nodeType":"ElementaryTypeName","src":"8073:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"}],"id":1106,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1102,"name":"underlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6558,"src":"8113:10:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":1103,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1094,"src":"8125:4:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"argumentTypes":null,"id":1104,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1096,"src":"8131:12:2","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_string_memory_ptr","typeString":"string memory"}],"id":1101,"name":"_functionCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6185,"src":"8099:13:2","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":1105,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8099:45:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"8073:71:2"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1110,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":1107,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1100,"src":"8158:10:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1108,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"8158:17:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"30","id":1109,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8178:1:2","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8158:21:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":1121,"nodeType":"IfStatement","src":"8154:80:2","trueBody":{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1114,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1100,"src":"8200:10:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"argumentTypes":null,"components":[{"argumentTypes":null,"id":1115,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8213:4:2","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"},"typeName":"bool"}],"id":1116,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"8212:6:2","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":{"argumentTypes":null,"id":1112,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22537,"src":"8189:3:2","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1113,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","referencedDeclaration":null,"src":"8189:10:2","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":1117,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8189:30:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"id":1118,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1096,"src":"8221:12:2","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1111,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"8181:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1119,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8181:53:2","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1120,"nodeType":"ExpressionStatement","src":"8181:53:2"}}]},"documentation":"@dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\non the return value: the return value is optional (but if data is returned, it must not be false).\n@param data The call data (encoded using abi.encode or one of its variants).\n@param errorMessage The revert string to return on failure.","id":1123,"implemented":true,"kind":"function","modifiers":[],"name":"_callOptionalReturn","nodeType":"FunctionDefinition","parameters":{"id":1097,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1094,"name":"data","nodeType":"VariableDeclaration","scope":1123,"src":"8007:17:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1093,"name":"bytes","nodeType":"ElementaryTypeName","src":"8007:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"},{"constant":false,"id":1096,"name":"errorMessage","nodeType":"VariableDeclaration","scope":1123,"src":"8026:26:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1095,"name":"string","nodeType":"ElementaryTypeName","src":"8026:6:2","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":null,"visibility":"internal"}],"src":"8006:47:2"},"returnParameters":{"id":1098,"nodeType":"ParameterList","parameters":[],"src":"8063:0:2"},"scope":1143,"src":"7978:263:2","stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},{"body":{"id":1141,"nodeType":"Block","src":"8538:149:2","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":1129,"name":"hasAdminRights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2322,"src":"8556:14:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":1130,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8556:16:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"6f6e6c79207468652061646d696e206d6179207365742074686520636f6d702d6c696b652064656c6567617465","id":1131,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8574:47:2","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_49c9d7834318fbd23fb0b05062dcbe05993694e29e663da07483dd74b33e77ca","typeString":"literal_string \"only the admin may set the comp-like delegate\""},"value":"only the admin may set the comp-like delegate"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_49c9d7834318fbd23fb0b05062dcbe05993694e29e663da07483dd74b33e77ca","typeString":"literal_string \"only the admin may set the comp-like delegate\""}],"id":1128,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"8548:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1132,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8548:74:2","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1133,"nodeType":"ExpressionStatement","src":"8548:74:2"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1138,"name":"compLikeDelegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1125,"src":"8662:17:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1135,"name":"underlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6558,"src":"8641:10:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1134,"name":"CompLike","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":825,"src":"8632:8:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CompLike_$825_$","typeString":"type(contract CompLike)"}},"id":1136,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8632:20:2","typeDescriptions":{"typeIdentifier":"t_contract$_CompLike_$825","typeString":"contract CompLike"}},"id":1137,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"delegate","nodeType":"MemberAccess","referencedDeclaration":824,"src":"8632:29:2","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":1139,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8632:48:2","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1140,"nodeType":"ExpressionStatement","src":"8632:48:2"}]},"documentation":"@notice Admin call to delegate the votes of the COMP-like underlying\n@param compLikeDelegatee The address to delegate votes to\n@dev CTokens whose underlying are not CompLike should revert here","id":1142,"implemented":true,"kind":"function","modifiers":[],"name":"_delegateCompLikeTo","nodeType":"FunctionDefinition","parameters":{"id":1126,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1125,"name":"compLikeDelegatee","nodeType":"VariableDeclaration","scope":1142,"src":"8502:25:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1124,"name":"address","nodeType":"ElementaryTypeName","src":"8502:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"8501:27:2"},"returnParameters":{"id":1127,"nodeType":"ParameterList","parameters":[],"src":"8538:0:2"},"scope":1143,"src":"8473:214:2","stateMutability":"nonpayable","superFunction":null,"visibility":"external"}],"scope":1144,"src":"403:8286:2"}],"src":"0:8690:2"},"id":2},"contracts/CErc20Delegate.sol":{"ast":{"absolutePath":"contracts/CErc20Delegate.sol","exportedSymbols":{"CErc20Delegate":[1325]},"id":1326,"nodeType":"SourceUnit","nodes":[{"id":1145,"literals":["solidity","0.5",".17"],"nodeType":"PragmaDirective","src":"0:23:3"},{"absolutePath":"contracts/CErc20.sol","file":"./CErc20.sol","id":1146,"nodeType":"ImportDirective","scope":1326,"sourceUnit":1144,"src":"25:22:3","symbolAliases":[],"unitAlias":""},{"baseContracts":[{"arguments":null,"baseName":{"contractScope":null,"id":1147,"name":"CDelegateInterface","nodeType":"UserDefinedTypeName","referencedDeclaration":6652,"src":"221:18:3","typeDescriptions":{"typeIdentifier":"t_contract$_CDelegateInterface_$6652","typeString":"contract CDelegateInterface"}},"id":1148,"nodeType":"InheritanceSpecifier","src":"221:18:3"},{"arguments":null,"baseName":{"contractScope":null,"id":1149,"name":"CErc20","nodeType":"UserDefinedTypeName","referencedDeclaration":1143,"src":"241:6:3","typeDescriptions":{"typeIdentifier":"t_contract$_CErc20_$1143","typeString":"contract CErc20"}},"id":1150,"nodeType":"InheritanceSpecifier","src":"241:6:3"}],"contractDependencies":[1143,6186,6204,6271,6556,6559,6617,6626,6652,6837,13849,14371,15066],"contractKind":"contract","documentation":"@title Compound's CErc20Delegate Contract\n@notice CTokens which wrap an EIP-20 underlying and are delegated to\n@author Compound","fullyImplemented":true,"id":1325,"linearizedBaseContracts":[1325,1143,6617,6559,6186,13849,14371,15066,6837,6556,6271,6204,6652,6626],"name":"CErc20Delegate","nodeType":"ContractDefinition","nodes":[{"body":{"id":1153,"nodeType":"Block","src":"334:2:3","statements":[]},"documentation":"@notice Construct an empty delegate","id":1154,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":1151,"nodeType":"ParameterList","parameters":[],"src":"324:2:3"},"returnParameters":{"id":1152,"nodeType":"ParameterList","parameters":[],"src":"334:0:3"},"scope":1325,"src":"313:23:3","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":1197,"nodeType":"Block","src":"563:428:3","statements":[{"expression":{"argumentTypes":null,"id":1159,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1156,"src":"608:4:3","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":1160,"nodeType":"ExpressionStatement","src":"608:4:3"},{"condition":{"argumentTypes":null,"hexValue":"66616c7365","id":1161,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"692:5:3","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"falseBody":null,"id":1169,"nodeType":"IfStatement","src":"688:63:3","trueBody":{"id":1168,"nodeType":"Block","src":"699:52:3","statements":[{"expression":{"argumentTypes":null,"id":1166,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":1162,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6625,"src":"713:14:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":1164,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"738:1:3","subdenomination":null,"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":1163,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"730:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":1165,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"730:10:3","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"713:27:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1167,"nodeType":"ExpressionStatement","src":"713:27:3"}]}},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1176,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":1171,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"769:3:3","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1172,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"769:10:3","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1174,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22620,"src":"791:4:3","typeDescriptions":{"typeIdentifier":"t_contract$_CErc20Delegate_$1325","typeString":"contract CErc20Delegate"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CErc20Delegate_$1325","typeString":"contract CErc20Delegate"}],"id":1173,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"783:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":1175,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"783:13:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"769:27:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":1177,"name":"hasAdminRights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2322,"src":"800:14:3","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":1178,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"800:16:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"769:47:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"2173656c66","id":1180,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"818:7:3","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_99fcef12226bddfa001a37897c86b845052c9f40c17a4893abb01c71a7570fd3","typeString":"literal_string \"!self\""},"value":"!self"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_99fcef12226bddfa001a37897c86b845052c9f40c17a4893abb01c71a7570fd3","typeString":"literal_string \"!self\""}],"id":1170,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"761:7:3","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1181,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"761:65:3","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1182,"nodeType":"ExpressionStatement","src":"761:65:3"},{"expression":{"argumentTypes":null,"id":1187,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":1183,"name":"__admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6199,"src":"892:7:3","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":1185,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"910:1:3","subdenomination":null,"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":1184,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"902:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":1186,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"902:10:3","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"892:20:3","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":1188,"nodeType":"ExpressionStatement","src":"892:20:3"},{"expression":{"argumentTypes":null,"id":1191,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":1189,"name":"__adminHasRights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6203,"src":"922:16:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"hexValue":"66616c7365","id":1190,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"941:5:3","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"922:24:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1192,"nodeType":"ExpressionStatement","src":"922:24:3"},{"expression":{"argumentTypes":null,"id":1195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":1193,"name":"__fuseAdminHasRights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6201,"src":"956:20:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"hexValue":"66616c7365","id":1194,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"979:5:3","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"956:28:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1196,"nodeType":"ExpressionStatement","src":"956:28:3"}]},"documentation":"@notice Called by the delegator on a delegate to initialize it for duty\n@param data The encoded bytes data for any initialization","id":1198,"implemented":true,"kind":"function","modifiers":[],"name":"_becomeImplementation","nodeType":"FunctionDefinition","parameters":{"id":1157,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1156,"name":"data","nodeType":"VariableDeclaration","scope":1198,"src":"533:19:3","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1155,"name":"bytes","nodeType":"ElementaryTypeName","src":"533:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"}],"src":"532:21:3"},"returnParameters":{"id":1158,"nodeType":"ParameterList","parameters":[],"src":"563:0:3"},"scope":1325,"src":"502:489:3","stateMutability":"nonpayable","superFunction":6648,"visibility":"external"},{"body":{"id":1210,"nodeType":"Block","src":"1138:144:3","statements":[{"condition":{"argumentTypes":null,"hexValue":"66616c7365","id":1201,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1217:5:3","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"falseBody":null,"id":1209,"nodeType":"IfStatement","src":"1213:63:3","trueBody":{"id":1208,"nodeType":"Block","src":"1224:52:3","statements":[{"expression":{"argumentTypes":null,"id":1206,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":1202,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6625,"src":"1238:14:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":1204,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1263:1:3","subdenomination":null,"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":1203,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1255:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":1205,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1255:10:3","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"1238:27:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1207,"nodeType":"ExpressionStatement","src":"1238:27:3"}]}}]},"documentation":"@notice Called by the delegator on a delegate to forfeit its responsibility","id":1211,"implemented":true,"kind":"function","modifiers":[],"name":"_resignImplementation","nodeType":"FunctionDefinition","parameters":{"id":1199,"nodeType":"ParameterList","parameters":[],"src":"1126:2:3"},"returnParameters":{"id":1200,"nodeType":"ParameterList","parameters":[],"src":"1138:0:3"},"scope":1325,"src":"1096:186:3","stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},{"body":{"id":1260,"nodeType":"Block","src":"1797:738:3","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1223,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6625,"src":"1876:14:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":1224,"name":"implementation_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1213,"src":"1892:15:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":1225,"name":"allowResign","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1215,"src":"1909:11:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"argumentTypes":null,"id":1221,"name":"fuseAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6197,"src":"1842:9:3","typeDescriptions":{"typeIdentifier":"t_contract$_IFuseFeeDistributor_$17368","typeString":"contract IFuseFeeDistributor"}},"id":1222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"cErc20DelegateWhitelist","nodeType":"MemberAccess","referencedDeclaration":17310,"src":"1842:33:3","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$_t_bool_$returns$_t_bool_$","typeString":"function (address,address,bool) view external returns (bool)"}},"id":1226,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1842:79:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"21696d706c","id":1227,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1923:7:3","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_31cc2540e800250cee849529368ea0c124ecc26ea83d3827437bdae7b5b2bbe5","typeString":"literal_string \"!impl\""},"value":"!impl"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_31cc2540e800250cee849529368ea0c124ecc26ea83d3827437bdae7b5b2bbe5","typeString":"literal_string \"!impl\""}],"id":1220,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"1834:7:3","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1228,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1834:97:3","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1229,"nodeType":"ExpressionStatement","src":"1834:97:3"},{"condition":{"argumentTypes":null,"id":1230,"name":"allowResign","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1215,"src":"2018:11:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":1234,"nodeType":"IfStatement","src":"2014:40:3","trueBody":{"expression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":1231,"name":"_resignImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1211,"src":"2031:21:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1232,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2031:23:3","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1233,"nodeType":"ExpressionStatement","src":"2031:23:3"}},{"assignments":[1236],"declarations":[{"constant":false,"id":1236,"name":"oldImplementation","nodeType":"VariableDeclaration","scope":1260,"src":"2099:25:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1235,"name":"address","nodeType":"ElementaryTypeName","src":"2099:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":1238,"initialValue":{"argumentTypes":null,"id":1237,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6625,"src":"2127:14:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2099:42:3"},{"expression":{"argumentTypes":null,"id":1241,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":1239,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6625,"src":"2188:14:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":1240,"name":"implementation_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1213,"src":"2205:15:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2188:32:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1242,"nodeType":"ExpressionStatement","src":"2188:32:3"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1245,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22620,"src":"2338:4:3","typeDescriptions":{"typeIdentifier":"t_contract$_CErc20Delegate_$1325","typeString":"contract CErc20Delegate"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CErc20Delegate_$1325","typeString":"contract CErc20Delegate"}],"id":1244,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2330:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":1246,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2330:13:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"5f6265636f6d65496d706c656d656e746174696f6e28627974657329","id":1249,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2369:30:3","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_56e677285a1553abe1ddb56f43a4f037fd5ff42f7db26a312647701fa38bb76a","typeString":"literal_string \"_becomeImplementation(bytes)\""},"value":"_becomeImplementation(bytes)"},{"argumentTypes":null,"id":1250,"name":"becomeImplementationData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1217,"src":"2401:24:3","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_56e677285a1553abe1ddb56f43a4f037fd5ff42f7db26a312647701fa38bb76a","typeString":"literal_string \"_becomeImplementation(bytes)\""},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":null,"id":1247,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22537,"src":"2345:3:3","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1248,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSignature","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2345:23:3","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (string memory) pure returns (bytes memory)"}},"id":1251,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2345:81:3","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"argumentTypes":null,"hexValue":"216265636f6d65","id":1252,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2428:9:3","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_21ba693a16b03036ab7b5d92d2019ddd94cd375589ed02a1dfdbc0fbd8b8f01c","typeString":"literal_string \"!become\""},"value":"!become"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_21ba693a16b03036ab7b5d92d2019ddd94cd375589ed02a1dfdbc0fbd8b8f01c","typeString":"literal_string \"!become\""}],"id":1243,"name":"_functionCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6185,"src":"2316:13:3","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":1253,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2316:122:3","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1254,"nodeType":"ExpressionStatement","src":"2316:122:3"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1256,"name":"oldImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1236,"src":"2494:17:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":1257,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6625,"src":"2513:14:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1255,"name":"NewImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6634,"src":"2476:17:3","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":1258,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2476:52:3","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1259,"nodeType":"EmitStatement","src":"2471:57:3"}]},"documentation":"@dev Internal function to update the implementation of the delegator\n@param implementation_ The address of the new implementation for delegation\n@param allowResign Flag to indicate whether to call _resignImplementation on the old implementation\n@param becomeImplementationData The encoded bytes data to be passed to _becomeImplementation","id":1261,"implemented":true,"kind":"function","modifiers":[],"name":"_setImplementationInternal","nodeType":"FunctionDefinition","parameters":{"id":1218,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1213,"name":"implementation_","nodeType":"VariableDeclaration","scope":1261,"src":"1706:23:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1212,"name":"address","nodeType":"ElementaryTypeName","src":"1706:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":1215,"name":"allowResign","nodeType":"VariableDeclaration","scope":1261,"src":"1731:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1214,"name":"bool","nodeType":"ElementaryTypeName","src":"1731:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},{"constant":false,"id":1217,"name":"becomeImplementationData","nodeType":"VariableDeclaration","scope":1261,"src":"1749:37:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1216,"name":"bytes","nodeType":"ElementaryTypeName","src":"1749:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"}],"src":"1705:82:3"},"returnParameters":{"id":1219,"nodeType":"ParameterList","parameters":[],"src":"1797:0:3"},"scope":1325,"src":"1670:865:3","stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},{"body":{"id":1282,"nodeType":"Block","src":"3053:205:3","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":1271,"name":"hasAdminRights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2322,"src":"3101:14:3","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":1272,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3101:16:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"2161646d696e","id":1273,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3119:8:3","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_6667ace22dd98447442aa1dd1bb7c3c14e3b3d8cd11c223a5dee7cf022a93e62","typeString":"literal_string \"!admin\""},"value":"!admin"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6667ace22dd98447442aa1dd1bb7c3c14e3b3d8cd11c223a5dee7cf022a93e62","typeString":"literal_string \"!admin\""}],"id":1270,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"3093:7:3","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1274,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3093:35:3","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1275,"nodeType":"ExpressionStatement","src":"3093:35:3"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1277,"name":"implementation_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1263,"src":"3196:15:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":1278,"name":"allowResign","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1265,"src":"3213:11:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"id":1279,"name":"becomeImplementationData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1267,"src":"3226:24:3","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":1276,"name":"_setImplementationInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1261,"src":"3169:26:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bool_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bool,bytes memory)"}},"id":1280,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3169:82:3","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1281,"nodeType":"ExpressionStatement","src":"3169:82:3"}]},"documentation":"@notice Called by the admin to update the implementation of the delegator\n@param implementation_ The address of the new implementation for delegation\n@param allowResign Flag to indicate whether to call _resignImplementation on the old implementation\n@param becomeImplementationData The encoded bytes data to be passed to _becomeImplementation","id":1283,"implemented":true,"kind":"function","modifiers":[],"name":"_setImplementationSafe","nodeType":"FunctionDefinition","parameters":{"id":1268,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1263,"name":"implementation_","nodeType":"VariableDeclaration","scope":1283,"src":"2960:23:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1262,"name":"address","nodeType":"ElementaryTypeName","src":"2960:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":1265,"name":"allowResign","nodeType":"VariableDeclaration","scope":1283,"src":"2985:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1264,"name":"bool","nodeType":"ElementaryTypeName","src":"2985:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},{"constant":false,"id":1267,"name":"becomeImplementationData","nodeType":"VariableDeclaration","scope":1283,"src":"3003:39:3","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1266,"name":"bytes","nodeType":"ElementaryTypeName","src":"3003:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"}],"src":"2959:84:3"},"returnParameters":{"id":1269,"nodeType":"ParameterList","parameters":[],"src":"3053:0:3"},"scope":1325,"src":"2928:330:3","stateMutability":"nonpayable","superFunction":6643,"visibility":"external"},{"body":{"id":1323,"nodeType":"Block","src":"3474:422:3","statements":[{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1291,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":1286,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"3488:3:3","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"3488:10:3","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1289,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22620,"src":"3510:4:3","typeDescriptions":{"typeIdentifier":"t_contract$_CErc20Delegate_$1325","typeString":"contract CErc20Delegate"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CErc20Delegate_$1325","typeString":"contract CErc20Delegate"}],"id":1288,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3502:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":1290,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3502:13:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3488:27:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1294,"name":"comptroller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6224,"src":"3548:11:3","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerInterface_$12980","typeString":"contract ComptrollerInterface"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ComptrollerInterface_$12980","typeString":"contract ComptrollerInterface"}],"id":1293,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3540:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":1295,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3540:20:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1292,"name":"ComptrollerV3Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13136,"src":"3519:20:3","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ComptrollerV3Storage_$13136_$","typeString":"type(contract ComptrollerV3Storage)"}},"id":1296,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3519:42:3","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerV3Storage_$13136","typeString":"contract ComptrollerV3Storage"}},"id":1297,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"autoImplementation","nodeType":"MemberAccess","referencedDeclaration":13118,"src":"3519:61:3","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bool_$","typeString":"function () view external returns (bool)"}},"id":1298,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3519:63:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3488:94:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":1322,"nodeType":"IfStatement","src":"3484:406:3","trueBody":{"id":1321,"nodeType":"Block","src":"3584:306:3","statements":[{"assignments":[1301,1303,1305],"declarations":[{"constant":false,"id":1301,"name":"latestCErc20Delegate","nodeType":"VariableDeclaration","scope":1321,"src":"3599:28:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1300,"name":"address","nodeType":"ElementaryTypeName","src":"3599:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":1303,"name":"allowResign","nodeType":"VariableDeclaration","scope":1321,"src":"3629:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1302,"name":"bool","nodeType":"ElementaryTypeName","src":"3629:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},{"constant":false,"id":1305,"name":"becomeImplementationData","nodeType":"VariableDeclaration","scope":1321,"src":"3647:37:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1304,"name":"bytes","nodeType":"ElementaryTypeName","src":"3647:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"}],"id":1310,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1308,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6625,"src":"3719:14:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":1306,"name":"fuseAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6197,"src":"3688:9:3","typeDescriptions":{"typeIdentifier":"t_contract$_IFuseFeeDistributor_$17368","typeString":"contract IFuseFeeDistributor"}},"id":1307,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"latestCErc20Delegate","nodeType":"MemberAccess","referencedDeclaration":17339,"src":"3688:30:3","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_address_$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (address) view external returns (address,bool,bytes memory)"}},"id":1309,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3688:46:3","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(address,bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"3598:136:3"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":1311,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6625,"src":"3752:14:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"id":1312,"name":"latestCErc20Delegate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1301,"src":"3770:20:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3752:38:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":1320,"nodeType":"IfStatement","src":"3748:131:3","trueBody":{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1315,"name":"latestCErc20Delegate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1301,"src":"3819:20:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":1316,"name":"allowResign","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1303,"src":"3841:11:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"id":1317,"name":"becomeImplementationData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1305,"src":"3854:24:3","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1314,"name":"_setImplementationInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1261,"src":"3792:26:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bool_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bool,bytes memory)"}},"id":1318,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3792:87:3","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1319,"nodeType":"ExpressionStatement","src":"3792:87:3"}}]}}]},"documentation":"@notice Function called before all delegator functions\n@dev Checks comptroller.autoImplementation and upgrades the implementation if necessary","id":1324,"implemented":true,"kind":"function","modifiers":[],"name":"_prepare","nodeType":"FunctionDefinition","parameters":{"id":1284,"nodeType":"ParameterList","parameters":[],"src":"3454:2:3"},"returnParameters":{"id":1285,"nodeType":"ParameterList","parameters":[],"src":"3474:0:3"},"scope":1325,"src":"3437:459:3","stateMutability":"payable","superFunction":6651,"visibility":"external"}],"scope":1326,"src":"194:3704:3"}],"src":"0:3899:3"},"id":3},"contracts/CErc20DelegateDAIAggregatorFix.sol":{"ast":{"absolutePath":"contracts/CErc20DelegateDAIAggregatorFix.sol","exportedSymbols":{"CErc20DelegateUSDCAggregatorFix":[1397]},"id":1398,"nodeType":"SourceUnit","nodes":[{"id":1327,"literals":["solidity","0.5",".17"],"nodeType":"PragmaDirective","src":"0:23:4"},{"absolutePath":"contracts/CErc20Delegate.sol","file":"./CErc20Delegate.sol","id":1328,"nodeType":"ImportDirective","scope":1398,"sourceUnit":1326,"src":"25:30:4","symbolAliases":[],"unitAlias":""},{"baseContracts":[{"arguments":null,"baseName":{"contractScope":null,"id":1329,"name":"CErc20Delegate","nodeType":"UserDefinedTypeName","referencedDeclaration":1325,"src":"231:14:4","typeDescriptions":{"typeIdentifier":"t_contract$_CErc20Delegate_$1325","typeString":"contract CErc20Delegate"}},"id":1330,"nodeType":"InheritanceSpecifier","src":"231:14:4"}],"contractDependencies":[1143,1325,6186,6204,6271,6556,6559,6617,6626,6652,6837,13849,14371,15066],"contractKind":"contract","documentation":"@title Compound's CErc20Delegate Contract\n@notice CTokens which wrap Ether and are delegated to\n@author Compound","fullyImplemented":true,"id":1397,"linearizedBaseContracts":[1397,1325,1143,6617,6559,6186,13849,14371,15066,6837,6556,6271,6204,6652,6626],"name":"CErc20DelegateUSDCAggregatorFix","nodeType":"ContractDefinition","nodes":[{"body":{"id":1391,"nodeType":"Block","src":"473:648:4","statements":[{"assignments":[1336],"declarations":[{"constant":false,"id":1336,"name":"DAI_CONTROLLER","nodeType":"VariableDeclaration","scope":1391,"src":"483:22:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1335,"name":"address","nodeType":"ElementaryTypeName","src":"483:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":1338,"initialValue":{"argumentTypes":null,"hexValue":"307861464432416144453634453645613639303137334636444535394663303946354339313930643734","id":1337,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"508:42:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"value":"0xaFD2AaDE64E6Ea690173F6DE59Fc09F5C9190d74"},"nodeType":"VariableDeclarationStatement","src":"483:67:4"},{"assignments":[1340],"declarations":[{"constant":false,"id":1340,"name":"MERKLE_REDEEMER","nodeType":"VariableDeclaration","scope":1391,"src":"560:23:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1339,"name":"address","nodeType":"ElementaryTypeName","src":"560:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":1342,"initialValue":{"argumentTypes":null,"hexValue":"307843416534323130653636373637323745413465306644394241356446623935383331333536613136","id":1341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"586:42:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"value":"0xCAe4210e6676727EA4e0fD9BA5dFb95831356a16"},"nodeType":"VariableDeclarationStatement","src":"560:68:4"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1352,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":1344,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"647:3:4","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1345,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"647:10:4","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1347,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22632,"src":"669:4:4","typeDescriptions":{"typeIdentifier":"t_contract$_CErc20DelegateUSDCAggregatorFix_$1397","typeString":"contract CErc20DelegateUSDCAggregatorFix"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CErc20DelegateUSDCAggregatorFix_$1397","typeString":"contract CErc20DelegateUSDCAggregatorFix"}],"id":1346,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"661:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":1348,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"661:13:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"647:27:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":1350,"name":"hasAdminRights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2322,"src":"678:14:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":1351,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"678:16:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"647:47:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"2173656c66","id":1353,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"696:7:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_99fcef12226bddfa001a37897c86b845052c9f40c17a4893abb01c71a7570fd3","typeString":"literal_string \"!self\""},"value":"!self"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_99fcef12226bddfa001a37897c86b845052c9f40c17a4893abb01c71a7570fd3","typeString":"literal_string \"!self\""}],"id":1343,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"639:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1354,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"639:65:4","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1355,"nodeType":"ExpressionStatement","src":"639:65:4"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1363,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":1357,"name":"accrueInterest","nodeType":"Identifier","overloadedDeclarations":[3327],"referencedDeclaration":3327,"src":"722:14:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_uint256_$","typeString":"function () returns (uint256)"}},"id":1358,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"722:16:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":1360,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"747:5:4","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":1361,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"747:14:4","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}],"id":1359,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"742:4:4","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":1362,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"742:20:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"722:40:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"21616363727565","id":1364,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"764:9:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_44bb18876d3f19bcacf64b2f09c11ca1b45add3bcdb376ecb23fe5fd68e373ff","typeString":"literal_string \"!accrue\""},"value":"!accrue"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_44bb18876d3f19bcacf64b2f09c11ca1b45add3bcdb376ecb23fe5fd68e373ff","typeString":"literal_string \"!accrue\""}],"id":1356,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"714:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1365,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"714:60:4","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1366,"nodeType":"ExpressionStatement","src":"714:60:4"},{"assignments":[1368],"declarations":[{"constant":false,"id":1368,"name":"account1SupplyShares","nodeType":"VariableDeclaration","scope":1391,"src":"826:28:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1367,"name":"uint256","nodeType":"ElementaryTypeName","src":"826:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":1372,"initialValue":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":1369,"name":"accountTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6252,"src":"857:13:4","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1371,"indexExpression":{"argumentTypes":null,"id":1370,"name":"DAI_CONTROLLER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1336,"src":"871:14:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"857:29:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"826:60:4"},{"expression":{"argumentTypes":null,"id":1377,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":1373,"name":"accountTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6252,"src":"939:13:4","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1375,"indexExpression":{"argumentTypes":null,"id":1374,"name":"DAI_CONTROLLER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1336,"src":"953:14:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"939:29:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"hexValue":"30","id":1376,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"971:1:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"939:33:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1378,"nodeType":"ExpressionStatement","src":"939:33:4"},{"expression":{"argumentTypes":null,"id":1383,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":1379,"name":"accountTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6252,"src":"982:13:4","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1381,"indexExpression":{"argumentTypes":null,"id":1380,"name":"MERKLE_REDEEMER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1340,"src":"996:15:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"982:30:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":1382,"name":"account1SupplyShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1368,"src":"1015:20:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"982:53:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1384,"nodeType":"ExpressionStatement","src":"982:53:4"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1386,"name":"DAI_CONTROLLER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1336,"src":"1060:14:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":1387,"name":"MERKLE_REDEEMER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1340,"src":"1076:15:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":1388,"name":"account1SupplyShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1368,"src":"1093:20:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1385,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6393,"src":"1051:8:4","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":1389,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1051:63:4","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1390,"nodeType":"EmitStatement","src":"1046:68:4"}]},"documentation":"@notice Called by the delegator on a delegate to initialize it for duty\n@param data The encoded bytes data for any initialization","id":1392,"implemented":true,"kind":"function","modifiers":[],"name":"_becomeImplementation","nodeType":"FunctionDefinition","parameters":{"id":1333,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1332,"name":"data","nodeType":"VariableDeclaration","scope":1392,"src":"443:19:4","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1331,"name":"bytes","nodeType":"ElementaryTypeName","src":"443:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"}],"src":"442:21:4"},"returnParameters":{"id":1334,"nodeType":"ParameterList","parameters":[],"src":"473:0:4"},"scope":1397,"src":"412:709:4","stateMutability":"nonpayable","superFunction":1198,"visibility":"external"},{"body":{"id":1395,"nodeType":"Block","src":"1242:2:4","statements":[]},"documentation":"@notice Function called before all delegator functions","id":1396,"implemented":true,"kind":"function","modifiers":[],"name":"_prepare","nodeType":"FunctionDefinition","parameters":{"id":1393,"nodeType":"ParameterList","parameters":[],"src":"1222:2:4"},"returnParameters":{"id":1394,"nodeType":"ParameterList","parameters":[],"src":"1242:0:4"},"scope":1397,"src":"1205:39:4","stateMutability":"payable","superFunction":1324,"visibility":"external"}],"scope":1398,"src":"187:1059:4"}],"src":"0:1247:4"},"id":4},"contracts/CErc20DelegateUSDCAggregatorFix.sol":{"ast":{"absolutePath":"contracts/CErc20DelegateUSDCAggregatorFix.sol","exportedSymbols":{"CErc20DelegateUSDCAggregatorFix":[1469]},"id":1470,"nodeType":"SourceUnit","nodes":[{"id":1399,"literals":["solidity","0.5",".17"],"nodeType":"PragmaDirective","src":"0:23:5"},{"absolutePath":"contracts/CErc20Delegate.sol","file":"./CErc20Delegate.sol","id":1400,"nodeType":"ImportDirective","scope":1470,"sourceUnit":1326,"src":"25:30:5","symbolAliases":[],"unitAlias":""},{"baseContracts":[{"arguments":null,"baseName":{"contractScope":null,"id":1401,"name":"CErc20Delegate","nodeType":"UserDefinedTypeName","referencedDeclaration":1325,"src":"231:14:5","typeDescriptions":{"typeIdentifier":"t_contract$_CErc20Delegate_$1325","typeString":"contract CErc20Delegate"}},"id":1402,"nodeType":"InheritanceSpecifier","src":"231:14:5"}],"contractDependencies":[1143,1325,6186,6204,6271,6556,6559,6617,6626,6652,6837,13849,14371,15066],"contractKind":"contract","documentation":"@title Compound's CErc20Delegate Contract\n@notice CTokens which wrap Ether and are delegated to\n@author Compound","fullyImplemented":true,"id":1469,"linearizedBaseContracts":[1469,1325,1143,6617,6559,6186,13849,14371,15066,6837,6556,6271,6204,6652,6626],"name":"CErc20DelegateUSDCAggregatorFix","nodeType":"ContractDefinition","nodes":[{"body":{"id":1463,"nodeType":"Block","src":"473:652:5","statements":[{"assignments":[1408],"declarations":[{"constant":false,"id":1408,"name":"USDC_CONTROLLER","nodeType":"VariableDeclaration","scope":1463,"src":"483:23:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1407,"name":"address","nodeType":"ElementaryTypeName","src":"483:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":1410,"initialValue":{"argumentTypes":null,"hexValue":"307836366634383536463142424431656230396531433864394436343666354133613139336441353639","id":1409,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"509:42:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"value":"0x66f4856F1BBD1eb09e1C8d9D646f5A3a193dA569"},"nodeType":"VariableDeclarationStatement","src":"483:68:5"},{"assignments":[1412],"declarations":[{"constant":false,"id":1412,"name":"MERKLE_REDEEMER","nodeType":"VariableDeclaration","scope":1463,"src":"561:23:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1411,"name":"address","nodeType":"ElementaryTypeName","src":"561:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":1414,"initialValue":{"argumentTypes":null,"hexValue":"307843416534323130653636373637323745413465306644394241356446623935383331333536613136","id":1413,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"587:42:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"value":"0xCAe4210e6676727EA4e0fD9BA5dFb95831356a16"},"nodeType":"VariableDeclarationStatement","src":"561:68:5"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1421,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":1416,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"648:3:5","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1417,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"648:10:5","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1419,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22634,"src":"670:4:5","typeDescriptions":{"typeIdentifier":"t_contract$_CErc20DelegateUSDCAggregatorFix_$1469","typeString":"contract CErc20DelegateUSDCAggregatorFix"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CErc20DelegateUSDCAggregatorFix_$1469","typeString":"contract CErc20DelegateUSDCAggregatorFix"}],"id":1418,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"662:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":1420,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"662:13:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"648:27:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":1422,"name":"hasAdminRights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2322,"src":"679:14:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":1423,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"679:16:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"648:47:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"2173656c66","id":1425,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"697:7:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_99fcef12226bddfa001a37897c86b845052c9f40c17a4893abb01c71a7570fd3","typeString":"literal_string \"!self\""},"value":"!self"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_99fcef12226bddfa001a37897c86b845052c9f40c17a4893abb01c71a7570fd3","typeString":"literal_string \"!self\""}],"id":1415,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"640:7:5","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1426,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"640:65:5","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1427,"nodeType":"ExpressionStatement","src":"640:65:5"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1435,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":1429,"name":"accrueInterest","nodeType":"Identifier","overloadedDeclarations":[3327],"referencedDeclaration":3327,"src":"723:14:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_uint256_$","typeString":"function () returns (uint256)"}},"id":1430,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"723:16:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":1432,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"748:5:5","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":1433,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"748:14:5","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}],"id":1431,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"743:4:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":1434,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"743:20:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"723:40:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"21616363727565","id":1436,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"765:9:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_44bb18876d3f19bcacf64b2f09c11ca1b45add3bcdb376ecb23fe5fd68e373ff","typeString":"literal_string \"!accrue\""},"value":"!accrue"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_44bb18876d3f19bcacf64b2f09c11ca1b45add3bcdb376ecb23fe5fd68e373ff","typeString":"literal_string \"!accrue\""}],"id":1428,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"715:7:5","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1437,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"715:60:5","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1438,"nodeType":"ExpressionStatement","src":"715:60:5"},{"assignments":[1440],"declarations":[{"constant":false,"id":1440,"name":"account1SupplyShares","nodeType":"VariableDeclaration","scope":1463,"src":"827:28:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1439,"name":"uint256","nodeType":"ElementaryTypeName","src":"827:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":1444,"initialValue":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":1441,"name":"accountTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6252,"src":"858:13:5","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1443,"indexExpression":{"argumentTypes":null,"id":1442,"name":"USDC_CONTROLLER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1408,"src":"872:15:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"858:30:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"827:61:5"},{"expression":{"argumentTypes":null,"id":1449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":1445,"name":"accountTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6252,"src":"941:13:5","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1447,"indexExpression":{"argumentTypes":null,"id":1446,"name":"USDC_CONTROLLER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1408,"src":"955:15:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"941:30:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"hexValue":"30","id":1448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"974:1:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"941:34:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1450,"nodeType":"ExpressionStatement","src":"941:34:5"},{"expression":{"argumentTypes":null,"id":1455,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":1451,"name":"accountTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6252,"src":"985:13:5","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1453,"indexExpression":{"argumentTypes":null,"id":1452,"name":"MERKLE_REDEEMER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1412,"src":"999:15:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"985:30:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":1454,"name":"account1SupplyShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"1018:20:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"985:53:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1456,"nodeType":"ExpressionStatement","src":"985:53:5"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1458,"name":"USDC_CONTROLLER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1408,"src":"1063:15:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":1459,"name":"MERKLE_REDEEMER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1412,"src":"1080:15:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":1460,"name":"account1SupplyShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"1097:20:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1457,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6393,"src":"1054:8:5","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":1461,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1054:64:5","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1462,"nodeType":"EmitStatement","src":"1049:69:5"}]},"documentation":"@notice Called by the delegator on a delegate to initialize it for duty\n@param data The encoded bytes data for any initialization","id":1464,"implemented":true,"kind":"function","modifiers":[],"name":"_becomeImplementation","nodeType":"FunctionDefinition","parameters":{"id":1405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1404,"name":"data","nodeType":"VariableDeclaration","scope":1464,"src":"443:19:5","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1403,"name":"bytes","nodeType":"ElementaryTypeName","src":"443:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"}],"src":"442:21:5"},"returnParameters":{"id":1406,"nodeType":"ParameterList","parameters":[],"src":"473:0:5"},"scope":1469,"src":"412:713:5","stateMutability":"nonpayable","superFunction":1198,"visibility":"external"},{"body":{"id":1467,"nodeType":"Block","src":"1246:2:5","statements":[]},"documentation":"@notice Function called before all delegator functions","id":1468,"implemented":true,"kind":"function","modifiers":[],"name":"_prepare","nodeType":"FunctionDefinition","parameters":{"id":1465,"nodeType":"ParameterList","parameters":[],"src":"1226:2:5"},"returnParameters":{"id":1466,"nodeType":"ParameterList","parameters":[],"src":"1246:0:5"},"scope":1469,"src":"1209:39:5","stateMutability":"payable","superFunction":1324,"visibility":"external"}],"scope":1470,"src":"187:1063:5"}],"src":"0:1251:5"},"id":5},"contracts/CErc20Delegator.sol":{"ast":{"absolutePath":"contracts/CErc20Delegator.sol","exportedSymbols":{"CErc20Delegator":[1575]},"id":1576,"nodeType":"SourceUnit","nodes":[{"id":1471,"literals":["solidity","0.5",".17"],"nodeType":"PragmaDirective","src":"0:23:6"},{"absolutePath":"contracts/CTokenInterfaces.sol","file":"./CTokenInterfaces.sol","id":1472,"nodeType":"ImportDirective","scope":1576,"sourceUnit":6653,"src":"25:32:6","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/ComptrollerStorage.sol","file":"./ComptrollerStorage.sol","id":1473,"nodeType":"ImportDirective","scope":1576,"sourceUnit":13137,"src":"58:34:6","symbolAliases":[],"unitAlias":""},{"baseContracts":[{"arguments":null,"baseName":{"contractScope":null,"id":1474,"name":"CDelegationStorage","nodeType":"UserDefinedTypeName","referencedDeclaration":6626,"src":"281:18:6","typeDescriptions":{"typeIdentifier":"t_contract$_CDelegationStorage_$6626","typeString":"contract CDelegationStorage"}},"id":1475,"nodeType":"InheritanceSpecifier","src":"281:18:6"}],"contractDependencies":[6626],"contractKind":"contract","documentation":"@title Compound's CErc20Delegator Contract\n@notice CTokens which wrap an EIP-20 underlying and delegate to an implementation\n@author Compound","fullyImplemented":true,"id":1575,"linearizedBaseContracts":[1575,6626],"name":"CErc20Delegator","nodeType":"ContractDefinition","nodes":[{"body":{"id":1522,"nodeType":"Block","src":"1233:985:6","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1497,"name":"implementation_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1487,"src":"1337:15:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"696e697469616c697a6528616464726573732c616464726573732c616464726573732c737472696e672c737472696e672c75696e743235362c75696e7432353629","id":1500,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1378:67:6","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_a0b0d289ddb757dd138a24fe8bf1379da0afb18c18153e2970c93133723dbf13","typeString":"literal_string \"initialize(address,address,address,string,string,uint256,uint256)\""},"value":"initialize(address,address,address,string,string,uint256,uint256)"},{"argumentTypes":null,"id":1501,"name":"underlying_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1477,"src":"1507:11:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":1502,"name":"comptroller_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1479,"src":"1580:12:6","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerInterface_$12980","typeString":"contract ComptrollerInterface"}},{"argumentTypes":null,"id":1503,"name":"interestRateModel_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1481,"src":"1654:18:6","typeDescriptions":{"typeIdentifier":"t_contract$_InterestRateModel_$17398","typeString":"contract InterestRateModel"}},{"argumentTypes":null,"id":1504,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1483,"src":"1734:5:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"argumentTypes":null,"id":1505,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1485,"src":"1801:7:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"argumentTypes":null,"id":1506,"name":"reserveFactorMantissa_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"1870:22:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":1507,"name":"adminFeeMantissa_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1493,"src":"1954:17:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_a0b0d289ddb757dd138a24fe8bf1379da0afb18c18153e2970c93133723dbf13","typeString":"literal_string \"initialize(address,address,address,string,string,uint256,uint256)\""},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_ComptrollerInterface_$12980","typeString":"contract ComptrollerInterface"},{"typeIdentifier":"t_contract$_InterestRateModel_$17398","typeString":"contract InterestRateModel"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":1498,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22537,"src":"1354:3:6","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1499,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSignature","nodeType":"MemberAccess","referencedDeclaration":null,"src":"1354:23:6","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (string memory) pure returns (bytes memory)"}},"id":1508,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1354:618:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1496,"name":"delegateTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1545,"src":"1326:10:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory) returns (bytes memory)"}},"id":1509,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1326:647:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1510,"nodeType":"ExpressionStatement","src":"1326:647:6"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1512,"name":"implementation_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1487,"src":"2074:15:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"5f736574496d706c656d656e746174696f6e5361666528616464726573732c626f6f6c2c627974657329","id":1515,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2115:44:6","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_50d85b733f2864bd055c7f166804070c052ce429bae27cc8b031eefe70571ba6","typeString":"literal_string \"_setImplementationSafe(address,bool,bytes)\""},"value":"_setImplementationSafe(address,bool,bytes)"},{"argumentTypes":null,"id":1516,"name":"implementation_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1487,"src":"2161:15:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"hexValue":"66616c7365","id":1517,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2178:5:6","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"argumentTypes":null,"id":1518,"name":"becomeImplementationData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1489,"src":"2185:24:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_50d85b733f2864bd055c7f166804070c052ce429bae27cc8b031eefe70571ba6","typeString":"literal_string \"_setImplementationSafe(address,bool,bytes)\""},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":null,"id":1513,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22537,"src":"2091:3:6","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1514,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSignature","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2091:23:6","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (string memory) pure returns (bytes memory)"}},"id":1519,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2091:119:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1511,"name":"delegateTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1545,"src":"2063:10:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory) returns (bytes memory)"}},"id":1520,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2063:148:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1521,"nodeType":"ExpressionStatement","src":"2063:148:6"}]},"documentation":"@notice Construct a new money market\n@param underlying_ The address of the underlying asset\n@param comptroller_ The address of the Comptroller\n@param interestRateModel_ The address of the interest rate model\n@param name_ ERC-20 name of this token\n@param symbol_ ERC-20 symbol of this token\n@param implementation_ The address of the implementation the contract delegates to\n@param becomeImplementationData The encoded args for becomeImplementation","id":1523,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":1494,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1477,"name":"underlying_","nodeType":"VariableDeclaration","scope":1523,"src":"837:19:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1476,"name":"address","nodeType":"ElementaryTypeName","src":"837:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":1479,"name":"comptroller_","nodeType":"VariableDeclaration","scope":1523,"src":"874:33:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerInterface_$12980","typeString":"contract ComptrollerInterface"},"typeName":{"contractScope":null,"id":1478,"name":"ComptrollerInterface","nodeType":"UserDefinedTypeName","referencedDeclaration":12980,"src":"874:20:6","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerInterface_$12980","typeString":"contract ComptrollerInterface"}},"value":null,"visibility":"internal"},{"constant":false,"id":1481,"name":"interestRateModel_","nodeType":"VariableDeclaration","scope":1523,"src":"925:36:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_InterestRateModel_$17398","typeString":"contract InterestRateModel"},"typeName":{"contractScope":null,"id":1480,"name":"InterestRateModel","nodeType":"UserDefinedTypeName","referencedDeclaration":17398,"src":"925:17:6","typeDescriptions":{"typeIdentifier":"t_contract$_InterestRateModel_$17398","typeString":"contract InterestRateModel"}},"value":null,"visibility":"internal"},{"constant":false,"id":1483,"name":"name_","nodeType":"VariableDeclaration","scope":1523,"src":"979:19:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1482,"name":"string","nodeType":"ElementaryTypeName","src":"979:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":null,"visibility":"internal"},{"constant":false,"id":1485,"name":"symbol_","nodeType":"VariableDeclaration","scope":1523,"src":"1016:21:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1484,"name":"string","nodeType":"ElementaryTypeName","src":"1016:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":null,"visibility":"internal"},{"constant":false,"id":1487,"name":"implementation_","nodeType":"VariableDeclaration","scope":1523,"src":"1055:23:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1486,"name":"address","nodeType":"ElementaryTypeName","src":"1055:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":1489,"name":"becomeImplementationData","nodeType":"VariableDeclaration","scope":1523,"src":"1096:37:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1488,"name":"bytes","nodeType":"ElementaryTypeName","src":"1096:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"},{"constant":false,"id":1491,"name":"reserveFactorMantissa_","nodeType":"VariableDeclaration","scope":1523,"src":"1151:30:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1490,"name":"uint256","nodeType":"ElementaryTypeName","src":"1151:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":1493,"name":"adminFeeMantissa_","nodeType":"VariableDeclaration","scope":1523,"src":"1199:25:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1492,"name":"uint256","nodeType":"ElementaryTypeName","src":"1199:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"836:389:6"},"returnParameters":{"id":1495,"nodeType":"ParameterList","parameters":[],"src":"1233:0:6"},"scope":1575,"src":"825:1393:6","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":1544,"nodeType":"Block","src":"2656:248:6","statements":[{"assignments":[1533,1535],"declarations":[{"constant":false,"id":1533,"name":"success","nodeType":"VariableDeclaration","scope":1544,"src":"2667:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1532,"name":"bool","nodeType":"ElementaryTypeName","src":"2667:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},{"constant":false,"id":1535,"name":"returnData","nodeType":"VariableDeclaration","scope":1544,"src":"2681:23:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1534,"name":"bytes","nodeType":"ElementaryTypeName","src":"2681:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"}],"id":1540,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1538,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1527,"src":"2728:4:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":null,"id":1536,"name":"callee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1525,"src":"2708:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1537,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"delegatecall","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2708:19:6","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":1539,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2708:25:6","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2666:67:6"},{"externalReferences":[{"success":{"declaration":1533,"isOffset":false,"isSlot":false,"src":"2772:7:6","valueSize":1}},{"returnData":{"declaration":1535,"isOffset":false,"isSlot":false,"src":"2813:10:6","valueSize":1}}],"id":1541,"nodeType":"InlineAssembly","operations":"{\n if eq(success, 0)\n {\n revert(add(returnData, 0x20), returndatasize())\n }\n}","src":"2743:128:6"},{"expression":{"argumentTypes":null,"id":1542,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1535,"src":"2887:10:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1531,"id":1543,"nodeType":"Return","src":"2880:17:6"}]},"documentation":"@notice Internal method to delegate execution to another contract\n@dev It returns to the external caller whatever the implementation returns or forwards reverts\n@param callee The contract to delegatecall\n@param data The raw data to delegatecall\n@return The returned bytes from the delegatecall","id":1545,"implemented":true,"kind":"function","modifiers":[],"name":"delegateTo","nodeType":"FunctionDefinition","parameters":{"id":1528,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1525,"name":"callee","nodeType":"VariableDeclaration","scope":1545,"src":"2589:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1524,"name":"address","nodeType":"ElementaryTypeName","src":"2589:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":1527,"name":"data","nodeType":"VariableDeclaration","scope":1545,"src":"2605:17:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1526,"name":"bytes","nodeType":"ElementaryTypeName","src":"2605:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"}],"src":"2588:35:6"},"returnParameters":{"id":1531,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1530,"name":"","nodeType":"VariableDeclaration","scope":1545,"src":"2642:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1529,"name":"bytes","nodeType":"ElementaryTypeName","src":"2642:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"}],"src":"2641:14:6"},"scope":1575,"src":"2569:335:6","stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},{"body":{"id":1573,"nodeType":"Block","src":"3122:685:6","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1552,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":1549,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"3188:3:6","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1550,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","referencedDeclaration":null,"src":"3188:9:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":1551,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3201:1:6","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3188:14:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"43457263323044656c656761746f723a66616c6c6261636b3a2063616e6e6f742073656e642076616c756520746f2066616c6c6261636b","id":1553,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3204:57:6","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_6703ce2d5aa0d53fc38fb6ebe5cc4fe4fb64d85ae7c0c0ce379ff70cb8ee6fd1","typeString":"literal_string \"CErc20Delegator:fallback: cannot send value to fallback\""},"value":"CErc20Delegator:fallback: cannot send value to fallback"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6703ce2d5aa0d53fc38fb6ebe5cc4fe4fb64d85ae7c0c0ce379ff70cb8ee6fd1","typeString":"literal_string \"CErc20Delegator:fallback: cannot send value to fallback\""}],"id":1548,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"3180:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1554,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3180:82:6","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1555,"nodeType":"ExpressionStatement","src":"3180:82:6"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1557,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6625,"src":"3330:14:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"5f707265706172652829","id":1560,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3370:12:6","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_1db7894496aca7988f503a38b093114a710b045aa68094d5773dae422d92bc49","typeString":"literal_string \"_prepare()\""},"value":"_prepare()"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_1db7894496aca7988f503a38b093114a710b045aa68094d5773dae422d92bc49","typeString":"literal_string \"_prepare()\""}],"expression":{"argumentTypes":null,"id":1558,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22537,"src":"3346:3:6","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1559,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSignature","nodeType":"MemberAccess","referencedDeclaration":null,"src":"3346:23:6","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (string memory) pure returns (bytes memory)"}},"id":1561,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3346:37:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1556,"name":"delegateTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1545,"src":"3319:10:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory) returns (bytes memory)"}},"id":1562,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3319:65:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1563,"nodeType":"ExpressionStatement","src":"3319:65:6"},{"assignments":[1565,null],"declarations":[{"constant":false,"id":1565,"name":"success","nodeType":"VariableDeclaration","scope":1573,"src":"3462:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1564,"name":"bool","nodeType":"ElementaryTypeName","src":"3462:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},null],"id":1571,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":1568,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"3508:3:6","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1569,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"data","nodeType":"MemberAccess","referencedDeclaration":null,"src":"3508:8:6","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"argumentTypes":null,"id":1566,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6625,"src":"3480:14:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"delegatecall","nodeType":"MemberAccess","referencedDeclaration":null,"src":"3480:27:6","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":1570,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3480:37:6","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"3461:56:6"},{"externalReferences":[{"success":{"declaration":1565,"isOffset":false,"isSlot":false,"src":"3663:7:6","valueSize":1}}],"id":1572,"nodeType":"InlineAssembly","operations":"{\n let free_mem_ptr := mload(0x40)\n returndatacopy(free_mem_ptr, 0, returndatasize())\n switch success\n case 0 {\n revert(free_mem_ptr, returndatasize())\n }\n default {\n return(free_mem_ptr, returndatasize())\n }\n}","src":"3528:273:6"}]},"documentation":"@notice Delegates execution to an implementation contract\n@dev It returns to the external caller whatever the implementation returns or forwards reverts","id":1574,"implemented":true,"kind":"fallback","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":1546,"nodeType":"ParameterList","parameters":[],"src":"3102:2:6"},"returnParameters":{"id":1547,"nodeType":"ParameterList","parameters":[],"src":"3122:0:6"},"scope":1575,"src":"3093:714:6","stateMutability":"payable","superFunction":null,"visibility":"external"}],"scope":1576,"src":"253:3556:6"}],"src":"0:3810:6"},"id":6},"contracts/CEther.sol":{"ast":{"absolutePath":"contracts/CEther.sol","exportedSymbols":{"CEther":[1992]},"id":1993,"nodeType":"SourceUnit","nodes":[{"id":1577,"literals":["solidity","0.5",".17"],"nodeType":"PragmaDirective","src":"0:23:7"},{"absolutePath":"contracts/CToken.sol","file":"./CToken.sol","id":1578,"nodeType":"ImportDirective","scope":1993,"sourceUnit":6187,"src":"25:22:7","symbolAliases":[],"unitAlias":""},{"baseContracts":[{"arguments":null,"baseName":{"contractScope":null,"id":1579,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"334:6:7","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":1580,"nodeType":"InheritanceSpecifier","src":"334:6:7"},{"arguments":null,"baseName":{"contractScope":null,"id":1581,"name":"CEtherInterface","nodeType":"UserDefinedTypeName","referencedDeclaration":6623,"src":"342:15:7","typeDescriptions":{"typeIdentifier":"t_contract$_CEtherInterface_$6623","typeString":"contract CEtherInterface"}},"id":1582,"nodeType":"InheritanceSpecifier","src":"342:15:7"}],"contractDependencies":[6186,6204,6271,6556,6559,6623,6837,13849,14371,15066],"contractKind":"contract","documentation":"@title Compound's CEther Contract\n@notice CToken which wraps Ether\n@dev This contract should not to be deployed on its own; instead, deploy `CEtherDelegator` (proxy contract) and `CEtherDelegate` (logic/implementation contract).\n@author Compound","fullyImplemented":true,"id":1992,"linearizedBaseContracts":[1992,6623,6559,6186,13849,14371,15066,6837,6556,6271,6204],"name":"CEther","nodeType":"ContractDefinition","nodes":[{"body":{"id":1618,"nodeType":"Block","src":"976:307:7","statements":[{"assignments":[1598],"declarations":[{"constant":false,"id":1598,"name":"initialExchangeRateMantissa_","nodeType":"VariableDeclaration","scope":1618,"src":"1041:36:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1597,"name":"uint256","nodeType":"ElementaryTypeName","src":"1041:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":1600,"initialValue":{"argumentTypes":null,"hexValue":"302e32653138","id":1599,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1080:6:7","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_200000000000000000_by_1","typeString":"int_const 200000000000000000"},"value":"0.2e18"},"nodeType":"VariableDeclarationStatement","src":"1041:45:7"},{"assignments":[1602],"declarations":[{"constant":false,"id":1602,"name":"decimals_","nodeType":"VariableDeclaration","scope":1618,"src":"1096:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1601,"name":"uint8","nodeType":"ElementaryTypeName","src":"1096:5:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":null,"visibility":"internal"}],"id":1604,"initialValue":{"argumentTypes":null,"hexValue":"3138","id":1603,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1114:2:7","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"nodeType":"VariableDeclarationStatement","src":"1096:20:7"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1608,"name":"comptroller_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1584,"src":"1143:12:7","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerInterface_$12980","typeString":"contract ComptrollerInterface"}},{"argumentTypes":null,"id":1609,"name":"interestRateModel_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1586,"src":"1157:18:7","typeDescriptions":{"typeIdentifier":"t_contract$_InterestRateModel_$17398","typeString":"contract InterestRateModel"}},{"argumentTypes":null,"id":1610,"name":"initialExchangeRateMantissa_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1598,"src":"1177:28:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":1611,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1588,"src":"1207:5:7","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"argumentTypes":null,"id":1612,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1590,"src":"1214:7:7","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"argumentTypes":null,"id":1613,"name":"decimals_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1602,"src":"1223:9:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"argumentTypes":null,"id":1614,"name":"reserveFactorMantissa_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1592,"src":"1234:22:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":1615,"name":"adminFeeMantissa_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1594,"src":"1258:17:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ComptrollerInterface_$12980","typeString":"contract ComptrollerInterface"},{"typeIdentifier":"t_contract$_InterestRateModel_$17398","typeString":"contract InterestRateModel"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":1605,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22639,"src":"1126:5:7","typeDescriptions":{"typeIdentifier":"t_super$_CEther_$1992","typeString":"contract super CEther"}},"id":1607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":2463,"src":"1126:16:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ComptrollerInterface_$12980_$_t_contract$_InterestRateModel_$17398_$_t_uint256_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint8_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (contract ComptrollerInterface,contract InterestRateModel,uint256,string memory,string memory,uint8,uint256,uint256)"}},"id":1616,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1126:150:7","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1617,"nodeType":"ExpressionStatement","src":"1126:150:7"}]},"documentation":"@notice Initialize the new money market\n@param comptroller_ The address of the Comptroller\n@param interestRateModel_ The address of the interest rate model\n@param name_ ERC-20 name of this token\n@param symbol_ ERC-20 symbol of this token","id":1619,"implemented":true,"kind":"function","modifiers":[],"name":"initialize","nodeType":"FunctionDefinition","parameters":{"id":1595,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1584,"name":"comptroller_","nodeType":"VariableDeclaration","scope":1619,"src":"673:33:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerInterface_$12980","typeString":"contract ComptrollerInterface"},"typeName":{"contractScope":null,"id":1583,"name":"ComptrollerInterface","nodeType":"UserDefinedTypeName","referencedDeclaration":12980,"src":"673:20:7","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerInterface_$12980","typeString":"contract ComptrollerInterface"}},"value":null,"visibility":"internal"},{"constant":false,"id":1586,"name":"interestRateModel_","nodeType":"VariableDeclaration","scope":1619,"src":"732:36:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_InterestRateModel_$17398","typeString":"contract InterestRateModel"},"typeName":{"contractScope":null,"id":1585,"name":"InterestRateModel","nodeType":"UserDefinedTypeName","referencedDeclaration":17398,"src":"732:17:7","typeDescriptions":{"typeIdentifier":"t_contract$_InterestRateModel_$17398","typeString":"contract InterestRateModel"}},"value":null,"visibility":"internal"},{"constant":false,"id":1588,"name":"name_","nodeType":"VariableDeclaration","scope":1619,"src":"794:19:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1587,"name":"string","nodeType":"ElementaryTypeName","src":"794:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":null,"visibility":"internal"},{"constant":false,"id":1590,"name":"symbol_","nodeType":"VariableDeclaration","scope":1619,"src":"839:21:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1589,"name":"string","nodeType":"ElementaryTypeName","src":"839:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":null,"visibility":"internal"},{"constant":false,"id":1592,"name":"reserveFactorMantissa_","nodeType":"VariableDeclaration","scope":1619,"src":"886:30:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1591,"name":"uint256","nodeType":"ElementaryTypeName","src":"886:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":1594,"name":"adminFeeMantissa_","nodeType":"VariableDeclaration","scope":1619,"src":"942:25:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1593,"name":"uint256","nodeType":"ElementaryTypeName","src":"942:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"672:296:7"},"returnParameters":{"id":1596,"nodeType":"ParameterList","parameters":[],"src":"976:0:7"},"scope":1992,"src":"653:630:7","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":1634,"nodeType":"Block","src":"1492:98:7","statements":[{"assignments":[1623,null],"declarations":[{"constant":false,"id":1623,"name":"err","nodeType":"VariableDeclaration","scope":1634,"src":"1503:8:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1622,"name":"uint","nodeType":"ElementaryTypeName","src":"1503:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},null],"id":1628,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":1625,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"1529:3:7","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1626,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","referencedDeclaration":null,"src":"1529:9:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1624,"name":"mintInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3491,"src":"1516:12:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (uint256) returns (uint256,uint256)"}},"id":1627,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1516:23:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"1502:37:7"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1630,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1623,"src":"1564:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"6d696e74206661696c6564","id":1631,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1569:13:7","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_594ff2dfc35e5b8979a04d047bc1811cd0832013e67a9ef5bc97a173e7a27efb","typeString":"literal_string \"mint failed\""},"value":"mint failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_594ff2dfc35e5b8979a04d047bc1811cd0832013e67a9ef5bc97a173e7a27efb","typeString":"literal_string \"mint failed\""}],"id":1629,"name":"requireNoError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1991,"src":"1549:14:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_string_memory_ptr_$returns$__$","typeString":"function (uint256,string memory) pure"}},"id":1632,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1549:34:7","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1633,"nodeType":"ExpressionStatement","src":"1549:34:7"}]},"documentation":"@notice Sender supplies assets into the market and receives cTokens in exchange\n@dev Reverts upon any failure","id":1635,"implemented":true,"kind":"function","modifiers":[],"name":"mint","nodeType":"FunctionDefinition","parameters":{"id":1620,"nodeType":"ParameterList","parameters":[],"src":"1472:2:7"},"returnParameters":{"id":1621,"nodeType":"ParameterList","parameters":[],"src":"1492:0:7"},"scope":1992,"src":"1459:131:7","stateMutability":"payable","superFunction":null,"visibility":"external"},{"body":{"id":1646,"nodeType":"Block","src":"1992:52:7","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1643,"name":"redeemTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1637,"src":"2024:12:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1642,"name":"redeemInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3737,"src":"2009:14:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":1644,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2009:28:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1641,"id":1645,"nodeType":"Return","src":"2002:35:7"}]},"documentation":"@notice Sender redeems cTokens in exchange for the underlying asset\n@dev Accrues interest whether or not the operation succeeds, unless reverted\n@param redeemTokens The number of cTokens to redeem into underlying\n@return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)","id":1647,"implemented":true,"kind":"function","modifiers":[],"name":"redeem","nodeType":"FunctionDefinition","parameters":{"id":1638,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1637,"name":"redeemTokens","nodeType":"VariableDeclaration","scope":1647,"src":"1949:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1636,"name":"uint","nodeType":"ElementaryTypeName","src":"1949:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1948:19:7"},"returnParameters":{"id":1641,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1640,"name":"","nodeType":"VariableDeclaration","scope":1647,"src":"1986:4:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1639,"name":"uint","nodeType":"ElementaryTypeName","src":"1986:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1985:6:7"},"scope":1992,"src":"1933:111:7","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":{"id":1658,"nodeType":"Block","src":"2461:62:7","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1655,"name":"redeemAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1649,"src":"2503:12:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1654,"name":"redeemUnderlyingInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3776,"src":"2478:24:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":1656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2478:38:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1653,"id":1657,"nodeType":"Return","src":"2471:45:7"}]},"documentation":"@notice Sender redeems cTokens in exchange for a specified amount of underlying asset\n@dev Accrues interest whether or not the operation succeeds, unless reverted\n@param redeemAmount The amount of underlying to redeem\n@return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)","id":1659,"implemented":true,"kind":"function","modifiers":[],"name":"redeemUnderlying","nodeType":"FunctionDefinition","parameters":{"id":1650,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1649,"name":"redeemAmount","nodeType":"VariableDeclaration","scope":1659,"src":"2418:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1648,"name":"uint","nodeType":"ElementaryTypeName","src":"2418:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2417:19:7"},"returnParameters":{"id":1653,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1652,"name":"","nodeType":"VariableDeclaration","scope":1659,"src":"2455:4:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1651,"name":"uint","nodeType":"ElementaryTypeName","src":"2455:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2454:6:7"},"scope":1992,"src":"2392:131:7","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":{"id":1670,"nodeType":"Block","src":"2843:52:7","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1667,"name":"borrowAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1661,"src":"2875:12:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1666,"name":"borrowInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4136,"src":"2860:14:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":1668,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2860:28:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1665,"id":1669,"nodeType":"Return","src":"2853:35:7"}]},"documentation":"@notice Sender borrows assets from the protocol to their own address\n@param borrowAmount The amount of the underlying asset to borrow\n@return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)","id":1671,"implemented":true,"kind":"function","modifiers":[],"name":"borrow","nodeType":"FunctionDefinition","parameters":{"id":1662,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1661,"name":"borrowAmount","nodeType":"VariableDeclaration","scope":1671,"src":"2800:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1660,"name":"uint","nodeType":"ElementaryTypeName","src":"2800:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2799:19:7"},"returnParameters":{"id":1665,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1664,"name":"","nodeType":"VariableDeclaration","scope":1671,"src":"2837:4:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1663,"name":"uint","nodeType":"ElementaryTypeName","src":"2837:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2836:6:7"},"scope":1992,"src":"2784:111:7","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":{"id":1686,"nodeType":"Block","src":"3040:112:7","statements":[{"assignments":[1675,null],"declarations":[{"constant":false,"id":1675,"name":"err","nodeType":"VariableDeclaration","scope":1686,"src":"3051:8:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1674,"name":"uint","nodeType":"ElementaryTypeName","src":"3051:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},null],"id":1680,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":1677,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"3084:3:7","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","referencedDeclaration":null,"src":"3084:9:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1676,"name":"repayBorrowInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4409,"src":"3064:19:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (uint256) returns (uint256,uint256)"}},"id":1679,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3064:30:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"3050:44:7"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1682,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1675,"src":"3119:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"7265706179426f72726f77206661696c6564","id":1683,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3124:20:7","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_cbc0320030fd505143f94463969fe29ebd4f928aabfd0cbc88253079d4c076d1","typeString":"literal_string \"repayBorrow failed\""},"value":"repayBorrow failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_cbc0320030fd505143f94463969fe29ebd4f928aabfd0cbc88253079d4c076d1","typeString":"literal_string \"repayBorrow failed\""}],"id":1681,"name":"requireNoError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1991,"src":"3104:14:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_string_memory_ptr_$returns$__$","typeString":"function (uint256,string memory) pure"}},"id":1684,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3104:41:7","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1685,"nodeType":"ExpressionStatement","src":"3104:41:7"}]},"documentation":"@notice Sender repays their own borrow\n@dev Reverts upon any failure","id":1687,"implemented":true,"kind":"function","modifiers":[],"name":"repayBorrow","nodeType":"FunctionDefinition","parameters":{"id":1672,"nodeType":"ParameterList","parameters":[],"src":"3020:2:7"},"returnParameters":{"id":1673,"nodeType":"ParameterList","parameters":[],"src":"3040:0:7"},"scope":1992,"src":"3000:152:7","stateMutability":"payable","superFunction":null,"visibility":"external"},{"body":{"id":1705,"nodeType":"Block","src":"3398:134:7","statements":[{"assignments":[1693,null],"declarations":[{"constant":false,"id":1693,"name":"err","nodeType":"VariableDeclaration","scope":1705,"src":"3409:8:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1692,"name":"uint","nodeType":"ElementaryTypeName","src":"3409:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},null],"id":1699,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1695,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1689,"src":"3448:8:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":1696,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"3458:3:7","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1697,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","referencedDeclaration":null,"src":"3458:9:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1694,"name":"repayBorrowBehalfInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4454,"src":"3422:25:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (address,uint256) returns (uint256,uint256)"}},"id":1698,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3422:46:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"3408:60:7"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1701,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1693,"src":"3493:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"7265706179426f72726f77426568616c66206661696c6564","id":1702,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3498:26:7","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_d4691b01e3c08567469097176368c23bcb592f788fefdc9ffd84d4c950b22ec5","typeString":"literal_string \"repayBorrowBehalf failed\""},"value":"repayBorrowBehalf failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_d4691b01e3c08567469097176368c23bcb592f788fefdc9ffd84d4c950b22ec5","typeString":"literal_string \"repayBorrowBehalf failed\""}],"id":1700,"name":"requireNoError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1991,"src":"3478:14:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_string_memory_ptr_$returns$__$","typeString":"function (uint256,string memory) pure"}},"id":1703,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3478:47:7","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1704,"nodeType":"ExpressionStatement","src":"3478:47:7"}]},"documentation":"@notice Sender repays a borrow belonging to borrower\n@dev Reverts upon any failure\n@param borrower the account with the debt being payed off","id":1706,"implemented":true,"kind":"function","modifiers":[],"name":"repayBorrowBehalf","nodeType":"FunctionDefinition","parameters":{"id":1690,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1689,"name":"borrower","nodeType":"VariableDeclaration","scope":1706,"src":"3363:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1688,"name":"address","nodeType":"ElementaryTypeName","src":"3363:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"3362:18:7"},"returnParameters":{"id":1691,"nodeType":"ParameterList","parameters":[],"src":"3398:0:7"},"scope":1992,"src":"3336:196:7","stateMutability":"payable","superFunction":null,"visibility":"external"},{"body":{"id":1727,"nodeType":"Block","src":"3960:148:7","statements":[{"assignments":[1714,null],"declarations":[{"constant":false,"id":1714,"name":"err","nodeType":"VariableDeclaration","scope":1727,"src":"3971:8:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1713,"name":"uint","nodeType":"ElementaryTypeName","src":"3971:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},null],"id":1721,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1716,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1708,"src":"4008:8:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":1717,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"4018:3:7","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1718,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","referencedDeclaration":null,"src":"4018:9:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":1719,"name":"cTokenCollateral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1710,"src":"4029:16:7","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":1715,"name":"liquidateBorrowInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4758,"src":"3984:23:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_contract$_CTokenInterface_$6556_$returns$_t_uint256_$_t_uint256_$","typeString":"function (address,uint256,contract CTokenInterface) returns (uint256,uint256)"}},"id":1720,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3984:62:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"3970:76:7"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1723,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1714,"src":"4071:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"6c6971756964617465426f72726f77206661696c6564","id":1724,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4076:24:7","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_8368d8c1033f63b0f7ff0ee8a8a85b929ea25bfefeb6e5f20dd14cd9fcea3868","typeString":"literal_string \"liquidateBorrow failed\""},"value":"liquidateBorrow failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_8368d8c1033f63b0f7ff0ee8a8a85b929ea25bfefeb6e5f20dd14cd9fcea3868","typeString":"literal_string \"liquidateBorrow failed\""}],"id":1722,"name":"requireNoError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1991,"src":"4056:14:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_string_memory_ptr_$returns$__$","typeString":"function (uint256,string memory) pure"}},"id":1725,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4056:45:7","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1726,"nodeType":"ExpressionStatement","src":"4056:45:7"}]},"documentation":"@notice The sender liquidates the borrowers collateral.\n The collateral seized is transferred to the liquidator.\n@dev Reverts upon any failure\n@param borrower The borrower of this cToken to be liquidated\n@param cTokenCollateral The market in which to seize collateral from the borrower","id":1728,"implemented":true,"kind":"function","modifiers":[],"name":"liquidateBorrow","nodeType":"FunctionDefinition","parameters":{"id":1711,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1708,"name":"borrower","nodeType":"VariableDeclaration","scope":1728,"src":"3900:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1707,"name":"address","nodeType":"ElementaryTypeName","src":"3900:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":1710,"name":"cTokenCollateral","nodeType":"VariableDeclaration","scope":1728,"src":"3918:23:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},"typeName":{"contractScope":null,"id":1709,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"3918:6:7","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"value":null,"visibility":"internal"}],"src":"3899:43:7"},"returnParameters":{"id":1712,"nodeType":"ParameterList","parameters":[],"src":"3960:0:7"},"scope":1992,"src":"3875:233:7","stateMutability":"payable","superFunction":null,"visibility":"external"},{"body":{"id":1743,"nodeType":"Block","src":"4203:98:7","statements":[{"assignments":[1732,null],"declarations":[{"constant":false,"id":1732,"name":"err","nodeType":"VariableDeclaration","scope":1743,"src":"4214:8:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1731,"name":"uint","nodeType":"ElementaryTypeName","src":"4214:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},null],"id":1737,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":1734,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"4240:3:7","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","referencedDeclaration":null,"src":"4240:9:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1733,"name":"mintInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3491,"src":"4227:12:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (uint256) returns (uint256,uint256)"}},"id":1736,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4227:23:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"4213:37:7"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1739,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1732,"src":"4275:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"6d696e74206661696c6564","id":1740,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4280:13:7","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_594ff2dfc35e5b8979a04d047bc1811cd0832013e67a9ef5bc97a173e7a27efb","typeString":"literal_string \"mint failed\""},"value":"mint failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_594ff2dfc35e5b8979a04d047bc1811cd0832013e67a9ef5bc97a173e7a27efb","typeString":"literal_string \"mint failed\""}],"id":1738,"name":"requireNoError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1991,"src":"4260:14:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_string_memory_ptr_$returns$__$","typeString":"function (uint256,string memory) pure"}},"id":1741,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4260:34:7","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1742,"nodeType":"ExpressionStatement","src":"4260:34:7"}]},"documentation":"@notice Send Ether to CEther to mint","id":1744,"implemented":true,"kind":"fallback","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":1729,"nodeType":"ParameterList","parameters":[],"src":"4183:2:7"},"returnParameters":{"id":1730,"nodeType":"ParameterList","parameters":[],"src":"4203:0:7"},"scope":1992,"src":"4174:127:7","stateMutability":"payable","superFunction":null,"visibility":"external"},{"body":{"id":1771,"nodeType":"Block","src":"4613:174:7","statements":[{"assignments":[1750,1752],"declarations":[{"constant":false,"id":1750,"name":"err","nodeType":"VariableDeclaration","scope":1771,"src":"4624:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"typeName":{"contractScope":null,"id":1749,"name":"MathError","nodeType":"UserDefinedTypeName","referencedDeclaration":6659,"src":"4624:9:7","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"value":null,"visibility":"internal"},{"constant":false,"id":1752,"name":"startingBalance","nodeType":"VariableDeclaration","scope":1771,"src":"4639:20:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1751,"name":"uint","nodeType":"ElementaryTypeName","src":"4639:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":1761,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1755,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22638,"src":"4679:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_CEther_$1992","typeString":"contract CEther"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CEther_$1992","typeString":"contract CEther"}],"id":1754,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4671:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":1756,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4671:13:7","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":1757,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balance","nodeType":"MemberAccess","referencedDeclaration":null,"src":"4671:21:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":1758,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"4694:3:7","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","referencedDeclaration":null,"src":"4694:9:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1753,"name":"subUInt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6764,"src":"4663:7:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (enum CarefulMath.MathError,uint256)"}},"id":1760,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4663:41:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"4623:81:7"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"id":1766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":1763,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1750,"src":"4722:3:7","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":1764,"name":"MathError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6659,"src":"4729:9:7","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MathError_$6659_$","typeString":"type(enum CarefulMath.MathError)"}},"id":1765,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"4729:18:7","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"src":"4722:25:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1762,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22553,"src":"4714:7:7","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":1767,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4714:34:7","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1768,"nodeType":"ExpressionStatement","src":"4714:34:7"},{"expression":{"argumentTypes":null,"id":1769,"name":"startingBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1752,"src":"4765:15:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1748,"id":1770,"nodeType":"Return","src":"4758:22:7"}]},"documentation":"@notice Gets balance of this contract in terms of Ether, before this message\n@dev This excludes the value of the current message, if any\n@return The quantity of Ether owned by this contract","id":1772,"implemented":true,"kind":"function","modifiers":[],"name":"getCashPrior","nodeType":"FunctionDefinition","parameters":{"id":1745,"nodeType":"ParameterList","parameters":[],"src":"4581:2:7"},"returnParameters":{"id":1748,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1747,"name":"","nodeType":"VariableDeclaration","scope":1772,"src":"4607:4:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1746,"name":"uint","nodeType":"ElementaryTypeName","src":"4607:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"4606:6:7"},"scope":1992,"src":"4560:227:7","stateMutability":"view","superFunction":6075,"visibility":"internal"},{"body":{"id":1799,"nodeType":"Block","src":"5093:167:7","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1785,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":1782,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"5136:3:7","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"5136:10:7","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":1784,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1774,"src":"5150:4:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5136:18:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"73656e646572206d69736d61746368","id":1786,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5156:17:7","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_76ec10cda3ed0448251fb76d48fe16588d83090ec2a7e812497abe453bd3a227","typeString":"literal_string \"sender mismatch\""},"value":"sender mismatch"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_76ec10cda3ed0448251fb76d48fe16588d83090ec2a7e812497abe453bd3a227","typeString":"literal_string \"sender mismatch\""}],"id":1781,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"5128:7:7","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1787,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5128:46:7","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1788,"nodeType":"ExpressionStatement","src":"5128:46:7"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1793,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":1790,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"5192:3:7","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1791,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","referencedDeclaration":null,"src":"5192:9:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":1792,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1776,"src":"5205:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5192:19:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"76616c7565206d69736d61746368","id":1794,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5213:16:7","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_7751e5e526b2328b6bcb95abb71083ab9494d56ba4b478aaf40eba9688e65b52","typeString":"literal_string \"value mismatch\""},"value":"value mismatch"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7751e5e526b2328b6bcb95abb71083ab9494d56ba4b478aaf40eba9688e65b52","typeString":"literal_string \"value mismatch\""}],"id":1789,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"5184:7:7","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1795,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5184:46:7","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1796,"nodeType":"ExpressionStatement","src":"5184:46:7"},{"expression":{"argumentTypes":null,"id":1797,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1776,"src":"5247:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1780,"id":1798,"nodeType":"Return","src":"5240:13:7"}]},"documentation":"@notice Perform the actual transfer in, which is a no-op\n@param from Address sending the Ether\n@param amount Amount of Ether being sent\n@return The actual amount of Ether transferred","id":1800,"implemented":true,"kind":"function","modifiers":[],"name":"doTransferIn","nodeType":"FunctionDefinition","parameters":{"id":1777,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1774,"name":"from","nodeType":"VariableDeclaration","scope":1800,"src":"5042:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1773,"name":"address","nodeType":"ElementaryTypeName","src":"5042:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":1776,"name":"amount","nodeType":"VariableDeclaration","scope":1800,"src":"5056:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1775,"name":"uint","nodeType":"ElementaryTypeName","src":"5056:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"5041:27:7"},"returnParameters":{"id":1780,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1779,"name":"","nodeType":"VariableDeclaration","scope":1800,"src":"5087:4:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1778,"name":"uint","nodeType":"ElementaryTypeName","src":"5087:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"5086:6:7"},"scope":1992,"src":"5020:240:7","stateMutability":"nonpayable","superFunction":6084,"visibility":"internal"},{"body":{"id":1813,"nodeType":"Block","src":"5331:84:7","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1810,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1804,"src":"5401:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":1807,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1802,"src":"5389:2:7","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":1809,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":null,"src":"5389:11:7","typeDescriptions":{"typeIdentifier":"t_function_transfer_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":1811,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5389:19:7","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1812,"nodeType":"ExpressionStatement","src":"5389:19:7"}]},"documentation":null,"id":1814,"implemented":true,"kind":"function","modifiers":[],"name":"doTransferOut","nodeType":"FunctionDefinition","parameters":{"id":1805,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1802,"name":"to","nodeType":"VariableDeclaration","scope":1814,"src":"5289:18:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":1801,"name":"address","nodeType":"ElementaryTypeName","src":"5289:15:7","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"value":null,"visibility":"internal"},{"constant":false,"id":1804,"name":"amount","nodeType":"VariableDeclaration","scope":1814,"src":"5309:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1803,"name":"uint","nodeType":"ElementaryTypeName","src":"5309:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"5288:33:7"},"returnParameters":{"id":1806,"nodeType":"ParameterList","parameters":[],"src":"5331:0:7"},"scope":1992,"src":"5266:149:7","stateMutability":"nonpayable","superFunction":6091,"visibility":"internal"},{"body":{"id":1990,"nodeType":"Block","src":"5496:757:7","statements":[{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1826,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":1821,"name":"errCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1816,"src":"5510:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":1823,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"5526:5:7","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":1824,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"5526:14:7","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}],"id":1822,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5521:4:7","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":1825,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5521:20:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5510:31:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":1829,"nodeType":"IfStatement","src":"5506:68:7","trueBody":{"id":1828,"nodeType":"Block","src":"5543:31:7","statements":[{"expression":null,"functionReturnParameters":1820,"id":1827,"nodeType":"Return","src":"5557:7:7"}]}},{"assignments":[1831],"declarations":[{"constant":false,"id":1831,"name":"fullMessage","nodeType":"VariableDeclaration","scope":1990,"src":"5584:24:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1830,"name":"bytes","nodeType":"ElementaryTypeName","src":"5584:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"}],"id":1841,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1835,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1818,"src":"5627:7:7","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1834,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5621:5:7","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":"bytes"},"id":1836,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5621:14:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"5621:21:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"argumentTypes":null,"hexValue":"37","id":1838,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5645:1:7","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"},"value":"7"},"src":"5621:25:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1833,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"5611:9:7","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":1832,"name":"bytes","nodeType":"ElementaryTypeName","src":"5615:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":1840,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5611:36:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"5584:63:7"},{"assignments":[1843],"declarations":[{"constant":false,"id":1843,"name":"i","nodeType":"VariableDeclaration","scope":1990,"src":"5657:6:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1842,"name":"uint","nodeType":"ElementaryTypeName","src":"5657:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":1844,"initialValue":null,"nodeType":"VariableDeclarationStatement","src":"5657:6:7"},{"body":{"id":1868,"nodeType":"Block","src":"5718:59:7","statements":[{"expression":{"argumentTypes":null,"id":1866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":1858,"name":"fullMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1831,"src":"5732:11:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1860,"indexExpression":{"argumentTypes":null,"id":1859,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1843,"src":"5744:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5732:14:7","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1862,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1818,"src":"5755:7:7","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1861,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5749:5:7","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":"bytes"},"id":1863,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5749:14:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1865,"indexExpression":{"argumentTypes":null,"id":1864,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1843,"src":"5764:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5749:17:7","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"5732:34:7","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1867,"nodeType":"ExpressionStatement","src":"5732:34:7"}]},"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":1849,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1843,"src":"5686:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1851,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1818,"src":"5696:7:7","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1850,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5690:5:7","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":"bytes"},"id":1852,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5690:14:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1853,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"5690:21:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5686:25:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1869,"initializationExpression":{"expression":{"argumentTypes":null,"id":1847,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":1845,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1843,"src":"5679:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"hexValue":"30","id":1846,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5683:1:7","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5679:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1848,"nodeType":"ExpressionStatement","src":"5679:5:7"},"loopExpression":{"expression":{"argumentTypes":null,"id":1856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"5713:3:7","subExpression":{"argumentTypes":null,"id":1855,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1843,"src":"5713:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1857,"nodeType":"ExpressionStatement","src":"5713:3:7"},"nodeType":"ForStatement","src":"5674:103:7"},{"expression":{"argumentTypes":null,"id":1880,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":1870,"name":"fullMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1831,"src":"5787:11:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1874,"indexExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1873,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":1871,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1843,"src":"5799:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"argumentTypes":null,"hexValue":"30","id":1872,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5801:1:7","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5799:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5787:16:7","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"3332","id":1877,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5817:2:7","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"id":1876,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5811:5:7","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":"uint8"},"id":1878,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5811:9:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":1875,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5806:4:7","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":"byte"},"id":1879,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5806:15:7","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"5787:34:7","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1881,"nodeType":"ExpressionStatement","src":"5787:34:7"},{"expression":{"argumentTypes":null,"id":1892,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":1882,"name":"fullMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1831,"src":"5831:11:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1886,"indexExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":1883,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1843,"src":"5843:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"argumentTypes":null,"hexValue":"31","id":1884,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5845:1:7","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5843:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5831:16:7","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"3430","id":1889,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5861:2:7","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},"value":"40"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"}],"id":1888,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5855:5:7","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":"uint8"},"id":1890,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5855:9:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":1887,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5850:4:7","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":"byte"},"id":1891,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5850:15:7","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"5831:34:7","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1893,"nodeType":"ExpressionStatement","src":"5831:34:7"},{"expression":{"argumentTypes":null,"id":1909,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":1894,"name":"fullMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1831,"src":"5875:11:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1898,"indexExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1897,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":1895,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1843,"src":"5887:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"argumentTypes":null,"hexValue":"32","id":1896,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5889:1:7","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"5887:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5875:16:7","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"hexValue":"3438","id":1901,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5905:2:7","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},"value":"48"},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"argumentTypes":null,"components":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1904,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":1902,"name":"errCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1816,"src":"5912:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"argumentTypes":null,"hexValue":"31303030","id":1903,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5922:4:7","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1000_by_1","typeString":"int_const 1000"},"value":"1000"},"src":"5912:14:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1905,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5910:18:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5905:23:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1900,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5899:5:7","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":"uint8"},"id":1907,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5899:30:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":1899,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5894:4:7","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":"byte"},"id":1908,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5894:36:7","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"5875:55:7","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1910,"nodeType":"ExpressionStatement","src":"5875:55:7"},{"expression":{"argumentTypes":null,"id":1928,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":1911,"name":"fullMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1831,"src":"5940:11:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1915,"indexExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1914,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":1912,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1843,"src":"5952:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"argumentTypes":null,"hexValue":"33","id":1913,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5954:1:7","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"5952:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5940:16:7","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"hexValue":"3438","id":1918,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5970:2:7","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},"value":"48"},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"argumentTypes":null,"components":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1923,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":1919,"name":"errCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1816,"src":"5977:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"argumentTypes":null,"hexValue":"313030","id":1920,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5987:3:7","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"5977:13:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"argumentTypes":null,"hexValue":"3130","id":1922,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5993:2:7","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"5977:18:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1924,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5975:22:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5970:27:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1917,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5964:5:7","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":"uint8"},"id":1926,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5964:34:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":1916,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5959:4:7","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":"byte"},"id":1927,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5959:40:7","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"5940:59:7","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1929,"nodeType":"ExpressionStatement","src":"5940:59:7"},{"expression":{"argumentTypes":null,"id":1947,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":1930,"name":"fullMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1831,"src":"6009:11:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1934,"indexExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":1931,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1843,"src":"6021:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"argumentTypes":null,"hexValue":"34","id":1932,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6023:1:7","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"6021:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6009:16:7","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"hexValue":"3438","id":1937,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6039:2:7","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},"value":"48"},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"argumentTypes":null,"components":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1942,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1940,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":1938,"name":"errCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1816,"src":"6046:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"argumentTypes":null,"hexValue":"3130","id":1939,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6056:2:7","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"6046:12:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"argumentTypes":null,"hexValue":"3130","id":1941,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6061:2:7","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"6046:17:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1943,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6044:21:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6039:26:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1936,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6033:5:7","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":"uint8"},"id":1945,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6033:33:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":1935,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6028:4:7","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":"byte"},"id":1946,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6028:39:7","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"6009:58:7","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1948,"nodeType":"ExpressionStatement","src":"6009:58:7"},{"expression":{"argumentTypes":null,"id":1964,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":1949,"name":"fullMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1831,"src":"6077:11:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1953,"indexExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1952,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":1950,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1843,"src":"6089:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"argumentTypes":null,"hexValue":"35","id":1951,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6091:1:7","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"6089:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6077:16:7","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1961,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"hexValue":"3438","id":1956,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6107:2:7","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},"value":"48"},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"argumentTypes":null,"components":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1959,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":1957,"name":"errCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1816,"src":"6114:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"argumentTypes":null,"hexValue":"3130","id":1958,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6124:2:7","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"6114:12:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1960,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6112:16:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6107:21:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1955,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6101:5:7","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":"uint8"},"id":1962,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6101:28:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":1954,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6096:4:7","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":"byte"},"id":1963,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6096:34:7","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"6077:53:7","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1965,"nodeType":"ExpressionStatement","src":"6077:53:7"},{"expression":{"argumentTypes":null,"id":1976,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":1966,"name":"fullMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1831,"src":"6140:11:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1970,"indexExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1969,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":1967,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1843,"src":"6152:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"argumentTypes":null,"hexValue":"36","id":1968,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6154:1:7","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_6_by_1","typeString":"int_const 6"},"value":"6"},"src":"6152:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6140:16:7","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"3431","id":1973,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6170:2:7","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_41_by_1","typeString":"int_const 41"},"value":"41"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_41_by_1","typeString":"int_const 41"}],"id":1972,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6164:5:7","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":"uint8"},"id":1974,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6164:9:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":1971,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6159:4:7","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":"byte"},"id":1975,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6159:15:7","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"6140:34:7","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1977,"nodeType":"ExpressionStatement","src":"6140:34:7"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1984,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":1979,"name":"errCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1816,"src":"6193:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":1981,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"6209:5:7","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":1982,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"6209:14:7","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}],"id":1980,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6204:4:7","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":1983,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6204:20:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6193:31:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1986,"name":"fullMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1831,"src":"6233:11:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1985,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6226:6:7","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":"string"},"id":1987,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6226:19:7","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1978,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"6185:7:7","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1988,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6185:61:7","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1989,"nodeType":"ExpressionStatement","src":"6185:61:7"}]},"documentation":null,"id":1991,"implemented":true,"kind":"function","modifiers":[],"name":"requireNoError","nodeType":"FunctionDefinition","parameters":{"id":1819,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1816,"name":"errCode","nodeType":"VariableDeclaration","scope":1991,"src":"5445:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1815,"name":"uint","nodeType":"ElementaryTypeName","src":"5445:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":1818,"name":"message","nodeType":"VariableDeclaration","scope":1991,"src":"5459:21:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1817,"name":"string","nodeType":"ElementaryTypeName","src":"5459:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":null,"visibility":"internal"}],"src":"5444:37:7"},"returnParameters":{"id":1820,"nodeType":"ParameterList","parameters":[],"src":"5496:0:7"},"scope":1992,"src":"5421:832:7","stateMutability":"pure","superFunction":null,"visibility":"internal"}],"scope":1993,"src":"315:5940:7"}],"src":"0:6256:7"},"id":7},"contracts/CEtherDelegate.sol":{"ast":{"absolutePath":"contracts/CEtherDelegate.sol","exportedSymbols":{"CEtherDelegate":[2174]},"id":2175,"nodeType":"SourceUnit","nodes":[{"id":1994,"literals":["solidity","0.5",".17"],"nodeType":"PragmaDirective","src":"0:23:8"},{"absolutePath":"contracts/CEther.sol","file":"./CEther.sol","id":1995,"nodeType":"ImportDirective","scope":2175,"sourceUnit":1993,"src":"25:22:8","symbolAliases":[],"unitAlias":""},{"baseContracts":[{"arguments":null,"baseName":{"contractScope":null,"id":1996,"name":"CDelegateInterface","nodeType":"UserDefinedTypeName","referencedDeclaration":6652,"src":"206:18:8","typeDescriptions":{"typeIdentifier":"t_contract$_CDelegateInterface_$6652","typeString":"contract CDelegateInterface"}},"id":1997,"nodeType":"InheritanceSpecifier","src":"206:18:8"},{"arguments":null,"baseName":{"contractScope":null,"id":1998,"name":"CEther","nodeType":"UserDefinedTypeName","referencedDeclaration":1992,"src":"226:6:8","typeDescriptions":{"typeIdentifier":"t_contract$_CEther_$1992","typeString":"contract CEther"}},"id":1999,"nodeType":"InheritanceSpecifier","src":"226:6:8"}],"contractDependencies":[1992,6186,6204,6271,6556,6559,6623,6626,6652,6837,13849,14371,15066],"contractKind":"contract","documentation":"@title Compound's CEtherDelegate Contract\n@notice CTokens which wrap Ether and are delegated to\n@author Compound","fullyImplemented":true,"id":2174,"linearizedBaseContracts":[2174,1992,6623,6559,6186,13849,14371,15066,6837,6556,6271,6204,6652,6626],"name":"CEtherDelegate","nodeType":"ContractDefinition","nodes":[{"body":{"id":2002,"nodeType":"Block","src":"319:2:8","statements":[]},"documentation":"@notice Construct an empty delegate","id":2003,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":2000,"nodeType":"ParameterList","parameters":[],"src":"309:2:8"},"returnParameters":{"id":2001,"nodeType":"ParameterList","parameters":[],"src":"319:0:8"},"scope":2174,"src":"298:23:8","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":2046,"nodeType":"Block","src":"548:428:8","statements":[{"expression":{"argumentTypes":null,"id":2008,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2005,"src":"593:4:8","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":2009,"nodeType":"ExpressionStatement","src":"593:4:8"},{"condition":{"argumentTypes":null,"hexValue":"66616c7365","id":2010,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"677:5:8","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"falseBody":null,"id":2018,"nodeType":"IfStatement","src":"673:63:8","trueBody":{"id":2017,"nodeType":"Block","src":"684:52:8","statements":[{"expression":{"argumentTypes":null,"id":2015,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":2011,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6625,"src":"698:14:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":2013,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"723:1:8","subdenomination":null,"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":2012,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"715:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":2014,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"715:10:8","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"698:27:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2016,"nodeType":"ExpressionStatement","src":"698:27:8"}]}},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2028,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"id":2025,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":2020,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"754:3:8","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2021,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"754:10:8","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2023,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22640,"src":"776:4:8","typeDescriptions":{"typeIdentifier":"t_contract$_CEtherDelegate_$2174","typeString":"contract CEtherDelegate"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CEtherDelegate_$2174","typeString":"contract CEtherDelegate"}],"id":2022,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"768:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":2024,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"768:13:8","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"754:27:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":2026,"name":"hasAdminRights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2322,"src":"785:14:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":2027,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"785:16:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"754:47:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"2173656c66","id":2029,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"803:7:8","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_99fcef12226bddfa001a37897c86b845052c9f40c17a4893abb01c71a7570fd3","typeString":"literal_string \"!self\""},"value":"!self"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_99fcef12226bddfa001a37897c86b845052c9f40c17a4893abb01c71a7570fd3","typeString":"literal_string \"!self\""}],"id":2019,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"746:7:8","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2030,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"746:65:8","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2031,"nodeType":"ExpressionStatement","src":"746:65:8"},{"expression":{"argumentTypes":null,"id":2036,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":2032,"name":"__admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6199,"src":"877:7:8","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":2034,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"895:1:8","subdenomination":null,"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":2033,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"887:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":2035,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"887:10:8","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"877:20:8","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":2037,"nodeType":"ExpressionStatement","src":"877:20:8"},{"expression":{"argumentTypes":null,"id":2040,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":2038,"name":"__adminHasRights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6203,"src":"907:16:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"hexValue":"66616c7365","id":2039,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"926:5:8","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"907:24:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2041,"nodeType":"ExpressionStatement","src":"907:24:8"},{"expression":{"argumentTypes":null,"id":2044,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":2042,"name":"__fuseAdminHasRights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6201,"src":"941:20:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"hexValue":"66616c7365","id":2043,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"964:5:8","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"941:28:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2045,"nodeType":"ExpressionStatement","src":"941:28:8"}]},"documentation":"@notice Called by the delegator on a delegate to initialize it for duty\n@param data The encoded bytes data for any initialization","id":2047,"implemented":true,"kind":"function","modifiers":[],"name":"_becomeImplementation","nodeType":"FunctionDefinition","parameters":{"id":2006,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2005,"name":"data","nodeType":"VariableDeclaration","scope":2047,"src":"518:19:8","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2004,"name":"bytes","nodeType":"ElementaryTypeName","src":"518:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"}],"src":"517:21:8"},"returnParameters":{"id":2007,"nodeType":"ParameterList","parameters":[],"src":"548:0:8"},"scope":2174,"src":"487:489:8","stateMutability":"nonpayable","superFunction":6648,"visibility":"external"},{"body":{"id":2059,"nodeType":"Block","src":"1123:144:8","statements":[{"condition":{"argumentTypes":null,"hexValue":"66616c7365","id":2050,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1202:5:8","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"falseBody":null,"id":2058,"nodeType":"IfStatement","src":"1198:63:8","trueBody":{"id":2057,"nodeType":"Block","src":"1209:52:8","statements":[{"expression":{"argumentTypes":null,"id":2055,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":2051,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6625,"src":"1223:14:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":2053,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1248:1:8","subdenomination":null,"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":2052,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1240:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":2054,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1240:10:8","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"1223:27:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2056,"nodeType":"ExpressionStatement","src":"1223:27:8"}]}}]},"documentation":"@notice Called by the delegator on a delegate to forfeit its responsibility","id":2060,"implemented":true,"kind":"function","modifiers":[],"name":"_resignImplementation","nodeType":"FunctionDefinition","parameters":{"id":2048,"nodeType":"ParameterList","parameters":[],"src":"1111:2:8"},"returnParameters":{"id":2049,"nodeType":"ParameterList","parameters":[],"src":"1123:0:8"},"scope":2174,"src":"1081:186:8","stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},{"body":{"id":2109,"nodeType":"Block","src":"1782:738:8","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2072,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6625,"src":"1861:14:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":2073,"name":"implementation_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2062,"src":"1877:15:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":2074,"name":"allowResign","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2064,"src":"1894:11:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"argumentTypes":null,"id":2070,"name":"fuseAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6197,"src":"1827:9:8","typeDescriptions":{"typeIdentifier":"t_contract$_IFuseFeeDistributor_$17368","typeString":"contract IFuseFeeDistributor"}},"id":2071,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"cEtherDelegateWhitelist","nodeType":"MemberAccess","referencedDeclaration":17321,"src":"1827:33:8","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$_t_bool_$returns$_t_bool_$","typeString":"function (address,address,bool) view external returns (bool)"}},"id":2075,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1827:79:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"21696d706c","id":2076,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1908:7:8","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_31cc2540e800250cee849529368ea0c124ecc26ea83d3827437bdae7b5b2bbe5","typeString":"literal_string \"!impl\""},"value":"!impl"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_31cc2540e800250cee849529368ea0c124ecc26ea83d3827437bdae7b5b2bbe5","typeString":"literal_string \"!impl\""}],"id":2069,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"1819:7:8","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2077,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1819:97:8","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2078,"nodeType":"ExpressionStatement","src":"1819:97:8"},{"condition":{"argumentTypes":null,"id":2079,"name":"allowResign","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2064,"src":"2003:11:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":2083,"nodeType":"IfStatement","src":"1999:40:8","trueBody":{"expression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":2080,"name":"_resignImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2060,"src":"2016:21:8","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":2081,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2016:23:8","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2082,"nodeType":"ExpressionStatement","src":"2016:23:8"}},{"assignments":[2085],"declarations":[{"constant":false,"id":2085,"name":"oldImplementation","nodeType":"VariableDeclaration","scope":2109,"src":"2084:25:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2084,"name":"address","nodeType":"ElementaryTypeName","src":"2084:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":2087,"initialValue":{"argumentTypes":null,"id":2086,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6625,"src":"2112:14:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2084:42:8"},{"expression":{"argumentTypes":null,"id":2090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":2088,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6625,"src":"2173:14:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":2089,"name":"implementation_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2062,"src":"2190:15:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2173:32:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2091,"nodeType":"ExpressionStatement","src":"2173:32:8"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2094,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22640,"src":"2323:4:8","typeDescriptions":{"typeIdentifier":"t_contract$_CEtherDelegate_$2174","typeString":"contract CEtherDelegate"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CEtherDelegate_$2174","typeString":"contract CEtherDelegate"}],"id":2093,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2315:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":2095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2315:13:8","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"5f6265636f6d65496d706c656d656e746174696f6e28627974657329","id":2098,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2354:30:8","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_56e677285a1553abe1ddb56f43a4f037fd5ff42f7db26a312647701fa38bb76a","typeString":"literal_string \"_becomeImplementation(bytes)\""},"value":"_becomeImplementation(bytes)"},{"argumentTypes":null,"id":2099,"name":"becomeImplementationData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2066,"src":"2386:24:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_56e677285a1553abe1ddb56f43a4f037fd5ff42f7db26a312647701fa38bb76a","typeString":"literal_string \"_becomeImplementation(bytes)\""},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":null,"id":2096,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22537,"src":"2330:3:8","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2097,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSignature","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2330:23:8","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (string memory) pure returns (bytes memory)"}},"id":2100,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2330:81:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"argumentTypes":null,"hexValue":"216265636f6d65","id":2101,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2413:9:8","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_21ba693a16b03036ab7b5d92d2019ddd94cd375589ed02a1dfdbc0fbd8b8f01c","typeString":"literal_string \"!become\""},"value":"!become"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_21ba693a16b03036ab7b5d92d2019ddd94cd375589ed02a1dfdbc0fbd8b8f01c","typeString":"literal_string \"!become\""}],"id":2092,"name":"_functionCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6185,"src":"2301:13:8","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":2102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2301:122:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2103,"nodeType":"ExpressionStatement","src":"2301:122:8"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2105,"name":"oldImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2085,"src":"2479:17:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":2106,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6625,"src":"2498:14:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2104,"name":"NewImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6634,"src":"2461:17:8","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":2107,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2461:52:8","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2108,"nodeType":"EmitStatement","src":"2456:57:8"}]},"documentation":"@dev Internal function to update the implementation of the delegator\n@param implementation_ The address of the new implementation for delegation\n@param allowResign Flag to indicate whether to call _resignImplementation on the old implementation\n@param becomeImplementationData The encoded bytes data to be passed to _becomeImplementation","id":2110,"implemented":true,"kind":"function","modifiers":[],"name":"_setImplementationInternal","nodeType":"FunctionDefinition","parameters":{"id":2067,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2062,"name":"implementation_","nodeType":"VariableDeclaration","scope":2110,"src":"1691:23:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2061,"name":"address","nodeType":"ElementaryTypeName","src":"1691:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":2064,"name":"allowResign","nodeType":"VariableDeclaration","scope":2110,"src":"1716:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2063,"name":"bool","nodeType":"ElementaryTypeName","src":"1716:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},{"constant":false,"id":2066,"name":"becomeImplementationData","nodeType":"VariableDeclaration","scope":2110,"src":"1734:37:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2065,"name":"bytes","nodeType":"ElementaryTypeName","src":"1734:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"}],"src":"1690:82:8"},"returnParameters":{"id":2068,"nodeType":"ParameterList","parameters":[],"src":"1782:0:8"},"scope":2174,"src":"1655:865:8","stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},{"body":{"id":2131,"nodeType":"Block","src":"3038:205:8","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":2120,"name":"hasAdminRights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2322,"src":"3086:14:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":2121,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3086:16:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"2161646d696e","id":2122,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3104:8:8","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_6667ace22dd98447442aa1dd1bb7c3c14e3b3d8cd11c223a5dee7cf022a93e62","typeString":"literal_string \"!admin\""},"value":"!admin"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6667ace22dd98447442aa1dd1bb7c3c14e3b3d8cd11c223a5dee7cf022a93e62","typeString":"literal_string \"!admin\""}],"id":2119,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"3078:7:8","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2123,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3078:35:8","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2124,"nodeType":"ExpressionStatement","src":"3078:35:8"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2126,"name":"implementation_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2112,"src":"3181:15:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":2127,"name":"allowResign","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2114,"src":"3198:11:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"id":2128,"name":"becomeImplementationData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2116,"src":"3211:24:8","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":2125,"name":"_setImplementationInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2110,"src":"3154:26:8","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bool_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bool,bytes memory)"}},"id":2129,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3154:82:8","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2130,"nodeType":"ExpressionStatement","src":"3154:82:8"}]},"documentation":"@notice Called by the admin to update the implementation of the delegator\n@param implementation_ The address of the new implementation for delegation\n@param allowResign Flag to indicate whether to call _resignImplementation on the old implementation\n@param becomeImplementationData The encoded bytes data to be passed to _becomeImplementation","id":2132,"implemented":true,"kind":"function","modifiers":[],"name":"_setImplementationSafe","nodeType":"FunctionDefinition","parameters":{"id":2117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2112,"name":"implementation_","nodeType":"VariableDeclaration","scope":2132,"src":"2945:23:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2111,"name":"address","nodeType":"ElementaryTypeName","src":"2945:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":2114,"name":"allowResign","nodeType":"VariableDeclaration","scope":2132,"src":"2970:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2113,"name":"bool","nodeType":"ElementaryTypeName","src":"2970:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},{"constant":false,"id":2116,"name":"becomeImplementationData","nodeType":"VariableDeclaration","scope":2132,"src":"2988:39:8","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2115,"name":"bytes","nodeType":"ElementaryTypeName","src":"2988:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"}],"src":"2944:84:8"},"returnParameters":{"id":2118,"nodeType":"ParameterList","parameters":[],"src":"3038:0:8"},"scope":2174,"src":"2913:330:8","stateMutability":"nonpayable","superFunction":6643,"visibility":"external"},{"body":{"id":2172,"nodeType":"Block","src":"3459:422:8","statements":[{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"id":2140,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":2135,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"3473:3:8","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"3473:10:8","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2138,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22640,"src":"3495:4:8","typeDescriptions":{"typeIdentifier":"t_contract$_CEtherDelegate_$2174","typeString":"contract CEtherDelegate"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CEtherDelegate_$2174","typeString":"contract CEtherDelegate"}],"id":2137,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3487:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":2139,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3487:13:8","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"3473:27:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2143,"name":"comptroller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6224,"src":"3533:11:8","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerInterface_$12980","typeString":"contract ComptrollerInterface"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ComptrollerInterface_$12980","typeString":"contract ComptrollerInterface"}],"id":2142,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3525:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":2144,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3525:20:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2141,"name":"ComptrollerV3Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13136,"src":"3504:20:8","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ComptrollerV3Storage_$13136_$","typeString":"type(contract ComptrollerV3Storage)"}},"id":2145,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3504:42:8","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerV3Storage_$13136","typeString":"contract ComptrollerV3Storage"}},"id":2146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"autoImplementation","nodeType":"MemberAccess","referencedDeclaration":13118,"src":"3504:61:8","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bool_$","typeString":"function () view external returns (bool)"}},"id":2147,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3504:63:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3473:94:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":2171,"nodeType":"IfStatement","src":"3469:406:8","trueBody":{"id":2170,"nodeType":"Block","src":"3569:306:8","statements":[{"assignments":[2150,2152,2154],"declarations":[{"constant":false,"id":2150,"name":"latestCEtherDelegate","nodeType":"VariableDeclaration","scope":2170,"src":"3584:28:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2149,"name":"address","nodeType":"ElementaryTypeName","src":"3584:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":2152,"name":"allowResign","nodeType":"VariableDeclaration","scope":2170,"src":"3614:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2151,"name":"bool","nodeType":"ElementaryTypeName","src":"3614:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},{"constant":false,"id":2154,"name":"becomeImplementationData","nodeType":"VariableDeclaration","scope":2170,"src":"3632:37:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2153,"name":"bytes","nodeType":"ElementaryTypeName","src":"3632:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"}],"id":2159,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2157,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6625,"src":"3704:14:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":2155,"name":"fuseAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6197,"src":"3673:9:8","typeDescriptions":{"typeIdentifier":"t_contract$_IFuseFeeDistributor_$17368","typeString":"contract IFuseFeeDistributor"}},"id":2156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"latestCEtherDelegate","nodeType":"MemberAccess","referencedDeclaration":17350,"src":"3673:30:8","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_address_$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (address) view external returns (address,bool,bytes memory)"}},"id":2158,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3673:46:8","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(address,bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"3583:136:8"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":2160,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6625,"src":"3737:14:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"id":2161,"name":"latestCEtherDelegate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2150,"src":"3755:20:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3737:38:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":2169,"nodeType":"IfStatement","src":"3733:131:8","trueBody":{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2164,"name":"latestCEtherDelegate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2150,"src":"3804:20:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":2165,"name":"allowResign","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2152,"src":"3826:11:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"id":2166,"name":"becomeImplementationData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2154,"src":"3839:24:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2163,"name":"_setImplementationInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2110,"src":"3777:26:8","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bool_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bool,bytes memory)"}},"id":2167,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3777:87:8","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2168,"nodeType":"ExpressionStatement","src":"3777:87:8"}}]}}]},"documentation":"@notice Function called before all delegator functions\n@dev Checks comptroller.autoImplementation and upgrades the implementation if necessary","id":2173,"implemented":true,"kind":"function","modifiers":[],"name":"_prepare","nodeType":"FunctionDefinition","parameters":{"id":2133,"nodeType":"ParameterList","parameters":[],"src":"3439:2:8"},"returnParameters":{"id":2134,"nodeType":"ParameterList","parameters":[],"src":"3459:0:8"},"scope":2174,"src":"3422:459:8","stateMutability":"payable","superFunction":6651,"visibility":"external"}],"scope":2175,"src":"179:3704:8"}],"src":"0:3884:8"},"id":8},"contracts/CEtherDelegator.sol":{"ast":{"absolutePath":"contracts/CEtherDelegator.sol","exportedSymbols":{"CEtherDelegator":[2269]},"id":2270,"nodeType":"SourceUnit","nodes":[{"id":2176,"literals":["solidity","0.5",".17"],"nodeType":"PragmaDirective","src":"0:23:9"},{"absolutePath":"contracts/CTokenInterfaces.sol","file":"./CTokenInterfaces.sol","id":2177,"nodeType":"ImportDirective","scope":2270,"sourceUnit":6653,"src":"25:32:9","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/ComptrollerStorage.sol","file":"./ComptrollerStorage.sol","id":2178,"nodeType":"ImportDirective","scope":2270,"sourceUnit":13137,"src":"58:34:9","symbolAliases":[],"unitAlias":""},{"baseContracts":[{"arguments":null,"baseName":{"contractScope":null,"id":2179,"name":"CDelegationStorage","nodeType":"UserDefinedTypeName","referencedDeclaration":6626,"src":"266:18:9","typeDescriptions":{"typeIdentifier":"t_contract$_CDelegationStorage_$6626","typeString":"contract CDelegationStorage"}},"id":2180,"nodeType":"InheritanceSpecifier","src":"266:18:9"}],"contractDependencies":[6626],"contractKind":"contract","documentation":"@title Compound's CEtherDelegator Contract\n@notice CTokens which wrap Ether and delegate to an implementation\n@author Compound","fullyImplemented":true,"id":2269,"linearizedBaseContracts":[2269,6626],"name":"CEtherDelegator","nodeType":"ContractDefinition","nodes":[{"body":{"id":2224,"nodeType":"Block","src":"1126:904:9","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2200,"name":"implementation_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2190,"src":"1230:15:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"696e697469616c697a6528616464726573732c616464726573732c737472696e672c737472696e672c75696e743235362c75696e7432353629","id":2203,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1271:59:9","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_79c2c95442d611d4de2543bd5f521cb5d737764a97f39c2fc4196a869deff2fd","typeString":"literal_string \"initialize(address,address,string,string,uint256,uint256)\""},"value":"initialize(address,address,string,string,uint256,uint256)"},{"argumentTypes":null,"id":2204,"name":"comptroller_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2182,"src":"1392:12:9","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerInterface_$12980","typeString":"contract ComptrollerInterface"}},{"argumentTypes":null,"id":2205,"name":"interestRateModel_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2184,"src":"1466:18:9","typeDescriptions":{"typeIdentifier":"t_contract$_InterestRateModel_$17398","typeString":"contract InterestRateModel"}},{"argumentTypes":null,"id":2206,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2186,"src":"1546:5:9","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"argumentTypes":null,"id":2207,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2188,"src":"1613:7:9","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"argumentTypes":null,"id":2208,"name":"reserveFactorMantissa_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2194,"src":"1682:22:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":2209,"name":"adminFeeMantissa_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2196,"src":"1766:17:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_79c2c95442d611d4de2543bd5f521cb5d737764a97f39c2fc4196a869deff2fd","typeString":"literal_string \"initialize(address,address,string,string,uint256,uint256)\""},{"typeIdentifier":"t_contract$_ComptrollerInterface_$12980","typeString":"contract ComptrollerInterface"},{"typeIdentifier":"t_contract$_InterestRateModel_$17398","typeString":"contract InterestRateModel"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":2201,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22537,"src":"1247:3:9","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2202,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSignature","nodeType":"MemberAccess","referencedDeclaration":null,"src":"1247:23:9","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (string memory) pure returns (bytes memory)"}},"id":2210,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1247:537:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2199,"name":"delegateTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2247,"src":"1219:10:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory) returns (bytes memory)"}},"id":2211,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1219:566:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2212,"nodeType":"ExpressionStatement","src":"1219:566:9"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2214,"name":"implementation_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2190,"src":"1886:15:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"5f736574496d706c656d656e746174696f6e5361666528616464726573732c626f6f6c2c627974657329","id":2217,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1927:44:9","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_50d85b733f2864bd055c7f166804070c052ce429bae27cc8b031eefe70571ba6","typeString":"literal_string \"_setImplementationSafe(address,bool,bytes)\""},"value":"_setImplementationSafe(address,bool,bytes)"},{"argumentTypes":null,"id":2218,"name":"implementation_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2190,"src":"1973:15:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"hexValue":"66616c7365","id":2219,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1990:5:9","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"argumentTypes":null,"id":2220,"name":"becomeImplementationData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2192,"src":"1997:24:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_50d85b733f2864bd055c7f166804070c052ce429bae27cc8b031eefe70571ba6","typeString":"literal_string \"_setImplementationSafe(address,bool,bytes)\""},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":null,"id":2215,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22537,"src":"1903:3:9","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2216,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSignature","nodeType":"MemberAccess","referencedDeclaration":null,"src":"1903:23:9","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (string memory) pure returns (bytes memory)"}},"id":2221,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1903:119:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2213,"name":"delegateTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2247,"src":"1875:10:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory) returns (bytes memory)"}},"id":2222,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1875:148:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2223,"nodeType":"ExpressionStatement","src":"1875:148:9"}]},"documentation":"@notice Construct a new CEther money market\n@param comptroller_ The address of the Comptroller\n@param interestRateModel_ The address of the interest rate model\n@param name_ ERC-20 name of this token\n@param symbol_ ERC-20 symbol of this token\n@param implementation_ The address of the implementation the contract delegates to\n@param becomeImplementationData The encoded args for becomeImplementation","id":2225,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":2197,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2182,"name":"comptroller_","nodeType":"VariableDeclaration","scope":2225,"src":"767:33:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerInterface_$12980","typeString":"contract ComptrollerInterface"},"typeName":{"contractScope":null,"id":2181,"name":"ComptrollerInterface","nodeType":"UserDefinedTypeName","referencedDeclaration":12980,"src":"767:20:9","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerInterface_$12980","typeString":"contract ComptrollerInterface"}},"value":null,"visibility":"internal"},{"constant":false,"id":2184,"name":"interestRateModel_","nodeType":"VariableDeclaration","scope":2225,"src":"818:36:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_InterestRateModel_$17398","typeString":"contract InterestRateModel"},"typeName":{"contractScope":null,"id":2183,"name":"InterestRateModel","nodeType":"UserDefinedTypeName","referencedDeclaration":17398,"src":"818:17:9","typeDescriptions":{"typeIdentifier":"t_contract$_InterestRateModel_$17398","typeString":"contract InterestRateModel"}},"value":null,"visibility":"internal"},{"constant":false,"id":2186,"name":"name_","nodeType":"VariableDeclaration","scope":2225,"src":"872:19:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2185,"name":"string","nodeType":"ElementaryTypeName","src":"872:6:9","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":null,"visibility":"internal"},{"constant":false,"id":2188,"name":"symbol_","nodeType":"VariableDeclaration","scope":2225,"src":"909:21:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2187,"name":"string","nodeType":"ElementaryTypeName","src":"909:6:9","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":null,"visibility":"internal"},{"constant":false,"id":2190,"name":"implementation_","nodeType":"VariableDeclaration","scope":2225,"src":"948:23:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2189,"name":"address","nodeType":"ElementaryTypeName","src":"948:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":2192,"name":"becomeImplementationData","nodeType":"VariableDeclaration","scope":2225,"src":"989:37:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2191,"name":"bytes","nodeType":"ElementaryTypeName","src":"989:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"},{"constant":false,"id":2194,"name":"reserveFactorMantissa_","nodeType":"VariableDeclaration","scope":2225,"src":"1044:30:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2193,"name":"uint256","nodeType":"ElementaryTypeName","src":"1044:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":2196,"name":"adminFeeMantissa_","nodeType":"VariableDeclaration","scope":2225,"src":"1092:25:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2195,"name":"uint256","nodeType":"ElementaryTypeName","src":"1092:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"766:352:9"},"returnParameters":{"id":2198,"nodeType":"ParameterList","parameters":[],"src":"1126:0:9"},"scope":2269,"src":"755:1275:9","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":2246,"nodeType":"Block","src":"2468:248:9","statements":[{"assignments":[2235,2237],"declarations":[{"constant":false,"id":2235,"name":"success","nodeType":"VariableDeclaration","scope":2246,"src":"2479:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2234,"name":"bool","nodeType":"ElementaryTypeName","src":"2479:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},{"constant":false,"id":2237,"name":"returnData","nodeType":"VariableDeclaration","scope":2246,"src":"2493:23:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2236,"name":"bytes","nodeType":"ElementaryTypeName","src":"2493:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"}],"id":2242,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2240,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2229,"src":"2540:4:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":null,"id":2238,"name":"callee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2227,"src":"2520:6:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2239,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"delegatecall","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2520:19:9","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":2241,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2520:25:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2478:67:9"},{"externalReferences":[{"success":{"declaration":2235,"isOffset":false,"isSlot":false,"src":"2584:7:9","valueSize":1}},{"returnData":{"declaration":2237,"isOffset":false,"isSlot":false,"src":"2625:10:9","valueSize":1}}],"id":2243,"nodeType":"InlineAssembly","operations":"{\n if eq(success, 0)\n {\n revert(add(returnData, 0x20), returndatasize())\n }\n}","src":"2555:128:9"},{"expression":{"argumentTypes":null,"id":2244,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2237,"src":"2699:10:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":2233,"id":2245,"nodeType":"Return","src":"2692:17:9"}]},"documentation":"@notice Internal method to delegate execution to another contract\n@dev It returns to the external caller whatever the implementation returns or forwards reverts\n@param callee The contract to delegatecall\n@param data The raw data to delegatecall\n@return The returned bytes from the delegatecall","id":2247,"implemented":true,"kind":"function","modifiers":[],"name":"delegateTo","nodeType":"FunctionDefinition","parameters":{"id":2230,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2227,"name":"callee","nodeType":"VariableDeclaration","scope":2247,"src":"2401:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2226,"name":"address","nodeType":"ElementaryTypeName","src":"2401:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":2229,"name":"data","nodeType":"VariableDeclaration","scope":2247,"src":"2417:17:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2228,"name":"bytes","nodeType":"ElementaryTypeName","src":"2417:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"}],"src":"2400:35:9"},"returnParameters":{"id":2233,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2232,"name":"","nodeType":"VariableDeclaration","scope":2247,"src":"2454:12:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2231,"name":"bytes","nodeType":"ElementaryTypeName","src":"2454:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"}],"src":"2453:14:9"},"scope":2269,"src":"2381:335:9","stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},{"body":{"id":2267,"nodeType":"Block","src":"2934:544:9","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2251,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6625,"src":"3001:14:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"5f707265706172652829","id":2254,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3041:12:9","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_1db7894496aca7988f503a38b093114a710b045aa68094d5773dae422d92bc49","typeString":"literal_string \"_prepare()\""},"value":"_prepare()"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_1db7894496aca7988f503a38b093114a710b045aa68094d5773dae422d92bc49","typeString":"literal_string \"_prepare()\""}],"expression":{"argumentTypes":null,"id":2252,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22537,"src":"3017:3:9","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2253,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSignature","nodeType":"MemberAccess","referencedDeclaration":null,"src":"3017:23:9","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (string memory) pure returns (bytes memory)"}},"id":2255,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3017:37:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2250,"name":"delegateTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2247,"src":"2990:10:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory) returns (bytes memory)"}},"id":2256,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2990:65:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2257,"nodeType":"ExpressionStatement","src":"2990:65:9"},{"assignments":[2259,null],"declarations":[{"constant":false,"id":2259,"name":"success","nodeType":"VariableDeclaration","scope":2267,"src":"3133:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2258,"name":"bool","nodeType":"ElementaryTypeName","src":"3133:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},null],"id":2265,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":2262,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"3179:3:9","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"data","nodeType":"MemberAccess","referencedDeclaration":null,"src":"3179:8:9","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"argumentTypes":null,"id":2260,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6625,"src":"3151:14:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"delegatecall","nodeType":"MemberAccess","referencedDeclaration":null,"src":"3151:27:9","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":2264,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3151:37:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"3132:56:9"},{"externalReferences":[{"success":{"declaration":2259,"isOffset":false,"isSlot":false,"src":"3334:7:9","valueSize":1}}],"id":2266,"nodeType":"InlineAssembly","operations":"{\n let free_mem_ptr := mload(0x40)\n returndatacopy(free_mem_ptr, 0, returndatasize())\n switch success\n case 0 {\n revert(free_mem_ptr, returndatasize())\n }\n default {\n return(free_mem_ptr, returndatasize())\n }\n}","src":"3199:273:9"}]},"documentation":"@notice Delegates execution to an implementation contract\n@dev It returns to the external caller whatever the implementation returns or forwards reverts","id":2268,"implemented":true,"kind":"fallback","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":2248,"nodeType":"ParameterList","parameters":[],"src":"2914:2:9"},"returnParameters":{"id":2249,"nodeType":"ParameterList","parameters":[],"src":"2934:0:9"},"scope":2269,"src":"2905:573:9","stateMutability":"payable","superFunction":null,"visibility":"external"}],"scope":2270,"src":"238:3242:9"}],"src":"0:3481:9"},"id":9},"contracts/CToken.sol":{"ast":{"absolutePath":"contracts/CToken.sol","exportedSymbols":{"CToken":[6186]},"id":6187,"nodeType":"SourceUnit","nodes":[{"id":2271,"literals":["solidity","0.5",".17"],"nodeType":"PragmaDirective","src":"0:23:10"},{"absolutePath":"contracts/ComptrollerInterface.sol","file":"./ComptrollerInterface.sol","id":2272,"nodeType":"ImportDirective","scope":6187,"sourceUnit":12981,"src":"25:36:10","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/CTokenInterfaces.sol","file":"./CTokenInterfaces.sol","id":2273,"nodeType":"ImportDirective","scope":6187,"sourceUnit":6653,"src":"62:32:10","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/ErrorReporter.sol","file":"./ErrorReporter.sol","id":2274,"nodeType":"ImportDirective","scope":6187,"sourceUnit":13850,"src":"95:29:10","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/Exponential.sol","file":"./Exponential.sol","id":2275,"nodeType":"ImportDirective","scope":6187,"sourceUnit":14372,"src":"125:27:10","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/EIP20Interface.sol","file":"./EIP20Interface.sol","id":2276,"nodeType":"ImportDirective","scope":6187,"sourceUnit":13485,"src":"153:30:10","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/EIP20NonStandardInterface.sol","file":"./EIP20NonStandardInterface.sol","id":2277,"nodeType":"ImportDirective","scope":6187,"sourceUnit":13550,"src":"184:41:10","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/InterestRateModel.sol","file":"./InterestRateModel.sol","id":2278,"nodeType":"ImportDirective","scope":6187,"sourceUnit":17399,"src":"226:33:10","symbolAliases":[],"unitAlias":""},{"baseContracts":[{"arguments":null,"baseName":{"contractScope":null,"id":2279,"name":"CTokenInterface","nodeType":"UserDefinedTypeName","referencedDeclaration":6556,"src":"382:15:10","typeDescriptions":{"typeIdentifier":"t_contract$_CTokenInterface_$6556","typeString":"contract CTokenInterface"}},"id":2280,"nodeType":"InheritanceSpecifier","src":"382:15:10"},{"arguments":null,"baseName":{"contractScope":null,"id":2281,"name":"Exponential","nodeType":"UserDefinedTypeName","referencedDeclaration":14371,"src":"399:11:10","typeDescriptions":{"typeIdentifier":"t_contract$_Exponential_$14371","typeString":"contract Exponential"}},"id":2282,"nodeType":"InheritanceSpecifier","src":"399:11:10"},{"arguments":null,"baseName":{"contractScope":null,"id":2283,"name":"TokenErrorReporter","nodeType":"UserDefinedTypeName","referencedDeclaration":13849,"src":"412:18:10","typeDescriptions":{"typeIdentifier":"t_contract$_TokenErrorReporter_$13849","typeString":"contract TokenErrorReporter"}},"id":2284,"nodeType":"InheritanceSpecifier","src":"412:18:10"}],"contractDependencies":[6204,6271,6556,6837,13849,14371,15066],"contractKind":"contract","documentation":"@title Compound's CToken Contract\n@notice Abstract base for CTokens\n@author Compound","fullyImplemented":false,"id":6186,"linearizedBaseContracts":[6186,13849,14371,15066,6837,6556,6271,6204],"name":"CToken","nodeType":"ContractDefinition","nodes":[{"body":{"id":2321,"nodeType":"Block","src":"583:280:10","statements":[{"assignments":[2290],"declarations":[{"constant":false,"id":2290,"name":"comptrollerStorage","nodeType":"VariableDeclaration","scope":2321,"src":"593:39:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerV3Storage_$13136","typeString":"contract ComptrollerV3Storage"},"typeName":{"contractScope":null,"id":2289,"name":"ComptrollerV3Storage","nodeType":"UserDefinedTypeName","referencedDeclaration":13136,"src":"593:20:10","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerV3Storage_$13136","typeString":"contract ComptrollerV3Storage"}},"value":null,"visibility":"internal"}],"id":2296,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2293,"name":"comptroller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6224,"src":"664:11:10","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerInterface_$12980","typeString":"contract ComptrollerInterface"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ComptrollerInterface_$12980","typeString":"contract ComptrollerInterface"}],"id":2292,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"656:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":2294,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"656:20:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2291,"name":"ComptrollerV3Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13136,"src":"635:20:10","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ComptrollerV3Storage_$13136_$","typeString":"type(contract ComptrollerV3Storage)"}},"id":2295,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"635:42:10","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerV3Storage_$13136","typeString":"contract ComptrollerV3Storage"}},"nodeType":"VariableDeclarationStatement","src":"593:84:10"},{"expression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"components":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2306,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2302,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":2297,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"695:3:10","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2298,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"695:10:10","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":2299,"name":"comptrollerStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2290,"src":"709:18:10","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerV3Storage_$13136","typeString":"contract ComptrollerV3Storage"}},"id":2300,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"admin","nodeType":"MemberAccess","referencedDeclaration":12992,"src":"709:24:10","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":2301,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"709:26:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"695:40:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":2303,"name":"comptrollerStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2290,"src":"739:18:10","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerV3Storage_$13136","typeString":"contract ComptrollerV3Storage"}},"id":2304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"adminHasRights","nodeType":"MemberAccess","referencedDeclaration":13000,"src":"739:33:10","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bool_$","typeString":"function () view external returns (bool)"}},"id":2305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"739:35:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"695:79:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":2307,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"694:81:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"argumentTypes":null,"components":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"id":2313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":2308,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"780:3:10","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2309,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"780:10:10","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2311,"name":"fuseAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6197,"src":"802:9:10","typeDescriptions":{"typeIdentifier":"t_contract$_IFuseFeeDistributor_$17368","typeString":"contract IFuseFeeDistributor"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IFuseFeeDistributor_$17368","typeString":"contract IFuseFeeDistributor"}],"id":2310,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"794:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":2312,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"794:18:10","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"780:32:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":2314,"name":"comptrollerStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2290,"src":"816:18:10","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerV3Storage_$13136","typeString":"contract ComptrollerV3Storage"}},"id":2315,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"fuseAdminHasRights","nodeType":"MemberAccess","referencedDeclaration":12997,"src":"816:37:10","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bool_$","typeString":"function () view external returns (bool)"}},"id":2316,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"816:39:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"780:75:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":2318,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"779:77:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"694:162:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2288,"id":2320,"nodeType":"Return","src":"687:169:10"}]},"documentation":"@notice Returns a boolean indicating if the sender has admin rights","id":2322,"implemented":true,"kind":"function","modifiers":[],"name":"hasAdminRights","nodeType":"FunctionDefinition","parameters":{"id":2285,"nodeType":"ParameterList","parameters":[],"src":"551:2:10"},"returnParameters":{"id":2288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2287,"name":"","nodeType":"VariableDeclaration","scope":2322,"src":"577:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2286,"name":"bool","nodeType":"ElementaryTypeName","src":"577:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"576:6:10"},"scope":6186,"src":"528:335:10","stateMutability":"view","superFunction":null,"visibility":"internal"},{"body":{"id":2462,"nodeType":"Block","src":"1725:1524:10","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"id":2347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":2342,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"1743:3:10","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"1743:10:10","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2345,"name":"fuseAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6197,"src":"1765:9:10","typeDescriptions":{"typeIdentifier":"t_contract$_IFuseFeeDistributor_$17368","typeString":"contract IFuseFeeDistributor"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IFuseFeeDistributor_$17368","typeString":"contract IFuseFeeDistributor"}],"id":2344,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1757:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":2346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1757:18:10","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"1743:32:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"6f6e6c7920467573652061646d696e206d617920696e697469616c697a6520746865206d61726b6574","id":2348,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1777:43:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_a17411745075a02b4bea1203170f5544c3992decc1df2acf0df46c52cbdbdd45","typeString":"literal_string \"only Fuse admin may initialize the market\""},"value":"only Fuse admin may initialize the market"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a17411745075a02b4bea1203170f5544c3992decc1df2acf0df46c52cbdbdd45","typeString":"literal_string \"only Fuse admin may initialize the market\""}],"id":2341,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"1735:7:10","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2349,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1735:86:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2350,"nodeType":"ExpressionStatement","src":"1735:86:10"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2358,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2354,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":2352,"name":"accrualBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6236,"src":"1839:18:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":2353,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1861:1:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1839:23:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2357,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":2355,"name":"borrowIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6238,"src":"1866:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":2356,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1881:1:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1866:16:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1839:43:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"6d61726b6574206d6179206f6e6c7920626520696e697469616c697a6564206f6e6365","id":2359,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1884:37:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_1bebca39b478e42a6b88dcff87467d0e08b422ebc72c3d074bd236265624e814","typeString":"literal_string \"market may only be initialized once\""},"value":"market may only be initialized once"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1bebca39b478e42a6b88dcff87467d0e08b422ebc72c3d074bd236265624e814","typeString":"literal_string \"market may only be initialized once\""}],"id":2351,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"1831:7:10","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2360,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1831:91:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2361,"nodeType":"ExpressionStatement","src":"1831:91:10"},{"expression":{"argumentTypes":null,"id":2364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":2362,"name":"initialExchangeRateMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6228,"src":"1970:27:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":2363,"name":"initialExchangeRateMantissa_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2328,"src":"2000:28:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1970:58:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2365,"nodeType":"ExpressionStatement","src":"1970:58:10"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":2367,"name":"initialExchangeRateMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6228,"src":"2046:27:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"30","id":2368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2076:1:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2046:31:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"696e697469616c2065786368616e67652072617465206d7573742062652067726561746572207468616e207a65726f2e","id":2370,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2079:50:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_427426a02e699ec0d6d6d22f3254c7e686696e18d2de7af9416d6b5cc786ff6c","typeString":"literal_string \"initial exchange rate must be greater than zero.\""},"value":"initial exchange rate must be greater than zero."}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_427426a02e699ec0d6d6d22f3254c7e686696e18d2de7af9416d6b5cc786ff6c","typeString":"literal_string \"initial exchange rate must be greater than zero.\""}],"id":2366,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"2038:7:10","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2371,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2038:92:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2372,"nodeType":"ExpressionStatement","src":"2038:92:10"},{"assignments":[2374],"declarations":[{"constant":false,"id":2374,"name":"err","nodeType":"VariableDeclaration","scope":2462,"src":"2172:8:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2373,"name":"uint","nodeType":"ElementaryTypeName","src":"2172:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":2378,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2376,"name":"comptroller_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2324,"src":"2199:12:10","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerInterface_$12980","typeString":"contract ComptrollerInterface"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ComptrollerInterface_$12980","typeString":"contract ComptrollerInterface"}],"id":2375,"name":"_setComptroller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5327,"src":"2183:15:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ComptrollerInterface_$12980_$returns$_t_uint256_$","typeString":"function (contract ComptrollerInterface) returns (uint256)"}},"id":2377,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2183:29:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2172:40:10"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2385,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":2380,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2374,"src":"2230:3:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":2382,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"2242:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":2383,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2242:14:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}],"id":2381,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2237:4:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":2384,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2237:20:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2230:27:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"73657474696e6720636f6d7074726f6c6c6572206661696c6564","id":2386,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2259:28:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_b20ca7ca5fb4cb4511b58e112cf8b8663096873b0029b9b6aeb6bb29723b6450","typeString":"literal_string \"setting comptroller failed\""},"value":"setting comptroller failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b20ca7ca5fb4cb4511b58e112cf8b8663096873b0029b9b6aeb6bb29723b6450","typeString":"literal_string \"setting comptroller failed\""}],"id":2379,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"2222:7:10","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2387,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2222:66:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2388,"nodeType":"ExpressionStatement","src":"2222:66:10"},{"expression":{"argumentTypes":null,"id":2392,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":2389,"name":"accrualBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6236,"src":"2404:18:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":2390,"name":"getBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2912,"src":"2425:14:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":2391,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2425:16:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2404:37:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2393,"nodeType":"ExpressionStatement","src":"2404:37:10"},{"expression":{"argumentTypes":null,"id":2396,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":2394,"name":"borrowIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6238,"src":"2451:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":2395,"name":"mantissaOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14387,"src":"2465:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2451:25:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2397,"nodeType":"ExpressionStatement","src":"2451:25:10"},{"expression":{"argumentTypes":null,"id":2402,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":2398,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2374,"src":"2567:3:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2400,"name":"interestRateModel_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2326,"src":"2600:18:10","typeDescriptions":{"typeIdentifier":"t_contract$_InterestRateModel_$17398","typeString":"contract InterestRateModel"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_InterestRateModel_$17398","typeString":"contract InterestRateModel"}],"id":2399,"name":"_setInterestRateModelFresh","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6048,"src":"2573:26:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_InterestRateModel_$17398_$returns$_t_uint256_$","typeString":"function (contract InterestRateModel) returns (uint256)"}},"id":2401,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2573:46:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2567:52:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2403,"nodeType":"ExpressionStatement","src":"2567:52:10"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2410,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":2405,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2374,"src":"2637:3:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":2407,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"2649:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":2408,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2649:14:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}],"id":2406,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2644:4:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":2409,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2644:20:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2637:27:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"73657474696e6720696e7465726573742072617465206d6f64656c206661696c6564","id":2411,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2666:36:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_59076c676f223cb9d4de55d807fe5a438ed31bccfb7626e1e7791e8e0eec7464","typeString":"literal_string \"setting interest rate model failed\""},"value":"setting interest rate model failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_59076c676f223cb9d4de55d807fe5a438ed31bccfb7626e1e7791e8e0eec7464","typeString":"literal_string \"setting interest rate model failed\""}],"id":2404,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"2629:7:10","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2412,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2629:74:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2413,"nodeType":"ExpressionStatement","src":"2629:74:10"},{"expression":{"argumentTypes":null,"id":2416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":2414,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6210,"src":"2714:4:10","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":2415,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2330,"src":"2721:5:10","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"2714:12:10","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":2417,"nodeType":"ExpressionStatement","src":"2714:12:10"},{"expression":{"argumentTypes":null,"id":2420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":2418,"name":"symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6212,"src":"2736:6:10","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":2419,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2332,"src":"2745:7:10","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"2736:16:10","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":2421,"nodeType":"ExpressionStatement","src":"2736:16:10"},{"expression":{"argumentTypes":null,"id":2424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":2422,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6214,"src":"2762:8:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":2423,"name":"decimals_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"2773:9:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"2762:20:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":2425,"nodeType":"ExpressionStatement","src":"2762:20:10"},{"expression":{"argumentTypes":null,"id":2430,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":2426,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2374,"src":"2823:3:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2428,"name":"reserveFactorMantissa_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2336,"src":"2852:22:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2427,"name":"_setReserveFactorFresh","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5576,"src":"2829:22:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":2429,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2829:46:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2823:52:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2431,"nodeType":"ExpressionStatement","src":"2823:52:10"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":2433,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2374,"src":"2893:3:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":2435,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"2905:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":2436,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2905:14:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}],"id":2434,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2900:4:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":2437,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2900:20:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2893:27:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"73657474696e67207265736572766520666163746f72206661696c6564","id":2439,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2922:31:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_91ce7f33752d1fbd1f47d9462a11e0d9d25e611bd240ef2cdd0c0a3acd218074","typeString":"literal_string \"setting reserve factor failed\""},"value":"setting reserve factor failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_91ce7f33752d1fbd1f47d9462a11e0d9d25e611bd240ef2cdd0c0a3acd218074","typeString":"literal_string \"setting reserve factor failed\""}],"id":2432,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"2885:7:10","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2440,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2885:69:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2441,"nodeType":"ExpressionStatement","src":"2885:69:10"},{"expression":{"argumentTypes":null,"id":2446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":2442,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2374,"src":"2990:3:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2444,"name":"adminFeeMantissa_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2338,"src":"3014:17:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2443,"name":"_setAdminFeeFresh","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5471,"src":"2996:17:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":2445,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2996:36:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2990:42:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2447,"nodeType":"ExpressionStatement","src":"2990:42:10"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2454,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":2449,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2374,"src":"3050:3:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":2451,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"3062:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":2452,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"3062:14:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}],"id":2450,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3057:4:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":2453,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3057:20:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3050:27:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"73657474696e672061646d696e20666565206661696c6564","id":2455,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3079:26:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_33a36b497b89fc2f1a6bc03a0dbdd55425b92b070963ea1e585cd89b0c96dcb5","typeString":"literal_string \"setting admin fee failed\""},"value":"setting admin fee failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_33a36b497b89fc2f1a6bc03a0dbdd55425b92b070963ea1e585cd89b0c96dcb5","typeString":"literal_string \"setting admin fee failed\""}],"id":2448,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"3042:7:10","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2456,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3042:64:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2457,"nodeType":"ExpressionStatement","src":"3042:64:10"},{"expression":{"argumentTypes":null,"id":2460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":2458,"name":"_notEntered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6208,"src":"3224:11:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"hexValue":"74727565","id":2459,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3238:4:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"3224:18:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2461,"nodeType":"ExpressionStatement","src":"3224:18:10"}]},"documentation":"@notice Initialize the money market\n@param comptroller_ The address of the Comptroller\n@param interestRateModel_ The address of the interest rate model\n@param initialExchangeRateMantissa_ The initial exchange rate, scaled by 1e18\n@param name_ EIP-20 name of this token\n@param symbol_ EIP-20 symbol of this token\n@param decimals_ EIP-20 decimal precision of this token","id":2463,"implemented":true,"kind":"function","modifiers":[],"name":"initialize","nodeType":"FunctionDefinition","parameters":{"id":2339,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2324,"name":"comptroller_","nodeType":"VariableDeclaration","scope":2463,"src":"1322:33:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerInterface_$12980","typeString":"contract ComptrollerInterface"},"typeName":{"contractScope":null,"id":2323,"name":"ComptrollerInterface","nodeType":"UserDefinedTypeName","referencedDeclaration":12980,"src":"1322:20:10","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerInterface_$12980","typeString":"contract ComptrollerInterface"}},"value":null,"visibility":"internal"},{"constant":false,"id":2326,"name":"interestRateModel_","nodeType":"VariableDeclaration","scope":2463,"src":"1381:36:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_InterestRateModel_$17398","typeString":"contract InterestRateModel"},"typeName":{"contractScope":null,"id":2325,"name":"InterestRateModel","nodeType":"UserDefinedTypeName","referencedDeclaration":17398,"src":"1381:17:10","typeDescriptions":{"typeIdentifier":"t_contract$_InterestRateModel_$17398","typeString":"contract InterestRateModel"}},"value":null,"visibility":"internal"},{"constant":false,"id":2328,"name":"initialExchangeRateMantissa_","nodeType":"VariableDeclaration","scope":2463,"src":"1443:33:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2327,"name":"uint","nodeType":"ElementaryTypeName","src":"1443:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":2330,"name":"name_","nodeType":"VariableDeclaration","scope":2463,"src":"1502:19:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2329,"name":"string","nodeType":"ElementaryTypeName","src":"1502:6:10","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":null,"visibility":"internal"},{"constant":false,"id":2332,"name":"symbol_","nodeType":"VariableDeclaration","scope":2463,"src":"1547:21:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2331,"name":"string","nodeType":"ElementaryTypeName","src":"1547:6:10","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":null,"visibility":"internal"},{"constant":false,"id":2334,"name":"decimals_","nodeType":"VariableDeclaration","scope":2463,"src":"1594:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2333,"name":"uint8","nodeType":"ElementaryTypeName","src":"1594:5:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":null,"visibility":"internal"},{"constant":false,"id":2336,"name":"reserveFactorMantissa_","nodeType":"VariableDeclaration","scope":2463,"src":"1635:30:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2335,"name":"uint256","nodeType":"ElementaryTypeName","src":"1635:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":2338,"name":"adminFeeMantissa_","nodeType":"VariableDeclaration","scope":2463,"src":"1691:25:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2337,"name":"uint256","nodeType":"ElementaryTypeName","src":"1691:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1321:396:10"},"returnParameters":{"id":2340,"nodeType":"ParameterList","parameters":[],"src":"1725:0:10"},"scope":6186,"src":"1302:1947:10","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":2472,"nodeType":"Block","src":"3422:51:10","statements":[{"expression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":2468,"name":"fuseAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6197,"src":"3439:9:10","typeDescriptions":{"typeIdentifier":"t_contract$_IFuseFeeDistributor_$17368","typeString":"contract IFuseFeeDistributor"}},"id":2469,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"interestFeeRate","nodeType":"MemberAccess","referencedDeclaration":17290,"src":"3439:25:10","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":2470,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3439:27:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2467,"id":2471,"nodeType":"Return","src":"3432:34:10"}]},"documentation":"@dev Returns latest pending Fuse fee (to be set with `_setFuseFeeFresh`)","id":2473,"implemented":true,"kind":"function","modifiers":[],"name":"getPendingFuseFeeFromAdmin","nodeType":"FunctionDefinition","parameters":{"id":2464,"nodeType":"ParameterList","parameters":[],"src":"3390:2:10"},"returnParameters":{"id":2467,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2466,"name":"","nodeType":"VariableDeclaration","scope":2473,"src":"3416:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2465,"name":"uint","nodeType":"ElementaryTypeName","src":"3416:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"3415:6:10"},"scope":6186,"src":"3355:118:10","stateMutability":"view","superFunction":null,"visibility":"internal"},{"body":{"id":2669,"nodeType":"Block","src":"4029:2122:10","statements":[{"assignments":[2487],"declarations":[{"constant":false,"id":2487,"name":"allowed","nodeType":"VariableDeclaration","scope":2669,"src":"4082:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2486,"name":"uint","nodeType":"ElementaryTypeName","src":"4082:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":2497,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2491,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22614,"src":"4133:4:10","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":2490,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4125:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":2492,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4125:13:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":2493,"name":"src","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2477,"src":"4140:3:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":2494,"name":"dst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2479,"src":"4145:3:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":2495,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2481,"src":"4150:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":2488,"name":"comptroller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6224,"src":"4097:11:10","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerInterface_$12980","typeString":"contract ComptrollerInterface"}},"id":2489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transferAllowed","nodeType":"MemberAccess","referencedDeclaration":12949,"src":"4097:27:10","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,address,address,uint256) external returns (uint256)"}},"id":2496,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4097:60:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4082:75:10"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2500,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":2498,"name":"allowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2487,"src":"4171:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"hexValue":"30","id":2499,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4182:1:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4171:12:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":2510,"nodeType":"IfStatement","src":"4167:142:10","trueBody":{"id":2509,"nodeType":"Block","src":"4185:124:10","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":2502,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"4217:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":2503,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"COMPTROLLER_REJECTION","nodeType":"MemberAccess","referencedDeclaration":null,"src":"4217:27:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":2504,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13782,"src":"4246:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13782_$","typeString":"type(enum TokenErrorReporter.FailureInfo)"}},"id":2505,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"TRANSFER_COMPTROLLER_REJECTION","nodeType":"MemberAccess","referencedDeclaration":null,"src":"4246:42:10","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}},{"argumentTypes":null,"id":2506,"name":"allowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2487,"src":"4290:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2501,"name":"failOpaque","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13848,"src":"4206:10:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13681_$_t_enum$_FailureInfo_$13782_$_t_uint256_$returns$_t_uint256_$","typeString":"function (enum TokenErrorReporter.Error,enum TokenErrorReporter.FailureInfo,uint256) returns (uint256)"}},"id":2507,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4206:92:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2485,"id":2508,"nodeType":"Return","src":"4199:99:10"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2513,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":2511,"name":"src","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2477,"src":"4365:3:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":2512,"name":"dst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2479,"src":"4372:3:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4365:10:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":2522,"nodeType":"IfStatement","src":"4361:103:10","trueBody":{"id":2521,"nodeType":"Block","src":"4377:87:10","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":2515,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"4403:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":2516,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"BAD_INPUT","nodeType":"MemberAccess","referencedDeclaration":null,"src":"4403:15:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":2517,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13782,"src":"4420:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13782_$","typeString":"type(enum TokenErrorReporter.FailureInfo)"}},"id":2518,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"TRANSFER_NOT_ALLOWED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"4420:32:10","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}],"id":2514,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13814,"src":"4398:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13681_$_t_enum$_FailureInfo_$13782_$returns$_t_uint256_$","typeString":"function (enum TokenErrorReporter.Error,enum TokenErrorReporter.FailureInfo) returns (uint256)"}},"id":2519,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4398:55:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2485,"id":2520,"nodeType":"Return","src":"4391:62:10"}]}},{"assignments":[2524],"declarations":[{"constant":false,"id":2524,"name":"startingAllowance","nodeType":"VariableDeclaration","scope":2669,"src":"4538:22:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2523,"name":"uint","nodeType":"ElementaryTypeName","src":"4538:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":2526,"initialValue":{"argumentTypes":null,"hexValue":"30","id":2525,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4563:1:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"4538:26:10"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2529,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":2527,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2475,"src":"4578:7:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":2528,"name":"src","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2477,"src":"4589:3:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4578:14:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2546,"nodeType":"Block","src":"4653:77:10","statements":[{"expression":{"argumentTypes":null,"id":2544,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":2538,"name":"startingAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2524,"src":"4667:17:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":2539,"name":"transferAllowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6258,"src":"4687:18:10","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":2541,"indexExpression":{"argumentTypes":null,"id":2540,"name":"src","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2477,"src":"4706:3:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4687:23:10","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2543,"indexExpression":{"argumentTypes":null,"id":2542,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2475,"src":"4711:7:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4687:32:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4667:52:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2545,"nodeType":"ExpressionStatement","src":"4667:52:10"}]},"id":2547,"nodeType":"IfStatement","src":"4574:156:10","trueBody":{"id":2537,"nodeType":"Block","src":"4594:53:10","statements":[{"expression":{"argumentTypes":null,"id":2535,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":2530,"name":"startingAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2524,"src":"4608:17:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2533,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"4633:2:10","subExpression":{"argumentTypes":null,"hexValue":"31","id":2532,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4634:1:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"id":2531,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4628:4:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":2534,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4628:8:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4608:28:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2536,"nodeType":"ExpressionStatement","src":"4608:28:10"}]}},{"assignments":[2549],"declarations":[{"constant":false,"id":2549,"name":"mathErr","nodeType":"VariableDeclaration","scope":2669,"src":"4805:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"typeName":{"contractScope":null,"id":2548,"name":"MathError","nodeType":"UserDefinedTypeName","referencedDeclaration":6659,"src":"4805:9:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"value":null,"visibility":"internal"}],"id":2550,"initialValue":null,"nodeType":"VariableDeclarationStatement","src":"4805:17:10"},{"assignments":[2552],"declarations":[{"constant":false,"id":2552,"name":"allowanceNew","nodeType":"VariableDeclaration","scope":2669,"src":"4832:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2551,"name":"uint","nodeType":"ElementaryTypeName","src":"4832:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":2553,"initialValue":null,"nodeType":"VariableDeclarationStatement","src":"4832:17:10"},{"assignments":[2555],"declarations":[{"constant":false,"id":2555,"name":"srcTokensNew","nodeType":"VariableDeclaration","scope":2669,"src":"4859:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2554,"name":"uint","nodeType":"ElementaryTypeName","src":"4859:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":2556,"initialValue":null,"nodeType":"VariableDeclarationStatement","src":"4859:17:10"},{"assignments":[2558],"declarations":[{"constant":false,"id":2558,"name":"dstTokensNew","nodeType":"VariableDeclaration","scope":2669,"src":"4886:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2557,"name":"uint","nodeType":"ElementaryTypeName","src":"4886:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":2559,"initialValue":null,"nodeType":"VariableDeclarationStatement","src":"4886:17:10"},{"expression":{"argumentTypes":null,"id":2567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":2560,"name":"mathErr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2549,"src":"4915:7:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},{"argumentTypes":null,"id":2561,"name":"allowanceNew","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2552,"src":"4924:12:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2562,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"4914:23:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2564,"name":"startingAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2524,"src":"4948:17:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":2565,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2481,"src":"4967:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2563,"name":"subUInt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6764,"src":"4940:7:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (enum CarefulMath.MathError,uint256)"}},"id":2566,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4940:34:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"src":"4914:60:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2568,"nodeType":"ExpressionStatement","src":"4914:60:10"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"id":2572,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":2569,"name":"mathErr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2549,"src":"4988:7:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":2570,"name":"MathError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6659,"src":"4999:9:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MathError_$6659_$","typeString":"type(enum CarefulMath.MathError)"}},"id":2571,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"4999:18:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"src":"4988:29:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":2581,"nodeType":"IfStatement","src":"4984:123:10","trueBody":{"id":2580,"nodeType":"Block","src":"5019:88:10","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":2574,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"5045:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":2575,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"MATH_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"5045:16:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":2576,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13782,"src":"5063:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13782_$","typeString":"type(enum TokenErrorReporter.FailureInfo)"}},"id":2577,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"TRANSFER_NOT_ALLOWED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"5063:32:10","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}],"id":2573,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13814,"src":"5040:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13681_$_t_enum$_FailureInfo_$13782_$returns$_t_uint256_$","typeString":"function (enum TokenErrorReporter.Error,enum TokenErrorReporter.FailureInfo) returns (uint256)"}},"id":2578,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5040:56:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2485,"id":2579,"nodeType":"Return","src":"5033:63:10"}]}},{"expression":{"argumentTypes":null,"id":2591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":2582,"name":"mathErr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2549,"src":"5118:7:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},{"argumentTypes":null,"id":2583,"name":"srcTokensNew","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2555,"src":"5127:12:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2584,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"5117:23:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":2586,"name":"accountTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6252,"src":"5151:13:10","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2588,"indexExpression":{"argumentTypes":null,"id":2587,"name":"src","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2477,"src":"5165:3:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5151:18:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":2589,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2481,"src":"5171:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2585,"name":"subUInt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6764,"src":"5143:7:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (enum CarefulMath.MathError,uint256)"}},"id":2590,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5143:35:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"src":"5117:61:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2592,"nodeType":"ExpressionStatement","src":"5117:61:10"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"id":2596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":2593,"name":"mathErr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2549,"src":"5192:7:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":2594,"name":"MathError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6659,"src":"5203:9:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MathError_$6659_$","typeString":"type(enum CarefulMath.MathError)"}},"id":2595,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"5203:18:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"src":"5192:29:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":2605,"nodeType":"IfStatement","src":"5188:122:10","trueBody":{"id":2604,"nodeType":"Block","src":"5223:87:10","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":2598,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"5249:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":2599,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"MATH_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"5249:16:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":2600,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13782,"src":"5267:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13782_$","typeString":"type(enum TokenErrorReporter.FailureInfo)"}},"id":2601,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"TRANSFER_NOT_ENOUGH","nodeType":"MemberAccess","referencedDeclaration":null,"src":"5267:31:10","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}],"id":2597,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13814,"src":"5244:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13681_$_t_enum$_FailureInfo_$13782_$returns$_t_uint256_$","typeString":"function (enum TokenErrorReporter.Error,enum TokenErrorReporter.FailureInfo) returns (uint256)"}},"id":2602,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5244:55:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2485,"id":2603,"nodeType":"Return","src":"5237:62:10"}]}},{"expression":{"argumentTypes":null,"id":2615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":2606,"name":"mathErr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2549,"src":"5321:7:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},{"argumentTypes":null,"id":2607,"name":"dstTokensNew","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2558,"src":"5330:12:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2608,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"5320:23:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":2610,"name":"accountTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6252,"src":"5354:13:10","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2612,"indexExpression":{"argumentTypes":null,"id":2611,"name":"dst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2479,"src":"5368:3:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5354:18:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":2613,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2481,"src":"5374:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2609,"name":"addUInt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6798,"src":"5346:7:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (enum CarefulMath.MathError,uint256)"}},"id":2614,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5346:35:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"src":"5320:61:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2616,"nodeType":"ExpressionStatement","src":"5320:61:10"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"id":2620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":2617,"name":"mathErr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2549,"src":"5395:7:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":2618,"name":"MathError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6659,"src":"5406:9:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MathError_$6659_$","typeString":"type(enum CarefulMath.MathError)"}},"id":2619,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"5406:18:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"src":"5395:29:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":2629,"nodeType":"IfStatement","src":"5391:120:10","trueBody":{"id":2628,"nodeType":"Block","src":"5426:85:10","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":2622,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"5452:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":2623,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"MATH_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"5452:16:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":2624,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13782,"src":"5470:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13782_$","typeString":"type(enum TokenErrorReporter.FailureInfo)"}},"id":2625,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"TRANSFER_TOO_MUCH","nodeType":"MemberAccess","referencedDeclaration":null,"src":"5470:29:10","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}],"id":2621,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13814,"src":"5447:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13681_$_t_enum$_FailureInfo_$13782_$returns$_t_uint256_$","typeString":"function (enum TokenErrorReporter.Error,enum TokenErrorReporter.FailureInfo) returns (uint256)"}},"id":2626,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5447:53:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2485,"id":2627,"nodeType":"Return","src":"5440:60:10"}]}},{"expression":{"argumentTypes":null,"id":2634,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":2630,"name":"accountTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6252,"src":"5638:13:10","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2632,"indexExpression":{"argumentTypes":null,"id":2631,"name":"src","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2477,"src":"5652:3:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5638:18:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":2633,"name":"srcTokensNew","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2555,"src":"5659:12:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5638:33:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2635,"nodeType":"ExpressionStatement","src":"5638:33:10"},{"expression":{"argumentTypes":null,"id":2640,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":2636,"name":"accountTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6252,"src":"5681:13:10","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2638,"indexExpression":{"argumentTypes":null,"id":2637,"name":"dst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2479,"src":"5695:3:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5681:18:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":2639,"name":"dstTokensNew","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2558,"src":"5702:12:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5681:33:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2641,"nodeType":"ExpressionStatement","src":"5681:33:10"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2647,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":2642,"name":"startingAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2524,"src":"5784:17:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2645,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"5810:2:10","subExpression":{"argumentTypes":null,"hexValue":"31","id":2644,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5811:1:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"id":2643,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5805:4:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":2646,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5805:8:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5784:29:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":2657,"nodeType":"IfStatement","src":"5780:107:10","trueBody":{"id":2656,"nodeType":"Block","src":"5815:72:10","statements":[{"expression":{"argumentTypes":null,"id":2654,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":2648,"name":"transferAllowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6258,"src":"5829:18:10","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":2651,"indexExpression":{"argumentTypes":null,"id":2649,"name":"src","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2477,"src":"5848:3:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5829:23:10","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2652,"indexExpression":{"argumentTypes":null,"id":2650,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2475,"src":"5853:7:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5829:32:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":2653,"name":"allowanceNew","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2552,"src":"5864:12:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5829:47:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2655,"nodeType":"ExpressionStatement","src":"5829:47:10"}]}},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2659,"name":"src","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2477,"src":"5950:3:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":2660,"name":"dst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2479,"src":"5955:3:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":2661,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2481,"src":"5960:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2658,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6393,"src":"5941:8:10","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2662,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5941:26:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2663,"nodeType":"EmitStatement","src":"5936:31:10"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":2665,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"6129:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":2666,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"6129:14:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}],"id":2664,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6124:4:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":2667,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6124:20:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2485,"id":2668,"nodeType":"Return","src":"6117:27:10"}]},"documentation":"@notice Transfer `tokens` tokens from `src` to `dst` by `spender`\n@dev Called by both `transfer` and `transferFrom` internally\n@param spender The address of the account performing the transfer\n@param src The address of the source account\n@param dst The address of the destination account\n@param tokens The number of tokens to transfer\n@return Whether or not the transfer succeeded","id":2670,"implemented":true,"kind":"function","modifiers":[],"name":"transferTokens","nodeType":"FunctionDefinition","parameters":{"id":2482,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2475,"name":"spender","nodeType":"VariableDeclaration","scope":2670,"src":"3949:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2474,"name":"address","nodeType":"ElementaryTypeName","src":"3949:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":2477,"name":"src","nodeType":"VariableDeclaration","scope":2670,"src":"3966:11:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2476,"name":"address","nodeType":"ElementaryTypeName","src":"3966:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":2479,"name":"dst","nodeType":"VariableDeclaration","scope":2670,"src":"3979:11:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2478,"name":"address","nodeType":"ElementaryTypeName","src":"3979:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":2481,"name":"tokens","nodeType":"VariableDeclaration","scope":2670,"src":"3992:11:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2480,"name":"uint","nodeType":"ElementaryTypeName","src":"3992:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"3948:56:10"},"returnParameters":{"id":2485,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2484,"name":"","nodeType":"VariableDeclaration","scope":2670,"src":"4023:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2483,"name":"uint","nodeType":"ElementaryTypeName","src":"4023:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"4022:6:10"},"scope":6186,"src":"3925:2226:10","stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},{"body":{"id":2696,"nodeType":"Block","src":"6495:99:10","statements":[{"expression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":2683,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"6527:3:10","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2684,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"6527:10:10","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":2685,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"6539:3:10","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2686,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"6539:10:10","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"id":2687,"name":"dst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2672,"src":"6551:3:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":2688,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2674,"src":"6556:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2682,"name":"transferTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2670,"src":"6512:14:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,address,address,uint256) returns (uint256)"}},"id":2689,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6512:51:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":2691,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"6572:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":2692,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"6572:14:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}],"id":2690,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6567:4:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":2693,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6567:20:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6512:75:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2681,"id":2695,"nodeType":"Return","src":"6505:82:10"}]},"documentation":"@notice Transfer `amount` tokens from `msg.sender` to `dst`\n@param dst The address of the destination account\n@param amount The number of tokens to transfer\n@return Whether or not the transfer succeeded","id":2697,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"argumentTypes":null,"hexValue":"66616c7365","id":2677,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6473:5:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"id":2678,"modifierName":{"argumentTypes":null,"id":2676,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6105,"src":"6460:12:10","typeDescriptions":{"typeIdentifier":"t_modifier$_t_bool_$","typeString":"modifier (bool)"}},"nodeType":"ModifierInvocation","src":"6460:19:10"}],"name":"transfer","nodeType":"FunctionDefinition","parameters":{"id":2675,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2672,"name":"dst","nodeType":"VariableDeclaration","scope":2697,"src":"6422:11:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2671,"name":"address","nodeType":"ElementaryTypeName","src":"6422:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":2674,"name":"amount","nodeType":"VariableDeclaration","scope":2697,"src":"6435:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2673,"name":"uint256","nodeType":"ElementaryTypeName","src":"6435:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"6421:29:10"},"returnParameters":{"id":2681,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2680,"name":"","nodeType":"VariableDeclaration","scope":2697,"src":"6489:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2679,"name":"bool","nodeType":"ElementaryTypeName","src":"6489:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"6488:6:10"},"scope":6186,"src":"6404:190:10","stateMutability":"nonpayable","superFunction":6418,"visibility":"external"},{"body":{"id":2724,"nodeType":"Block","src":"7000:92:10","statements":[{"expression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":2712,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"7032:3:10","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2713,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"7032:10:10","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"id":2714,"name":"src","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2699,"src":"7044:3:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":2715,"name":"dst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2701,"src":"7049:3:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":2716,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2703,"src":"7054:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2711,"name":"transferTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2670,"src":"7017:14:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,address,address,uint256) returns (uint256)"}},"id":2717,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7017:44:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":2719,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"7070:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":2720,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"7070:14:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}],"id":2718,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7065:4:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":2721,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7065:20:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7017:68:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2710,"id":2723,"nodeType":"Return","src":"7010:75:10"}]},"documentation":"@notice Transfer `amount` tokens from `src` to `dst`\n@param src The address of the source account\n@param dst The address of the destination account\n@param amount The number of tokens to transfer\n@return Whether or not the transfer succeeded","id":2725,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"argumentTypes":null,"hexValue":"66616c7365","id":2706,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6978:5:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"id":2707,"modifierName":{"argumentTypes":null,"id":2705,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6105,"src":"6965:12:10","typeDescriptions":{"typeIdentifier":"t_modifier$_t_bool_$","typeString":"modifier (bool)"}},"nodeType":"ModifierInvocation","src":"6965:19:10"}],"name":"transferFrom","nodeType":"FunctionDefinition","parameters":{"id":2704,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2699,"name":"src","nodeType":"VariableDeclaration","scope":2725,"src":"6914:11:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2698,"name":"address","nodeType":"ElementaryTypeName","src":"6914:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":2701,"name":"dst","nodeType":"VariableDeclaration","scope":2725,"src":"6927:11:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2700,"name":"address","nodeType":"ElementaryTypeName","src":"6927:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":2703,"name":"amount","nodeType":"VariableDeclaration","scope":2725,"src":"6940:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2702,"name":"uint256","nodeType":"ElementaryTypeName","src":"6940:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"6913:42:10"},"returnParameters":{"id":2710,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2709,"name":"","nodeType":"VariableDeclaration","scope":2725,"src":"6994:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2708,"name":"bool","nodeType":"ElementaryTypeName","src":"6994:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"6993:6:10"},"scope":6186,"src":"6892:200:10","stateMutability":"nonpayable","superFunction":6429,"visibility":"external"},{"body":{"id":2755,"nodeType":"Block","src":"7626:158:10","statements":[{"assignments":[2735],"declarations":[{"constant":false,"id":2735,"name":"src","nodeType":"VariableDeclaration","scope":2755,"src":"7636:11:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2734,"name":"address","nodeType":"ElementaryTypeName","src":"7636:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":2738,"initialValue":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":2736,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"7650:3:10","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"7650:10:10","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"VariableDeclarationStatement","src":"7636:24:10"},{"expression":{"argumentTypes":null,"id":2745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":2739,"name":"transferAllowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6258,"src":"7670:18:10","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":2742,"indexExpression":{"argumentTypes":null,"id":2740,"name":"src","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2735,"src":"7689:3:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7670:23:10","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2743,"indexExpression":{"argumentTypes":null,"id":2741,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2727,"src":"7694:7:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7670:32:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":2744,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2729,"src":"7705:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7670:41:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2746,"nodeType":"ExpressionStatement","src":"7670:41:10"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2748,"name":"src","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2735,"src":"7735:3:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":2749,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2727,"src":"7740:7:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":2750,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2729,"src":"7749:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2747,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6401,"src":"7726:8:10","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2751,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7726:30:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2752,"nodeType":"EmitStatement","src":"7721:35:10"},{"expression":{"argumentTypes":null,"hexValue":"74727565","id":2753,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7773:4:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":2733,"id":2754,"nodeType":"Return","src":"7766:11:10"}]},"documentation":"@notice Approve `spender` to transfer up to `amount` from `src`\n@dev This will overwrite the approval amount for `spender`\n and is subject to issues noted [here](https://eips.ethereum.org/EIPS/eip-20#approve)\n@param spender The address of the account which may transfer tokens\n@param amount The number of tokens that are approved (-1 means infinite)\n@return Whether or not the approval succeeded","id":2756,"implemented":true,"kind":"function","modifiers":[],"name":"approve","nodeType":"FunctionDefinition","parameters":{"id":2730,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2727,"name":"spender","nodeType":"VariableDeclaration","scope":2756,"src":"7569:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2726,"name":"address","nodeType":"ElementaryTypeName","src":"7569:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":2729,"name":"amount","nodeType":"VariableDeclaration","scope":2756,"src":"7586:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2728,"name":"uint256","nodeType":"ElementaryTypeName","src":"7586:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"7568:33:10"},"returnParameters":{"id":2733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2732,"name":"","nodeType":"VariableDeclaration","scope":2756,"src":"7620:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2731,"name":"bool","nodeType":"ElementaryTypeName","src":"7620:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"7619:6:10"},"scope":6186,"src":"7552:232:10","stateMutability":"nonpayable","superFunction":6438,"visibility":"external"},{"body":{"id":2771,"nodeType":"Block","src":"8189:58:10","statements":[{"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":2765,"name":"transferAllowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6258,"src":"8206:18:10","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":2767,"indexExpression":{"argumentTypes":null,"id":2766,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2758,"src":"8225:5:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8206:25:10","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2769,"indexExpression":{"argumentTypes":null,"id":2768,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2760,"src":"8232:7:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8206:34:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2764,"id":2770,"nodeType":"Return","src":"8199:41:10"}]},"documentation":"@notice Get the current allowance from `owner` for `spender`\n@param owner The address of the account which owns the tokens to be spent\n@param spender The address of the account which may transfer tokens\n@return The number of tokens allowed to be spent (-1 means infinite)","id":2772,"implemented":true,"kind":"function","modifiers":[],"name":"allowance","nodeType":"FunctionDefinition","parameters":{"id":2761,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2758,"name":"owner","nodeType":"VariableDeclaration","scope":2772,"src":"8125:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2757,"name":"address","nodeType":"ElementaryTypeName","src":"8125:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":2760,"name":"spender","nodeType":"VariableDeclaration","scope":2772,"src":"8140:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2759,"name":"address","nodeType":"ElementaryTypeName","src":"8140:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"8124:32:10"},"returnParameters":{"id":2764,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2763,"name":"","nodeType":"VariableDeclaration","scope":2772,"src":"8180:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2762,"name":"uint256","nodeType":"ElementaryTypeName","src":"8180:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"8179:9:10"},"scope":6186,"src":"8106:141:10","stateMutability":"view","superFunction":6447,"visibility":"external"},{"body":{"id":2783,"nodeType":"Block","src":"8496:44:10","statements":[{"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":2779,"name":"accountTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6252,"src":"8513:13:10","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2781,"indexExpression":{"argumentTypes":null,"id":2780,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2774,"src":"8527:5:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8513:20:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2778,"id":2782,"nodeType":"Return","src":"8506:27:10"}]},"documentation":"@notice Get the token balance of the `owner`\n@param owner The address of the account to query\n@return The number of tokens owned by `owner`","id":2784,"implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nodeType":"FunctionDefinition","parameters":{"id":2775,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2774,"name":"owner","nodeType":"VariableDeclaration","scope":2784,"src":"8449:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2773,"name":"address","nodeType":"ElementaryTypeName","src":"8449:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"8448:15:10"},"returnParameters":{"id":2778,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2777,"name":"","nodeType":"VariableDeclaration","scope":2784,"src":"8487:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2776,"name":"uint256","nodeType":"ElementaryTypeName","src":"8487:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"8486:9:10"},"scope":6186,"src":"8430:110:10","stateMutability":"view","superFunction":6454,"visibility":"external"},{"body":{"id":2819,"nodeType":"Block","src":"8856:281:10","statements":[{"assignments":[2792],"declarations":[{"constant":false,"id":2792,"name":"exchangeRate","nodeType":"VariableDeclaration","scope":2819,"src":"8866:23:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":2791,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"8866:3:10","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"}],"id":2797,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":2794,"name":"exchangeRateCurrent","nodeType":"Identifier","overloadedDeclarations":[3135],"referencedDeclaration":3135,"src":"8907:19:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_uint256_$","typeString":"function () returns (uint256)"}},"id":2795,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8907:21:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2793,"name":"Exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14390,"src":"8892:3:10","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Exp_$14390_storage_ptr_$","typeString":"type(struct ExponentialNoError.Exp storage pointer)"}},"id":2796,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"8892:38:10","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}},"nodeType":"VariableDeclarationStatement","src":"8866:64:10"},{"assignments":[2799,2801],"declarations":[{"constant":false,"id":2799,"name":"mErr","nodeType":"VariableDeclaration","scope":2819,"src":"8941:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"typeName":{"contractScope":null,"id":2798,"name":"MathError","nodeType":"UserDefinedTypeName","referencedDeclaration":6659,"src":"8941:9:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"value":null,"visibility":"internal"},{"constant":false,"id":2801,"name":"balance","nodeType":"VariableDeclaration","scope":2819,"src":"8957:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2800,"name":"uint","nodeType":"ElementaryTypeName","src":"8957:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":2808,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2803,"name":"exchangeRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2792,"src":"8991:12:10","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":2804,"name":"accountTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6252,"src":"9005:13:10","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2806,"indexExpression":{"argumentTypes":null,"id":2805,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2786,"src":"9019:5:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9005:20:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2802,"name":"mulScalarTruncate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14055,"src":"8973:17:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Exp_$14390_memory_ptr_$_t_uint256_$returns$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"function (struct ExponentialNoError.Exp memory,uint256) pure returns (enum CarefulMath.MathError,uint256)"}},"id":2807,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8973:53:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"8940:86:10"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"id":2813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":2810,"name":"mErr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2799,"src":"9044:4:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":2811,"name":"MathError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6659,"src":"9052:9:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MathError_$6659_$","typeString":"type(enum CarefulMath.MathError)"}},"id":2812,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"9052:18:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"src":"9044:26:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"62616c616e636520636f756c64206e6f742062652063616c63756c61746564","id":2814,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9072:33:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_0e9121cb20ef6f48056bdb2f264782f64eb300ccc77c144db27a677810cb10a1","typeString":"literal_string \"balance could not be calculated\""},"value":"balance could not be calculated"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_0e9121cb20ef6f48056bdb2f264782f64eb300ccc77c144db27a677810cb10a1","typeString":"literal_string \"balance could not be calculated\""}],"id":2809,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"9036:7:10","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2815,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9036:70:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2816,"nodeType":"ExpressionStatement","src":"9036:70:10"},{"expression":{"argumentTypes":null,"id":2817,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2801,"src":"9123:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2790,"id":2818,"nodeType":"Return","src":"9116:14:10"}]},"documentation":"@notice Get the underlying balance of the `owner`\n@dev This also accrues interest in a transaction\n@param owner The address of the account to query\n@return The amount of underlying owned by `owner`","id":2820,"implemented":true,"kind":"function","modifiers":[],"name":"balanceOfUnderlying","nodeType":"FunctionDefinition","parameters":{"id":2787,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2786,"name":"owner","nodeType":"VariableDeclaration","scope":2820,"src":"8817:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2785,"name":"address","nodeType":"ElementaryTypeName","src":"8817:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"8816:15:10"},"returnParameters":{"id":2790,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2789,"name":"","nodeType":"VariableDeclaration","scope":2820,"src":"8850:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2788,"name":"uint","nodeType":"ElementaryTypeName","src":"8850:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"8849:6:10"},"scope":6186,"src":"8788:349:10","stateMutability":"nonpayable","superFunction":6461,"visibility":"external"},{"body":{"id":2902,"nodeType":"Block","src":"9567:593:10","statements":[{"assignments":[2834],"declarations":[{"constant":false,"id":2834,"name":"cTokenBalance","nodeType":"VariableDeclaration","scope":2902,"src":"9577:18:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2833,"name":"uint","nodeType":"ElementaryTypeName","src":"9577:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":2838,"initialValue":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":2835,"name":"accountTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6252,"src":"9598:13:10","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2837,"indexExpression":{"argumentTypes":null,"id":2836,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2822,"src":"9612:7:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9598:22:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9577:43:10"},{"assignments":[2840],"declarations":[{"constant":false,"id":2840,"name":"borrowBalance","nodeType":"VariableDeclaration","scope":2902,"src":"9630:18:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2839,"name":"uint","nodeType":"ElementaryTypeName","src":"9630:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":2841,"initialValue":null,"nodeType":"VariableDeclarationStatement","src":"9630:18:10"},{"assignments":[2843],"declarations":[{"constant":false,"id":2843,"name":"exchangeRateMantissa","nodeType":"VariableDeclaration","scope":2902,"src":"9658:25:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2842,"name":"uint","nodeType":"ElementaryTypeName","src":"9658:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":2844,"initialValue":null,"nodeType":"VariableDeclarationStatement","src":"9658:25:10"},{"assignments":[2846],"declarations":[{"constant":false,"id":2846,"name":"mErr","nodeType":"VariableDeclaration","scope":2902,"src":"9694:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"typeName":{"contractScope":null,"id":2845,"name":"MathError","nodeType":"UserDefinedTypeName","referencedDeclaration":6659,"src":"9694:9:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"value":null,"visibility":"internal"}],"id":2847,"initialValue":null,"nodeType":"VariableDeclarationStatement","src":"9694:14:10"},{"expression":{"argumentTypes":null,"id":2854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":2848,"name":"mErr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2846,"src":"9720:4:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},{"argumentTypes":null,"id":2849,"name":"borrowBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2840,"src":"9726:13:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2850,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"9719:21:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2852,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2822,"src":"9771:7:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2851,"name":"borrowBalanceStoredInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3112,"src":"9743:27:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"function (address) view returns (enum CarefulMath.MathError,uint256)"}},"id":2853,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9743:36:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"src":"9719:60:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2855,"nodeType":"ExpressionStatement","src":"9719:60:10"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"id":2859,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":2856,"name":"mErr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2846,"src":"9793:4:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":2857,"name":"MathError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6659,"src":"9801:9:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MathError_$6659_$","typeString":"type(enum CarefulMath.MathError)"}},"id":2858,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"9801:18:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"src":"9793:26:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":2870,"nodeType":"IfStatement","src":"9789:97:10","trueBody":{"id":2869,"nodeType":"Block","src":"9821:65:10","statements":[{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":2861,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"9848:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":2862,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"MATH_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"9848:16:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}],"id":2860,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9843:4:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":2863,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9843:22:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"30","id":2864,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9867:1:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"argumentTypes":null,"hexValue":"30","id":2865,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9870:1:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"argumentTypes":null,"hexValue":"30","id":2866,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9873:1:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":2867,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9842:33:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_rational_0_by_1_$_t_rational_0_by_1_$_t_rational_0_by_1_$","typeString":"tuple(uint256,int_const 0,int_const 0,int_const 0)"}},"functionReturnParameters":2832,"id":2868,"nodeType":"Return","src":"9835:40:10"}]}},{"expression":{"argumentTypes":null,"id":2876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":2871,"name":"mErr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2846,"src":"9897:4:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},{"argumentTypes":null,"id":2872,"name":"exchangeRateMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2843,"src":"9903:20:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2873,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"9896:28:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":2874,"name":"exchangeRateStoredInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3246,"src":"9927:26:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"function () view returns (enum CarefulMath.MathError,uint256)"}},"id":2875,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9927:28:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"src":"9896:59:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2877,"nodeType":"ExpressionStatement","src":"9896:59:10"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"id":2881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":2878,"name":"mErr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2846,"src":"9969:4:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":2879,"name":"MathError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6659,"src":"9977:9:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MathError_$6659_$","typeString":"type(enum CarefulMath.MathError)"}},"id":2880,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"9977:18:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"src":"9969:26:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":2892,"nodeType":"IfStatement","src":"9965:97:10","trueBody":{"id":2891,"nodeType":"Block","src":"9997:65:10","statements":[{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":2883,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"10024:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":2884,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"MATH_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"10024:16:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}],"id":2882,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10019:4:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":2885,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10019:22:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"30","id":2886,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10043:1:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"argumentTypes":null,"hexValue":"30","id":2887,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10046:1:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"argumentTypes":null,"hexValue":"30","id":2888,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10049:1:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":2889,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"10018:33:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_rational_0_by_1_$_t_rational_0_by_1_$_t_rational_0_by_1_$","typeString":"tuple(uint256,int_const 0,int_const 0,int_const 0)"}},"functionReturnParameters":2832,"id":2890,"nodeType":"Return","src":"10011:40:10"}]}},{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":2894,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"10085:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":2895,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"10085:14:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}],"id":2893,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10080:4:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":2896,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10080:20:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":2897,"name":"cTokenBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2834,"src":"10102:13:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":2898,"name":"borrowBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2840,"src":"10117:13:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":2899,"name":"exchangeRateMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2843,"src":"10132:20:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2900,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10079:74:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256,uint256,uint256)"}},"functionReturnParameters":2832,"id":2901,"nodeType":"Return","src":"10072:81:10"}]},"documentation":"@notice Get a snapshot of the account's balances, and the cached exchange rate\n@dev This is used by comptroller to more efficiently perform liquidity checks.\n@param account Address of the account to snapshot\n@return (possible error, token balance, borrow balance, exchange rate mantissa)","id":2903,"implemented":true,"kind":"function","modifiers":[],"name":"getAccountSnapshot","nodeType":"FunctionDefinition","parameters":{"id":2823,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2822,"name":"account","nodeType":"VariableDeclaration","scope":2903,"src":"9503:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2821,"name":"address","nodeType":"ElementaryTypeName","src":"9503:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"9502:17:10"},"returnParameters":{"id":2832,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2825,"name":"","nodeType":"VariableDeclaration","scope":2903,"src":"9543:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2824,"name":"uint","nodeType":"ElementaryTypeName","src":"9543:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":2827,"name":"","nodeType":"VariableDeclaration","scope":2903,"src":"9549:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2826,"name":"uint","nodeType":"ElementaryTypeName","src":"9549:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":2829,"name":"","nodeType":"VariableDeclaration","scope":2903,"src":"9555:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2828,"name":"uint","nodeType":"ElementaryTypeName","src":"9555:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":2831,"name":"","nodeType":"VariableDeclaration","scope":2903,"src":"9561:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2830,"name":"uint","nodeType":"ElementaryTypeName","src":"9561:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"9542:24:10"},"scope":6186,"src":"9475:685:10","stateMutability":"view","superFunction":6474,"visibility":"external"},{"body":{"id":2911,"nodeType":"Block","src":"10368:36:10","statements":[{"expression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":2908,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22540,"src":"10385:5:10","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":2909,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"number","nodeType":"MemberAccess","referencedDeclaration":null,"src":"10385:12:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2907,"id":2910,"nodeType":"Return","src":"10378:19:10"}]},"documentation":"@dev Function to simply retrieve block number\n This exists mainly for inheriting test contracts to stub this result.","id":2912,"implemented":true,"kind":"function","modifiers":[],"name":"getBlockNumber","nodeType":"FunctionDefinition","parameters":{"id":2904,"nodeType":"ParameterList","parameters":[],"src":"10336:2:10"},"returnParameters":{"id":2907,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2906,"name":"","nodeType":"VariableDeclaration","scope":2912,"src":"10362:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2905,"name":"uint","nodeType":"ElementaryTypeName","src":"10362:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"10361:6:10"},"scope":6186,"src":"10313:91:10","stateMutability":"view","superFunction":null,"visibility":"internal"},{"body":{"id":2931,"nodeType":"Block","src":"10633:143:10","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":2919,"name":"getCashPrior","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6075,"src":"10682:12:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":2920,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10682:14:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":2921,"name":"totalBorrows","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6240,"src":"10698:12:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2923,"name":"totalReserves","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6242,"src":"10717:13:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2925,"name":"totalAdminFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6244,"src":"10737:14:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":2926,"name":"totalFuseFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6246,"src":"10753:13:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2924,"name":"add_","nodeType":"Identifier","overloadedDeclarations":[14579,14598,14614,14641],"referencedDeclaration":14614,"src":"10732:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":2927,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10732:35:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2922,"name":"add_","nodeType":"Identifier","overloadedDeclarations":[14579,14598,14614,14641],"referencedDeclaration":14614,"src":"10712:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":2928,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10712:56:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":2917,"name":"interestRateModel","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6226,"src":"10650:17:10","typeDescriptions":{"typeIdentifier":"t_contract$_InterestRateModel_$17398","typeString":"contract InterestRateModel"}},"id":2918,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getBorrowRate","nodeType":"MemberAccess","referencedDeclaration":17384,"src":"10650:31:10","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) view external returns (uint256)"}},"id":2929,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10650:119:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2916,"id":2930,"nodeType":"Return","src":"10643:126:10"}]},"documentation":"@notice Returns the current per-block borrow interest rate for this cToken\n@return The borrow interest rate per block, scaled by 1e18","id":2932,"implemented":true,"kind":"function","modifiers":[],"name":"borrowRatePerBlock","nodeType":"FunctionDefinition","parameters":{"id":2913,"nodeType":"ParameterList","parameters":[],"src":"10601:2:10"},"returnParameters":{"id":2916,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2915,"name":"","nodeType":"VariableDeclaration","scope":2932,"src":"10627:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2914,"name":"uint","nodeType":"ElementaryTypeName","src":"10627:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"10626:6:10"},"scope":6186,"src":"10574:202:10","stateMutability":"view","superFunction":6479,"visibility":"external"},{"body":{"id":2956,"nodeType":"Block","src":"11005:203:10","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":2939,"name":"getCashPrior","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6075,"src":"11054:12:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":2940,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11054:14:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":2941,"name":"totalBorrows","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6240,"src":"11070:12:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2943,"name":"totalReserves","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6242,"src":"11089:13:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2945,"name":"totalAdminFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6244,"src":"11109:14:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":2946,"name":"totalFuseFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6246,"src":"11125:13:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2944,"name":"add_","nodeType":"Identifier","overloadedDeclarations":[14579,14598,14614,14641],"referencedDeclaration":14614,"src":"11104:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":2947,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11104:35:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2942,"name":"add_","nodeType":"Identifier","overloadedDeclarations":[14579,14598,14614,14641],"referencedDeclaration":14614,"src":"11084:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":2948,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11084:56:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2953,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2951,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":2949,"name":"reserveFactorMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6234,"src":"11142:21:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"argumentTypes":null,"id":2950,"name":"fuseFeeMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6232,"src":"11166:15:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11142:39:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"argumentTypes":null,"id":2952,"name":"adminFeeMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6230,"src":"11184:16:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11142:58:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":2937,"name":"interestRateModel","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6226,"src":"11022:17:10","typeDescriptions":{"typeIdentifier":"t_contract$_InterestRateModel_$17398","typeString":"contract InterestRateModel"}},"id":2938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getSupplyRate","nodeType":"MemberAccess","referencedDeclaration":17397,"src":"11022:31:10","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256,uint256) view external returns (uint256)"}},"id":2954,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11022:179:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2936,"id":2955,"nodeType":"Return","src":"11015:186:10"}]},"documentation":"@notice Returns the current per-block supply interest rate for this cToken\n@return The supply interest rate per block, scaled by 1e18","id":2957,"implemented":true,"kind":"function","modifiers":[],"name":"supplyRatePerBlock","nodeType":"FunctionDefinition","parameters":{"id":2933,"nodeType":"ParameterList","parameters":[],"src":"10973:2:10"},"returnParameters":{"id":2936,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2935,"name":"","nodeType":"VariableDeclaration","scope":2957,"src":"10999:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2934,"name":"uint","nodeType":"ElementaryTypeName","src":"10999:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"10998:6:10"},"scope":6186,"src":"10946:262:10","stateMutability":"view","superFunction":6484,"visibility":"external"},{"body":{"id":2978,"nodeType":"Block","src":"11423:121:10","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":2966,"name":"accrueInterest","nodeType":"Identifier","overloadedDeclarations":[3327],"referencedDeclaration":3327,"src":"11441:14:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_uint256_$","typeString":"function () returns (uint256)"}},"id":2967,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11441:16:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":2969,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"11466:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":2970,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"11466:14:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}],"id":2968,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11461:4:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":2971,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11461:20:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11441:40:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"61636372756520696e746572657374206661696c6564","id":2973,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11483:24:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_0ae1c3a6990b014f49c6cecca4c55d4276bada05d5796bb1e12f259b29f3de8e","typeString":"literal_string \"accrue interest failed\""},"value":"accrue interest failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_0ae1c3a6990b014f49c6cecca4c55d4276bada05d5796bb1e12f259b29f3de8e","typeString":"literal_string \"accrue interest failed\""}],"id":2965,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"11433:7:10","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2974,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11433:75:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2975,"nodeType":"ExpressionStatement","src":"11433:75:10"},{"expression":{"argumentTypes":null,"id":2976,"name":"totalBorrows","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6240,"src":"11525:12:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2964,"id":2977,"nodeType":"Return","src":"11518:19:10"}]},"documentation":"@notice Returns the current total borrows plus accrued interest\n@return The total borrows with interest","id":2979,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"argumentTypes":null,"hexValue":"66616c7365","id":2960,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"11401:5:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"id":2961,"modifierName":{"argumentTypes":null,"id":2959,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6105,"src":"11388:12:10","typeDescriptions":{"typeIdentifier":"t_modifier$_t_bool_$","typeString":"modifier (bool)"}},"nodeType":"ModifierInvocation","src":"11388:19:10"}],"name":"totalBorrowsCurrent","nodeType":"FunctionDefinition","parameters":{"id":2958,"nodeType":"ParameterList","parameters":[],"src":"11376:2:10"},"returnParameters":{"id":2964,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2963,"name":"","nodeType":"VariableDeclaration","scope":2979,"src":"11417:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2962,"name":"uint","nodeType":"ElementaryTypeName","src":"11417:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"11416:6:10"},"scope":6186,"src":"11348:196:10","stateMutability":"nonpayable","superFunction":6489,"visibility":"external"},{"body":{"id":3004,"nodeType":"Block","src":"11919:137:10","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2996,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":2990,"name":"accrueInterest","nodeType":"Identifier","overloadedDeclarations":[3327],"referencedDeclaration":3327,"src":"11937:14:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_uint256_$","typeString":"function () returns (uint256)"}},"id":2991,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11937:16:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":2993,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"11962:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":2994,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"11962:14:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}],"id":2992,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11957:4:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":2995,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11957:20:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11937:40:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"61636372756520696e746572657374206661696c6564","id":2997,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11979:24:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_0ae1c3a6990b014f49c6cecca4c55d4276bada05d5796bb1e12f259b29f3de8e","typeString":"literal_string \"accrue interest failed\""},"value":"accrue interest failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_0ae1c3a6990b014f49c6cecca4c55d4276bada05d5796bb1e12f259b29f3de8e","typeString":"literal_string \"accrue interest failed\""}],"id":2989,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"11929:7:10","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2998,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11929:75:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2999,"nodeType":"ExpressionStatement","src":"11929:75:10"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3001,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2981,"src":"12041:7:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3000,"name":"borrowBalanceStored","nodeType":"Identifier","overloadedDeclarations":[3031],"referencedDeclaration":3031,"src":"12021:19:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":3002,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12021:28:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2988,"id":3003,"nodeType":"Return","src":"12014:35:10"}]},"documentation":"@notice Accrue interest to updated borrowIndex and then calculate account's borrow balance using the updated borrowIndex\n@param account The address whose balance should be calculated after updating borrowIndex\n@return The calculated balance","id":3005,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"argumentTypes":null,"hexValue":"66616c7365","id":2984,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"11897:5:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"id":2985,"modifierName":{"argumentTypes":null,"id":2983,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6105,"src":"11884:12:10","typeDescriptions":{"typeIdentifier":"t_modifier$_t_bool_$","typeString":"modifier (bool)"}},"nodeType":"ModifierInvocation","src":"11884:19:10"}],"name":"borrowBalanceCurrent","nodeType":"FunctionDefinition","parameters":{"id":2982,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2981,"name":"account","nodeType":"VariableDeclaration","scope":3005,"src":"11858:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2980,"name":"address","nodeType":"ElementaryTypeName","src":"11858:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"11857:17:10"},"returnParameters":{"id":2988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2987,"name":"","nodeType":"VariableDeclaration","scope":3005,"src":"11913:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2986,"name":"uint","nodeType":"ElementaryTypeName","src":"11913:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"11912:6:10"},"scope":6186,"src":"11828:228:10","stateMutability":"nonpayable","superFunction":6496,"visibility":"external"},{"body":{"id":3030,"nodeType":"Block","src":"12331:210:10","statements":[{"assignments":[3013,3015],"declarations":[{"constant":false,"id":3013,"name":"err","nodeType":"VariableDeclaration","scope":3030,"src":"12342:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"typeName":{"contractScope":null,"id":3012,"name":"MathError","nodeType":"UserDefinedTypeName","referencedDeclaration":6659,"src":"12342:9:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"value":null,"visibility":"internal"},{"constant":false,"id":3015,"name":"result","nodeType":"VariableDeclaration","scope":3030,"src":"12357:11:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3014,"name":"uint","nodeType":"ElementaryTypeName","src":"12357:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":3019,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3017,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3007,"src":"12400:7:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3016,"name":"borrowBalanceStoredInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3112,"src":"12372:27:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"function (address) view returns (enum CarefulMath.MathError,uint256)"}},"id":3018,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12372:36:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"12341:67:10"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"id":3024,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":3021,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3013,"src":"12426:3:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3022,"name":"MathError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6659,"src":"12433:9:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MathError_$6659_$","typeString":"type(enum CarefulMath.MathError)"}},"id":3023,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"12433:18:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"src":"12426:25:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"626f72726f7742616c616e636553746f7265643a20626f72726f7742616c616e636553746f726564496e7465726e616c206661696c6564","id":3025,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12453:57:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_8825dc702edb5f60088d39fa3a6dc2db62be3613ea83047e025f5e671831b860","typeString":"literal_string \"borrowBalanceStored: borrowBalanceStoredInternal failed\""},"value":"borrowBalanceStored: borrowBalanceStoredInternal failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8825dc702edb5f60088d39fa3a6dc2db62be3613ea83047e025f5e671831b860","typeString":"literal_string \"borrowBalanceStored: borrowBalanceStoredInternal failed\""}],"id":3020,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"12418:7:10","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3026,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12418:93:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3027,"nodeType":"ExpressionStatement","src":"12418:93:10"},{"expression":{"argumentTypes":null,"id":3028,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3015,"src":"12528:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3011,"id":3029,"nodeType":"Return","src":"12521:13:10"}]},"documentation":"@notice Return the borrow balance of account based on stored data\n@param account The address whose balance should be calculated\n@return The calculated balance","id":3031,"implemented":true,"kind":"function","modifiers":[],"name":"borrowBalanceStored","nodeType":"FunctionDefinition","parameters":{"id":3008,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3007,"name":"account","nodeType":"VariableDeclaration","scope":3031,"src":"12287:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3006,"name":"address","nodeType":"ElementaryTypeName","src":"12287:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"12286:17:10"},"returnParameters":{"id":3011,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3010,"name":"","nodeType":"VariableDeclaration","scope":3031,"src":"12325:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3009,"name":"uint","nodeType":"ElementaryTypeName","src":"12325:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"12324:6:10"},"scope":6186,"src":"12258:283:10","stateMutability":"view","superFunction":6503,"visibility":"public"},{"body":{"id":3111,"nodeType":"Block","src":"12882:1144:10","statements":[{"assignments":[3041],"declarations":[{"constant":false,"id":3041,"name":"mathErr","nodeType":"VariableDeclaration","scope":3111,"src":"12959:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"typeName":{"contractScope":null,"id":3040,"name":"MathError","nodeType":"UserDefinedTypeName","referencedDeclaration":6659,"src":"12959:9:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"value":null,"visibility":"internal"}],"id":3042,"initialValue":null,"nodeType":"VariableDeclarationStatement","src":"12959:17:10"},{"assignments":[3044],"declarations":[{"constant":false,"id":3044,"name":"principalTimesIndex","nodeType":"VariableDeclaration","scope":3111,"src":"12986:24:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3043,"name":"uint","nodeType":"ElementaryTypeName","src":"12986:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":3045,"initialValue":null,"nodeType":"VariableDeclarationStatement","src":"12986:24:10"},{"assignments":[3047],"declarations":[{"constant":false,"id":3047,"name":"result","nodeType":"VariableDeclaration","scope":3111,"src":"13020:11:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3046,"name":"uint","nodeType":"ElementaryTypeName","src":"13020:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":3048,"initialValue":null,"nodeType":"VariableDeclarationStatement","src":"13020:11:10"},{"assignments":[3050],"declarations":[{"constant":false,"id":3050,"name":"borrowSnapshot","nodeType":"VariableDeclaration","scope":3111,"src":"13090:37:10","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BorrowSnapshot_$6263_storage_ptr","typeString":"struct CTokenStorage.BorrowSnapshot"},"typeName":{"contractScope":null,"id":3049,"name":"BorrowSnapshot","nodeType":"UserDefinedTypeName","referencedDeclaration":6263,"src":"13090:14:10","typeDescriptions":{"typeIdentifier":"t_struct$_BorrowSnapshot_$6263_storage_ptr","typeString":"struct CTokenStorage.BorrowSnapshot"}},"value":null,"visibility":"internal"}],"id":3054,"initialValue":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":3051,"name":"accountBorrows","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6267,"src":"13130:14:10","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_BorrowSnapshot_$6263_storage_$","typeString":"mapping(address => struct CTokenStorage.BorrowSnapshot storage ref)"}},"id":3053,"indexExpression":{"argumentTypes":null,"id":3052,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3033,"src":"13145:7:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13130:23:10","typeDescriptions":{"typeIdentifier":"t_struct$_BorrowSnapshot_$6263_storage","typeString":"struct CTokenStorage.BorrowSnapshot storage ref"}},"nodeType":"VariableDeclarationStatement","src":"13090:63:10"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3058,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3055,"name":"borrowSnapshot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3050,"src":"13354:14:10","typeDescriptions":{"typeIdentifier":"t_struct$_BorrowSnapshot_$6263_storage_ptr","typeString":"struct CTokenStorage.BorrowSnapshot storage pointer"}},"id":3056,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"principal","nodeType":"MemberAccess","referencedDeclaration":6260,"src":"13354:24:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":3057,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13382:1:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13354:29:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":3065,"nodeType":"IfStatement","src":"13350:90:10","trueBody":{"id":3064,"nodeType":"Block","src":"13385:55:10","statements":[{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3059,"name":"MathError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6659,"src":"13407:9:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MathError_$6659_$","typeString":"type(enum CarefulMath.MathError)"}},"id":3060,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"13407:18:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},{"argumentTypes":null,"hexValue":"30","id":3061,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13427:1:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":3062,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"13406:23:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_rational_0_by_1_$","typeString":"tuple(enum CarefulMath.MathError,int_const 0)"}},"functionReturnParameters":3039,"id":3063,"nodeType":"Return","src":"13399:30:10"}]}},{"expression":{"argumentTypes":null,"id":3074,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":3066,"name":"mathErr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3041,"src":"13630:7:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},{"argumentTypes":null,"id":3067,"name":"principalTimesIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3044,"src":"13639:19:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3068,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"13629:30:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3070,"name":"borrowSnapshot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3050,"src":"13670:14:10","typeDescriptions":{"typeIdentifier":"t_struct$_BorrowSnapshot_$6263_storage_ptr","typeString":"struct CTokenStorage.BorrowSnapshot storage pointer"}},"id":3071,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"principal","nodeType":"MemberAccess","referencedDeclaration":6260,"src":"13670:24:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":3072,"name":"borrowIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6238,"src":"13696:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3069,"name":"mulUInt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6705,"src":"13662:7:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (enum CarefulMath.MathError,uint256)"}},"id":3073,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13662:46:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"src":"13629:79:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3075,"nodeType":"ExpressionStatement","src":"13629:79:10"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"id":3079,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":3076,"name":"mathErr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3041,"src":"13722:7:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3077,"name":"MathError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6659,"src":"13733:9:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MathError_$6659_$","typeString":"type(enum CarefulMath.MathError)"}},"id":3078,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"13733:18:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"src":"13722:29:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":3085,"nodeType":"IfStatement","src":"13718:79:10","trueBody":{"id":3084,"nodeType":"Block","src":"13753:44:10","statements":[{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":3080,"name":"mathErr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3041,"src":"13775:7:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},{"argumentTypes":null,"hexValue":"30","id":3081,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13784:1:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":3082,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13774:12:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_rational_0_by_1_$","typeString":"tuple(enum CarefulMath.MathError,int_const 0)"}},"functionReturnParameters":3039,"id":3083,"nodeType":"Return","src":"13767:19:10"}]}},{"expression":{"argumentTypes":null,"id":3094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":3086,"name":"mathErr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3041,"src":"13808:7:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},{"argumentTypes":null,"id":3087,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3047,"src":"13817:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3088,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"13807:17:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3090,"name":"principalTimesIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3044,"src":"13835:19:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3091,"name":"borrowSnapshot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3050,"src":"13856:14:10","typeDescriptions":{"typeIdentifier":"t_struct$_BorrowSnapshot_$6263_storage_ptr","typeString":"struct CTokenStorage.BorrowSnapshot storage pointer"}},"id":3092,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"interestIndex","nodeType":"MemberAccess","referencedDeclaration":6262,"src":"13856:28:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3089,"name":"divUInt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6734,"src":"13827:7:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (enum CarefulMath.MathError,uint256)"}},"id":3093,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13827:58:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"src":"13807:78:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3095,"nodeType":"ExpressionStatement","src":"13807:78:10"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"id":3099,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":3096,"name":"mathErr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3041,"src":"13899:7:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3097,"name":"MathError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6659,"src":"13910:9:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MathError_$6659_$","typeString":"type(enum CarefulMath.MathError)"}},"id":3098,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"13910:18:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"src":"13899:29:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":3105,"nodeType":"IfStatement","src":"13895:79:10","trueBody":{"id":3104,"nodeType":"Block","src":"13930:44:10","statements":[{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":3100,"name":"mathErr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3041,"src":"13952:7:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},{"argumentTypes":null,"hexValue":"30","id":3101,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13961:1:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":3102,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13951:12:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_rational_0_by_1_$","typeString":"tuple(enum CarefulMath.MathError,int_const 0)"}},"functionReturnParameters":3039,"id":3103,"nodeType":"Return","src":"13944:19:10"}]}},{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3106,"name":"MathError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6659,"src":"13992:9:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MathError_$6659_$","typeString":"type(enum CarefulMath.MathError)"}},"id":3107,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"13992:18:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},{"argumentTypes":null,"id":3108,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3047,"src":"14012:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3109,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13991:28:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"functionReturnParameters":3039,"id":3110,"nodeType":"Return","src":"13984:35:10"}]},"documentation":"@notice Return the borrow balance of account based on stored data\n@param account The address whose balance should be calculated\n@return (error code, the calculated balance or 0 if error code is non-zero)","id":3112,"implemented":true,"kind":"function","modifiers":[],"name":"borrowBalanceStoredInternal","nodeType":"FunctionDefinition","parameters":{"id":3034,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3033,"name":"account","nodeType":"VariableDeclaration","scope":3112,"src":"12825:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3032,"name":"address","nodeType":"ElementaryTypeName","src":"12825:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"12824:17:10"},"returnParameters":{"id":3039,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3036,"name":"","nodeType":"VariableDeclaration","scope":3112,"src":"12865:9:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"typeName":{"contractScope":null,"id":3035,"name":"MathError","nodeType":"UserDefinedTypeName","referencedDeclaration":6659,"src":"12865:9:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"value":null,"visibility":"internal"},{"constant":false,"id":3038,"name":"","nodeType":"VariableDeclaration","scope":3112,"src":"12876:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3037,"name":"uint","nodeType":"ElementaryTypeName","src":"12876:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"12864:17:10"},"scope":6186,"src":"12788:1238:10","stateMutability":"view","superFunction":null,"visibility":"internal"},{"body":{"id":3134,"nodeType":"Block","src":"14248:129:10","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3127,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":3121,"name":"accrueInterest","nodeType":"Identifier","overloadedDeclarations":[3327],"referencedDeclaration":3327,"src":"14266:14:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_uint256_$","typeString":"function () returns (uint256)"}},"id":3122,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14266:16:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3124,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"14291:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":3125,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"14291:14:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}],"id":3123,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14286:4:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":3126,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14286:20:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14266:40:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"61636372756520696e746572657374206661696c6564","id":3128,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"14308:24:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_0ae1c3a6990b014f49c6cecca4c55d4276bada05d5796bb1e12f259b29f3de8e","typeString":"literal_string \"accrue interest failed\""},"value":"accrue interest failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_0ae1c3a6990b014f49c6cecca4c55d4276bada05d5796bb1e12f259b29f3de8e","typeString":"literal_string \"accrue interest failed\""}],"id":3120,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"14258:7:10","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3129,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14258:75:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3130,"nodeType":"ExpressionStatement","src":"14258:75:10"},{"expression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":3131,"name":"exchangeRateStored","nodeType":"Identifier","overloadedDeclarations":[3158],"referencedDeclaration":3158,"src":"14350:18:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":3132,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14350:20:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3119,"id":3133,"nodeType":"Return","src":"14343:27:10"}]},"documentation":"@notice Accrue interest then return the up-to-date exchange rate\n@return Calculated exchange rate scaled by 1e18","id":3135,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"argumentTypes":null,"hexValue":"66616c7365","id":3115,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"14226:5:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"id":3116,"modifierName":{"argumentTypes":null,"id":3114,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6105,"src":"14213:12:10","typeDescriptions":{"typeIdentifier":"t_modifier$_t_bool_$","typeString":"modifier (bool)"}},"nodeType":"ModifierInvocation","src":"14213:19:10"}],"name":"exchangeRateCurrent","nodeType":"FunctionDefinition","parameters":{"id":3113,"nodeType":"ParameterList","parameters":[],"src":"14203:2:10"},"returnParameters":{"id":3119,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3118,"name":"","nodeType":"VariableDeclaration","scope":3135,"src":"14242:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3117,"name":"uint","nodeType":"ElementaryTypeName","src":"14242:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"14241:6:10"},"scope":6186,"src":"14175:202:10","stateMutability":"nonpayable","superFunction":6508,"visibility":"public"},{"body":{"id":3157,"nodeType":"Block","src":"14677:200:10","statements":[{"assignments":[3141,3143],"declarations":[{"constant":false,"id":3141,"name":"err","nodeType":"VariableDeclaration","scope":3157,"src":"14688:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"typeName":{"contractScope":null,"id":3140,"name":"MathError","nodeType":"UserDefinedTypeName","referencedDeclaration":6659,"src":"14688:9:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"value":null,"visibility":"internal"},{"constant":false,"id":3143,"name":"result","nodeType":"VariableDeclaration","scope":3157,"src":"14703:11:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3142,"name":"uint","nodeType":"ElementaryTypeName","src":"14703:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":3146,"initialValue":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":3144,"name":"exchangeRateStoredInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3246,"src":"14718:26:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"function () view returns (enum CarefulMath.MathError,uint256)"}},"id":3145,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14718:28:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"14687:59:10"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"id":3151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":3148,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3141,"src":"14764:3:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3149,"name":"MathError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6659,"src":"14771:9:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MathError_$6659_$","typeString":"type(enum CarefulMath.MathError)"}},"id":3150,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"14771:18:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"src":"14764:25:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"65786368616e67655261746553746f7265643a2065786368616e67655261746553746f726564496e7465726e616c206661696c6564","id":3152,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"14791:55:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_dbb9242fc3facb546962a4d074b33f7d1e2606e6817021a0c962231003173b9b","typeString":"literal_string \"exchangeRateStored: exchangeRateStoredInternal failed\""},"value":"exchangeRateStored: exchangeRateStoredInternal failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_dbb9242fc3facb546962a4d074b33f7d1e2606e6817021a0c962231003173b9b","typeString":"literal_string \"exchangeRateStored: exchangeRateStoredInternal failed\""}],"id":3147,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"14756:7:10","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3153,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14756:91:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3154,"nodeType":"ExpressionStatement","src":"14756:91:10"},{"expression":{"argumentTypes":null,"id":3155,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3143,"src":"14864:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3139,"id":3156,"nodeType":"Return","src":"14857:13:10"}]},"documentation":"@notice Calculates the exchange rate from the underlying to the CToken\n@dev This function does not accrue interest before calculating the exchange rate\n@return Calculated exchange rate scaled by 1e18","id":3158,"implemented":true,"kind":"function","modifiers":[],"name":"exchangeRateStored","nodeType":"FunctionDefinition","parameters":{"id":3136,"nodeType":"ParameterList","parameters":[],"src":"14647:2:10"},"returnParameters":{"id":3139,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3138,"name":"","nodeType":"VariableDeclaration","scope":3158,"src":"14671:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3137,"name":"uint","nodeType":"ElementaryTypeName","src":"14671:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"14670:6:10"},"scope":6186,"src":"14620:257:10","stateMutability":"view","superFunction":6513,"visibility":"public"},{"body":{"id":3245,"nodeType":"Block","src":"15212:1156:10","statements":[{"assignments":[3166],"declarations":[{"constant":false,"id":3166,"name":"_totalSupply","nodeType":"VariableDeclaration","scope":3245,"src":"15222:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3165,"name":"uint","nodeType":"ElementaryTypeName","src":"15222:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":3168,"initialValue":{"argumentTypes":null,"id":3167,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6248,"src":"15242:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"15222:31:10"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":3169,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3166,"src":"15267:12:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":3170,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15283:1:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"15267:17:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":3243,"nodeType":"Block","src":"15501:861:10","statements":[{"assignments":[3179],"declarations":[{"constant":false,"id":3179,"name":"totalCash","nodeType":"VariableDeclaration","scope":3243,"src":"15695:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3178,"name":"uint","nodeType":"ElementaryTypeName","src":"15695:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":3182,"initialValue":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":3180,"name":"getCashPrior","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6075,"src":"15712:12:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":3181,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15712:14:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"15695:31:10"},{"assignments":[3184],"declarations":[{"constant":false,"id":3184,"name":"cashPlusBorrowsMinusReserves","nodeType":"VariableDeclaration","scope":3243,"src":"15740:33:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3183,"name":"uint","nodeType":"ElementaryTypeName","src":"15740:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":3185,"initialValue":null,"nodeType":"VariableDeclarationStatement","src":"15740:33:10"},{"assignments":[3187],"declarations":[{"constant":false,"id":3187,"name":"exchangeRate","nodeType":"VariableDeclaration","scope":3243,"src":"15787:23:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":3186,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"15787:3:10","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"}],"id":3188,"initialValue":null,"nodeType":"VariableDeclarationStatement","src":"15787:23:10"},{"assignments":[3190],"declarations":[{"constant":false,"id":3190,"name":"mathErr","nodeType":"VariableDeclaration","scope":3243,"src":"15824:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"typeName":{"contractScope":null,"id":3189,"name":"MathError","nodeType":"UserDefinedTypeName","referencedDeclaration":6659,"src":"15824:9:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"value":null,"visibility":"internal"}],"id":3191,"initialValue":null,"nodeType":"VariableDeclarationStatement","src":"15824:17:10"},{"expression":{"argumentTypes":null,"id":3206,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":3192,"name":"mathErr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3190,"src":"15857:7:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},{"argumentTypes":null,"id":3193,"name":"cashPlusBorrowsMinusReserves","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3184,"src":"15866:28:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3194,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"15856:39:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3196,"name":"totalCash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3179,"src":"15913:9:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":3197,"name":"totalBorrows","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6240,"src":"15924:12:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3199,"name":"totalReserves","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6242,"src":"15943:13:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3201,"name":"totalAdminFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6244,"src":"15963:14:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":3202,"name":"totalFuseFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6246,"src":"15979:13:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3200,"name":"add_","nodeType":"Identifier","overloadedDeclarations":[14579,14598,14614,14641],"referencedDeclaration":14614,"src":"15958:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":3203,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15958:35:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3198,"name":"add_","nodeType":"Identifier","overloadedDeclarations":[14579,14598,14614,14641],"referencedDeclaration":14614,"src":"15938:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":3204,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15938:56:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3195,"name":"addThenSubUInt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6836,"src":"15898:14:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (enum CarefulMath.MathError,uint256)"}},"id":3205,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15898:97:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"src":"15856:139:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3207,"nodeType":"ExpressionStatement","src":"15856:139:10"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"id":3211,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":3208,"name":"mathErr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3190,"src":"16013:7:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3209,"name":"MathError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6659,"src":"16024:9:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MathError_$6659_$","typeString":"type(enum CarefulMath.MathError)"}},"id":3210,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"16024:18:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"src":"16013:29:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":3217,"nodeType":"IfStatement","src":"16009:87:10","trueBody":{"id":3216,"nodeType":"Block","src":"16044:52:10","statements":[{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":3212,"name":"mathErr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3190,"src":"16070:7:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},{"argumentTypes":null,"hexValue":"30","id":3213,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16079:1:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":3214,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16069:12:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_rational_0_by_1_$","typeString":"tuple(enum CarefulMath.MathError,int_const 0)"}},"functionReturnParameters":3164,"id":3215,"nodeType":"Return","src":"16062:19:10"}]}},{"expression":{"argumentTypes":null,"id":3225,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":3218,"name":"mathErr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3190,"src":"16111:7:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},{"argumentTypes":null,"id":3219,"name":"exchangeRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3187,"src":"16120:12:10","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}}],"id":3220,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"16110:23:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_struct$_Exp_$14390_memory_ptr_$","typeString":"tuple(enum CarefulMath.MathError,struct ExponentialNoError.Exp memory)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3222,"name":"cashPlusBorrowsMinusReserves","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3184,"src":"16143:28:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":3223,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3166,"src":"16173:12:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3221,"name":"getExp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13918,"src":"16136:6:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_enum$_MathError_$6659_$_t_struct$_Exp_$14390_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (enum CarefulMath.MathError,struct ExponentialNoError.Exp memory)"}},"id":3224,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16136:50:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_struct$_Exp_$14390_memory_ptr_$","typeString":"tuple(enum CarefulMath.MathError,struct ExponentialNoError.Exp memory)"}},"src":"16110:76:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3226,"nodeType":"ExpressionStatement","src":"16110:76:10"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"id":3230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":3227,"name":"mathErr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3190,"src":"16204:7:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3228,"name":"MathError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6659,"src":"16215:9:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MathError_$6659_$","typeString":"type(enum CarefulMath.MathError)"}},"id":3229,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"16215:18:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"src":"16204:29:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":3236,"nodeType":"IfStatement","src":"16200:87:10","trueBody":{"id":3235,"nodeType":"Block","src":"16235:52:10","statements":[{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":3231,"name":"mathErr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3190,"src":"16261:7:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},{"argumentTypes":null,"hexValue":"30","id":3232,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16270:1:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":3233,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16260:12:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_rational_0_by_1_$","typeString":"tuple(enum CarefulMath.MathError,int_const 0)"}},"functionReturnParameters":3164,"id":3234,"nodeType":"Return","src":"16253:19:10"}]}},{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3237,"name":"MathError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6659,"src":"16309:9:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MathError_$6659_$","typeString":"type(enum CarefulMath.MathError)"}},"id":3238,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"16309:18:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3239,"name":"exchangeRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3187,"src":"16329:12:10","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}},"id":3240,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mantissa","nodeType":"MemberAccess","referencedDeclaration":14389,"src":"16329:21:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3241,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16308:43:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"functionReturnParameters":3164,"id":3242,"nodeType":"Return","src":"16301:50:10"}]},"id":3244,"nodeType":"IfStatement","src":"15263:1099:10","trueBody":{"id":3177,"nodeType":"Block","src":"15286:209:10","statements":[{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3172,"name":"MathError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6659,"src":"15436:9:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MathError_$6659_$","typeString":"type(enum CarefulMath.MathError)"}},"id":3173,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"15436:18:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},{"argumentTypes":null,"id":3174,"name":"initialExchangeRateMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6228,"src":"15456:27:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3175,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"15435:49:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"functionReturnParameters":3164,"id":3176,"nodeType":"Return","src":"15428:56:10"}]}}]},"documentation":"@notice Calculates the exchange rate from the underlying to the CToken\n@dev This function does not accrue interest before calculating the exchange rate\n@return (error code, calculated exchange rate scaled by 1e18)","id":3246,"implemented":true,"kind":"function","modifiers":[],"name":"exchangeRateStoredInternal","nodeType":"FunctionDefinition","parameters":{"id":3159,"nodeType":"ParameterList","parameters":[],"src":"15169:2:10"},"returnParameters":{"id":3164,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3161,"name":"","nodeType":"VariableDeclaration","scope":3246,"src":"15195:9:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"typeName":{"contractScope":null,"id":3160,"name":"MathError","nodeType":"UserDefinedTypeName","referencedDeclaration":6659,"src":"15195:9:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"value":null,"visibility":"internal"},{"constant":false,"id":3163,"name":"","nodeType":"VariableDeclaration","scope":3246,"src":"15206:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3162,"name":"uint","nodeType":"ElementaryTypeName","src":"15206:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"15194:17:10"},"scope":6186,"src":"15134:1234:10","stateMutability":"view","superFunction":null,"visibility":"internal"},{"body":{"id":3254,"nodeType":"Block","src":"16580:38:10","statements":[{"expression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":3251,"name":"getCashPrior","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6075,"src":"16597:12:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":3252,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16597:14:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3250,"id":3253,"nodeType":"Return","src":"16590:21:10"}]},"documentation":"@notice Get cash balance of this cToken in the underlying asset\n@return The quantity of underlying asset owned by this contract","id":3255,"implemented":true,"kind":"function","modifiers":[],"name":"getCash","nodeType":"FunctionDefinition","parameters":{"id":3247,"nodeType":"ParameterList","parameters":[],"src":"16548:2:10"},"returnParameters":{"id":3250,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3249,"name":"","nodeType":"VariableDeclaration","scope":3255,"src":"16574:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3248,"name":"uint","nodeType":"ElementaryTypeName","src":"16574:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"16573:6:10"},"scope":6186,"src":"16532:86:10","stateMutability":"view","superFunction":6518,"visibility":"external"},{"body":{"id":3326,"nodeType":"Block","src":"16907:1023:10","statements":[{"assignments":[3261],"declarations":[{"constant":false,"id":3261,"name":"currentBlockNumber","nodeType":"VariableDeclaration","scope":3326,"src":"16965:23:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3260,"name":"uint","nodeType":"ElementaryTypeName","src":"16965:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":3264,"initialValue":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":3262,"name":"getBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2912,"src":"16991:14:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":3263,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16991:16:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16965:42:10"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":3265,"name":"accrualBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6236,"src":"17074:18:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":3266,"name":"currentBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3261,"src":"17096:18:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17074:40:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":3274,"nodeType":"IfStatement","src":"17070:98:10","trueBody":{"id":3273,"nodeType":"Block","src":"17116:52:10","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3269,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"17142:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":3270,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"17142:14:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}],"id":3268,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17137:4:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":3271,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17137:20:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3259,"id":3272,"nodeType":"Return","src":"17130:27:10"}]}},{"assignments":[3276],"declarations":[{"constant":false,"id":3276,"name":"cashPrior","nodeType":"VariableDeclaration","scope":3326,"src":"17232:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3275,"name":"uint","nodeType":"ElementaryTypeName","src":"17232:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":3279,"initialValue":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":3277,"name":"getCashPrior","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6075,"src":"17249:12:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":3278,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17249:14:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"17232:31:10"},{"assignments":[3281],"declarations":[{"constant":false,"id":3281,"name":"borrowRateMantissa","nodeType":"VariableDeclaration","scope":3326,"src":"17331:23:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3280,"name":"uint","nodeType":"ElementaryTypeName","src":"17331:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":3294,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3284,"name":"cashPrior","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3276,"src":"17389:9:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":3285,"name":"totalBorrows","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6240,"src":"17400:12:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3287,"name":"totalReserves","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6242,"src":"17419:13:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3289,"name":"totalAdminFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6244,"src":"17439:14:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":3290,"name":"totalFuseFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6246,"src":"17455:13:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3288,"name":"add_","nodeType":"Identifier","overloadedDeclarations":[14579,14598,14614,14641],"referencedDeclaration":14614,"src":"17434:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":3291,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17434:35:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3286,"name":"add_","nodeType":"Identifier","overloadedDeclarations":[14579,14598,14614,14641],"referencedDeclaration":14614,"src":"17414:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":3292,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17414:56:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":3282,"name":"interestRateModel","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6226,"src":"17357:17:10","typeDescriptions":{"typeIdentifier":"t_contract$_InterestRateModel_$17398","typeString":"contract InterestRateModel"}},"id":3283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getBorrowRate","nodeType":"MemberAccess","referencedDeclaration":17384,"src":"17357:31:10","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) view external returns (uint256)"}},"id":3293,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17357:114:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"17331:140:10"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3298,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":3296,"name":"borrowRateMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3281,"src":"17489:18:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"argumentTypes":null,"id":3297,"name":"borrowRateMaxMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6217,"src":"17511:21:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17489:43:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"626f72726f772072617465206973206162737572646c792068696768","id":3299,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17534:30:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_9ab90068dc5fe9f7def6aab4ae887ed8eff65c4b83c1b9ba6beb99101f1ae8ea","typeString":"literal_string \"borrow rate is absurdly high\""},"value":"borrow rate is absurdly high"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9ab90068dc5fe9f7def6aab4ae887ed8eff65c4b83c1b9ba6beb99101f1ae8ea","typeString":"literal_string \"borrow rate is absurdly high\""}],"id":3295,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"17481:7:10","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3300,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17481:84:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3301,"nodeType":"ExpressionStatement","src":"17481:84:10"},{"assignments":[3303,3305],"declarations":[{"constant":false,"id":3303,"name":"mathErr","nodeType":"VariableDeclaration","scope":3326,"src":"17653:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"typeName":{"contractScope":null,"id":3302,"name":"MathError","nodeType":"UserDefinedTypeName","referencedDeclaration":6659,"src":"17653:9:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"value":null,"visibility":"internal"},{"constant":false,"id":3305,"name":"blockDelta","nodeType":"VariableDeclaration","scope":3326,"src":"17672:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3304,"name":"uint","nodeType":"ElementaryTypeName","src":"17672:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":3310,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3307,"name":"currentBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3261,"src":"17699:18:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":3308,"name":"accrualBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6236,"src":"17719:18:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3306,"name":"subUInt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6764,"src":"17691:7:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (enum CarefulMath.MathError,uint256)"}},"id":3309,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17691:47:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"17652:86:10"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"id":3315,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":3312,"name":"mathErr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3303,"src":"17756:7:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3313,"name":"MathError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6659,"src":"17767:9:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MathError_$6659_$","typeString":"type(enum CarefulMath.MathError)"}},"id":3314,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"17767:18:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"src":"17756:29:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"636f756c64206e6f742063616c63756c61746520626c6f636b2064656c7461","id":3316,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17787:33:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_a9394539211404f7ee7a2fcf6f9f3bc093b89da93c049201dda15bb0023741df","typeString":"literal_string \"could not calculate block delta\""},"value":"could not calculate block delta"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a9394539211404f7ee7a2fcf6f9f3bc093b89da93c049201dda15bb0023741df","typeString":"literal_string \"could not calculate block delta\""}],"id":3311,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"17748:7:10","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3317,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17748:73:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3318,"nodeType":"ExpressionStatement","src":"17748:73:10"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3320,"name":"currentBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3261,"src":"17861:18:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":3321,"name":"cashPrior","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3276,"src":"17881:9:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":3322,"name":"borrowRateMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3281,"src":"17892:18:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":3323,"name":"blockDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3305,"src":"17912:10:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3319,"name":"finishInterestAccrual","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3449,"src":"17839:21:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256,uint256) returns (uint256)"}},"id":3324,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17839:84:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3259,"id":3325,"nodeType":"Return","src":"17832:91:10"}]},"documentation":"@notice Applies accrued interest to total borrows and reserves\n@dev This calculates interest accrued from the last checkpointed block\n up to the current block and writes new checkpoint to storage.","id":3327,"implemented":true,"kind":"function","modifiers":[],"name":"accrueInterest","nodeType":"FunctionDefinition","parameters":{"id":3256,"nodeType":"ParameterList","parameters":[],"src":"16882:2:10"},"returnParameters":{"id":3259,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3258,"name":"","nodeType":"VariableDeclaration","scope":3327,"src":"16901:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3257,"name":"uint","nodeType":"ElementaryTypeName","src":"16901:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"16900:6:10"},"scope":6186,"src":"16859:1071:10","stateMutability":"nonpayable","superFunction":6523,"visibility":"public"},{"body":{"id":3448,"nodeType":"Block","src":"18167:2180:10","statements":[{"assignments":[3341],"declarations":[{"constant":false,"id":3341,"name":"simpleInterestFactor","nodeType":"VariableDeclaration","scope":3448,"src":"18804:31:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":3340,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"18804:3:10","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"}],"id":3348,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3344,"name":"borrowRateMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3333,"src":"18858:18:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3343,"name":"Exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14390,"src":"18843:3:10","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Exp_$14390_storage_ptr_$","typeString":"type(struct ExponentialNoError.Exp storage pointer)"}},"id":3345,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"18843:35:10","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}},{"argumentTypes":null,"id":3346,"name":"blockDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3335,"src":"18880:10:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3342,"name":"mul_","nodeType":"Identifier","overloadedDeclarations":[14739,14757,14775,14796,14814,14832,14848,14888],"referencedDeclaration":14757,"src":"18838:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Exp_$14390_memory_ptr_$_t_uint256_$returns$_t_struct$_Exp_$14390_memory_ptr_$","typeString":"function (struct ExponentialNoError.Exp memory,uint256) pure returns (struct ExponentialNoError.Exp memory)"}},"id":3347,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18838:53:10","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}},"nodeType":"VariableDeclarationStatement","src":"18804:87:10"},{"assignments":[3350],"declarations":[{"constant":false,"id":3350,"name":"interestAccumulated","nodeType":"VariableDeclaration","scope":3448,"src":"18901:24:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3349,"name":"uint","nodeType":"ElementaryTypeName","src":"18901:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":3355,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3352,"name":"simpleInterestFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3341,"src":"18947:20:10","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}},{"argumentTypes":null,"id":3353,"name":"totalBorrows","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6240,"src":"18969:12:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3351,"name":"mul_ScalarTruncate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14427,"src":"18928:18:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Exp_$14390_memory_ptr_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct ExponentialNoError.Exp memory,uint256) pure returns (uint256)"}},"id":3354,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18928:54:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18901:81:10"},{"assignments":[3357],"declarations":[{"constant":false,"id":3357,"name":"totalBorrowsNew","nodeType":"VariableDeclaration","scope":3448,"src":"18992:20:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3356,"name":"uint","nodeType":"ElementaryTypeName","src":"18992:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":3362,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3359,"name":"interestAccumulated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3350,"src":"19020:19:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":3360,"name":"totalBorrows","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6240,"src":"19041:12:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3358,"name":"add_","nodeType":"Identifier","overloadedDeclarations":[14579,14598,14614,14641],"referencedDeclaration":14614,"src":"19015:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":3361,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19015:39:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18992:62:10"},{"assignments":[3364],"declarations":[{"constant":false,"id":3364,"name":"totalReservesNew","nodeType":"VariableDeclaration","scope":3448,"src":"19064:21:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3363,"name":"uint","nodeType":"ElementaryTypeName","src":"19064:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":3372,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3367,"name":"reserveFactorMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6234,"src":"19129:21:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3366,"name":"Exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14390,"src":"19114:3:10","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Exp_$14390_storage_ptr_$","typeString":"type(struct ExponentialNoError.Exp storage pointer)"}},"id":3368,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"19114:38:10","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}},{"argumentTypes":null,"id":3369,"name":"interestAccumulated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3350,"src":"19154:19:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":3370,"name":"totalReserves","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6242,"src":"19175:13:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3365,"name":"mul_ScalarTruncateAddUInt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14453,"src":"19088:25:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Exp_$14390_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct ExponentialNoError.Exp memory,uint256,uint256) pure returns (uint256)"}},"id":3371,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19088:101:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19064:125:10"},{"assignments":[3374],"declarations":[{"constant":false,"id":3374,"name":"totalFuseFeesNew","nodeType":"VariableDeclaration","scope":3448,"src":"19199:21:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3373,"name":"uint","nodeType":"ElementaryTypeName","src":"19199:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":3382,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3377,"name":"fuseFeeMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6232,"src":"19264:15:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3376,"name":"Exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14390,"src":"19249:3:10","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Exp_$14390_storage_ptr_$","typeString":"type(struct ExponentialNoError.Exp storage pointer)"}},"id":3378,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"19249:32:10","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}},{"argumentTypes":null,"id":3379,"name":"interestAccumulated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3350,"src":"19283:19:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":3380,"name":"totalFuseFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6246,"src":"19304:13:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3375,"name":"mul_ScalarTruncateAddUInt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14453,"src":"19223:25:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Exp_$14390_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct ExponentialNoError.Exp memory,uint256,uint256) pure returns (uint256)"}},"id":3381,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19223:95:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19199:119:10"},{"assignments":[3384],"declarations":[{"constant":false,"id":3384,"name":"totalAdminFeesNew","nodeType":"VariableDeclaration","scope":3448,"src":"19328:22:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3383,"name":"uint","nodeType":"ElementaryTypeName","src":"19328:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":3392,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3387,"name":"adminFeeMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6230,"src":"19394:16:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3386,"name":"Exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14390,"src":"19379:3:10","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Exp_$14390_storage_ptr_$","typeString":"type(struct ExponentialNoError.Exp storage pointer)"}},"id":3388,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"19379:33:10","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}},{"argumentTypes":null,"id":3389,"name":"interestAccumulated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3350,"src":"19414:19:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":3390,"name":"totalAdminFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6244,"src":"19435:14:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3385,"name":"mul_ScalarTruncateAddUInt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14453,"src":"19353:25:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Exp_$14390_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct ExponentialNoError.Exp memory,uint256,uint256) pure returns (uint256)"}},"id":3391,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19353:97:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19328:122:10"},{"assignments":[3394],"declarations":[{"constant":false,"id":3394,"name":"borrowIndexNew","nodeType":"VariableDeclaration","scope":3448,"src":"19460:19:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3393,"name":"uint","nodeType":"ElementaryTypeName","src":"19460:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":3400,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3396,"name":"simpleInterestFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3341,"src":"19508:20:10","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}},{"argumentTypes":null,"id":3397,"name":"borrowIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6238,"src":"19530:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":3398,"name":"borrowIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6238,"src":"19543:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3395,"name":"mul_ScalarTruncateAddUInt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14453,"src":"19482:25:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Exp_$14390_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct ExponentialNoError.Exp memory,uint256,uint256) pure returns (uint256)"}},"id":3399,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19482:73:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19460:95:10"},{"expression":{"argumentTypes":null,"id":3403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":3401,"name":"accrualBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6236,"src":"19752:18:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":3402,"name":"currentBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3329,"src":"19773:18:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19752:39:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3404,"nodeType":"ExpressionStatement","src":"19752:39:10"},{"expression":{"argumentTypes":null,"id":3407,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":3405,"name":"borrowIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6238,"src":"19801:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":3406,"name":"borrowIndexNew","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3394,"src":"19815:14:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19801:28:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3408,"nodeType":"ExpressionStatement","src":"19801:28:10"},{"expression":{"argumentTypes":null,"id":3411,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":3409,"name":"totalBorrows","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6240,"src":"19839:12:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":3410,"name":"totalBorrowsNew","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3357,"src":"19854:15:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19839:30:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3412,"nodeType":"ExpressionStatement","src":"19839:30:10"},{"expression":{"argumentTypes":null,"id":3415,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":3413,"name":"totalReserves","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6242,"src":"19879:13:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":3414,"name":"totalReservesNew","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3364,"src":"19895:16:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19879:32:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3416,"nodeType":"ExpressionStatement","src":"19879:32:10"},{"expression":{"argumentTypes":null,"id":3419,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":3417,"name":"totalFuseFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6246,"src":"19921:13:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":3418,"name":"totalFuseFeesNew","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3374,"src":"19937:16:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19921:32:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3420,"nodeType":"ExpressionStatement","src":"19921:32:10"},{"expression":{"argumentTypes":null,"id":3423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":3421,"name":"totalAdminFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6244,"src":"19963:14:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":3422,"name":"totalAdminFeesNew","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3384,"src":"19980:17:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19963:34:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3424,"nodeType":"ExpressionStatement","src":"19963:34:10"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3426,"name":"cashPrior","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3331,"src":"20074:9:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":3427,"name":"interestAccumulated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3350,"src":"20085:19:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":3428,"name":"borrowIndexNew","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3394,"src":"20106:14:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":3429,"name":"totalBorrowsNew","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3357,"src":"20122:15:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3425,"name":"AccrueInterest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6289,"src":"20059:14:10","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,uint256,uint256)"}},"id":3430,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20059:79:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3431,"nodeType":"EmitStatement","src":"20054:84:10"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"636865636b706f696e74496e7465726573742875696e7432353629","id":3438,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"20251:29:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_bdfa046689dad96f0f4d673fb0c375d086186bbf5d3f783642e3d94c03b65c1d","typeString":"literal_string \"checkpointInterest(uint256)\""},"value":"checkpointInterest(uint256)"},{"argumentTypes":null,"id":3439,"name":"borrowRateMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3333,"src":"20282:18:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_bdfa046689dad96f0f4d673fb0c375d086186bbf5d3f783642e3d94c03b65c1d","typeString":"literal_string \"checkpointInterest(uint256)\""},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":3436,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22537,"src":"20227:3:10","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3437,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSignature","nodeType":"MemberAccess","referencedDeclaration":null,"src":"20227:23:10","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (string memory) pure returns (bytes memory)"}},"id":3440,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20227:74:10","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3433,"name":"interestRateModel","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6226,"src":"20203:17:10","typeDescriptions":{"typeIdentifier":"t_contract$_InterestRateModel_$17398","typeString":"contract InterestRateModel"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_InterestRateModel_$17398","typeString":"contract InterestRateModel"}],"id":3432,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"20195:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":3434,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20195:26:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3435,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","referencedDeclaration":null,"src":"20195:31:10","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":3441,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20195:107:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"id":3442,"nodeType":"ExpressionStatement","src":"20195:107:10"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3444,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"20325:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":3445,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"20325:14:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}],"id":3443,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"20320:4:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":3446,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20320:20:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3339,"id":3447,"nodeType":"Return","src":"20313:27:10"}]},"documentation":"@dev Split off from `accrueInterest` to avoid \"stack too deep\" error\".","id":3449,"implemented":true,"kind":"function","modifiers":[],"name":"finishInterestAccrual","nodeType":"FunctionDefinition","parameters":{"id":3336,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3329,"name":"currentBlockNumber","nodeType":"VariableDeclaration","scope":3449,"src":"18061:23:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3328,"name":"uint","nodeType":"ElementaryTypeName","src":"18061:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":3331,"name":"cashPrior","nodeType":"VariableDeclaration","scope":3449,"src":"18086:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3330,"name":"uint","nodeType":"ElementaryTypeName","src":"18086:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":3333,"name":"borrowRateMantissa","nodeType":"VariableDeclaration","scope":3449,"src":"18102:23:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3332,"name":"uint","nodeType":"ElementaryTypeName","src":"18102:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":3335,"name":"blockDelta","nodeType":"VariableDeclaration","scope":3449,"src":"18127:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3334,"name":"uint","nodeType":"ElementaryTypeName","src":"18127:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"18060:83:10"},"returnParameters":{"id":3339,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3338,"name":"","nodeType":"VariableDeclaration","scope":3449,"src":"18161:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3337,"name":"uint","nodeType":"ElementaryTypeName","src":"18161:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"18160:6:10"},"scope":6186,"src":"18030:2317:10","stateMutability":"nonpayable","superFunction":null,"visibility":"private"},{"body":{"id":3490,"nodeType":"Block","src":"20826:457:10","statements":[{"assignments":[3462],"declarations":[{"constant":false,"id":3462,"name":"error","nodeType":"VariableDeclaration","scope":3490,"src":"20836:10:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3461,"name":"uint","nodeType":"ElementaryTypeName","src":"20836:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":3465,"initialValue":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":3463,"name":"accrueInterest","nodeType":"Identifier","overloadedDeclarations":[3327],"referencedDeclaration":3327,"src":"20849:14:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_uint256_$","typeString":"function () returns (uint256)"}},"id":3464,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20849:16:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"20836:29:10"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":3466,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3462,"src":"20879:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3468,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"20893:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":3469,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"20893:14:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}],"id":3467,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"20888:4:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":3470,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20888:20:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20879:29:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":3483,"nodeType":"IfStatement","src":"20875:249:10","trueBody":{"id":3482,"nodeType":"Block","src":"20910:214:10","statements":[{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3474,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3462,"src":"21061:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3473,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"21055:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":3475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21055:12:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3476,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13782,"src":"21069:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13782_$","typeString":"type(enum TokenErrorReporter.FailureInfo)"}},"id":3477,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"MINT_ACCRUE_INTEREST_FAILED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"21069:39:10","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}],"id":3472,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13814,"src":"21050:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13681_$_t_enum$_FailureInfo_$13782_$returns$_t_uint256_$","typeString":"function (enum TokenErrorReporter.Error,enum TokenErrorReporter.FailureInfo) returns (uint256)"}},"id":3478,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21050:59:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"30","id":3479,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21111:1:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":3480,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"21049:64:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_rational_0_by_1_$","typeString":"tuple(uint256,int_const 0)"}},"functionReturnParameters":3460,"id":3481,"nodeType":"Return","src":"21042:71:10"}]}},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3485,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"21253:3:10","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3486,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"21253:10:10","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"id":3487,"name":"mintAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3451,"src":"21265:10:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3484,"name":"mintFresh","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3698,"src":"21243:9:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (address,uint256) returns (uint256,uint256)"}},"id":3488,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21243:33:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"functionReturnParameters":3460,"id":3489,"nodeType":"Return","src":"21236:40:10"}]},"documentation":"@notice Sender supplies assets into the market and receives cTokens in exchange\n@dev Accrues interest whether or not the operation succeeds, unless reverted\n@param mintAmount The amount of the underlying asset to supply\n@return (uint, uint) An error code (0=success, otherwise a failure, see ErrorReporter.sol), and the actual mint amount.","id":3491,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"argumentTypes":null,"hexValue":"66616c7365","id":3454,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"20798:5:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"id":3455,"modifierName":{"argumentTypes":null,"id":3453,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6105,"src":"20785:12:10","typeDescriptions":{"typeIdentifier":"t_modifier$_t_bool_$","typeString":"modifier (bool)"}},"nodeType":"ModifierInvocation","src":"20785:19:10"}],"name":"mintInternal","nodeType":"FunctionDefinition","parameters":{"id":3452,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3451,"name":"mintAmount","nodeType":"VariableDeclaration","scope":3491,"src":"20759:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3450,"name":"uint","nodeType":"ElementaryTypeName","src":"20759:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"20758:17:10"},"returnParameters":{"id":3460,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3457,"name":"","nodeType":"VariableDeclaration","scope":3491,"src":"20814:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3456,"name":"uint","nodeType":"ElementaryTypeName","src":"20814:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":3459,"name":"","nodeType":"VariableDeclaration","scope":3491,"src":"20820:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3458,"name":"uint","nodeType":"ElementaryTypeName","src":"20820:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"20813:12:10"},"scope":6186,"src":"20737:546:10","stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},{"canonicalName":"CToken.MintLocalVars","id":3506,"members":[{"constant":false,"id":3493,"name":"err","nodeType":"VariableDeclaration","scope":3506,"src":"21320:9:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"},"typeName":{"contractScope":null,"id":3492,"name":"Error","nodeType":"UserDefinedTypeName","referencedDeclaration":13681,"src":"21320:5:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}},"value":null,"visibility":"internal"},{"constant":false,"id":3495,"name":"mathErr","nodeType":"VariableDeclaration","scope":3506,"src":"21339:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"typeName":{"contractScope":null,"id":3494,"name":"MathError","nodeType":"UserDefinedTypeName","referencedDeclaration":6659,"src":"21339:9:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"value":null,"visibility":"internal"},{"constant":false,"id":3497,"name":"exchangeRateMantissa","nodeType":"VariableDeclaration","scope":3506,"src":"21366:25:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3496,"name":"uint","nodeType":"ElementaryTypeName","src":"21366:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":3499,"name":"mintTokens","nodeType":"VariableDeclaration","scope":3506,"src":"21401:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3498,"name":"uint","nodeType":"ElementaryTypeName","src":"21401:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":3501,"name":"totalSupplyNew","nodeType":"VariableDeclaration","scope":3506,"src":"21426:19:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3500,"name":"uint","nodeType":"ElementaryTypeName","src":"21426:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":3503,"name":"accountTokensNew","nodeType":"VariableDeclaration","scope":3506,"src":"21455:21:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3502,"name":"uint","nodeType":"ElementaryTypeName","src":"21455:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":3505,"name":"actualMintAmount","nodeType":"VariableDeclaration","scope":3506,"src":"21486:21:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3504,"name":"uint","nodeType":"ElementaryTypeName","src":"21486:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"name":"MintLocalVars","nodeType":"StructDefinition","scope":6186,"src":"21289:225:10","visibility":"public"},{"body":{"id":3697,"nodeType":"Block","src":"22056:3134:10","statements":[{"assignments":[3518],"declarations":[{"constant":false,"id":3518,"name":"allowed","nodeType":"VariableDeclaration","scope":3697,"src":"22105:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3517,"name":"uint","nodeType":"ElementaryTypeName","src":"22105:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":3527,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3522,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22614,"src":"22152:4:10","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":3521,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22144:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":3523,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"22144:13:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":3524,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3508,"src":"22159:6:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":3525,"name":"mintAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3510,"src":"22167:10:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":3519,"name":"comptroller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6224,"src":"22120:11:10","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerInterface_$12980","typeString":"contract ComptrollerInterface"}},"id":3520,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mintAllowed","nodeType":"MemberAccess","referencedDeclaration":12777,"src":"22120:23:10","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,address,uint256) external returns (uint256)"}},"id":3526,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"22120:58:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"22105:73:10"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3530,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":3528,"name":"allowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3518,"src":"22192:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"hexValue":"30","id":3529,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22203:1:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22192:12:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":3542,"nodeType":"IfStatement","src":"22188:143:10","trueBody":{"id":3541,"nodeType":"Block","src":"22206:125:10","statements":[{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3532,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"22239:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":3533,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"COMPTROLLER_REJECTION","nodeType":"MemberAccess","referencedDeclaration":null,"src":"22239:27:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3534,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13782,"src":"22268:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13782_$","typeString":"type(enum TokenErrorReporter.FailureInfo)"}},"id":3535,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"MINT_COMPTROLLER_REJECTION","nodeType":"MemberAccess","referencedDeclaration":null,"src":"22268:38:10","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}},{"argumentTypes":null,"id":3536,"name":"allowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3518,"src":"22308:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3531,"name":"failOpaque","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13848,"src":"22228:10:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13681_$_t_enum$_FailureInfo_$13782_$_t_uint256_$returns$_t_uint256_$","typeString":"function (enum TokenErrorReporter.Error,enum TokenErrorReporter.FailureInfo,uint256) returns (uint256)"}},"id":3537,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"22228:88:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"30","id":3538,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22318:1:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":3539,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22227:93:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_rational_0_by_1_$","typeString":"tuple(uint256,int_const 0)"}},"functionReturnParameters":3516,"id":3540,"nodeType":"Return","src":"22220:100:10"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3546,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":3543,"name":"accrualBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6236,"src":"22416:18:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":3544,"name":"getBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2912,"src":"22438:14:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":3545,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"22438:16:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22416:38:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":3557,"nodeType":"IfStatement","src":"22412:143:10","trueBody":{"id":3556,"nodeType":"Block","src":"22456:99:10","statements":[{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3548,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"22483:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":3549,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"MARKET_NOT_FRESH","nodeType":"MemberAccess","referencedDeclaration":null,"src":"22483:22:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3550,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13782,"src":"22507:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13782_$","typeString":"type(enum TokenErrorReporter.FailureInfo)"}},"id":3551,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"MINT_FRESHNESS_CHECK","nodeType":"MemberAccess","referencedDeclaration":null,"src":"22507:32:10","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}],"id":3547,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13814,"src":"22478:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13681_$_t_enum$_FailureInfo_$13782_$returns$_t_uint256_$","typeString":"function (enum TokenErrorReporter.Error,enum TokenErrorReporter.FailureInfo) returns (uint256)"}},"id":3552,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"22478:62:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"30","id":3553,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22542:1:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":3554,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22477:67:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_rational_0_by_1_$","typeString":"tuple(uint256,int_const 0)"}},"functionReturnParameters":3516,"id":3555,"nodeType":"Return","src":"22470:74:10"}]}},{"assignments":[3559],"declarations":[{"constant":false,"id":3559,"name":"vars","nodeType":"VariableDeclaration","scope":3697,"src":"22565:25:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_MintLocalVars_$3506_memory_ptr","typeString":"struct CToken.MintLocalVars"},"typeName":{"contractScope":null,"id":3558,"name":"MintLocalVars","nodeType":"UserDefinedTypeName","referencedDeclaration":3506,"src":"22565:13:10","typeDescriptions":{"typeIdentifier":"t_struct$_MintLocalVars_$3506_storage_ptr","typeString":"struct CToken.MintLocalVars"}},"value":null,"visibility":"internal"}],"id":3560,"initialValue":null,"nodeType":"VariableDeclarationStatement","src":"22565:25:10"},{"expression":{"argumentTypes":null,"id":3569,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"components":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3561,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3559,"src":"22602:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_MintLocalVars_$3506_memory_ptr","typeString":"struct CToken.MintLocalVars memory"}},"id":3563,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"mathErr","nodeType":"MemberAccess","referencedDeclaration":3495,"src":"22602:12:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3564,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3559,"src":"22616:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_MintLocalVars_$3506_memory_ptr","typeString":"struct CToken.MintLocalVars memory"}},"id":3565,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"exchangeRateMantissa","nodeType":"MemberAccess","referencedDeclaration":3497,"src":"22616:25:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3566,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"22601:41:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":3567,"name":"exchangeRateStoredInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3246,"src":"22645:26:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"function () view returns (enum CarefulMath.MathError,uint256)"}},"id":3568,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"22645:28:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"src":"22601:72:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3570,"nodeType":"ExpressionStatement","src":"22601:72:10"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"id":3575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3571,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3559,"src":"22687:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_MintLocalVars_$3506_memory_ptr","typeString":"struct CToken.MintLocalVars memory"}},"id":3572,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mathErr","nodeType":"MemberAccess","referencedDeclaration":3495,"src":"22687:12:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3573,"name":"MathError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6659,"src":"22703:9:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MathError_$6659_$","typeString":"type(enum CarefulMath.MathError)"}},"id":3574,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"22703:18:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"src":"22687:34:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":3590,"nodeType":"IfStatement","src":"22683:169:10","trueBody":{"id":3589,"nodeType":"Block","src":"22723:129:10","statements":[{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3577,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"22756:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":3578,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"MATH_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"22756:16:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3579,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13782,"src":"22774:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13782_$","typeString":"type(enum TokenErrorReporter.FailureInfo)"}},"id":3580,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"MINT_EXCHANGE_RATE_READ_FAILED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"22774:42:10","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3582,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3559,"src":"22823:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_MintLocalVars_$3506_memory_ptr","typeString":"struct CToken.MintLocalVars memory"}},"id":3583,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mathErr","nodeType":"MemberAccess","referencedDeclaration":3495,"src":"22823:12:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}],"id":3581,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22818:4:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":3584,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"22818:18:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3576,"name":"failOpaque","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13848,"src":"22745:10:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13681_$_t_enum$_FailureInfo_$13782_$_t_uint256_$returns$_t_uint256_$","typeString":"function (enum TokenErrorReporter.Error,enum TokenErrorReporter.FailureInfo,uint256) returns (uint256)"}},"id":3585,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"22745:92:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"30","id":3586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22839:1:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":3587,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22744:97:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_rational_0_by_1_$","typeString":"tuple(uint256,int_const 0)"}},"functionReturnParameters":3516,"id":3588,"nodeType":"Return","src":"22737:104:10"}]}},{"expression":{"argumentTypes":null,"id":3598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3591,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3559,"src":"23785:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_MintLocalVars_$3506_memory_ptr","typeString":"struct CToken.MintLocalVars memory"}},"id":3593,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"actualMintAmount","nodeType":"MemberAccess","referencedDeclaration":3505,"src":"23785:21:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3595,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3508,"src":"23822:6:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":3596,"name":"mintAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3510,"src":"23830:10:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3594,"name":"doTransferIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6084,"src":"23809:12:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,uint256) returns (uint256)"}},"id":3597,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"23809:32:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23785:56:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3599,"nodeType":"ExpressionStatement","src":"23785:56:10"},{"expression":{"argumentTypes":null,"id":3614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"components":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3600,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3559,"src":"24028:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_MintLocalVars_$3506_memory_ptr","typeString":"struct CToken.MintLocalVars memory"}},"id":3602,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"mathErr","nodeType":"MemberAccess","referencedDeclaration":3495,"src":"24028:12:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3603,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3559,"src":"24042:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_MintLocalVars_$3506_memory_ptr","typeString":"struct CToken.MintLocalVars memory"}},"id":3604,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"mintTokens","nodeType":"MemberAccess","referencedDeclaration":3499,"src":"24042:15:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3605,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"24027:31:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3607,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3559,"src":"24084:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_MintLocalVars_$3506_memory_ptr","typeString":"struct CToken.MintLocalVars memory"}},"id":3608,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"actualMintAmount","nodeType":"MemberAccess","referencedDeclaration":3505,"src":"24084:21:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3610,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3559,"src":"24122:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_MintLocalVars_$3506_memory_ptr","typeString":"struct CToken.MintLocalVars memory"}},"id":3611,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"exchangeRateMantissa","nodeType":"MemberAccess","referencedDeclaration":3497,"src":"24122:25:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3609,"name":"Exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14390,"src":"24107:3:10","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Exp_$14390_storage_ptr_$","typeString":"type(struct ExponentialNoError.Exp storage pointer)"}},"id":3612,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"24107:42:10","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}],"id":3606,"name":"divScalarByExpTruncate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14213,"src":"24061:22:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_struct$_Exp_$14390_memory_ptr_$returns$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"function (uint256,struct ExponentialNoError.Exp memory) pure returns (enum CarefulMath.MathError,uint256)"}},"id":3613,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"24061:89:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"src":"24027:123:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3615,"nodeType":"ExpressionStatement","src":"24027:123:10"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"id":3621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3617,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3559,"src":"24168:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_MintLocalVars_$3506_memory_ptr","typeString":"struct CToken.MintLocalVars memory"}},"id":3618,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mathErr","nodeType":"MemberAccess","referencedDeclaration":3495,"src":"24168:12:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3619,"name":"MathError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6659,"src":"24184:9:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MathError_$6659_$","typeString":"type(enum CarefulMath.MathError)"}},"id":3620,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"24184:18:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"src":"24168:34:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"4d494e545f45584348414e47455f43414c43554c4154494f4e5f4641494c4544","id":3622,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"24204:34:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_c48189364ca7cfdfc0faf603c41135e9f68c6122de6aa1a6596ee6aadc6c96f3","typeString":"literal_string \"MINT_EXCHANGE_CALCULATION_FAILED\""},"value":"MINT_EXCHANGE_CALCULATION_FAILED"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c48189364ca7cfdfc0faf603c41135e9f68c6122de6aa1a6596ee6aadc6c96f3","typeString":"literal_string \"MINT_EXCHANGE_CALCULATION_FAILED\""}],"id":3616,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"24160:7:10","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3623,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"24160:79:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3624,"nodeType":"ExpressionStatement","src":"24160:79:10"},{"expression":{"argumentTypes":null,"id":3633,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3625,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3559,"src":"24498:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_MintLocalVars_$3506_memory_ptr","typeString":"struct CToken.MintLocalVars memory"}},"id":3627,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"totalSupplyNew","nodeType":"MemberAccess","referencedDeclaration":3501,"src":"24498:19:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3629,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6248,"src":"24525:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3630,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3559,"src":"24538:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_MintLocalVars_$3506_memory_ptr","typeString":"struct CToken.MintLocalVars memory"}},"id":3631,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mintTokens","nodeType":"MemberAccess","referencedDeclaration":3499,"src":"24538:15:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3628,"name":"add_","nodeType":"Identifier","overloadedDeclarations":[14579,14598,14614,14641],"referencedDeclaration":14614,"src":"24520:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":3632,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"24520:34:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24498:56:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3634,"nodeType":"ExpressionStatement","src":"24498:56:10"},{"expression":{"argumentTypes":null,"id":3645,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3635,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3559,"src":"24565:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_MintLocalVars_$3506_memory_ptr","typeString":"struct CToken.MintLocalVars memory"}},"id":3637,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"accountTokensNew","nodeType":"MemberAccess","referencedDeclaration":3503,"src":"24565:21:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":3639,"name":"accountTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6252,"src":"24594:13:10","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":3641,"indexExpression":{"argumentTypes":null,"id":3640,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3508,"src":"24608:6:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"24594:21:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3642,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3559,"src":"24617:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_MintLocalVars_$3506_memory_ptr","typeString":"struct CToken.MintLocalVars memory"}},"id":3643,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mintTokens","nodeType":"MemberAccess","referencedDeclaration":3499,"src":"24617:15:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3638,"name":"add_","nodeType":"Identifier","overloadedDeclarations":[14579,14598,14614,14641],"referencedDeclaration":14614,"src":"24589:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":3644,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"24589:44:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24565:68:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3646,"nodeType":"ExpressionStatement","src":"24565:68:10"},{"expression":{"argumentTypes":null,"id":3650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":3647,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6248,"src":"24709:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3648,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3559,"src":"24723:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_MintLocalVars_$3506_memory_ptr","typeString":"struct CToken.MintLocalVars memory"}},"id":3649,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"totalSupplyNew","nodeType":"MemberAccess","referencedDeclaration":3501,"src":"24723:19:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24709:33:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3651,"nodeType":"ExpressionStatement","src":"24709:33:10"},{"expression":{"argumentTypes":null,"id":3657,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":3652,"name":"accountTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6252,"src":"24752:13:10","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":3654,"indexExpression":{"argumentTypes":null,"id":3653,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3508,"src":"24766:6:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"24752:21:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3655,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3559,"src":"24776:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_MintLocalVars_$3506_memory_ptr","typeString":"struct CToken.MintLocalVars memory"}},"id":3656,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"accountTokensNew","nodeType":"MemberAccess","referencedDeclaration":3503,"src":"24776:21:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24752:45:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3658,"nodeType":"ExpressionStatement","src":"24752:45:10"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3660,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3508,"src":"24875:6:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3661,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3559,"src":"24883:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_MintLocalVars_$3506_memory_ptr","typeString":"struct CToken.MintLocalVars memory"}},"id":3662,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"actualMintAmount","nodeType":"MemberAccess","referencedDeclaration":3505,"src":"24883:21:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3663,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3559,"src":"24906:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_MintLocalVars_$3506_memory_ptr","typeString":"struct CToken.MintLocalVars memory"}},"id":3664,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mintTokens","nodeType":"MemberAccess","referencedDeclaration":3499,"src":"24906:15:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3659,"name":"Mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6297,"src":"24870:4:10","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256)"}},"id":3665,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"24870:52:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3666,"nodeType":"EmitStatement","src":"24865:57:10"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3669,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22614,"src":"24954:4:10","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":3668,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24946:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":3670,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"24946:13:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":3671,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3508,"src":"24961:6:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3672,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3559,"src":"24969:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_MintLocalVars_$3506_memory_ptr","typeString":"struct CToken.MintLocalVars memory"}},"id":3673,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mintTokens","nodeType":"MemberAccess","referencedDeclaration":3499,"src":"24969:15:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3667,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6393,"src":"24937:8:10","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":3674,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"24937:48:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3675,"nodeType":"EmitStatement","src":"24932:53:10"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3680,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22614,"src":"25066:4:10","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":3679,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25058:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":3681,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"25058:13:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":3682,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3508,"src":"25073:6:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3683,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3559,"src":"25081:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_MintLocalVars_$3506_memory_ptr","typeString":"struct CToken.MintLocalVars memory"}},"id":3684,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"actualMintAmount","nodeType":"MemberAccess","referencedDeclaration":3505,"src":"25081:21:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3685,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3559,"src":"25104:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_MintLocalVars_$3506_memory_ptr","typeString":"struct CToken.MintLocalVars memory"}},"id":3686,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mintTokens","nodeType":"MemberAccess","referencedDeclaration":3499,"src":"25104:15:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":3676,"name":"comptroller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6224,"src":"25035:11:10","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerInterface_$12980","typeString":"contract ComptrollerInterface"}},"id":3678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mintVerify","nodeType":"MemberAccess","referencedDeclaration":12801,"src":"25035:22:10","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256) external"}},"id":3687,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"25035:85:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3688,"nodeType":"ExpressionStatement","src":"25035:85:10"},{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3690,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"25144:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":3691,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"25144:14:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}],"id":3689,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25139:4:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":3692,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"25139:20:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3693,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3559,"src":"25161:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_MintLocalVars_$3506_memory_ptr","typeString":"struct CToken.MintLocalVars memory"}},"id":3694,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"actualMintAmount","nodeType":"MemberAccess","referencedDeclaration":3505,"src":"25161:21:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3695,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"25138:45:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"functionReturnParameters":3516,"id":3696,"nodeType":"Return","src":"25131:52:10"}]},"documentation":"@notice User supplies assets into the market and receives cTokens in exchange\n@dev Assumes interest has already been accrued up to the current block\n@param minter The address of the account which is supplying the assets\n@param mintAmount The amount of the underlying asset to supply\n@return (uint, uint) An error code (0=success, otherwise a failure, see ErrorReporter.sol), and the actual mint amount.","id":3698,"implemented":true,"kind":"function","modifiers":[],"name":"mintFresh","nodeType":"FunctionDefinition","parameters":{"id":3511,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3508,"name":"minter","nodeType":"VariableDeclaration","scope":3698,"src":"21993:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3507,"name":"address","nodeType":"ElementaryTypeName","src":"21993:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":3510,"name":"mintAmount","nodeType":"VariableDeclaration","scope":3698,"src":"22009:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3509,"name":"uint","nodeType":"ElementaryTypeName","src":"22009:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"21992:33:10"},"returnParameters":{"id":3516,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3513,"name":"","nodeType":"VariableDeclaration","scope":3698,"src":"22044:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3512,"name":"uint","nodeType":"ElementaryTypeName","src":"22044:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":3515,"name":"","nodeType":"VariableDeclaration","scope":3698,"src":"22050:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3514,"name":"uint","nodeType":"ElementaryTypeName","src":"22050:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"22043:12:10"},"scope":6186,"src":"21974:3216:10","stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},{"body":{"id":3736,"nodeType":"Block","src":"25620:439:10","statements":[{"assignments":[3709],"declarations":[{"constant":false,"id":3709,"name":"error","nodeType":"VariableDeclaration","scope":3736,"src":"25630:10:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3708,"name":"uint","nodeType":"ElementaryTypeName","src":"25630:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":3712,"initialValue":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":3710,"name":"accrueInterest","nodeType":"Identifier","overloadedDeclarations":[3327],"referencedDeclaration":3327,"src":"25643:14:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_uint256_$","typeString":"function () returns (uint256)"}},"id":3711,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"25643:16:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25630:29:10"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3718,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":3713,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3709,"src":"25673:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3715,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"25687:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":3716,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"25687:14:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}],"id":3714,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25682:4:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":3717,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"25682:20:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25673:29:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":3728,"nodeType":"IfStatement","src":"25669:246:10","trueBody":{"id":3727,"nodeType":"Block","src":"25704:211:10","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3721,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3709,"src":"25854:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3720,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"25848:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":3722,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"25848:12:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3723,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13782,"src":"25862:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13782_$","typeString":"type(enum TokenErrorReporter.FailureInfo)"}},"id":3724,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"REDEEM_ACCRUE_INTEREST_FAILED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"25862:41:10","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}],"id":3719,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13814,"src":"25843:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13681_$_t_enum$_FailureInfo_$13782_$returns$_t_uint256_$","typeString":"function (enum TokenErrorReporter.Error,enum TokenErrorReporter.FailureInfo) returns (uint256)"}},"id":3725,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"25843:61:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3707,"id":3726,"nodeType":"Return","src":"25836:68:10"}]}},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3730,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"26024:3:10","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3731,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"26024:10:10","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"id":3732,"name":"redeemTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3700,"src":"26036:12:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"30","id":3733,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26050:1:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3729,"name":"redeemFresh","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4098,"src":"26012:11:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address payable,uint256,uint256) returns (uint256)"}},"id":3734,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"26012:40:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3707,"id":3735,"nodeType":"Return","src":"26005:47:10"}]},"documentation":"@notice Sender redeems cTokens in exchange for the underlying asset\n@dev Accrues interest whether or not the operation succeeds, unless reverted\n@param redeemTokens The number of cTokens to redeem into underlying\n@return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)","id":3737,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"argumentTypes":null,"hexValue":"66616c7365","id":3703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"25598:5:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"id":3704,"modifierName":{"argumentTypes":null,"id":3702,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6105,"src":"25585:12:10","typeDescriptions":{"typeIdentifier":"t_modifier$_t_bool_$","typeString":"modifier (bool)"}},"nodeType":"ModifierInvocation","src":"25585:19:10"}],"name":"redeemInternal","nodeType":"FunctionDefinition","parameters":{"id":3701,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3700,"name":"redeemTokens","nodeType":"VariableDeclaration","scope":3737,"src":"25557:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3699,"name":"uint","nodeType":"ElementaryTypeName","src":"25557:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"25556:19:10"},"returnParameters":{"id":3707,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3706,"name":"","nodeType":"VariableDeclaration","scope":3737,"src":"25614:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3705,"name":"uint","nodeType":"ElementaryTypeName","src":"25614:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"25613:6:10"},"scope":6186,"src":"25533:526:10","stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},{"body":{"id":3775,"nodeType":"Block","src":"26528:439:10","statements":[{"assignments":[3748],"declarations":[{"constant":false,"id":3748,"name":"error","nodeType":"VariableDeclaration","scope":3775,"src":"26538:10:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3747,"name":"uint","nodeType":"ElementaryTypeName","src":"26538:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":3751,"initialValue":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":3749,"name":"accrueInterest","nodeType":"Identifier","overloadedDeclarations":[3327],"referencedDeclaration":3327,"src":"26551:14:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_uint256_$","typeString":"function () returns (uint256)"}},"id":3750,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"26551:16:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"26538:29:10"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3757,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":3752,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3748,"src":"26581:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3754,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"26595:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":3755,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"26595:14:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}],"id":3753,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26590:4:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":3756,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"26590:20:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26581:29:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":3767,"nodeType":"IfStatement","src":"26577:246:10","trueBody":{"id":3766,"nodeType":"Block","src":"26612:211:10","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3760,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3748,"src":"26762:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3759,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"26756:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":3761,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"26756:12:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3762,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13782,"src":"26770:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13782_$","typeString":"type(enum TokenErrorReporter.FailureInfo)"}},"id":3763,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"REDEEM_ACCRUE_INTEREST_FAILED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"26770:41:10","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}],"id":3758,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13814,"src":"26751:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13681_$_t_enum$_FailureInfo_$13782_$returns$_t_uint256_$","typeString":"function (enum TokenErrorReporter.Error,enum TokenErrorReporter.FailureInfo) returns (uint256)"}},"id":3764,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"26751:61:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3746,"id":3765,"nodeType":"Return","src":"26744:68:10"}]}},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3769,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"26932:3:10","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"26932:10:10","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"hexValue":"30","id":3771,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26944:1:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"argumentTypes":null,"id":3772,"name":"redeemAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3739,"src":"26947:12:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3768,"name":"redeemFresh","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4098,"src":"26920:11:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address payable,uint256,uint256) returns (uint256)"}},"id":3773,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"26920:40:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3746,"id":3774,"nodeType":"Return","src":"26913:47:10"}]},"documentation":"@notice Sender redeems cTokens in exchange for a specified amount of underlying asset\n@dev Accrues interest whether or not the operation succeeds, unless reverted\n@param redeemAmount The amount of underlying to receive from redeeming cTokens\n@return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)","id":3776,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"argumentTypes":null,"hexValue":"66616c7365","id":3742,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"26506:5:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"id":3743,"modifierName":{"argumentTypes":null,"id":3741,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6105,"src":"26493:12:10","typeDescriptions":{"typeIdentifier":"t_modifier$_t_bool_$","typeString":"modifier (bool)"}},"nodeType":"ModifierInvocation","src":"26493:19:10"}],"name":"redeemUnderlyingInternal","nodeType":"FunctionDefinition","parameters":{"id":3740,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3739,"name":"redeemAmount","nodeType":"VariableDeclaration","scope":3776,"src":"26465:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3738,"name":"uint","nodeType":"ElementaryTypeName","src":"26465:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"26464:19:10"},"returnParameters":{"id":3746,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3745,"name":"","nodeType":"VariableDeclaration","scope":3776,"src":"26522:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3744,"name":"uint","nodeType":"ElementaryTypeName","src":"26522:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"26521:6:10"},"scope":6186,"src":"26431:536:10","stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},{"canonicalName":"CToken.RedeemLocalVars","id":3791,"members":[{"constant":false,"id":3778,"name":"err","nodeType":"VariableDeclaration","scope":3791,"src":"27006:9:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"},"typeName":{"contractScope":null,"id":3777,"name":"Error","nodeType":"UserDefinedTypeName","referencedDeclaration":13681,"src":"27006:5:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}},"value":null,"visibility":"internal"},{"constant":false,"id":3780,"name":"mathErr","nodeType":"VariableDeclaration","scope":3791,"src":"27025:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"typeName":{"contractScope":null,"id":3779,"name":"MathError","nodeType":"UserDefinedTypeName","referencedDeclaration":6659,"src":"27025:9:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"value":null,"visibility":"internal"},{"constant":false,"id":3782,"name":"exchangeRateMantissa","nodeType":"VariableDeclaration","scope":3791,"src":"27052:25:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3781,"name":"uint","nodeType":"ElementaryTypeName","src":"27052:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":3784,"name":"redeemTokens","nodeType":"VariableDeclaration","scope":3791,"src":"27087:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3783,"name":"uint","nodeType":"ElementaryTypeName","src":"27087:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":3786,"name":"redeemAmount","nodeType":"VariableDeclaration","scope":3791,"src":"27114:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3785,"name":"uint","nodeType":"ElementaryTypeName","src":"27114:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":3788,"name":"totalSupplyNew","nodeType":"VariableDeclaration","scope":3791,"src":"27141:19:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3787,"name":"uint","nodeType":"ElementaryTypeName","src":"27141:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":3790,"name":"accountTokensNew","nodeType":"VariableDeclaration","scope":3791,"src":"27170:21:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3789,"name":"uint","nodeType":"ElementaryTypeName","src":"27170:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"name":"RedeemLocalVars","nodeType":"StructDefinition","scope":6186,"src":"26973:225:10","visibility":"public"},{"body":{"id":4097,"nodeType":"Block","src":"27949:4391:10","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3809,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":3803,"name":"redeemTokensIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3795,"src":"27967:14:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":3804,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27985:1:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"27967:19:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":3806,"name":"redeemAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3797,"src":"27990:14:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":3807,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"28008:1:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"27990:19:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"27967:42:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"6f6e65206f662072656465656d546f6b656e73496e206f722072656465656d416d6f756e74496e206d757374206265207a65726f","id":3810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"28011:54:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_e7cef2e7b515a83b650bc43dbe7230ede3601779d8be25fbf237261dccd3d9f2","typeString":"literal_string \"one of redeemTokensIn or redeemAmountIn must be zero\""},"value":"one of redeemTokensIn or redeemAmountIn must be zero"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e7cef2e7b515a83b650bc43dbe7230ede3601779d8be25fbf237261dccd3d9f2","typeString":"literal_string \"one of redeemTokensIn or redeemAmountIn must be zero\""}],"id":3802,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"27959:7:10","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3811,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"27959:107:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3812,"nodeType":"ExpressionStatement","src":"27959:107:10"},{"assignments":[3814],"declarations":[{"constant":false,"id":3814,"name":"vars","nodeType":"VariableDeclaration","scope":4097,"src":"28077:27:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_RedeemLocalVars_$3791_memory_ptr","typeString":"struct CToken.RedeemLocalVars"},"typeName":{"contractScope":null,"id":3813,"name":"RedeemLocalVars","nodeType":"UserDefinedTypeName","referencedDeclaration":3791,"src":"28077:15:10","typeDescriptions":{"typeIdentifier":"t_struct$_RedeemLocalVars_$3791_storage_ptr","typeString":"struct CToken.RedeemLocalVars"}},"value":null,"visibility":"internal"}],"id":3815,"initialValue":null,"nodeType":"VariableDeclarationStatement","src":"28077:27:10"},{"expression":{"argumentTypes":null,"id":3824,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"components":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3816,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"28175:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_RedeemLocalVars_$3791_memory_ptr","typeString":"struct CToken.RedeemLocalVars memory"}},"id":3818,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"mathErr","nodeType":"MemberAccess","referencedDeclaration":3780,"src":"28175:12:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3819,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"28189:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_RedeemLocalVars_$3791_memory_ptr","typeString":"struct CToken.RedeemLocalVars memory"}},"id":3820,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"exchangeRateMantissa","nodeType":"MemberAccess","referencedDeclaration":3782,"src":"28189:25:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3821,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"28174:41:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":3822,"name":"exchangeRateStoredInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3246,"src":"28218:26:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"function () view returns (enum CarefulMath.MathError,uint256)"}},"id":3823,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"28218:28:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"src":"28174:72:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3825,"nodeType":"ExpressionStatement","src":"28174:72:10"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"id":3830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3826,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"28260:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_RedeemLocalVars_$3791_memory_ptr","typeString":"struct CToken.RedeemLocalVars memory"}},"id":3827,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mathErr","nodeType":"MemberAccess","referencedDeclaration":3780,"src":"28260:12:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3828,"name":"MathError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6659,"src":"28276:9:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MathError_$6659_$","typeString":"type(enum CarefulMath.MathError)"}},"id":3829,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"28276:18:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"src":"28260:34:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":3843,"nodeType":"IfStatement","src":"28256:166:10","trueBody":{"id":3842,"nodeType":"Block","src":"28296:126:10","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3832,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"28328:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":3833,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"MATH_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"28328:16:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3834,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13782,"src":"28346:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13782_$","typeString":"type(enum TokenErrorReporter.FailureInfo)"}},"id":3835,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"REDEEM_EXCHANGE_RATE_READ_FAILED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"28346:44:10","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3837,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"28397:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_RedeemLocalVars_$3791_memory_ptr","typeString":"struct CToken.RedeemLocalVars memory"}},"id":3838,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mathErr","nodeType":"MemberAccess","referencedDeclaration":3780,"src":"28397:12:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}],"id":3836,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"28392:4:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":3839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"28392:18:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3831,"name":"failOpaque","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13848,"src":"28317:10:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13681_$_t_enum$_FailureInfo_$13782_$_t_uint256_$returns$_t_uint256_$","typeString":"function (enum TokenErrorReporter.Error,enum TokenErrorReporter.FailureInfo,uint256) returns (uint256)"}},"id":3840,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"28317:94:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3801,"id":3841,"nodeType":"Return","src":"28310:101:10"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":3844,"name":"redeemTokensIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3795,"src":"28473:14:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"30","id":3845,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"28490:1:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"28473:18:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":3926,"nodeType":"Block","src":"29118:616:10","statements":[{"expression":{"argumentTypes":null,"id":3900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"components":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3887,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"29361:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_RedeemLocalVars_$3791_memory_ptr","typeString":"struct CToken.RedeemLocalVars memory"}},"id":3889,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"mathErr","nodeType":"MemberAccess","referencedDeclaration":3780,"src":"29361:12:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3890,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"29375:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_RedeemLocalVars_$3791_memory_ptr","typeString":"struct CToken.RedeemLocalVars memory"}},"id":3891,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"redeemTokens","nodeType":"MemberAccess","referencedDeclaration":3784,"src":"29375:17:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3892,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"29360:33:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3894,"name":"redeemAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3797,"src":"29419:14:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3896,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"29450:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_RedeemLocalVars_$3791_memory_ptr","typeString":"struct CToken.RedeemLocalVars memory"}},"id":3897,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"exchangeRateMantissa","nodeType":"MemberAccess","referencedDeclaration":3782,"src":"29450:25:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3895,"name":"Exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14390,"src":"29435:3:10","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Exp_$14390_storage_ptr_$","typeString":"type(struct ExponentialNoError.Exp storage pointer)"}},"id":3898,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"29435:42:10","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}],"id":3893,"name":"divScalarByExpTruncate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14213,"src":"29396:22:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_struct$_Exp_$14390_memory_ptr_$returns$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"function (uint256,struct ExponentialNoError.Exp memory) pure returns (enum CarefulMath.MathError,uint256)"}},"id":3899,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"29396:82:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"src":"29360:118:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3901,"nodeType":"ExpressionStatement","src":"29360:118:10"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"id":3906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3902,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"29496:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_RedeemLocalVars_$3791_memory_ptr","typeString":"struct CToken.RedeemLocalVars memory"}},"id":3903,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mathErr","nodeType":"MemberAccess","referencedDeclaration":3780,"src":"29496:12:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3904,"name":"MathError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6659,"src":"29512:9:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MathError_$6659_$","typeString":"type(enum CarefulMath.MathError)"}},"id":3905,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"29512:18:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"src":"29496:34:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":3919,"nodeType":"IfStatement","src":"29492:183:10","trueBody":{"id":3918,"nodeType":"Block","src":"29532:143:10","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3908,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"29568:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":3909,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"MATH_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"29568:16:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3910,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13782,"src":"29586:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13782_$","typeString":"type(enum TokenErrorReporter.FailureInfo)"}},"id":3911,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"REDEEM_EXCHANGE_AMOUNT_CALCULATION_FAILED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"29586:53:10","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3913,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"29646:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_RedeemLocalVars_$3791_memory_ptr","typeString":"struct CToken.RedeemLocalVars memory"}},"id":3914,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mathErr","nodeType":"MemberAccess","referencedDeclaration":3780,"src":"29646:12:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}],"id":3912,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"29641:4:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":3915,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"29641:18:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3907,"name":"failOpaque","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13848,"src":"29557:10:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13681_$_t_enum$_FailureInfo_$13782_$_t_uint256_$returns$_t_uint256_$","typeString":"function (enum TokenErrorReporter.Error,enum TokenErrorReporter.FailureInfo,uint256) returns (uint256)"}},"id":3916,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"29557:103:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3801,"id":3917,"nodeType":"Return","src":"29550:110:10"}]}},{"expression":{"argumentTypes":null,"id":3924,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3920,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"29689:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_RedeemLocalVars_$3791_memory_ptr","typeString":"struct CToken.RedeemLocalVars memory"}},"id":3922,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"redeemAmount","nodeType":"MemberAccess","referencedDeclaration":3786,"src":"29689:17:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":3923,"name":"redeemAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3797,"src":"29709:14:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"29689:34:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3925,"nodeType":"ExpressionStatement","src":"29689:34:10"}]},"id":3927,"nodeType":"IfStatement","src":"28469:1265:10","trueBody":{"id":3886,"nodeType":"Block","src":"28493:619:10","statements":[{"expression":{"argumentTypes":null,"id":3851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3847,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"28743:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_RedeemLocalVars_$3791_memory_ptr","typeString":"struct CToken.RedeemLocalVars memory"}},"id":3849,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"redeemTokens","nodeType":"MemberAccess","referencedDeclaration":3784,"src":"28743:17:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":3850,"name":"redeemTokensIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3795,"src":"28763:14:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"28743:34:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3852,"nodeType":"ExpressionStatement","src":"28743:34:10"},{"expression":{"argumentTypes":null,"id":3866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"components":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3853,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"28793:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_RedeemLocalVars_$3791_memory_ptr","typeString":"struct CToken.RedeemLocalVars memory"}},"id":3855,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"mathErr","nodeType":"MemberAccess","referencedDeclaration":3780,"src":"28793:12:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3856,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"28807:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_RedeemLocalVars_$3791_memory_ptr","typeString":"struct CToken.RedeemLocalVars memory"}},"id":3857,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"redeemAmount","nodeType":"MemberAccess","referencedDeclaration":3786,"src":"28807:17:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3858,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"28792:33:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3861,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"28861:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_RedeemLocalVars_$3791_memory_ptr","typeString":"struct CToken.RedeemLocalVars memory"}},"id":3862,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"exchangeRateMantissa","nodeType":"MemberAccess","referencedDeclaration":3782,"src":"28861:25:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3860,"name":"Exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14390,"src":"28846:3:10","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Exp_$14390_storage_ptr_$","typeString":"type(struct ExponentialNoError.Exp storage pointer)"}},"id":3863,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"28846:42:10","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}},{"argumentTypes":null,"id":3864,"name":"redeemTokensIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3795,"src":"28890:14:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3859,"name":"mulScalarTruncate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14055,"src":"28828:17:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Exp_$14390_memory_ptr_$_t_uint256_$returns$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"function (struct ExponentialNoError.Exp memory,uint256) pure returns (enum CarefulMath.MathError,uint256)"}},"id":3865,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"28828:77:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"src":"28792:113:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3867,"nodeType":"ExpressionStatement","src":"28792:113:10"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"id":3872,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3868,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"28923:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_RedeemLocalVars_$3791_memory_ptr","typeString":"struct CToken.RedeemLocalVars memory"}},"id":3869,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mathErr","nodeType":"MemberAccess","referencedDeclaration":3780,"src":"28923:12:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3870,"name":"MathError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6659,"src":"28939:9:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MathError_$6659_$","typeString":"type(enum CarefulMath.MathError)"}},"id":3871,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"28939:18:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"src":"28923:34:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":3885,"nodeType":"IfStatement","src":"28919:183:10","trueBody":{"id":3884,"nodeType":"Block","src":"28959:143:10","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3874,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"28995:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":3875,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"MATH_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"28995:16:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3876,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13782,"src":"29013:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13782_$","typeString":"type(enum TokenErrorReporter.FailureInfo)"}},"id":3877,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"REDEEM_EXCHANGE_TOKENS_CALCULATION_FAILED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"29013:53:10","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3879,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"29073:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_RedeemLocalVars_$3791_memory_ptr","typeString":"struct CToken.RedeemLocalVars memory"}},"id":3880,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mathErr","nodeType":"MemberAccess","referencedDeclaration":3780,"src":"29073:12:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}],"id":3878,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"29068:4:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":3881,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"29068:18:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3873,"name":"failOpaque","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13848,"src":"28984:10:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13681_$_t_enum$_FailureInfo_$13782_$_t_uint256_$returns$_t_uint256_$","typeString":"function (enum TokenErrorReporter.Error,enum TokenErrorReporter.FailureInfo,uint256) returns (uint256)"}},"id":3882,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"28984:103:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3801,"id":3883,"nodeType":"Return","src":"28977:110:10"}]}}]}},{"assignments":[3929],"declarations":[{"constant":false,"id":3929,"name":"allowed","nodeType":"VariableDeclaration","scope":4097,"src":"29785:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3928,"name":"uint","nodeType":"ElementaryTypeName","src":"29785:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":3939,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3933,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22614,"src":"29834:4:10","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":3932,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"29826:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":3934,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"29826:13:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":3935,"name":"redeemer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3793,"src":"29841:8:10","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3936,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"29851:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_RedeemLocalVars_$3791_memory_ptr","typeString":"struct CToken.RedeemLocalVars memory"}},"id":3937,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"redeemTokens","nodeType":"MemberAccess","referencedDeclaration":3784,"src":"29851:17:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":3930,"name":"comptroller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6224,"src":"29800:11:10","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerInterface_$12980","typeString":"contract ComptrollerInterface"}},"id":3931,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"redeemAllowed","nodeType":"MemberAccess","referencedDeclaration":12812,"src":"29800:25:10","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,address,uint256) external returns (uint256)"}},"id":3938,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"29800:69:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"29785:84:10"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3942,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":3940,"name":"allowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3929,"src":"29883:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"hexValue":"30","id":3941,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29894:1:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"29883:12:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":3952,"nodeType":"IfStatement","src":"29879:140:10","trueBody":{"id":3951,"nodeType":"Block","src":"29897:122:10","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3944,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"29929:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":3945,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"COMPTROLLER_REJECTION","nodeType":"MemberAccess","referencedDeclaration":null,"src":"29929:27:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3946,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13782,"src":"29958:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13782_$","typeString":"type(enum TokenErrorReporter.FailureInfo)"}},"id":3947,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"REDEEM_COMPTROLLER_REJECTION","nodeType":"MemberAccess","referencedDeclaration":null,"src":"29958:40:10","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}},{"argumentTypes":null,"id":3948,"name":"allowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3929,"src":"30000:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3943,"name":"failOpaque","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13848,"src":"29918:10:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13681_$_t_enum$_FailureInfo_$13782_$_t_uint256_$returns$_t_uint256_$","typeString":"function (enum TokenErrorReporter.Error,enum TokenErrorReporter.FailureInfo,uint256) returns (uint256)"}},"id":3949,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"29918:90:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3801,"id":3950,"nodeType":"Return","src":"29911:97:10"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3956,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":3953,"name":"accrualBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6236,"src":"30104:18:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":3954,"name":"getBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2912,"src":"30126:14:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":3955,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"30126:16:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"30104:38:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":3965,"nodeType":"IfStatement","src":"30100:140:10","trueBody":{"id":3964,"nodeType":"Block","src":"30144:96:10","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3958,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"30170:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":3959,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"MARKET_NOT_FRESH","nodeType":"MemberAccess","referencedDeclaration":null,"src":"30170:22:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3960,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13782,"src":"30194:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13782_$","typeString":"type(enum TokenErrorReporter.FailureInfo)"}},"id":3961,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"REDEEM_FRESHNESS_CHECK","nodeType":"MemberAccess","referencedDeclaration":null,"src":"30194:34:10","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}],"id":3957,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13814,"src":"30165:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13681_$_t_enum$_FailureInfo_$13782_$returns$_t_uint256_$","typeString":"function (enum TokenErrorReporter.Error,enum TokenErrorReporter.FailureInfo) returns (uint256)"}},"id":3962,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"30165:64:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3801,"id":3963,"nodeType":"Return","src":"30158:71:10"}]}},{"expression":{"argumentTypes":null,"id":3977,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"components":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3966,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"30491:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_RedeemLocalVars_$3791_memory_ptr","typeString":"struct CToken.RedeemLocalVars memory"}},"id":3968,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"mathErr","nodeType":"MemberAccess","referencedDeclaration":3780,"src":"30491:12:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3969,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"30505:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_RedeemLocalVars_$3791_memory_ptr","typeString":"struct CToken.RedeemLocalVars memory"}},"id":3970,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"totalSupplyNew","nodeType":"MemberAccess","referencedDeclaration":3788,"src":"30505:19:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3971,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"30490:35:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3973,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6248,"src":"30536:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3974,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"30549:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_RedeemLocalVars_$3791_memory_ptr","typeString":"struct CToken.RedeemLocalVars memory"}},"id":3975,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"redeemTokens","nodeType":"MemberAccess","referencedDeclaration":3784,"src":"30549:17:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3972,"name":"subUInt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6764,"src":"30528:7:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (enum CarefulMath.MathError,uint256)"}},"id":3976,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"30528:39:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"src":"30490:77:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3978,"nodeType":"ExpressionStatement","src":"30490:77:10"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"id":3983,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3979,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"30581:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_RedeemLocalVars_$3791_memory_ptr","typeString":"struct CToken.RedeemLocalVars memory"}},"id":3980,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mathErr","nodeType":"MemberAccess","referencedDeclaration":3780,"src":"30581:12:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3981,"name":"MathError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6659,"src":"30597:9:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MathError_$6659_$","typeString":"type(enum CarefulMath.MathError)"}},"id":3982,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"30597:18:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"src":"30581:34:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":3996,"nodeType":"IfStatement","src":"30577:176:10","trueBody":{"id":3995,"nodeType":"Block","src":"30617:136:10","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3985,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"30649:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":3986,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"MATH_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"30649:16:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3987,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13782,"src":"30667:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13782_$","typeString":"type(enum TokenErrorReporter.FailureInfo)"}},"id":3988,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"REDEEM_NEW_TOTAL_SUPPLY_CALCULATION_FAILED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"30667:54:10","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3990,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"30728:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_RedeemLocalVars_$3791_memory_ptr","typeString":"struct CToken.RedeemLocalVars memory"}},"id":3991,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mathErr","nodeType":"MemberAccess","referencedDeclaration":3780,"src":"30728:12:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}],"id":3989,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"30723:4:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":3992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"30723:18:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3984,"name":"failOpaque","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13848,"src":"30638:10:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13681_$_t_enum$_FailureInfo_$13782_$_t_uint256_$returns$_t_uint256_$","typeString":"function (enum TokenErrorReporter.Error,enum TokenErrorReporter.FailureInfo,uint256) returns (uint256)"}},"id":3993,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"30638:104:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3801,"id":3994,"nodeType":"Return","src":"30631:111:10"}]}},{"expression":{"argumentTypes":null,"id":4010,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"components":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3997,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"30764:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_RedeemLocalVars_$3791_memory_ptr","typeString":"struct CToken.RedeemLocalVars memory"}},"id":3999,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"mathErr","nodeType":"MemberAccess","referencedDeclaration":3780,"src":"30764:12:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4000,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"30778:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_RedeemLocalVars_$3791_memory_ptr","typeString":"struct CToken.RedeemLocalVars memory"}},"id":4001,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"accountTokensNew","nodeType":"MemberAccess","referencedDeclaration":3790,"src":"30778:21:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4002,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"30763:37:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":4004,"name":"accountTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6252,"src":"30811:13:10","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":4006,"indexExpression":{"argumentTypes":null,"id":4005,"name":"redeemer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3793,"src":"30825:8:10","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"30811:23:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4007,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"30836:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_RedeemLocalVars_$3791_memory_ptr","typeString":"struct CToken.RedeemLocalVars memory"}},"id":4008,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"redeemTokens","nodeType":"MemberAccess","referencedDeclaration":3784,"src":"30836:17:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4003,"name":"subUInt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6764,"src":"30803:7:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (enum CarefulMath.MathError,uint256)"}},"id":4009,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"30803:51:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"src":"30763:91:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4011,"nodeType":"ExpressionStatement","src":"30763:91:10"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"id":4016,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4012,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"30868:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_RedeemLocalVars_$3791_memory_ptr","typeString":"struct CToken.RedeemLocalVars memory"}},"id":4013,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mathErr","nodeType":"MemberAccess","referencedDeclaration":3780,"src":"30868:12:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4014,"name":"MathError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6659,"src":"30884:9:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MathError_$6659_$","typeString":"type(enum CarefulMath.MathError)"}},"id":4015,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"30884:18:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"src":"30868:34:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":4029,"nodeType":"IfStatement","src":"30864:179:10","trueBody":{"id":4028,"nodeType":"Block","src":"30904:139:10","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4018,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"30936:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":4019,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"MATH_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"30936:16:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4020,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13782,"src":"30954:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13782_$","typeString":"type(enum TokenErrorReporter.FailureInfo)"}},"id":4021,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"REDEEM_NEW_ACCOUNT_BALANCE_CALCULATION_FAILED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"30954:57:10","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4023,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"31018:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_RedeemLocalVars_$3791_memory_ptr","typeString":"struct CToken.RedeemLocalVars memory"}},"id":4024,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mathErr","nodeType":"MemberAccess","referencedDeclaration":3780,"src":"31018:12:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}],"id":4022,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"31013:4:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":4025,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"31013:18:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4017,"name":"failOpaque","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13848,"src":"30925:10:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13681_$_t_enum$_FailureInfo_$13782_$_t_uint256_$returns$_t_uint256_$","typeString":"function (enum TokenErrorReporter.Error,enum TokenErrorReporter.FailureInfo,uint256) returns (uint256)"}},"id":4026,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"30925:107:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3801,"id":4027,"nodeType":"Return","src":"30918:114:10"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":4030,"name":"getCashPrior","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6075,"src":"31121:12:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":4031,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"31121:14:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4032,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"31138:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_RedeemLocalVars_$3791_memory_ptr","typeString":"struct CToken.RedeemLocalVars memory"}},"id":4033,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"redeemAmount","nodeType":"MemberAccess","referencedDeclaration":3786,"src":"31138:17:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31121:34:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":4043,"nodeType":"IfStatement","src":"31117:153:10","trueBody":{"id":4042,"nodeType":"Block","src":"31157:113:10","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4036,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"31183:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":4037,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"TOKEN_INSUFFICIENT_CASH","nodeType":"MemberAccess","referencedDeclaration":null,"src":"31183:29:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4038,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13782,"src":"31214:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13782_$","typeString":"type(enum TokenErrorReporter.FailureInfo)"}},"id":4039,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"REDEEM_TRANSFER_OUT_NOT_POSSIBLE","nodeType":"MemberAccess","referencedDeclaration":null,"src":"31214:44:10","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}],"id":4035,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13814,"src":"31178:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13681_$_t_enum$_FailureInfo_$13782_$returns$_t_uint256_$","typeString":"function (enum TokenErrorReporter.Error,enum TokenErrorReporter.FailureInfo) returns (uint256)"}},"id":4040,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"31178:81:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3801,"id":4041,"nodeType":"Return","src":"31171:88:10"}]}},{"expression":{"argumentTypes":null,"id":4047,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":4044,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6248,"src":"31462:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4045,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"31476:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_RedeemLocalVars_$3791_memory_ptr","typeString":"struct CToken.RedeemLocalVars memory"}},"id":4046,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"totalSupplyNew","nodeType":"MemberAccess","referencedDeclaration":3788,"src":"31476:19:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31462:33:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4048,"nodeType":"ExpressionStatement","src":"31462:33:10"},{"expression":{"argumentTypes":null,"id":4054,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":4049,"name":"accountTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6252,"src":"31505:13:10","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":4051,"indexExpression":{"argumentTypes":null,"id":4050,"name":"redeemer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3793,"src":"31519:8:10","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"31505:23:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4052,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"31531:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_RedeemLocalVars_$3791_memory_ptr","typeString":"struct CToken.RedeemLocalVars memory"}},"id":4053,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"accountTokensNew","nodeType":"MemberAccess","referencedDeclaration":3790,"src":"31531:21:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31505:47:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4055,"nodeType":"ExpressionStatement","src":"31505:47:10"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":4057,"name":"redeemer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3793,"src":"31934:8:10","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4058,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"31944:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_RedeemLocalVars_$3791_memory_ptr","typeString":"struct CToken.RedeemLocalVars memory"}},"id":4059,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"redeemAmount","nodeType":"MemberAccess","referencedDeclaration":3786,"src":"31944:17:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4056,"name":"doTransferOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6091,"src":"31920:13:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$","typeString":"function (address payable,uint256)"}},"id":4060,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"31920:42:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4061,"nodeType":"ExpressionStatement","src":"31920:42:10"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":4063,"name":"redeemer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3793,"src":"32046:8:10","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":4065,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22614,"src":"32064:4:10","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":4064,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"32056:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":4066,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"32056:13:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4067,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"32071:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_RedeemLocalVars_$3791_memory_ptr","typeString":"struct CToken.RedeemLocalVars memory"}},"id":4068,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"redeemTokens","nodeType":"MemberAccess","referencedDeclaration":3784,"src":"32071:17:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4062,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6393,"src":"32037:8:10","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":4069,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"32037:52:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4070,"nodeType":"EmitStatement","src":"32032:57:10"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":4072,"name":"redeemer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3793,"src":"32111:8:10","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4073,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"32121:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_RedeemLocalVars_$3791_memory_ptr","typeString":"struct CToken.RedeemLocalVars memory"}},"id":4074,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"redeemAmount","nodeType":"MemberAccess","referencedDeclaration":3786,"src":"32121:17:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4075,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"32140:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_RedeemLocalVars_$3791_memory_ptr","typeString":"struct CToken.RedeemLocalVars memory"}},"id":4076,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"redeemTokens","nodeType":"MemberAccess","referencedDeclaration":3784,"src":"32140:17:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4071,"name":"Redeem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6305,"src":"32104:6:10","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256)"}},"id":4077,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"32104:54:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4078,"nodeType":"EmitStatement","src":"32099:59:10"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":4083,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22614,"src":"32241:4:10","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":4082,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"32233:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":4084,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"32233:13:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":4085,"name":"redeemer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3793,"src":"32248:8:10","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4086,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"32258:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_RedeemLocalVars_$3791_memory_ptr","typeString":"struct CToken.RedeemLocalVars memory"}},"id":4087,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"redeemAmount","nodeType":"MemberAccess","referencedDeclaration":3786,"src":"32258:17:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4088,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"32277:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_RedeemLocalVars_$3791_memory_ptr","typeString":"struct CToken.RedeemLocalVars memory"}},"id":4089,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"redeemTokens","nodeType":"MemberAccess","referencedDeclaration":3784,"src":"32277:17:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":4079,"name":"comptroller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6224,"src":"32208:11:10","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerInterface_$12980","typeString":"contract ComptrollerInterface"}},"id":4081,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"redeemVerify","nodeType":"MemberAccess","referencedDeclaration":12823,"src":"32208:24:10","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256) external"}},"id":4090,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"32208:87:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4091,"nodeType":"ExpressionStatement","src":"32208:87:10"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4093,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"32318:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":4094,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"32318:14:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}],"id":4092,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"32313:4:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":4095,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"32313:20:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3801,"id":4096,"nodeType":"Return","src":"32306:27:10"}]},"documentation":"@notice User redeems cTokens in exchange for the underlying asset\n@dev Assumes interest has already been accrued up to the current block\n@param redeemer The address of the account which is redeeming the tokens\n@param redeemTokensIn The number of cTokens to redeem into underlying (only one of redeemTokensIn or redeemAmountIn may be non-zero)\n@param redeemAmountIn The number of underlying tokens to receive from redeeming cTokens (only one of redeemTokensIn or redeemAmountIn may be non-zero)\n@return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)","id":4098,"implemented":true,"kind":"function","modifiers":[],"name":"redeemFresh","nodeType":"FunctionDefinition","parameters":{"id":3798,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3793,"name":"redeemer","nodeType":"VariableDeclaration","scope":4098,"src":"27857:24:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":3792,"name":"address","nodeType":"ElementaryTypeName","src":"27857:15:10","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"value":null,"visibility":"internal"},{"constant":false,"id":3795,"name":"redeemTokensIn","nodeType":"VariableDeclaration","scope":4098,"src":"27883:19:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3794,"name":"uint","nodeType":"ElementaryTypeName","src":"27883:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":3797,"name":"redeemAmountIn","nodeType":"VariableDeclaration","scope":4098,"src":"27904:19:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3796,"name":"uint","nodeType":"ElementaryTypeName","src":"27904:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"27856:68:10"},"returnParameters":{"id":3801,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3800,"name":"","nodeType":"VariableDeclaration","scope":4098,"src":"27943:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3799,"name":"uint","nodeType":"ElementaryTypeName","src":"27943:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"27942:6:10"},"scope":6186,"src":"27836:4504:10","stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},{"body":{"id":4135,"nodeType":"Block","src":"32688:436:10","statements":[{"assignments":[4109],"declarations":[{"constant":false,"id":4109,"name":"error","nodeType":"VariableDeclaration","scope":4135,"src":"32698:10:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4108,"name":"uint","nodeType":"ElementaryTypeName","src":"32698:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":4112,"initialValue":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":4110,"name":"accrueInterest","nodeType":"Identifier","overloadedDeclarations":[3327],"referencedDeclaration":3327,"src":"32711:14:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_uint256_$","typeString":"function () returns (uint256)"}},"id":4111,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"32711:16:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"32698:29:10"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4118,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":4113,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4109,"src":"32741:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4115,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"32755:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":4116,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"32755:14:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}],"id":4114,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"32750:4:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":4117,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"32750:20:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"32741:29:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":4128,"nodeType":"IfStatement","src":"32737:246:10","trueBody":{"id":4127,"nodeType":"Block","src":"32772:211:10","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":4121,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4109,"src":"32922:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4120,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"32916:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":4122,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"32916:12:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4123,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13782,"src":"32930:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13782_$","typeString":"type(enum TokenErrorReporter.FailureInfo)"}},"id":4124,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"BORROW_ACCRUE_INTEREST_FAILED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"32930:41:10","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}],"id":4119,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13814,"src":"32911:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13681_$_t_enum$_FailureInfo_$13782_$returns$_t_uint256_$","typeString":"function (enum TokenErrorReporter.Error,enum TokenErrorReporter.FailureInfo) returns (uint256)"}},"id":4125,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"32911:61:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4107,"id":4126,"nodeType":"Return","src":"32904:68:10"}]}},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4130,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"33092:3:10","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":4131,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"33092:10:10","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"id":4132,"name":"borrowAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4100,"src":"33104:12:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4129,"name":"borrowFresh","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4365,"src":"33080:11:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address payable,uint256) returns (uint256)"}},"id":4133,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"33080:37:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4107,"id":4134,"nodeType":"Return","src":"33073:44:10"}]},"documentation":"@notice Sender borrows assets from the protocol to their own address\n@param borrowAmount The amount of the underlying asset to borrow\n@return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)","id":4136,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"argumentTypes":null,"hexValue":"66616c7365","id":4103,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"32666:5:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"id":4104,"modifierName":{"argumentTypes":null,"id":4102,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6105,"src":"32653:12:10","typeDescriptions":{"typeIdentifier":"t_modifier$_t_bool_$","typeString":"modifier (bool)"}},"nodeType":"ModifierInvocation","src":"32653:19:10"}],"name":"borrowInternal","nodeType":"FunctionDefinition","parameters":{"id":4101,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4100,"name":"borrowAmount","nodeType":"VariableDeclaration","scope":4136,"src":"32625:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4099,"name":"uint","nodeType":"ElementaryTypeName","src":"32625:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"32624:19:10"},"returnParameters":{"id":4107,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4106,"name":"","nodeType":"VariableDeclaration","scope":4136,"src":"32682:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4105,"name":"uint","nodeType":"ElementaryTypeName","src":"32682:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"32681:6:10"},"scope":6186,"src":"32601:523:10","stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},{"canonicalName":"CToken.BorrowLocalVars","id":4145,"members":[{"constant":false,"id":4138,"name":"mathErr","nodeType":"VariableDeclaration","scope":4145,"src":"33163:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"typeName":{"contractScope":null,"id":4137,"name":"MathError","nodeType":"UserDefinedTypeName","referencedDeclaration":6659,"src":"33163:9:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"value":null,"visibility":"internal"},{"constant":false,"id":4140,"name":"accountBorrows","nodeType":"VariableDeclaration","scope":4145,"src":"33190:19:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4139,"name":"uint","nodeType":"ElementaryTypeName","src":"33190:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":4142,"name":"accountBorrowsNew","nodeType":"VariableDeclaration","scope":4145,"src":"33219:22:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4141,"name":"uint","nodeType":"ElementaryTypeName","src":"33219:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":4144,"name":"totalBorrowsNew","nodeType":"VariableDeclaration","scope":4145,"src":"33251:20:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4143,"name":"uint","nodeType":"ElementaryTypeName","src":"33251:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"name":"BorrowLocalVars","nodeType":"StructDefinition","scope":6186,"src":"33130:148:10","visibility":"public"},{"body":{"id":4364,"nodeType":"Block","src":"33627:3244:10","statements":[{"assignments":[4155],"declarations":[{"constant":false,"id":4155,"name":"allowed","nodeType":"VariableDeclaration","scope":4364,"src":"33678:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4154,"name":"uint","nodeType":"ElementaryTypeName","src":"33678:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":4164,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":4159,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22614,"src":"33727:4:10","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":4158,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"33719:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":4160,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"33719:13:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":4161,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4147,"src":"33734:8:10","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"id":4162,"name":"borrowAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4149,"src":"33744:12:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":4156,"name":"comptroller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6224,"src":"33693:11:10","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerInterface_$12980","typeString":"contract ComptrollerInterface"}},"id":4157,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"borrowAllowed","nodeType":"MemberAccess","referencedDeclaration":12834,"src":"33693:25:10","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,address,uint256) external returns (uint256)"}},"id":4163,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"33693:64:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"33678:79:10"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":4165,"name":"allowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4155,"src":"33771:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"hexValue":"30","id":4166,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"33782:1:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"33771:12:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":4177,"nodeType":"IfStatement","src":"33767:140:10","trueBody":{"id":4176,"nodeType":"Block","src":"33785:122:10","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4169,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"33817:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":4170,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"COMPTROLLER_REJECTION","nodeType":"MemberAccess","referencedDeclaration":null,"src":"33817:27:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4171,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13782,"src":"33846:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13782_$","typeString":"type(enum TokenErrorReporter.FailureInfo)"}},"id":4172,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"BORROW_COMPTROLLER_REJECTION","nodeType":"MemberAccess","referencedDeclaration":null,"src":"33846:40:10","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}},{"argumentTypes":null,"id":4173,"name":"allowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4155,"src":"33888:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4168,"name":"failOpaque","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13848,"src":"33806:10:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13681_$_t_enum$_FailureInfo_$13782_$_t_uint256_$returns$_t_uint256_$","typeString":"function (enum TokenErrorReporter.Error,enum TokenErrorReporter.FailureInfo,uint256) returns (uint256)"}},"id":4174,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"33806:90:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4153,"id":4175,"nodeType":"Return","src":"33799:97:10"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4181,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":4178,"name":"accrualBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6236,"src":"33992:18:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":4179,"name":"getBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2912,"src":"34014:14:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":4180,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"34014:16:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"33992:38:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":4190,"nodeType":"IfStatement","src":"33988:140:10","trueBody":{"id":4189,"nodeType":"Block","src":"34032:96:10","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4183,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"34058:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":4184,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"MARKET_NOT_FRESH","nodeType":"MemberAccess","referencedDeclaration":null,"src":"34058:22:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4185,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13782,"src":"34082:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13782_$","typeString":"type(enum TokenErrorReporter.FailureInfo)"}},"id":4186,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"BORROW_FRESHNESS_CHECK","nodeType":"MemberAccess","referencedDeclaration":null,"src":"34082:34:10","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}],"id":4182,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13814,"src":"34053:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13681_$_t_enum$_FailureInfo_$13782_$returns$_t_uint256_$","typeString":"function (enum TokenErrorReporter.Error,enum TokenErrorReporter.FailureInfo) returns (uint256)"}},"id":4187,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"34053:64:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4153,"id":4188,"nodeType":"Return","src":"34046:71:10"}]}},{"assignments":[4192],"declarations":[{"constant":false,"id":4192,"name":"cashPrior","nodeType":"VariableDeclaration","scope":4364,"src":"34213:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4191,"name":"uint","nodeType":"ElementaryTypeName","src":"34213:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":4195,"initialValue":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":4193,"name":"getCashPrior","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6075,"src":"34230:12:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":4194,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"34230:14:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"34213:31:10"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4198,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":4196,"name":"cashPrior","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4192,"src":"34259:9:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"id":4197,"name":"borrowAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4149,"src":"34271:12:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"34259:24:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":4207,"nodeType":"IfStatement","src":"34255:136:10","trueBody":{"id":4206,"nodeType":"Block","src":"34285:106:10","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4200,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"34311:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":4201,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"TOKEN_INSUFFICIENT_CASH","nodeType":"MemberAccess","referencedDeclaration":null,"src":"34311:29:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4202,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13782,"src":"34342:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13782_$","typeString":"type(enum TokenErrorReporter.FailureInfo)"}},"id":4203,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"BORROW_CASH_NOT_AVAILABLE","nodeType":"MemberAccess","referencedDeclaration":null,"src":"34342:37:10","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}],"id":4199,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13814,"src":"34306:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13681_$_t_enum$_FailureInfo_$13782_$returns$_t_uint256_$","typeString":"function (enum TokenErrorReporter.Error,enum TokenErrorReporter.FailureInfo) returns (uint256)"}},"id":4204,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"34306:74:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4153,"id":4205,"nodeType":"Return","src":"34299:81:10"}]}},{"assignments":[4209],"declarations":[{"constant":false,"id":4209,"name":"vars","nodeType":"VariableDeclaration","scope":4364,"src":"34401:27:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_BorrowLocalVars_$4145_memory_ptr","typeString":"struct CToken.BorrowLocalVars"},"typeName":{"contractScope":null,"id":4208,"name":"BorrowLocalVars","nodeType":"UserDefinedTypeName","referencedDeclaration":4145,"src":"34401:15:10","typeDescriptions":{"typeIdentifier":"t_struct$_BorrowLocalVars_$4145_storage_ptr","typeString":"struct CToken.BorrowLocalVars"}},"value":null,"visibility":"internal"}],"id":4210,"initialValue":null,"nodeType":"VariableDeclarationStatement","src":"34401:27:10"},{"expression":{"argumentTypes":null,"id":4220,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"components":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4211,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4209,"src":"34672:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_BorrowLocalVars_$4145_memory_ptr","typeString":"struct CToken.BorrowLocalVars memory"}},"id":4213,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"mathErr","nodeType":"MemberAccess","referencedDeclaration":4138,"src":"34672:12:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4214,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4209,"src":"34686:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_BorrowLocalVars_$4145_memory_ptr","typeString":"struct CToken.BorrowLocalVars memory"}},"id":4215,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"accountBorrows","nodeType":"MemberAccess","referencedDeclaration":4140,"src":"34686:19:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4216,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"34671:35:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":4218,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4147,"src":"34737:8:10","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":4217,"name":"borrowBalanceStoredInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3112,"src":"34709:27:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"function (address) view returns (enum CarefulMath.MathError,uint256)"}},"id":4219,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"34709:37:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"src":"34671:75:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4221,"nodeType":"ExpressionStatement","src":"34671:75:10"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"id":4226,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4222,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4209,"src":"34760:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_BorrowLocalVars_$4145_memory_ptr","typeString":"struct CToken.BorrowLocalVars memory"}},"id":4223,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mathErr","nodeType":"MemberAccess","referencedDeclaration":4138,"src":"34760:12:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4224,"name":"MathError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6659,"src":"34776:9:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MathError_$6659_$","typeString":"type(enum CarefulMath.MathError)"}},"id":4225,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"34776:18:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"src":"34760:34:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":4239,"nodeType":"IfStatement","src":"34756:179:10","trueBody":{"id":4238,"nodeType":"Block","src":"34796:139:10","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4228,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"34828:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":4229,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"MATH_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"34828:16:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4230,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13782,"src":"34846:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13782_$","typeString":"type(enum TokenErrorReporter.FailureInfo)"}},"id":4231,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"BORROW_ACCUMULATED_BALANCE_CALCULATION_FAILED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"34846:57:10","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4233,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4209,"src":"34910:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_BorrowLocalVars_$4145_memory_ptr","typeString":"struct CToken.BorrowLocalVars memory"}},"id":4234,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mathErr","nodeType":"MemberAccess","referencedDeclaration":4138,"src":"34910:12:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}],"id":4232,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34905:4:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":4235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"34905:18:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4227,"name":"failOpaque","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13848,"src":"34817:10:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13681_$_t_enum$_FailureInfo_$13782_$_t_uint256_$returns$_t_uint256_$","typeString":"function (enum TokenErrorReporter.Error,enum TokenErrorReporter.FailureInfo,uint256) returns (uint256)"}},"id":4236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"34817:107:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4153,"id":4237,"nodeType":"Return","src":"34810:114:10"}]}},{"expression":{"argumentTypes":null,"id":4251,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"components":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4240,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4209,"src":"34946:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_BorrowLocalVars_$4145_memory_ptr","typeString":"struct CToken.BorrowLocalVars memory"}},"id":4242,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"mathErr","nodeType":"MemberAccess","referencedDeclaration":4138,"src":"34946:12:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4243,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4209,"src":"34960:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_BorrowLocalVars_$4145_memory_ptr","typeString":"struct CToken.BorrowLocalVars memory"}},"id":4244,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"accountBorrowsNew","nodeType":"MemberAccess","referencedDeclaration":4142,"src":"34960:22:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4245,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"34945:38:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4247,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4209,"src":"34994:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_BorrowLocalVars_$4145_memory_ptr","typeString":"struct CToken.BorrowLocalVars memory"}},"id":4248,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"accountBorrows","nodeType":"MemberAccess","referencedDeclaration":4140,"src":"34994:19:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":4249,"name":"borrowAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4149,"src":"35015:12:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4246,"name":"addUInt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6798,"src":"34986:7:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (enum CarefulMath.MathError,uint256)"}},"id":4250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"34986:42:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"src":"34945:83:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4252,"nodeType":"ExpressionStatement","src":"34945:83:10"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"id":4257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4253,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4209,"src":"35042:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_BorrowLocalVars_$4145_memory_ptr","typeString":"struct CToken.BorrowLocalVars memory"}},"id":4254,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mathErr","nodeType":"MemberAccess","referencedDeclaration":4138,"src":"35042:12:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4255,"name":"MathError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6659,"src":"35058:9:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MathError_$6659_$","typeString":"type(enum CarefulMath.MathError)"}},"id":4256,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"35058:18:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"src":"35042:34:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":4270,"nodeType":"IfStatement","src":"35038:186:10","trueBody":{"id":4269,"nodeType":"Block","src":"35078:146:10","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4259,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"35110:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":4260,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"MATH_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"35110:16:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4261,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13782,"src":"35128:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13782_$","typeString":"type(enum TokenErrorReporter.FailureInfo)"}},"id":4262,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"BORROW_NEW_ACCOUNT_BORROW_BALANCE_CALCULATION_FAILED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"35128:64:10","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4264,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4209,"src":"35199:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_BorrowLocalVars_$4145_memory_ptr","typeString":"struct CToken.BorrowLocalVars memory"}},"id":4265,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mathErr","nodeType":"MemberAccess","referencedDeclaration":4138,"src":"35199:12:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}],"id":4263,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"35194:4:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":4266,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"35194:18:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4258,"name":"failOpaque","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13848,"src":"35099:10:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13681_$_t_enum$_FailureInfo_$13782_$_t_uint256_$returns$_t_uint256_$","typeString":"function (enum TokenErrorReporter.Error,enum TokenErrorReporter.FailureInfo,uint256) returns (uint256)"}},"id":4267,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"35099:114:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4153,"id":4268,"nodeType":"Return","src":"35092:121:10"}]}},{"expression":{"argumentTypes":null,"id":4280,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":4271,"name":"allowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4155,"src":"35291:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":4275,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22614,"src":"35340:4:10","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":4274,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"35332:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":4276,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"35332:13:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4277,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4209,"src":"35347:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_BorrowLocalVars_$4145_memory_ptr","typeString":"struct CToken.BorrowLocalVars memory"}},"id":4278,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"accountBorrowsNew","nodeType":"MemberAccess","referencedDeclaration":4142,"src":"35347:22:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":4272,"name":"comptroller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6224,"src":"35301:11:10","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerInterface_$12980","typeString":"contract ComptrollerInterface"}},"id":4273,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"borrowWithinLimits","nodeType":"MemberAccess","referencedDeclaration":12843,"src":"35301:30:10","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,uint256) external returns (uint256)"}},"id":4279,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"35301:69:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"35291:79:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4281,"nodeType":"ExpressionStatement","src":"35291:79:10"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4284,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":4282,"name":"allowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4155,"src":"35384:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"hexValue":"30","id":4283,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"35395:1:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"35384:12:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":4294,"nodeType":"IfStatement","src":"35380:140:10","trueBody":{"id":4293,"nodeType":"Block","src":"35398:122:10","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4286,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"35430:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":4287,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"COMPTROLLER_REJECTION","nodeType":"MemberAccess","referencedDeclaration":null,"src":"35430:27:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4288,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13782,"src":"35459:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13782_$","typeString":"type(enum TokenErrorReporter.FailureInfo)"}},"id":4289,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"BORROW_COMPTROLLER_REJECTION","nodeType":"MemberAccess","referencedDeclaration":null,"src":"35459:40:10","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}},{"argumentTypes":null,"id":4290,"name":"allowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4155,"src":"35501:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4285,"name":"failOpaque","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13848,"src":"35419:10:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13681_$_t_enum$_FailureInfo_$13782_$_t_uint256_$returns$_t_uint256_$","typeString":"function (enum TokenErrorReporter.Error,enum TokenErrorReporter.FailureInfo,uint256) returns (uint256)"}},"id":4291,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"35419:90:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4153,"id":4292,"nodeType":"Return","src":"35412:97:10"}]}},{"expression":{"argumentTypes":null,"id":4305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"components":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4295,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4209,"src":"35531:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_BorrowLocalVars_$4145_memory_ptr","typeString":"struct CToken.BorrowLocalVars memory"}},"id":4297,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"mathErr","nodeType":"MemberAccess","referencedDeclaration":4138,"src":"35531:12:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4298,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4209,"src":"35545:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_BorrowLocalVars_$4145_memory_ptr","typeString":"struct CToken.BorrowLocalVars memory"}},"id":4299,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"totalBorrowsNew","nodeType":"MemberAccess","referencedDeclaration":4144,"src":"35545:20:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4300,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"35530:36:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":4302,"name":"totalBorrows","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6240,"src":"35577:12:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":4303,"name":"borrowAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4149,"src":"35591:12:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4301,"name":"addUInt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6798,"src":"35569:7:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (enum CarefulMath.MathError,uint256)"}},"id":4304,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"35569:35:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"src":"35530:74:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4306,"nodeType":"ExpressionStatement","src":"35530:74:10"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"id":4311,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4307,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4209,"src":"35618:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_BorrowLocalVars_$4145_memory_ptr","typeString":"struct CToken.BorrowLocalVars memory"}},"id":4308,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mathErr","nodeType":"MemberAccess","referencedDeclaration":4138,"src":"35618:12:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4309,"name":"MathError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6659,"src":"35634:9:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MathError_$6659_$","typeString":"type(enum CarefulMath.MathError)"}},"id":4310,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"35634:18:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"src":"35618:34:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":4324,"nodeType":"IfStatement","src":"35614:177:10","trueBody":{"id":4323,"nodeType":"Block","src":"35654:137:10","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4313,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"35686:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":4314,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"MATH_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"35686:16:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4315,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13782,"src":"35704:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13782_$","typeString":"type(enum TokenErrorReporter.FailureInfo)"}},"id":4316,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"BORROW_NEW_TOTAL_BALANCE_CALCULATION_FAILED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"35704:55:10","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4318,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4209,"src":"35766:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_BorrowLocalVars_$4145_memory_ptr","typeString":"struct CToken.BorrowLocalVars memory"}},"id":4319,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mathErr","nodeType":"MemberAccess","referencedDeclaration":4138,"src":"35766:12:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}],"id":4317,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"35761:4:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":4320,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"35761:18:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4312,"name":"failOpaque","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13848,"src":"35675:10:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13681_$_t_enum$_FailureInfo_$13782_$_t_uint256_$returns$_t_uint256_$","typeString":"function (enum TokenErrorReporter.Error,enum TokenErrorReporter.FailureInfo,uint256) returns (uint256)"}},"id":4321,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"35675:105:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4153,"id":4322,"nodeType":"Return","src":"35668:112:10"}]}},{"expression":{"argumentTypes":null,"id":4331,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":4325,"name":"accountBorrows","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6267,"src":"35987:14:10","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_BorrowSnapshot_$6263_storage_$","typeString":"mapping(address => struct CTokenStorage.BorrowSnapshot storage ref)"}},"id":4327,"indexExpression":{"argumentTypes":null,"id":4326,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4147,"src":"36002:8:10","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"35987:24:10","typeDescriptions":{"typeIdentifier":"t_struct$_BorrowSnapshot_$6263_storage","typeString":"struct CTokenStorage.BorrowSnapshot storage ref"}},"id":4328,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"principal","nodeType":"MemberAccess","referencedDeclaration":6260,"src":"35987:34:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4329,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4209,"src":"36024:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_BorrowLocalVars_$4145_memory_ptr","typeString":"struct CToken.BorrowLocalVars memory"}},"id":4330,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"accountBorrowsNew","nodeType":"MemberAccess","referencedDeclaration":4142,"src":"36024:22:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"35987:59:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4332,"nodeType":"ExpressionStatement","src":"35987:59:10"},{"expression":{"argumentTypes":null,"id":4338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":4333,"name":"accountBorrows","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6267,"src":"36056:14:10","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_BorrowSnapshot_$6263_storage_$","typeString":"mapping(address => struct CTokenStorage.BorrowSnapshot storage ref)"}},"id":4335,"indexExpression":{"argumentTypes":null,"id":4334,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4147,"src":"36071:8:10","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"36056:24:10","typeDescriptions":{"typeIdentifier":"t_struct$_BorrowSnapshot_$6263_storage","typeString":"struct CTokenStorage.BorrowSnapshot storage ref"}},"id":4336,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"interestIndex","nodeType":"MemberAccess","referencedDeclaration":6262,"src":"36056:38:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":4337,"name":"borrowIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6238,"src":"36097:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"36056:52:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4339,"nodeType":"ExpressionStatement","src":"36056:52:10"},{"expression":{"argumentTypes":null,"id":4343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":4340,"name":"totalBorrows","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6240,"src":"36118:12:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4341,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4209,"src":"36133:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_BorrowLocalVars_$4145_memory_ptr","typeString":"struct CToken.BorrowLocalVars memory"}},"id":4342,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"totalBorrowsNew","nodeType":"MemberAccess","referencedDeclaration":4144,"src":"36133:20:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"36118:35:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4344,"nodeType":"ExpressionStatement","src":"36118:35:10"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":4346,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4147,"src":"36531:8:10","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"id":4347,"name":"borrowAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4149,"src":"36541:12:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4345,"name":"doTransferOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6091,"src":"36517:13:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$","typeString":"function (address payable,uint256)"}},"id":4348,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"36517:37:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4349,"nodeType":"ExpressionStatement","src":"36517:37:10"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":4351,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4147,"src":"36614:8:10","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"id":4352,"name":"borrowAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4149,"src":"36624:12:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4353,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4209,"src":"36638:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_BorrowLocalVars_$4145_memory_ptr","typeString":"struct CToken.BorrowLocalVars memory"}},"id":4354,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"accountBorrowsNew","nodeType":"MemberAccess","referencedDeclaration":4142,"src":"36638:22:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4355,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4209,"src":"36662:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_BorrowLocalVars_$4145_memory_ptr","typeString":"struct CToken.BorrowLocalVars memory"}},"id":4356,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"totalBorrowsNew","nodeType":"MemberAccess","referencedDeclaration":4144,"src":"36662:20:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4350,"name":"Borrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6315,"src":"36607:6:10","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256,uint256)"}},"id":4357,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"36607:76:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4358,"nodeType":"EmitStatement","src":"36602:81:10"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4360,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"36849:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":4361,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"36849:14:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}],"id":4359,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"36844:4:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":4362,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"36844:20:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4153,"id":4363,"nodeType":"Return","src":"36837:27:10"}]},"documentation":"@notice Users borrow assets from the protocol to their own address\n@param borrowAmount The amount of the underlying asset to borrow\n@return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)","id":4365,"implemented":true,"kind":"function","modifiers":[],"name":"borrowFresh","nodeType":"FunctionDefinition","parameters":{"id":4150,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4147,"name":"borrower","nodeType":"VariableDeclaration","scope":4365,"src":"33558:24:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":4146,"name":"address","nodeType":"ElementaryTypeName","src":"33558:15:10","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"value":null,"visibility":"internal"},{"constant":false,"id":4149,"name":"borrowAmount","nodeType":"VariableDeclaration","scope":4365,"src":"33584:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4148,"name":"uint","nodeType":"ElementaryTypeName","src":"33584:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"33557:45:10"},"returnParameters":{"id":4153,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4152,"name":"","nodeType":"VariableDeclaration","scope":4365,"src":"33621:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4151,"name":"uint","nodeType":"ElementaryTypeName","src":"33621:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"33620:6:10"},"scope":6186,"src":"33537:3334:10","stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},{"body":{"id":4408,"nodeType":"Block","src":"37214:474:10","statements":[{"assignments":[4378],"declarations":[{"constant":false,"id":4378,"name":"error","nodeType":"VariableDeclaration","scope":4408,"src":"37224:10:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4377,"name":"uint","nodeType":"ElementaryTypeName","src":"37224:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":4381,"initialValue":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":4379,"name":"accrueInterest","nodeType":"Identifier","overloadedDeclarations":[3327],"referencedDeclaration":3327,"src":"37237:14:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_uint256_$","typeString":"function () returns (uint256)"}},"id":4380,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"37237:16:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"37224:29:10"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4387,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":4382,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4378,"src":"37267:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4384,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"37281:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":4385,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"37281:14:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}],"id":4383,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"37276:4:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":4386,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"37276:20:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"37267:29:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":4399,"nodeType":"IfStatement","src":"37263:257:10","trueBody":{"id":4398,"nodeType":"Block","src":"37298:222:10","statements":[{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":4390,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4378,"src":"37449:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4389,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"37443:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":4391,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"37443:12:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4392,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13782,"src":"37457:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13782_$","typeString":"type(enum TokenErrorReporter.FailureInfo)"}},"id":4393,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"REPAY_BORROW_ACCRUE_INTEREST_FAILED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"37457:47:10","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}],"id":4388,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13814,"src":"37438:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13681_$_t_enum$_FailureInfo_$13782_$returns$_t_uint256_$","typeString":"function (enum TokenErrorReporter.Error,enum TokenErrorReporter.FailureInfo) returns (uint256)"}},"id":4394,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"37438:67:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"30","id":4395,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37507:1:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":4396,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"37437:72:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_rational_0_by_1_$","typeString":"tuple(uint256,int_const 0)"}},"functionReturnParameters":4376,"id":4397,"nodeType":"Return","src":"37430:79:10"}]}},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4401,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"37645:3:10","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":4402,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"37645:10:10","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4403,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"37657:3:10","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":4404,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"37657:10:10","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"id":4405,"name":"repayAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4367,"src":"37669:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4400,"name":"repayBorrowFresh","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4686,"src":"37628:16:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (address,address,uint256) returns (uint256,uint256)"}},"id":4406,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"37628:53:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"functionReturnParameters":4376,"id":4407,"nodeType":"Return","src":"37621:60:10"}]},"documentation":"@notice Sender repays their own borrow\n@param repayAmount The amount to repay\n@return (uint, uint) An error code (0=success, otherwise a failure, see ErrorReporter.sol), and the actual repayment amount.","id":4409,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"argumentTypes":null,"hexValue":"66616c7365","id":4370,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"37186:5:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"id":4371,"modifierName":{"argumentTypes":null,"id":4369,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6105,"src":"37173:12:10","typeDescriptions":{"typeIdentifier":"t_modifier$_t_bool_$","typeString":"modifier (bool)"}},"nodeType":"ModifierInvocation","src":"37173:19:10"}],"name":"repayBorrowInternal","nodeType":"FunctionDefinition","parameters":{"id":4368,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4367,"name":"repayAmount","nodeType":"VariableDeclaration","scope":4409,"src":"37146:16:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4366,"name":"uint","nodeType":"ElementaryTypeName","src":"37146:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"37145:18:10"},"returnParameters":{"id":4376,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4373,"name":"","nodeType":"VariableDeclaration","scope":4409,"src":"37202:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4372,"name":"uint","nodeType":"ElementaryTypeName","src":"37202:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":4375,"name":"","nodeType":"VariableDeclaration","scope":4409,"src":"37208:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4374,"name":"uint","nodeType":"ElementaryTypeName","src":"37208:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"37201:12:10"},"scope":6186,"src":"37117:571:10","stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},{"body":{"id":4453,"nodeType":"Block","src":"38134:472:10","statements":[{"assignments":[4424],"declarations":[{"constant":false,"id":4424,"name":"error","nodeType":"VariableDeclaration","scope":4453,"src":"38144:10:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4423,"name":"uint","nodeType":"ElementaryTypeName","src":"38144:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":4427,"initialValue":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":4425,"name":"accrueInterest","nodeType":"Identifier","overloadedDeclarations":[3327],"referencedDeclaration":3327,"src":"38157:14:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_uint256_$","typeString":"function () returns (uint256)"}},"id":4426,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"38157:16:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"38144:29:10"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4433,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":4428,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4424,"src":"38187:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4430,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"38201:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":4431,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"38201:14:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}],"id":4429,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"38196:4:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":4432,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"38196:20:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"38187:29:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":4445,"nodeType":"IfStatement","src":"38183:257:10","trueBody":{"id":4444,"nodeType":"Block","src":"38218:222:10","statements":[{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":4436,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4424,"src":"38369:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4435,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"38363:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":4437,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"38363:12:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4438,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13782,"src":"38377:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13782_$","typeString":"type(enum TokenErrorReporter.FailureInfo)"}},"id":4439,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"REPAY_BEHALF_ACCRUE_INTEREST_FAILED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"38377:47:10","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}],"id":4434,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13814,"src":"38358:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13681_$_t_enum$_FailureInfo_$13782_$returns$_t_uint256_$","typeString":"function (enum TokenErrorReporter.Error,enum TokenErrorReporter.FailureInfo) returns (uint256)"}},"id":4440,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"38358:67:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"30","id":4441,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"38427:1:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":4442,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"38357:72:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_rational_0_by_1_$","typeString":"tuple(uint256,int_const 0)"}},"functionReturnParameters":4422,"id":4443,"nodeType":"Return","src":"38350:79:10"}]}},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4447,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"38565:3:10","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":4448,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"38565:10:10","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"id":4449,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4411,"src":"38577:8:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":4450,"name":"repayAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4413,"src":"38587:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4446,"name":"repayBorrowFresh","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4686,"src":"38548:16:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (address,address,uint256) returns (uint256,uint256)"}},"id":4451,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"38548:51:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"functionReturnParameters":4422,"id":4452,"nodeType":"Return","src":"38541:58:10"}]},"documentation":"@notice Sender repays a borrow belonging to borrower\n@param borrower the account with the debt being payed off\n@param repayAmount The amount to repay\n@return (uint, uint) An error code (0=success, otherwise a failure, see ErrorReporter.sol), and the actual repayment amount.","id":4454,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"argumentTypes":null,"hexValue":"66616c7365","id":4416,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"38106:5:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"id":4417,"modifierName":{"argumentTypes":null,"id":4415,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6105,"src":"38093:12:10","typeDescriptions":{"typeIdentifier":"t_modifier$_t_bool_$","typeString":"modifier (bool)"}},"nodeType":"ModifierInvocation","src":"38093:19:10"}],"name":"repayBorrowBehalfInternal","nodeType":"FunctionDefinition","parameters":{"id":4414,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4411,"name":"borrower","nodeType":"VariableDeclaration","scope":4454,"src":"38048:16:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4410,"name":"address","nodeType":"ElementaryTypeName","src":"38048:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":4413,"name":"repayAmount","nodeType":"VariableDeclaration","scope":4454,"src":"38066:16:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4412,"name":"uint","nodeType":"ElementaryTypeName","src":"38066:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"38047:36:10"},"returnParameters":{"id":4422,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4419,"name":"","nodeType":"VariableDeclaration","scope":4454,"src":"38122:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4418,"name":"uint","nodeType":"ElementaryTypeName","src":"38122:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":4421,"name":"","nodeType":"VariableDeclaration","scope":4454,"src":"38128:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4420,"name":"uint","nodeType":"ElementaryTypeName","src":"38128:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"38121:12:10"},"scope":6186,"src":"38013:593:10","stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},{"canonicalName":"CToken.RepayBorrowLocalVars","id":4471,"members":[{"constant":false,"id":4456,"name":"err","nodeType":"VariableDeclaration","scope":4471,"src":"38650:9:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"},"typeName":{"contractScope":null,"id":4455,"name":"Error","nodeType":"UserDefinedTypeName","referencedDeclaration":13681,"src":"38650:5:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}},"value":null,"visibility":"internal"},{"constant":false,"id":4458,"name":"mathErr","nodeType":"VariableDeclaration","scope":4471,"src":"38669:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"typeName":{"contractScope":null,"id":4457,"name":"MathError","nodeType":"UserDefinedTypeName","referencedDeclaration":6659,"src":"38669:9:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"value":null,"visibility":"internal"},{"constant":false,"id":4460,"name":"repayAmount","nodeType":"VariableDeclaration","scope":4471,"src":"38696:16:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4459,"name":"uint","nodeType":"ElementaryTypeName","src":"38696:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":4462,"name":"borrowerIndex","nodeType":"VariableDeclaration","scope":4471,"src":"38722:18:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4461,"name":"uint","nodeType":"ElementaryTypeName","src":"38722:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":4464,"name":"accountBorrows","nodeType":"VariableDeclaration","scope":4471,"src":"38750:19:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4463,"name":"uint","nodeType":"ElementaryTypeName","src":"38750:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":4466,"name":"accountBorrowsNew","nodeType":"VariableDeclaration","scope":4471,"src":"38779:22:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4465,"name":"uint","nodeType":"ElementaryTypeName","src":"38779:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":4468,"name":"totalBorrowsNew","nodeType":"VariableDeclaration","scope":4471,"src":"38811:20:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4467,"name":"uint","nodeType":"ElementaryTypeName","src":"38811:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":4470,"name":"actualRepayAmount","nodeType":"VariableDeclaration","scope":4471,"src":"38841:22:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4469,"name":"uint","nodeType":"ElementaryTypeName","src":"38841:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"name":"RepayBorrowLocalVars","nodeType":"StructDefinition","scope":6186,"src":"38612:258:10","visibility":"public"},{"body":{"id":4685,"nodeType":"Block","src":"39398:3266:10","statements":[{"assignments":[4485],"declarations":[{"constant":false,"id":4485,"name":"allowed","nodeType":"VariableDeclaration","scope":4685,"src":"39454:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4484,"name":"uint","nodeType":"ElementaryTypeName","src":"39454:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":4495,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":4489,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22614,"src":"39508:4:10","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":4488,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"39500:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":4490,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"39500:13:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":4491,"name":"payer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4473,"src":"39515:5:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":4492,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4475,"src":"39522:8:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":4493,"name":"repayAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4477,"src":"39532:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":4486,"name":"comptroller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6224,"src":"39469:11:10","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerInterface_$12980","typeString":"contract ComptrollerInterface"}},"id":4487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"repayBorrowAllowed","nodeType":"MemberAccess","referencedDeclaration":12865,"src":"39469:30:10","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,address,address,uint256) external returns (uint256)"}},"id":4494,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"39469:75:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"39454:90:10"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":4496,"name":"allowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4485,"src":"39558:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"hexValue":"30","id":4497,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39569:1:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"39558:12:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":4510,"nodeType":"IfStatement","src":"39554:151:10","trueBody":{"id":4509,"nodeType":"Block","src":"39572:133:10","statements":[{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4500,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"39605:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":4501,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"COMPTROLLER_REJECTION","nodeType":"MemberAccess","referencedDeclaration":null,"src":"39605:27:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4502,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13782,"src":"39634:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13782_$","typeString":"type(enum TokenErrorReporter.FailureInfo)"}},"id":4503,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"REPAY_BORROW_COMPTROLLER_REJECTION","nodeType":"MemberAccess","referencedDeclaration":null,"src":"39634:46:10","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}},{"argumentTypes":null,"id":4504,"name":"allowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4485,"src":"39682:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4499,"name":"failOpaque","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13848,"src":"39594:10:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13681_$_t_enum$_FailureInfo_$13782_$_t_uint256_$returns$_t_uint256_$","typeString":"function (enum TokenErrorReporter.Error,enum TokenErrorReporter.FailureInfo,uint256) returns (uint256)"}},"id":4505,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"39594:96:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"30","id":4506,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39692:1:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":4507,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"39593:101:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_rational_0_by_1_$","typeString":"tuple(uint256,int_const 0)"}},"functionReturnParameters":4483,"id":4508,"nodeType":"Return","src":"39586:108:10"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4514,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":4511,"name":"accrualBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6236,"src":"39790:18:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":4512,"name":"getBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2912,"src":"39812:14:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":4513,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"39812:16:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"39790:38:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":4525,"nodeType":"IfStatement","src":"39786:151:10","trueBody":{"id":4524,"nodeType":"Block","src":"39830:107:10","statements":[{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4516,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"39857:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":4517,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"MARKET_NOT_FRESH","nodeType":"MemberAccess","referencedDeclaration":null,"src":"39857:22:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4518,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13782,"src":"39881:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13782_$","typeString":"type(enum TokenErrorReporter.FailureInfo)"}},"id":4519,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"REPAY_BORROW_FRESHNESS_CHECK","nodeType":"MemberAccess","referencedDeclaration":null,"src":"39881:40:10","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}],"id":4515,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13814,"src":"39852:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13681_$_t_enum$_FailureInfo_$13782_$returns$_t_uint256_$","typeString":"function (enum TokenErrorReporter.Error,enum TokenErrorReporter.FailureInfo) returns (uint256)"}},"id":4520,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"39852:70:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"30","id":4521,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39924:1:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":4522,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"39851:75:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_rational_0_by_1_$","typeString":"tuple(uint256,int_const 0)"}},"functionReturnParameters":4483,"id":4523,"nodeType":"Return","src":"39844:82:10"}]}},{"assignments":[4527],"declarations":[{"constant":false,"id":4527,"name":"vars","nodeType":"VariableDeclaration","scope":4685,"src":"39947:32:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_RepayBorrowLocalVars_$4471_memory_ptr","typeString":"struct CToken.RepayBorrowLocalVars"},"typeName":{"contractScope":null,"id":4526,"name":"RepayBorrowLocalVars","nodeType":"UserDefinedTypeName","referencedDeclaration":4471,"src":"39947:20:10","typeDescriptions":{"typeIdentifier":"t_struct$_RepayBorrowLocalVars_$4471_storage_ptr","typeString":"struct CToken.RepayBorrowLocalVars"}},"value":null,"visibility":"internal"}],"id":4528,"initialValue":null,"nodeType":"VariableDeclarationStatement","src":"39947:32:10"},{"expression":{"argumentTypes":null,"id":4536,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4529,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4527,"src":"40069:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_RepayBorrowLocalVars_$4471_memory_ptr","typeString":"struct CToken.RepayBorrowLocalVars memory"}},"id":4531,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"borrowerIndex","nodeType":"MemberAccess","referencedDeclaration":4462,"src":"40069:18:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":4532,"name":"accountBorrows","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6267,"src":"40090:14:10","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_BorrowSnapshot_$6263_storage_$","typeString":"mapping(address => struct CTokenStorage.BorrowSnapshot storage ref)"}},"id":4534,"indexExpression":{"argumentTypes":null,"id":4533,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4475,"src":"40105:8:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"40090:24:10","typeDescriptions":{"typeIdentifier":"t_struct$_BorrowSnapshot_$6263_storage","typeString":"struct CTokenStorage.BorrowSnapshot storage ref"}},"id":4535,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"interestIndex","nodeType":"MemberAccess","referencedDeclaration":6262,"src":"40090:38:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"40069:59:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4537,"nodeType":"ExpressionStatement","src":"40069:59:10"},{"expression":{"argumentTypes":null,"id":4547,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"components":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4538,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4527,"src":"40219:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_RepayBorrowLocalVars_$4471_memory_ptr","typeString":"struct CToken.RepayBorrowLocalVars memory"}},"id":4540,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"mathErr","nodeType":"MemberAccess","referencedDeclaration":4458,"src":"40219:12:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4541,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4527,"src":"40233:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_RepayBorrowLocalVars_$4471_memory_ptr","typeString":"struct CToken.RepayBorrowLocalVars memory"}},"id":4542,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"accountBorrows","nodeType":"MemberAccess","referencedDeclaration":4464,"src":"40233:19:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4543,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"40218:35:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":4545,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4475,"src":"40284:8:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4544,"name":"borrowBalanceStoredInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3112,"src":"40256:27:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"function (address) view returns (enum CarefulMath.MathError,uint256)"}},"id":4546,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"40256:37:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"src":"40218:75:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4548,"nodeType":"ExpressionStatement","src":"40218:75:10"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"id":4553,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4549,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4527,"src":"40307:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_RepayBorrowLocalVars_$4471_memory_ptr","typeString":"struct CToken.RepayBorrowLocalVars memory"}},"id":4550,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mathErr","nodeType":"MemberAccess","referencedDeclaration":4458,"src":"40307:12:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4551,"name":"MathError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6659,"src":"40323:9:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MathError_$6659_$","typeString":"type(enum CarefulMath.MathError)"}},"id":4552,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"40323:18:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"src":"40307:34:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":4568,"nodeType":"IfStatement","src":"40303:190:10","trueBody":{"id":4567,"nodeType":"Block","src":"40343:150:10","statements":[{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4555,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"40376:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":4556,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"MATH_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"40376:16:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4557,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13782,"src":"40394:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13782_$","typeString":"type(enum TokenErrorReporter.FailureInfo)"}},"id":4558,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"REPAY_BORROW_ACCUMULATED_BALANCE_CALCULATION_FAILED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"40394:63:10","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4560,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4527,"src":"40464:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_RepayBorrowLocalVars_$4471_memory_ptr","typeString":"struct CToken.RepayBorrowLocalVars memory"}},"id":4561,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mathErr","nodeType":"MemberAccess","referencedDeclaration":4458,"src":"40464:12:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}],"id":4559,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"40459:4:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":4562,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"40459:18:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4554,"name":"failOpaque","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13848,"src":"40365:10:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13681_$_t_enum$_FailureInfo_$13782_$_t_uint256_$returns$_t_uint256_$","typeString":"function (enum TokenErrorReporter.Error,enum TokenErrorReporter.FailureInfo,uint256) returns (uint256)"}},"id":4563,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"40365:113:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"30","id":4564,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"40480:1:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":4565,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"40364:118:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_rational_0_by_1_$","typeString":"tuple(uint256,int_const 0)"}},"functionReturnParameters":4483,"id":4566,"nodeType":"Return","src":"40357:125:10"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":4569,"name":"repayAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4477,"src":"40572:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":4572,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"40592:2:10","subExpression":{"argumentTypes":null,"hexValue":"31","id":4571,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"40593:1:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"id":4570,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"40587:4:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":4573,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"40587:8:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"40572:23:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":4589,"nodeType":"Block","src":"40666:55:10","statements":[{"expression":{"argumentTypes":null,"id":4587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4583,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4527,"src":"40680:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_RepayBorrowLocalVars_$4471_memory_ptr","typeString":"struct CToken.RepayBorrowLocalVars memory"}},"id":4585,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"repayAmount","nodeType":"MemberAccess","referencedDeclaration":4460,"src":"40680:16:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":4586,"name":"repayAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4477,"src":"40699:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"40680:30:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4588,"nodeType":"ExpressionStatement","src":"40680:30:10"}]},"id":4590,"nodeType":"IfStatement","src":"40568:153:10","trueBody":{"id":4582,"nodeType":"Block","src":"40597:63:10","statements":[{"expression":{"argumentTypes":null,"id":4580,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4575,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4527,"src":"40611:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_RepayBorrowLocalVars_$4471_memory_ptr","typeString":"struct CToken.RepayBorrowLocalVars memory"}},"id":4577,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"repayAmount","nodeType":"MemberAccess","referencedDeclaration":4460,"src":"40611:16:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4578,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4527,"src":"40630:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_RepayBorrowLocalVars_$4471_memory_ptr","typeString":"struct CToken.RepayBorrowLocalVars memory"}},"id":4579,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"accountBorrows","nodeType":"MemberAccess","referencedDeclaration":4464,"src":"40630:19:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"40611:38:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4581,"nodeType":"ExpressionStatement","src":"40611:38:10"}]}},{"expression":{"argumentTypes":null,"id":4599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4591,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4527,"src":"41281:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_RepayBorrowLocalVars_$4471_memory_ptr","typeString":"struct CToken.RepayBorrowLocalVars memory"}},"id":4593,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"actualRepayAmount","nodeType":"MemberAccess","referencedDeclaration":4470,"src":"41281:22:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":4595,"name":"payer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4473,"src":"41319:5:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4596,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4527,"src":"41326:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_RepayBorrowLocalVars_$4471_memory_ptr","typeString":"struct CToken.RepayBorrowLocalVars memory"}},"id":4597,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"repayAmount","nodeType":"MemberAccess","referencedDeclaration":4460,"src":"41326:16:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4594,"name":"doTransferIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6084,"src":"41306:12:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,uint256) returns (uint256)"}},"id":4598,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"41306:37:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"41281:62:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4600,"nodeType":"ExpressionStatement","src":"41281:62:10"},{"expression":{"argumentTypes":null,"id":4613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"components":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4601,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4527,"src":"41598:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_RepayBorrowLocalVars_$4471_memory_ptr","typeString":"struct CToken.RepayBorrowLocalVars memory"}},"id":4603,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"mathErr","nodeType":"MemberAccess","referencedDeclaration":4458,"src":"41598:12:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4604,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4527,"src":"41612:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_RepayBorrowLocalVars_$4471_memory_ptr","typeString":"struct CToken.RepayBorrowLocalVars memory"}},"id":4605,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"accountBorrowsNew","nodeType":"MemberAccess","referencedDeclaration":4466,"src":"41612:22:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4606,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"41597:38:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4608,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4527,"src":"41646:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_RepayBorrowLocalVars_$4471_memory_ptr","typeString":"struct CToken.RepayBorrowLocalVars memory"}},"id":4609,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"accountBorrows","nodeType":"MemberAccess","referencedDeclaration":4464,"src":"41646:19:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4610,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4527,"src":"41667:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_RepayBorrowLocalVars_$4471_memory_ptr","typeString":"struct CToken.RepayBorrowLocalVars memory"}},"id":4611,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"actualRepayAmount","nodeType":"MemberAccess","referencedDeclaration":4470,"src":"41667:22:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4607,"name":"subUInt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6764,"src":"41638:7:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (enum CarefulMath.MathError,uint256)"}},"id":4612,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"41638:52:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"src":"41597:93:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4614,"nodeType":"ExpressionStatement","src":"41597:93:10"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"id":4620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4616,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4527,"src":"41708:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_RepayBorrowLocalVars_$4471_memory_ptr","typeString":"struct CToken.RepayBorrowLocalVars memory"}},"id":4617,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mathErr","nodeType":"MemberAccess","referencedDeclaration":4458,"src":"41708:12:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4618,"name":"MathError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6659,"src":"41724:9:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MathError_$6659_$","typeString":"type(enum CarefulMath.MathError)"}},"id":4619,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"41724:18:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"src":"41708:34:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"52455041595f424f52524f575f4e45575f4143434f554e545f424f52524f575f42414c414e43455f43414c43554c4154494f4e5f4641494c4544","id":4621,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"41744:60:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_9d6c1b60b97bcce107e1e90a71318f1e996d8c3a403fd75fe80250b8288a93e1","typeString":"literal_string \"REPAY_BORROW_NEW_ACCOUNT_BORROW_BALANCE_CALCULATION_FAILED\""},"value":"REPAY_BORROW_NEW_ACCOUNT_BORROW_BALANCE_CALCULATION_FAILED"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9d6c1b60b97bcce107e1e90a71318f1e996d8c3a403fd75fe80250b8288a93e1","typeString":"literal_string \"REPAY_BORROW_NEW_ACCOUNT_BORROW_BALANCE_CALCULATION_FAILED\""}],"id":4615,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"41700:7:10","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4622,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"41700:105:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4623,"nodeType":"ExpressionStatement","src":"41700:105:10"},{"expression":{"argumentTypes":null,"id":4635,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"components":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4624,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4527,"src":"41817:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_RepayBorrowLocalVars_$4471_memory_ptr","typeString":"struct CToken.RepayBorrowLocalVars memory"}},"id":4626,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"mathErr","nodeType":"MemberAccess","referencedDeclaration":4458,"src":"41817:12:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4627,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4527,"src":"41831:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_RepayBorrowLocalVars_$4471_memory_ptr","typeString":"struct CToken.RepayBorrowLocalVars memory"}},"id":4628,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"totalBorrowsNew","nodeType":"MemberAccess","referencedDeclaration":4468,"src":"41831:20:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4629,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"41816:36:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":4631,"name":"totalBorrows","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6240,"src":"41863:12:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4632,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4527,"src":"41877:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_RepayBorrowLocalVars_$4471_memory_ptr","typeString":"struct CToken.RepayBorrowLocalVars memory"}},"id":4633,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"actualRepayAmount","nodeType":"MemberAccess","referencedDeclaration":4470,"src":"41877:22:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4630,"name":"subUInt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6764,"src":"41855:7:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (enum CarefulMath.MathError,uint256)"}},"id":4634,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"41855:45:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"src":"41816:84:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4636,"nodeType":"ExpressionStatement","src":"41816:84:10"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"id":4642,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4638,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4527,"src":"41918:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_RepayBorrowLocalVars_$4471_memory_ptr","typeString":"struct CToken.RepayBorrowLocalVars memory"}},"id":4639,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mathErr","nodeType":"MemberAccess","referencedDeclaration":4458,"src":"41918:12:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4640,"name":"MathError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6659,"src":"41934:9:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MathError_$6659_$","typeString":"type(enum CarefulMath.MathError)"}},"id":4641,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"41934:18:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"src":"41918:34:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"52455041595f424f52524f575f4e45575f544f54414c5f42414c414e43455f43414c43554c4154494f4e5f4641494c4544","id":4643,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"41954:51:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_adaa4d588b31e5078baa24eedd9ae3c98327611581c120700182a1bdf8dad136","typeString":"literal_string \"REPAY_BORROW_NEW_TOTAL_BALANCE_CALCULATION_FAILED\""},"value":"REPAY_BORROW_NEW_TOTAL_BALANCE_CALCULATION_FAILED"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_adaa4d588b31e5078baa24eedd9ae3c98327611581c120700182a1bdf8dad136","typeString":"literal_string \"REPAY_BORROW_NEW_TOTAL_BALANCE_CALCULATION_FAILED\""}],"id":4637,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"41910:7:10","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4644,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"41910:96:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4645,"nodeType":"ExpressionStatement","src":"41910:96:10"},{"expression":{"argumentTypes":null,"id":4652,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":4646,"name":"accountBorrows","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6267,"src":"42086:14:10","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_BorrowSnapshot_$6263_storage_$","typeString":"mapping(address => struct CTokenStorage.BorrowSnapshot storage ref)"}},"id":4648,"indexExpression":{"argumentTypes":null,"id":4647,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4475,"src":"42101:8:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"42086:24:10","typeDescriptions":{"typeIdentifier":"t_struct$_BorrowSnapshot_$6263_storage","typeString":"struct CTokenStorage.BorrowSnapshot storage ref"}},"id":4649,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"principal","nodeType":"MemberAccess","referencedDeclaration":6260,"src":"42086:34:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4650,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4527,"src":"42123:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_RepayBorrowLocalVars_$4471_memory_ptr","typeString":"struct CToken.RepayBorrowLocalVars memory"}},"id":4651,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"accountBorrowsNew","nodeType":"MemberAccess","referencedDeclaration":4466,"src":"42123:22:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"42086:59:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4653,"nodeType":"ExpressionStatement","src":"42086:59:10"},{"expression":{"argumentTypes":null,"id":4659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":4654,"name":"accountBorrows","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6267,"src":"42155:14:10","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_BorrowSnapshot_$6263_storage_$","typeString":"mapping(address => struct CTokenStorage.BorrowSnapshot storage ref)"}},"id":4656,"indexExpression":{"argumentTypes":null,"id":4655,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4475,"src":"42170:8:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"42155:24:10","typeDescriptions":{"typeIdentifier":"t_struct$_BorrowSnapshot_$6263_storage","typeString":"struct CTokenStorage.BorrowSnapshot storage ref"}},"id":4657,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"interestIndex","nodeType":"MemberAccess","referencedDeclaration":6262,"src":"42155:38:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":4658,"name":"borrowIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6238,"src":"42196:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"42155:52:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4660,"nodeType":"ExpressionStatement","src":"42155:52:10"},{"expression":{"argumentTypes":null,"id":4664,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":4661,"name":"totalBorrows","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6240,"src":"42217:12:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4662,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4527,"src":"42232:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_RepayBorrowLocalVars_$4471_memory_ptr","typeString":"struct CToken.RepayBorrowLocalVars memory"}},"id":4663,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"totalBorrowsNew","nodeType":"MemberAccess","referencedDeclaration":4468,"src":"42232:20:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"42217:35:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4665,"nodeType":"ExpressionStatement","src":"42217:35:10"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":4667,"name":"payer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4473,"src":"42322:5:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":4668,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4475,"src":"42329:8:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4669,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4527,"src":"42339:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_RepayBorrowLocalVars_$4471_memory_ptr","typeString":"struct CToken.RepayBorrowLocalVars memory"}},"id":4670,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"actualRepayAmount","nodeType":"MemberAccess","referencedDeclaration":4470,"src":"42339:22:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4671,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4527,"src":"42363:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_RepayBorrowLocalVars_$4471_memory_ptr","typeString":"struct CToken.RepayBorrowLocalVars memory"}},"id":4672,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"accountBorrowsNew","nodeType":"MemberAccess","referencedDeclaration":4466,"src":"42363:22:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4673,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4527,"src":"42387:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_RepayBorrowLocalVars_$4471_memory_ptr","typeString":"struct CToken.RepayBorrowLocalVars memory"}},"id":4674,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"totalBorrowsNew","nodeType":"MemberAccess","referencedDeclaration":4468,"src":"42387:20:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4666,"name":"RepayBorrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6327,"src":"42310:11:10","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256,uint256)"}},"id":4675,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"42310:98:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4676,"nodeType":"EmitStatement","src":"42305:103:10"},{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4678,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"42617:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":4679,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"42617:14:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}],"id":4677,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"42612:4:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":4680,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"42612:20:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4681,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4527,"src":"42634:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_RepayBorrowLocalVars_$4471_memory_ptr","typeString":"struct CToken.RepayBorrowLocalVars memory"}},"id":4682,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"actualRepayAmount","nodeType":"MemberAccess","referencedDeclaration":4470,"src":"42634:22:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4683,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"42611:46:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"functionReturnParameters":4483,"id":4684,"nodeType":"Return","src":"42604:53:10"}]},"documentation":"@notice Borrows are repaid by another user (possibly the borrower).\n@param payer the account paying off the borrow\n@param borrower the account with the debt being payed off\n@param repayAmount the amount of undelrying tokens being returned\n@return (uint, uint) An error code (0=success, otherwise a failure, see ErrorReporter.sol), and the actual repayment amount.","id":4686,"implemented":true,"kind":"function","modifiers":[],"name":"repayBorrowFresh","nodeType":"FunctionDefinition","parameters":{"id":4478,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4473,"name":"payer","nodeType":"VariableDeclaration","scope":4686,"src":"39317:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4472,"name":"address","nodeType":"ElementaryTypeName","src":"39317:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":4475,"name":"borrower","nodeType":"VariableDeclaration","scope":4686,"src":"39332:16:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4474,"name":"address","nodeType":"ElementaryTypeName","src":"39332:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":4477,"name":"repayAmount","nodeType":"VariableDeclaration","scope":4686,"src":"39350:16:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4476,"name":"uint","nodeType":"ElementaryTypeName","src":"39350:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"39316:51:10"},"returnParameters":{"id":4483,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4480,"name":"","nodeType":"VariableDeclaration","scope":4686,"src":"39386:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4479,"name":"uint","nodeType":"ElementaryTypeName","src":"39386:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":4482,"name":"","nodeType":"VariableDeclaration","scope":4686,"src":"39392:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4481,"name":"uint","nodeType":"ElementaryTypeName","src":"39392:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"39385:12:10"},"scope":6186,"src":"39291:3373:10","stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},{"body":{"id":4757,"nodeType":"Block","src":"43334:833:10","statements":[{"assignments":[4703],"declarations":[{"constant":false,"id":4703,"name":"error","nodeType":"VariableDeclaration","scope":4757,"src":"43344:10:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4702,"name":"uint","nodeType":"ElementaryTypeName","src":"43344:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":4706,"initialValue":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":4704,"name":"accrueInterest","nodeType":"Identifier","overloadedDeclarations":[3327],"referencedDeclaration":3327,"src":"43357:14:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_uint256_$","typeString":"function () returns (uint256)"}},"id":4705,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"43357:16:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"43344:29:10"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":4707,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4703,"src":"43387:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4709,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"43401:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":4710,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"43401:14:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}],"id":4708,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"43396:4:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":4711,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"43396:20:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"43387:29:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":4724,"nodeType":"IfStatement","src":"43383:266:10","trueBody":{"id":4723,"nodeType":"Block","src":"43418:231:10","statements":[{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":4715,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4703,"src":"43574:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4714,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"43568:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":4716,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"43568:12:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4717,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13782,"src":"43582:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13782_$","typeString":"type(enum TokenErrorReporter.FailureInfo)"}},"id":4718,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"LIQUIDATE_ACCRUE_BORROW_INTEREST_FAILED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"43582:51:10","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}],"id":4713,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13814,"src":"43563:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13681_$_t_enum$_FailureInfo_$13782_$returns$_t_uint256_$","typeString":"function (enum TokenErrorReporter.Error,enum TokenErrorReporter.FailureInfo) returns (uint256)"}},"id":4719,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"43563:71:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"30","id":4720,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"43636:1:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":4721,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"43562:76:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_rational_0_by_1_$","typeString":"tuple(uint256,int_const 0)"}},"functionReturnParameters":4701,"id":4722,"nodeType":"Return","src":"43555:83:10"}]}},{"expression":{"argumentTypes":null,"id":4729,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":4725,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4703,"src":"43659:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":4726,"name":"cTokenCollateral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4692,"src":"43667:16:10","typeDescriptions":{"typeIdentifier":"t_contract$_CTokenInterface_$6556","typeString":"contract CTokenInterface"}},"id":4727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"accrueInterest","nodeType":"MemberAccess","referencedDeclaration":6523,"src":"43667:31:10","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$_t_uint256_$","typeString":"function () external returns (uint256)"}},"id":4728,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"43667:33:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"43659:41:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4730,"nodeType":"ExpressionStatement","src":"43659:41:10"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":4731,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4703,"src":"43714:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4733,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"43728:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":4734,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"43728:14:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}],"id":4732,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"43723:4:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":4735,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"43723:20:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"43714:29:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":4748,"nodeType":"IfStatement","src":"43710:270:10","trueBody":{"id":4747,"nodeType":"Block","src":"43745:235:10","statements":[{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":4739,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4703,"src":"43901:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4738,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"43895:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":4740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"43895:12:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4741,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13782,"src":"43909:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13782_$","typeString":"type(enum TokenErrorReporter.FailureInfo)"}},"id":4742,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"LIQUIDATE_ACCRUE_COLLATERAL_INTEREST_FAILED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"43909:55:10","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}],"id":4737,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13814,"src":"43890:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13681_$_t_enum$_FailureInfo_$13782_$returns$_t_uint256_$","typeString":"function (enum TokenErrorReporter.Error,enum TokenErrorReporter.FailureInfo) returns (uint256)"}},"id":4743,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"43890:75:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"30","id":4744,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"43967:1:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":4745,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"43889:80:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_rational_0_by_1_$","typeString":"tuple(uint256,int_const 0)"}},"functionReturnParameters":4701,"id":4746,"nodeType":"Return","src":"43882:87:10"}]}},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4750,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"44108:3:10","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":4751,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"44108:10:10","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"id":4752,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4688,"src":"44120:8:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":4753,"name":"repayAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4690,"src":"44130:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":4754,"name":"cTokenCollateral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4692,"src":"44143:16:10","typeDescriptions":{"typeIdentifier":"t_contract$_CTokenInterface_$6556","typeString":"contract CTokenInterface"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_contract$_CTokenInterface_$6556","typeString":"contract CTokenInterface"}],"id":4749,"name":"liquidateBorrowFresh","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5004,"src":"44087:20:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_contract$_CTokenInterface_$6556_$returns$_t_uint256_$_t_uint256_$","typeString":"function (address,address,uint256,contract CTokenInterface) returns (uint256,uint256)"}},"id":4755,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"44087:73:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"functionReturnParameters":4701,"id":4756,"nodeType":"Return","src":"44080:80:10"}]},"documentation":"@notice The sender liquidates the borrowers collateral.\n The collateral seized is transferred to the liquidator.\n@param borrower The borrower of this cToken to be liquidated\n@param cTokenCollateral The market in which to seize collateral from the borrower\n@param repayAmount The amount of the underlying borrowed asset to repay\n@return (uint, uint) An error code (0=success, otherwise a failure, see ErrorReporter.sol), and the actual repayment amount.","id":4758,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"argumentTypes":null,"hexValue":"66616c7365","id":4695,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"43306:5:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"id":4696,"modifierName":{"argumentTypes":null,"id":4694,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6105,"src":"43293:12:10","typeDescriptions":{"typeIdentifier":"t_modifier$_t_bool_$","typeString":"modifier (bool)"}},"nodeType":"ModifierInvocation","src":"43293:19:10"}],"name":"liquidateBorrowInternal","nodeType":"FunctionDefinition","parameters":{"id":4693,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4688,"name":"borrower","nodeType":"VariableDeclaration","scope":4758,"src":"43214:16:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4687,"name":"address","nodeType":"ElementaryTypeName","src":"43214:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":4690,"name":"repayAmount","nodeType":"VariableDeclaration","scope":4758,"src":"43232:16:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4689,"name":"uint","nodeType":"ElementaryTypeName","src":"43232:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":4692,"name":"cTokenCollateral","nodeType":"VariableDeclaration","scope":4758,"src":"43250:32:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_CTokenInterface_$6556","typeString":"contract CTokenInterface"},"typeName":{"contractScope":null,"id":4691,"name":"CTokenInterface","nodeType":"UserDefinedTypeName","referencedDeclaration":6556,"src":"43250:15:10","typeDescriptions":{"typeIdentifier":"t_contract$_CTokenInterface_$6556","typeString":"contract CTokenInterface"}},"value":null,"visibility":"internal"}],"src":"43213:70:10"},"returnParameters":{"id":4701,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4698,"name":"","nodeType":"VariableDeclaration","scope":4758,"src":"43322:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4697,"name":"uint","nodeType":"ElementaryTypeName","src":"43322:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":4700,"name":"","nodeType":"VariableDeclaration","scope":4758,"src":"43328:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4699,"name":"uint","nodeType":"ElementaryTypeName","src":"43328:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"43321:12:10"},"scope":6186,"src":"43181:986:10","stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},{"body":{"id":5003,"nodeType":"Block","src":"44918:3394:10","statements":[{"assignments":[4774],"declarations":[{"constant":false,"id":4774,"name":"allowed","nodeType":"VariableDeclaration","scope":5003,"src":"44972:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4773,"name":"uint","nodeType":"ElementaryTypeName","src":"44972:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":4787,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":4778,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22614,"src":"45030:4:10","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":4777,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45022:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":4779,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"45022:13:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":4781,"name":"cTokenCollateral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4766,"src":"45045:16:10","typeDescriptions":{"typeIdentifier":"t_contract$_CTokenInterface_$6556","typeString":"contract CTokenInterface"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CTokenInterface_$6556","typeString":"contract CTokenInterface"}],"id":4780,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45037:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":4782,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"45037:25:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":4783,"name":"liquidator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4760,"src":"45064:10:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":4784,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4762,"src":"45076:8:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":4785,"name":"repayAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4764,"src":"45086:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":4775,"name":"comptroller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6224,"src":"44987:11:10","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerInterface_$12980","typeString":"contract ComptrollerInterface"}},"id":4776,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"liquidateBorrowAllowed","nodeType":"MemberAccess","referencedDeclaration":12893,"src":"44987:34:10","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,address,address,address,uint256) external returns (uint256)"}},"id":4786,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"44987:111:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"44972:126:10"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4790,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":4788,"name":"allowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4774,"src":"45112:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"hexValue":"30","id":4789,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45123:1:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"45112:12:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":4802,"nodeType":"IfStatement","src":"45108:148:10","trueBody":{"id":4801,"nodeType":"Block","src":"45126:130:10","statements":[{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4792,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"45159:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":4793,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"COMPTROLLER_REJECTION","nodeType":"MemberAccess","referencedDeclaration":null,"src":"45159:27:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4794,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13782,"src":"45188:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13782_$","typeString":"type(enum TokenErrorReporter.FailureInfo)"}},"id":4795,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"LIQUIDATE_COMPTROLLER_REJECTION","nodeType":"MemberAccess","referencedDeclaration":null,"src":"45188:43:10","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}},{"argumentTypes":null,"id":4796,"name":"allowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4774,"src":"45233:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4791,"name":"failOpaque","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13848,"src":"45148:10:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13681_$_t_enum$_FailureInfo_$13782_$_t_uint256_$returns$_t_uint256_$","typeString":"function (enum TokenErrorReporter.Error,enum TokenErrorReporter.FailureInfo,uint256) returns (uint256)"}},"id":4797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"45148:93:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"30","id":4798,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45243:1:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":4799,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"45147:98:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_rational_0_by_1_$","typeString":"tuple(uint256,int_const 0)"}},"functionReturnParameters":4772,"id":4800,"nodeType":"Return","src":"45140:105:10"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4806,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":4803,"name":"accrualBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6236,"src":"45341:18:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":4804,"name":"getBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2912,"src":"45363:14:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":4805,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"45363:16:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"45341:38:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":4817,"nodeType":"IfStatement","src":"45337:148:10","trueBody":{"id":4816,"nodeType":"Block","src":"45381:104:10","statements":[{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4808,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"45408:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":4809,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"MARKET_NOT_FRESH","nodeType":"MemberAccess","referencedDeclaration":null,"src":"45408:22:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4810,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13782,"src":"45432:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13782_$","typeString":"type(enum TokenErrorReporter.FailureInfo)"}},"id":4811,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"LIQUIDATE_FRESHNESS_CHECK","nodeType":"MemberAccess","referencedDeclaration":null,"src":"45432:37:10","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}],"id":4807,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13814,"src":"45403:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13681_$_t_enum$_FailureInfo_$13782_$returns$_t_uint256_$","typeString":"function (enum TokenErrorReporter.Error,enum TokenErrorReporter.FailureInfo) returns (uint256)"}},"id":4812,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"45403:67:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"30","id":4813,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45472:1:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":4814,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"45402:72:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_rational_0_by_1_$","typeString":"tuple(uint256,int_const 0)"}},"functionReturnParameters":4772,"id":4815,"nodeType":"Return","src":"45395:79:10"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4823,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":4818,"name":"cTokenCollateral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4766,"src":"45587:16:10","typeDescriptions":{"typeIdentifier":"t_contract$_CTokenInterface_$6556","typeString":"contract CTokenInterface"}},"id":4819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"accrualBlockNumber","nodeType":"MemberAccess","referencedDeclaration":6236,"src":"45587:35:10","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":4820,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"45587:37:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":4821,"name":"getBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2912,"src":"45628:14:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":4822,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"45628:16:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"45587:57:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":4834,"nodeType":"IfStatement","src":"45583:178:10","trueBody":{"id":4833,"nodeType":"Block","src":"45646:115:10","statements":[{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4825,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"45673:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":4826,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"MARKET_NOT_FRESH","nodeType":"MemberAccess","referencedDeclaration":null,"src":"45673:22:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4827,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13782,"src":"45697:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13782_$","typeString":"type(enum TokenErrorReporter.FailureInfo)"}},"id":4828,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"LIQUIDATE_COLLATERAL_FRESHNESS_CHECK","nodeType":"MemberAccess","referencedDeclaration":null,"src":"45697:48:10","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}],"id":4824,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13814,"src":"45668:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13681_$_t_enum$_FailureInfo_$13782_$returns$_t_uint256_$","typeString":"function (enum TokenErrorReporter.Error,enum TokenErrorReporter.FailureInfo) returns (uint256)"}},"id":4829,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"45668:78:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"30","id":4830,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45748:1:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":4831,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"45667:83:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_rational_0_by_1_$","typeString":"tuple(uint256,int_const 0)"}},"functionReturnParameters":4772,"id":4832,"nodeType":"Return","src":"45660:90:10"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":4835,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4762,"src":"45819:8:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":4836,"name":"liquidator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4760,"src":"45831:10:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"45819:22:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":4848,"nodeType":"IfStatement","src":"45815:143:10","trueBody":{"id":4847,"nodeType":"Block","src":"45843:115:10","statements":[{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4839,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"45870:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":4840,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"INVALID_ACCOUNT_PAIR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"45870:26:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4841,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13782,"src":"45898:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13782_$","typeString":"type(enum TokenErrorReporter.FailureInfo)"}},"id":4842,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"LIQUIDATE_LIQUIDATOR_IS_BORROWER","nodeType":"MemberAccess","referencedDeclaration":null,"src":"45898:44:10","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}],"id":4838,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13814,"src":"45865:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13681_$_t_enum$_FailureInfo_$13782_$returns$_t_uint256_$","typeString":"function (enum TokenErrorReporter.Error,enum TokenErrorReporter.FailureInfo) returns (uint256)"}},"id":4843,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"45865:78:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"30","id":4844,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45945:1:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":4845,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"45864:83:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_rational_0_by_1_$","typeString":"tuple(uint256,int_const 0)"}},"functionReturnParameters":4772,"id":4846,"nodeType":"Return","src":"45857:90:10"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":4849,"name":"repayAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4764,"src":"46010:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":4850,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46025:1:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"46010:16:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":4862,"nodeType":"IfStatement","src":"46006:145:10","trueBody":{"id":4861,"nodeType":"Block","src":"46028:123:10","statements":[{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4853,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"46055:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":4854,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"INVALID_CLOSE_AMOUNT_REQUESTED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"46055:36:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4855,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13782,"src":"46093:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13782_$","typeString":"type(enum TokenErrorReporter.FailureInfo)"}},"id":4856,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"LIQUIDATE_CLOSE_AMOUNT_IS_ZERO","nodeType":"MemberAccess","referencedDeclaration":null,"src":"46093:42:10","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}],"id":4852,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13814,"src":"46050:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13681_$_t_enum$_FailureInfo_$13782_$returns$_t_uint256_$","typeString":"function (enum TokenErrorReporter.Error,enum TokenErrorReporter.FailureInfo) returns (uint256)"}},"id":4857,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"46050:86:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"30","id":4858,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46138:1:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":4859,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"46049:91:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_rational_0_by_1_$","typeString":"tuple(uint256,int_const 0)"}},"functionReturnParameters":4772,"id":4860,"nodeType":"Return","src":"46042:98:10"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4868,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":4863,"name":"repayAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4764,"src":"46204:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":4866,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"46224:2:10","subExpression":{"argumentTypes":null,"hexValue":"31","id":4865,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46225:1:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"id":4864,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46219:4:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":4867,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"46219:8:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"46204:23:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":4879,"nodeType":"IfStatement","src":"46200:156:10","trueBody":{"id":4878,"nodeType":"Block","src":"46229:127:10","statements":[{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4870,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"46256:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":4871,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"INVALID_CLOSE_AMOUNT_REQUESTED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"46256:36:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4872,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13782,"src":"46294:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13782_$","typeString":"type(enum TokenErrorReporter.FailureInfo)"}},"id":4873,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"LIQUIDATE_CLOSE_AMOUNT_IS_UINT_MAX","nodeType":"MemberAccess","referencedDeclaration":null,"src":"46294:46:10","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}],"id":4869,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13814,"src":"46251:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13681_$_t_enum$_FailureInfo_$13782_$returns$_t_uint256_$","typeString":"function (enum TokenErrorReporter.Error,enum TokenErrorReporter.FailureInfo) returns (uint256)"}},"id":4874,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"46251:90:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"30","id":4875,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46343:1:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":4876,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"46250:95:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_rational_0_by_1_$","typeString":"tuple(uint256,int_const 0)"}},"functionReturnParameters":4772,"id":4877,"nodeType":"Return","src":"46243:102:10"}]}},{"assignments":[4881,4883],"declarations":[{"constant":false,"id":4881,"name":"repayBorrowError","nodeType":"VariableDeclaration","scope":5003,"src":"46408:21:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4880,"name":"uint","nodeType":"ElementaryTypeName","src":"46408:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":4883,"name":"actualRepayAmount","nodeType":"VariableDeclaration","scope":5003,"src":"46431:22:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4882,"name":"uint","nodeType":"ElementaryTypeName","src":"46431:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":4889,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":4885,"name":"liquidator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4760,"src":"46474:10:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":4886,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4762,"src":"46486:8:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":4887,"name":"repayAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4764,"src":"46496:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4884,"name":"repayBorrowFresh","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4686,"src":"46457:16:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (address,address,uint256) returns (uint256,uint256)"}},"id":4888,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"46457:51:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"46407:101:10"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4895,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":4890,"name":"repayBorrowError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4881,"src":"46522:16:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4892,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"46547:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":4893,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"46547:14:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}],"id":4891,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46542:4:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":4894,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"46542:20:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"46522:40:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":4907,"nodeType":"IfStatement","src":"46518:161:10","trueBody":{"id":4906,"nodeType":"Block","src":"46564:115:10","statements":[{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":4898,"name":"repayBorrowError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4881,"src":"46597:16:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4897,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"46591:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":4899,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"46591:23:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4900,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13782,"src":"46616:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13782_$","typeString":"type(enum TokenErrorReporter.FailureInfo)"}},"id":4901,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"LIQUIDATE_REPAY_BORROW_FRESH_FAILED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"46616:47:10","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}],"id":4896,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13814,"src":"46586:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13681_$_t_enum$_FailureInfo_$13782_$returns$_t_uint256_$","typeString":"function (enum TokenErrorReporter.Error,enum TokenErrorReporter.FailureInfo) returns (uint256)"}},"id":4902,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"46586:78:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"30","id":4903,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46666:1:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":4904,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"46585:83:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_rational_0_by_1_$","typeString":"tuple(uint256,int_const 0)"}},"functionReturnParameters":4772,"id":4905,"nodeType":"Return","src":"46578:90:10"}]}},{"assignments":[4909,4911],"declarations":[{"constant":false,"id":4909,"name":"amountSeizeError","nodeType":"VariableDeclaration","scope":5003,"src":"46886:21:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4908,"name":"uint","nodeType":"ElementaryTypeName","src":"46886:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":4911,"name":"seizeTokens","nodeType":"VariableDeclaration","scope":5003,"src":"46909:16:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4910,"name":"uint","nodeType":"ElementaryTypeName","src":"46909:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":4922,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":4915,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22614,"src":"46979:4:10","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":4914,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46971:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":4916,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"46971:13:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":4918,"name":"cTokenCollateral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4766,"src":"46994:16:10","typeDescriptions":{"typeIdentifier":"t_contract$_CTokenInterface_$6556","typeString":"contract CTokenInterface"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CTokenInterface_$6556","typeString":"contract CTokenInterface"}],"id":4917,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46986:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":4919,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"46986:25:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":4920,"name":"actualRepayAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4883,"src":"47013:17:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":4912,"name":"comptroller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6224,"src":"46929:11:10","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerInterface_$12980","typeString":"contract ComptrollerInterface"}},"id":4913,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"liquidateCalculateSeizeTokens","nodeType":"MemberAccess","referencedDeclaration":12973,"src":"46929:41:10","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (address,address,uint256) view external returns (uint256,uint256)"}},"id":4921,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"46929:102:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"46885:146:10"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4929,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":4924,"name":"amountSeizeError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4909,"src":"47049:16:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4926,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"47074:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":4927,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"47074:14:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}],"id":4925,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47069:4:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":4928,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"47069:20:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"47049:40:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"4c49515549444154455f434f4d5054524f4c4c45525f43414c43554c4154455f414d4f554e545f5345495a455f4641494c4544","id":4930,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"47091:53:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_b1c7e90880e9fbdf9aa93d626a842fbb127521a1492c295dbd98c98157e1e4f7","typeString":"literal_string \"LIQUIDATE_COMPTROLLER_CALCULATE_AMOUNT_SEIZE_FAILED\""},"value":"LIQUIDATE_COMPTROLLER_CALCULATE_AMOUNT_SEIZE_FAILED"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b1c7e90880e9fbdf9aa93d626a842fbb127521a1492c295dbd98c98157e1e4f7","typeString":"literal_string \"LIQUIDATE_COMPTROLLER_CALCULATE_AMOUNT_SEIZE_FAILED\""}],"id":4923,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"47041:7:10","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4931,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"47041:104:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4932,"nodeType":"ExpressionStatement","src":"47041:104:10"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4939,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":4936,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4762,"src":"47263:8:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":4934,"name":"cTokenCollateral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4766,"src":"47236:16:10","typeDescriptions":{"typeIdentifier":"t_contract$_CTokenInterface_$6556","typeString":"contract CTokenInterface"}},"id":4935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":6454,"src":"47236:26:10","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":4937,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"47236:36:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"argumentTypes":null,"id":4938,"name":"seizeTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4911,"src":"47276:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"47236:51:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"4c49515549444154455f5345495a455f544f4f5f4d554348","id":4940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"47289:26:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_bffc2aa76a1b975ca5ba1defccc66ee3d6e80e3f510ac216baa6baef4008863e","typeString":"literal_string \"LIQUIDATE_SEIZE_TOO_MUCH\""},"value":"LIQUIDATE_SEIZE_TOO_MUCH"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_bffc2aa76a1b975ca5ba1defccc66ee3d6e80e3f510ac216baa6baef4008863e","typeString":"literal_string \"LIQUIDATE_SEIZE_TOO_MUCH\""}],"id":4933,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"47228:7:10","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4941,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"47228:88:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4942,"nodeType":"ExpressionStatement","src":"47228:88:10"},{"assignments":[4944],"declarations":[{"constant":false,"id":4944,"name":"seizeError","nodeType":"VariableDeclaration","scope":5003,"src":"47442:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4943,"name":"uint","nodeType":"ElementaryTypeName","src":"47442:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":4945,"initialValue":null,"nodeType":"VariableDeclarationStatement","src":"47442:15:10"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4952,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":4947,"name":"cTokenCollateral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4766,"src":"47479:16:10","typeDescriptions":{"typeIdentifier":"t_contract$_CTokenInterface_$6556","typeString":"contract CTokenInterface"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CTokenInterface_$6556","typeString":"contract CTokenInterface"}],"id":4946,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47471:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":4948,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"47471:25:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":4950,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22614,"src":"47508:4:10","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":4949,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47500:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":4951,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"47500:13:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47471:42:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":4974,"nodeType":"Block","src":"47622:95:10","statements":[{"expression":{"argumentTypes":null,"id":4972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":4965,"name":"seizeError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4944,"src":"47636:10:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":4968,"name":"liquidator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4760,"src":"47672:10:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":4969,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4762,"src":"47684:8:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":4970,"name":"seizeTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4911,"src":"47694:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":4966,"name":"cTokenCollateral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4766,"src":"47649:16:10","typeDescriptions":{"typeIdentifier":"t_contract$_CTokenInterface_$6556","typeString":"contract CTokenInterface"}},"id":4967,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"seize","nodeType":"MemberAccess","referencedDeclaration":6534,"src":"47649:22:10","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,address,uint256) external returns (uint256)"}},"id":4971,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"47649:57:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"47636:70:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4973,"nodeType":"ExpressionStatement","src":"47636:70:10"}]},"id":4975,"nodeType":"IfStatement","src":"47467:250:10","trueBody":{"id":4964,"nodeType":"Block","src":"47515:101:10","statements":[{"expression":{"argumentTypes":null,"id":4962,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":4953,"name":"seizeError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4944,"src":"47529:10:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":4956,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22614,"src":"47564:4:10","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":4955,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47556:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":4957,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"47556:13:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":4958,"name":"liquidator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4760,"src":"47571:10:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":4959,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4762,"src":"47583:8:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":4960,"name":"seizeTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4911,"src":"47593:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4954,"name":"seizeInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5294,"src":"47542:13:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,address,address,uint256) returns (uint256)"}},"id":4961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"47542:63:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"47529:76:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4963,"nodeType":"ExpressionStatement","src":"47529:76:10"}]}},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":4977,"name":"seizeError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4944,"src":"47820:10:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4979,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"47839:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":4980,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"47839:14:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}],"id":4978,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47834:4:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":4981,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"47834:20:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"47820:34:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"746f6b656e207365697a757265206661696c6564","id":4983,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"47856:22:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_ef895053050823f299d1eac7edac9fbaf6b5ee335d1b858874856cee7182bcda","typeString":"literal_string \"token seizure failed\""},"value":"token seizure failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ef895053050823f299d1eac7edac9fbaf6b5ee335d1b858874856cee7182bcda","typeString":"literal_string \"token seizure failed\""}],"id":4976,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"47812:7:10","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4984,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"47812:67:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4985,"nodeType":"ExpressionStatement","src":"47812:67:10"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":4987,"name":"liquidator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4760,"src":"47957:10:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":4988,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4762,"src":"47969:8:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":4989,"name":"actualRepayAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4883,"src":"47979:17:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":4991,"name":"cTokenCollateral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4766,"src":"48006:16:10","typeDescriptions":{"typeIdentifier":"t_contract$_CTokenInterface_$6556","typeString":"contract CTokenInterface"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CTokenInterface_$6556","typeString":"contract CTokenInterface"}],"id":4990,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47998:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":4992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"47998:25:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":4993,"name":"seizeTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4911,"src":"48025:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4986,"name":"LiquidateBorrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6339,"src":"47941:15:10","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,address,uint256)"}},"id":4994,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"47941:96:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4995,"nodeType":"EmitStatement","src":"47936:101:10"},{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4997,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"48270:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":4998,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"48270:14:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}],"id":4996,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"48265:4:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":4999,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"48265:20:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":5000,"name":"actualRepayAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4883,"src":"48287:17:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5001,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"48264:41:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"functionReturnParameters":4772,"id":5002,"nodeType":"Return","src":"48257:48:10"}]},"documentation":"@notice The liquidator liquidates the borrowers collateral.\n The collateral seized is transferred to the liquidator.\n@param borrower The borrower of this cToken to be liquidated\n@param liquidator The address repaying the borrow and seizing collateral\n@param cTokenCollateral The market in which to seize collateral from the borrower\n@param repayAmount The amount of the underlying borrowed asset to repay\n@return (uint, uint) An error code (0=success, otherwise a failure, see ErrorReporter.sol), and the actual repayment amount.","id":5004,"implemented":true,"kind":"function","modifiers":[],"name":"liquidateBorrowFresh","nodeType":"FunctionDefinition","parameters":{"id":4767,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4760,"name":"liquidator","nodeType":"VariableDeclaration","scope":5004,"src":"44798:18:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4759,"name":"address","nodeType":"ElementaryTypeName","src":"44798:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":4762,"name":"borrower","nodeType":"VariableDeclaration","scope":5004,"src":"44818:16:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4761,"name":"address","nodeType":"ElementaryTypeName","src":"44818:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":4764,"name":"repayAmount","nodeType":"VariableDeclaration","scope":5004,"src":"44836:16:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4763,"name":"uint","nodeType":"ElementaryTypeName","src":"44836:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":4766,"name":"cTokenCollateral","nodeType":"VariableDeclaration","scope":5004,"src":"44854:32:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_CTokenInterface_$6556","typeString":"contract CTokenInterface"},"typeName":{"contractScope":null,"id":4765,"name":"CTokenInterface","nodeType":"UserDefinedTypeName","referencedDeclaration":6556,"src":"44854:15:10","typeDescriptions":{"typeIdentifier":"t_contract$_CTokenInterface_$6556","typeString":"contract CTokenInterface"}},"value":null,"visibility":"internal"}],"src":"44797:90:10"},"returnParameters":{"id":4772,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4769,"name":"","nodeType":"VariableDeclaration","scope":5004,"src":"44906:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4768,"name":"uint","nodeType":"ElementaryTypeName","src":"44906:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":4771,"name":"","nodeType":"VariableDeclaration","scope":5004,"src":"44912:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4770,"name":"uint","nodeType":"ElementaryTypeName","src":"44912:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"44905:12:10"},"scope":6186,"src":"44768:3544:10","stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},{"body":{"id":5026,"nodeType":"Block","src":"48976:84:10","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5019,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"49007:3:10","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":5020,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"49007:10:10","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"id":5021,"name":"liquidator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5006,"src":"49019:10:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":5022,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5008,"src":"49031:8:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":5023,"name":"seizeTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5010,"src":"49041:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5018,"name":"seizeInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5294,"src":"48993:13:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,address,address,uint256) returns (uint256)"}},"id":5024,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"48993:60:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5017,"id":5025,"nodeType":"Return","src":"48986:67:10"}]},"documentation":"@notice Transfers collateral tokens (this market) to the liquidator.\n@dev Will fail unless called by another cToken during the process of liquidation.\n Its absolutely critical to use msg.sender as the borrowed cToken and not a parameter.\n@param liquidator The account receiving seized collateral\n@param borrower The account having collateral seized\n@param seizeTokens The number of cTokens to seize\n@return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)","id":5027,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"argumentTypes":null,"hexValue":"74727565","id":5013,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"48955:4:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"id":5014,"modifierName":{"argumentTypes":null,"id":5012,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6105,"src":"48942:12:10","typeDescriptions":{"typeIdentifier":"t_modifier$_t_bool_$","typeString":"modifier (bool)"}},"nodeType":"ModifierInvocation","src":"48942:18:10"}],"name":"seize","nodeType":"FunctionDefinition","parameters":{"id":5011,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5006,"name":"liquidator","nodeType":"VariableDeclaration","scope":5027,"src":"48877:18:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5005,"name":"address","nodeType":"ElementaryTypeName","src":"48877:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":5008,"name":"borrower","nodeType":"VariableDeclaration","scope":5027,"src":"48897:16:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5007,"name":"address","nodeType":"ElementaryTypeName","src":"48897:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":5010,"name":"seizeTokens","nodeType":"VariableDeclaration","scope":5027,"src":"48915:16:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5009,"name":"uint","nodeType":"ElementaryTypeName","src":"48915:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"48876:56:10"},"returnParameters":{"id":5017,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5016,"name":"","nodeType":"VariableDeclaration","scope":5027,"src":"48970:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5015,"name":"uint","nodeType":"ElementaryTypeName","src":"48970:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"48969:6:10"},"scope":6186,"src":"48862:198:10","stateMutability":"nonpayable","superFunction":6534,"visibility":"external"},{"canonicalName":"CToken.SeizeInternalLocalVars","id":5046,"members":[{"constant":false,"id":5029,"name":"mathErr","nodeType":"VariableDeclaration","scope":5046,"src":"49106:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"typeName":{"contractScope":null,"id":5028,"name":"MathError","nodeType":"UserDefinedTypeName","referencedDeclaration":6659,"src":"49106:9:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"value":null,"visibility":"internal"},{"constant":false,"id":5031,"name":"borrowerTokensNew","nodeType":"VariableDeclaration","scope":5046,"src":"49133:22:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5030,"name":"uint","nodeType":"ElementaryTypeName","src":"49133:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5033,"name":"liquidatorTokensNew","nodeType":"VariableDeclaration","scope":5046,"src":"49165:24:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5032,"name":"uint","nodeType":"ElementaryTypeName","src":"49165:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5035,"name":"liquidatorSeizeTokens","nodeType":"VariableDeclaration","scope":5046,"src":"49199:26:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5034,"name":"uint","nodeType":"ElementaryTypeName","src":"49199:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5037,"name":"protocolSeizeTokens","nodeType":"VariableDeclaration","scope":5046,"src":"49235:24:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5036,"name":"uint","nodeType":"ElementaryTypeName","src":"49235:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5039,"name":"protocolSeizeAmount","nodeType":"VariableDeclaration","scope":5046,"src":"49269:24:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5038,"name":"uint","nodeType":"ElementaryTypeName","src":"49269:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5041,"name":"exchangeRateMantissa","nodeType":"VariableDeclaration","scope":5046,"src":"49303:25:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5040,"name":"uint","nodeType":"ElementaryTypeName","src":"49303:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5043,"name":"totalReservesNew","nodeType":"VariableDeclaration","scope":5046,"src":"49338:21:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5042,"name":"uint","nodeType":"ElementaryTypeName","src":"49338:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5045,"name":"totalSupplyNew","nodeType":"VariableDeclaration","scope":5046,"src":"49369:19:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5044,"name":"uint","nodeType":"ElementaryTypeName","src":"49369:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"name":"SeizeInternalLocalVars","nodeType":"StructDefinition","scope":6186,"src":"49066:329:10","visibility":"public"},{"body":{"id":5293,"nodeType":"Block","src":"50182:2913:10","statements":[{"assignments":[5060],"declarations":[{"constant":false,"id":5060,"name":"allowed","nodeType":"VariableDeclaration","scope":5293,"src":"50232:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5059,"name":"uint","nodeType":"ElementaryTypeName","src":"50232:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":5071,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":5064,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22614,"src":"50280:4:10","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":5063,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50272:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":5065,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"50272:13:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":5066,"name":"seizerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5048,"src":"50287:11:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":5067,"name":"liquidator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5050,"src":"50300:10:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":5068,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5052,"src":"50312:8:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":5069,"name":"seizeTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5054,"src":"50322:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":5061,"name":"comptroller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6224,"src":"50247:11:10","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerInterface_$12980","typeString":"contract ComptrollerInterface"}},"id":5062,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"seizeAllowed","nodeType":"MemberAccess","referencedDeclaration":12923,"src":"50247:24:10","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,address,address,address,uint256) external returns (uint256)"}},"id":5070,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"50247:87:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"50232:102:10"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5074,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":5072,"name":"allowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5060,"src":"50348:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"hexValue":"30","id":5073,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50359:1:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"50348:12:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":5084,"nodeType":"IfStatement","src":"50344:149:10","trueBody":{"id":5083,"nodeType":"Block","src":"50362:131:10","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5076,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"50394:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":5077,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"COMPTROLLER_REJECTION","nodeType":"MemberAccess","referencedDeclaration":null,"src":"50394:27:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5078,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13782,"src":"50423:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13782_$","typeString":"type(enum TokenErrorReporter.FailureInfo)"}},"id":5079,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"LIQUIDATE_SEIZE_COMPTROLLER_REJECTION","nodeType":"MemberAccess","referencedDeclaration":null,"src":"50423:49:10","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}},{"argumentTypes":null,"id":5080,"name":"allowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5060,"src":"50474:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5075,"name":"failOpaque","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13848,"src":"50383:10:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13681_$_t_enum$_FailureInfo_$13782_$_t_uint256_$returns$_t_uint256_$","typeString":"function (enum TokenErrorReporter.Error,enum TokenErrorReporter.FailureInfo,uint256) returns (uint256)"}},"id":5081,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"50383:99:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5058,"id":5082,"nodeType":"Return","src":"50376:106:10"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5087,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":5085,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5052,"src":"50551:8:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":5086,"name":"liquidator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5050,"src":"50563:10:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50551:22:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":5096,"nodeType":"IfStatement","src":"50547:144:10","trueBody":{"id":5095,"nodeType":"Block","src":"50575:116:10","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5089,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"50601:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":5090,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"INVALID_ACCOUNT_PAIR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"50601:26:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5091,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13782,"src":"50629:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13782_$","typeString":"type(enum TokenErrorReporter.FailureInfo)"}},"id":5092,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"LIQUIDATE_SEIZE_LIQUIDATOR_IS_BORROWER","nodeType":"MemberAccess","referencedDeclaration":null,"src":"50629:50:10","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}],"id":5088,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13814,"src":"50596:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13681_$_t_enum$_FailureInfo_$13782_$returns$_t_uint256_$","typeString":"function (enum TokenErrorReporter.Error,enum TokenErrorReporter.FailureInfo) returns (uint256)"}},"id":5093,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"50596:84:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5058,"id":5094,"nodeType":"Return","src":"50589:91:10"}]}},{"assignments":[5098],"declarations":[{"constant":false,"id":5098,"name":"vars","nodeType":"VariableDeclaration","scope":5293,"src":"50701:34:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SeizeInternalLocalVars_$5046_memory_ptr","typeString":"struct CToken.SeizeInternalLocalVars"},"typeName":{"contractScope":null,"id":5097,"name":"SeizeInternalLocalVars","nodeType":"UserDefinedTypeName","referencedDeclaration":5046,"src":"50701:22:10","typeDescriptions":{"typeIdentifier":"t_struct$_SeizeInternalLocalVars_$5046_storage_ptr","typeString":"struct CToken.SeizeInternalLocalVars"}},"value":null,"visibility":"internal"}],"id":5099,"initialValue":null,"nodeType":"VariableDeclarationStatement","src":"50701:34:10"},{"expression":{"argumentTypes":null,"id":5112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"components":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5100,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5098,"src":"51017:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_SeizeInternalLocalVars_$5046_memory_ptr","typeString":"struct CToken.SeizeInternalLocalVars memory"}},"id":5102,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"mathErr","nodeType":"MemberAccess","referencedDeclaration":5029,"src":"51017:12:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5103,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5098,"src":"51031:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_SeizeInternalLocalVars_$5046_memory_ptr","typeString":"struct CToken.SeizeInternalLocalVars memory"}},"id":5104,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"borrowerTokensNew","nodeType":"MemberAccess","referencedDeclaration":5031,"src":"51031:22:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5105,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"51016:38:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":5107,"name":"accountTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6252,"src":"51065:13:10","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":5109,"indexExpression":{"argumentTypes":null,"id":5108,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5052,"src":"51079:8:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"51065:23:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":5110,"name":"seizeTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5054,"src":"51090:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5106,"name":"subUInt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6764,"src":"51057:7:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (enum CarefulMath.MathError,uint256)"}},"id":5111,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"51057:45:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"src":"51016:86:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5113,"nodeType":"ExpressionStatement","src":"51016:86:10"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"id":5118,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5114,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5098,"src":"51116:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_SeizeInternalLocalVars_$5046_memory_ptr","typeString":"struct CToken.SeizeInternalLocalVars memory"}},"id":5115,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mathErr","nodeType":"MemberAccess","referencedDeclaration":5029,"src":"51116:12:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5116,"name":"MathError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6659,"src":"51132:9:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MathError_$6659_$","typeString":"type(enum CarefulMath.MathError)"}},"id":5117,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"51132:18:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"src":"51116:34:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":5131,"nodeType":"IfStatement","src":"51112:174:10","trueBody":{"id":5130,"nodeType":"Block","src":"51152:134:10","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5120,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"51184:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":5121,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"MATH_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"51184:16:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5122,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13782,"src":"51202:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13782_$","typeString":"type(enum TokenErrorReporter.FailureInfo)"}},"id":5123,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"LIQUIDATE_SEIZE_BALANCE_DECREMENT_FAILED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"51202:52:10","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5125,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5098,"src":"51261:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_SeizeInternalLocalVars_$5046_memory_ptr","typeString":"struct CToken.SeizeInternalLocalVars memory"}},"id":5126,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mathErr","nodeType":"MemberAccess","referencedDeclaration":5029,"src":"51261:12:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}],"id":5124,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"51256:4:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":5127,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"51256:18:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5119,"name":"failOpaque","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13848,"src":"51173:10:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13681_$_t_enum$_FailureInfo_$13782_$_t_uint256_$returns$_t_uint256_$","typeString":"function (enum TokenErrorReporter.Error,enum TokenErrorReporter.FailureInfo,uint256) returns (uint256)"}},"id":5128,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"51173:102:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5058,"id":5129,"nodeType":"Return","src":"51166:109:10"}]}},{"expression":{"argumentTypes":null,"id":5141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5132,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5098,"src":"51296:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_SeizeInternalLocalVars_$5046_memory_ptr","typeString":"struct CToken.SeizeInternalLocalVars memory"}},"id":5134,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"protocolSeizeTokens","nodeType":"MemberAccess","referencedDeclaration":5037,"src":"51296:24:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":5136,"name":"seizeTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5054,"src":"51328:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":5138,"name":"protocolSeizeShareMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6270,"src":"51356:26:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5137,"name":"Exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14390,"src":"51341:3:10","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Exp_$14390_storage_ptr_$","typeString":"type(struct ExponentialNoError.Exp storage pointer)"}},"id":5139,"isConstant":false,"isLValue":false,"isPure":true,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"51341:43:10","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}],"id":5135,"name":"mul_","nodeType":"Identifier","overloadedDeclarations":[14739,14757,14775,14796,14814,14832,14848,14888],"referencedDeclaration":14775,"src":"51323:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_struct$_Exp_$14390_memory_ptr_$returns$_t_uint256_$","typeString":"function (uint256,struct ExponentialNoError.Exp memory) pure returns (uint256)"}},"id":5140,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"51323:62:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"51296:89:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5142,"nodeType":"ExpressionStatement","src":"51296:89:10"},{"expression":{"argumentTypes":null,"id":5151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5143,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5098,"src":"51395:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_SeizeInternalLocalVars_$5046_memory_ptr","typeString":"struct CToken.SeizeInternalLocalVars memory"}},"id":5145,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"liquidatorSeizeTokens","nodeType":"MemberAccess","referencedDeclaration":5035,"src":"51395:26:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":5147,"name":"seizeTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5054,"src":"51429:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5148,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5098,"src":"51442:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_SeizeInternalLocalVars_$5046_memory_ptr","typeString":"struct CToken.SeizeInternalLocalVars memory"}},"id":5149,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"protocolSeizeTokens","nodeType":"MemberAccess","referencedDeclaration":5037,"src":"51442:24:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5146,"name":"sub_","nodeType":"Identifier","overloadedDeclarations":[14660,14679,14695,14718],"referencedDeclaration":14695,"src":"51424:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":5150,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"51424:43:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"51395:72:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5152,"nodeType":"ExpressionStatement","src":"51395:72:10"},{"expression":{"argumentTypes":null,"id":5161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"components":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5153,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5098,"src":"51479:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_SeizeInternalLocalVars_$5046_memory_ptr","typeString":"struct CToken.SeizeInternalLocalVars memory"}},"id":5155,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"mathErr","nodeType":"MemberAccess","referencedDeclaration":5029,"src":"51479:12:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5156,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5098,"src":"51493:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_SeizeInternalLocalVars_$5046_memory_ptr","typeString":"struct CToken.SeizeInternalLocalVars memory"}},"id":5157,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"exchangeRateMantissa","nodeType":"MemberAccess","referencedDeclaration":5041,"src":"51493:25:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5158,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"51478:41:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":5159,"name":"exchangeRateStoredInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3246,"src":"51522:26:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"function () view returns (enum CarefulMath.MathError,uint256)"}},"id":5160,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"51522:28:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"src":"51478:72:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5162,"nodeType":"ExpressionStatement","src":"51478:72:10"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"id":5168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5164,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5098,"src":"51568:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_SeizeInternalLocalVars_$5046_memory_ptr","typeString":"struct CToken.SeizeInternalLocalVars memory"}},"id":5165,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mathErr","nodeType":"MemberAccess","referencedDeclaration":5029,"src":"51568:12:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5166,"name":"MathError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6659,"src":"51584:9:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MathError_$6659_$","typeString":"type(enum CarefulMath.MathError)"}},"id":5167,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"51584:18:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"src":"51568:34:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"65786368616e67652072617465206d617468206572726f72","id":5169,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"51604:26:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_ede4918e28ad40141209aaccaf28c8f2de1b25c1245ffce39cce8edf73e9ab4e","typeString":"literal_string \"exchange rate math error\""},"value":"exchange rate math error"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ede4918e28ad40141209aaccaf28c8f2de1b25c1245ffce39cce8edf73e9ab4e","typeString":"literal_string \"exchange rate math error\""}],"id":5163,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"51560:7:10","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5170,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"51560:71:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5171,"nodeType":"ExpressionStatement","src":"51560:71:10"},{"expression":{"argumentTypes":null,"id":5183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5172,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5098,"src":"51642:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_SeizeInternalLocalVars_$5046_memory_ptr","typeString":"struct CToken.SeizeInternalLocalVars memory"}},"id":5174,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"protocolSeizeAmount","nodeType":"MemberAccess","referencedDeclaration":5039,"src":"51642:24:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5177,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5098,"src":"51703:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_SeizeInternalLocalVars_$5046_memory_ptr","typeString":"struct CToken.SeizeInternalLocalVars memory"}},"id":5178,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"exchangeRateMantissa","nodeType":"MemberAccess","referencedDeclaration":5041,"src":"51703:25:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5176,"name":"Exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14390,"src":"51688:3:10","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Exp_$14390_storage_ptr_$","typeString":"type(struct ExponentialNoError.Exp storage pointer)"}},"id":5179,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"51688:42:10","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5180,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5098,"src":"51732:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_SeizeInternalLocalVars_$5046_memory_ptr","typeString":"struct CToken.SeizeInternalLocalVars memory"}},"id":5181,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"protocolSeizeTokens","nodeType":"MemberAccess","referencedDeclaration":5037,"src":"51732:24:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5175,"name":"mul_ScalarTruncate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14427,"src":"51669:18:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Exp_$14390_memory_ptr_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct ExponentialNoError.Exp memory,uint256) pure returns (uint256)"}},"id":5182,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"51669:88:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"51642:115:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5184,"nodeType":"ExpressionStatement","src":"51642:115:10"},{"expression":{"argumentTypes":null,"id":5193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5185,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5098,"src":"51768:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_SeizeInternalLocalVars_$5046_memory_ptr","typeString":"struct CToken.SeizeInternalLocalVars memory"}},"id":5187,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"totalReservesNew","nodeType":"MemberAccess","referencedDeclaration":5043,"src":"51768:21:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":5189,"name":"totalReserves","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6242,"src":"51797:13:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5190,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5098,"src":"51812:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_SeizeInternalLocalVars_$5046_memory_ptr","typeString":"struct CToken.SeizeInternalLocalVars memory"}},"id":5191,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"protocolSeizeAmount","nodeType":"MemberAccess","referencedDeclaration":5039,"src":"51812:24:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5188,"name":"add_","nodeType":"Identifier","overloadedDeclarations":[14579,14598,14614,14641],"referencedDeclaration":14614,"src":"51792:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":5192,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"51792:45:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"51768:69:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5194,"nodeType":"ExpressionStatement","src":"51768:69:10"},{"expression":{"argumentTypes":null,"id":5203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5195,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5098,"src":"51847:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_SeizeInternalLocalVars_$5046_memory_ptr","typeString":"struct CToken.SeizeInternalLocalVars memory"}},"id":5197,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"totalSupplyNew","nodeType":"MemberAccess","referencedDeclaration":5045,"src":"51847:19:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":5199,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6248,"src":"51874:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5200,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5098,"src":"51887:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_SeizeInternalLocalVars_$5046_memory_ptr","typeString":"struct CToken.SeizeInternalLocalVars memory"}},"id":5201,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"protocolSeizeTokens","nodeType":"MemberAccess","referencedDeclaration":5037,"src":"51887:24:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5198,"name":"sub_","nodeType":"Identifier","overloadedDeclarations":[14660,14679,14695,14718],"referencedDeclaration":14695,"src":"51869:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":5202,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"51869:43:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"51847:65:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5204,"nodeType":"ExpressionStatement","src":"51847:65:10"},{"expression":{"argumentTypes":null,"id":5218,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"components":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5205,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5098,"src":"51924:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_SeizeInternalLocalVars_$5046_memory_ptr","typeString":"struct CToken.SeizeInternalLocalVars memory"}},"id":5207,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"mathErr","nodeType":"MemberAccess","referencedDeclaration":5029,"src":"51924:12:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5208,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5098,"src":"51938:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_SeizeInternalLocalVars_$5046_memory_ptr","typeString":"struct CToken.SeizeInternalLocalVars memory"}},"id":5209,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"liquidatorTokensNew","nodeType":"MemberAccess","referencedDeclaration":5033,"src":"51938:24:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5210,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"51923:40:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":5212,"name":"accountTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6252,"src":"51974:13:10","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":5214,"indexExpression":{"argumentTypes":null,"id":5213,"name":"liquidator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5050,"src":"51988:10:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"51974:25:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5215,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5098,"src":"52001:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_SeizeInternalLocalVars_$5046_memory_ptr","typeString":"struct CToken.SeizeInternalLocalVars memory"}},"id":5216,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"liquidatorSeizeTokens","nodeType":"MemberAccess","referencedDeclaration":5035,"src":"52001:26:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5211,"name":"addUInt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6798,"src":"51966:7:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (enum CarefulMath.MathError,uint256)"}},"id":5217,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"51966:62:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"src":"51923:105:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5219,"nodeType":"ExpressionStatement","src":"51923:105:10"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"id":5224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5220,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5098,"src":"52042:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_SeizeInternalLocalVars_$5046_memory_ptr","typeString":"struct CToken.SeizeInternalLocalVars memory"}},"id":5221,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mathErr","nodeType":"MemberAccess","referencedDeclaration":5029,"src":"52042:12:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5222,"name":"MathError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6659,"src":"52058:9:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MathError_$6659_$","typeString":"type(enum CarefulMath.MathError)"}},"id":5223,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"52058:18:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"src":"52042:34:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":5237,"nodeType":"IfStatement","src":"52038:174:10","trueBody":{"id":5236,"nodeType":"Block","src":"52078:134:10","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5226,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"52110:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":5227,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"MATH_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"52110:16:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5228,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13782,"src":"52128:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13782_$","typeString":"type(enum TokenErrorReporter.FailureInfo)"}},"id":5229,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"LIQUIDATE_SEIZE_BALANCE_INCREMENT_FAILED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"52128:52:10","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5231,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5098,"src":"52187:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_SeizeInternalLocalVars_$5046_memory_ptr","typeString":"struct CToken.SeizeInternalLocalVars memory"}},"id":5232,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mathErr","nodeType":"MemberAccess","referencedDeclaration":5029,"src":"52187:12:10","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}],"id":5230,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"52182:4:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":5233,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"52182:18:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5225,"name":"failOpaque","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13848,"src":"52099:10:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13681_$_t_enum$_FailureInfo_$13782_$_t_uint256_$returns$_t_uint256_$","typeString":"function (enum TokenErrorReporter.Error,enum TokenErrorReporter.FailureInfo,uint256) returns (uint256)"}},"id":5234,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"52099:102:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5058,"id":5235,"nodeType":"Return","src":"52092:109:10"}]}},{"expression":{"argumentTypes":null,"id":5241,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":5238,"name":"totalReserves","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6242,"src":"52408:13:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5239,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5098,"src":"52424:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_SeizeInternalLocalVars_$5046_memory_ptr","typeString":"struct CToken.SeizeInternalLocalVars memory"}},"id":5240,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"totalReservesNew","nodeType":"MemberAccess","referencedDeclaration":5043,"src":"52424:21:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"52408:37:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5242,"nodeType":"ExpressionStatement","src":"52408:37:10"},{"expression":{"argumentTypes":null,"id":5246,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":5243,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6248,"src":"52455:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5244,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5098,"src":"52469:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_SeizeInternalLocalVars_$5046_memory_ptr","typeString":"struct CToken.SeizeInternalLocalVars memory"}},"id":5245,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"totalSupplyNew","nodeType":"MemberAccess","referencedDeclaration":5045,"src":"52469:19:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"52455:33:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5247,"nodeType":"ExpressionStatement","src":"52455:33:10"},{"expression":{"argumentTypes":null,"id":5253,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":5248,"name":"accountTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6252,"src":"52498:13:10","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":5250,"indexExpression":{"argumentTypes":null,"id":5249,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5052,"src":"52512:8:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"52498:23:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5251,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5098,"src":"52524:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_SeizeInternalLocalVars_$5046_memory_ptr","typeString":"struct CToken.SeizeInternalLocalVars memory"}},"id":5252,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"borrowerTokensNew","nodeType":"MemberAccess","referencedDeclaration":5031,"src":"52524:22:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"52498:48:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5254,"nodeType":"ExpressionStatement","src":"52498:48:10"},{"expression":{"argumentTypes":null,"id":5260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":5255,"name":"accountTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6252,"src":"52556:13:10","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":5257,"indexExpression":{"argumentTypes":null,"id":5256,"name":"liquidator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5050,"src":"52570:10:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"52556:25:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5258,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5098,"src":"52584:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_SeizeInternalLocalVars_$5046_memory_ptr","typeString":"struct CToken.SeizeInternalLocalVars memory"}},"id":5259,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"liquidatorTokensNew","nodeType":"MemberAccess","referencedDeclaration":5033,"src":"52584:24:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"52556:52:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5261,"nodeType":"ExpressionStatement","src":"52556:52:10"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":5263,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5052,"src":"52669:8:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":5264,"name":"liquidator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5050,"src":"52679:10:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5265,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5098,"src":"52691:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_SeizeInternalLocalVars_$5046_memory_ptr","typeString":"struct CToken.SeizeInternalLocalVars memory"}},"id":5266,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"liquidatorSeizeTokens","nodeType":"MemberAccess","referencedDeclaration":5035,"src":"52691:26:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5262,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6393,"src":"52660:8:10","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":5267,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"52660:58:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5268,"nodeType":"EmitStatement","src":"52655:63:10"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":5270,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5052,"src":"52742:8:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":5272,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22614,"src":"52760:4:10","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":5271,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"52752:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":5273,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"52752:13:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5274,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5098,"src":"52767:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_SeizeInternalLocalVars_$5046_memory_ptr","typeString":"struct CToken.SeizeInternalLocalVars memory"}},"id":5275,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"protocolSeizeTokens","nodeType":"MemberAccess","referencedDeclaration":5037,"src":"52767:24:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5269,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6393,"src":"52733:8:10","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":5276,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"52733:59:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5277,"nodeType":"EmitStatement","src":"52728:64:10"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":5280,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22614,"src":"52829:4:10","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":5279,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"52821:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":5281,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"52821:13:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5282,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5098,"src":"52836:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_SeizeInternalLocalVars_$5046_memory_ptr","typeString":"struct CToken.SeizeInternalLocalVars memory"}},"id":5283,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"protocolSeizeAmount","nodeType":"MemberAccess","referencedDeclaration":5039,"src":"52836:24:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5284,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5098,"src":"52862:4:10","typeDescriptions":{"typeIdentifier":"t_struct$_SeizeInternalLocalVars_$5046_memory_ptr","typeString":"struct CToken.SeizeInternalLocalVars memory"}},"id":5285,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"totalReservesNew","nodeType":"MemberAccess","referencedDeclaration":5043,"src":"52862:21:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5278,"name":"ReservesAdded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6365,"src":"52807:13:10","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256)"}},"id":5286,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"52807:77:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5287,"nodeType":"EmitStatement","src":"52802:82:10"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5289,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"53073:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":5290,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"53073:14:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}],"id":5288,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"53068:4:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":5291,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"53068:20:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5058,"id":5292,"nodeType":"Return","src":"53061:27:10"}]},"documentation":"@notice Transfers collateral tokens (this market) to the liquidator.\n@dev Called only during an in-kind liquidation, or by liquidateBorrow during the liquidation of another CToken.\n Its absolutely critical to use msg.sender as the seizer cToken and not a parameter.\n@param seizerToken The contract seizing the collateral (i.e. borrowed cToken)\n@param liquidator The account receiving seized collateral\n@param borrower The account having collateral seized\n@param seizeTokens The number of cTokens to seize\n@return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)","id":5294,"implemented":true,"kind":"function","modifiers":[],"name":"seizeInternal","nodeType":"FunctionDefinition","parameters":{"id":5055,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5048,"name":"seizerToken","nodeType":"VariableDeclaration","scope":5294,"src":"50081:19:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5047,"name":"address","nodeType":"ElementaryTypeName","src":"50081:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":5050,"name":"liquidator","nodeType":"VariableDeclaration","scope":5294,"src":"50102:18:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5049,"name":"address","nodeType":"ElementaryTypeName","src":"50102:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":5052,"name":"borrower","nodeType":"VariableDeclaration","scope":5294,"src":"50122:16:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5051,"name":"address","nodeType":"ElementaryTypeName","src":"50122:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":5054,"name":"seizeTokens","nodeType":"VariableDeclaration","scope":5294,"src":"50140:16:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5053,"name":"uint","nodeType":"ElementaryTypeName","src":"50140:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"50080:77:10"},"returnParameters":{"id":5058,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5057,"name":"","nodeType":"VariableDeclaration","scope":5294,"src":"50176:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5056,"name":"uint","nodeType":"ElementaryTypeName","src":"50176:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"50175:6:10"},"scope":6186,"src":"50058:3037:10","stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},{"body":{"id":5326,"nodeType":"Block","src":"53434:469:10","statements":[{"assignments":[5302],"declarations":[{"constant":false,"id":5302,"name":"oldComptroller","nodeType":"VariableDeclaration","scope":5326,"src":"53444:35:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerInterface_$12980","typeString":"contract ComptrollerInterface"},"typeName":{"contractScope":null,"id":5301,"name":"ComptrollerInterface","nodeType":"UserDefinedTypeName","referencedDeclaration":12980,"src":"53444:20:10","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerInterface_$12980","typeString":"contract ComptrollerInterface"}},"value":null,"visibility":"internal"}],"id":5304,"initialValue":{"argumentTypes":null,"id":5303,"name":"comptroller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6224,"src":"53482:11:10","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerInterface_$12980","typeString":"contract ComptrollerInterface"}},"nodeType":"VariableDeclarationStatement","src":"53444:49:10"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":5306,"name":"newComptroller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5296,"src":"53577:14:10","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerInterface_$12980","typeString":"contract ComptrollerInterface"}},"id":5307,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"isComptroller","nodeType":"MemberAccess","referencedDeclaration":12750,"src":"53577:28:10","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bool_$","typeString":"function () view external returns (bool)"}},"id":5308,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"53577:30:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"6d61726b6572206d6574686f642072657475726e65642066616c7365","id":5309,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"53609:30:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_73c0b9b9fc59551809f9e3f686bb994cac13db80a83fd9ccdfe6d53da80fe637","typeString":"literal_string \"marker method returned false\""},"value":"marker method returned false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_73c0b9b9fc59551809f9e3f686bb994cac13db80a83fd9ccdfe6d53da80fe637","typeString":"literal_string \"marker method returned false\""}],"id":5305,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"53569:7:10","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5310,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"53569:71:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5311,"nodeType":"ExpressionStatement","src":"53569:71:10"},{"expression":{"argumentTypes":null,"id":5314,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":5312,"name":"comptroller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6224,"src":"53705:11:10","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerInterface_$12980","typeString":"contract ComptrollerInterface"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":5313,"name":"newComptroller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5296,"src":"53719:14:10","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerInterface_$12980","typeString":"contract ComptrollerInterface"}},"src":"53705:28:10","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerInterface_$12980","typeString":"contract ComptrollerInterface"}},"id":5315,"nodeType":"ExpressionStatement","src":"53705:28:10"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":5317,"name":"oldComptroller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5302,"src":"53827:14:10","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerInterface_$12980","typeString":"contract ComptrollerInterface"}},{"argumentTypes":null,"id":5318,"name":"newComptroller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5296,"src":"53843:14:10","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerInterface_$12980","typeString":"contract ComptrollerInterface"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ComptrollerInterface_$12980","typeString":"contract ComptrollerInterface"},{"typeIdentifier":"t_contract$_ComptrollerInterface_$12980","typeString":"contract ComptrollerInterface"}],"id":5316,"name":"NewComptroller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6345,"src":"53812:14:10","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_contract$_ComptrollerInterface_$12980_$_t_contract$_ComptrollerInterface_$12980_$returns$__$","typeString":"function (contract ComptrollerInterface,contract ComptrollerInterface)"}},"id":5319,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"53812:46:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5320,"nodeType":"EmitStatement","src":"53807:51:10"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5322,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"53881:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":5323,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"53881:14:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}],"id":5321,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"53876:4:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":5324,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"53876:20:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5300,"id":5325,"nodeType":"Return","src":"53869:27:10"}]},"documentation":"@notice Sets a new comptroller for the market\n@dev Internal function to set a new comptroller\n@return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)","id":5327,"implemented":true,"kind":"function","modifiers":[],"name":"_setComptroller","nodeType":"FunctionDefinition","parameters":{"id":5297,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5296,"name":"newComptroller","nodeType":"VariableDeclaration","scope":5327,"src":"53373:35:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerInterface_$12980","typeString":"contract ComptrollerInterface"},"typeName":{"contractScope":null,"id":5295,"name":"ComptrollerInterface","nodeType":"UserDefinedTypeName","referencedDeclaration":12980,"src":"53373:20:10","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerInterface_$12980","typeString":"contract ComptrollerInterface"}},"value":null,"visibility":"internal"}],"src":"53372:37:10"},"returnParameters":{"id":5300,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5299,"name":"","nodeType":"VariableDeclaration","scope":5327,"src":"53428:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5298,"name":"uint","nodeType":"ElementaryTypeName","src":"53428:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"53427:6:10"},"scope":6186,"src":"53348:555:10","stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},{"body":{"id":5362,"nodeType":"Block","src":"54276:479:10","statements":[{"assignments":[5338],"declarations":[{"constant":false,"id":5338,"name":"error","nodeType":"VariableDeclaration","scope":5362,"src":"54286:10:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5337,"name":"uint","nodeType":"ElementaryTypeName","src":"54286:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":5341,"initialValue":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":5339,"name":"accrueInterest","nodeType":"Identifier","overloadedDeclarations":[3327],"referencedDeclaration":3327,"src":"54299:14:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_uint256_$","typeString":"function () returns (uint256)"}},"id":5340,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"54299:16:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"54286:29:10"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":5342,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5338,"src":"54329:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5344,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"54343:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":5345,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"54343:14:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}],"id":5343,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"54338:4:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":5346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"54338:20:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"54329:29:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":5357,"nodeType":"IfStatement","src":"54325:273:10","trueBody":{"id":5356,"nodeType":"Block","src":"54360:238:10","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":5350,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5338,"src":"54530:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5349,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"54524:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":5351,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"54524:12:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5352,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13782,"src":"54538:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13782_$","typeString":"type(enum TokenErrorReporter.FailureInfo)"}},"id":5353,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"SET_ADMIN_FEE_ACCRUE_INTEREST_FAILED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"54538:48:10","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}],"id":5348,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13814,"src":"54519:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13681_$_t_enum$_FailureInfo_$13782_$returns$_t_uint256_$","typeString":"function (enum TokenErrorReporter.Error,enum TokenErrorReporter.FailureInfo) returns (uint256)"}},"id":5354,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"54519:68:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5336,"id":5355,"nodeType":"Return","src":"54512:75:10"}]}},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":5359,"name":"newAdminFeeMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5329,"src":"54728:19:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5358,"name":"_setAdminFeeFresh","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5471,"src":"54710:17:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":5360,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"54710:38:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5336,"id":5361,"nodeType":"Return","src":"54703:45:10"}]},"documentation":"@notice accrues interest and sets a new admin fee for the protocol using _setAdminFeeFresh\n@dev Admin function to accrue interest and set a new admin fee\n@return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)","id":5363,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"argumentTypes":null,"hexValue":"66616c7365","id":5332,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"54254:5:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"id":5333,"modifierName":{"argumentTypes":null,"id":5331,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6105,"src":"54241:12:10","typeDescriptions":{"typeIdentifier":"t_modifier$_t_bool_$","typeString":"modifier (bool)"}},"nodeType":"ModifierInvocation","src":"54241:19:10"}],"name":"_setAdminFee","nodeType":"FunctionDefinition","parameters":{"id":5330,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5329,"name":"newAdminFeeMantissa","nodeType":"VariableDeclaration","scope":5363,"src":"54206:24:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5328,"name":"uint","nodeType":"ElementaryTypeName","src":"54206:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"54205:26:10"},"returnParameters":{"id":5336,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5335,"name":"","nodeType":"VariableDeclaration","scope":5363,"src":"54270:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5334,"name":"uint","nodeType":"ElementaryTypeName","src":"54270:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"54269:6:10"},"scope":6186,"src":"54184:571:10","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":{"id":5470,"nodeType":"Block","src":"55083:1660:10","statements":[{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5373,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":5370,"name":"accrualBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6236,"src":"55165:18:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":5371,"name":"getBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2912,"src":"55187:14:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":5372,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"55187:16:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"55165:38:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":5382,"nodeType":"IfStatement","src":"55161:143:10","trueBody":{"id":5381,"nodeType":"Block","src":"55205:99:10","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5375,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"55231:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":5376,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"MARKET_NOT_FRESH","nodeType":"MemberAccess","referencedDeclaration":null,"src":"55231:22:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5377,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13782,"src":"55255:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13782_$","typeString":"type(enum TokenErrorReporter.FailureInfo)"}},"id":5378,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"SET_ADMIN_FEE_FRESH_CHECK","nodeType":"MemberAccess","referencedDeclaration":null,"src":"55255:37:10","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}],"id":5374,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13814,"src":"55226:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13681_$_t_enum$_FailureInfo_$13782_$returns$_t_uint256_$","typeString":"function (enum TokenErrorReporter.Error,enum TokenErrorReporter.FailureInfo) returns (uint256)"}},"id":5379,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"55226:67:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5369,"id":5380,"nodeType":"Return","src":"55219:74:10"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5388,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":5383,"name":"newAdminFeeMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5365,"src":"55358:19:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":5386,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"55386:2:10","subExpression":{"argumentTypes":null,"hexValue":"31","id":5385,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"55387:1:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"id":5384,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"55381:4:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":5387,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"55381:8:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"55358:31:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":5393,"nodeType":"IfStatement","src":"55354:75:10","trueBody":{"expression":{"argumentTypes":null,"id":5391,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":5389,"name":"newAdminFeeMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5365,"src":"55391:19:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":5390,"name":"adminFeeMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6230,"src":"55413:16:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"55391:38:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5392,"nodeType":"ExpressionStatement","src":"55391:38:10"}},{"assignments":[5395],"declarations":[{"constant":false,"id":5395,"name":"newFuseFeeMantissa","nodeType":"VariableDeclaration","scope":5470,"src":"55471:23:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5394,"name":"uint","nodeType":"ElementaryTypeName","src":"55471:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":5398,"initialValue":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":5396,"name":"getPendingFuseFeeFromAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2473,"src":"55497:26:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":5397,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"55497:28:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"55471:54:10"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5407,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":5401,"name":"reserveFactorMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6234,"src":"55669:21:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":5402,"name":"newAdminFeeMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5365,"src":"55692:19:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5400,"name":"add_","nodeType":"Identifier","overloadedDeclarations":[14579,14598,14614,14641],"referencedDeclaration":14614,"src":"55664:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":5403,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"55664:48:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":5404,"name":"newFuseFeeMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5395,"src":"55714:18:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5399,"name":"add_","nodeType":"Identifier","overloadedDeclarations":[14579,14598,14614,14641],"referencedDeclaration":14614,"src":"55659:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":5405,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"55659:74:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"id":5406,"name":"reserveFactorPlusFeesMaxMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6220,"src":"55736:32:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"55659:109:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":5416,"nodeType":"IfStatement","src":"55655:208:10","trueBody":{"id":5415,"nodeType":"Block","src":"55770:93:10","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5409,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"55796:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":5410,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"BAD_INPUT","nodeType":"MemberAccess","referencedDeclaration":null,"src":"55796:15:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5411,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13782,"src":"55813:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13782_$","typeString":"type(enum TokenErrorReporter.FailureInfo)"}},"id":5412,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"SET_ADMIN_FEE_BOUNDS_CHECK","nodeType":"MemberAccess","referencedDeclaration":null,"src":"55813:38:10","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}],"id":5408,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13814,"src":"55791:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13681_$_t_enum$_FailureInfo_$13782_$returns$_t_uint256_$","typeString":"function (enum TokenErrorReporter.Error,enum TokenErrorReporter.FailureInfo) returns (uint256)"}},"id":5413,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"55791:61:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5369,"id":5414,"nodeType":"Return","src":"55784:68:10"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5419,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":5417,"name":"adminFeeMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6230,"src":"55909:16:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"id":5418,"name":"newAdminFeeMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5365,"src":"55929:19:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"55909:39:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":5446,"nodeType":"IfStatement","src":"55905:470:10","trueBody":{"id":5445,"nodeType":"Block","src":"55950:425:10","statements":[{"condition":{"argumentTypes":null,"id":5422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"56005:17:10","subExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":5420,"name":"hasAdminRights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2322,"src":"56006:14:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":5421,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"56006:16:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":5431,"nodeType":"IfStatement","src":"56001:126:10","trueBody":{"id":5430,"nodeType":"Block","src":"56024:103:10","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5424,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"56054:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":5425,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"UNAUTHORIZED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"56054:18:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5426,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13782,"src":"56074:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13782_$","typeString":"type(enum TokenErrorReporter.FailureInfo)"}},"id":5427,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"SET_ADMIN_FEE_ADMIN_CHECK","nodeType":"MemberAccess","referencedDeclaration":null,"src":"56074:37:10","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}],"id":5423,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13814,"src":"56049:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13681_$_t_enum$_FailureInfo_$13782_$returns$_t_uint256_$","typeString":"function (enum TokenErrorReporter.Error,enum TokenErrorReporter.FailureInfo) returns (uint256)"}},"id":5428,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"56049:63:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5369,"id":5429,"nodeType":"Return","src":"56042:70:10"}]}},{"assignments":[5433],"declarations":[{"constant":false,"id":5433,"name":"oldAdminFeeMantissa","nodeType":"VariableDeclaration","scope":5445,"src":"56170:24:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5432,"name":"uint","nodeType":"ElementaryTypeName","src":"56170:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":5435,"initialValue":{"argumentTypes":null,"id":5434,"name":"adminFeeMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6230,"src":"56197:16:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"56170:43:10"},{"expression":{"argumentTypes":null,"id":5438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":5436,"name":"adminFeeMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6230,"src":"56227:16:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":5437,"name":"newAdminFeeMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5365,"src":"56246:19:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"56227:38:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5439,"nodeType":"ExpressionStatement","src":"56227:38:10"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":5441,"name":"oldAdminFeeMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5433,"src":"56323:19:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":5442,"name":"newAdminFeeMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5365,"src":"56344:19:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5440,"name":"NewAdminFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6379,"src":"56311:11:10","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":5443,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"56311:53:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5444,"nodeType":"EmitStatement","src":"56306:58:10"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":5447,"name":"fuseFeeMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6232,"src":"56420:15:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"id":5448,"name":"newFuseFeeMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5395,"src":"56439:18:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"56420:37:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":5464,"nodeType":"IfStatement","src":"56416:283:10","trueBody":{"id":5463,"nodeType":"Block","src":"56459:240:10","statements":[{"assignments":[5451],"declarations":[{"constant":false,"id":5451,"name":"oldFuseFeeMantissa","nodeType":"VariableDeclaration","scope":5463,"src":"56501:23:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5450,"name":"uint","nodeType":"ElementaryTypeName","src":"56501:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":5453,"initialValue":{"argumentTypes":null,"id":5452,"name":"fuseFeeMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6232,"src":"56527:15:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"56501:41:10"},{"expression":{"argumentTypes":null,"id":5456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":5454,"name":"fuseFeeMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6232,"src":"56556:15:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":5455,"name":"newFuseFeeMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5395,"src":"56574:18:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"56556:36:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5457,"nodeType":"ExpressionStatement","src":"56556:36:10"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":5459,"name":"oldFuseFeeMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5451,"src":"56649:18:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":5460,"name":"newFuseFeeMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5395,"src":"56669:18:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5458,"name":"NewFuseFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6385,"src":"56638:10:10","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":5461,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"56638:50:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5462,"nodeType":"EmitStatement","src":"56633:55:10"}]}},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5466,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"56721:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":5467,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"56721:14:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}],"id":5465,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"56716:4:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":5468,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"56716:20:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5369,"id":5469,"nodeType":"Return","src":"56709:27:10"}]},"documentation":"@notice Sets a new admin fee for the protocol (*requires fresh interest accrual)\n@dev Admin function to set a new admin fee\n@return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)","id":5471,"implemented":true,"kind":"function","modifiers":[],"name":"_setAdminFeeFresh","nodeType":"FunctionDefinition","parameters":{"id":5366,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5365,"name":"newAdminFeeMantissa","nodeType":"VariableDeclaration","scope":5471,"src":"55033:24:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5364,"name":"uint","nodeType":"ElementaryTypeName","src":"55033:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"55032:26:10"},"returnParameters":{"id":5369,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5368,"name":"","nodeType":"VariableDeclaration","scope":5471,"src":"55077:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5367,"name":"uint","nodeType":"ElementaryTypeName","src":"55077:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"55076:6:10"},"scope":6186,"src":"55006:1737:10","stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},{"body":{"id":5506,"nodeType":"Block","src":"57141:504:10","statements":[{"assignments":[5482],"declarations":[{"constant":false,"id":5482,"name":"error","nodeType":"VariableDeclaration","scope":5506,"src":"57151:10:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5481,"name":"uint","nodeType":"ElementaryTypeName","src":"57151:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":5485,"initialValue":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":5483,"name":"accrueInterest","nodeType":"Identifier","overloadedDeclarations":[3327],"referencedDeclaration":3327,"src":"57164:14:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_uint256_$","typeString":"function () returns (uint256)"}},"id":5484,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"57164:16:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"57151:29:10"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5491,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":5486,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5482,"src":"57194:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5488,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"57208:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":5489,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"57208:14:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}],"id":5487,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"57203:4:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":5490,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"57203:20:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"57194:29:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":5501,"nodeType":"IfStatement","src":"57190:283:10","trueBody":{"id":5500,"nodeType":"Block","src":"57225:248:10","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":5494,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5482,"src":"57400:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5493,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"57394:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":5495,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"57394:12:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5496,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13782,"src":"57408:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13782_$","typeString":"type(enum TokenErrorReporter.FailureInfo)"}},"id":5497,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"SET_RESERVE_FACTOR_ACCRUE_INTEREST_FAILED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"57408:53:10","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}],"id":5492,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13814,"src":"57389:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13681_$_t_enum$_FailureInfo_$13782_$returns$_t_uint256_$","typeString":"function (enum TokenErrorReporter.Error,enum TokenErrorReporter.FailureInfo) returns (uint256)"}},"id":5498,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"57389:73:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5480,"id":5499,"nodeType":"Return","src":"57382:80:10"}]}},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":5503,"name":"newReserveFactorMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5473,"src":"57613:24:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5502,"name":"_setReserveFactorFresh","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5576,"src":"57590:22:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":5504,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"57590:48:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5480,"id":5505,"nodeType":"Return","src":"57583:55:10"}]},"documentation":"@notice accrues interest and sets a new reserve factor for the protocol using _setReserveFactorFresh\n@dev Admin function to accrue interest and set a new reserve factor\n@return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)","id":5507,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"argumentTypes":null,"hexValue":"66616c7365","id":5476,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"57119:5:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"id":5477,"modifierName":{"argumentTypes":null,"id":5475,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6105,"src":"57106:12:10","typeDescriptions":{"typeIdentifier":"t_modifier$_t_bool_$","typeString":"modifier (bool)"}},"nodeType":"ModifierInvocation","src":"57106:19:10"}],"name":"_setReserveFactor","nodeType":"FunctionDefinition","parameters":{"id":5474,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5473,"name":"newReserveFactorMantissa","nodeType":"VariableDeclaration","scope":5507,"src":"57066:29:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5472,"name":"uint","nodeType":"ElementaryTypeName","src":"57066:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"57065:31:10"},"returnParameters":{"id":5480,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5479,"name":"","nodeType":"VariableDeclaration","scope":5507,"src":"57135:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5478,"name":"uint","nodeType":"ElementaryTypeName","src":"57135:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"57134:6:10"},"scope":6186,"src":"57039:606:10","stateMutability":"nonpayable","superFunction":6541,"visibility":"external"},{"body":{"id":5575,"nodeType":"Block","src":"57993:917:10","statements":[{"condition":{"argumentTypes":null,"id":5516,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"58040:17:10","subExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":5514,"name":"hasAdminRights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2322,"src":"58041:14:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":5515,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"58041:16:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":5525,"nodeType":"IfStatement","src":"58036:123:10","trueBody":{"id":5524,"nodeType":"Block","src":"58059:100:10","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5518,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"58085:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":5519,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"UNAUTHORIZED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"58085:18:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5520,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13782,"src":"58105:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13782_$","typeString":"type(enum TokenErrorReporter.FailureInfo)"}},"id":5521,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"SET_RESERVE_FACTOR_ADMIN_CHECK","nodeType":"MemberAccess","referencedDeclaration":null,"src":"58105:42:10","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}],"id":5517,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13814,"src":"58080:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13681_$_t_enum$_FailureInfo_$13782_$returns$_t_uint256_$","typeString":"function (enum TokenErrorReporter.Error,enum TokenErrorReporter.FailureInfo) returns (uint256)"}},"id":5522,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"58080:68:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5513,"id":5523,"nodeType":"Return","src":"58073:75:10"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5529,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":5526,"name":"accrualBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6236,"src":"58241:18:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":5527,"name":"getBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2912,"src":"58263:14:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":5528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"58263:16:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"58241:38:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":5538,"nodeType":"IfStatement","src":"58237:148:10","trueBody":{"id":5537,"nodeType":"Block","src":"58281:104:10","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5531,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"58307:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":5532,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"MARKET_NOT_FRESH","nodeType":"MemberAccess","referencedDeclaration":null,"src":"58307:22:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5533,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13782,"src":"58331:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13782_$","typeString":"type(enum TokenErrorReporter.FailureInfo)"}},"id":5534,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"SET_RESERVE_FACTOR_FRESH_CHECK","nodeType":"MemberAccess","referencedDeclaration":null,"src":"58331:42:10","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}],"id":5530,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13814,"src":"58302:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13681_$_t_enum$_FailureInfo_$13782_$returns$_t_uint256_$","typeString":"function (enum TokenErrorReporter.Error,enum TokenErrorReporter.FailureInfo) returns (uint256)"}},"id":5535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"58302:72:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5513,"id":5536,"nodeType":"Return","src":"58295:79:10"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5547,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":5541,"name":"newReserveFactorMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5509,"src":"58464:24:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":5542,"name":"adminFeeMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6230,"src":"58490:16:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5540,"name":"add_","nodeType":"Identifier","overloadedDeclarations":[14579,14598,14614,14641],"referencedDeclaration":14614,"src":"58459:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":5543,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"58459:48:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":5544,"name":"fuseFeeMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6232,"src":"58509:15:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5539,"name":"add_","nodeType":"Identifier","overloadedDeclarations":[14579,14598,14614,14641],"referencedDeclaration":14614,"src":"58454:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":5545,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"58454:71:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"id":5546,"name":"reserveFactorPlusFeesMaxMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6220,"src":"58528:32:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"58454:106:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":5556,"nodeType":"IfStatement","src":"58450:210:10","trueBody":{"id":5555,"nodeType":"Block","src":"58562:98:10","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5549,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"58588:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":5550,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"BAD_INPUT","nodeType":"MemberAccess","referencedDeclaration":null,"src":"58588:15:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5551,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13782,"src":"58605:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13782_$","typeString":"type(enum TokenErrorReporter.FailureInfo)"}},"id":5552,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"SET_RESERVE_FACTOR_BOUNDS_CHECK","nodeType":"MemberAccess","referencedDeclaration":null,"src":"58605:43:10","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}],"id":5548,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13814,"src":"58583:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13681_$_t_enum$_FailureInfo_$13782_$returns$_t_uint256_$","typeString":"function (enum TokenErrorReporter.Error,enum TokenErrorReporter.FailureInfo) returns (uint256)"}},"id":5553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"58583:66:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5513,"id":5554,"nodeType":"Return","src":"58576:73:10"}]}},{"assignments":[5558],"declarations":[{"constant":false,"id":5558,"name":"oldReserveFactorMantissa","nodeType":"VariableDeclaration","scope":5575,"src":"58670:29:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5557,"name":"uint","nodeType":"ElementaryTypeName","src":"58670:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":5560,"initialValue":{"argumentTypes":null,"id":5559,"name":"reserveFactorMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6234,"src":"58702:21:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"58670:53:10"},{"expression":{"argumentTypes":null,"id":5563,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":5561,"name":"reserveFactorMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6234,"src":"58733:21:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":5562,"name":"newReserveFactorMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5509,"src":"58757:24:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"58733:48:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5564,"nodeType":"ExpressionStatement","src":"58733:48:10"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":5566,"name":"oldReserveFactorMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5558,"src":"58814:24:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":5567,"name":"newReserveFactorMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5509,"src":"58840:24:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5565,"name":"NewReserveFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6357,"src":"58797:16:10","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":5568,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"58797:68:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5569,"nodeType":"EmitStatement","src":"58792:73:10"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5571,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"58888:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":5572,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"58888:14:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}],"id":5570,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"58883:4:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":5573,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"58883:20:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5513,"id":5574,"nodeType":"Return","src":"58876:27:10"}]},"documentation":"@notice Sets a new reserve factor for the protocol (*requires fresh interest accrual)\n@dev Admin function to set a new reserve factor\n@return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)","id":5576,"implemented":true,"kind":"function","modifiers":[],"name":"_setReserveFactorFresh","nodeType":"FunctionDefinition","parameters":{"id":5510,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5509,"name":"newReserveFactorMantissa","nodeType":"VariableDeclaration","scope":5576,"src":"57938:29:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5508,"name":"uint","nodeType":"ElementaryTypeName","src":"57938:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"57937:31:10"},"returnParameters":{"id":5513,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5512,"name":"","nodeType":"VariableDeclaration","scope":5576,"src":"57987:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5511,"name":"uint","nodeType":"ElementaryTypeName","src":"57987:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"57986:6:10"},"scope":6186,"src":"57906:1004:10","stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},{"body":{"id":5611,"nodeType":"Block","src":"59244:482:10","statements":[{"assignments":[5587],"declarations":[{"constant":false,"id":5587,"name":"error","nodeType":"VariableDeclaration","scope":5611,"src":"59254:10:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5586,"name":"uint","nodeType":"ElementaryTypeName","src":"59254:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":5590,"initialValue":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":5588,"name":"accrueInterest","nodeType":"Identifier","overloadedDeclarations":[3327],"referencedDeclaration":3327,"src":"59267:14:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_uint256_$","typeString":"function () returns (uint256)"}},"id":5589,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"59267:16:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"59254:29:10"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":5591,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5587,"src":"59297:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5593,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"59311:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":5594,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"59311:14:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}],"id":5592,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"59306:4:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":5595,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"59306:20:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"59297:29:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":5606,"nodeType":"IfStatement","src":"59293:274:10","trueBody":{"id":5605,"nodeType":"Block","src":"59328:239:10","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":5599,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5587,"src":"59497:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5598,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"59491:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":5600,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"59491:12:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5601,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13782,"src":"59505:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13782_$","typeString":"type(enum TokenErrorReporter.FailureInfo)"}},"id":5602,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"REDUCE_RESERVES_ACCRUE_INTEREST_FAILED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"59505:50:10","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}],"id":5597,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13814,"src":"59486:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13681_$_t_enum$_FailureInfo_$13782_$returns$_t_uint256_$","typeString":"function (enum TokenErrorReporter.Error,enum TokenErrorReporter.FailureInfo) returns (uint256)"}},"id":5603,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"59486:70:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5585,"id":5604,"nodeType":"Return","src":"59479:77:10"}]}},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":5608,"name":"reduceAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5578,"src":"59706:12:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5607,"name":"_reduceReservesFresh","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5702,"src":"59685:20:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":5609,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"59685:34:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5585,"id":5610,"nodeType":"Return","src":"59678:41:10"}]},"documentation":"@notice Accrues interest and reduces reserves by transferring to admin\n@param reduceAmount Amount of reduction to reserves\n@return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)","id":5612,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"argumentTypes":null,"hexValue":"66616c7365","id":5581,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"59222:5:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"id":5582,"modifierName":{"argumentTypes":null,"id":5580,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6105,"src":"59209:12:10","typeDescriptions":{"typeIdentifier":"t_modifier$_t_bool_$","typeString":"modifier (bool)"}},"nodeType":"ModifierInvocation","src":"59209:19:10"}],"name":"_reduceReserves","nodeType":"FunctionDefinition","parameters":{"id":5579,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5578,"name":"reduceAmount","nodeType":"VariableDeclaration","scope":5612,"src":"59181:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5577,"name":"uint","nodeType":"ElementaryTypeName","src":"59181:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"59180:19:10"},"returnParameters":{"id":5585,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5584,"name":"","nodeType":"VariableDeclaration","scope":5612,"src":"59238:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5583,"name":"uint","nodeType":"ElementaryTypeName","src":"59238:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"59237:6:10"},"scope":6186,"src":"59156:570:10","stateMutability":"nonpayable","superFunction":6548,"visibility":"external"},{"body":{"id":5701,"nodeType":"Block","src":"60068:1554:10","statements":[{"assignments":[5620],"declarations":[{"constant":false,"id":5620,"name":"totalReservesNew","nodeType":"VariableDeclaration","scope":5701,"src":"60118:21:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5619,"name":"uint","nodeType":"ElementaryTypeName","src":"60118:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":5621,"initialValue":null,"nodeType":"VariableDeclarationStatement","src":"60118:21:10"},{"condition":{"argumentTypes":null,"id":5624,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"60187:17:10","subExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":5622,"name":"hasAdminRights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2322,"src":"60188:14:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":5623,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"60188:16:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":5633,"nodeType":"IfStatement","src":"60183:120:10","trueBody":{"id":5632,"nodeType":"Block","src":"60206:97:10","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5626,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"60232:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":5627,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"UNAUTHORIZED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"60232:18:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5628,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13782,"src":"60252:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13782_$","typeString":"type(enum TokenErrorReporter.FailureInfo)"}},"id":5629,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"REDUCE_RESERVES_ADMIN_CHECK","nodeType":"MemberAccess","referencedDeclaration":null,"src":"60252:39:10","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}],"id":5625,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13814,"src":"60227:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13681_$_t_enum$_FailureInfo_$13782_$returns$_t_uint256_$","typeString":"function (enum TokenErrorReporter.Error,enum TokenErrorReporter.FailureInfo) returns (uint256)"}},"id":5630,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"60227:65:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5618,"id":5631,"nodeType":"Return","src":"60220:72:10"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":5634,"name":"accrualBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6236,"src":"60404:18:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":5635,"name":"getBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2912,"src":"60426:14:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":5636,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"60426:16:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"60404:38:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":5646,"nodeType":"IfStatement","src":"60400:145:10","trueBody":{"id":5645,"nodeType":"Block","src":"60444:101:10","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5639,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"60470:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":5640,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"MARKET_NOT_FRESH","nodeType":"MemberAccess","referencedDeclaration":null,"src":"60470:22:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5641,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13782,"src":"60494:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13782_$","typeString":"type(enum TokenErrorReporter.FailureInfo)"}},"id":5642,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"REDUCE_RESERVES_FRESH_CHECK","nodeType":"MemberAccess","referencedDeclaration":null,"src":"60494:39:10","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}],"id":5638,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13814,"src":"60465:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13681_$_t_enum$_FailureInfo_$13782_$returns$_t_uint256_$","typeString":"function (enum TokenErrorReporter.Error,enum TokenErrorReporter.FailureInfo) returns (uint256)"}},"id":5643,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"60465:69:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5618,"id":5644,"nodeType":"Return","src":"60458:76:10"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":5647,"name":"getCashPrior","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6075,"src":"60631:12:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":5648,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"60631:14:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"id":5649,"name":"reduceAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5614,"src":"60648:12:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"60631:29:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":5659,"nodeType":"IfStatement","src":"60627:150:10","trueBody":{"id":5658,"nodeType":"Block","src":"60662:115:10","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5652,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"60688:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":5653,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"TOKEN_INSUFFICIENT_CASH","nodeType":"MemberAccess","referencedDeclaration":null,"src":"60688:29:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5654,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13782,"src":"60719:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13782_$","typeString":"type(enum TokenErrorReporter.FailureInfo)"}},"id":5655,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"REDUCE_RESERVES_CASH_NOT_AVAILABLE","nodeType":"MemberAccess","referencedDeclaration":null,"src":"60719:46:10","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}],"id":5651,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13814,"src":"60683:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13681_$_t_enum$_FailureInfo_$13782_$returns$_t_uint256_$","typeString":"function (enum TokenErrorReporter.Error,enum TokenErrorReporter.FailureInfo) returns (uint256)"}},"id":5656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"60683:83:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5618,"id":5657,"nodeType":"Return","src":"60676:90:10"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5662,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":5660,"name":"reduceAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5614,"src":"60853:12:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"id":5661,"name":"totalReserves","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6242,"src":"60868:13:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"60853:28:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":5671,"nodeType":"IfStatement","src":"60849:127:10","trueBody":{"id":5670,"nodeType":"Block","src":"60883:93:10","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5664,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"60909:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":5665,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"BAD_INPUT","nodeType":"MemberAccess","referencedDeclaration":null,"src":"60909:15:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5666,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13782,"src":"60926:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13782_$","typeString":"type(enum TokenErrorReporter.FailureInfo)"}},"id":5667,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"REDUCE_RESERVES_VALIDATION","nodeType":"MemberAccess","referencedDeclaration":null,"src":"60926:38:10","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}],"id":5663,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13814,"src":"60904:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13681_$_t_enum$_FailureInfo_$13782_$returns$_t_uint256_$","typeString":"function (enum TokenErrorReporter.Error,enum TokenErrorReporter.FailureInfo) returns (uint256)"}},"id":5668,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"60904:61:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5618,"id":5669,"nodeType":"Return","src":"60897:68:10"}]}},{"expression":{"argumentTypes":null,"id":5677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":5672,"name":"totalReservesNew","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5620,"src":"61191:16:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":5674,"name":"totalReserves","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6242,"src":"61215:13:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":5675,"name":"reduceAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5614,"src":"61230:12:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5673,"name":"sub_","nodeType":"Identifier","overloadedDeclarations":[14660,14679,14695,14718],"referencedDeclaration":14695,"src":"61210:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":5676,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"61210:33:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"61191:52:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5678,"nodeType":"ExpressionStatement","src":"61191:52:10"},{"expression":{"argumentTypes":null,"id":5681,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":5679,"name":"totalReserves","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6242,"src":"61314:13:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":5680,"name":"totalReservesNew","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5620,"src":"61330:16:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"61314:32:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5682,"nodeType":"ExpressionStatement","src":"61314:32:10"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5684,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"61477:3:10","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":5685,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"61477:10:10","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"id":5686,"name":"reduceAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5614,"src":"61489:12:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5683,"name":"doTransferOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6091,"src":"61463:13:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$","typeString":"function (address payable,uint256)"}},"id":5687,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"61463:39:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5688,"nodeType":"ExpressionStatement","src":"61463:39:10"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5690,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"61534:3:10","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":5691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"61534:10:10","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"id":5692,"name":"reduceAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5614,"src":"61546:12:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":5693,"name":"totalReservesNew","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5620,"src":"61560:16:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5689,"name":"ReservesReduced","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6373,"src":"61518:15:10","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256)"}},"id":5694,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"61518:59:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5695,"nodeType":"EmitStatement","src":"61513:64:10"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5697,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"61600:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":5698,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"61600:14:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}],"id":5696,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"61595:4:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":5699,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"61595:20:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5618,"id":5700,"nodeType":"Return","src":"61588:27:10"}]},"documentation":"@notice Reduces reserves by transferring to admin\n@dev Requires fresh interest accrual\n@param reduceAmount Amount of reduction to reserves\n@return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)","id":5702,"implemented":true,"kind":"function","modifiers":[],"name":"_reduceReservesFresh","nodeType":"FunctionDefinition","parameters":{"id":5615,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5614,"name":"reduceAmount","nodeType":"VariableDeclaration","scope":5702,"src":"60025:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5613,"name":"uint","nodeType":"ElementaryTypeName","src":"60025:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"60024:19:10"},"returnParameters":{"id":5618,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5617,"name":"","nodeType":"VariableDeclaration","scope":5702,"src":"60062:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5616,"name":"uint","nodeType":"ElementaryTypeName","src":"60062:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"60061:6:10"},"scope":6186,"src":"59995:1627:10","stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},{"body":{"id":5737,"nodeType":"Block","src":"61957:495:10","statements":[{"assignments":[5713],"declarations":[{"constant":false,"id":5713,"name":"error","nodeType":"VariableDeclaration","scope":5737,"src":"61967:10:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5712,"name":"uint","nodeType":"ElementaryTypeName","src":"61967:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":5716,"initialValue":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":5714,"name":"accrueInterest","nodeType":"Identifier","overloadedDeclarations":[3327],"referencedDeclaration":3327,"src":"61980:14:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_uint256_$","typeString":"function () returns (uint256)"}},"id":5715,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"61980:16:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"61967:29:10"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":5717,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5713,"src":"62010:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5719,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"62024:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":5720,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"62024:14:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}],"id":5718,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"62019:4:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":5721,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"62019:20:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"62010:29:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":5732,"nodeType":"IfStatement","src":"62006:281:10","trueBody":{"id":5731,"nodeType":"Block","src":"62041:246:10","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":5725,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5713,"src":"62214:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5724,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"62208:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":5726,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"62208:12:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5727,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13782,"src":"62222:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13782_$","typeString":"type(enum TokenErrorReporter.FailureInfo)"}},"id":5728,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"WITHDRAW_FUSE_FEES_ACCRUE_INTEREST_FAILED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"62222:53:10","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}],"id":5723,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13814,"src":"62203:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13681_$_t_enum$_FailureInfo_$13782_$returns$_t_uint256_$","typeString":"function (enum TokenErrorReporter.Error,enum TokenErrorReporter.FailureInfo) returns (uint256)"}},"id":5729,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"62203:73:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5711,"id":5730,"nodeType":"Return","src":"62196:80:10"}]}},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":5734,"name":"withdrawAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5704,"src":"62430:14:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5733,"name":"_withdrawFuseFeesFresh","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5810,"src":"62407:22:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":5735,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"62407:38:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5711,"id":5736,"nodeType":"Return","src":"62400:45:10"}]},"documentation":"@notice Accrues interest and reduces Fuse fees by transferring to Fuse\n@param withdrawAmount Amount of fees to withdraw\n@return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)","id":5738,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"argumentTypes":null,"hexValue":"66616c7365","id":5707,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"61935:5:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"id":5708,"modifierName":{"argumentTypes":null,"id":5706,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6105,"src":"61922:12:10","typeDescriptions":{"typeIdentifier":"t_modifier$_t_bool_$","typeString":"modifier (bool)"}},"nodeType":"ModifierInvocation","src":"61922:19:10"}],"name":"_withdrawFuseFees","nodeType":"FunctionDefinition","parameters":{"id":5705,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5704,"name":"withdrawAmount","nodeType":"VariableDeclaration","scope":5738,"src":"61892:19:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5703,"name":"uint","nodeType":"ElementaryTypeName","src":"61892:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"61891:21:10"},"returnParameters":{"id":5711,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5710,"name":"","nodeType":"VariableDeclaration","scope":5738,"src":"61951:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5709,"name":"uint","nodeType":"ElementaryTypeName","src":"61951:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"61950:6:10"},"scope":6186,"src":"61865:587:10","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":{"id":5809,"nodeType":"Block","src":"62795:1347:10","statements":[{"assignments":[5746],"declarations":[{"constant":false,"id":5746,"name":"totalFuseFeesNew","nodeType":"VariableDeclaration","scope":5809,"src":"62845:21:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5745,"name":"uint","nodeType":"ElementaryTypeName","src":"62845:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":5747,"initialValue":null,"nodeType":"VariableDeclarationStatement","src":"62845:21:10"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5751,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":5748,"name":"accrualBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6236,"src":"62968:18:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":5749,"name":"getBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2912,"src":"62990:14:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":5750,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"62990:16:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"62968:38:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":5760,"nodeType":"IfStatement","src":"62964:148:10","trueBody":{"id":5759,"nodeType":"Block","src":"63008:104:10","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5753,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"63034:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":5754,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"MARKET_NOT_FRESH","nodeType":"MemberAccess","referencedDeclaration":null,"src":"63034:22:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5755,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13782,"src":"63058:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13782_$","typeString":"type(enum TokenErrorReporter.FailureInfo)"}},"id":5756,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"WITHDRAW_FUSE_FEES_FRESH_CHECK","nodeType":"MemberAccess","referencedDeclaration":null,"src":"63058:42:10","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}],"id":5752,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13814,"src":"63029:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13681_$_t_enum$_FailureInfo_$13782_$returns$_t_uint256_$","typeString":"function (enum TokenErrorReporter.Error,enum TokenErrorReporter.FailureInfo) returns (uint256)"}},"id":5757,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"63029:72:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5744,"id":5758,"nodeType":"Return","src":"63022:79:10"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5764,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":5761,"name":"getCashPrior","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6075,"src":"63198:12:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":5762,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"63198:14:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"id":5763,"name":"withdrawAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5740,"src":"63215:14:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"63198:31:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":5773,"nodeType":"IfStatement","src":"63194:155:10","trueBody":{"id":5772,"nodeType":"Block","src":"63231:118:10","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5766,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"63257:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":5767,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"TOKEN_INSUFFICIENT_CASH","nodeType":"MemberAccess","referencedDeclaration":null,"src":"63257:29:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5768,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13782,"src":"63288:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13782_$","typeString":"type(enum TokenErrorReporter.FailureInfo)"}},"id":5769,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"WITHDRAW_FUSE_FEES_CASH_NOT_AVAILABLE","nodeType":"MemberAccess","referencedDeclaration":null,"src":"63288:49:10","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}],"id":5765,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13814,"src":"63252:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13681_$_t_enum$_FailureInfo_$13782_$returns$_t_uint256_$","typeString":"function (enum TokenErrorReporter.Error,enum TokenErrorReporter.FailureInfo) returns (uint256)"}},"id":5770,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"63252:86:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5744,"id":5771,"nodeType":"Return","src":"63245:93:10"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5776,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":5774,"name":"withdrawAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5740,"src":"63427:14:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"id":5775,"name":"totalFuseFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6246,"src":"63444:13:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"63427:30:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":5785,"nodeType":"IfStatement","src":"63423:132:10","trueBody":{"id":5784,"nodeType":"Block","src":"63459:96:10","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5778,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"63485:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":5779,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"BAD_INPUT","nodeType":"MemberAccess","referencedDeclaration":null,"src":"63485:15:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5780,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13782,"src":"63502:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13782_$","typeString":"type(enum TokenErrorReporter.FailureInfo)"}},"id":5781,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"WITHDRAW_FUSE_FEES_VALIDATION","nodeType":"MemberAccess","referencedDeclaration":null,"src":"63502:41:10","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}],"id":5777,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13814,"src":"63480:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13681_$_t_enum$_FailureInfo_$13782_$returns$_t_uint256_$","typeString":"function (enum TokenErrorReporter.Error,enum TokenErrorReporter.FailureInfo) returns (uint256)"}},"id":5782,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"63480:64:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5744,"id":5783,"nodeType":"Return","src":"63473:71:10"}]}},{"expression":{"argumentTypes":null,"id":5791,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":5786,"name":"totalFuseFeesNew","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5746,"src":"63772:16:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":5788,"name":"totalFuseFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6246,"src":"63796:13:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":5789,"name":"withdrawAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5740,"src":"63811:14:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5787,"name":"sub_","nodeType":"Identifier","overloadedDeclarations":[14660,14679,14695,14718],"referencedDeclaration":14695,"src":"63791:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":5790,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"63791:35:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"63772:54:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5792,"nodeType":"ExpressionStatement","src":"63772:54:10"},{"expression":{"argumentTypes":null,"id":5795,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":5793,"name":"totalFuseFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6246,"src":"63899:13:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":5794,"name":"totalFuseFeesNew","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5746,"src":"63915:16:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"63899:32:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5796,"nodeType":"ExpressionStatement","src":"63899:32:10"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":5799,"name":"fuseAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6197,"src":"64070:9:10","typeDescriptions":{"typeIdentifier":"t_contract$_IFuseFeeDistributor_$17368","typeString":"contract IFuseFeeDistributor"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IFuseFeeDistributor_$17368","typeString":"contract IFuseFeeDistributor"}],"id":5798,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"64062:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":5800,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"64062:18:10","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"id":5801,"name":"withdrawAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5740,"src":"64082:14:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5797,"name":"doTransferOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6091,"src":"64048:13:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$","typeString":"function (address payable,uint256)"}},"id":5802,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"64048:49:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5803,"nodeType":"ExpressionStatement","src":"64048:49:10"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5805,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"64120:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":5806,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"64120:14:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}],"id":5804,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"64115:4:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":5807,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"64115:20:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5744,"id":5808,"nodeType":"Return","src":"64108:27:10"}]},"documentation":"@notice Reduces Fuse fees by transferring to Fuse\n@dev Requires fresh interest accrual\n@param withdrawAmount Amount of fees to withdraw\n@return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)","id":5810,"implemented":true,"kind":"function","modifiers":[],"name":"_withdrawFuseFeesFresh","nodeType":"FunctionDefinition","parameters":{"id":5741,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5740,"name":"withdrawAmount","nodeType":"VariableDeclaration","scope":5810,"src":"62750:19:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5739,"name":"uint","nodeType":"ElementaryTypeName","src":"62750:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"62749:21:10"},"returnParameters":{"id":5744,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5743,"name":"","nodeType":"VariableDeclaration","scope":5810,"src":"62789:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5742,"name":"uint","nodeType":"ElementaryTypeName","src":"62789:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"62788:6:10"},"scope":6186,"src":"62718:1424:10","stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},{"body":{"id":5845,"nodeType":"Block","src":"64480:499:10","statements":[{"assignments":[5821],"declarations":[{"constant":false,"id":5821,"name":"error","nodeType":"VariableDeclaration","scope":5845,"src":"64490:10:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5820,"name":"uint","nodeType":"ElementaryTypeName","src":"64490:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":5824,"initialValue":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":5822,"name":"accrueInterest","nodeType":"Identifier","overloadedDeclarations":[3327],"referencedDeclaration":3327,"src":"64503:14:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_uint256_$","typeString":"function () returns (uint256)"}},"id":5823,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"64503:16:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"64490:29:10"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":5825,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5821,"src":"64533:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5827,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"64547:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":5828,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"64547:14:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}],"id":5826,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"64542:4:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":5829,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"64542:20:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"64533:29:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":5840,"nodeType":"IfStatement","src":"64529:283:10","trueBody":{"id":5839,"nodeType":"Block","src":"64564:248:10","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":5833,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5821,"src":"64738:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5832,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"64732:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":5834,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"64732:12:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5835,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13782,"src":"64746:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13782_$","typeString":"type(enum TokenErrorReporter.FailureInfo)"}},"id":5836,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"WITHDRAW_ADMIN_FEES_ACCRUE_INTEREST_FAILED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"64746:54:10","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}],"id":5831,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13814,"src":"64727:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13681_$_t_enum$_FailureInfo_$13782_$returns$_t_uint256_$","typeString":"function (enum TokenErrorReporter.Error,enum TokenErrorReporter.FailureInfo) returns (uint256)"}},"id":5837,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"64727:74:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5819,"id":5838,"nodeType":"Return","src":"64720:81:10"}]}},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":5842,"name":"withdrawAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5812,"src":"64957:14:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5841,"name":"_withdrawAdminFeesFresh","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5926,"src":"64933:23:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":5843,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"64933:39:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5819,"id":5844,"nodeType":"Return","src":"64926:46:10"}]},"documentation":"@notice Accrues interest and reduces admin fees by transferring to admin\n@param withdrawAmount Amount of fees to withdraw\n@return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)","id":5846,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"argumentTypes":null,"hexValue":"66616c7365","id":5815,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"64458:5:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"id":5816,"modifierName":{"argumentTypes":null,"id":5814,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6105,"src":"64445:12:10","typeDescriptions":{"typeIdentifier":"t_modifier$_t_bool_$","typeString":"modifier (bool)"}},"nodeType":"ModifierInvocation","src":"64445:19:10"}],"name":"_withdrawAdminFees","nodeType":"FunctionDefinition","parameters":{"id":5813,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5812,"name":"withdrawAmount","nodeType":"VariableDeclaration","scope":5846,"src":"64415:19:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5811,"name":"uint","nodeType":"ElementaryTypeName","src":"64415:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"64414:21:10"},"returnParameters":{"id":5819,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5818,"name":"","nodeType":"VariableDeclaration","scope":5846,"src":"64474:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5817,"name":"uint","nodeType":"ElementaryTypeName","src":"64474:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"64473:6:10"},"scope":6186,"src":"64387:592:10","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":{"id":5925,"nodeType":"Block","src":"65325:1414:10","statements":[{"assignments":[5854],"declarations":[{"constant":false,"id":5854,"name":"totalAdminFeesNew","nodeType":"VariableDeclaration","scope":5925,"src":"65376:22:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5853,"name":"uint","nodeType":"ElementaryTypeName","src":"65376:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":5855,"initialValue":null,"nodeType":"VariableDeclarationStatement","src":"65376:22:10"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5859,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":5856,"name":"accrualBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6236,"src":"65500:18:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":5857,"name":"getBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2912,"src":"65522:14:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":5858,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"65522:16:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"65500:38:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":5868,"nodeType":"IfStatement","src":"65496:149:10","trueBody":{"id":5867,"nodeType":"Block","src":"65540:105:10","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5861,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"65566:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":5862,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"MARKET_NOT_FRESH","nodeType":"MemberAccess","referencedDeclaration":null,"src":"65566:22:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5863,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13782,"src":"65590:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13782_$","typeString":"type(enum TokenErrorReporter.FailureInfo)"}},"id":5864,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"WITHDRAW_ADMIN_FEES_FRESH_CHECK","nodeType":"MemberAccess","referencedDeclaration":null,"src":"65590:43:10","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}],"id":5860,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13814,"src":"65561:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13681_$_t_enum$_FailureInfo_$13782_$returns$_t_uint256_$","typeString":"function (enum TokenErrorReporter.Error,enum TokenErrorReporter.FailureInfo) returns (uint256)"}},"id":5865,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"65561:73:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5852,"id":5866,"nodeType":"Return","src":"65554:80:10"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5872,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":5869,"name":"getCashPrior","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6075,"src":"65731:12:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":5870,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"65731:14:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"id":5871,"name":"withdrawAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5848,"src":"65748:14:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"65731:31:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":5881,"nodeType":"IfStatement","src":"65727:156:10","trueBody":{"id":5880,"nodeType":"Block","src":"65764:119:10","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5874,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"65790:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":5875,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"TOKEN_INSUFFICIENT_CASH","nodeType":"MemberAccess","referencedDeclaration":null,"src":"65790:29:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5876,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13782,"src":"65821:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13782_$","typeString":"type(enum TokenErrorReporter.FailureInfo)"}},"id":5877,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"WITHDRAW_ADMIN_FEES_CASH_NOT_AVAILABLE","nodeType":"MemberAccess","referencedDeclaration":null,"src":"65821:50:10","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}],"id":5873,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13814,"src":"65785:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13681_$_t_enum$_FailureInfo_$13782_$returns$_t_uint256_$","typeString":"function (enum TokenErrorReporter.Error,enum TokenErrorReporter.FailureInfo) returns (uint256)"}},"id":5878,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"65785:87:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5852,"id":5879,"nodeType":"Return","src":"65778:94:10"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5884,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":5882,"name":"withdrawAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5848,"src":"65963:14:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"id":5883,"name":"totalAdminFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6244,"src":"65980:14:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"65963:31:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":5893,"nodeType":"IfStatement","src":"65959:134:10","trueBody":{"id":5892,"nodeType":"Block","src":"65996:97:10","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5886,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"66022:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":5887,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"BAD_INPUT","nodeType":"MemberAccess","referencedDeclaration":null,"src":"66022:15:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5888,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13782,"src":"66039:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13782_$","typeString":"type(enum TokenErrorReporter.FailureInfo)"}},"id":5889,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"WITHDRAW_ADMIN_FEES_VALIDATION","nodeType":"MemberAccess","referencedDeclaration":null,"src":"66039:42:10","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}],"id":5885,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13814,"src":"66017:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13681_$_t_enum$_FailureInfo_$13782_$returns$_t_uint256_$","typeString":"function (enum TokenErrorReporter.Error,enum TokenErrorReporter.FailureInfo) returns (uint256)"}},"id":5890,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"66017:65:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5852,"id":5891,"nodeType":"Return","src":"66010:72:10"}]}},{"expression":{"argumentTypes":null,"id":5899,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":5894,"name":"totalAdminFeesNew","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5854,"src":"66311:17:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":5896,"name":"totalAdminFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6244,"src":"66336:14:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":5897,"name":"withdrawAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5848,"src":"66352:14:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5895,"name":"sub_","nodeType":"Identifier","overloadedDeclarations":[14660,14679,14695,14718],"referencedDeclaration":14695,"src":"66331:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":5898,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"66331:36:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"66311:56:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5900,"nodeType":"ExpressionStatement","src":"66311:56:10"},{"expression":{"argumentTypes":null,"id":5903,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":5901,"name":"totalAdminFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6244,"src":"66442:14:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":5902,"name":"totalAdminFeesNew","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5854,"src":"66459:17:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"66442:34:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5904,"nodeType":"ExpressionStatement","src":"66442:34:10"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":5910,"name":"comptroller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6224,"src":"66654:11:10","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerInterface_$12980","typeString":"contract ComptrollerInterface"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ComptrollerInterface_$12980","typeString":"contract ComptrollerInterface"}],"id":5909,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"66646:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":5911,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"66646:20:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5908,"name":"UnitrollerAdminStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13029,"src":"66623:22:10","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_UnitrollerAdminStorage_$13029_$","typeString":"type(contract UnitrollerAdminStorage)"}},"id":5912,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"66623:44:10","typeDescriptions":{"typeIdentifier":"t_contract$_UnitrollerAdminStorage_$13029","typeString":"contract UnitrollerAdminStorage"}},"id":5913,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"admin","nodeType":"MemberAccess","referencedDeclaration":12992,"src":"66623:50:10","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":5914,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"66623:52:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5907,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"66615:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":"uint160"},"id":5915,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"66615:61:10","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":5906,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"66607:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":5916,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"66607:70:10","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"id":5917,"name":"withdrawAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5848,"src":"66679:14:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5905,"name":"doTransferOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6091,"src":"66593:13:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$","typeString":"function (address payable,uint256)"}},"id":5918,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"66593:101:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5919,"nodeType":"ExpressionStatement","src":"66593:101:10"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5921,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"66717:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":5922,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"66717:14:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}],"id":5920,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"66712:4:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":5923,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"66712:20:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5852,"id":5924,"nodeType":"Return","src":"66705:27:10"}]},"documentation":"@notice Reduces admin fees by transferring to admin\n@dev Requires fresh interest accrual\n@param withdrawAmount Amount of fees to withdraw\n@return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)","id":5926,"implemented":true,"kind":"function","modifiers":[],"name":"_withdrawAdminFeesFresh","nodeType":"FunctionDefinition","parameters":{"id":5849,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5848,"name":"withdrawAmount","nodeType":"VariableDeclaration","scope":5926,"src":"65280:19:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5847,"name":"uint","nodeType":"ElementaryTypeName","src":"65280:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"65279:21:10"},"returnParameters":{"id":5852,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5851,"name":"","nodeType":"VariableDeclaration","scope":5926,"src":"65319:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5850,"name":"uint","nodeType":"ElementaryTypeName","src":"65319:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"65318:6:10"},"scope":6186,"src":"65247:1492:10","stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},{"body":{"id":5958,"nodeType":"Block","src":"67193:532:10","statements":[{"assignments":[5934],"declarations":[{"constant":false,"id":5934,"name":"error","nodeType":"VariableDeclaration","scope":5958,"src":"67203:10:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5933,"name":"uint","nodeType":"ElementaryTypeName","src":"67203:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":5937,"initialValue":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":5935,"name":"accrueInterest","nodeType":"Identifier","overloadedDeclarations":[3327],"referencedDeclaration":3327,"src":"67216:14:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_uint256_$","typeString":"function () returns (uint256)"}},"id":5936,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"67216:16:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"67203:29:10"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5943,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":5938,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5934,"src":"67246:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5940,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"67260:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":5941,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"67260:14:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}],"id":5939,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"67255:4:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":5942,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"67255:20:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"67246:29:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":5953,"nodeType":"IfStatement","src":"67242:295:10","trueBody":{"id":5952,"nodeType":"Block","src":"67277:260:10","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":5946,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5934,"src":"67459:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5945,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"67453:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":5947,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"67453:12:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5948,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13782,"src":"67467:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13782_$","typeString":"type(enum TokenErrorReporter.FailureInfo)"}},"id":5949,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"SET_INTEREST_RATE_MODEL_ACCRUE_INTEREST_FAILED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"67467:58:10","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}],"id":5944,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13814,"src":"67448:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13681_$_t_enum$_FailureInfo_$13782_$returns$_t_uint256_$","typeString":"function (enum TokenErrorReporter.Error,enum TokenErrorReporter.FailureInfo) returns (uint256)"}},"id":5950,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"67448:78:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5932,"id":5951,"nodeType":"Return","src":"67441:85:10"}]}},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":5955,"name":"newInterestRateModel","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5928,"src":"67697:20:10","typeDescriptions":{"typeIdentifier":"t_contract$_InterestRateModel_$17398","typeString":"contract InterestRateModel"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_InterestRateModel_$17398","typeString":"contract InterestRateModel"}],"id":5954,"name":"_setInterestRateModelFresh","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6048,"src":"67670:26:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_InterestRateModel_$17398_$returns$_t_uint256_$","typeString":"function (contract InterestRateModel) returns (uint256)"}},"id":5956,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"67670:48:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5932,"id":5957,"nodeType":"Return","src":"67663:55:10"}]},"documentation":"@notice accrues interest and updates the interest rate model using _setInterestRateModelFresh\n@dev Admin function to accrue interest and update the interest rate model\n@param newInterestRateModel the new interest rate model to use\n@return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)","id":5959,"implemented":true,"kind":"function","modifiers":[],"name":"_setInterestRateModel","nodeType":"FunctionDefinition","parameters":{"id":5929,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5928,"name":"newInterestRateModel","nodeType":"VariableDeclaration","scope":5959,"src":"67131:38:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_InterestRateModel_$17398","typeString":"contract InterestRateModel"},"typeName":{"contractScope":null,"id":5927,"name":"InterestRateModel","nodeType":"UserDefinedTypeName","referencedDeclaration":17398,"src":"67131:17:10","typeDescriptions":{"typeIdentifier":"t_contract$_InterestRateModel_$17398","typeString":"contract InterestRateModel"}},"value":null,"visibility":"internal"}],"src":"67130:40:10"},"returnParameters":{"id":5932,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5931,"name":"","nodeType":"VariableDeclaration","scope":5959,"src":"67187:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5930,"name":"uint","nodeType":"ElementaryTypeName","src":"67187:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"67186:6:10"},"scope":6186,"src":"67100:625:10","stateMutability":"nonpayable","superFunction":6555,"visibility":"public"},{"body":{"id":6047,"nodeType":"Block","src":"68147:1534:10","statements":[{"assignments":[5967],"declarations":[{"constant":false,"id":5967,"name":"oldInterestRateModel","nodeType":"VariableDeclaration","scope":6047,"src":"68240:38:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_InterestRateModel_$17398","typeString":"contract InterestRateModel"},"typeName":{"contractScope":null,"id":5966,"name":"InterestRateModel","nodeType":"UserDefinedTypeName","referencedDeclaration":17398,"src":"68240:17:10","typeDescriptions":{"typeIdentifier":"t_contract$_InterestRateModel_$17398","typeString":"contract InterestRateModel"}},"value":null,"visibility":"internal"}],"id":5968,"initialValue":null,"nodeType":"VariableDeclarationStatement","src":"68240:38:10"},{"condition":{"argumentTypes":null,"id":5971,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"68326:17:10","subExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":5969,"name":"hasAdminRights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2322,"src":"68327:14:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":5970,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"68327:16:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":5980,"nodeType":"IfStatement","src":"68322:128:10","trueBody":{"id":5979,"nodeType":"Block","src":"68345:105:10","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5973,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"68371:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":5974,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"UNAUTHORIZED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"68371:18:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5975,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13782,"src":"68391:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13782_$","typeString":"type(enum TokenErrorReporter.FailureInfo)"}},"id":5976,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"SET_INTEREST_RATE_MODEL_OWNER_CHECK","nodeType":"MemberAccess","referencedDeclaration":null,"src":"68391:47:10","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}],"id":5972,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13814,"src":"68366:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13681_$_t_enum$_FailureInfo_$13782_$returns$_t_uint256_$","typeString":"function (enum TokenErrorReporter.Error,enum TokenErrorReporter.FailureInfo) returns (uint256)"}},"id":5977,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"68366:73:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5965,"id":5978,"nodeType":"Return","src":"68359:80:10"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5984,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":5981,"name":"accrualBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6236,"src":"68551:18:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":5982,"name":"getBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2912,"src":"68573:14:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":5983,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"68573:16:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"68551:38:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":5993,"nodeType":"IfStatement","src":"68547:153:10","trueBody":{"id":5992,"nodeType":"Block","src":"68591:109:10","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5986,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"68617:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":5987,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"MARKET_NOT_FRESH","nodeType":"MemberAccess","referencedDeclaration":null,"src":"68617:22:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5988,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13782,"src":"68641:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13782_$","typeString":"type(enum TokenErrorReporter.FailureInfo)"}},"id":5989,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"SET_INTEREST_RATE_MODEL_FRESH_CHECK","nodeType":"MemberAccess","referencedDeclaration":null,"src":"68641:47:10","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}],"id":5985,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13814,"src":"68612:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13681_$_t_enum$_FailureInfo_$13782_$returns$_t_uint256_$","typeString":"function (enum TokenErrorReporter.Error,enum TokenErrorReporter.FailureInfo) returns (uint256)"}},"id":5990,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"68612:77:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5965,"id":5991,"nodeType":"Return","src":"68605:84:10"}]}},{"expression":{"argumentTypes":null,"id":5996,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":5994,"name":"oldInterestRateModel","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5967,"src":"68768:20:10","typeDescriptions":{"typeIdentifier":"t_contract$_InterestRateModel_$17398","typeString":"contract InterestRateModel"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":5995,"name":"interestRateModel","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6226,"src":"68791:17:10","typeDescriptions":{"typeIdentifier":"t_contract$_InterestRateModel_$17398","typeString":"contract InterestRateModel"}},"src":"68768:40:10","typeDescriptions":{"typeIdentifier":"t_contract$_InterestRateModel_$17398","typeString":"contract InterestRateModel"}},"id":5997,"nodeType":"ExpressionStatement","src":"68768:40:10"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":5999,"name":"newInterestRateModel","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5961,"src":"68908:20:10","typeDescriptions":{"typeIdentifier":"t_contract$_InterestRateModel_$17398","typeString":"contract InterestRateModel"}},"id":6000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"isInterestRateModel","nodeType":"MemberAccess","referencedDeclaration":17373,"src":"68908:40:10","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bool_$","typeString":"function () view external returns (bool)"}},"id":6001,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"68908:42:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"6d61726b6572206d6574686f642072657475726e65642066616c7365","id":6002,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"68952:30:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_73c0b9b9fc59551809f9e3f686bb994cac13db80a83fd9ccdfe6d53da80fe637","typeString":"literal_string \"marker method returned false\""},"value":"marker method returned false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_73c0b9b9fc59551809f9e3f686bb994cac13db80a83fd9ccdfe6d53da80fe637","typeString":"literal_string \"marker method returned false\""}],"id":5998,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"68900:7:10","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6003,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"68900:83:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6004,"nodeType":"ExpressionStatement","src":"68900:83:10"},{"expression":{"argumentTypes":null,"id":6007,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":6005,"name":"interestRateModel","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6226,"src":"69057:17:10","typeDescriptions":{"typeIdentifier":"t_contract$_InterestRateModel_$17398","typeString":"contract InterestRateModel"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":6006,"name":"newInterestRateModel","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5961,"src":"69077:20:10","typeDescriptions":{"typeIdentifier":"t_contract$_InterestRateModel_$17398","typeString":"contract InterestRateModel"}},"src":"69057:40:10","typeDescriptions":{"typeIdentifier":"t_contract$_InterestRateModel_$17398","typeString":"contract InterestRateModel"}},"id":6008,"nodeType":"ExpressionStatement","src":"69057:40:10"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":6010,"name":"oldInterestRateModel","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5967,"src":"69227:20:10","typeDescriptions":{"typeIdentifier":"t_contract$_InterestRateModel_$17398","typeString":"contract InterestRateModel"}},{"argumentTypes":null,"id":6011,"name":"newInterestRateModel","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5961,"src":"69249:20:10","typeDescriptions":{"typeIdentifier":"t_contract$_InterestRateModel_$17398","typeString":"contract InterestRateModel"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_InterestRateModel_$17398","typeString":"contract InterestRateModel"},{"typeIdentifier":"t_contract$_InterestRateModel_$17398","typeString":"contract InterestRateModel"}],"id":6009,"name":"NewMarketInterestRateModel","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6351,"src":"69200:26:10","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_contract$_InterestRateModel_$17398_$_t_contract$_InterestRateModel_$17398_$returns$__$","typeString":"function (contract InterestRateModel,contract InterestRateModel)"}},"id":6012,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"69200:70:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6013,"nodeType":"EmitStatement","src":"69195:75:10"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6020,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":6015,"name":"oldInterestRateModel","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5967,"src":"69353:20:10","typeDescriptions":{"typeIdentifier":"t_contract$_InterestRateModel_$17398","typeString":"contract InterestRateModel"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_InterestRateModel_$17398","typeString":"contract InterestRateModel"}],"id":6014,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"69345:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":6016,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"69345:29:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":6018,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"69386:1:10","subdenomination":null,"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":6017,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"69378:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":6019,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"69378:10:10","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"69345:43:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":6031,"nodeType":"IfStatement","src":"69341:138:10","trueBody":{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"7265736574496e746572657374436865636b706f696e74732829","id":6027,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"69449:28:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_d9822816ac2a1feef9a60f26167962255cc69c3485abea968bc746797be9273e","typeString":"literal_string \"resetInterestCheckpoints()\""},"value":"resetInterestCheckpoints()"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_d9822816ac2a1feef9a60f26167962255cc69c3485abea968bc746797be9273e","typeString":"literal_string \"resetInterestCheckpoints()\""}],"expression":{"argumentTypes":null,"id":6025,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22537,"src":"69425:3:10","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":6026,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSignature","nodeType":"MemberAccess","referencedDeclaration":null,"src":"69425:23:10","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (string memory) pure returns (bytes memory)"}},"id":6028,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"69425:53:10","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":6022,"name":"oldInterestRateModel","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5967,"src":"69398:20:10","typeDescriptions":{"typeIdentifier":"t_contract$_InterestRateModel_$17398","typeString":"contract InterestRateModel"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_InterestRateModel_$17398","typeString":"contract InterestRateModel"}],"id":6021,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"69390:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":6023,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"69390:29:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":6024,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","referencedDeclaration":null,"src":"69390:34:10","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":6029,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"69390:89:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"id":6030,"nodeType":"ExpressionStatement","src":"69390:89:10"}},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"636865636b706f696e74496e7465726573742829","id":6038,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"69612:22:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_e85426f6d17ebb5c19a58431b1a89b07d8f32be96c86b6caf3a5ab69e5839bda","typeString":"literal_string \"checkpointInterest()\""},"value":"checkpointInterest()"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_e85426f6d17ebb5c19a58431b1a89b07d8f32be96c86b6caf3a5ab69e5839bda","typeString":"literal_string \"checkpointInterest()\""}],"expression":{"argumentTypes":null,"id":6036,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22537,"src":"69588:3:10","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":6037,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSignature","nodeType":"MemberAccess","referencedDeclaration":null,"src":"69588:23:10","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (string memory) pure returns (bytes memory)"}},"id":6039,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"69588:47:10","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":6033,"name":"newInterestRateModel","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5961,"src":"69561:20:10","typeDescriptions":{"typeIdentifier":"t_contract$_InterestRateModel_$17398","typeString":"contract InterestRateModel"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_InterestRateModel_$17398","typeString":"contract InterestRateModel"}],"id":6032,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"69553:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":6034,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"69553:29:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":6035,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","referencedDeclaration":null,"src":"69553:34:10","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":6040,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"69553:83:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"id":6041,"nodeType":"ExpressionStatement","src":"69553:83:10"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":6043,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"69659:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":6044,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"69659:14:10","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}],"id":6042,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"69654:4:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":6045,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"69654:20:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5965,"id":6046,"nodeType":"Return","src":"69647:27:10"}]},"documentation":"@notice updates the interest rate model (*requires fresh interest accrual)\n@dev Admin function to update the interest rate model\n@param newInterestRateModel the new interest rate model to use\n@return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)","id":6048,"implemented":true,"kind":"function","modifiers":[],"name":"_setInterestRateModelFresh","nodeType":"FunctionDefinition","parameters":{"id":5962,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5961,"name":"newInterestRateModel","nodeType":"VariableDeclaration","scope":6048,"src":"68083:38:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_InterestRateModel_$17398","typeString":"contract InterestRateModel"},"typeName":{"contractScope":null,"id":5960,"name":"InterestRateModel","nodeType":"UserDefinedTypeName","referencedDeclaration":17398,"src":"68083:17:10","typeDescriptions":{"typeIdentifier":"t_contract$_InterestRateModel_$17398","typeString":"contract InterestRateModel"}},"value":null,"visibility":"internal"}],"src":"68082:40:10"},"returnParameters":{"id":5965,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5964,"name":"","nodeType":"VariableDeclaration","scope":6048,"src":"68141:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5963,"name":"uint","nodeType":"ElementaryTypeName","src":"68141:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"68140:6:10"},"scope":6186,"src":"68047:1634:10","stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},{"body":{"id":6069,"nodeType":"Block","src":"70108:181:10","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":6056,"name":"hasAdminRights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2322,"src":"70159:14:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":6057,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"70159:16:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"63616c6c6572206e6f742061646d696e","id":6058,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"70177:18:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_87b5d78e4b80914aec0898f685f7f33e710114270f4a5f0984656bac0ec1817e","typeString":"literal_string \"caller not admin\""},"value":"caller not admin"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_87b5d78e4b80914aec0898f685f7f33e710114270f4a5f0984656bac0ec1817e","typeString":"literal_string \"caller not admin\""}],"id":6055,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"70151:7:10","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6059,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"70151:45:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6060,"nodeType":"ExpressionStatement","src":"70151:45:10"},{"expression":{"argumentTypes":null,"id":6063,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":6061,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6210,"src":"70244:4:10","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":6062,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6050,"src":"70251:5:10","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}},"src":"70244:12:10","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":6064,"nodeType":"ExpressionStatement","src":"70244:12:10"},{"expression":{"argumentTypes":null,"id":6067,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":6065,"name":"symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6212,"src":"70266:6:10","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":6066,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6052,"src":"70275:7:10","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}},"src":"70266:16:10","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":6068,"nodeType":"ExpressionStatement","src":"70266:16:10"}]},"documentation":"@notice updates the cToken ERC20 name and symbol\n@dev Admin function to update the cToken ERC20 name and symbol\n@param _name the new ERC20 token name to use\n@param _symbol the new ERC20 token symbol to use\n@return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)","id":6070,"implemented":true,"kind":"function","modifiers":[],"name":"_setNameAndSymbol","nodeType":"FunctionDefinition","parameters":{"id":6053,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6050,"name":"_name","nodeType":"VariableDeclaration","scope":6070,"src":"70051:21:10","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":6049,"name":"string","nodeType":"ElementaryTypeName","src":"70051:6:10","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":null,"visibility":"internal"},{"constant":false,"id":6052,"name":"_symbol","nodeType":"VariableDeclaration","scope":6070,"src":"70074:23:10","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":6051,"name":"string","nodeType":"ElementaryTypeName","src":"70074:6:10","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":null,"visibility":"internal"}],"src":"70050:48:10"},"returnParameters":{"id":6054,"nodeType":"ParameterList","parameters":[],"src":"70108:0:10"},"scope":6186,"src":"70024:265:10","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":null,"documentation":"@notice Gets balance of this contract in terms of the underlying\n@dev This excludes the value of the current message, if any\n@return The quantity of underlying owned by this contract","id":6075,"implemented":false,"kind":"function","modifiers":[],"name":"getCashPrior","nodeType":"FunctionDefinition","parameters":{"id":6071,"nodeType":"ParameterList","parameters":[],"src":"70562:2:10"},"returnParameters":{"id":6074,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6073,"name":"","nodeType":"VariableDeclaration","scope":6075,"src":"70588:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6072,"name":"uint","nodeType":"ElementaryTypeName","src":"70588:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"70587:6:10"},"scope":6186,"src":"70541:53:10","stateMutability":"view","superFunction":null,"visibility":"internal"},{"body":null,"documentation":"@dev Performs a transfer in, reverting upon failure. Returns the amount actually transferred to the protocol, in case of a fee.\n This may revert due to insufficient balance or insufficient allowance.","id":6084,"implemented":false,"kind":"function","modifiers":[],"name":"doTransferIn","nodeType":"FunctionDefinition","parameters":{"id":6080,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6077,"name":"from","nodeType":"VariableDeclaration","scope":6084,"src":"70852:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6076,"name":"address","nodeType":"ElementaryTypeName","src":"70852:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":6079,"name":"amount","nodeType":"VariableDeclaration","scope":6084,"src":"70866:11:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6078,"name":"uint","nodeType":"ElementaryTypeName","src":"70866:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"70851:27:10"},"returnParameters":{"id":6083,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6082,"name":"","nodeType":"VariableDeclaration","scope":6084,"src":"70897:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6081,"name":"uint","nodeType":"ElementaryTypeName","src":"70897:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"70896:6:10"},"scope":6186,"src":"70830:73:10","stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},{"body":null,"documentation":"@dev Performs a transfer out, ideally returning an explanatory error code upon failure tather than reverting.\n If caller has not called checked protocol's balance, may revert due to insufficient cash held in the contract.\n If caller has checked protocol's balance, and verified it is >= amount, this should not revert in normal conditions.","id":6091,"implemented":false,"kind":"function","modifiers":[],"name":"doTransferOut","nodeType":"FunctionDefinition","parameters":{"id":6089,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6086,"name":"to","nodeType":"VariableDeclaration","scope":6091,"src":"71309:18:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":6085,"name":"address","nodeType":"ElementaryTypeName","src":"71309:15:10","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"value":null,"visibility":"internal"},{"constant":false,"id":6088,"name":"amount","nodeType":"VariableDeclaration","scope":6091,"src":"71329:11:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6087,"name":"uint","nodeType":"ElementaryTypeName","src":"71329:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"71308:33:10"},"returnParameters":{"id":6090,"nodeType":"ParameterList","parameters":[],"src":"71350:0:10"},"scope":6186,"src":"71286:65:10","stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},{"body":{"id":6104,"nodeType":"Block","src":"71521:97:10","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":6096,"name":"localOnly","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6093,"src":"71551:9:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":6095,"name":"_beforeNonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6128,"src":"71531:19:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bool_$returns$__$","typeString":"function (bool)"}},"id":6097,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"71531:30:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6098,"nodeType":"ExpressionStatement","src":"71531:30:10"},{"id":6099,"nodeType":"PlaceholderStatement","src":"71571:1:10"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":6101,"name":"localOnly","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6093,"src":"71601:9:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":6100,"name":"_afterNonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6146,"src":"71582:18:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bool_$returns$__$","typeString":"function (bool)"}},"id":6102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"71582:29:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6103,"nodeType":"ExpressionStatement","src":"71582:29:10"}]},"documentation":"@dev Prevents a contract from calling itself, directly or indirectly.","id":6105,"name":"nonReentrant","nodeType":"ModifierDefinition","parameters":{"id":6094,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6093,"name":"localOnly","nodeType":"VariableDeclaration","scope":6105,"src":"71505:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6092,"name":"bool","nodeType":"ElementaryTypeName","src":"71505:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"71504:16:10"},"src":"71483:135:10","visibility":"internal"},{"body":{"id":6127,"nodeType":"Block","src":"71984:139:10","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":6111,"name":"_notEntered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6208,"src":"72002:11:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"72652d656e7465726564","id":6112,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"72015:12:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_987a3f65bf6c5144d945a7d9587fa166ee3a901eb2b594a0815c3c20bf841a5e","typeString":"literal_string \"re-entered\""},"value":"re-entered"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_987a3f65bf6c5144d945a7d9587fa166ee3a901eb2b594a0815c3c20bf841a5e","typeString":"literal_string \"re-entered\""}],"id":6110,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"71994:7:10","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6113,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"71994:34:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6114,"nodeType":"ExpressionStatement","src":"71994:34:10"},{"condition":{"argumentTypes":null,"id":6116,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"72042:10:10","subExpression":{"argumentTypes":null,"id":6115,"name":"localOnly","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6107,"src":"72043:9:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":6122,"nodeType":"IfStatement","src":"72038:49:10","trueBody":{"expression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":6117,"name":"comptroller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6224,"src":"72054:11:10","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerInterface_$12980","typeString":"contract ComptrollerInterface"}},"id":6119,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"_beforeNonReentrant","nodeType":"MemberAccess","referencedDeclaration":12976,"src":"72054:31:10","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$__$","typeString":"function () external"}},"id":6120,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"72054:33:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6121,"nodeType":"ExpressionStatement","src":"72054:33:10"}},{"expression":{"argumentTypes":null,"id":6125,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":6123,"name":"_notEntered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6208,"src":"72097:11:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"hexValue":"66616c7365","id":6124,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"72111:5:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"72097:19:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6126,"nodeType":"ExpressionStatement","src":"72097:19:10"}]},"documentation":"@dev Split off from `nonReentrant` to keep contract below the 24 KB size limit.\nSaves space because function modifier code is \"inlined\" into every function with the modifier).\nIn this specific case, the optimization saves around 1500 bytes of that valuable 24 KB limit.","id":6128,"implemented":true,"kind":"function","modifiers":[],"name":"_beforeNonReentrant","nodeType":"FunctionDefinition","parameters":{"id":6108,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6107,"name":"localOnly","nodeType":"VariableDeclaration","scope":6128,"src":"71960:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6106,"name":"bool","nodeType":"ElementaryTypeName","src":"71960:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"71959:16:10"},"returnParameters":{"id":6109,"nodeType":"ParameterList","parameters":[],"src":"71984:0:10"},"scope":6186,"src":"71931:192:10","stateMutability":"nonpayable","superFunction":null,"visibility":"private"},{"body":{"id":6145,"nodeType":"Block","src":"72487:127:10","statements":[{"expression":{"argumentTypes":null,"id":6135,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":6133,"name":"_notEntered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6208,"src":"72497:11:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"hexValue":"74727565","id":6134,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"72511:4:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"72497:18:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6136,"nodeType":"ExpressionStatement","src":"72497:18:10"},{"condition":{"argumentTypes":null,"id":6138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"72563:10:10","subExpression":{"argumentTypes":null,"id":6137,"name":"localOnly","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6130,"src":"72564:9:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":6144,"nodeType":"IfStatement","src":"72559:48:10","trueBody":{"expression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":6139,"name":"comptroller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6224,"src":"72575:11:10","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerInterface_$12980","typeString":"contract ComptrollerInterface"}},"id":6141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"_afterNonReentrant","nodeType":"MemberAccess","referencedDeclaration":12979,"src":"72575:30:10","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$__$","typeString":"function () external"}},"id":6142,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"72575:32:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6143,"nodeType":"ExpressionStatement","src":"72575:32:10"}}]},"documentation":"@dev Split off from `nonReentrant` to keep contract below the 24 KB size limit.\nSaves space because function modifier code is \"inlined\" into every function with the modifier).\nIn this specific case, the optimization saves around 150 bytes of that valuable 24 KB limit.","id":6146,"implemented":true,"kind":"function","modifiers":[],"name":"_afterNonReentrant","nodeType":"FunctionDefinition","parameters":{"id":6131,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6130,"name":"localOnly","nodeType":"VariableDeclaration","scope":6146,"src":"72463:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6129,"name":"bool","nodeType":"ElementaryTypeName","src":"72463:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"72462:16:10"},"returnParameters":{"id":6132,"nodeType":"ParameterList","parameters":[],"src":"72487:0:10"},"scope":6186,"src":"72435:179:10","stateMutability":"nonpayable","superFunction":null,"visibility":"private"},{"body":{"id":6184,"nodeType":"Block","src":"73445:647:10","statements":[{"assignments":[6158,6160],"declarations":[{"constant":false,"id":6158,"name":"success","nodeType":"VariableDeclaration","scope":6184,"src":"73456:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6157,"name":"bool","nodeType":"ElementaryTypeName","src":"73456:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},{"constant":false,"id":6160,"name":"returndata","nodeType":"VariableDeclaration","scope":6184,"src":"73470:23:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6159,"name":"bytes","nodeType":"ElementaryTypeName","src":"73470:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"}],"id":6165,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":6163,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6150,"src":"73509:4:10","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":null,"id":6161,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6148,"src":"73497:6:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":6162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","referencedDeclaration":null,"src":"73497:11:10","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":6164,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"73497:17:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"73455:59:10"},{"condition":{"argumentTypes":null,"id":6167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"73529:8:10","subExpression":{"argumentTypes":null,"id":6166,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6158,"src":"73530:7:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":6181,"nodeType":"IfStatement","src":"73525:533:10","trueBody":{"id":6180,"nodeType":"Block","src":"73539:519:10","statements":[{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":6168,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6160,"src":"73623:10:10","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":6169,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"73623:17:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"30","id":6170,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"73643:1:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"73623:21:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":6178,"nodeType":"Block","src":"73995:53:10","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":6175,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6152,"src":"74020:12:10","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":6174,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[22555,22556],"referencedDeclaration":22556,"src":"74013:6:10","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":6176,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"74013:20:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6177,"nodeType":"ExpressionStatement","src":"74013:20:10"}]},"id":6179,"nodeType":"IfStatement","src":"73619:429:10","trueBody":{"id":6173,"nodeType":"Block","src":"73646:343:10","statements":[{"externalReferences":[{"returndata":{"declaration":6160,"isOffset":false,"isSlot":false,"src":"73881:10:10","valueSize":1}},{"returndata":{"declaration":6160,"isOffset":false,"isSlot":false,"src":"73928:10:10","valueSize":1}}],"id":6172,"nodeType":"InlineAssembly","operations":"{\n let returndata_size := mload(returndata)\n revert(add(32, returndata), returndata_size)\n}","src":"73821:154:10"}]}}]}},{"expression":{"argumentTypes":null,"id":6182,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6160,"src":"74075:10:10","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":6156,"id":6183,"nodeType":"Return","src":"74068:17:10"}]},"documentation":"@dev Performs a Solidity function call using a low level `call`. A\nplain `call` is an unsafe replacement for a function call: use this\nfunction instead.\nIf `target` reverts with a revert reason, it is bubbled up by this\nfunction (like regular Solidity function calls).\nReturns the raw returned data. To convert to the expected return value,\nuse https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n@param data The call data (encoded using abi.encode or one of its variants).\n@param errorMessage The revert string to return on failure.","id":6185,"implemented":true,"kind":"function","modifiers":[],"name":"_functionCall","nodeType":"FunctionDefinition","parameters":{"id":6153,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6148,"name":"target","nodeType":"VariableDeclaration","scope":6185,"src":"73350:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6147,"name":"address","nodeType":"ElementaryTypeName","src":"73350:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":6150,"name":"data","nodeType":"VariableDeclaration","scope":6185,"src":"73366:17:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6149,"name":"bytes","nodeType":"ElementaryTypeName","src":"73366:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"},{"constant":false,"id":6152,"name":"errorMessage","nodeType":"VariableDeclaration","scope":6185,"src":"73385:26:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6151,"name":"string","nodeType":"ElementaryTypeName","src":"73385:6:10","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":null,"visibility":"internal"}],"src":"73349:63:10"},"returnParameters":{"id":6156,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6155,"name":"","nodeType":"VariableDeclaration","scope":6185,"src":"73431:12:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6154,"name":"bytes","nodeType":"ElementaryTypeName","src":"73431:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"}],"src":"73430:14:10"},"scope":6186,"src":"73327:765:10","stateMutability":"nonpayable","superFunction":null,"visibility":"internal"}],"scope":6187,"src":"363:73731:10"}],"src":"0:74095:10"},"id":10},"contracts/CTokenInterfaces.sol":{"ast":{"absolutePath":"contracts/CTokenInterfaces.sol","exportedSymbols":{"CDelegateInterface":[6652],"CDelegationStorage":[6626],"CErc20Interface":[6617],"CErc20Storage":[6559],"CEtherInterface":[6623],"CTokenAdminStorage":[6204],"CTokenInterface":[6556],"CTokenStorage":[6271]},"id":6653,"nodeType":"SourceUnit","nodes":[{"id":6188,"literals":["solidity","0.5",".17"],"nodeType":"PragmaDirective","src":"0:23:11"},{"absolutePath":"contracts/IFuseFeeDistributor.sol","file":"./IFuseFeeDistributor.sol","id":6189,"nodeType":"ImportDirective","scope":6653,"sourceUnit":17369,"src":"25:35:11","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/ComptrollerStorage.sol","file":"./ComptrollerStorage.sol","id":6190,"nodeType":"ImportDirective","scope":6653,"sourceUnit":13137,"src":"61:34:11","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/ComptrollerInterface.sol","file":"./ComptrollerInterface.sol","id":6191,"nodeType":"ImportDirective","scope":6653,"sourceUnit":12981,"src":"96:36:11","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/InterestRateModel.sol","file":"./InterestRateModel.sol","id":6192,"nodeType":"ImportDirective","scope":6653,"sourceUnit":17399,"src":"133:33:11","symbolAliases":[],"unitAlias":""},{"baseContracts":[],"contractDependencies":[],"contractKind":"contract","documentation":null,"fullyImplemented":true,"id":6204,"linearizedBaseContracts":[6204],"name":"CTokenAdminStorage","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":6197,"name":"fuseAdmin","nodeType":"VariableDeclaration","scope":6204,"src":"256:113:11","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IFuseFeeDistributor_$17368","typeString":"contract IFuseFeeDistributor"},"typeName":{"contractScope":null,"id":6193,"name":"IFuseFeeDistributor","nodeType":"UserDefinedTypeName","referencedDeclaration":17368,"src":"256:19:11","typeDescriptions":{"typeIdentifier":"t_contract$_IFuseFeeDistributor_$17368","typeString":"contract IFuseFeeDistributor"}},"value":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"307861373331353835616230356643396638333535356366394266663846353865653934653138463835","id":6195,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"326:42:11","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"value":"0xa731585ab05fC9f83555cf9Bff8F58ee94e18F85"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":6194,"name":"IFuseFeeDistributor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17368,"src":"306:19:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IFuseFeeDistributor_$17368_$","typeString":"type(contract IFuseFeeDistributor)"}},"id":6196,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"306:63:11","typeDescriptions":{"typeIdentifier":"t_contract$_IFuseFeeDistributor_$17368","typeString":"contract IFuseFeeDistributor"}},"visibility":"internal"},{"constant":false,"id":6199,"name":"__admin","nodeType":"VariableDeclaration","scope":6204,"src":"453:32:11","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":6198,"name":"address","nodeType":"ElementaryTypeName","src":"453:15:11","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"value":null,"visibility":"internal"},{"constant":false,"id":6201,"name":"__fuseAdminHasRights","nodeType":"VariableDeclaration","scope":6204,"src":"584:34:11","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6200,"name":"bool","nodeType":"ElementaryTypeName","src":"584:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},{"constant":false,"id":6203,"name":"__adminHasRights","nodeType":"VariableDeclaration","scope":6204,"src":"712:30:11","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6202,"name":"bool","nodeType":"ElementaryTypeName","src":"712:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"scope":6653,"src":"168:577:11"},{"baseContracts":[{"arguments":null,"baseName":{"contractScope":null,"id":6205,"name":"CTokenAdminStorage","nodeType":"UserDefinedTypeName","referencedDeclaration":6204,"src":"773:18:11","typeDescriptions":{"typeIdentifier":"t_contract$_CTokenAdminStorage_$6204","typeString":"contract CTokenAdminStorage"}},"id":6206,"nodeType":"InheritanceSpecifier","src":"773:18:11"}],"contractDependencies":[6204],"contractKind":"contract","documentation":null,"fullyImplemented":true,"id":6271,"linearizedBaseContracts":[6271,6204],"name":"CTokenStorage","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":6208,"name":"_notEntered","nodeType":"VariableDeclaration","scope":6271,"src":"864:25:11","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6207,"name":"bool","nodeType":"ElementaryTypeName","src":"864:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},{"constant":false,"id":6210,"name":"name","nodeType":"VariableDeclaration","scope":6271,"src":"960:18:11","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":6209,"name":"string","nodeType":"ElementaryTypeName","src":"960:6:11","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":null,"visibility":"public"},{"constant":false,"id":6212,"name":"symbol","nodeType":"VariableDeclaration","scope":6271,"src":"1051:20:11","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":6211,"name":"string","nodeType":"ElementaryTypeName","src":"1051:6:11","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":null,"visibility":"public"},{"constant":false,"id":6214,"name":"decimals","nodeType":"VariableDeclaration","scope":6271,"src":"1146:21:11","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6213,"name":"uint8","nodeType":"ElementaryTypeName","src":"1146:5:11","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":null,"visibility":"public"},{"constant":true,"id":6217,"name":"borrowRateMaxMantissa","nodeType":"VariableDeclaration","scope":6271,"src":"1267:56:11","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6215,"name":"uint","nodeType":"ElementaryTypeName","src":"1267:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"argumentTypes":null,"hexValue":"302e30303035653136","id":6216,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1314:9:11","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_5000000000000_by_1","typeString":"int_const 5000000000000"},"value":"0.0005e16"},"visibility":"internal"},{"constant":true,"id":6220,"name":"reserveFactorPlusFeesMaxMantissa","nodeType":"VariableDeclaration","scope":6271,"src":"1432:62:11","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6218,"name":"uint","nodeType":"ElementaryTypeName","src":"1432:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"argumentTypes":null,"hexValue":"31653138","id":6219,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1490:4:11","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"visibility":"internal"},{"constant":false,"id":6222,"name":"__pendingAdmin","nodeType":"VariableDeclaration","scope":6271,"src":"1589:38:11","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":6221,"name":"address","nodeType":"ElementaryTypeName","src":"1589:15:11","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"value":null,"visibility":"private"},{"constant":false,"id":6224,"name":"comptroller","nodeType":"VariableDeclaration","scope":6271,"src":"1713:39:11","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerInterface_$12980","typeString":"contract ComptrollerInterface"},"typeName":{"contractScope":null,"id":6223,"name":"ComptrollerInterface","nodeType":"UserDefinedTypeName","referencedDeclaration":12980,"src":"1713:20:11","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerInterface_$12980","typeString":"contract ComptrollerInterface"}},"value":null,"visibility":"public"},{"constant":false,"id":6226,"name":"interestRateModel","nodeType":"VariableDeclaration","scope":6271,"src":"1849:42:11","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_InterestRateModel_$17398","typeString":"contract InterestRateModel"},"typeName":{"contractScope":null,"id":6225,"name":"InterestRateModel","nodeType":"UserDefinedTypeName","referencedDeclaration":17398,"src":"1849:17:11","typeDescriptions":{"typeIdentifier":"t_contract$_InterestRateModel_$17398","typeString":"contract InterestRateModel"}},"value":null,"visibility":"public"},{"constant":false,"id":6228,"name":"initialExchangeRateMantissa","nodeType":"VariableDeclaration","scope":6271,"src":"2015:41:11","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6227,"name":"uint","nodeType":"ElementaryTypeName","src":"2015:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":6230,"name":"adminFeeMantissa","nodeType":"VariableDeclaration","scope":6271,"src":"2150:28:11","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6229,"name":"uint","nodeType":"ElementaryTypeName","src":"2150:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"public"},{"constant":false,"id":6232,"name":"fuseFeeMantissa","nodeType":"VariableDeclaration","scope":6271,"src":"2271:27:11","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6231,"name":"uint","nodeType":"ElementaryTypeName","src":"2271:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"public"},{"constant":false,"id":6234,"name":"reserveFactorMantissa","nodeType":"VariableDeclaration","scope":6271,"src":"2390:33:11","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6233,"name":"uint","nodeType":"ElementaryTypeName","src":"2390:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"public"},{"constant":false,"id":6236,"name":"accrualBlockNumber","nodeType":"VariableDeclaration","scope":6271,"src":"2508:30:11","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6235,"name":"uint","nodeType":"ElementaryTypeName","src":"2508:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"public"},{"constant":false,"id":6238,"name":"borrowIndex","nodeType":"VariableDeclaration","scope":6271,"src":"2654:23:11","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6237,"name":"uint","nodeType":"ElementaryTypeName","src":"2654:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"public"},{"constant":false,"id":6240,"name":"totalBorrows","nodeType":"VariableDeclaration","scope":6271,"src":"2784:24:11","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6239,"name":"uint","nodeType":"ElementaryTypeName","src":"2784:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"public"},{"constant":false,"id":6242,"name":"totalReserves","nodeType":"VariableDeclaration","scope":6271,"src":"2909:25:11","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6241,"name":"uint","nodeType":"ElementaryTypeName","src":"2909:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"public"},{"constant":false,"id":6244,"name":"totalAdminFees","nodeType":"VariableDeclaration","scope":6271,"src":"3037:26:11","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6243,"name":"uint","nodeType":"ElementaryTypeName","src":"3037:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"public"},{"constant":false,"id":6246,"name":"totalFuseFees","nodeType":"VariableDeclaration","scope":6271,"src":"3165:25:11","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6245,"name":"uint","nodeType":"ElementaryTypeName","src":"3165:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"public"},{"constant":false,"id":6248,"name":"totalSupply","nodeType":"VariableDeclaration","scope":6271,"src":"3266:23:11","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6247,"name":"uint","nodeType":"ElementaryTypeName","src":"3266:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"public"},{"constant":false,"id":6252,"name":"accountTokens","nodeType":"VariableDeclaration","scope":6271,"src":"3378:48:11","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":6251,"keyType":{"id":6249,"name":"address","nodeType":"ElementaryTypeName","src":"3387:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"3378:25:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":6250,"name":"uint","nodeType":"ElementaryTypeName","src":"3398:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"value":null,"visibility":"internal"},{"constant":false,"id":6258,"name":"transferAllowances","nodeType":"VariableDeclaration","scope":6271,"src":"3516:74:11","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":6257,"keyType":{"id":6253,"name":"address","nodeType":"ElementaryTypeName","src":"3525:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"3516:46:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"valueType":{"id":6256,"keyType":{"id":6254,"name":"address","nodeType":"ElementaryTypeName","src":"3545:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"3536:25:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":6255,"name":"uint","nodeType":"ElementaryTypeName","src":"3556:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"value":null,"visibility":"internal"},{"canonicalName":"CTokenStorage.BorrowSnapshot","id":6263,"members":[{"constant":false,"id":6260,"name":"principal","nodeType":"VariableDeclaration","scope":6263,"src":"3914:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6259,"name":"uint","nodeType":"ElementaryTypeName","src":"3914:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":6262,"name":"interestIndex","nodeType":"VariableDeclaration","scope":6263,"src":"3938:18:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6261,"name":"uint","nodeType":"ElementaryTypeName","src":"3938:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"name":"BorrowSnapshot","nodeType":"StructDefinition","scope":6271,"src":"3882:81:11","visibility":"public"},{"constant":false,"id":6267,"name":"accountBorrows","nodeType":"VariableDeclaration","scope":6271,"src":"4060:58:11","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_BorrowSnapshot_$6263_storage_$","typeString":"mapping(address => struct CTokenStorage.BorrowSnapshot)"},"typeName":{"id":6266,"keyType":{"id":6264,"name":"address","nodeType":"ElementaryTypeName","src":"4068:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"4060:34:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_BorrowSnapshot_$6263_storage_$","typeString":"mapping(address => struct CTokenStorage.BorrowSnapshot)"},"valueType":{"contractScope":null,"id":6265,"name":"BorrowSnapshot","nodeType":"UserDefinedTypeName","referencedDeclaration":6263,"src":"4079:14:11","typeDescriptions":{"typeIdentifier":"t_struct$_BorrowSnapshot_$6263_storage_ptr","typeString":"struct CTokenStorage.BorrowSnapshot"}}},"value":null,"visibility":"internal"},{"constant":true,"id":6270,"name":"protocolSeizeShareMantissa","nodeType":"VariableDeclaration","scope":6271,"src":"4209:56:11","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6268,"name":"uint","nodeType":"ElementaryTypeName","src":"4209:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"argumentTypes":null,"hexValue":"322e38653136","id":6269,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4259:6:11","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_28000000000000000_by_1","typeString":"int_const 28000000000000000"},"value":"2.8e16"},"visibility":"public"}],"scope":6653,"src":"747:3528:11"},{"baseContracts":[{"arguments":null,"baseName":{"contractScope":null,"id":6272,"name":"CTokenStorage","nodeType":"UserDefinedTypeName","referencedDeclaration":6271,"src":"4305:13:11","typeDescriptions":{"typeIdentifier":"t_contract$_CTokenStorage_$6271","typeString":"contract CTokenStorage"}},"id":6273,"nodeType":"InheritanceSpecifier","src":"4305:13:11"}],"contractDependencies":[6204,6271],"contractKind":"contract","documentation":null,"fullyImplemented":false,"id":6556,"linearizedBaseContracts":[6556,6271,6204],"name":"CTokenInterface","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":6276,"name":"isCToken","nodeType":"VariableDeclaration","scope":6556,"src":"4414:36:11","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6274,"name":"bool","nodeType":"ElementaryTypeName","src":"4414:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":{"argumentTypes":null,"hexValue":"74727565","id":6275,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4446:4:11","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"visibility":"public"},{"constant":true,"id":6279,"name":"isCEther","nodeType":"VariableDeclaration","scope":6556,"src":"4556:37:11","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6277,"name":"bool","nodeType":"ElementaryTypeName","src":"4556:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":{"argumentTypes":null,"hexValue":"66616c7365","id":6278,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4588:5:11","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"visibility":"public"},{"anonymous":false,"documentation":"@notice Event emitted when interest is accrued","id":6289,"name":"AccrueInterest","nodeType":"EventDefinition","parameters":{"id":6288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6281,"indexed":false,"name":"cashPrior","nodeType":"VariableDeclaration","scope":6289,"src":"4720:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6280,"name":"uint","nodeType":"ElementaryTypeName","src":"4720:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":6283,"indexed":false,"name":"interestAccumulated","nodeType":"VariableDeclaration","scope":6289,"src":"4736:24:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6282,"name":"uint","nodeType":"ElementaryTypeName","src":"4736:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":6285,"indexed":false,"name":"borrowIndex","nodeType":"VariableDeclaration","scope":6289,"src":"4762:16:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6284,"name":"uint","nodeType":"ElementaryTypeName","src":"4762:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":6287,"indexed":false,"name":"totalBorrows","nodeType":"VariableDeclaration","scope":6289,"src":"4780:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6286,"name":"uint","nodeType":"ElementaryTypeName","src":"4780:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"4719:79:11"},"src":"4699:100:11"},{"anonymous":false,"documentation":"@notice Event emitted when tokens are minted","id":6297,"name":"Mint","nodeType":"EventDefinition","parameters":{"id":6296,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6291,"indexed":false,"name":"minter","nodeType":"VariableDeclaration","scope":6297,"src":"4884:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6290,"name":"address","nodeType":"ElementaryTypeName","src":"4884:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":6293,"indexed":false,"name":"mintAmount","nodeType":"VariableDeclaration","scope":6297,"src":"4900:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6292,"name":"uint","nodeType":"ElementaryTypeName","src":"4900:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":6295,"indexed":false,"name":"mintTokens","nodeType":"VariableDeclaration","scope":6297,"src":"4917:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6294,"name":"uint","nodeType":"ElementaryTypeName","src":"4917:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"4883:50:11"},"src":"4873:61:11"},{"anonymous":false,"documentation":"@notice Event emitted when tokens are redeemed","id":6305,"name":"Redeem","nodeType":"EventDefinition","parameters":{"id":6304,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6299,"indexed":false,"name":"redeemer","nodeType":"VariableDeclaration","scope":6305,"src":"5023:16:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6298,"name":"address","nodeType":"ElementaryTypeName","src":"5023:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":6301,"indexed":false,"name":"redeemAmount","nodeType":"VariableDeclaration","scope":6305,"src":"5041:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6300,"name":"uint","nodeType":"ElementaryTypeName","src":"5041:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":6303,"indexed":false,"name":"redeemTokens","nodeType":"VariableDeclaration","scope":6305,"src":"5060:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6302,"name":"uint","nodeType":"ElementaryTypeName","src":"5060:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"5022:56:11"},"src":"5010:69:11"},{"anonymous":false,"documentation":"@notice Event emitted when underlying is borrowed","id":6315,"name":"Borrow","nodeType":"EventDefinition","parameters":{"id":6314,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6307,"indexed":false,"name":"borrower","nodeType":"VariableDeclaration","scope":6315,"src":"5171:16:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6306,"name":"address","nodeType":"ElementaryTypeName","src":"5171:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":6309,"indexed":false,"name":"borrowAmount","nodeType":"VariableDeclaration","scope":6315,"src":"5189:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6308,"name":"uint","nodeType":"ElementaryTypeName","src":"5189:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":6311,"indexed":false,"name":"accountBorrows","nodeType":"VariableDeclaration","scope":6315,"src":"5208:19:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6310,"name":"uint","nodeType":"ElementaryTypeName","src":"5208:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":6313,"indexed":false,"name":"totalBorrows","nodeType":"VariableDeclaration","scope":6315,"src":"5229:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6312,"name":"uint","nodeType":"ElementaryTypeName","src":"5229:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"5170:77:11"},"src":"5158:90:11"},{"anonymous":false,"documentation":"@notice Event emitted when a borrow is repaid","id":6327,"name":"RepayBorrow","nodeType":"EventDefinition","parameters":{"id":6326,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6317,"indexed":false,"name":"payer","nodeType":"VariableDeclaration","scope":6327,"src":"5341:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6316,"name":"address","nodeType":"ElementaryTypeName","src":"5341:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":6319,"indexed":false,"name":"borrower","nodeType":"VariableDeclaration","scope":6327,"src":"5356:16:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6318,"name":"address","nodeType":"ElementaryTypeName","src":"5356:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":6321,"indexed":false,"name":"repayAmount","nodeType":"VariableDeclaration","scope":6327,"src":"5374:16:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6320,"name":"uint","nodeType":"ElementaryTypeName","src":"5374:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":6323,"indexed":false,"name":"accountBorrows","nodeType":"VariableDeclaration","scope":6327,"src":"5392:19:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6322,"name":"uint","nodeType":"ElementaryTypeName","src":"5392:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":6325,"indexed":false,"name":"totalBorrows","nodeType":"VariableDeclaration","scope":6327,"src":"5413:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6324,"name":"uint","nodeType":"ElementaryTypeName","src":"5413:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"5340:91:11"},"src":"5323:109:11"},{"anonymous":false,"documentation":"@notice Event emitted when a borrow is liquidated","id":6339,"name":"LiquidateBorrow","nodeType":"EventDefinition","parameters":{"id":6338,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6329,"indexed":false,"name":"liquidator","nodeType":"VariableDeclaration","scope":6339,"src":"5533:18:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6328,"name":"address","nodeType":"ElementaryTypeName","src":"5533:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":6331,"indexed":false,"name":"borrower","nodeType":"VariableDeclaration","scope":6339,"src":"5553:16:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6330,"name":"address","nodeType":"ElementaryTypeName","src":"5553:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":6333,"indexed":false,"name":"repayAmount","nodeType":"VariableDeclaration","scope":6339,"src":"5571:16:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6332,"name":"uint","nodeType":"ElementaryTypeName","src":"5571:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":6335,"indexed":false,"name":"cTokenCollateral","nodeType":"VariableDeclaration","scope":6339,"src":"5589:24:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6334,"name":"address","nodeType":"ElementaryTypeName","src":"5589:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":6337,"indexed":false,"name":"seizeTokens","nodeType":"VariableDeclaration","scope":6339,"src":"5615:16:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6336,"name":"uint","nodeType":"ElementaryTypeName","src":"5615:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"5532:100:11"},"src":"5511:122:11"},{"anonymous":false,"documentation":"@notice Event emitted when comptroller is changed","id":6345,"name":"NewComptroller","nodeType":"EventDefinition","parameters":{"id":6344,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6341,"indexed":false,"name":"oldComptroller","nodeType":"VariableDeclaration","scope":6345,"src":"5762:35:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerInterface_$12980","typeString":"contract ComptrollerInterface"},"typeName":{"contractScope":null,"id":6340,"name":"ComptrollerInterface","nodeType":"UserDefinedTypeName","referencedDeclaration":12980,"src":"5762:20:11","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerInterface_$12980","typeString":"contract ComptrollerInterface"}},"value":null,"visibility":"internal"},{"constant":false,"id":6343,"indexed":false,"name":"newComptroller","nodeType":"VariableDeclaration","scope":6345,"src":"5799:35:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerInterface_$12980","typeString":"contract ComptrollerInterface"},"typeName":{"contractScope":null,"id":6342,"name":"ComptrollerInterface","nodeType":"UserDefinedTypeName","referencedDeclaration":12980,"src":"5799:20:11","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerInterface_$12980","typeString":"contract ComptrollerInterface"}},"value":null,"visibility":"internal"}],"src":"5761:74:11"},"src":"5741:95:11"},{"anonymous":false,"documentation":"@notice Event emitted when interestRateModel is changed","id":6351,"name":"NewMarketInterestRateModel","nodeType":"EventDefinition","parameters":{"id":6350,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6347,"indexed":false,"name":"oldInterestRateModel","nodeType":"VariableDeclaration","scope":6351,"src":"5954:38:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_InterestRateModel_$17398","typeString":"contract InterestRateModel"},"typeName":{"contractScope":null,"id":6346,"name":"InterestRateModel","nodeType":"UserDefinedTypeName","referencedDeclaration":17398,"src":"5954:17:11","typeDescriptions":{"typeIdentifier":"t_contract$_InterestRateModel_$17398","typeString":"contract InterestRateModel"}},"value":null,"visibility":"internal"},{"constant":false,"id":6349,"indexed":false,"name":"newInterestRateModel","nodeType":"VariableDeclaration","scope":6351,"src":"5994:38:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_InterestRateModel_$17398","typeString":"contract InterestRateModel"},"typeName":{"contractScope":null,"id":6348,"name":"InterestRateModel","nodeType":"UserDefinedTypeName","referencedDeclaration":17398,"src":"5994:17:11","typeDescriptions":{"typeIdentifier":"t_contract$_InterestRateModel_$17398","typeString":"contract InterestRateModel"}},"value":null,"visibility":"internal"}],"src":"5953:80:11"},"src":"5921:113:11"},{"anonymous":false,"documentation":"@notice Event emitted when the reserve factor is changed","id":6357,"name":"NewReserveFactor","nodeType":"EventDefinition","parameters":{"id":6356,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6353,"indexed":false,"name":"oldReserveFactorMantissa","nodeType":"VariableDeclaration","scope":6357,"src":"6143:29:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6352,"name":"uint","nodeType":"ElementaryTypeName","src":"6143:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":6355,"indexed":false,"name":"newReserveFactorMantissa","nodeType":"VariableDeclaration","scope":6357,"src":"6174:29:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6354,"name":"uint","nodeType":"ElementaryTypeName","src":"6174:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"6142:62:11"},"src":"6120:85:11"},{"anonymous":false,"documentation":"@notice Event emitted when the reserves are added","id":6365,"name":"ReservesAdded","nodeType":"EventDefinition","parameters":{"id":6364,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6359,"indexed":false,"name":"benefactor","nodeType":"VariableDeclaration","scope":6365,"src":"6304:18:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6358,"name":"address","nodeType":"ElementaryTypeName","src":"6304:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":6361,"indexed":false,"name":"addAmount","nodeType":"VariableDeclaration","scope":6365,"src":"6324:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6360,"name":"uint","nodeType":"ElementaryTypeName","src":"6324:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":6363,"indexed":false,"name":"newTotalReserves","nodeType":"VariableDeclaration","scope":6365,"src":"6340:21:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6362,"name":"uint","nodeType":"ElementaryTypeName","src":"6340:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"6303:59:11"},"src":"6284:79:11"},{"anonymous":false,"documentation":"@notice Event emitted when the reserves are reduced","id":6373,"name":"ReservesReduced","nodeType":"EventDefinition","parameters":{"id":6372,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6367,"indexed":false,"name":"admin","nodeType":"VariableDeclaration","scope":6373,"src":"6466:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6366,"name":"address","nodeType":"ElementaryTypeName","src":"6466:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":6369,"indexed":false,"name":"reduceAmount","nodeType":"VariableDeclaration","scope":6373,"src":"6481:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6368,"name":"uint","nodeType":"ElementaryTypeName","src":"6481:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":6371,"indexed":false,"name":"newTotalReserves","nodeType":"VariableDeclaration","scope":6373,"src":"6500:21:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6370,"name":"uint","nodeType":"ElementaryTypeName","src":"6500:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"6465:57:11"},"src":"6444:79:11"},{"anonymous":false,"documentation":"@notice Event emitted when the admin fee is changed","id":6379,"name":"NewAdminFee","nodeType":"EventDefinition","parameters":{"id":6378,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6375,"indexed":false,"name":"oldAdminFeeMantissa","nodeType":"VariableDeclaration","scope":6379,"src":"6622:24:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6374,"name":"uint","nodeType":"ElementaryTypeName","src":"6622:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":6377,"indexed":false,"name":"newAdminFeeMantissa","nodeType":"VariableDeclaration","scope":6379,"src":"6648:24:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6376,"name":"uint","nodeType":"ElementaryTypeName","src":"6648:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"6621:52:11"},"src":"6604:70:11"},{"anonymous":false,"documentation":"@notice Event emitted when the Fuse fee is changed","id":6385,"name":"NewFuseFee","nodeType":"EventDefinition","parameters":{"id":6384,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6381,"indexed":false,"name":"oldFuseFeeMantissa","nodeType":"VariableDeclaration","scope":6385,"src":"6771:23:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6380,"name":"uint","nodeType":"ElementaryTypeName","src":"6771:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":6383,"indexed":false,"name":"newFuseFeeMantissa","nodeType":"VariableDeclaration","scope":6385,"src":"6796:23:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6382,"name":"uint","nodeType":"ElementaryTypeName","src":"6796:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"6770:50:11"},"src":"6754:67:11"},{"anonymous":false,"documentation":"@notice EIP20 Transfer event","id":6393,"name":"Transfer","nodeType":"EventDefinition","parameters":{"id":6392,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6387,"indexed":true,"name":"from","nodeType":"VariableDeclaration","scope":6393,"src":"6894:20:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6386,"name":"address","nodeType":"ElementaryTypeName","src":"6894:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":6389,"indexed":true,"name":"to","nodeType":"VariableDeclaration","scope":6393,"src":"6916:18:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6388,"name":"address","nodeType":"ElementaryTypeName","src":"6916:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":6391,"indexed":false,"name":"amount","nodeType":"VariableDeclaration","scope":6393,"src":"6936:11:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6390,"name":"uint","nodeType":"ElementaryTypeName","src":"6936:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"6893:55:11"},"src":"6879:70:11"},{"anonymous":false,"documentation":"@notice EIP20 Approval event","id":6401,"name":"Approval","nodeType":"EventDefinition","parameters":{"id":6400,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6395,"indexed":true,"name":"owner","nodeType":"VariableDeclaration","scope":6401,"src":"7022:21:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6394,"name":"address","nodeType":"ElementaryTypeName","src":"7022:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":6397,"indexed":true,"name":"spender","nodeType":"VariableDeclaration","scope":6401,"src":"7045:23:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6396,"name":"address","nodeType":"ElementaryTypeName","src":"7045:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":6399,"indexed":false,"name":"amount","nodeType":"VariableDeclaration","scope":6401,"src":"7070:11:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6398,"name":"uint","nodeType":"ElementaryTypeName","src":"7070:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"7021:61:11"},"src":"7007:76:11"},{"anonymous":false,"documentation":"@notice Failure event","id":6409,"name":"Failure","nodeType":"EventDefinition","parameters":{"id":6408,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6403,"indexed":false,"name":"error","nodeType":"VariableDeclaration","scope":6409,"src":"7148:10:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6402,"name":"uint","nodeType":"ElementaryTypeName","src":"7148:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":6405,"indexed":false,"name":"info","nodeType":"VariableDeclaration","scope":6409,"src":"7160:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6404,"name":"uint","nodeType":"ElementaryTypeName","src":"7160:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":6407,"indexed":false,"name":"detail","nodeType":"VariableDeclaration","scope":6409,"src":"7171:11:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6406,"name":"uint","nodeType":"ElementaryTypeName","src":"7171:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"7147:36:11"},"src":"7134:50:11"},{"body":null,"documentation":"* User Interface **","id":6418,"implemented":false,"kind":"function","modifiers":[],"name":"transfer","nodeType":"FunctionDefinition","parameters":{"id":6414,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6411,"name":"dst","nodeType":"VariableDeclaration","scope":6418,"src":"7239:11:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6410,"name":"address","nodeType":"ElementaryTypeName","src":"7239:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":6413,"name":"amount","nodeType":"VariableDeclaration","scope":6418,"src":"7252:11:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6412,"name":"uint","nodeType":"ElementaryTypeName","src":"7252:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"7238:26:11"},"returnParameters":{"id":6417,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6416,"name":"","nodeType":"VariableDeclaration","scope":6418,"src":"7283:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6415,"name":"bool","nodeType":"ElementaryTypeName","src":"7283:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"7282:6:11"},"scope":6556,"src":"7221:68:11","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":null,"documentation":null,"id":6429,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nodeType":"FunctionDefinition","parameters":{"id":6425,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6420,"name":"src","nodeType":"VariableDeclaration","scope":6429,"src":"7316:11:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6419,"name":"address","nodeType":"ElementaryTypeName","src":"7316:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":6422,"name":"dst","nodeType":"VariableDeclaration","scope":6429,"src":"7329:11:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6421,"name":"address","nodeType":"ElementaryTypeName","src":"7329:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":6424,"name":"amount","nodeType":"VariableDeclaration","scope":6429,"src":"7342:11:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6423,"name":"uint","nodeType":"ElementaryTypeName","src":"7342:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"7315:39:11"},"returnParameters":{"id":6428,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6427,"name":"","nodeType":"VariableDeclaration","scope":6429,"src":"7373:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6426,"name":"bool","nodeType":"ElementaryTypeName","src":"7373:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"7372:6:11"},"scope":6556,"src":"7294:85:11","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":null,"documentation":null,"id":6438,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nodeType":"FunctionDefinition","parameters":{"id":6434,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6431,"name":"spender","nodeType":"VariableDeclaration","scope":6438,"src":"7401:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6430,"name":"address","nodeType":"ElementaryTypeName","src":"7401:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":6433,"name":"amount","nodeType":"VariableDeclaration","scope":6438,"src":"7418:11:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6432,"name":"uint","nodeType":"ElementaryTypeName","src":"7418:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"7400:30:11"},"returnParameters":{"id":6437,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6436,"name":"","nodeType":"VariableDeclaration","scope":6438,"src":"7449:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6435,"name":"bool","nodeType":"ElementaryTypeName","src":"7449:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"7448:6:11"},"scope":6556,"src":"7384:71:11","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":null,"documentation":null,"id":6447,"implemented":false,"kind":"function","modifiers":[],"name":"allowance","nodeType":"FunctionDefinition","parameters":{"id":6443,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6440,"name":"owner","nodeType":"VariableDeclaration","scope":6447,"src":"7479:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6439,"name":"address","nodeType":"ElementaryTypeName","src":"7479:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":6442,"name":"spender","nodeType":"VariableDeclaration","scope":6447,"src":"7494:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6441,"name":"address","nodeType":"ElementaryTypeName","src":"7494:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"7478:32:11"},"returnParameters":{"id":6446,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6445,"name":"","nodeType":"VariableDeclaration","scope":6447,"src":"7534:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6444,"name":"uint","nodeType":"ElementaryTypeName","src":"7534:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"7533:6:11"},"scope":6556,"src":"7460:80:11","stateMutability":"view","superFunction":null,"visibility":"external"},{"body":null,"documentation":null,"id":6454,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nodeType":"FunctionDefinition","parameters":{"id":6450,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6449,"name":"owner","nodeType":"VariableDeclaration","scope":6454,"src":"7564:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6448,"name":"address","nodeType":"ElementaryTypeName","src":"7564:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"7563:15:11"},"returnParameters":{"id":6453,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6452,"name":"","nodeType":"VariableDeclaration","scope":6454,"src":"7602:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6451,"name":"uint","nodeType":"ElementaryTypeName","src":"7602:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"7601:6:11"},"scope":6556,"src":"7545:63:11","stateMutability":"view","superFunction":null,"visibility":"external"},{"body":null,"documentation":null,"id":6461,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOfUnderlying","nodeType":"FunctionDefinition","parameters":{"id":6457,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6456,"name":"owner","nodeType":"VariableDeclaration","scope":6461,"src":"7642:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6455,"name":"address","nodeType":"ElementaryTypeName","src":"7642:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"7641:15:11"},"returnParameters":{"id":6460,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6459,"name":"","nodeType":"VariableDeclaration","scope":6461,"src":"7675:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6458,"name":"uint","nodeType":"ElementaryTypeName","src":"7675:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"7674:6:11"},"scope":6556,"src":"7613:68:11","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":null,"documentation":null,"id":6474,"implemented":false,"kind":"function","modifiers":[],"name":"getAccountSnapshot","nodeType":"FunctionDefinition","parameters":{"id":6464,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6463,"name":"account","nodeType":"VariableDeclaration","scope":6474,"src":"7714:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6462,"name":"address","nodeType":"ElementaryTypeName","src":"7714:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"7713:17:11"},"returnParameters":{"id":6473,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6466,"name":"","nodeType":"VariableDeclaration","scope":6474,"src":"7754:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6465,"name":"uint","nodeType":"ElementaryTypeName","src":"7754:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":6468,"name":"","nodeType":"VariableDeclaration","scope":6474,"src":"7760:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6467,"name":"uint","nodeType":"ElementaryTypeName","src":"7760:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":6470,"name":"","nodeType":"VariableDeclaration","scope":6474,"src":"7766:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6469,"name":"uint","nodeType":"ElementaryTypeName","src":"7766:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":6472,"name":"","nodeType":"VariableDeclaration","scope":6474,"src":"7772:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6471,"name":"uint","nodeType":"ElementaryTypeName","src":"7772:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"7753:24:11"},"scope":6556,"src":"7686:92:11","stateMutability":"view","superFunction":null,"visibility":"external"},{"body":null,"documentation":null,"id":6479,"implemented":false,"kind":"function","modifiers":[],"name":"borrowRatePerBlock","nodeType":"FunctionDefinition","parameters":{"id":6475,"nodeType":"ParameterList","parameters":[],"src":"7810:2:11"},"returnParameters":{"id":6478,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6477,"name":"","nodeType":"VariableDeclaration","scope":6479,"src":"7836:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6476,"name":"uint","nodeType":"ElementaryTypeName","src":"7836:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"7835:6:11"},"scope":6556,"src":"7783:59:11","stateMutability":"view","superFunction":null,"visibility":"external"},{"body":null,"documentation":null,"id":6484,"implemented":false,"kind":"function","modifiers":[],"name":"supplyRatePerBlock","nodeType":"FunctionDefinition","parameters":{"id":6480,"nodeType":"ParameterList","parameters":[],"src":"7874:2:11"},"returnParameters":{"id":6483,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6482,"name":"","nodeType":"VariableDeclaration","scope":6484,"src":"7900:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6481,"name":"uint","nodeType":"ElementaryTypeName","src":"7900:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"7899:6:11"},"scope":6556,"src":"7847:59:11","stateMutability":"view","superFunction":null,"visibility":"external"},{"body":null,"documentation":null,"id":6489,"implemented":false,"kind":"function","modifiers":[],"name":"totalBorrowsCurrent","nodeType":"FunctionDefinition","parameters":{"id":6485,"nodeType":"ParameterList","parameters":[],"src":"7939:2:11"},"returnParameters":{"id":6488,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6487,"name":"","nodeType":"VariableDeclaration","scope":6489,"src":"7960:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6486,"name":"uint","nodeType":"ElementaryTypeName","src":"7960:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"7959:6:11"},"scope":6556,"src":"7911:55:11","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":null,"documentation":null,"id":6496,"implemented":false,"kind":"function","modifiers":[],"name":"borrowBalanceCurrent","nodeType":"FunctionDefinition","parameters":{"id":6492,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6491,"name":"account","nodeType":"VariableDeclaration","scope":6496,"src":"8001:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6490,"name":"address","nodeType":"ElementaryTypeName","src":"8001:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"8000:17:11"},"returnParameters":{"id":6495,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6494,"name":"","nodeType":"VariableDeclaration","scope":6496,"src":"8036:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6493,"name":"uint","nodeType":"ElementaryTypeName","src":"8036:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"8035:6:11"},"scope":6556,"src":"7971:71:11","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":null,"documentation":null,"id":6503,"implemented":false,"kind":"function","modifiers":[],"name":"borrowBalanceStored","nodeType":"FunctionDefinition","parameters":{"id":6499,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6498,"name":"account","nodeType":"VariableDeclaration","scope":6503,"src":"8076:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6497,"name":"address","nodeType":"ElementaryTypeName","src":"8076:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"8075:17:11"},"returnParameters":{"id":6502,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6501,"name":"","nodeType":"VariableDeclaration","scope":6503,"src":"8114:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6500,"name":"uint","nodeType":"ElementaryTypeName","src":"8114:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"8113:6:11"},"scope":6556,"src":"8047:73:11","stateMutability":"view","superFunction":null,"visibility":"public"},{"body":null,"documentation":null,"id":6508,"implemented":false,"kind":"function","modifiers":[],"name":"exchangeRateCurrent","nodeType":"FunctionDefinition","parameters":{"id":6504,"nodeType":"ParameterList","parameters":[],"src":"8153:2:11"},"returnParameters":{"id":6507,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6506,"name":"","nodeType":"VariableDeclaration","scope":6508,"src":"8172:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6505,"name":"uint","nodeType":"ElementaryTypeName","src":"8172:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"8171:6:11"},"scope":6556,"src":"8125:53:11","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":null,"documentation":null,"id":6513,"implemented":false,"kind":"function","modifiers":[],"name":"exchangeRateStored","nodeType":"FunctionDefinition","parameters":{"id":6509,"nodeType":"ParameterList","parameters":[],"src":"8210:2:11"},"returnParameters":{"id":6512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6511,"name":"","nodeType":"VariableDeclaration","scope":6513,"src":"8234:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6510,"name":"uint","nodeType":"ElementaryTypeName","src":"8234:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"8233:6:11"},"scope":6556,"src":"8183:57:11","stateMutability":"view","superFunction":null,"visibility":"public"},{"body":null,"documentation":null,"id":6518,"implemented":false,"kind":"function","modifiers":[],"name":"getCash","nodeType":"FunctionDefinition","parameters":{"id":6514,"nodeType":"ParameterList","parameters":[],"src":"8261:2:11"},"returnParameters":{"id":6517,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6516,"name":"","nodeType":"VariableDeclaration","scope":6518,"src":"8287:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6515,"name":"uint","nodeType":"ElementaryTypeName","src":"8287:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"8286:6:11"},"scope":6556,"src":"8245:48:11","stateMutability":"view","superFunction":null,"visibility":"external"},{"body":null,"documentation":null,"id":6523,"implemented":false,"kind":"function","modifiers":[],"name":"accrueInterest","nodeType":"FunctionDefinition","parameters":{"id":6519,"nodeType":"ParameterList","parameters":[],"src":"8321:2:11"},"returnParameters":{"id":6522,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6521,"name":"","nodeType":"VariableDeclaration","scope":6523,"src":"8340:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6520,"name":"uint","nodeType":"ElementaryTypeName","src":"8340:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"8339:6:11"},"scope":6556,"src":"8298:48:11","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":null,"documentation":null,"id":6534,"implemented":false,"kind":"function","modifiers":[],"name":"seize","nodeType":"FunctionDefinition","parameters":{"id":6530,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6525,"name":"liquidator","nodeType":"VariableDeclaration","scope":6534,"src":"8366:18:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6524,"name":"address","nodeType":"ElementaryTypeName","src":"8366:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":6527,"name":"borrower","nodeType":"VariableDeclaration","scope":6534,"src":"8386:16:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6526,"name":"address","nodeType":"ElementaryTypeName","src":"8386:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":6529,"name":"seizeTokens","nodeType":"VariableDeclaration","scope":6534,"src":"8404:16:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6528,"name":"uint","nodeType":"ElementaryTypeName","src":"8404:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"8365:56:11"},"returnParameters":{"id":6533,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6532,"name":"","nodeType":"VariableDeclaration","scope":6534,"src":"8440:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6531,"name":"uint","nodeType":"ElementaryTypeName","src":"8440:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"8439:6:11"},"scope":6556,"src":"8351:95:11","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":null,"documentation":"* Admin Functions **","id":6541,"implemented":false,"kind":"function","modifiers":[],"name":"_setReserveFactor","nodeType":"FunctionDefinition","parameters":{"id":6537,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6536,"name":"newReserveFactorMantissa","nodeType":"VariableDeclaration","scope":6541,"src":"8511:29:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6535,"name":"uint","nodeType":"ElementaryTypeName","src":"8511:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"8510:31:11"},"returnParameters":{"id":6540,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6539,"name":"","nodeType":"VariableDeclaration","scope":6541,"src":"8560:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6538,"name":"uint","nodeType":"ElementaryTypeName","src":"8560:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"8559:6:11"},"scope":6556,"src":"8484:82:11","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":null,"documentation":null,"id":6548,"implemented":false,"kind":"function","modifiers":[],"name":"_reduceReserves","nodeType":"FunctionDefinition","parameters":{"id":6544,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6543,"name":"reduceAmount","nodeType":"VariableDeclaration","scope":6548,"src":"8596:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6542,"name":"uint","nodeType":"ElementaryTypeName","src":"8596:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"8595:19:11"},"returnParameters":{"id":6547,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6546,"name":"","nodeType":"VariableDeclaration","scope":6548,"src":"8633:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6545,"name":"uint","nodeType":"ElementaryTypeName","src":"8633:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"8632:6:11"},"scope":6556,"src":"8571:68:11","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":null,"documentation":null,"id":6555,"implemented":false,"kind":"function","modifiers":[],"name":"_setInterestRateModel","nodeType":"FunctionDefinition","parameters":{"id":6551,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6550,"name":"newInterestRateModel","nodeType":"VariableDeclaration","scope":6555,"src":"8675:38:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_InterestRateModel_$17398","typeString":"contract InterestRateModel"},"typeName":{"contractScope":null,"id":6549,"name":"InterestRateModel","nodeType":"UserDefinedTypeName","referencedDeclaration":17398,"src":"8675:17:11","typeDescriptions":{"typeIdentifier":"t_contract$_InterestRateModel_$17398","typeString":"contract InterestRateModel"}},"value":null,"visibility":"internal"}],"src":"8674:40:11"},"returnParameters":{"id":6554,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6553,"name":"","nodeType":"VariableDeclaration","scope":6555,"src":"8731:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6552,"name":"uint","nodeType":"ElementaryTypeName","src":"8731:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"8730:6:11"},"scope":6556,"src":"8644:93:11","stateMutability":"nonpayable","superFunction":null,"visibility":"public"}],"scope":6653,"src":"4277:4462:11"},{"baseContracts":[],"contractDependencies":[],"contractKind":"contract","documentation":null,"fullyImplemented":true,"id":6559,"linearizedBaseContracts":[6559],"name":"CErc20Storage","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":6558,"name":"underlying","nodeType":"VariableDeclaration","scope":6559,"src":"8834:25:11","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6557,"name":"address","nodeType":"ElementaryTypeName","src":"8834:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"public"}],"scope":6653,"src":"8741:121:11"},{"baseContracts":[{"arguments":null,"baseName":{"contractScope":null,"id":6560,"name":"CErc20Storage","nodeType":"UserDefinedTypeName","referencedDeclaration":6559,"src":"8892:13:11","typeDescriptions":{"typeIdentifier":"t_contract$_CErc20Storage_$6559","typeString":"contract CErc20Storage"}},"id":6561,"nodeType":"InheritanceSpecifier","src":"8892:13:11"}],"contractDependencies":[6559],"contractKind":"contract","documentation":null,"fullyImplemented":false,"id":6617,"linearizedBaseContracts":[6617,6559],"name":"CErc20Interface","nodeType":"ContractDefinition","nodes":[{"body":null,"documentation":"* User Interface **","id":6568,"implemented":false,"kind":"function","modifiers":[],"name":"mint","nodeType":"FunctionDefinition","parameters":{"id":6564,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6563,"name":"mintAmount","nodeType":"VariableDeclaration","scope":6568,"src":"8957:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6562,"name":"uint","nodeType":"ElementaryTypeName","src":"8957:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"8956:17:11"},"returnParameters":{"id":6567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6566,"name":"","nodeType":"VariableDeclaration","scope":6568,"src":"8992:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6565,"name":"uint","nodeType":"ElementaryTypeName","src":"8992:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"8991:6:11"},"scope":6617,"src":"8943:55:11","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":null,"documentation":null,"id":6575,"implemented":false,"kind":"function","modifiers":[],"name":"redeem","nodeType":"FunctionDefinition","parameters":{"id":6571,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6570,"name":"redeemTokens","nodeType":"VariableDeclaration","scope":6575,"src":"9019:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6569,"name":"uint","nodeType":"ElementaryTypeName","src":"9019:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"9018:19:11"},"returnParameters":{"id":6574,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6573,"name":"","nodeType":"VariableDeclaration","scope":6575,"src":"9056:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6572,"name":"uint","nodeType":"ElementaryTypeName","src":"9056:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"9055:6:11"},"scope":6617,"src":"9003:59:11","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":null,"documentation":null,"id":6582,"implemented":false,"kind":"function","modifiers":[],"name":"redeemUnderlying","nodeType":"FunctionDefinition","parameters":{"id":6578,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6577,"name":"redeemAmount","nodeType":"VariableDeclaration","scope":6582,"src":"9093:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6576,"name":"uint","nodeType":"ElementaryTypeName","src":"9093:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"9092:19:11"},"returnParameters":{"id":6581,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6580,"name":"","nodeType":"VariableDeclaration","scope":6582,"src":"9130:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6579,"name":"uint","nodeType":"ElementaryTypeName","src":"9130:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"9129:6:11"},"scope":6617,"src":"9067:69:11","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":null,"documentation":null,"id":6589,"implemented":false,"kind":"function","modifiers":[],"name":"borrow","nodeType":"FunctionDefinition","parameters":{"id":6585,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6584,"name":"borrowAmount","nodeType":"VariableDeclaration","scope":6589,"src":"9157:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6583,"name":"uint","nodeType":"ElementaryTypeName","src":"9157:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"9156:19:11"},"returnParameters":{"id":6588,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6587,"name":"","nodeType":"VariableDeclaration","scope":6589,"src":"9194:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6586,"name":"uint","nodeType":"ElementaryTypeName","src":"9194:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"9193:6:11"},"scope":6617,"src":"9141:59:11","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":null,"documentation":null,"id":6596,"implemented":false,"kind":"function","modifiers":[],"name":"repayBorrow","nodeType":"FunctionDefinition","parameters":{"id":6592,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6591,"name":"repayAmount","nodeType":"VariableDeclaration","scope":6596,"src":"9226:16:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6590,"name":"uint","nodeType":"ElementaryTypeName","src":"9226:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"9225:18:11"},"returnParameters":{"id":6595,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6594,"name":"","nodeType":"VariableDeclaration","scope":6596,"src":"9262:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6593,"name":"uint","nodeType":"ElementaryTypeName","src":"9262:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"9261:6:11"},"scope":6617,"src":"9205:63:11","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":null,"documentation":null,"id":6605,"implemented":false,"kind":"function","modifiers":[],"name":"repayBorrowBehalf","nodeType":"FunctionDefinition","parameters":{"id":6601,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6598,"name":"borrower","nodeType":"VariableDeclaration","scope":6605,"src":"9300:16:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6597,"name":"address","nodeType":"ElementaryTypeName","src":"9300:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":6600,"name":"repayAmount","nodeType":"VariableDeclaration","scope":6605,"src":"9318:16:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6599,"name":"uint","nodeType":"ElementaryTypeName","src":"9318:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"9299:36:11"},"returnParameters":{"id":6604,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6603,"name":"","nodeType":"VariableDeclaration","scope":6605,"src":"9354:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6602,"name":"uint","nodeType":"ElementaryTypeName","src":"9354:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"9353:6:11"},"scope":6617,"src":"9273:87:11","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":null,"documentation":null,"id":6616,"implemented":false,"kind":"function","modifiers":[],"name":"liquidateBorrow","nodeType":"FunctionDefinition","parameters":{"id":6612,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6607,"name":"borrower","nodeType":"VariableDeclaration","scope":6616,"src":"9390:16:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6606,"name":"address","nodeType":"ElementaryTypeName","src":"9390:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":6609,"name":"repayAmount","nodeType":"VariableDeclaration","scope":6616,"src":"9408:16:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6608,"name":"uint","nodeType":"ElementaryTypeName","src":"9408:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":6611,"name":"cTokenCollateral","nodeType":"VariableDeclaration","scope":6616,"src":"9426:32:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_CTokenInterface_$6556","typeString":"contract CTokenInterface"},"typeName":{"contractScope":null,"id":6610,"name":"CTokenInterface","nodeType":"UserDefinedTypeName","referencedDeclaration":6556,"src":"9426:15:11","typeDescriptions":{"typeIdentifier":"t_contract$_CTokenInterface_$6556","typeString":"contract CTokenInterface"}},"value":null,"visibility":"internal"}],"src":"9389:70:11"},"returnParameters":{"id":6615,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6614,"name":"","nodeType":"VariableDeclaration","scope":6616,"src":"9478:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6613,"name":"uint","nodeType":"ElementaryTypeName","src":"9478:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"9477:6:11"},"scope":6617,"src":"9365:119:11","stateMutability":"nonpayable","superFunction":null,"visibility":"external"}],"scope":6653,"src":"8864:623:11"},{"baseContracts":[{"arguments":null,"baseName":{"contractScope":null,"id":6618,"name":"CErc20Storage","nodeType":"UserDefinedTypeName","referencedDeclaration":6559,"src":"9517:13:11","typeDescriptions":{"typeIdentifier":"t_contract$_CErc20Storage_$6559","typeString":"contract CErc20Storage"}},"id":6619,"nodeType":"InheritanceSpecifier","src":"9517:13:11"}],"contractDependencies":[6559],"contractKind":"contract","documentation":null,"fullyImplemented":true,"id":6623,"linearizedBaseContracts":[6623,6559],"name":"CEtherInterface","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":6622,"name":"isCEther","nodeType":"VariableDeclaration","scope":6623,"src":"9626:36:11","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6620,"name":"bool","nodeType":"ElementaryTypeName","src":"9626:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":{"argumentTypes":null,"hexValue":"74727565","id":6621,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9658:4:11","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"visibility":"public"}],"scope":6653,"src":"9489:176:11"},{"baseContracts":[],"contractDependencies":[],"contractKind":"contract","documentation":null,"fullyImplemented":true,"id":6626,"linearizedBaseContracts":[6626],"name":"CDelegationStorage","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":6625,"name":"implementation","nodeType":"VariableDeclaration","scope":6626,"src":"9773:29:11","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6624,"name":"address","nodeType":"ElementaryTypeName","src":"9773:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"public"}],"scope":6653,"src":"9667:138:11"},{"baseContracts":[{"arguments":null,"baseName":{"contractScope":null,"id":6627,"name":"CDelegationStorage","nodeType":"UserDefinedTypeName","referencedDeclaration":6626,"src":"9838:18:11","typeDescriptions":{"typeIdentifier":"t_contract$_CDelegationStorage_$6626","typeString":"contract CDelegationStorage"}},"id":6628,"nodeType":"InheritanceSpecifier","src":"9838:18:11"}],"contractDependencies":[6626],"contractKind":"contract","documentation":null,"fullyImplemented":false,"id":6652,"linearizedBaseContracts":[6652,6626],"name":"CDelegateInterface","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":"@notice Emitted when implementation is changed","id":6634,"name":"NewImplementation","nodeType":"EventDefinition","parameters":{"id":6633,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6630,"indexed":false,"name":"oldImplementation","nodeType":"VariableDeclaration","scope":6634,"src":"9957:25:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6629,"name":"address","nodeType":"ElementaryTypeName","src":"9957:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":6632,"indexed":false,"name":"newImplementation","nodeType":"VariableDeclaration","scope":6634,"src":"9984:25:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6631,"name":"address","nodeType":"ElementaryTypeName","src":"9984:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"9956:54:11"},"src":"9933:78:11"},{"body":null,"documentation":"@notice Called by the admin to update the implementation of the delegator\n@param implementation_ The address of the new implementation for delegation\n@param allowResign Flag to indicate whether to call _resignImplementation on the old implementation\n@param becomeImplementationData The encoded bytes data to be passed to _becomeImplementation","id":6643,"implemented":false,"kind":"function","modifiers":[],"name":"_setImplementationSafe","nodeType":"FunctionDefinition","parameters":{"id":6641,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6636,"name":"implementation_","nodeType":"VariableDeclaration","scope":6643,"src":"10436:23:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6635,"name":"address","nodeType":"ElementaryTypeName","src":"10436:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":6638,"name":"allowResign","nodeType":"VariableDeclaration","scope":6643,"src":"10461:16:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6637,"name":"bool","nodeType":"ElementaryTypeName","src":"10461:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},{"constant":false,"id":6640,"name":"becomeImplementationData","nodeType":"VariableDeclaration","scope":6643,"src":"10479:39:11","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6639,"name":"bytes","nodeType":"ElementaryTypeName","src":"10479:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"}],"src":"10435:84:11"},"returnParameters":{"id":6642,"nodeType":"ParameterList","parameters":[],"src":"10528:0:11"},"scope":6652,"src":"10404:125:11","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":null,"documentation":"@notice Called by the delegator on a delegate to initialize it for duty\n@dev Should revert if any issues arise which make it unfit for delegation\n@param data The encoded bytes data for any initialization","id":6648,"implemented":false,"kind":"function","modifiers":[],"name":"_becomeImplementation","nodeType":"FunctionDefinition","parameters":{"id":6646,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6645,"name":"data","nodeType":"VariableDeclaration","scope":6648,"src":"10807:19:11","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6644,"name":"bytes","nodeType":"ElementaryTypeName","src":"10807:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"}],"src":"10806:21:11"},"returnParameters":{"id":6647,"nodeType":"ParameterList","parameters":[],"src":"10836:0:11"},"scope":6652,"src":"10776:61:11","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":null,"documentation":"@notice Function called before all delegator functions\n@dev Checks comptroller.autoImplementation and upgrades the implementation if necessary","id":6651,"implemented":false,"kind":"function","modifiers":[],"name":"_prepare","nodeType":"FunctionDefinition","parameters":{"id":6649,"nodeType":"ParameterList","parameters":[],"src":"11033:2:11"},"returnParameters":{"id":6650,"nodeType":"ParameterList","parameters":[],"src":"11052:0:11"},"scope":6652,"src":"11016:37:11","stateMutability":"payable","superFunction":null,"visibility":"external"}],"scope":6653,"src":"9807:1248:11"}],"src":"0:11056:11"},"id":11},"contracts/CarefulMath.sol":{"ast":{"absolutePath":"contracts/CarefulMath.sol","exportedSymbols":{"CarefulMath":[6837]},"id":6838,"nodeType":"SourceUnit","nodes":[{"id":6654,"literals":["solidity","0.5",".17"],"nodeType":"PragmaDirective","src":"0:23:12"},{"baseContracts":[],"contractDependencies":[],"contractKind":"contract","documentation":"@title Careful Math\n@author Compound\n@notice Derived from OpenZeppelin's SafeMath library\n https://github.com/OpenZeppelin/openzeppelin-solidity/blob/master/contracts/math/SafeMath.sol","fullyImplemented":true,"id":6837,"linearizedBaseContracts":[6837],"name":"CarefulMath","nodeType":"ContractDefinition","nodes":[{"canonicalName":"CarefulMath.MathError","id":6659,"members":[{"id":6655,"name":"NO_ERROR","nodeType":"EnumValue","src":"363:8:12"},{"id":6656,"name":"DIVISION_BY_ZERO","nodeType":"EnumValue","src":"381:16:12"},{"id":6657,"name":"INTEGER_OVERFLOW","nodeType":"EnumValue","src":"407:16:12"},{"id":6658,"name":"INTEGER_UNDERFLOW","nodeType":"EnumValue","src":"433:17:12"}],"name":"MathError","nodeType":"EnumDefinition","src":"338:118:12"},{"body":{"id":6704,"nodeType":"Block","src":"615:258:12","statements":[{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6672,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":6670,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6661,"src":"629:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":6671,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"634:1:12","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"629:6:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":6679,"nodeType":"IfStatement","src":"625:67:12","trueBody":{"id":6678,"nodeType":"Block","src":"637:55:12","statements":[{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":6673,"name":"MathError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6659,"src":"659:9:12","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MathError_$6659_$","typeString":"type(enum CarefulMath.MathError)"}},"id":6674,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"659:18:12","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},{"argumentTypes":null,"hexValue":"30","id":6675,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"679:1:12","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":6676,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"658:23:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_rational_0_by_1_$","typeString":"tuple(enum CarefulMath.MathError,int_const 0)"}},"functionReturnParameters":6669,"id":6677,"nodeType":"Return","src":"651:30:12"}]}},{"assignments":[6681],"declarations":[{"constant":false,"id":6681,"name":"c","nodeType":"VariableDeclaration","scope":6704,"src":"702:6:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6680,"name":"uint","nodeType":"ElementaryTypeName","src":"702:4:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":6685,"initialValue":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6684,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":6682,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6661,"src":"711:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"argumentTypes":null,"id":6683,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6663,"src":"715:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"711:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"702:14:12"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6690,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":6686,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6681,"src":"731:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"argumentTypes":null,"id":6687,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6661,"src":"735:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"731:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"id":6689,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6663,"src":"740:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"731:10:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":6702,"nodeType":"Block","src":"812:55:12","statements":[{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":6697,"name":"MathError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6659,"src":"834:9:12","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MathError_$6659_$","typeString":"type(enum CarefulMath.MathError)"}},"id":6698,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"834:18:12","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},{"argumentTypes":null,"id":6699,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6681,"src":"854:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6700,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"833:23:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"functionReturnParameters":6669,"id":6701,"nodeType":"Return","src":"826:30:12"}]},"id":6703,"nodeType":"IfStatement","src":"727:140:12","trueBody":{"id":6696,"nodeType":"Block","src":"743:63:12","statements":[{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":6691,"name":"MathError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6659,"src":"765:9:12","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MathError_$6659_$","typeString":"type(enum CarefulMath.MathError)"}},"id":6692,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"INTEGER_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":null,"src":"765:26:12","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},{"argumentTypes":null,"hexValue":"30","id":6693,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"793:1:12","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":6694,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"764:31:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_rational_0_by_1_$","typeString":"tuple(enum CarefulMath.MathError,int_const 0)"}},"functionReturnParameters":6669,"id":6695,"nodeType":"Return","src":"757:38:12"}]}}]},"documentation":"@dev Multiplies two numbers, returns an error on overflow.","id":6705,"implemented":true,"kind":"function","modifiers":[],"name":"mulUInt","nodeType":"FunctionDefinition","parameters":{"id":6664,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6661,"name":"a","nodeType":"VariableDeclaration","scope":6705,"src":"559:6:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6660,"name":"uint","nodeType":"ElementaryTypeName","src":"559:4:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":6663,"name":"b","nodeType":"VariableDeclaration","scope":6705,"src":"567:6:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6662,"name":"uint","nodeType":"ElementaryTypeName","src":"567:4:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"558:16:12"},"returnParameters":{"id":6669,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6666,"name":"","nodeType":"VariableDeclaration","scope":6705,"src":"598:9:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"typeName":{"contractScope":null,"id":6665,"name":"MathError","nodeType":"UserDefinedTypeName","referencedDeclaration":6659,"src":"598:9:12","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"value":null,"visibility":"internal"},{"constant":false,"id":6668,"name":"","nodeType":"VariableDeclaration","scope":6705,"src":"609:4:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6667,"name":"uint","nodeType":"ElementaryTypeName","src":"609:4:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"597:17:12"},"scope":6837,"src":"542:331:12","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":6733,"nodeType":"Block","src":"1036:136:12","statements":[{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6718,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":6716,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6709,"src":"1050:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":6717,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1055:1:12","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1050:6:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":6725,"nodeType":"IfStatement","src":"1046:75:12","trueBody":{"id":6724,"nodeType":"Block","src":"1058:63:12","statements":[{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":6719,"name":"MathError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6659,"src":"1080:9:12","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MathError_$6659_$","typeString":"type(enum CarefulMath.MathError)"}},"id":6720,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"DIVISION_BY_ZERO","nodeType":"MemberAccess","referencedDeclaration":null,"src":"1080:26:12","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},{"argumentTypes":null,"hexValue":"30","id":6721,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1108:1:12","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":6722,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1079:31:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_rational_0_by_1_$","typeString":"tuple(enum CarefulMath.MathError,int_const 0)"}},"functionReturnParameters":6715,"id":6723,"nodeType":"Return","src":"1072:38:12"}]}},{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":6726,"name":"MathError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6659,"src":"1139:9:12","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MathError_$6659_$","typeString":"type(enum CarefulMath.MathError)"}},"id":6727,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"1139:18:12","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6730,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":6728,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6707,"src":"1159:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"argumentTypes":null,"id":6729,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6709,"src":"1163:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1159:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6731,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1138:27:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"functionReturnParameters":6715,"id":6732,"nodeType":"Return","src":"1131:34:12"}]},"documentation":"@dev Integer division of two numbers, truncating the quotient.","id":6734,"implemented":true,"kind":"function","modifiers":[],"name":"divUInt","nodeType":"FunctionDefinition","parameters":{"id":6710,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6707,"name":"a","nodeType":"VariableDeclaration","scope":6734,"src":"980:6:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6706,"name":"uint","nodeType":"ElementaryTypeName","src":"980:4:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":6709,"name":"b","nodeType":"VariableDeclaration","scope":6734,"src":"988:6:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6708,"name":"uint","nodeType":"ElementaryTypeName","src":"988:4:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"979:16:12"},"returnParameters":{"id":6715,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6712,"name":"","nodeType":"VariableDeclaration","scope":6734,"src":"1019:9:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"typeName":{"contractScope":null,"id":6711,"name":"MathError","nodeType":"UserDefinedTypeName","referencedDeclaration":6659,"src":"1019:9:12","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"value":null,"visibility":"internal"},{"constant":false,"id":6714,"name":"","nodeType":"VariableDeclaration","scope":6734,"src":"1030:4:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6713,"name":"uint","nodeType":"ElementaryTypeName","src":"1030:4:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1018:17:12"},"scope":6837,"src":"963:209:12","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":6763,"nodeType":"Block","src":"1375:157:12","statements":[{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6747,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":6745,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6738,"src":"1389:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"argumentTypes":null,"id":6746,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6736,"src":"1394:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1389:6:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":6761,"nodeType":"Block","src":"1462:64:12","statements":[{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":6756,"name":"MathError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6659,"src":"1484:9:12","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MathError_$6659_$","typeString":"type(enum CarefulMath.MathError)"}},"id":6757,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"INTEGER_UNDERFLOW","nodeType":"MemberAccess","referencedDeclaration":null,"src":"1484:27:12","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},{"argumentTypes":null,"hexValue":"30","id":6758,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1513:1:12","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":6759,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1483:32:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_rational_0_by_1_$","typeString":"tuple(enum CarefulMath.MathError,int_const 0)"}},"functionReturnParameters":6744,"id":6760,"nodeType":"Return","src":"1476:39:12"}]},"id":6762,"nodeType":"IfStatement","src":"1385:141:12","trueBody":{"id":6755,"nodeType":"Block","src":"1397:59:12","statements":[{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":6748,"name":"MathError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6659,"src":"1419:9:12","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MathError_$6659_$","typeString":"type(enum CarefulMath.MathError)"}},"id":6749,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"1419:18:12","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6752,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":6750,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6736,"src":"1439:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"id":6751,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6738,"src":"1443:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1439:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6753,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1418:27:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"functionReturnParameters":6744,"id":6754,"nodeType":"Return","src":"1411:34:12"}]}}]},"documentation":"@dev Subtracts two numbers, returns an error on overflow (i.e. if subtrahend is greater than minuend).","id":6764,"implemented":true,"kind":"function","modifiers":[],"name":"subUInt","nodeType":"FunctionDefinition","parameters":{"id":6739,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6736,"name":"a","nodeType":"VariableDeclaration","scope":6764,"src":"1319:6:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6735,"name":"uint","nodeType":"ElementaryTypeName","src":"1319:4:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":6738,"name":"b","nodeType":"VariableDeclaration","scope":6764,"src":"1327:6:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6737,"name":"uint","nodeType":"ElementaryTypeName","src":"1327:4:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1318:16:12"},"returnParameters":{"id":6744,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6741,"name":"","nodeType":"VariableDeclaration","scope":6764,"src":"1358:9:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"typeName":{"contractScope":null,"id":6740,"name":"MathError","nodeType":"UserDefinedTypeName","referencedDeclaration":6659,"src":"1358:9:12","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"value":null,"visibility":"internal"},{"constant":false,"id":6743,"name":"","nodeType":"VariableDeclaration","scope":6764,"src":"1369:4:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6742,"name":"uint","nodeType":"ElementaryTypeName","src":"1369:4:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1357:17:12"},"scope":6837,"src":"1302:230:12","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":6797,"nodeType":"Block","src":"1685:177:12","statements":[{"assignments":[6776],"declarations":[{"constant":false,"id":6776,"name":"c","nodeType":"VariableDeclaration","scope":6797,"src":"1695:6:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6775,"name":"uint","nodeType":"ElementaryTypeName","src":"1695:4:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":6780,"initialValue":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6779,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":6777,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6766,"src":"1704:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"argumentTypes":null,"id":6778,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6768,"src":"1708:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1704:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1695:14:12"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":6781,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6776,"src":"1724:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"argumentTypes":null,"id":6782,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6766,"src":"1729:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1724:6:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":6795,"nodeType":"Block","src":"1793:63:12","statements":[{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":6790,"name":"MathError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6659,"src":"1815:9:12","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MathError_$6659_$","typeString":"type(enum CarefulMath.MathError)"}},"id":6791,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"INTEGER_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":null,"src":"1815:26:12","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},{"argumentTypes":null,"hexValue":"30","id":6792,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1843:1:12","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":6793,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1814:31:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_rational_0_by_1_$","typeString":"tuple(enum CarefulMath.MathError,int_const 0)"}},"functionReturnParameters":6774,"id":6794,"nodeType":"Return","src":"1807:38:12"}]},"id":6796,"nodeType":"IfStatement","src":"1720:136:12","trueBody":{"id":6789,"nodeType":"Block","src":"1732:55:12","statements":[{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":6784,"name":"MathError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6659,"src":"1754:9:12","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MathError_$6659_$","typeString":"type(enum CarefulMath.MathError)"}},"id":6785,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"1754:18:12","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},{"argumentTypes":null,"id":6786,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6776,"src":"1774:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6787,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1753:23:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"functionReturnParameters":6774,"id":6788,"nodeType":"Return","src":"1746:30:12"}]}}]},"documentation":"@dev Adds two numbers, returns an error on overflow.","id":6798,"implemented":true,"kind":"function","modifiers":[],"name":"addUInt","nodeType":"FunctionDefinition","parameters":{"id":6769,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6766,"name":"a","nodeType":"VariableDeclaration","scope":6798,"src":"1629:6:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6765,"name":"uint","nodeType":"ElementaryTypeName","src":"1629:4:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":6768,"name":"b","nodeType":"VariableDeclaration","scope":6798,"src":"1637:6:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6767,"name":"uint","nodeType":"ElementaryTypeName","src":"1637:4:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1628:16:12"},"returnParameters":{"id":6774,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6771,"name":"","nodeType":"VariableDeclaration","scope":6798,"src":"1668:9:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"typeName":{"contractScope":null,"id":6770,"name":"MathError","nodeType":"UserDefinedTypeName","referencedDeclaration":6659,"src":"1668:9:12","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"value":null,"visibility":"internal"},{"constant":false,"id":6773,"name":"","nodeType":"VariableDeclaration","scope":6798,"src":"1679:4:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6772,"name":"uint","nodeType":"ElementaryTypeName","src":"1679:4:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1667:17:12"},"scope":6837,"src":"1612:250:12","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":6835,"nodeType":"Block","src":"2014:175:12","statements":[{"assignments":[6812,6814],"declarations":[{"constant":false,"id":6812,"name":"err0","nodeType":"VariableDeclaration","scope":6835,"src":"2025:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"typeName":{"contractScope":null,"id":6811,"name":"MathError","nodeType":"UserDefinedTypeName","referencedDeclaration":6659,"src":"2025:9:12","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"value":null,"visibility":"internal"},{"constant":false,"id":6814,"name":"sum","nodeType":"VariableDeclaration","scope":6835,"src":"2041:8:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6813,"name":"uint","nodeType":"ElementaryTypeName","src":"2041:4:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":6819,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":6816,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6800,"src":"2061:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":6817,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6802,"src":"2064:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6815,"name":"addUInt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6798,"src":"2053:7:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (enum CarefulMath.MathError,uint256)"}},"id":6818,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2053:13:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"2024:42:12"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"id":6823,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":6820,"name":"err0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6812,"src":"2081:4:12","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":6821,"name":"MathError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6659,"src":"2089:9:12","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MathError_$6659_$","typeString":"type(enum CarefulMath.MathError)"}},"id":6822,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2089:18:12","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"src":"2081:26:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":6829,"nodeType":"IfStatement","src":"2077:73:12","trueBody":{"id":6828,"nodeType":"Block","src":"2109:41:12","statements":[{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":6824,"name":"err0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6812,"src":"2131:4:12","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},{"argumentTypes":null,"hexValue":"30","id":6825,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2137:1:12","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":6826,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2130:9:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_rational_0_by_1_$","typeString":"tuple(enum CarefulMath.MathError,int_const 0)"}},"functionReturnParameters":6810,"id":6827,"nodeType":"Return","src":"2123:16:12"}]}},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":6831,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6814,"src":"2175:3:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":6832,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6804,"src":"2180:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6830,"name":"subUInt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6764,"src":"2167:7:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (enum CarefulMath.MathError,uint256)"}},"id":6833,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2167:15:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"functionReturnParameters":6810,"id":6834,"nodeType":"Return","src":"2160:22:12"}]},"documentation":"@dev add a and b and then subtract c","id":6836,"implemented":true,"kind":"function","modifiers":[],"name":"addThenSubUInt","nodeType":"FunctionDefinition","parameters":{"id":6805,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6800,"name":"a","nodeType":"VariableDeclaration","scope":6836,"src":"1950:6:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6799,"name":"uint","nodeType":"ElementaryTypeName","src":"1950:4:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":6802,"name":"b","nodeType":"VariableDeclaration","scope":6836,"src":"1958:6:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6801,"name":"uint","nodeType":"ElementaryTypeName","src":"1958:4:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":6804,"name":"c","nodeType":"VariableDeclaration","scope":6836,"src":"1966:6:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6803,"name":"uint","nodeType":"ElementaryTypeName","src":"1966:4:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1949:24:12"},"returnParameters":{"id":6810,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6807,"name":"","nodeType":"VariableDeclaration","scope":6836,"src":"1997:9:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"typeName":{"contractScope":null,"id":6806,"name":"MathError","nodeType":"UserDefinedTypeName","referencedDeclaration":6659,"src":"1997:9:12","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"value":null,"visibility":"internal"},{"constant":false,"id":6809,"name":"","nodeType":"VariableDeclaration","scope":6836,"src":"2008:4:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6808,"name":"uint","nodeType":"ElementaryTypeName","src":"2008:4:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1996:17:12"},"scope":6837,"src":"1926:263:12","stateMutability":"pure","superFunction":null,"visibility":"internal"}],"scope":6838,"src":"242:1949:12"}],"src":"0:2192:12"},"id":12},"contracts/Comptroller.sol":{"ast":{"absolutePath":"contracts/Comptroller.sol","exportedSymbols":{"Comptroller":[10531]},"id":10532,"nodeType":"SourceUnit","nodes":[{"id":6839,"literals":["solidity","0.5",".17"],"nodeType":"PragmaDirective","src":"0:23:13"},{"absolutePath":"contracts/CToken.sol","file":"./CToken.sol","id":6840,"nodeType":"ImportDirective","scope":10532,"sourceUnit":6187,"src":"25:22:13","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/CErc20.sol","file":"./CErc20.sol","id":6841,"nodeType":"ImportDirective","scope":10532,"sourceUnit":1144,"src":"48:22:13","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/ErrorReporter.sol","file":"./ErrorReporter.sol","id":6842,"nodeType":"ImportDirective","scope":10532,"sourceUnit":13850,"src":"71:29:13","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/Exponential.sol","file":"./Exponential.sol","id":6843,"nodeType":"ImportDirective","scope":10532,"sourceUnit":14372,"src":"101:27:13","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/PriceOracle.sol","file":"./PriceOracle.sol","id":6844,"nodeType":"ImportDirective","scope":10532,"sourceUnit":18690,"src":"129:27:13","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/ComptrollerInterface.sol","file":"./ComptrollerInterface.sol","id":6845,"nodeType":"ImportDirective","scope":10532,"sourceUnit":12981,"src":"157:36:13","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/ComptrollerStorage.sol","file":"./ComptrollerStorage.sol","id":6846,"nodeType":"ImportDirective","scope":10532,"sourceUnit":13137,"src":"194:34:13","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/Unitroller.sol","file":"./Unitroller.sol","id":6847,"nodeType":"ImportDirective","scope":10532,"sourceUnit":22369,"src":"229:26:13","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/RewardsDistributorDelegate.sol","file":"./RewardsDistributorDelegate.sol","id":6848,"nodeType":"ImportDirective","scope":10532,"sourceUnit":20922,"src":"256:42:13","symbolAliases":[],"unitAlias":""},{"baseContracts":[{"arguments":null,"baseName":{"contractScope":null,"id":6849,"name":"ComptrollerV3Storage","nodeType":"UserDefinedTypeName","referencedDeclaration":13136,"src":"557:20:13","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerV3Storage_$13136","typeString":"contract ComptrollerV3Storage"}},"id":6850,"nodeType":"InheritanceSpecifier","src":"557:20:13"},{"arguments":null,"baseName":{"contractScope":null,"id":6851,"name":"ComptrollerInterface","nodeType":"UserDefinedTypeName","referencedDeclaration":12980,"src":"579:20:13","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerInterface_$12980","typeString":"contract ComptrollerInterface"}},"id":6852,"nodeType":"InheritanceSpecifier","src":"579:20:13"},{"arguments":null,"baseName":{"contractScope":null,"id":6853,"name":"ComptrollerErrorReporter","nodeType":"UserDefinedTypeName","referencedDeclaration":13662,"src":"601:24:13","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerErrorReporter_$13662","typeString":"contract ComptrollerErrorReporter"}},"id":6854,"nodeType":"InheritanceSpecifier","src":"601:24:13"},{"arguments":null,"baseName":{"contractScope":null,"id":6855,"name":"Exponential","nodeType":"UserDefinedTypeName","referencedDeclaration":14371,"src":"627:11:13","typeDescriptions":{"typeIdentifier":"t_contract$_Exponential_$14371","typeString":"contract Exponential"}},"id":6856,"nodeType":"InheritanceSpecifier","src":"627:11:13"}],"contractDependencies":[6837,12980,13029,13045,13114,13136,13662,14371,15066],"contractKind":"contract","documentation":"@title Compound's Comptroller Contract\n@author Compound\n@dev This contract should not to be deployed alone; instead, deploy `Unitroller` (proxy contract) on top of this `Comptroller` (logic/implementation contract).","fullyImplemented":true,"id":10531,"linearizedBaseContracts":[10531,14371,15066,6837,13662,12980,13136,13114,13045,13029],"name":"Comptroller","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":"@notice Emitted when an admin supports a market","id":6860,"name":"MarketListed","nodeType":"EventDefinition","parameters":{"id":6859,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6858,"indexed":false,"name":"cToken","nodeType":"VariableDeclaration","scope":6860,"src":"720:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},"typeName":{"contractScope":null,"id":6857,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"720:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"value":null,"visibility":"internal"}],"src":"719:15:13"},"src":"701:34:13"},{"anonymous":false,"documentation":"@notice Emitted when an admin unsupports a market","id":6864,"name":"MarketUnlisted","nodeType":"EventDefinition","parameters":{"id":6863,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6862,"indexed":false,"name":"cToken","nodeType":"VariableDeclaration","scope":6864,"src":"820:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},"typeName":{"contractScope":null,"id":6861,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"820:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"value":null,"visibility":"internal"}],"src":"819:15:13"},"src":"799:36:13"},{"anonymous":false,"documentation":"@notice Emitted when an account enters a market","id":6870,"name":"MarketEntered","nodeType":"EventDefinition","parameters":{"id":6869,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6866,"indexed":false,"name":"cToken","nodeType":"VariableDeclaration","scope":6870,"src":"917:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},"typeName":{"contractScope":null,"id":6865,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"917:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"value":null,"visibility":"internal"},{"constant":false,"id":6868,"indexed":false,"name":"account","nodeType":"VariableDeclaration","scope":6870,"src":"932:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6867,"name":"address","nodeType":"ElementaryTypeName","src":"932:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"916:32:13"},"src":"897:52:13"},{"anonymous":false,"documentation":"@notice Emitted when an account exits a market","id":6876,"name":"MarketExited","nodeType":"EventDefinition","parameters":{"id":6875,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6872,"indexed":false,"name":"cToken","nodeType":"VariableDeclaration","scope":6876,"src":"1029:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},"typeName":{"contractScope":null,"id":6871,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"1029:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"value":null,"visibility":"internal"},{"constant":false,"id":6874,"indexed":false,"name":"account","nodeType":"VariableDeclaration","scope":6876,"src":"1044:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6873,"name":"address","nodeType":"ElementaryTypeName","src":"1044:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"1028:32:13"},"src":"1010:51:13"},{"anonymous":false,"documentation":"@notice Emitted when close factor is changed by admin","id":6882,"name":"NewCloseFactor","nodeType":"EventDefinition","parameters":{"id":6881,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6878,"indexed":false,"name":"oldCloseFactorMantissa","nodeType":"VariableDeclaration","scope":6882,"src":"1150:27:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6877,"name":"uint","nodeType":"ElementaryTypeName","src":"1150:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":6880,"indexed":false,"name":"newCloseFactorMantissa","nodeType":"VariableDeclaration","scope":6882,"src":"1179:27:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6879,"name":"uint","nodeType":"ElementaryTypeName","src":"1179:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1149:58:13"},"src":"1129:79:13"},{"anonymous":false,"documentation":"@notice Emitted when a collateral factor is changed by admin","id":6890,"name":"NewCollateralFactor","nodeType":"EventDefinition","parameters":{"id":6889,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6884,"indexed":false,"name":"cToken","nodeType":"VariableDeclaration","scope":6890,"src":"1309:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},"typeName":{"contractScope":null,"id":6883,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"1309:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"value":null,"visibility":"internal"},{"constant":false,"id":6886,"indexed":false,"name":"oldCollateralFactorMantissa","nodeType":"VariableDeclaration","scope":6890,"src":"1324:32:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6885,"name":"uint","nodeType":"ElementaryTypeName","src":"1324:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":6888,"indexed":false,"name":"newCollateralFactorMantissa","nodeType":"VariableDeclaration","scope":6890,"src":"1358:32:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6887,"name":"uint","nodeType":"ElementaryTypeName","src":"1358:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1308:83:13"},"src":"1283:109:13"},{"anonymous":false,"documentation":"@notice Emitted when liquidation incentive is changed by admin","id":6896,"name":"NewLiquidationIncentive","nodeType":"EventDefinition","parameters":{"id":6895,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6892,"indexed":false,"name":"oldLiquidationIncentiveMantissa","nodeType":"VariableDeclaration","scope":6896,"src":"1499:36:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6891,"name":"uint","nodeType":"ElementaryTypeName","src":"1499:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":6894,"indexed":false,"name":"newLiquidationIncentiveMantissa","nodeType":"VariableDeclaration","scope":6896,"src":"1537:36:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6893,"name":"uint","nodeType":"ElementaryTypeName","src":"1537:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1498:76:13"},"src":"1469:106:13"},{"anonymous":false,"documentation":"@notice Emitted when price oracle is changed","id":6902,"name":"NewPriceOracle","nodeType":"EventDefinition","parameters":{"id":6901,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6898,"indexed":false,"name":"oldPriceOracle","nodeType":"VariableDeclaration","scope":6902,"src":"1655:26:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_PriceOracle_$18689","typeString":"contract PriceOracle"},"typeName":{"contractScope":null,"id":6897,"name":"PriceOracle","nodeType":"UserDefinedTypeName","referencedDeclaration":18689,"src":"1655:11:13","typeDescriptions":{"typeIdentifier":"t_contract$_PriceOracle_$18689","typeString":"contract PriceOracle"}},"value":null,"visibility":"internal"},{"constant":false,"id":6900,"indexed":false,"name":"newPriceOracle","nodeType":"VariableDeclaration","scope":6902,"src":"1683:26:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_PriceOracle_$18689","typeString":"contract PriceOracle"},"typeName":{"contractScope":null,"id":6899,"name":"PriceOracle","nodeType":"UserDefinedTypeName","referencedDeclaration":18689,"src":"1683:11:13","typeDescriptions":{"typeIdentifier":"t_contract$_PriceOracle_$18689","typeString":"contract PriceOracle"}},"value":null,"visibility":"internal"}],"src":"1654:56:13"},"src":"1634:77:13"},{"anonymous":false,"documentation":"@notice Emitted when pause guardian is changed","id":6908,"name":"NewPauseGuardian","nodeType":"EventDefinition","parameters":{"id":6907,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6904,"indexed":false,"name":"oldPauseGuardian","nodeType":"VariableDeclaration","scope":6908,"src":"1795:24:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6903,"name":"address","nodeType":"ElementaryTypeName","src":"1795:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":6906,"indexed":false,"name":"newPauseGuardian","nodeType":"VariableDeclaration","scope":6908,"src":"1821:24:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6905,"name":"address","nodeType":"ElementaryTypeName","src":"1821:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"1794:52:13"},"src":"1772:75:13"},{"anonymous":false,"documentation":"@notice Emitted when an action is paused globally","id":6914,"name":"ActionPaused","nodeType":"EventDefinition","parameters":{"id":6913,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6910,"indexed":false,"name":"action","nodeType":"VariableDeclaration","scope":6914,"src":"1930:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6909,"name":"string","nodeType":"ElementaryTypeName","src":"1930:6:13","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":null,"visibility":"internal"},{"constant":false,"id":6912,"indexed":false,"name":"pauseState","nodeType":"VariableDeclaration","scope":6914,"src":"1945:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6911,"name":"bool","nodeType":"ElementaryTypeName","src":"1945:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"1929:32:13"},"src":"1911:51:13"},{"anonymous":false,"documentation":"@notice Emitted when an action is paused on a market","id":6922,"name":"ActionPaused","nodeType":"EventDefinition","parameters":{"id":6921,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6916,"indexed":false,"name":"cToken","nodeType":"VariableDeclaration","scope":6922,"src":"2048:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},"typeName":{"contractScope":null,"id":6915,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"2048:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"value":null,"visibility":"internal"},{"constant":false,"id":6918,"indexed":false,"name":"action","nodeType":"VariableDeclaration","scope":6922,"src":"2063:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6917,"name":"string","nodeType":"ElementaryTypeName","src":"2063:6:13","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":null,"visibility":"internal"},{"constant":false,"id":6920,"indexed":false,"name":"pauseState","nodeType":"VariableDeclaration","scope":6922,"src":"2078:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6919,"name":"bool","nodeType":"ElementaryTypeName","src":"2078:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"2047:47:13"},"src":"2029:66:13"},{"anonymous":false,"documentation":"@notice Emitted when the whitelist enforcement is changed","id":6926,"name":"WhitelistEnforcementChanged","nodeType":"EventDefinition","parameters":{"id":6925,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6924,"indexed":false,"name":"enforce","nodeType":"VariableDeclaration","scope":6926,"src":"2201:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6923,"name":"bool","nodeType":"ElementaryTypeName","src":"2201:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"2200:14:13"},"src":"2167:48:13"},{"anonymous":false,"documentation":"@notice Emitted when auto implementations are toggled","id":6930,"name":"AutoImplementationsToggled","nodeType":"EventDefinition","parameters":{"id":6929,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6928,"indexed":false,"name":"enabled","nodeType":"VariableDeclaration","scope":6930,"src":"2316:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6927,"name":"bool","nodeType":"ElementaryTypeName","src":"2316:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"2315:14:13"},"src":"2283:47:13"},{"anonymous":false,"documentation":"@notice Emitted when supply cap for a cToken is changed","id":6936,"name":"NewSupplyCap","nodeType":"EventDefinition","parameters":{"id":6935,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6932,"indexed":true,"name":"cToken","nodeType":"VariableDeclaration","scope":6936,"src":"2419:21:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},"typeName":{"contractScope":null,"id":6931,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"2419:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"value":null,"visibility":"internal"},{"constant":false,"id":6934,"indexed":false,"name":"newSupplyCap","nodeType":"VariableDeclaration","scope":6936,"src":"2442:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6933,"name":"uint","nodeType":"ElementaryTypeName","src":"2442:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2418:42:13"},"src":"2400:61:13"},{"anonymous":false,"documentation":"@notice Emitted when borrow cap for a cToken is changed","id":6942,"name":"NewBorrowCap","nodeType":"EventDefinition","parameters":{"id":6941,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6938,"indexed":true,"name":"cToken","nodeType":"VariableDeclaration","scope":6942,"src":"2550:21:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},"typeName":{"contractScope":null,"id":6937,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"2550:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"value":null,"visibility":"internal"},{"constant":false,"id":6940,"indexed":false,"name":"newBorrowCap","nodeType":"VariableDeclaration","scope":6942,"src":"2573:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6939,"name":"uint","nodeType":"ElementaryTypeName","src":"2573:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2549:42:13"},"src":"2531:61:13"},{"anonymous":false,"documentation":"@notice Emitted when borrow cap guardian is changed","id":6948,"name":"NewBorrowCapGuardian","nodeType":"EventDefinition","parameters":{"id":6947,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6944,"indexed":false,"name":"oldBorrowCapGuardian","nodeType":"VariableDeclaration","scope":6948,"src":"2685:28:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6943,"name":"address","nodeType":"ElementaryTypeName","src":"2685:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":6946,"indexed":false,"name":"newBorrowCapGuardian","nodeType":"VariableDeclaration","scope":6948,"src":"2715:28:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6945,"name":"address","nodeType":"ElementaryTypeName","src":"2715:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"2684:60:13"},"src":"2658:87:13"},{"anonymous":false,"documentation":"@notice Emitted when a new RewardsDistributor contract is added to hooks","id":6952,"name":"AddedRewardsDistributor","nodeType":"EventDefinition","parameters":{"id":6951,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6950,"indexed":false,"name":"rewardsDistributor","nodeType":"VariableDeclaration","scope":6952,"src":"2862:26:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6949,"name":"address","nodeType":"ElementaryTypeName","src":"2862:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"2861:28:13"},"src":"2832:58:13"},{"constant":true,"id":6955,"name":"closeFactorMinMantissa","nodeType":"VariableDeclaration","scope":10531,"src":"2964:55:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6953,"name":"uint","nodeType":"ElementaryTypeName","src":"2964:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"argumentTypes":null,"hexValue":"302e3035653138","id":6954,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3012:7:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_50000000000000000_by_1","typeString":"int_const 50000000000000000"},"value":"0.05e18"},"visibility":"internal"},{"constant":true,"id":6958,"name":"closeFactorMaxMantissa","nodeType":"VariableDeclaration","scope":10531,"src":"3088:54:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6956,"name":"uint","nodeType":"ElementaryTypeName","src":"3088:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"argumentTypes":null,"hexValue":"302e39653138","id":6957,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3136:6:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_900000000000000000_by_1","typeString":"int_const 900000000000000000"},"value":"0.9e18"},"visibility":"internal"},{"constant":true,"id":6961,"name":"collateralFactorMaxMantissa","nodeType":"VariableDeclaration","scope":10531,"src":"3213:59:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6959,"name":"uint","nodeType":"ElementaryTypeName","src":"3213:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"argumentTypes":null,"hexValue":"302e39653138","id":6960,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3266:6:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_900000000000000000_by_1","typeString":"int_const 900000000000000000"},"value":"0.9e18"},"visibility":"internal"},{"constant":true,"id":6964,"name":"liquidationIncentiveMinMantissa","nodeType":"VariableDeclaration","scope":10531,"src":"3354:63:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6962,"name":"uint","nodeType":"ElementaryTypeName","src":"3354:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"argumentTypes":null,"hexValue":"312e30653138","id":6963,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3411:6:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1.0e18"},"visibility":"internal"},{"constant":true,"id":6967,"name":"liquidationIncentiveMaxMantissa","nodeType":"VariableDeclaration","scope":10531,"src":"3502:63:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6965,"name":"uint","nodeType":"ElementaryTypeName","src":"3502:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"argumentTypes":null,"hexValue":"312e35653138","id":6966,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3559:6:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1500000000000000000_by_1","typeString":"int_const 1500000000000000000"},"value":"1.5e18"},"visibility":"internal"},{"body":{"id":6985,"nodeType":"Block","src":"3901:92:13","statements":[{"assignments":[6978],"declarations":[{"constant":false,"id":6978,"name":"assetsIn","nodeType":"VariableDeclaration","scope":6985,"src":"3911:24:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_memory_ptr","typeString":"contract CToken[]"},"typeName":{"baseType":{"contractScope":null,"id":6976,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"3911:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":6977,"length":null,"nodeType":"ArrayTypeName","src":"3911:8:13","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_storage_ptr","typeString":"contract CToken[]"}},"value":null,"visibility":"internal"}],"id":6982,"initialValue":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":6979,"name":"accountAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13044,"src":"3938:13:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_array$_t_contract$_CToken_$6186_$dyn_storage_$","typeString":"mapping(address => contract CToken[] storage ref)"}},"id":6981,"indexExpression":{"argumentTypes":null,"id":6980,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6969,"src":"3952:7:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3938:22:13","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_storage","typeString":"contract CToken[] storage ref"}},"nodeType":"VariableDeclarationStatement","src":"3911:49:13"},{"expression":{"argumentTypes":null,"id":6983,"name":"assetsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6978,"src":"3978:8:13","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_memory_ptr","typeString":"contract CToken[] memory"}},"functionReturnParameters":6974,"id":6984,"nodeType":"Return","src":"3971:15:13"}]},"documentation":"@notice Returns the assets an account has entered\n@param account The address of the account to pull assets for\n@return A dynamic list with the assets the account has entered","id":6986,"implemented":true,"kind":"function","modifiers":[],"name":"getAssetsIn","nodeType":"FunctionDefinition","parameters":{"id":6970,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6969,"name":"account","nodeType":"VariableDeclaration","scope":6986,"src":"3844:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6968,"name":"address","nodeType":"ElementaryTypeName","src":"3844:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"3843:17:13"},"returnParameters":{"id":6974,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6973,"name":"","nodeType":"VariableDeclaration","scope":6986,"src":"3884:15:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_memory_ptr","typeString":"contract CToken[]"},"typeName":{"baseType":{"contractScope":null,"id":6971,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"3884:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":6972,"length":null,"nodeType":"ArrayTypeName","src":"3884:8:13","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_storage_ptr","typeString":"contract CToken[]"}},"value":null,"visibility":"internal"}],"src":"3883:17:13"},"scope":10531,"src":"3823:170:13","stateMutability":"view","superFunction":null,"visibility":"external"},{"body":{"id":7004,"nodeType":"Block","src":"4348:75:13","statements":[{"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":6995,"name":"markets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13060,"src":"4365:7:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Market_$13056_storage_$","typeString":"mapping(address => struct ComptrollerV2Storage.Market storage ref)"}},"id":6999,"indexExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":6997,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6990,"src":"4381:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":6996,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4373:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":6998,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4373:15:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4365:24:13","typeDescriptions":{"typeIdentifier":"t_struct$_Market_$13056_storage","typeString":"struct ComptrollerV2Storage.Market storage ref"}},"id":7000,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"accountMembership","nodeType":"MemberAccess","referencedDeclaration":13055,"src":"4365:42:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":7002,"indexExpression":{"argumentTypes":null,"id":7001,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6988,"src":"4408:7:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4365:51:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":6994,"id":7003,"nodeType":"Return","src":"4358:58:13"}]},"documentation":"@notice Returns whether the given account is entered in the given asset\n@param account The address of the account to check\n@param cToken The cToken to check\n@return True if the account is in the asset, otherwise false.","id":7005,"implemented":true,"kind":"function","modifiers":[],"name":"checkMembership","nodeType":"FunctionDefinition","parameters":{"id":6991,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6988,"name":"account","nodeType":"VariableDeclaration","scope":7005,"src":"4287:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6987,"name":"address","nodeType":"ElementaryTypeName","src":"4287:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":6990,"name":"cToken","nodeType":"VariableDeclaration","scope":7005,"src":"4304:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},"typeName":{"contractScope":null,"id":6989,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"4304:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"value":null,"visibility":"internal"}],"src":"4286:32:13"},"returnParameters":{"id":6994,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6993,"name":"","nodeType":"VariableDeclaration","scope":7005,"src":"4342:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6992,"name":"bool","nodeType":"ElementaryTypeName","src":"4342:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"4341:6:13"},"scope":10531,"src":"4262:161:13","stateMutability":"view","superFunction":null,"visibility":"external"},{"body":{"id":7063,"nodeType":"Block","src":"4761:289:13","statements":[{"assignments":[7015],"declarations":[{"constant":false,"id":7015,"name":"len","nodeType":"VariableDeclaration","scope":7063,"src":"4771:8:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7014,"name":"uint","nodeType":"ElementaryTypeName","src":"4771:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":7018,"initialValue":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7016,"name":"cTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7008,"src":"4782:7:13","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":7017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"4782:14:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4771:25:13"},{"assignments":[7022],"declarations":[{"constant":false,"id":7022,"name":"results","nodeType":"VariableDeclaration","scope":7063,"src":"4807:21:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":7020,"name":"uint","nodeType":"ElementaryTypeName","src":"4807:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7021,"length":null,"nodeType":"ArrayTypeName","src":"4807:6:13","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"value":null,"visibility":"internal"}],"id":7028,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":7026,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7015,"src":"4842:3:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7025,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"4831:10:13","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":7023,"name":"uint","nodeType":"ElementaryTypeName","src":"4835:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7024,"length":null,"nodeType":"ArrayTypeName","src":"4835:6:13","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":7027,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4831:15:13","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"4807:39:13"},{"body":{"id":7059,"nodeType":"Block","src":"4887:132:13","statements":[{"assignments":[7040],"declarations":[{"constant":false,"id":7040,"name":"cToken","nodeType":"VariableDeclaration","scope":7059,"src":"4901:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},"typeName":{"contractScope":null,"id":7039,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"4901:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"value":null,"visibility":"internal"}],"id":7046,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":7042,"name":"cTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7008,"src":"4924:7:13","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":7044,"indexExpression":{"argumentTypes":null,"id":7043,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7030,"src":"4932:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4924:10:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7041,"name":"CToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6186,"src":"4917:6:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CToken_$6186_$","typeString":"type(contract CToken)"}},"id":7045,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4917:18:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"nodeType":"VariableDeclarationStatement","src":"4901:34:13"},{"expression":{"argumentTypes":null,"id":7057,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":7047,"name":"results","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7022,"src":"4950:7:13","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":7049,"indexExpression":{"argumentTypes":null,"id":7048,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7030,"src":"4958:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4950:10:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":7052,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7040,"src":"4988:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7053,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"4996:3:13","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7054,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"4996:10:13","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":7051,"name":"addToMarketInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7151,"src":"4968:19:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_CToken_$6186_$_t_address_$returns$_t_enum$_Error_$13574_$","typeString":"function (contract CToken,address) returns (enum ComptrollerErrorReporter.Error)"}},"id":7055,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4968:39:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":7050,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4963:4:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":7056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4963:45:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4950:58:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7058,"nodeType":"ExpressionStatement","src":"4950:58:13"}]},"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7035,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7033,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7030,"src":"4873:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"id":7034,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7015,"src":"4877:3:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4873:7:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7060,"initializationExpression":{"assignments":[7030],"declarations":[{"constant":false,"id":7030,"name":"i","nodeType":"VariableDeclaration","scope":7060,"src":"4861:6:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7029,"name":"uint","nodeType":"ElementaryTypeName","src":"4861:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":7032,"initialValue":{"argumentTypes":null,"hexValue":"30","id":7031,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4870:1:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"4861:10:13"},"loopExpression":{"expression":{"argumentTypes":null,"id":7037,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"4882:3:13","subExpression":{"argumentTypes":null,"id":7036,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7030,"src":"4882:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7038,"nodeType":"ExpressionStatement","src":"4882:3:13"},"nodeType":"ForStatement","src":"4856:163:13"},{"expression":{"argumentTypes":null,"id":7061,"name":"results","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7022,"src":"5036:7:13","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"functionReturnParameters":7013,"id":7062,"nodeType":"Return","src":"5029:14:13"}]},"documentation":"@notice Add assets to be included in account liquidity calculation\n@param cTokens The list of addresses of the cToken markets to be enabled\n@return Success indicator for whether each corresponding market was entered","id":7064,"implemented":true,"kind":"function","modifiers":[],"name":"enterMarkets","nodeType":"FunctionDefinition","parameters":{"id":7009,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7008,"name":"cTokens","nodeType":"VariableDeclaration","scope":7064,"src":"4704:24:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":7006,"name":"address","nodeType":"ElementaryTypeName","src":"4704:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7007,"length":null,"nodeType":"ArrayTypeName","src":"4704:9:13","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"value":null,"visibility":"internal"}],"src":"4703:26:13"},"returnParameters":{"id":7013,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7012,"name":"","nodeType":"VariableDeclaration","scope":7064,"src":"4746:13:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":7010,"name":"uint","nodeType":"ElementaryTypeName","src":"4746:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7011,"length":null,"nodeType":"ArrayTypeName","src":"4746:6:13","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"value":null,"visibility":"internal"}],"src":"4745:15:13"},"scope":10531,"src":"4682:368:13","stateMutability":"nonpayable","superFunction":12759,"visibility":"public"},{"body":{"id":7150,"nodeType":"Block","src":"5415:1139:13","statements":[{"assignments":[7074],"declarations":[{"constant":false,"id":7074,"name":"marketToJoin","nodeType":"VariableDeclaration","scope":7150,"src":"5425:27:13","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Market_$13056_storage_ptr","typeString":"struct ComptrollerV2Storage.Market"},"typeName":{"contractScope":null,"id":7073,"name":"Market","nodeType":"UserDefinedTypeName","referencedDeclaration":13056,"src":"5425:6:13","typeDescriptions":{"typeIdentifier":"t_struct$_Market_$13056_storage_ptr","typeString":"struct ComptrollerV2Storage.Market"}},"value":null,"visibility":"internal"}],"id":7080,"initialValue":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":7075,"name":"markets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13060,"src":"5455:7:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Market_$13056_storage_$","typeString":"mapping(address => struct ComptrollerV2Storage.Market storage ref)"}},"id":7079,"indexExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":7077,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7066,"src":"5471:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":7076,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5463:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":7078,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5463:15:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5455:24:13","typeDescriptions":{"typeIdentifier":"t_struct$_Market_$13056_storage","typeString":"struct ComptrollerV2Storage.Market storage ref"}},"nodeType":"VariableDeclarationStatement","src":"5425:54:13"},{"condition":{"argumentTypes":null,"id":7083,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"5494:22:13","subExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7081,"name":"marketToJoin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7074,"src":"5495:12:13","typeDescriptions":{"typeIdentifier":"t_struct$_Market_$13056_storage_ptr","typeString":"struct ComptrollerV2Storage.Market storage pointer"}},"id":7082,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"isListed","nodeType":"MemberAccess","referencedDeclaration":13049,"src":"5495:21:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":7088,"nodeType":"IfStatement","src":"5490:132:13","trueBody":{"id":7087,"nodeType":"Block","src":"5518:104:13","statements":[{"expression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7084,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"5588:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":7085,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"MARKET_NOT_LISTED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"5588:23:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},"functionReturnParameters":7072,"id":7086,"nodeType":"Return","src":"5581:30:13"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7089,"name":"marketToJoin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7074,"src":"5636:12:13","typeDescriptions":{"typeIdentifier":"t_struct$_Market_$13056_storage_ptr","typeString":"struct ComptrollerV2Storage.Market storage pointer"}},"id":7090,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"accountMembership","nodeType":"MemberAccess","referencedDeclaration":13055,"src":"5636:30:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":7092,"indexExpression":{"argumentTypes":null,"id":7091,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7068,"src":"5667:8:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5636:40:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"74727565","id":7093,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5680:4:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"5636:48:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":7099,"nodeType":"IfStatement","src":"5632:130:13","trueBody":{"id":7098,"nodeType":"Block","src":"5686:76:13","statements":[{"expression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7095,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"5737:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":7096,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"5737:14:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},"functionReturnParameters":7072,"id":7097,"nodeType":"Return","src":"5730:21:13"}]}},{"expression":{"argumentTypes":null,"id":7106,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7100,"name":"marketToJoin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7074,"src":"6143:12:13","typeDescriptions":{"typeIdentifier":"t_struct$_Market_$13056_storage_ptr","typeString":"struct ComptrollerV2Storage.Market storage pointer"}},"id":7103,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"accountMembership","nodeType":"MemberAccess","referencedDeclaration":13055,"src":"6143:30:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":7104,"indexExpression":{"argumentTypes":null,"id":7102,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7068,"src":"6174:8:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6143:40:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"hexValue":"74727565","id":7105,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6186:4:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"6143:47:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7107,"nodeType":"ExpressionStatement","src":"6143:47:13"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":7112,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7066,"src":"6229:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":7108,"name":"accountAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13044,"src":"6200:13:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_array$_t_contract$_CToken_$6186_$dyn_storage_$","typeString":"mapping(address => contract CToken[] storage ref)"}},"id":7110,"indexExpression":{"argumentTypes":null,"id":7109,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7068,"src":"6214:8:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6200:23:13","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_storage","typeString":"contract CToken[] storage ref"}},"id":7111,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"push","nodeType":"MemberAccess","referencedDeclaration":null,"src":"6200:28:13","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_contract$_CToken_$6186_$returns$_t_uint256_$","typeString":"function (contract CToken) returns (uint256)"}},"id":7113,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6200:36:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7114,"nodeType":"ExpressionStatement","src":"6200:36:13"},{"condition":{"argumentTypes":null,"id":7118,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"6290:20:13","subExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":7115,"name":"borrowers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13067,"src":"6291:9:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":7117,"indexExpression":{"argumentTypes":null,"id":7116,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7068,"src":"6301:8:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6291:19:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":7141,"nodeType":"IfStatement","src":"6286:183:13","trueBody":{"id":7140,"nodeType":"Block","src":"6312:157:13","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":7122,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7068,"src":"6344:8:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":7119,"name":"allBorrowers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13070,"src":"6326:12:13","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":7121,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"push","nodeType":"MemberAccess","referencedDeclaration":null,"src":"6326:17:13","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_address_$returns$_t_uint256_$","typeString":"function (address) returns (uint256)"}},"id":7123,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6326:27:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7124,"nodeType":"ExpressionStatement","src":"6326:27:13"},{"expression":{"argumentTypes":null,"id":7129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":7125,"name":"borrowers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13067,"src":"6367:9:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":7127,"indexExpression":{"argumentTypes":null,"id":7126,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7068,"src":"6377:8:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6367:19:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"hexValue":"74727565","id":7128,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6389:4:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"6367:26:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7130,"nodeType":"ExpressionStatement","src":"6367:26:13"},{"expression":{"argumentTypes":null,"id":7138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":7131,"name":"borrowerIndexes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13074,"src":"6407:15:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7133,"indexExpression":{"argumentTypes":null,"id":7132,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7068,"src":"6423:8:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6407:25:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7137,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7134,"name":"allBorrowers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13070,"src":"6435:12:13","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":7135,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"6435:19:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"hexValue":"31","id":7136,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6457:1:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6435:23:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6407:51:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7139,"nodeType":"ExpressionStatement","src":"6407:51:13"}]}},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":7143,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7066,"src":"6498:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},{"argumentTypes":null,"id":7144,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7068,"src":"6506:8:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},{"typeIdentifier":"t_address","typeString":"address"}],"id":7142,"name":"MarketEntered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6870,"src":"6484:13:13","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_contract$_CToken_$6186_$_t_address_$returns$__$","typeString":"function (contract CToken,address)"}},"id":7145,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6484:31:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7146,"nodeType":"EmitStatement","src":"6479:36:13"},{"expression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7147,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"6533:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":7148,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"6533:14:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},"functionReturnParameters":7072,"id":7149,"nodeType":"Return","src":"6526:21:13"}]},"documentation":"@notice Add the market to the borrower's \"assets in\" for liquidity calculations\n@param cToken The market to enter\n@param borrower The address of the account to modify\n@return Success indicator for whether the market was entered","id":7151,"implemented":true,"kind":"function","modifiers":[],"name":"addToMarketInternal","nodeType":"FunctionDefinition","parameters":{"id":7069,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7066,"name":"cToken","nodeType":"VariableDeclaration","scope":7151,"src":"5357:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},"typeName":{"contractScope":null,"id":7065,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"5357:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"value":null,"visibility":"internal"},{"constant":false,"id":7068,"name":"borrower","nodeType":"VariableDeclaration","scope":7151,"src":"5372:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7067,"name":"address","nodeType":"ElementaryTypeName","src":"5372:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"5356:33:13"},"returnParameters":{"id":7072,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7071,"name":"","nodeType":"VariableDeclaration","scope":7151,"src":"5408:5:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"},"typeName":{"contractScope":null,"id":7070,"name":"Error","nodeType":"UserDefinedTypeName","referencedDeclaration":13574,"src":"5408:5:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},"value":null,"visibility":"internal"}],"src":"5407:7:13"},"scope":10531,"src":"5328:1226:13","stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},{"body":{"id":7390,"nodeType":"Block","src":"7006:3168:13","statements":[{"assignments":[7159],"declarations":[{"constant":false,"id":7159,"name":"cToken","nodeType":"VariableDeclaration","scope":7390,"src":"7016:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},"typeName":{"contractScope":null,"id":7158,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"7016:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"value":null,"visibility":"internal"}],"id":7163,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":7161,"name":"cTokenAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7153,"src":"7039:13:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7160,"name":"CToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6186,"src":"7032:6:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CToken_$6186_$","typeString":"type(contract CToken)"}},"id":7162,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7032:21:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"nodeType":"VariableDeclarationStatement","src":"7016:37:13"},{"assignments":[7165,7167,7169,null],"declarations":[{"constant":false,"id":7165,"name":"oErr","nodeType":"VariableDeclaration","scope":7390,"src":"7142:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7164,"name":"uint","nodeType":"ElementaryTypeName","src":"7142:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":7167,"name":"tokensHeld","nodeType":"VariableDeclaration","scope":7390,"src":"7153:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7166,"name":"uint","nodeType":"ElementaryTypeName","src":"7153:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":7169,"name":"amountOwed","nodeType":"VariableDeclaration","scope":7390,"src":"7170:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7168,"name":"uint","nodeType":"ElementaryTypeName","src":"7170:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},null],"id":7175,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7172,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"7217:3:13","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7173,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"7217:10:13","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"argumentTypes":null,"id":7170,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7159,"src":"7191:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":7171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAccountSnapshot","nodeType":"MemberAccess","referencedDeclaration":2903,"src":"7191:25:13","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"function (address) view external returns (uint256,uint256,uint256,uint256)"}},"id":7174,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7191:37:13","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256,uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"7141:87:13"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7177,"name":"oErr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7165,"src":"7246:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":7178,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7254:1:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7246:9:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"657869744d61726b65743a206765744163636f756e74536e617073686f74206661696c6564","id":7180,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7257:39:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_cafc76453fc83e3f10c72a8efc5040b77c059e2a8eb73233cb1b8ec3356ff222","typeString":"literal_string \"exitMarket: getAccountSnapshot failed\""},"value":"exitMarket: getAccountSnapshot failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cafc76453fc83e3f10c72a8efc5040b77c059e2a8eb73233cb1b8ec3356ff222","typeString":"literal_string \"exitMarket: getAccountSnapshot failed\""}],"id":7176,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"7238:7:13","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7181,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7238:59:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7182,"nodeType":"ExpressionStatement","src":"7238:59:13"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7183,"name":"amountOwed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7169,"src":"7392:10:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"hexValue":"30","id":7184,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7406:1:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7392:15:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":7194,"nodeType":"IfStatement","src":"7388:125:13","trueBody":{"id":7193,"nodeType":"Block","src":"7409:104:13","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7187,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"7435:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":7188,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NONZERO_BORROW_BALANCE","nodeType":"MemberAccess","referencedDeclaration":null,"src":"7435:28:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7189,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13603,"src":"7465:11:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13603_$","typeString":"type(enum ComptrollerErrorReporter.FailureInfo)"}},"id":7190,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"EXIT_MARKET_BALANCE_OWED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"7465:36:13","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}],"id":7186,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13635,"src":"7430:4:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13574_$_t_enum$_FailureInfo_$13603_$returns$_t_uint256_$","typeString":"function (enum ComptrollerErrorReporter.Error,enum ComptrollerErrorReporter.FailureInfo) returns (uint256)"}},"id":7191,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7430:72:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7157,"id":7192,"nodeType":"Return","src":"7423:79:13"}]}},{"assignments":[7196],"declarations":[{"constant":false,"id":7196,"name":"allowed","nodeType":"VariableDeclaration","scope":7390,"src":"7603:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7195,"name":"uint","nodeType":"ElementaryTypeName","src":"7603:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":7203,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":7198,"name":"cTokenAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7153,"src":"7640:13:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7199,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"7655:3:13","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7200,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"7655:10:13","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"id":7201,"name":"tokensHeld","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7167,"src":"7667:10:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7197,"name":"redeemAllowedInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7705,"src":"7618:21:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,address,uint256) view returns (uint256)"}},"id":7202,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7618:60:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7603:75:13"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7206,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7204,"name":"allowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7196,"src":"7692:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"hexValue":"30","id":7205,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7703:1:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7692:12:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":7216,"nodeType":"IfStatement","src":"7688:121:13","trueBody":{"id":7215,"nodeType":"Block","src":"7706:103:13","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7208,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"7738:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":7209,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"REJECTION","nodeType":"MemberAccess","referencedDeclaration":null,"src":"7738:15:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7210,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13603,"src":"7755:11:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13603_$","typeString":"type(enum ComptrollerErrorReporter.FailureInfo)"}},"id":7211,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"EXIT_MARKET_REJECTION","nodeType":"MemberAccess","referencedDeclaration":null,"src":"7755:33:13","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}},{"argumentTypes":null,"id":7212,"name":"allowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7196,"src":"7790:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7207,"name":"failOpaque","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13661,"src":"7727:10:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13574_$_t_enum$_FailureInfo_$13603_$_t_uint256_$returns$_t_uint256_$","typeString":"function (enum ComptrollerErrorReporter.Error,enum ComptrollerErrorReporter.FailureInfo,uint256) returns (uint256)"}},"id":7213,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7727:71:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7157,"id":7214,"nodeType":"Return","src":"7720:78:13"}]}},{"assignments":[7218],"declarations":[{"constant":false,"id":7218,"name":"marketToExit","nodeType":"VariableDeclaration","scope":7390,"src":"7819:27:13","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Market_$13056_storage_ptr","typeString":"struct ComptrollerV2Storage.Market"},"typeName":{"contractScope":null,"id":7217,"name":"Market","nodeType":"UserDefinedTypeName","referencedDeclaration":13056,"src":"7819:6:13","typeDescriptions":{"typeIdentifier":"t_struct$_Market_$13056_storage_ptr","typeString":"struct ComptrollerV2Storage.Market"}},"value":null,"visibility":"internal"}],"id":7224,"initialValue":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":7219,"name":"markets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13060,"src":"7849:7:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Market_$13056_storage_$","typeString":"mapping(address => struct ComptrollerV2Storage.Market storage ref)"}},"id":7223,"indexExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":7221,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7159,"src":"7865:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":7220,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7857:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":7222,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7857:15:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7849:24:13","typeDescriptions":{"typeIdentifier":"t_struct$_Market_$13056_storage","typeString":"struct ComptrollerV2Storage.Market storage ref"}},"nodeType":"VariableDeclarationStatement","src":"7819:54:13"},{"condition":{"argumentTypes":null,"id":7230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"7963:43:13","subExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7225,"name":"marketToExit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7218,"src":"7964:12:13","typeDescriptions":{"typeIdentifier":"t_struct$_Market_$13056_storage_ptr","typeString":"struct ComptrollerV2Storage.Market storage pointer"}},"id":7226,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"accountMembership","nodeType":"MemberAccess","referencedDeclaration":13055,"src":"7964:30:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":7229,"indexExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7227,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"7995:3:13","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7228,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"7995:10:13","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7964:42:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":7237,"nodeType":"IfStatement","src":"7959:101:13","trueBody":{"id":7236,"nodeType":"Block","src":"8008:52:13","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7232,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"8034:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":7233,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"8034:14:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":7231,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8029:4:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":7234,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8029:20:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7157,"id":7235,"nodeType":"Return","src":"8022:27:13"}]}},{"expression":{"argumentTypes":null,"id":7243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"8123:49:13","subExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7238,"name":"marketToExit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7218,"src":"8130:12:13","typeDescriptions":{"typeIdentifier":"t_struct$_Market_$13056_storage_ptr","typeString":"struct ComptrollerV2Storage.Market storage pointer"}},"id":7239,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"accountMembership","nodeType":"MemberAccess","referencedDeclaration":13055,"src":"8130:30:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":7242,"indexExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7240,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"8161:3:13","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7241,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"8161:10:13","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8130:42:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7244,"nodeType":"ExpressionStatement","src":"8123:49:13"},{"assignments":[7248],"declarations":[{"constant":false,"id":7248,"name":"userAssetList","nodeType":"VariableDeclaration","scope":7390,"src":"8296:29:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_memory_ptr","typeString":"contract CToken[]"},"typeName":{"baseType":{"contractScope":null,"id":7246,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"8296:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":7247,"length":null,"nodeType":"ArrayTypeName","src":"8296:8:13","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_storage_ptr","typeString":"contract CToken[]"}},"value":null,"visibility":"internal"}],"id":7253,"initialValue":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":7249,"name":"accountAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13044,"src":"8328:13:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_array$_t_contract$_CToken_$6186_$dyn_storage_$","typeString":"mapping(address => contract CToken[] storage ref)"}},"id":7252,"indexExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7250,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"8342:3:13","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7251,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"8342:10:13","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8328:25:13","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_storage","typeString":"contract CToken[] storage ref"}},"nodeType":"VariableDeclarationStatement","src":"8296:57:13"},{"assignments":[7255],"declarations":[{"constant":false,"id":7255,"name":"len","nodeType":"VariableDeclaration","scope":7390,"src":"8363:8:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7254,"name":"uint","nodeType":"ElementaryTypeName","src":"8363:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":7258,"initialValue":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7256,"name":"userAssetList","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7248,"src":"8374:13:13","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_memory_ptr","typeString":"contract CToken[] memory"}},"id":7257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"8374:20:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8363:31:13"},{"assignments":[7260],"declarations":[{"constant":false,"id":7260,"name":"assetIndex","nodeType":"VariableDeclaration","scope":7390,"src":"8404:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7259,"name":"uint","nodeType":"ElementaryTypeName","src":"8404:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":7262,"initialValue":{"argumentTypes":null,"id":7261,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7255,"src":"8422:3:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8404:21:13"},{"body":{"id":7285,"nodeType":"Block","src":"8466:126:13","statements":[{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},"id":7277,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":7273,"name":"userAssetList","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7248,"src":"8484:13:13","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_memory_ptr","typeString":"contract CToken[] memory"}},"id":7275,"indexExpression":{"argumentTypes":null,"id":7274,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7264,"src":"8498:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8484:16:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":7276,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7159,"src":"8504:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"src":"8484:26:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":7284,"nodeType":"IfStatement","src":"8480:102:13","trueBody":{"id":7283,"nodeType":"Block","src":"8512:70:13","statements":[{"expression":{"argumentTypes":null,"id":7280,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":7278,"name":"assetIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7260,"src":"8530:10:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":7279,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7264,"src":"8543:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8530:14:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7281,"nodeType":"ExpressionStatement","src":"8530:14:13"},{"id":7282,"nodeType":"Break","src":"8562:5:13"}]}}]},"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7267,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7264,"src":"8452:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"id":7268,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7255,"src":"8456:3:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8452:7:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7286,"initializationExpression":{"assignments":[7264],"declarations":[{"constant":false,"id":7264,"name":"i","nodeType":"VariableDeclaration","scope":7286,"src":"8440:6:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7263,"name":"uint","nodeType":"ElementaryTypeName","src":"8440:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":7266,"initialValue":{"argumentTypes":null,"hexValue":"30","id":7265,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8449:1:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"8440:10:13"},"loopExpression":{"expression":{"argumentTypes":null,"id":7271,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"8461:3:13","subExpression":{"argumentTypes":null,"id":7270,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7264,"src":"8461:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7272,"nodeType":"ExpressionStatement","src":"8461:3:13"},"nodeType":"ForStatement","src":"8435:157:13"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7288,"name":"assetIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7260,"src":"8705:10:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"id":7289,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7255,"src":"8718:3:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8705:16:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":7287,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22539,"src":"8698:6:13","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":7291,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8698:24:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7292,"nodeType":"ExpressionStatement","src":"8698:24:13"},{"assignments":[7296],"declarations":[{"constant":false,"id":7296,"name":"storedList","nodeType":"VariableDeclaration","scope":7390,"src":"8821:27:13","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_storage_ptr","typeString":"contract CToken[]"},"typeName":{"baseType":{"contractScope":null,"id":7294,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"8821:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":7295,"length":null,"nodeType":"ArrayTypeName","src":"8821:8:13","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_storage_ptr","typeString":"contract CToken[]"}},"value":null,"visibility":"internal"}],"id":7301,"initialValue":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":7297,"name":"accountAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13044,"src":"8851:13:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_array$_t_contract$_CToken_$6186_$dyn_storage_$","typeString":"mapping(address => contract CToken[] storage ref)"}},"id":7300,"indexExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7298,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"8865:3:13","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"8865:10:13","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8851:25:13","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_storage","typeString":"contract CToken[] storage ref"}},"nodeType":"VariableDeclarationStatement","src":"8821:55:13"},{"expression":{"argumentTypes":null,"id":7311,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":7302,"name":"storedList","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7296,"src":"8886:10:13","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_storage_ptr","typeString":"contract CToken[] storage pointer"}},"id":7304,"indexExpression":{"argumentTypes":null,"id":7303,"name":"assetIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7260,"src":"8897:10:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8886:22:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":7305,"name":"storedList","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7296,"src":"8911:10:13","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_storage_ptr","typeString":"contract CToken[] storage pointer"}},"id":7310,"indexExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7309,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7306,"name":"storedList","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7296,"src":"8922:10:13","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_storage_ptr","typeString":"contract CToken[] storage pointer"}},"id":7307,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"8922:17:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"hexValue":"31","id":7308,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8942:1:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8922:21:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8911:33:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"src":"8886:58:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":7312,"nodeType":"ExpressionStatement","src":"8886:58:13"},{"expression":{"argumentTypes":null,"id":7316,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"8954:19:13","subExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7313,"name":"storedList","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7296,"src":"8954:10:13","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_storage_ptr","typeString":"contract CToken[] storage pointer"}},"id":7315,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"8954:17:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7317,"nodeType":"ExpressionStatement","src":"8954:19:13"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7321,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7318,"name":"storedList","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7296,"src":"9077:10:13","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_storage_ptr","typeString":"contract CToken[] storage pointer"}},"id":7319,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"9077:17:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":7320,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9098:1:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9077:22:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":7378,"nodeType":"IfStatement","src":"9073:1009:13","trueBody":{"id":7377,"nodeType":"Block","src":"9101:981:13","statements":[{"assignments":[7323],"declarations":[{"constant":false,"id":7323,"name":"borrowerIndex","nodeType":"VariableDeclaration","scope":7377,"src":"9115:21:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7322,"name":"uint256","nodeType":"ElementaryTypeName","src":"9115:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":7328,"initialValue":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":7324,"name":"borrowerIndexes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13074,"src":"9139:15:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7327,"indexExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7325,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"9155:3:13","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7326,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"9155:10:13","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9139:27:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9115:51:13"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7329,"name":"borrowerIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7323,"src":"9308:13:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7333,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7330,"name":"allBorrowers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13070,"src":"9324:12:13","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":7331,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"9324:19:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"hexValue":"31","id":7332,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9346:1:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9324:23:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9308:39:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":7357,"nodeType":"IfStatement","src":"9304:371:13","trueBody":{"id":7356,"nodeType":"Block","src":"9349:326:13","statements":[{"assignments":[7336],"declarations":[{"constant":false,"id":7336,"name":"lastElement","nodeType":"VariableDeclaration","scope":7356,"src":"9367:19:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7335,"name":"address","nodeType":"ElementaryTypeName","src":"9367:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":7343,"initialValue":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":7337,"name":"allBorrowers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13070,"src":"9389:12:13","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":7342,"indexExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7341,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7338,"name":"allBorrowers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13070,"src":"9402:12:13","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":7339,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"9402:19:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"hexValue":"31","id":7340,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9424:1:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9402:23:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9389:37:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"9367:59:13"},{"expression":{"argumentTypes":null,"id":7348,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":7344,"name":"allBorrowers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13070,"src":"9444:12:13","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":7346,"indexExpression":{"argumentTypes":null,"id":7345,"name":"borrowerIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7323,"src":"9457:13:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9444:27:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":7347,"name":"lastElement","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7336,"src":"9474:11:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9444:41:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7349,"nodeType":"ExpressionStatement","src":"9444:41:13"},{"expression":{"argumentTypes":null,"id":7354,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":7350,"name":"borrowerIndexes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13074,"src":"9563:15:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7352,"indexExpression":{"argumentTypes":null,"id":7351,"name":"lastElement","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7336,"src":"9579:11:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9563:28:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":7353,"name":"borrowerIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7323,"src":"9594:13:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9563:44:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7355,"nodeType":"ExpressionStatement","src":"9563:44:13"}]}},{"expression":{"argumentTypes":null,"id":7361,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"9750:21:13","subExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7358,"name":"allBorrowers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13070,"src":"9750:12:13","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":7360,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"9750:19:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7362,"nodeType":"ExpressionStatement","src":"9750:21:13"},{"expression":{"argumentTypes":null,"id":7368,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":7363,"name":"borrowerIndexes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13074,"src":"9807:15:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7366,"indexExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7364,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"9823:3:13","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7365,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"9823:10:13","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9807:27:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"hexValue":"30","id":7367,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9837:1:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9807:31:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7369,"nodeType":"ExpressionStatement","src":"9807:31:13"},{"expression":{"argumentTypes":null,"id":7375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":7370,"name":"borrowers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13067,"src":"9905:9:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":7373,"indexExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7371,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"9915:3:13","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"9915:10:13","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9905:21:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"hexValue":"66616c7365","id":7374,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9929:5:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"9905:29:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7376,"nodeType":"ExpressionStatement","src":"9905:29:13"}]}},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":7380,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7159,"src":"10110:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7381,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"10118:3:13","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7382,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"10118:10:13","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":7379,"name":"MarketExited","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6876,"src":"10097:12:13","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_contract$_CToken_$6186_$_t_address_$returns$__$","typeString":"function (contract CToken,address)"}},"id":7383,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10097:32:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7384,"nodeType":"EmitStatement","src":"10092:37:13"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7386,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"10152:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":7387,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"10152:14:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":7385,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10147:4:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":7388,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10147:20:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7157,"id":7389,"nodeType":"Return","src":"10140:27:13"}]},"documentation":"@notice Removes asset from sender's account liquidity calculation\n@dev Sender must not have an outstanding borrow balance in the asset,\n or be providing neccessary collateral for an outstanding borrow.\n@param cTokenAddress The address of the asset to be removed\n@return Whether or not the account successfully exited the market","id":7391,"implemented":true,"kind":"function","modifiers":[],"name":"exitMarket","nodeType":"FunctionDefinition","parameters":{"id":7154,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7153,"name":"cTokenAddress","nodeType":"VariableDeclaration","scope":7391,"src":"6959:21:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7152,"name":"address","nodeType":"ElementaryTypeName","src":"6959:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"6958:23:13"},"returnParameters":{"id":7157,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7156,"name":"","nodeType":"VariableDeclaration","scope":7391,"src":"7000:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7155,"name":"uint","nodeType":"ElementaryTypeName","src":"7000:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"6999:6:13"},"scope":10531,"src":"6939:3235:13","stateMutability":"nonpayable","superFunction":12766,"visibility":"external"},{"body":{"id":7555,"nodeType":"Block","src":"10736:1814:13","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":7406,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"10833:27:13","subExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":7403,"name":"mintGuardianPaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13109,"src":"10834:18:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":7405,"indexExpression":{"argumentTypes":null,"id":7404,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7393,"src":"10853:6:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10834:26:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"6d696e7420697320706175736564","id":7407,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10862:16:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_f20052e9c73751e3b6f0a0b0d6e756b61441e56378041bd3ee24195f79f7b047","typeString":"literal_string \"mint is paused\""},"value":"mint is paused"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f20052e9c73751e3b6f0a0b0d6e756b61441e56378041bd3ee24195f79f7b047","typeString":"literal_string \"mint is paused\""}],"id":7402,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"10825:7:13","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7408,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10825:54:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7409,"nodeType":"ExpressionStatement","src":"10825:54:13"},{"expression":{"argumentTypes":null,"id":7410,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7395,"src":"10924:6:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7411,"nodeType":"ExpressionStatement","src":"10924:6:13"},{"expression":{"argumentTypes":null,"id":7412,"name":"mintAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7397,"src":"10940:10:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7413,"nodeType":"ExpressionStatement","src":"10940:10:13"},{"condition":{"argumentTypes":null,"id":7418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"11003:25:13","subExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":7414,"name":"markets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13060,"src":"11004:7:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Market_$13056_storage_$","typeString":"mapping(address => struct ComptrollerV2Storage.Market storage ref)"}},"id":7416,"indexExpression":{"argumentTypes":null,"id":7415,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7393,"src":"11012:6:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11004:15:13","typeDescriptions":{"typeIdentifier":"t_struct$_Market_$13056_storage","typeString":"struct ComptrollerV2Storage.Market storage ref"}},"id":7417,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"isListed","nodeType":"MemberAccess","referencedDeclaration":13049,"src":"11004:24:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":7425,"nodeType":"IfStatement","src":"10999:92:13","trueBody":{"id":7424,"nodeType":"Block","src":"11030:61:13","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7420,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"11056:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":7421,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"MARKET_NOT_LISTED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"11056:23:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":7419,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11051:4:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":7422,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11051:29:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7401,"id":7423,"nodeType":"Return","src":"11044:36:13"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7426,"name":"enforceWhitelist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13084,"src":"11156:16:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"argumentTypes":null,"id":7430,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"11176:18:13","subExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":7427,"name":"whitelist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13088,"src":"11177:9:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":7429,"indexExpression":{"argumentTypes":null,"id":7428,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7395,"src":"11187:6:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11177:17:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"11156:38:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":7438,"nodeType":"IfStatement","src":"11152:112:13","trueBody":{"id":7437,"nodeType":"Block","src":"11196:68:13","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7433,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"11222:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":7434,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"SUPPLIER_NOT_WHITELISTED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"11222:30:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":7432,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11217:4:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":7435,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11217:36:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7401,"id":7436,"nodeType":"Return","src":"11210:43:13"}]}},{"assignments":[7440],"declarations":[{"constant":false,"id":7440,"name":"supplyCap","nodeType":"VariableDeclaration","scope":7555,"src":"11302:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7439,"name":"uint","nodeType":"ElementaryTypeName","src":"11302:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":7444,"initialValue":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":7441,"name":"supplyCaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13128,"src":"11319:10:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7443,"indexExpression":{"argumentTypes":null,"id":7442,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7393,"src":"11330:6:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11319:18:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11302:35:13"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7447,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7445,"name":"supplyCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7440,"src":"11413:9:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"hexValue":"30","id":7446,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11426:1:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11413:14:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":7544,"nodeType":"IfStatement","src":"11409:1009:13","trueBody":{"id":7543,"nodeType":"Block","src":"11429:989:13","statements":[{"assignments":[7449],"declarations":[{"constant":false,"id":7449,"name":"totalCash","nodeType":"VariableDeclaration","scope":7543,"src":"11443:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7448,"name":"uint","nodeType":"ElementaryTypeName","src":"11443:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":7455,"initialValue":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":7451,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7393,"src":"11467:6:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7450,"name":"CToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6186,"src":"11460:6:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CToken_$6186_$","typeString":"type(contract CToken)"}},"id":7452,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11460:14:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":7453,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getCash","nodeType":"MemberAccess","referencedDeclaration":3255,"src":"11460:22:13","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":7454,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11460:24:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11443:41:13"},{"assignments":[7457],"declarations":[{"constant":false,"id":7457,"name":"totalBorrows","nodeType":"VariableDeclaration","scope":7543,"src":"11498:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7456,"name":"uint","nodeType":"ElementaryTypeName","src":"11498:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":7463,"initialValue":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":7459,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7393,"src":"11525:6:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7458,"name":"CToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6186,"src":"11518:6:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CToken_$6186_$","typeString":"type(contract CToken)"}},"id":7460,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11518:14:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":7461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"totalBorrows","nodeType":"MemberAccess","referencedDeclaration":6240,"src":"11518:27:13","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":7462,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11518:29:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11498:49:13"},{"assignments":[7465],"declarations":[{"constant":false,"id":7465,"name":"totalReserves","nodeType":"VariableDeclaration","scope":7543,"src":"11561:18:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7464,"name":"uint","nodeType":"ElementaryTypeName","src":"11561:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":7471,"initialValue":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":7467,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7393,"src":"11589:6:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7466,"name":"CToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6186,"src":"11582:6:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CToken_$6186_$","typeString":"type(contract CToken)"}},"id":7468,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11582:14:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":7469,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"totalReserves","nodeType":"MemberAccess","referencedDeclaration":6242,"src":"11582:28:13","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":7470,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11582:30:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11561:51:13"},{"assignments":[7473],"declarations":[{"constant":false,"id":7473,"name":"totalFuseFees","nodeType":"VariableDeclaration","scope":7543,"src":"11626:18:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7472,"name":"uint","nodeType":"ElementaryTypeName","src":"11626:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":7479,"initialValue":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":7475,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7393,"src":"11654:6:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7474,"name":"CToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6186,"src":"11647:6:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CToken_$6186_$","typeString":"type(contract CToken)"}},"id":7476,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11647:14:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":7477,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"totalFuseFees","nodeType":"MemberAccess","referencedDeclaration":6246,"src":"11647:28:13","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":7478,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11647:30:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11626:51:13"},{"assignments":[7481],"declarations":[{"constant":false,"id":7481,"name":"totalAdminFees","nodeType":"VariableDeclaration","scope":7543,"src":"11691:19:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7480,"name":"uint","nodeType":"ElementaryTypeName","src":"11691:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":7487,"initialValue":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":7483,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7393,"src":"11720:6:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7482,"name":"CToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6186,"src":"11713:6:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CToken_$6186_$","typeString":"type(contract CToken)"}},"id":7484,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11713:14:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":7485,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"totalAdminFees","nodeType":"MemberAccess","referencedDeclaration":6244,"src":"11713:29:13","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":7486,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11713:31:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11691:53:13"},{"assignments":[7489,7491],"declarations":[{"constant":false,"id":7489,"name":"mathErr","nodeType":"VariableDeclaration","scope":7543,"src":"11875:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"typeName":{"contractScope":null,"id":7488,"name":"MathError","nodeType":"UserDefinedTypeName","referencedDeclaration":6659,"src":"11875:9:13","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"value":null,"visibility":"internal"},{"constant":false,"id":7491,"name":"totalUnderlyingSupply","nodeType":"VariableDeclaration","scope":7543,"src":"11894:26:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7490,"name":"uint","nodeType":"ElementaryTypeName","src":"11894:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":7503,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":7493,"name":"totalCash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7449,"src":"11939:9:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":7494,"name":"totalBorrows","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7457,"src":"11950:12:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":7497,"name":"totalReserves","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7465,"src":"11974:13:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":7498,"name":"totalFuseFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7473,"src":"11989:13:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7496,"name":"add_","nodeType":"Identifier","overloadedDeclarations":[14579,14598,14614,14641],"referencedDeclaration":14614,"src":"11969:4:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":7499,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11969:34:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":7500,"name":"totalAdminFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7481,"src":"12005:14:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7495,"name":"add_","nodeType":"Identifier","overloadedDeclarations":[14579,14598,14614,14641],"referencedDeclaration":14614,"src":"11964:4:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":7501,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11964:56:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7492,"name":"addThenSubUInt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6836,"src":"11924:14:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (enum CarefulMath.MathError,uint256)"}},"id":7502,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11924:97:13","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"11874:147:13"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"id":7507,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7504,"name":"mathErr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7489,"src":"12039:7:13","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7505,"name":"MathError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6659,"src":"12050:9:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MathError_$6659_$","typeString":"type(enum CarefulMath.MathError)"}},"id":7506,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"12050:18:13","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"src":"12039:29:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":7513,"nodeType":"IfStatement","src":"12035:64:13","trueBody":{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7509,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"12082:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":7510,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"MATH_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"12082:16:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":7508,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12077:4:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":7511,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12077:22:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7401,"id":7512,"nodeType":"Return","src":"12070:29:13"}},{"assignments":[7515],"declarations":[{"constant":false,"id":7515,"name":"nextTotalUnderlyingSupply","nodeType":"VariableDeclaration","scope":7543,"src":"12114:30:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7514,"name":"uint","nodeType":"ElementaryTypeName","src":"12114:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":7516,"initialValue":null,"nodeType":"VariableDeclarationStatement","src":"12114:30:13"},{"expression":{"argumentTypes":null,"id":7524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":7517,"name":"mathErr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7489,"src":"12159:7:13","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},{"argumentTypes":null,"id":7518,"name":"nextTotalUnderlyingSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7515,"src":"12168:25:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7519,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"12158:36:13","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":7521,"name":"totalUnderlyingSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7491,"src":"12205:21:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":7522,"name":"mintAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7397,"src":"12228:10:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7520,"name":"addUInt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6798,"src":"12197:7:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (enum CarefulMath.MathError,uint256)"}},"id":7523,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12197:42:13","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"src":"12158:81:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7525,"nodeType":"ExpressionStatement","src":"12158:81:13"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"id":7529,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7526,"name":"mathErr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7489,"src":"12257:7:13","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7527,"name":"MathError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6659,"src":"12268:9:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MathError_$6659_$","typeString":"type(enum CarefulMath.MathError)"}},"id":7528,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"12268:18:13","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"src":"12257:29:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":7535,"nodeType":"IfStatement","src":"12253:64:13","trueBody":{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7531,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"12300:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":7532,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"MATH_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"12300:16:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":7530,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12295:4:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":7533,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12295:22:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7401,"id":7534,"nodeType":"Return","src":"12288:29:13"}},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7539,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7537,"name":"nextTotalUnderlyingSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7515,"src":"12340:25:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"id":7538,"name":"supplyCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7440,"src":"12368:9:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12340:37:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"6d61726b657420737570706c79206361702072656163686564","id":7540,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12379:27:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_02774cc07daa48ece5df6c580d4a9eb17c74e0f14ac70c3e652197dce2a81ae3","typeString":"literal_string \"market supply cap reached\""},"value":"market supply cap reached"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_02774cc07daa48ece5df6c580d4a9eb17c74e0f14ac70c3e652197dce2a81ae3","typeString":"literal_string \"market supply cap reached\""}],"id":7536,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"12332:7:13","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7541,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12332:75:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7542,"nodeType":"ExpressionStatement","src":"12332:75:13"}]}},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":7546,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7393,"src":"12490:6:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":7547,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7395,"src":"12498:6:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":7545,"name":"flywheelPreSupplierAction","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8476,"src":"12464:25:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":7548,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12464:41:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7549,"nodeType":"ExpressionStatement","src":"12464:41:13"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7551,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"12528:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":7552,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"12528:14:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":7550,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12523:4:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":7553,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12523:20:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7401,"id":7554,"nodeType":"Return","src":"12516:27:13"}]},"documentation":"@notice Checks if the account should be allowed to mint tokens in the given market\n@param cToken The market to verify the mint against\n@param minter The account which would get the minted tokens\n@param mintAmount The amount of underlying being supplied to the market in exchange for tokens\n@return 0 if the mint is allowed, otherwise a semi-opaque error code (See ErrorReporter.sol)","id":7556,"implemented":true,"kind":"function","modifiers":[],"name":"mintAllowed","nodeType":"FunctionDefinition","parameters":{"id":7398,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7393,"name":"cToken","nodeType":"VariableDeclaration","scope":7556,"src":"10663:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7392,"name":"address","nodeType":"ElementaryTypeName","src":"10663:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":7395,"name":"minter","nodeType":"VariableDeclaration","scope":7556,"src":"10679:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7394,"name":"address","nodeType":"ElementaryTypeName","src":"10679:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":7397,"name":"mintAmount","nodeType":"VariableDeclaration","scope":7556,"src":"10695:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7396,"name":"uint","nodeType":"ElementaryTypeName","src":"10695:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"10662:49:13"},"returnParameters":{"id":7401,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7400,"name":"","nodeType":"VariableDeclaration","scope":7556,"src":"10730:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7399,"name":"uint","nodeType":"ElementaryTypeName","src":"10730:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"10729:6:13"},"scope":10531,"src":"10642:1908:13","stateMutability":"nonpayable","superFunction":12777,"visibility":"external"},{"body":{"id":7588,"nodeType":"Block","src":"12974:328:13","statements":[{"expression":{"argumentTypes":null,"id":7567,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7558,"src":"13018:6:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7568,"nodeType":"ExpressionStatement","src":"13018:6:13"},{"expression":{"argumentTypes":null,"id":7569,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7560,"src":"13034:6:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7570,"nodeType":"ExpressionStatement","src":"13034:6:13"},{"expression":{"argumentTypes":null,"id":7571,"name":"actualMintAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7562,"src":"13050:16:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7572,"nodeType":"ExpressionStatement","src":"13050:16:13"},{"expression":{"argumentTypes":null,"id":7573,"name":"mintTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7564,"src":"13076:10:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7574,"nodeType":"ExpressionStatement","src":"13076:10:13"},{"condition":{"argumentTypes":null,"hexValue":"66616c7365","id":7575,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"13165:5:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"falseBody":null,"id":7581,"nodeType":"IfStatement","src":"13161:57:13","trueBody":{"id":7580,"nodeType":"Block","src":"13172:46:13","statements":[{"expression":{"argumentTypes":null,"id":7578,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":7576,"name":"maxAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13039,"src":"13186:9:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":7577,"name":"maxAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13039,"src":"13198:9:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13186:21:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7579,"nodeType":"ExpressionStatement","src":"13186:21:13"}]}},{"expression":{"argumentTypes":null,"id":7586,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":7582,"name":"suppliers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13078,"src":"13271:9:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":7584,"indexExpression":{"argumentTypes":null,"id":7583,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7560,"src":"13281:6:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"13271:17:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"hexValue":"74727565","id":7585,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"13291:4:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"13271:24:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7587,"nodeType":"ExpressionStatement","src":"13271:24:13"}]},"documentation":"@notice Validates mint and reverts on rejection. May emit logs.\n@param cToken Asset being minted\n@param minter The address minting the tokens\n@param actualMintAmount The amount of the underlying asset being minted\n@param mintTokens The number of tokens being minted","id":7589,"implemented":true,"kind":"function","modifiers":[],"name":"mintVerify","nodeType":"FunctionDefinition","parameters":{"id":7565,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7558,"name":"cToken","nodeType":"VariableDeclaration","scope":7589,"src":"12893:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7557,"name":"address","nodeType":"ElementaryTypeName","src":"12893:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":7560,"name":"minter","nodeType":"VariableDeclaration","scope":7589,"src":"12909:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7559,"name":"address","nodeType":"ElementaryTypeName","src":"12909:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":7562,"name":"actualMintAmount","nodeType":"VariableDeclaration","scope":7589,"src":"12925:21:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7561,"name":"uint","nodeType":"ElementaryTypeName","src":"12925:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":7564,"name":"mintTokens","nodeType":"VariableDeclaration","scope":7589,"src":"12948:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7563,"name":"uint","nodeType":"ElementaryTypeName","src":"12948:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"12892:72:13"},"returnParameters":{"id":7566,"nodeType":"ParameterList","parameters":[],"src":"12974:0:13"},"scope":10531,"src":"12873:429:13","stateMutability":"nonpayable","superFunction":12801,"visibility":"external"},{"body":{"id":7628,"nodeType":"Block","src":"13844:298:13","statements":[{"assignments":[7601],"declarations":[{"constant":false,"id":7601,"name":"allowed","nodeType":"VariableDeclaration","scope":7628,"src":"13854:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7600,"name":"uint","nodeType":"ElementaryTypeName","src":"13854:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":7607,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":7603,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7591,"src":"13891:6:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":7604,"name":"redeemer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7593,"src":"13899:8:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":7605,"name":"redeemTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7595,"src":"13909:12:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7602,"name":"redeemAllowedInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7705,"src":"13869:21:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,address,uint256) view returns (uint256)"}},"id":7606,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13869:53:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13854:68:13"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7608,"name":"allowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7601,"src":"13936:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7610,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"13952:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":7611,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"13952:14:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":7609,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13947:4:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":7612,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13947:20:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13936:31:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":7617,"nodeType":"IfStatement","src":"13932:76:13","trueBody":{"id":7616,"nodeType":"Block","src":"13969:39:13","statements":[{"expression":{"argumentTypes":null,"id":7614,"name":"allowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7601,"src":"13990:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7599,"id":7615,"nodeType":"Return","src":"13983:14:13"}]}},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":7619,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7591,"src":"14080:6:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":7620,"name":"redeemer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7593,"src":"14088:8:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":7618,"name":"flywheelPreSupplierAction","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8476,"src":"14054:25:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":7621,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14054:43:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7622,"nodeType":"ExpressionStatement","src":"14054:43:13"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7624,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"14120:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":7625,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"14120:14:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":7623,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14115:4:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":7626,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14115:20:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7599,"id":7627,"nodeType":"Return","src":"14108:27:13"}]},"documentation":"@notice Checks if the account should be allowed to redeem tokens in the given market\n@param cToken The market to verify the redeem against\n@param redeemer The account which would redeem the tokens\n@param redeemTokens The number of cTokens to exchange for the underlying asset in the market\n@return 0 if the redeem is allowed, otherwise a semi-opaque error code (See ErrorReporter.sol)","id":7629,"implemented":true,"kind":"function","modifiers":[],"name":"redeemAllowed","nodeType":"FunctionDefinition","parameters":{"id":7596,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7591,"name":"cToken","nodeType":"VariableDeclaration","scope":7629,"src":"13767:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7590,"name":"address","nodeType":"ElementaryTypeName","src":"13767:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":7593,"name":"redeemer","nodeType":"VariableDeclaration","scope":7629,"src":"13783:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7592,"name":"address","nodeType":"ElementaryTypeName","src":"13783:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":7595,"name":"redeemTokens","nodeType":"VariableDeclaration","scope":7629,"src":"13801:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7594,"name":"uint","nodeType":"ElementaryTypeName","src":"13801:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"13766:53:13"},"returnParameters":{"id":7599,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7598,"name":"","nodeType":"VariableDeclaration","scope":7629,"src":"13838:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7597,"name":"uint","nodeType":"ElementaryTypeName","src":"13838:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"13837:6:13"},"scope":10531,"src":"13744:398:13","stateMutability":"nonpayable","superFunction":12812,"visibility":"external"},{"body":{"id":7704,"nodeType":"Block","src":"14261:738:13","statements":[{"condition":{"argumentTypes":null,"id":7644,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"14275:25:13","subExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":7640,"name":"markets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13060,"src":"14276:7:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Market_$13056_storage_$","typeString":"mapping(address => struct ComptrollerV2Storage.Market storage ref)"}},"id":7642,"indexExpression":{"argumentTypes":null,"id":7641,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7631,"src":"14284:6:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14276:15:13","typeDescriptions":{"typeIdentifier":"t_struct$_Market_$13056_storage","typeString":"struct ComptrollerV2Storage.Market storage ref"}},"id":7643,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"isListed","nodeType":"MemberAccess","referencedDeclaration":13049,"src":"14276:24:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":7651,"nodeType":"IfStatement","src":"14271:92:13","trueBody":{"id":7650,"nodeType":"Block","src":"14302:61:13","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7646,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"14328:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":7647,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"MARKET_NOT_LISTED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"14328:23:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":7645,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14323:4:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":7648,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14323:29:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7639,"id":7649,"nodeType":"Return","src":"14316:36:13"}]}},{"condition":{"argumentTypes":null,"id":7658,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"14470:44:13","subExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":7652,"name":"markets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13060,"src":"14471:7:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Market_$13056_storage_$","typeString":"mapping(address => struct ComptrollerV2Storage.Market storage ref)"}},"id":7654,"indexExpression":{"argumentTypes":null,"id":7653,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7631,"src":"14479:6:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14471:15:13","typeDescriptions":{"typeIdentifier":"t_struct$_Market_$13056_storage","typeString":"struct ComptrollerV2Storage.Market storage ref"}},"id":7655,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"accountMembership","nodeType":"MemberAccess","referencedDeclaration":13055,"src":"14471:33:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":7657,"indexExpression":{"argumentTypes":null,"id":7656,"name":"redeemer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7633,"src":"14505:8:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14471:43:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":7665,"nodeType":"IfStatement","src":"14466:102:13","trueBody":{"id":7664,"nodeType":"Block","src":"14516:52:13","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7660,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"14542:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":7661,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"14542:14:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":7659,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14537:4:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":7662,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14537:20:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7639,"id":7663,"nodeType":"Return","src":"14530:27:13"}]}},{"assignments":[7667,null,7669],"declarations":[{"constant":false,"id":7667,"name":"err","nodeType":"VariableDeclaration","scope":7704,"src":"14670:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"},"typeName":{"contractScope":null,"id":7666,"name":"Error","nodeType":"UserDefinedTypeName","referencedDeclaration":13574,"src":"14670:5:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},"value":null,"visibility":"internal"},null,{"constant":false,"id":7669,"name":"shortfall","nodeType":"VariableDeclaration","scope":7704,"src":"14683:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7668,"name":"uint","nodeType":"ElementaryTypeName","src":"14683:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":7678,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":7671,"name":"redeemer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7633,"src":"14741:8:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":7673,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7631,"src":"14758:6:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7672,"name":"CToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6186,"src":"14751:6:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CToken_$6186_$","typeString":"type(contract CToken)"}},"id":7674,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14751:14:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},{"argumentTypes":null,"id":7675,"name":"redeemTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7635,"src":"14767:12:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"30","id":7676,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14781:1:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":7670,"name":"getHypotheticalAccountLiquidityInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8881,"src":"14701:39:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_contract$_CToken_$6186_$_t_uint256_$_t_uint256_$returns$_t_enum$_Error_$13574_$_t_uint256_$_t_uint256_$","typeString":"function (address,contract CToken,uint256,uint256) view returns (enum ComptrollerErrorReporter.Error,uint256,uint256)"}},"id":7677,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14701:82:13","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_Error_$13574_$_t_uint256_$_t_uint256_$","typeString":"tuple(enum ComptrollerErrorReporter.Error,uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"14669:114:13"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"},"id":7682,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7679,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7667,"src":"14797:3:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7680,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"14804:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":7681,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"14804:14:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},"src":"14797:21:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":7688,"nodeType":"IfStatement","src":"14793:68:13","trueBody":{"id":7687,"nodeType":"Block","src":"14820:41:13","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":7684,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7667,"src":"14846:3:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":7683,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14841:4:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":7685,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14841:9:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7639,"id":7686,"nodeType":"Return","src":"14834:16:13"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7689,"name":"shortfall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7669,"src":"14874:9:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"30","id":7690,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14886:1:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14874:13:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":7698,"nodeType":"IfStatement","src":"14870:85:13","trueBody":{"id":7697,"nodeType":"Block","src":"14889:66:13","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7693,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"14915:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":7694,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"INSUFFICIENT_LIQUIDITY","nodeType":"MemberAccess","referencedDeclaration":null,"src":"14915:28:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":7692,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14910:4:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":7695,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14910:34:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7639,"id":7696,"nodeType":"Return","src":"14903:41:13"}]}},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7700,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"14977:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":7701,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"14977:14:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":7699,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14972:4:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":7702,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14972:20:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7639,"id":7703,"nodeType":"Return","src":"14965:27:13"}]},"documentation":null,"id":7705,"implemented":true,"kind":"function","modifiers":[],"name":"redeemAllowedInternal","nodeType":"FunctionDefinition","parameters":{"id":7636,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7631,"name":"cToken","nodeType":"VariableDeclaration","scope":7705,"src":"14179:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7630,"name":"address","nodeType":"ElementaryTypeName","src":"14179:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":7633,"name":"redeemer","nodeType":"VariableDeclaration","scope":7705,"src":"14195:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7632,"name":"address","nodeType":"ElementaryTypeName","src":"14195:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":7635,"name":"redeemTokens","nodeType":"VariableDeclaration","scope":7705,"src":"14213:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7634,"name":"uint","nodeType":"ElementaryTypeName","src":"14213:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"14178:53:13"},"returnParameters":{"id":7639,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7638,"name":"","nodeType":"VariableDeclaration","scope":7705,"src":"14255:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7637,"name":"uint","nodeType":"ElementaryTypeName","src":"14255:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"14254:6:13"},"scope":10531,"src":"14148:851:13","stateMutability":"view","superFunction":null,"visibility":"internal"},{"body":{"id":7733,"nodeType":"Block","src":"15435:237:13","statements":[{"expression":{"argumentTypes":null,"id":7716,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7707,"src":"15479:6:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7717,"nodeType":"ExpressionStatement","src":"15479:6:13"},{"expression":{"argumentTypes":null,"id":7718,"name":"redeemer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7709,"src":"15495:8:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7719,"nodeType":"ExpressionStatement","src":"15495:8:13"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7720,"name":"redeemTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7713,"src":"15575:12:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":7721,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15591:1:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"15575:17:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7725,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7723,"name":"redeemAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7711,"src":"15596:12:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"30","id":7724,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15611:1:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"15596:16:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"15575:37:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":7732,"nodeType":"IfStatement","src":"15571:95:13","trueBody":{"id":7731,"nodeType":"Block","src":"15614:52:13","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"72656465656d546f6b656e73207a65726f","id":7728,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"15635:19:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_be68349ba5b02869947a89562a2d8143503a6601656c6cceb6f211f463db7e95","typeString":"literal_string \"redeemTokens zero\""},"value":"redeemTokens zero"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_be68349ba5b02869947a89562a2d8143503a6601656c6cceb6f211f463db7e95","typeString":"literal_string \"redeemTokens zero\""}],"id":7727,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[22555,22556],"referencedDeclaration":22556,"src":"15628:6:13","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":7729,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15628:27:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7730,"nodeType":"ExpressionStatement","src":"15628:27:13"}]}}]},"documentation":"@notice Validates redeem and reverts on rejection. May emit logs.\n@param cToken Asset being redeemed\n@param redeemer The address redeeming the tokens\n@param redeemAmount The amount of the underlying asset being redeemed\n@param redeemTokens The number of tokens being redeemed","id":7734,"implemented":true,"kind":"function","modifiers":[],"name":"redeemVerify","nodeType":"FunctionDefinition","parameters":{"id":7714,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7707,"name":"cToken","nodeType":"VariableDeclaration","scope":7734,"src":"15354:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7706,"name":"address","nodeType":"ElementaryTypeName","src":"15354:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":7709,"name":"redeemer","nodeType":"VariableDeclaration","scope":7734,"src":"15370:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7708,"name":"address","nodeType":"ElementaryTypeName","src":"15370:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":7711,"name":"redeemAmount","nodeType":"VariableDeclaration","scope":7734,"src":"15388:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7710,"name":"uint","nodeType":"ElementaryTypeName","src":"15388:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":7713,"name":"redeemTokens","nodeType":"VariableDeclaration","scope":7734,"src":"15407:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7712,"name":"uint","nodeType":"ElementaryTypeName","src":"15407:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"15353:72:13"},"returnParameters":{"id":7715,"nodeType":"ParameterList","parameters":[],"src":"15435:0:13"},"scope":10531,"src":"15332:340:13","stateMutability":"nonpayable","superFunction":12823,"visibility":"external"},{"body":{"id":7927,"nodeType":"Block","src":"16204:2199:13","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":7749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"16301:29:13","subExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":7746,"name":"borrowGuardianPaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13113,"src":"16302:20:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":7748,"indexExpression":{"argumentTypes":null,"id":7747,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7736,"src":"16323:6:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16302:28:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"626f72726f7720697320706175736564","id":7750,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"16332:18:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_fa9e0af97796c722ac293934a4461629780a8958d7e0f2e3993533df15c43baf","typeString":"literal_string \"borrow is paused\""},"value":"borrow is paused"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_fa9e0af97796c722ac293934a4461629780a8958d7e0f2e3993533df15c43baf","typeString":"literal_string \"borrow is paused\""}],"id":7745,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"16293:7:13","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7751,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16293:58:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7752,"nodeType":"ExpressionStatement","src":"16293:58:13"},{"condition":{"argumentTypes":null,"id":7757,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"16404:25:13","subExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":7753,"name":"markets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13060,"src":"16405:7:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Market_$13056_storage_$","typeString":"mapping(address => struct ComptrollerV2Storage.Market storage ref)"}},"id":7755,"indexExpression":{"argumentTypes":null,"id":7754,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7736,"src":"16413:6:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16405:15:13","typeDescriptions":{"typeIdentifier":"t_struct$_Market_$13056_storage","typeString":"struct ComptrollerV2Storage.Market storage ref"}},"id":7756,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"isListed","nodeType":"MemberAccess","referencedDeclaration":13049,"src":"16405:24:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":7764,"nodeType":"IfStatement","src":"16400:92:13","trueBody":{"id":7763,"nodeType":"Block","src":"16431:61:13","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7759,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"16457:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":7760,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"MARKET_NOT_LISTED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"16457:23:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":7758,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16452:4:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":7761,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16452:29:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7744,"id":7762,"nodeType":"Return","src":"16445:36:13"}]}},{"condition":{"argumentTypes":null,"id":7771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"16506:44:13","subExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":7765,"name":"markets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13060,"src":"16507:7:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Market_$13056_storage_$","typeString":"mapping(address => struct ComptrollerV2Storage.Market storage ref)"}},"id":7767,"indexExpression":{"argumentTypes":null,"id":7766,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7736,"src":"16515:6:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16507:15:13","typeDescriptions":{"typeIdentifier":"t_struct$_Market_$13056_storage","typeString":"struct ComptrollerV2Storage.Market storage ref"}},"id":7768,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"accountMembership","nodeType":"MemberAccess","referencedDeclaration":13055,"src":"16507:33:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":7770,"indexExpression":{"argumentTypes":null,"id":7769,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7738,"src":"16541:8:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16507:43:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":7810,"nodeType":"IfStatement","src":"16502:562:13","trueBody":{"id":7809,"nodeType":"Block","src":"16552:512:13","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7776,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7773,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"16651:3:13","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7774,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"16651:10:13","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":7775,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7736,"src":"16665:6:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"16651:20:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"73656e646572206d7573742062652063546f6b656e","id":7777,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"16673:23:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_c6b1093b1638c601ff809827f079ea42bdfd6a234187db13d737b83e4e458fa9","typeString":"literal_string \"sender must be cToken\""},"value":"sender must be cToken"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c6b1093b1638c601ff809827f079ea42bdfd6a234187db13d737b83e4e458fa9","typeString":"literal_string \"sender must be cToken\""}],"id":7772,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"16643:7:13","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7778,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16643:54:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7779,"nodeType":"ExpressionStatement","src":"16643:54:13"},{"assignments":[7781],"declarations":[{"constant":false,"id":7781,"name":"err","nodeType":"VariableDeclaration","scope":7809,"src":"16765:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"},"typeName":{"contractScope":null,"id":7780,"name":"Error","nodeType":"UserDefinedTypeName","referencedDeclaration":13574,"src":"16765:5:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},"value":null,"visibility":"internal"}],"id":7789,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7784,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"16804:3:13","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7785,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"16804:10:13","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":7783,"name":"CToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6186,"src":"16797:6:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CToken_$6186_$","typeString":"type(contract CToken)"}},"id":7786,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16797:18:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},{"argumentTypes":null,"id":7787,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7738,"src":"16817:8:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},{"typeIdentifier":"t_address","typeString":"address"}],"id":7782,"name":"addToMarketInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7151,"src":"16777:19:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_CToken_$6186_$_t_address_$returns$_t_enum$_Error_$13574_$","typeString":"function (contract CToken,address) returns (enum ComptrollerErrorReporter.Error)"}},"id":7788,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16777:49:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},"nodeType":"VariableDeclarationStatement","src":"16765:61:13"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"},"id":7793,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7790,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7781,"src":"16844:3:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7791,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"16851:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":7792,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"16851:14:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},"src":"16844:21:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":7799,"nodeType":"IfStatement","src":"16840:76:13","trueBody":{"id":7798,"nodeType":"Block","src":"16867:49:13","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":7795,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7781,"src":"16897:3:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":7794,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16892:4:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":7796,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16892:9:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7744,"id":7797,"nodeType":"Return","src":"16885:16:13"}]}},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":7801,"name":"markets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13060,"src":"17009:7:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Market_$13056_storage_$","typeString":"mapping(address => struct ComptrollerV2Storage.Market storage ref)"}},"id":7803,"indexExpression":{"argumentTypes":null,"id":7802,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7736,"src":"17017:6:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17009:15:13","typeDescriptions":{"typeIdentifier":"t_struct$_Market_$13056_storage","typeString":"struct ComptrollerV2Storage.Market storage ref"}},"id":7804,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"accountMembership","nodeType":"MemberAccess","referencedDeclaration":13055,"src":"17009:33:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":7806,"indexExpression":{"argumentTypes":null,"id":7805,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7738,"src":"17043:8:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17009:43:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":7800,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22539,"src":"17002:6:13","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":7807,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17002:51:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7808,"nodeType":"ExpressionStatement","src":"17002:51:13"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7818,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":7814,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7736,"src":"17158:6:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7813,"name":"CToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6186,"src":"17151:6:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CToken_$6186_$","typeString":"type(contract CToken)"}},"id":7815,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17151:14:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"expression":{"argumentTypes":null,"id":7811,"name":"oracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13033,"src":"17125:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_PriceOracle_$18689","typeString":"contract PriceOracle"}},"id":7812,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getUnderlyingPrice","nodeType":"MemberAccess","referencedDeclaration":18688,"src":"17125:25:13","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_contract$_CToken_$6186_$returns$_t_uint256_$","typeString":"function (contract CToken) view external returns (uint256)"}},"id":7816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17125:41:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":7817,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17170:1:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17125:46:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":7825,"nodeType":"IfStatement","src":"17121:107:13","trueBody":{"id":7824,"nodeType":"Block","src":"17173:55:13","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7820,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"17199:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":7821,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"PRICE_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"17199:17:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":7819,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17194:4:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":7822,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17194:23:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7744,"id":7823,"nodeType":"Return","src":"17187:30:13"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7826,"name":"enforceWhitelist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13084,"src":"17295:16:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"argumentTypes":null,"id":7830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"17315:20:13","subExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":7827,"name":"whitelist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13088,"src":"17316:9:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":7829,"indexExpression":{"argumentTypes":null,"id":7828,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7738,"src":"17326:8:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17316:19:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"17295:40:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":7838,"nodeType":"IfStatement","src":"17291:114:13","trueBody":{"id":7837,"nodeType":"Block","src":"17337:68:13","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7833,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"17363:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":7834,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"SUPPLIER_NOT_WHITELISTED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"17363:30:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":7832,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17358:4:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":7835,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17358:36:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7744,"id":7836,"nodeType":"Return","src":"17351:43:13"}]}},{"assignments":[7840],"declarations":[{"constant":false,"id":7840,"name":"borrowCap","nodeType":"VariableDeclaration","scope":7927,"src":"17443:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7839,"name":"uint","nodeType":"ElementaryTypeName","src":"17443:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":7844,"initialValue":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":7841,"name":"borrowCaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13124,"src":"17460:10:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7843,"indexExpression":{"argumentTypes":null,"id":7842,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7736,"src":"17471:6:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17460:18:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"17443:35:13"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7847,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7845,"name":"borrowCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7840,"src":"17554:9:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"hexValue":"30","id":7846,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17567:1:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17554:14:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":7883,"nodeType":"IfStatement","src":"17550:346:13","trueBody":{"id":7882,"nodeType":"Block","src":"17570:326:13","statements":[{"assignments":[7849],"declarations":[{"constant":false,"id":7849,"name":"totalBorrows","nodeType":"VariableDeclaration","scope":7882,"src":"17584:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7848,"name":"uint","nodeType":"ElementaryTypeName","src":"17584:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":7855,"initialValue":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":7851,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7736,"src":"17611:6:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7850,"name":"CToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6186,"src":"17604:6:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CToken_$6186_$","typeString":"type(contract CToken)"}},"id":7852,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17604:14:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":7853,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"totalBorrows","nodeType":"MemberAccess","referencedDeclaration":6240,"src":"17604:27:13","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":7854,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17604:29:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"17584:49:13"},{"assignments":[7857,7859],"declarations":[{"constant":false,"id":7857,"name":"mathErr","nodeType":"VariableDeclaration","scope":7882,"src":"17648:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"typeName":{"contractScope":null,"id":7856,"name":"MathError","nodeType":"UserDefinedTypeName","referencedDeclaration":6659,"src":"17648:9:13","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"value":null,"visibility":"internal"},{"constant":false,"id":7859,"name":"nextTotalBorrows","nodeType":"VariableDeclaration","scope":7882,"src":"17667:21:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7858,"name":"uint","nodeType":"ElementaryTypeName","src":"17667:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":7864,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":7861,"name":"totalBorrows","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7849,"src":"17700:12:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":7862,"name":"borrowAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7740,"src":"17714:12:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7860,"name":"addUInt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6798,"src":"17692:7:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (enum CarefulMath.MathError,uint256)"}},"id":7863,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17692:35:13","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"17647:80:13"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"id":7868,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7865,"name":"mathErr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7857,"src":"17745:7:13","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7866,"name":"MathError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6659,"src":"17756:9:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MathError_$6659_$","typeString":"type(enum CarefulMath.MathError)"}},"id":7867,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"17756:18:13","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"src":"17745:29:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":7874,"nodeType":"IfStatement","src":"17741:64:13","trueBody":{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7870,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"17788:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":7871,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"MATH_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"17788:16:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":7869,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17783:4:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":7872,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17783:22:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7744,"id":7873,"nodeType":"Return","src":"17776:29:13"}},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7876,"name":"nextTotalBorrows","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7859,"src":"17827:16:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"id":7877,"name":"borrowCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7840,"src":"17846:9:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17827:28:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"6d61726b657420626f72726f77206361702072656163686564","id":7879,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17857:27:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_cff0f73e08bfa2a9d6ae719bd0acb29b85bb81db8ff4e57a58ad65b3033d48b1","typeString":"literal_string \"market borrow cap reached\""},"value":"market borrow cap reached"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cff0f73e08bfa2a9d6ae719bd0acb29b85bb81db8ff4e57a58ad65b3033d48b1","typeString":"literal_string \"market borrow cap reached\""}],"id":7875,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"17819:7:13","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7880,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17819:66:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7881,"nodeType":"ExpressionStatement","src":"17819:66:13"}]}},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":7885,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7736,"src":"17968:6:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":7886,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7738,"src":"17976:8:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":7884,"name":"flywheelPreBorrowerAction","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8506,"src":"17942:25:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":7887,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17942:43:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7888,"nodeType":"ExpressionStatement","src":"17942:43:13"},{"assignments":[7890,null,7892],"declarations":[{"constant":false,"id":7890,"name":"err","nodeType":"VariableDeclaration","scope":7927,"src":"18074:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"},"typeName":{"contractScope":null,"id":7889,"name":"Error","nodeType":"UserDefinedTypeName","referencedDeclaration":13574,"src":"18074:5:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},"value":null,"visibility":"internal"},null,{"constant":false,"id":7892,"name":"shortfall","nodeType":"VariableDeclaration","scope":7927,"src":"18087:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7891,"name":"uint","nodeType":"ElementaryTypeName","src":"18087:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":7901,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":7894,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7738,"src":"18145:8:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":7896,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7736,"src":"18162:6:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7895,"name":"CToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6186,"src":"18155:6:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CToken_$6186_$","typeString":"type(contract CToken)"}},"id":7897,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18155:14:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},{"argumentTypes":null,"hexValue":"30","id":7898,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18171:1:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"argumentTypes":null,"id":7899,"name":"borrowAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7740,"src":"18174:12:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7893,"name":"getHypotheticalAccountLiquidityInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8881,"src":"18105:39:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_contract$_CToken_$6186_$_t_uint256_$_t_uint256_$returns$_t_enum$_Error_$13574_$_t_uint256_$_t_uint256_$","typeString":"function (address,contract CToken,uint256,uint256) view returns (enum ComptrollerErrorReporter.Error,uint256,uint256)"}},"id":7900,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18105:82:13","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_Error_$13574_$_t_uint256_$_t_uint256_$","typeString":"tuple(enum ComptrollerErrorReporter.Error,uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"18073:114:13"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"},"id":7905,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7902,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7890,"src":"18201:3:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7903,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"18208:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":7904,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"18208:14:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},"src":"18201:21:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":7911,"nodeType":"IfStatement","src":"18197:68:13","trueBody":{"id":7910,"nodeType":"Block","src":"18224:41:13","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":7907,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7890,"src":"18250:3:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":7906,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18245:4:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":7908,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18245:9:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7744,"id":7909,"nodeType":"Return","src":"18238:16:13"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7914,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7912,"name":"shortfall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7892,"src":"18278:9:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"30","id":7913,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18290:1:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18278:13:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":7921,"nodeType":"IfStatement","src":"18274:85:13","trueBody":{"id":7920,"nodeType":"Block","src":"18293:66:13","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7916,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"18319:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":7917,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"INSUFFICIENT_LIQUIDITY","nodeType":"MemberAccess","referencedDeclaration":null,"src":"18319:28:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":7915,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18314:4:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":7918,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18314:34:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7744,"id":7919,"nodeType":"Return","src":"18307:41:13"}]}},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7923,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"18381:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":7924,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"18381:14:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":7922,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18376:4:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":7925,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18376:20:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7744,"id":7926,"nodeType":"Return","src":"18369:27:13"}]},"documentation":"@notice Checks if the account should be allowed to borrow the underlying asset of the given market\n@param cToken The market to verify the borrow against\n@param borrower The account which would borrow the asset\n@param borrowAmount The amount of underlying the account would borrow\n@return 0 if the borrow is allowed, otherwise a semi-opaque error code (See ErrorReporter.sol)","id":7928,"implemented":true,"kind":"function","modifiers":[],"name":"borrowAllowed","nodeType":"FunctionDefinition","parameters":{"id":7741,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7736,"name":"cToken","nodeType":"VariableDeclaration","scope":7928,"src":"16127:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7735,"name":"address","nodeType":"ElementaryTypeName","src":"16127:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":7738,"name":"borrower","nodeType":"VariableDeclaration","scope":7928,"src":"16143:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7737,"name":"address","nodeType":"ElementaryTypeName","src":"16143:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":7740,"name":"borrowAmount","nodeType":"VariableDeclaration","scope":7928,"src":"16161:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7739,"name":"uint","nodeType":"ElementaryTypeName","src":"16161:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"16126:53:13"},"returnParameters":{"id":7744,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7743,"name":"","nodeType":"VariableDeclaration","scope":7928,"src":"16198:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7742,"name":"uint","nodeType":"ElementaryTypeName","src":"16198:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"16197:6:13"},"scope":10531,"src":"16104:2299:13","stateMutability":"nonpayable","superFunction":12834,"visibility":"external"},{"body":{"id":8001,"nodeType":"Block","src":"18771:777:13","statements":[{"assignments":[7938],"declarations":[{"constant":false,"id":7938,"name":"minBorrowEth","nodeType":"VariableDeclaration","scope":8001,"src":"18819:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7937,"name":"uint","nodeType":"ElementaryTypeName","src":"18819:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":7942,"initialValue":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":7939,"name":"fuseAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12990,"src":"18839:9:13","typeDescriptions":{"typeIdentifier":"t_contract$_IFuseFeeDistributor_$17368","typeString":"contract IFuseFeeDistributor"}},"id":7940,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"minBorrowEth","nodeType":"MemberAccess","referencedDeclaration":17275,"src":"18839:22:13","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":7941,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18839:24:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18819:44:13"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7943,"name":"minBorrowEth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7938,"src":"18878:12:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"30","id":7944,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18893:1:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18878:16:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":7995,"nodeType":"IfStatement","src":"18874:603:13","trueBody":{"id":7994,"nodeType":"Block","src":"18896:581:13","statements":[{"assignments":[7947],"declarations":[{"constant":false,"id":7947,"name":"oraclePriceMantissa","nodeType":"VariableDeclaration","scope":7994,"src":"18986:24:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7946,"name":"uint","nodeType":"ElementaryTypeName","src":"18986:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":7954,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":7951,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7930,"src":"19046:6:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7950,"name":"CToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6186,"src":"19039:6:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CToken_$6186_$","typeString":"type(contract CToken)"}},"id":7952,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19039:14:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"expression":{"argumentTypes":null,"id":7948,"name":"oracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13033,"src":"19013:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_PriceOracle_$18689","typeString":"contract PriceOracle"}},"id":7949,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getUnderlyingPrice","nodeType":"MemberAccess","referencedDeclaration":18688,"src":"19013:25:13","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_contract$_CToken_$6186_$returns$_t_uint256_$","typeString":"function (contract CToken) view external returns (uint256)"}},"id":7953,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19013:41:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18986:68:13"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7957,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7955,"name":"oraclePriceMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7947,"src":"19072:19:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":7956,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19095:1:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19072:24:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":7963,"nodeType":"IfStatement","src":"19068:60:13","trueBody":{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7959,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"19110:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":7960,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"PRICE_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"19110:17:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":7958,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19105:4:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":7961,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19105:23:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7936,"id":7962,"nodeType":"Return","src":"19098:30:13"}},{"assignments":[7965,7967],"declarations":[{"constant":false,"id":7965,"name":"mathErr","nodeType":"VariableDeclaration","scope":7994,"src":"19143:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"typeName":{"contractScope":null,"id":7964,"name":"MathError","nodeType":"UserDefinedTypeName","referencedDeclaration":6659,"src":"19143:9:13","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"value":null,"visibility":"internal"},{"constant":false,"id":7967,"name":"borrowBalanceEth","nodeType":"VariableDeclaration","scope":7994,"src":"19162:21:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7966,"name":"uint","nodeType":"ElementaryTypeName","src":"19162:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":7974,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":7970,"name":"oraclePriceMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7947,"src":"19220:19:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7969,"name":"Exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14390,"src":"19205:3:13","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Exp_$14390_storage_ptr_$","typeString":"type(struct ExponentialNoError.Exp storage pointer)"}},"id":7971,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"19205:36:13","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}},{"argumentTypes":null,"id":7972,"name":"accountBorrowsNew","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7932,"src":"19243:17:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7968,"name":"mulScalarTruncate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14055,"src":"19187:17:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Exp_$14390_memory_ptr_$_t_uint256_$returns$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"function (struct ExponentialNoError.Exp memory,uint256) pure returns (enum CarefulMath.MathError,uint256)"}},"id":7973,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19187:74:13","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"19142:119:13"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"id":7978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7975,"name":"mathErr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7965,"src":"19279:7:13","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7976,"name":"MathError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6659,"src":"19290:9:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MathError_$6659_$","typeString":"type(enum CarefulMath.MathError)"}},"id":7977,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"19290:18:13","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"src":"19279:29:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":7984,"nodeType":"IfStatement","src":"19275:64:13","trueBody":{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7980,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"19322:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":7981,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"MATH_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"19322:16:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":7979,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19317:4:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":7982,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19317:22:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7936,"id":7983,"nodeType":"Return","src":"19310:29:13"}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7987,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7985,"name":"borrowBalanceEth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7967,"src":"19398:16:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"id":7986,"name":"minBorrowEth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7938,"src":"19417:12:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19398:31:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":7993,"nodeType":"IfStatement","src":"19394:72:13","trueBody":{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7989,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"19443:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":7990,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"BORROW_BELOW_MIN","nodeType":"MemberAccess","referencedDeclaration":null,"src":"19443:22:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":7988,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19438:4:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":7991,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19438:28:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7936,"id":7992,"nodeType":"Return","src":"19431:35:13"}}]}},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7997,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"19526:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":7998,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"19526:14:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":7996,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19521:4:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":7999,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19521:20:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7936,"id":8000,"nodeType":"Return","src":"19514:27:13"}]},"documentation":"@notice Checks if the account should be allowed to borrow the underlying asset of the given market\n@param cToken Asset whose underlying is being borrowed\n@param accountBorrowsNew The user's new borrow balance of the underlying asset","id":8002,"implemented":true,"kind":"function","modifiers":[],"name":"borrowWithinLimits","nodeType":"FunctionDefinition","parameters":{"id":7933,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7930,"name":"cToken","nodeType":"VariableDeclaration","scope":8002,"src":"18707:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7929,"name":"address","nodeType":"ElementaryTypeName","src":"18707:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":7932,"name":"accountBorrowsNew","nodeType":"VariableDeclaration","scope":8002,"src":"18723:22:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7931,"name":"uint","nodeType":"ElementaryTypeName","src":"18723:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"18706:40:13"},"returnParameters":{"id":7936,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7935,"name":"","nodeType":"VariableDeclaration","scope":8002,"src":"18765:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7934,"name":"uint","nodeType":"ElementaryTypeName","src":"18765:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"18764:6:13"},"scope":10531,"src":"18679:869:13","stateMutability":"nonpayable","superFunction":12843,"visibility":"external"},{"body":{"id":8020,"nodeType":"Block","src":"20048:71:13","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":8016,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"20097:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":8017,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"20097:14:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":8015,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"20092:4:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":8018,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20092:20:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8014,"id":8019,"nodeType":"Return","src":"20085:27:13"}]},"documentation":"@notice Checks if the account should be allowed to borrow the underlying asset of the given market\n@param cToken Asset whose underlying is being borrowed\n@param exchangeRateMantissa Underlying/cToken exchange rate\n@param accountTokens Initial account cToken balance\n@param accountTokens Underlying amount to mint","id":8021,"implemented":true,"kind":"function","modifiers":[],"name":"mintWithinLimits","nodeType":"FunctionDefinition","parameters":{"id":8011,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8004,"name":"cToken","nodeType":"VariableDeclaration","scope":8021,"src":"19944:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8003,"name":"address","nodeType":"ElementaryTypeName","src":"19944:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":8006,"name":"exchangeRateMantissa","nodeType":"VariableDeclaration","scope":8021,"src":"19960:25:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8005,"name":"uint","nodeType":"ElementaryTypeName","src":"19960:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":8008,"name":"accountTokens","nodeType":"VariableDeclaration","scope":8021,"src":"19987:18:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8007,"name":"uint","nodeType":"ElementaryTypeName","src":"19987:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":8010,"name":"mintAmount","nodeType":"VariableDeclaration","scope":8021,"src":"20007:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8009,"name":"uint","nodeType":"ElementaryTypeName","src":"20007:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"19943:80:13"},"returnParameters":{"id":8014,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8013,"name":"","nodeType":"VariableDeclaration","scope":8021,"src":"20042:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8012,"name":"uint","nodeType":"ElementaryTypeName","src":"20042:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"20041:6:13"},"scope":10531,"src":"19918:201:13","stateMutability":"nonpayable","superFunction":12790,"visibility":"external"},{"body":{"id":8043,"nodeType":"Block","src":"20502:228:13","statements":[{"expression":{"argumentTypes":null,"id":8030,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8023,"src":"20546:6:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8031,"nodeType":"ExpressionStatement","src":"20546:6:13"},{"expression":{"argumentTypes":null,"id":8032,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8025,"src":"20562:8:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8033,"nodeType":"ExpressionStatement","src":"20562:8:13"},{"expression":{"argumentTypes":null,"id":8034,"name":"borrowAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8027,"src":"20580:12:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8035,"nodeType":"ExpressionStatement","src":"20580:12:13"},{"condition":{"argumentTypes":null,"hexValue":"66616c7365","id":8036,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"20671:5:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"falseBody":null,"id":8042,"nodeType":"IfStatement","src":"20667:57:13","trueBody":{"id":8041,"nodeType":"Block","src":"20678:46:13","statements":[{"expression":{"argumentTypes":null,"id":8039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":8037,"name":"maxAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13039,"src":"20692:9:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":8038,"name":"maxAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13039,"src":"20704:9:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20692:21:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8040,"nodeType":"ExpressionStatement","src":"20692:21:13"}]}}]},"documentation":"@notice Validates borrow and reverts on rejection. May emit logs.\n@param cToken Asset whose underlying is being borrowed\n@param borrower The address borrowing the underlying\n@param borrowAmount The amount of the underlying asset requested to borrow","id":8044,"implemented":true,"kind":"function","modifiers":[],"name":"borrowVerify","nodeType":"FunctionDefinition","parameters":{"id":8028,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8023,"name":"cToken","nodeType":"VariableDeclaration","scope":8044,"src":"20440:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8022,"name":"address","nodeType":"ElementaryTypeName","src":"20440:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":8025,"name":"borrower","nodeType":"VariableDeclaration","scope":8044,"src":"20456:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8024,"name":"address","nodeType":"ElementaryTypeName","src":"20456:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":8027,"name":"borrowAmount","nodeType":"VariableDeclaration","scope":8044,"src":"20474:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8026,"name":"uint","nodeType":"ElementaryTypeName","src":"20474:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"20439:53:13"},"returnParameters":{"id":8029,"nodeType":"ParameterList","parameters":[],"src":"20502:0:13"},"scope":10531,"src":"20418:312:13","stateMutability":"nonpayable","superFunction":12852,"visibility":"external"},{"body":{"id":8085,"nodeType":"Block","src":"21369:363:13","statements":[{"expression":{"argumentTypes":null,"id":8057,"name":"payer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8048,"src":"21413:5:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8058,"nodeType":"ExpressionStatement","src":"21413:5:13"},{"expression":{"argumentTypes":null,"id":8059,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8050,"src":"21428:8:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8060,"nodeType":"ExpressionStatement","src":"21428:8:13"},{"expression":{"argumentTypes":null,"id":8061,"name":"repayAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8052,"src":"21446:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8062,"nodeType":"ExpressionStatement","src":"21446:11:13"},{"condition":{"argumentTypes":null,"id":8067,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"21510:25:13","subExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":8063,"name":"markets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13060,"src":"21511:7:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Market_$13056_storage_$","typeString":"mapping(address => struct ComptrollerV2Storage.Market storage ref)"}},"id":8065,"indexExpression":{"argumentTypes":null,"id":8064,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8046,"src":"21519:6:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"21511:15:13","typeDescriptions":{"typeIdentifier":"t_struct$_Market_$13056_storage","typeString":"struct ComptrollerV2Storage.Market storage ref"}},"id":8066,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"isListed","nodeType":"MemberAccess","referencedDeclaration":13049,"src":"21511:24:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":8074,"nodeType":"IfStatement","src":"21506:92:13","trueBody":{"id":8073,"nodeType":"Block","src":"21537:61:13","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":8069,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"21563:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":8070,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"MARKET_NOT_LISTED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"21563:23:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":8068,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"21558:4:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":8071,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21558:29:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8056,"id":8072,"nodeType":"Return","src":"21551:36:13"}]}},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":8076,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8046,"src":"21670:6:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":8077,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8050,"src":"21678:8:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":8075,"name":"flywheelPreBorrowerAction","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8506,"src":"21644:25:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":8078,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21644:43:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8079,"nodeType":"ExpressionStatement","src":"21644:43:13"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":8081,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"21710:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":8082,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"21710:14:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":8080,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"21705:4:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":8083,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21705:20:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8056,"id":8084,"nodeType":"Return","src":"21698:27:13"}]},"documentation":"@notice Checks if the account should be allowed to repay a borrow in the given market\n@param cToken The market to verify the repay against\n@param payer The account which would repay the asset\n@param borrower The account which would borrowed the asset\n@param repayAmount The amount of the underlying asset the account would repay\n@return 0 if the repay is allowed, otherwise a semi-opaque error code (See ErrorReporter.sol)","id":8086,"implemented":true,"kind":"function","modifiers":[],"name":"repayBorrowAllowed","nodeType":"FunctionDefinition","parameters":{"id":8053,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8046,"name":"cToken","nodeType":"VariableDeclaration","scope":8086,"src":"21254:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8045,"name":"address","nodeType":"ElementaryTypeName","src":"21254:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":8048,"name":"payer","nodeType":"VariableDeclaration","scope":8086,"src":"21278:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8047,"name":"address","nodeType":"ElementaryTypeName","src":"21278:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":8050,"name":"borrower","nodeType":"VariableDeclaration","scope":8086,"src":"21301:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8049,"name":"address","nodeType":"ElementaryTypeName","src":"21301:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":8052,"name":"repayAmount","nodeType":"VariableDeclaration","scope":8086,"src":"21327:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8051,"name":"uint","nodeType":"ElementaryTypeName","src":"21327:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"21244:100:13"},"returnParameters":{"id":8056,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8055,"name":"","nodeType":"VariableDeclaration","scope":8086,"src":"21363:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8054,"name":"uint","nodeType":"ElementaryTypeName","src":"21363:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"21362:6:13"},"scope":10531,"src":"21217:515:13","stateMutability":"nonpayable","superFunction":12865,"visibility":"external"},{"body":{"id":8116,"nodeType":"Block","src":"22215:271:13","statements":[{"expression":{"argumentTypes":null,"id":8099,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8088,"src":"22259:6:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8100,"nodeType":"ExpressionStatement","src":"22259:6:13"},{"expression":{"argumentTypes":null,"id":8101,"name":"payer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8090,"src":"22275:5:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8102,"nodeType":"ExpressionStatement","src":"22275:5:13"},{"expression":{"argumentTypes":null,"id":8103,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8092,"src":"22290:8:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8104,"nodeType":"ExpressionStatement","src":"22290:8:13"},{"expression":{"argumentTypes":null,"id":8105,"name":"actualRepayAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8094,"src":"22308:17:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8106,"nodeType":"ExpressionStatement","src":"22308:17:13"},{"expression":{"argumentTypes":null,"id":8107,"name":"borrowerIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8096,"src":"22335:13:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8108,"nodeType":"ExpressionStatement","src":"22335:13:13"},{"condition":{"argumentTypes":null,"hexValue":"66616c7365","id":8109,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"22427:5:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"falseBody":null,"id":8115,"nodeType":"IfStatement","src":"22423:57:13","trueBody":{"id":8114,"nodeType":"Block","src":"22434:46:13","statements":[{"expression":{"argumentTypes":null,"id":8112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":8110,"name":"maxAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13039,"src":"22448:9:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":8111,"name":"maxAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13039,"src":"22460:9:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22448:21:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8113,"nodeType":"ExpressionStatement","src":"22448:21:13"}]}}]},"documentation":"@notice Validates repayBorrow and reverts on rejection. May emit logs.\n@param cToken Asset being repaid\n@param payer The address repaying the borrow\n@param borrower The address of the borrower\n@param actualRepayAmount The amount of underlying being repaid","id":8117,"implemented":true,"kind":"function","modifiers":[],"name":"repayBorrowVerify","nodeType":"FunctionDefinition","parameters":{"id":8097,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8088,"name":"cToken","nodeType":"VariableDeclaration","scope":8117,"src":"22081:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8087,"name":"address","nodeType":"ElementaryTypeName","src":"22081:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":8090,"name":"payer","nodeType":"VariableDeclaration","scope":8117,"src":"22105:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8089,"name":"address","nodeType":"ElementaryTypeName","src":"22105:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":8092,"name":"borrower","nodeType":"VariableDeclaration","scope":8117,"src":"22128:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8091,"name":"address","nodeType":"ElementaryTypeName","src":"22128:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":8094,"name":"actualRepayAmount","nodeType":"VariableDeclaration","scope":8117,"src":"22154:22:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8093,"name":"uint","nodeType":"ElementaryTypeName","src":"22154:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":8096,"name":"borrowerIndex","nodeType":"VariableDeclaration","scope":8117,"src":"22186:18:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8095,"name":"uint","nodeType":"ElementaryTypeName","src":"22186:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"22071:134:13"},"returnParameters":{"id":8098,"nodeType":"ParameterList","parameters":[],"src":"22215:0:13"},"scope":10531,"src":"22045:441:13","stateMutability":"nonpayable","superFunction":12878,"visibility":"external"},{"body":{"id":8228,"nodeType":"Block","src":"23133:1334:13","statements":[{"expression":{"argumentTypes":null,"id":8132,"name":"liquidator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8123,"src":"23177:10:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8133,"nodeType":"ExpressionStatement","src":"23177:10:13"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":8138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"23242:33:13","subExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":8134,"name":"markets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13060,"src":"23243:7:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Market_$13056_storage_$","typeString":"mapping(address => struct ComptrollerV2Storage.Market storage ref)"}},"id":8136,"indexExpression":{"argumentTypes":null,"id":8135,"name":"cTokenBorrowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8119,"src":"23251:14:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"23243:23:13","typeDescriptions":{"typeIdentifier":"t_struct$_Market_$13056_storage","typeString":"struct ComptrollerV2Storage.Market storage ref"}},"id":8137,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"isListed","nodeType":"MemberAccess","referencedDeclaration":13049,"src":"23243:32:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"argumentTypes":null,"id":8143,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"23279:35:13","subExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":8139,"name":"markets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13060,"src":"23280:7:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Market_$13056_storage_$","typeString":"mapping(address => struct ComptrollerV2Storage.Market storage ref)"}},"id":8141,"indexExpression":{"argumentTypes":null,"id":8140,"name":"cTokenCollateral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8121,"src":"23288:16:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"23280:25:13","typeDescriptions":{"typeIdentifier":"t_struct$_Market_$13056_storage","typeString":"struct ComptrollerV2Storage.Market storage ref"}},"id":8142,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"isListed","nodeType":"MemberAccess","referencedDeclaration":13049,"src":"23280:34:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"23242:72:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":8151,"nodeType":"IfStatement","src":"23238:139:13","trueBody":{"id":8150,"nodeType":"Block","src":"23316:61:13","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":8146,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"23342:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":8147,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"MARKET_NOT_LISTED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"23342:23:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":8145,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"23337:4:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":8148,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"23337:29:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8131,"id":8149,"nodeType":"Return","src":"23330:36:13"}]}},{"assignments":[8153],"declarations":[{"constant":false,"id":8153,"name":"borrowBalance","nodeType":"VariableDeclaration","scope":8228,"src":"23440:18:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8152,"name":"uint","nodeType":"ElementaryTypeName","src":"23440:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":8160,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":8158,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8125,"src":"23504:8:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":8155,"name":"cTokenBorrowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8119,"src":"23468:14:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8154,"name":"CToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6186,"src":"23461:6:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CToken_$6186_$","typeString":"type(contract CToken)"}},"id":8156,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"23461:22:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":8157,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"borrowBalanceStored","nodeType":"MemberAccess","referencedDeclaration":3031,"src":"23461:42:13","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":8159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"23461:52:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"23440:73:13"},{"condition":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":8163,"name":"cTokenBorrowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8119,"src":"23622:14:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8162,"name":"CToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6186,"src":"23615:6:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CToken_$6186_$","typeString":"type(contract CToken)"}},"id":8164,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"23615:22:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":8161,"name":"isDeprecated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10491,"src":"23602:12:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_CToken_$6186_$returns$_t_bool_$","typeString":"function (contract CToken) view returns (bool)"}},"id":8165,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"23602:36:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":8221,"nodeType":"Block","src":"23752:671:13","statements":[{"assignments":[8175,null,8177],"declarations":[{"constant":false,"id":8175,"name":"err","nodeType":"VariableDeclaration","scope":8221,"src":"23846:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"},"typeName":{"contractScope":null,"id":8174,"name":"Error","nodeType":"UserDefinedTypeName","referencedDeclaration":13574,"src":"23846:5:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},"value":null,"visibility":"internal"},null,{"constant":false,"id":8177,"name":"shortfall","nodeType":"VariableDeclaration","scope":8221,"src":"23859:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8176,"name":"uint","nodeType":"ElementaryTypeName","src":"23859:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":8181,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":8179,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8125,"src":"23905:8:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8178,"name":"getAccountLiquidityInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8615,"src":"23877:27:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_enum$_Error_$13574_$_t_uint256_$_t_uint256_$","typeString":"function (address) view returns (enum ComptrollerErrorReporter.Error,uint256,uint256)"}},"id":8180,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"23877:37:13","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_Error_$13574_$_t_uint256_$_t_uint256_$","typeString":"tuple(enum ComptrollerErrorReporter.Error,uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"23845:69:13"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"},"id":8185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":8182,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8175,"src":"23932:3:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":8183,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"23939:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":8184,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"23939:14:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},"src":"23932:21:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":8191,"nodeType":"IfStatement","src":"23928:76:13","trueBody":{"id":8190,"nodeType":"Block","src":"23955:49:13","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":8187,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8175,"src":"23985:3:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":8186,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"23980:4:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":8188,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"23980:9:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8131,"id":8189,"nodeType":"Return","src":"23973:16:13"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":8192,"name":"shortfall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8177,"src":"24022:9:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":8193,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24035:1:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"24022:14:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":8201,"nodeType":"IfStatement","src":"24018:94:13","trueBody":{"id":8200,"nodeType":"Block","src":"24038:74:13","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":8196,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"24068:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":8197,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"INSUFFICIENT_SHORTFALL","nodeType":"MemberAccess","referencedDeclaration":null,"src":"24068:28:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":8195,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24063:4:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":8198,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"24063:34:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8131,"id":8199,"nodeType":"Return","src":"24056:41:13"}]}},{"assignments":[8203],"declarations":[{"constant":false,"id":8203,"name":"maxClose","nodeType":"VariableDeclaration","scope":8221,"src":"24218:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8202,"name":"uint","nodeType":"ElementaryTypeName","src":"24218:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":8210,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":8206,"name":"closeFactorMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13035,"src":"24268:19:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8205,"name":"Exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14390,"src":"24253:3:13","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Exp_$14390_storage_ptr_$","typeString":"type(struct ExponentialNoError.Exp storage pointer)"}},"id":8207,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"24253:36:13","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}},{"argumentTypes":null,"id":8208,"name":"borrowBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8153,"src":"24291:13:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8204,"name":"mul_ScalarTruncate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14427,"src":"24234:18:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Exp_$14390_memory_ptr_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct ExponentialNoError.Exp memory,uint256) pure returns (uint256)"}},"id":8209,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"24234:71:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"24218:87:13"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":8211,"name":"repayAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8127,"src":"24323:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"id":8212,"name":"maxClose","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8203,"src":"24337:8:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24323:22:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":8220,"nodeType":"IfStatement","src":"24319:94:13","trueBody":{"id":8219,"nodeType":"Block","src":"24347:66:13","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":8215,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"24377:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":8216,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"TOO_MUCH_REPAY","nodeType":"MemberAccess","referencedDeclaration":null,"src":"24377:20:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":8214,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24372:4:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":8217,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"24372:26:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8131,"id":8218,"nodeType":"Return","src":"24365:33:13"}]}}]},"id":8222,"nodeType":"IfStatement","src":"23598:825:13","trueBody":{"id":8173,"nodeType":"Block","src":"23640:106:13","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8169,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":8167,"name":"borrowBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8153,"src":"23662:13:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"argumentTypes":null,"id":8168,"name":"repayAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8127,"src":"23679:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23662:28:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"43616e206e6f74207265706179206d6f7265207468616e2074686520746f74616c20626f72726f77","id":8170,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"23692:42:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_22d5d5d3b52be8ce0613f3ddc798758545c899709c322c0c43b33f98cbc6735e","typeString":"literal_string \"Can not repay more than the total borrow\""},"value":"Can not repay more than the total borrow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_22d5d5d3b52be8ce0613f3ddc798758545c899709c322c0c43b33f98cbc6735e","typeString":"literal_string \"Can not repay more than the total borrow\""}],"id":8166,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"23654:7:13","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8171,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"23654:81:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8172,"nodeType":"ExpressionStatement","src":"23654:81:13"}]}},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":8224,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"24445:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":8225,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"24445:14:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":8223,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24440:4:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":8226,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"24440:20:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8131,"id":8227,"nodeType":"Return","src":"24433:27:13"}]},"documentation":"@notice Checks if the liquidation should be allowed to occur\n@param cTokenBorrowed Asset which was borrowed by the borrower\n@param cTokenCollateral Asset which was used as collateral and will be seized\n@param liquidator The address repaying the borrow and seizing the collateral\n@param borrower The address of the borrower\n@param repayAmount The amount of underlying being repaid","id":8229,"implemented":true,"kind":"function","modifiers":[],"name":"liquidateBorrowAllowed","nodeType":"FunctionDefinition","parameters":{"id":8128,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8119,"name":"cTokenBorrowed","nodeType":"VariableDeclaration","scope":8229,"src":"22971:22:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8118,"name":"address","nodeType":"ElementaryTypeName","src":"22971:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":8121,"name":"cTokenCollateral","nodeType":"VariableDeclaration","scope":8229,"src":"23003:24:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8120,"name":"address","nodeType":"ElementaryTypeName","src":"23003:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":8123,"name":"liquidator","nodeType":"VariableDeclaration","scope":8229,"src":"23037:18:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8122,"name":"address","nodeType":"ElementaryTypeName","src":"23037:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":8125,"name":"borrower","nodeType":"VariableDeclaration","scope":8229,"src":"23065:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8124,"name":"address","nodeType":"ElementaryTypeName","src":"23065:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":8127,"name":"repayAmount","nodeType":"VariableDeclaration","scope":8229,"src":"23091:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8126,"name":"uint","nodeType":"ElementaryTypeName","src":"23091:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"22961:147:13"},"returnParameters":{"id":8131,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8130,"name":"","nodeType":"VariableDeclaration","scope":8229,"src":"23127:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8129,"name":"uint","nodeType":"ElementaryTypeName","src":"23127:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"23126:6:13"},"scope":10531,"src":"22930:1537:13","stateMutability":"nonpayable","superFunction":12893,"visibility":"external"},{"body":{"id":8263,"nodeType":"Block","src":"25150:308:13","statements":[{"expression":{"argumentTypes":null,"id":8244,"name":"cTokenBorrowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8231,"src":"25194:14:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8245,"nodeType":"ExpressionStatement","src":"25194:14:13"},{"expression":{"argumentTypes":null,"id":8246,"name":"cTokenCollateral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8233,"src":"25218:16:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8247,"nodeType":"ExpressionStatement","src":"25218:16:13"},{"expression":{"argumentTypes":null,"id":8248,"name":"liquidator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8235,"src":"25244:10:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8249,"nodeType":"ExpressionStatement","src":"25244:10:13"},{"expression":{"argumentTypes":null,"id":8250,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8237,"src":"25264:8:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8251,"nodeType":"ExpressionStatement","src":"25264:8:13"},{"expression":{"argumentTypes":null,"id":8252,"name":"actualRepayAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8239,"src":"25282:17:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8253,"nodeType":"ExpressionStatement","src":"25282:17:13"},{"expression":{"argumentTypes":null,"id":8254,"name":"seizeTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8241,"src":"25309:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8255,"nodeType":"ExpressionStatement","src":"25309:11:13"},{"condition":{"argumentTypes":null,"hexValue":"66616c7365","id":8256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"25399:5:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"falseBody":null,"id":8262,"nodeType":"IfStatement","src":"25395:57:13","trueBody":{"id":8261,"nodeType":"Block","src":"25406:46:13","statements":[{"expression":{"argumentTypes":null,"id":8259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":8257,"name":"maxAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13039,"src":"25420:9:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":8258,"name":"maxAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13039,"src":"25432:9:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25420:21:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8260,"nodeType":"ExpressionStatement","src":"25420:21:13"}]}}]},"documentation":"@notice Validates liquidateBorrow and reverts on rejection. May emit logs.\n@param cTokenBorrowed Asset which was borrowed by the borrower\n@param cTokenCollateral Asset which was used as collateral and will be seized\n@param liquidator The address repaying the borrow and seizing the collateral\n@param borrower The address of the borrower\n@param actualRepayAmount The amount of underlying being repaid","id":8264,"implemented":true,"kind":"function","modifiers":[],"name":"liquidateBorrowVerify","nodeType":"FunctionDefinition","parameters":{"id":8242,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8231,"name":"cTokenBorrowed","nodeType":"VariableDeclaration","scope":8264,"src":"24971:22:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8230,"name":"address","nodeType":"ElementaryTypeName","src":"24971:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":8233,"name":"cTokenCollateral","nodeType":"VariableDeclaration","scope":8264,"src":"25003:24:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8232,"name":"address","nodeType":"ElementaryTypeName","src":"25003:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":8235,"name":"liquidator","nodeType":"VariableDeclaration","scope":8264,"src":"25037:18:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8234,"name":"address","nodeType":"ElementaryTypeName","src":"25037:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":8237,"name":"borrower","nodeType":"VariableDeclaration","scope":8264,"src":"25065:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8236,"name":"address","nodeType":"ElementaryTypeName","src":"25065:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":8239,"name":"actualRepayAmount","nodeType":"VariableDeclaration","scope":8264,"src":"25091:22:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8238,"name":"uint","nodeType":"ElementaryTypeName","src":"25091:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":8241,"name":"seizeTokens","nodeType":"VariableDeclaration","scope":8264,"src":"25123:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8240,"name":"uint","nodeType":"ElementaryTypeName","src":"25123:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"24961:179:13"},"returnParameters":{"id":8243,"nodeType":"ParameterList","parameters":[],"src":"25150:0:13"},"scope":10531,"src":"24931:527:13","stateMutability":"nonpayable","superFunction":12908,"visibility":"external"},{"body":{"id":8338,"nodeType":"Block","src":"26104:790:13","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":8281,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"26201:20:13","subExpression":{"argumentTypes":null,"id":8280,"name":"seizeGuardianPaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13105,"src":"26202:19:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"7365697a6520697320706175736564","id":8282,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"26223:17:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_d90a41fca4bdd602e58925aa5ca016279f8a08da0f3958dcc966cb5624a4ebe8","typeString":"literal_string \"seize is paused\""},"value":"seize is paused"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d90a41fca4bdd602e58925aa5ca016279f8a08da0f3958dcc966cb5624a4ebe8","typeString":"literal_string \"seize is paused\""}],"id":8279,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"26193:7:13","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8283,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"26193:48:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8284,"nodeType":"ExpressionStatement","src":"26193:48:13"},{"expression":{"argumentTypes":null,"id":8285,"name":"liquidator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8270,"src":"26286:10:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8286,"nodeType":"ExpressionStatement","src":"26286:10:13"},{"expression":{"argumentTypes":null,"id":8287,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8272,"src":"26306:8:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8288,"nodeType":"ExpressionStatement","src":"26306:8:13"},{"expression":{"argumentTypes":null,"id":8289,"name":"seizeTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8274,"src":"26324:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8290,"nodeType":"ExpressionStatement","src":"26324:11:13"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8301,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":8295,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"26390:35:13","subExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":8291,"name":"markets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13060,"src":"26391:7:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Market_$13056_storage_$","typeString":"mapping(address => struct ComptrollerV2Storage.Market storage ref)"}},"id":8293,"indexExpression":{"argumentTypes":null,"id":8292,"name":"cTokenCollateral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8266,"src":"26399:16:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"26391:25:13","typeDescriptions":{"typeIdentifier":"t_struct$_Market_$13056_storage","typeString":"struct ComptrollerV2Storage.Market storage ref"}},"id":8294,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"isListed","nodeType":"MemberAccess","referencedDeclaration":13049,"src":"26391:34:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"argumentTypes":null,"id":8300,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"26429:33:13","subExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":8296,"name":"markets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13060,"src":"26430:7:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Market_$13056_storage_$","typeString":"mapping(address => struct ComptrollerV2Storage.Market storage ref)"}},"id":8298,"indexExpression":{"argumentTypes":null,"id":8297,"name":"cTokenBorrowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8268,"src":"26438:14:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"26430:23:13","typeDescriptions":{"typeIdentifier":"t_struct$_Market_$13056_storage","typeString":"struct ComptrollerV2Storage.Market storage ref"}},"id":8299,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"isListed","nodeType":"MemberAccess","referencedDeclaration":13049,"src":"26430:32:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"26390:72:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":8308,"nodeType":"IfStatement","src":"26386:139:13","trueBody":{"id":8307,"nodeType":"Block","src":"26464:61:13","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":8303,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"26490:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":8304,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"MARKET_NOT_LISTED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"26490:23:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":8302,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26485:4:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":8305,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"26485:29:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8278,"id":8306,"nodeType":"Return","src":"26478:36:13"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_contract$_ComptrollerInterface_$12980","typeString":"contract ComptrollerInterface"},"id":8319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":8310,"name":"cTokenCollateral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8266,"src":"26601:16:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8309,"name":"CToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6186,"src":"26594:6:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CToken_$6186_$","typeString":"type(contract CToken)"}},"id":8311,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"26594:24:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":8312,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"comptroller","nodeType":"MemberAccess","referencedDeclaration":6224,"src":"26594:36:13","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_ComptrollerInterface_$12980_$","typeString":"function () view external returns (contract ComptrollerInterface)"}},"id":8313,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"26594:38:13","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerInterface_$12980","typeString":"contract ComptrollerInterface"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":8315,"name":"cTokenBorrowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8268,"src":"26643:14:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8314,"name":"CToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6186,"src":"26636:6:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CToken_$6186_$","typeString":"type(contract CToken)"}},"id":8316,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"26636:22:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":8317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"comptroller","nodeType":"MemberAccess","referencedDeclaration":6224,"src":"26636:34:13","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_ComptrollerInterface_$12980_$","typeString":"function () view external returns (contract ComptrollerInterface)"}},"id":8318,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"26636:36:13","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerInterface_$12980","typeString":"contract ComptrollerInterface"}},"src":"26594:78:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":8326,"nodeType":"IfStatement","src":"26590:148:13","trueBody":{"id":8325,"nodeType":"Block","src":"26674:64:13","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":8321,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"26700:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":8322,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"COMPTROLLER_MISMATCH","nodeType":"MemberAccess","referencedDeclaration":null,"src":"26700:26:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":8320,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26695:4:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":8323,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"26695:32:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8278,"id":8324,"nodeType":"Return","src":"26688:39:13"}]}},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":8328,"name":"cTokenCollateral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8266,"src":"26810:16:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":8329,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8272,"src":"26828:8:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":8330,"name":"liquidator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8270,"src":"26838:10:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":8327,"name":"flywheelPreTransferAction","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8539,"src":"26784:25:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$returns$__$","typeString":"function (address,address,address)"}},"id":8331,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"26784:65:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8332,"nodeType":"ExpressionStatement","src":"26784:65:13"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":8334,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"26872:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":8335,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"26872:14:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":8333,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26867:4:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":8336,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"26867:20:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8278,"id":8337,"nodeType":"Return","src":"26860:27:13"}]},"documentation":"@notice Checks if the seizing of assets should be allowed to occur\n@param cTokenCollateral Asset which was used as collateral and will be seized\n@param cTokenBorrowed Asset which was borrowed by the borrower\n@param liquidator The address repaying the borrow and seizing the collateral\n@param borrower The address of the borrower\n@param seizeTokens The number of collateral tokens to seize","id":8339,"implemented":true,"kind":"function","modifiers":[],"name":"seizeAllowed","nodeType":"FunctionDefinition","parameters":{"id":8275,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8266,"name":"cTokenCollateral","nodeType":"VariableDeclaration","scope":8339,"src":"25942:24:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8265,"name":"address","nodeType":"ElementaryTypeName","src":"25942:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":8268,"name":"cTokenBorrowed","nodeType":"VariableDeclaration","scope":8339,"src":"25976:22:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8267,"name":"address","nodeType":"ElementaryTypeName","src":"25976:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":8270,"name":"liquidator","nodeType":"VariableDeclaration","scope":8339,"src":"26008:18:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8269,"name":"address","nodeType":"ElementaryTypeName","src":"26008:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":8272,"name":"borrower","nodeType":"VariableDeclaration","scope":8339,"src":"26036:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8271,"name":"address","nodeType":"ElementaryTypeName","src":"26036:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":8274,"name":"seizeTokens","nodeType":"VariableDeclaration","scope":8339,"src":"26062:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8273,"name":"uint","nodeType":"ElementaryTypeName","src":"26062:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"25932:147:13"},"returnParameters":{"id":8278,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8277,"name":"","nodeType":"VariableDeclaration","scope":8339,"src":"26098:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8276,"name":"uint","nodeType":"ElementaryTypeName","src":"26098:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"26097:6:13"},"scope":10531,"src":"25911:983:13","stateMutability":"nonpayable","superFunction":12923,"visibility":"external"},{"body":{"id":8369,"nodeType":"Block","src":"27522:281:13","statements":[{"expression":{"argumentTypes":null,"id":8352,"name":"cTokenCollateral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8341,"src":"27566:16:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8353,"nodeType":"ExpressionStatement","src":"27566:16:13"},{"expression":{"argumentTypes":null,"id":8354,"name":"cTokenBorrowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8343,"src":"27592:14:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8355,"nodeType":"ExpressionStatement","src":"27592:14:13"},{"expression":{"argumentTypes":null,"id":8356,"name":"liquidator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8345,"src":"27616:10:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8357,"nodeType":"ExpressionStatement","src":"27616:10:13"},{"expression":{"argumentTypes":null,"id":8358,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8347,"src":"27636:8:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8359,"nodeType":"ExpressionStatement","src":"27636:8:13"},{"expression":{"argumentTypes":null,"id":8360,"name":"seizeTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8349,"src":"27654:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8361,"nodeType":"ExpressionStatement","src":"27654:11:13"},{"condition":{"argumentTypes":null,"hexValue":"66616c7365","id":8362,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"27744:5:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"falseBody":null,"id":8368,"nodeType":"IfStatement","src":"27740:57:13","trueBody":{"id":8367,"nodeType":"Block","src":"27751:46:13","statements":[{"expression":{"argumentTypes":null,"id":8365,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":8363,"name":"maxAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13039,"src":"27765:9:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":8364,"name":"maxAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13039,"src":"27777:9:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27765:21:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8366,"nodeType":"ExpressionStatement","src":"27765:21:13"}]}}]},"documentation":"@notice Validates seize and reverts on rejection. May emit logs.\n@param cTokenCollateral Asset which was used as collateral and will be seized\n@param cTokenBorrowed Asset which was borrowed by the borrower\n@param liquidator The address repaying the borrow and seizing the collateral\n@param borrower The address of the borrower\n@param seizeTokens The number of collateral tokens to seize","id":8370,"implemented":true,"kind":"function","modifiers":[],"name":"seizeVerify","nodeType":"FunctionDefinition","parameters":{"id":8350,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8341,"name":"cTokenCollateral","nodeType":"VariableDeclaration","scope":8370,"src":"27375:24:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8340,"name":"address","nodeType":"ElementaryTypeName","src":"27375:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":8343,"name":"cTokenBorrowed","nodeType":"VariableDeclaration","scope":8370,"src":"27409:22:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8342,"name":"address","nodeType":"ElementaryTypeName","src":"27409:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":8345,"name":"liquidator","nodeType":"VariableDeclaration","scope":8370,"src":"27441:18:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8344,"name":"address","nodeType":"ElementaryTypeName","src":"27441:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":8347,"name":"borrower","nodeType":"VariableDeclaration","scope":8370,"src":"27469:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8346,"name":"address","nodeType":"ElementaryTypeName","src":"27469:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":8349,"name":"seizeTokens","nodeType":"VariableDeclaration","scope":8370,"src":"27495:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8348,"name":"uint","nodeType":"ElementaryTypeName","src":"27495:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"27365:147:13"},"returnParameters":{"id":8351,"nodeType":"ParameterList","parameters":[],"src":"27522:0:13"},"scope":10531,"src":"27345:458:13","stateMutability":"nonpayable","superFunction":12936,"visibility":"external"},{"body":{"id":8418,"nodeType":"Block","src":"28372:559:13","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":8385,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"28469:23:13","subExpression":{"argumentTypes":null,"id":8384,"name":"transferGuardianPaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13103,"src":"28470:22:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"7472616e7366657220697320706175736564","id":8386,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"28494:20:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_b5db2e902ee37d8683e458d871fcb4db0f6161fc6067d555c25420c11cd7f985","typeString":"literal_string \"transfer is paused\""},"value":"transfer is paused"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b5db2e902ee37d8683e458d871fcb4db0f6161fc6067d555c25420c11cd7f985","typeString":"literal_string \"transfer is paused\""}],"id":8383,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"28461:7:13","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8387,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"28461:54:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8388,"nodeType":"ExpressionStatement","src":"28461:54:13"},{"assignments":[8390],"declarations":[{"constant":false,"id":8390,"name":"allowed","nodeType":"VariableDeclaration","scope":8418,"src":"28646:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8389,"name":"uint","nodeType":"ElementaryTypeName","src":"28646:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":8396,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":8392,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8372,"src":"28683:6:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":8393,"name":"src","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8374,"src":"28691:3:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":8394,"name":"transferTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8378,"src":"28696:14:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8391,"name":"redeemAllowedInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7705,"src":"28661:21:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,address,uint256) view returns (uint256)"}},"id":8395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"28661:50:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"28646:65:13"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8402,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":8397,"name":"allowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8390,"src":"28725:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":8399,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"28741:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":8400,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"28741:14:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":8398,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"28736:4:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":8401,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"28736:20:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"28725:31:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":8406,"nodeType":"IfStatement","src":"28721:76:13","trueBody":{"id":8405,"nodeType":"Block","src":"28758:39:13","statements":[{"expression":{"argumentTypes":null,"id":8403,"name":"allowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8390,"src":"28779:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8382,"id":8404,"nodeType":"Return","src":"28772:14:13"}]}},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":8408,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8372,"src":"28869:6:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":8409,"name":"src","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8374,"src":"28877:3:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":8410,"name":"dst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8376,"src":"28882:3:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":8407,"name":"flywheelPreTransferAction","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8539,"src":"28843:25:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$returns$__$","typeString":"function (address,address,address)"}},"id":8411,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"28843:43:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8412,"nodeType":"ExpressionStatement","src":"28843:43:13"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":8414,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"28909:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":8415,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"28909:14:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":8413,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"28904:4:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":8416,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"28904:20:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8382,"id":8417,"nodeType":"Return","src":"28897:27:13"}]},"documentation":"@notice Checks if the account should be allowed to transfer tokens in the given market\n@param cToken The market to verify the transfer against\n@param src The account which sources the tokens\n@param dst The account which receives the tokens\n@param transferTokens The number of cTokens to transfer\n@return 0 if the transfer is allowed, otherwise a semi-opaque error code (See ErrorReporter.sol)","id":8419,"implemented":true,"kind":"function","modifiers":[],"name":"transferAllowed","nodeType":"FunctionDefinition","parameters":{"id":8379,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8372,"name":"cToken","nodeType":"VariableDeclaration","scope":8419,"src":"28285:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8371,"name":"address","nodeType":"ElementaryTypeName","src":"28285:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":8374,"name":"src","nodeType":"VariableDeclaration","scope":8419,"src":"28301:11:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8373,"name":"address","nodeType":"ElementaryTypeName","src":"28301:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":8376,"name":"dst","nodeType":"VariableDeclaration","scope":8419,"src":"28314:11:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8375,"name":"address","nodeType":"ElementaryTypeName","src":"28314:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":8378,"name":"transferTokens","nodeType":"VariableDeclaration","scope":8419,"src":"28327:19:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8377,"name":"uint","nodeType":"ElementaryTypeName","src":"28327:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"28284:63:13"},"returnParameters":{"id":8382,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8381,"name":"","nodeType":"VariableDeclaration","scope":8419,"src":"28366:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8380,"name":"uint","nodeType":"ElementaryTypeName","src":"28366:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"28365:6:13"},"scope":10531,"src":"28260:671:13","stateMutability":"nonpayable","superFunction":12949,"visibility":"external"},{"body":{"id":8445,"nodeType":"Block","src":"29343:238:13","statements":[{"expression":{"argumentTypes":null,"id":8430,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8421,"src":"29387:6:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8431,"nodeType":"ExpressionStatement","src":"29387:6:13"},{"expression":{"argumentTypes":null,"id":8432,"name":"src","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8423,"src":"29403:3:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8433,"nodeType":"ExpressionStatement","src":"29403:3:13"},{"expression":{"argumentTypes":null,"id":8434,"name":"dst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8425,"src":"29416:3:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8435,"nodeType":"ExpressionStatement","src":"29416:3:13"},{"expression":{"argumentTypes":null,"id":8436,"name":"transferTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8427,"src":"29429:14:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8437,"nodeType":"ExpressionStatement","src":"29429:14:13"},{"condition":{"argumentTypes":null,"hexValue":"66616c7365","id":8438,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"29522:5:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"falseBody":null,"id":8444,"nodeType":"IfStatement","src":"29518:57:13","trueBody":{"id":8443,"nodeType":"Block","src":"29529:46:13","statements":[{"expression":{"argumentTypes":null,"id":8441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":8439,"name":"maxAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13039,"src":"29543:9:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":8440,"name":"maxAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13039,"src":"29555:9:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"29543:21:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8442,"nodeType":"ExpressionStatement","src":"29543:21:13"}]}}]},"documentation":"@notice Validates transfer and reverts on rejection. May emit logs.\n@param cToken Asset being transferred\n@param src The account which sources the tokens\n@param dst The account which receives the tokens\n@param transferTokens The number of cTokens to transfer","id":8446,"implemented":true,"kind":"function","modifiers":[],"name":"transferVerify","nodeType":"FunctionDefinition","parameters":{"id":8428,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8421,"name":"cToken","nodeType":"VariableDeclaration","scope":8446,"src":"29271:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8420,"name":"address","nodeType":"ElementaryTypeName","src":"29271:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":8423,"name":"src","nodeType":"VariableDeclaration","scope":8446,"src":"29287:11:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8422,"name":"address","nodeType":"ElementaryTypeName","src":"29287:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":8425,"name":"dst","nodeType":"VariableDeclaration","scope":8446,"src":"29300:11:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8424,"name":"address","nodeType":"ElementaryTypeName","src":"29300:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":8427,"name":"transferTokens","nodeType":"VariableDeclaration","scope":8446,"src":"29313:19:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8426,"name":"uint","nodeType":"ElementaryTypeName","src":"29313:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"29270:63:13"},"returnParameters":{"id":8429,"nodeType":"ParameterList","parameters":[],"src":"29343:0:13"},"scope":10531,"src":"29247:334:13","stateMutability":"nonpayable","superFunction":12960,"visibility":"external"},{"body":{"id":8475,"nodeType":"Block","src":"29860:168:13","statements":[{"body":{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":8470,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8448,"src":"30004:6:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":8471,"name":"supplier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8450,"src":"30012:8:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":8465,"name":"rewardsDistributors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13131,"src":"29954:19:13","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":8467,"indexExpression":{"argumentTypes":null,"id":8466,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8454,"src":"29974:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"29954:22:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8464,"name":"RewardsDistributorDelegate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20921,"src":"29927:26:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_RewardsDistributorDelegate_$20921_$","typeString":"type(contract RewardsDistributorDelegate)"}},"id":8468,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"29927:50:13","typeDescriptions":{"typeIdentifier":"t_contract$_RewardsDistributorDelegate_$20921","typeString":"contract RewardsDistributorDelegate"}},"id":8469,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"flywheelPreSupplierAction","nodeType":"MemberAccess","referencedDeclaration":20330,"src":"29927:76:13","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address) external"}},"id":8472,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"29927:94:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8473,"nodeType":"ExpressionStatement","src":"29927:94:13"},"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":8457,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8454,"src":"29890:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":8458,"name":"rewardsDistributors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13131,"src":"29894:19:13","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":8459,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"29894:26:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"29890:30:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8474,"initializationExpression":{"assignments":[8454],"declarations":[{"constant":false,"id":8454,"name":"i","nodeType":"VariableDeclaration","scope":8474,"src":"29875:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8453,"name":"uint256","nodeType":"ElementaryTypeName","src":"29875:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":8456,"initialValue":{"argumentTypes":null,"hexValue":"30","id":8455,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29887:1:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"29875:13:13"},"loopExpression":{"expression":{"argumentTypes":null,"id":8462,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"29922:3:13","subExpression":{"argumentTypes":null,"id":8461,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8454,"src":"29922:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8463,"nodeType":"ExpressionStatement","src":"29922:3:13"},"nodeType":"ForStatement","src":"29870:151:13"}]},"documentation":"@notice Keeps the flywheel moving pre-mint and pre-redeem\n@param cToken The relevant market\n@param supplier The minter/redeemer","id":8476,"implemented":true,"kind":"function","modifiers":[],"name":"flywheelPreSupplierAction","nodeType":"FunctionDefinition","parameters":{"id":8451,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8448,"name":"cToken","nodeType":"VariableDeclaration","scope":8476,"src":"29817:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8447,"name":"address","nodeType":"ElementaryTypeName","src":"29817:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":8450,"name":"supplier","nodeType":"VariableDeclaration","scope":8476,"src":"29833:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8449,"name":"address","nodeType":"ElementaryTypeName","src":"29833:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"29816:34:13"},"returnParameters":{"id":8452,"nodeType":"ParameterList","parameters":[],"src":"29860:0:13"},"scope":10531,"src":"29782:246:13","stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},{"body":{"id":8505,"nodeType":"Block","src":"30271:168:13","statements":[{"body":{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":8500,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8478,"src":"30415:6:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":8501,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8480,"src":"30423:8:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":8495,"name":"rewardsDistributors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13131,"src":"30365:19:13","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":8497,"indexExpression":{"argumentTypes":null,"id":8496,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8484,"src":"30385:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"30365:22:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8494,"name":"RewardsDistributorDelegate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20921,"src":"30338:26:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_RewardsDistributorDelegate_$20921_$","typeString":"type(contract RewardsDistributorDelegate)"}},"id":8498,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"30338:50:13","typeDescriptions":{"typeIdentifier":"t_contract$_RewardsDistributorDelegate_$20921","typeString":"contract RewardsDistributorDelegate"}},"id":8499,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"flywheelPreBorrowerAction","nodeType":"MemberAccess","referencedDeclaration":20367,"src":"30338:76:13","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address) external"}},"id":8502,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"30338:94:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8503,"nodeType":"ExpressionStatement","src":"30338:94:13"},"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":8487,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8484,"src":"30301:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":8488,"name":"rewardsDistributors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13131,"src":"30305:19:13","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":8489,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"30305:26:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"30301:30:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8504,"initializationExpression":{"assignments":[8484],"declarations":[{"constant":false,"id":8484,"name":"i","nodeType":"VariableDeclaration","scope":8504,"src":"30286:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8483,"name":"uint256","nodeType":"ElementaryTypeName","src":"30286:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":8486,"initialValue":{"argumentTypes":null,"hexValue":"30","id":8485,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30298:1:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"30286:13:13"},"loopExpression":{"expression":{"argumentTypes":null,"id":8492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"30333:3:13","subExpression":{"argumentTypes":null,"id":8491,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8484,"src":"30333:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8493,"nodeType":"ExpressionStatement","src":"30333:3:13"},"nodeType":"ForStatement","src":"30281:151:13"}]},"documentation":"@notice Keeps the flywheel moving pre-borrow and pre-repay\n@param cToken The relevant market\n@param borrower The borrower","id":8506,"implemented":true,"kind":"function","modifiers":[],"name":"flywheelPreBorrowerAction","nodeType":"FunctionDefinition","parameters":{"id":8481,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8478,"name":"cToken","nodeType":"VariableDeclaration","scope":8506,"src":"30228:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8477,"name":"address","nodeType":"ElementaryTypeName","src":"30228:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":8480,"name":"borrower","nodeType":"VariableDeclaration","scope":8506,"src":"30244:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8479,"name":"address","nodeType":"ElementaryTypeName","src":"30244:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"30227:34:13"},"returnParameters":{"id":8482,"nodeType":"ParameterList","parameters":[],"src":"30271:0:13"},"scope":10531,"src":"30193:246:13","stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},{"body":{"id":8538,"nodeType":"Block","src":"30767:168:13","statements":[{"body":{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":8532,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8508,"src":"30911:6:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":8533,"name":"src","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8510,"src":"30919:3:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":8534,"name":"dst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8512,"src":"30924:3:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":8527,"name":"rewardsDistributors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13131,"src":"30861:19:13","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":8529,"indexExpression":{"argumentTypes":null,"id":8528,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8516,"src":"30881:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"30861:22:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8526,"name":"RewardsDistributorDelegate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20921,"src":"30834:26:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_RewardsDistributorDelegate_$20921_$","typeString":"type(contract RewardsDistributorDelegate)"}},"id":8530,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"30834:50:13","typeDescriptions":{"typeIdentifier":"t_contract$_RewardsDistributorDelegate_$20921","typeString":"contract RewardsDistributorDelegate"}},"id":8531,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"flywheelPreTransferAction","nodeType":"MemberAccess","referencedDeclaration":20399,"src":"30834:76:13","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$returns$__$","typeString":"function (address,address,address) external"}},"id":8535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"30834:94:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8536,"nodeType":"ExpressionStatement","src":"30834:94:13"},"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8522,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":8519,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8516,"src":"30797:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":8520,"name":"rewardsDistributors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13131,"src":"30801:19:13","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":8521,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"30801:26:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"30797:30:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8537,"initializationExpression":{"assignments":[8516],"declarations":[{"constant":false,"id":8516,"name":"i","nodeType":"VariableDeclaration","scope":8537,"src":"30782:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8515,"name":"uint256","nodeType":"ElementaryTypeName","src":"30782:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":8518,"initialValue":{"argumentTypes":null,"hexValue":"30","id":8517,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30794:1:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"30782:13:13"},"loopExpression":{"expression":{"argumentTypes":null,"id":8524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"30829:3:13","subExpression":{"argumentTypes":null,"id":8523,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8516,"src":"30829:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8525,"nodeType":"ExpressionStatement","src":"30829:3:13"},"nodeType":"ForStatement","src":"30777:151:13"}]},"documentation":"@notice Keeps the flywheel moving pre-transfer and pre-seize\n@param cToken The relevant market\n@param src The account which sources the tokens\n@param dst The account which receives the tokens","id":8539,"implemented":true,"kind":"function","modifiers":[],"name":"flywheelPreTransferAction","nodeType":"FunctionDefinition","parameters":{"id":8513,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8508,"name":"cToken","nodeType":"VariableDeclaration","scope":8539,"src":"30716:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8507,"name":"address","nodeType":"ElementaryTypeName","src":"30716:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":8510,"name":"src","nodeType":"VariableDeclaration","scope":8539,"src":"30732:11:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8509,"name":"address","nodeType":"ElementaryTypeName","src":"30732:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":8512,"name":"dst","nodeType":"VariableDeclaration","scope":8539,"src":"30745:11:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8511,"name":"address","nodeType":"ElementaryTypeName","src":"30745:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"30715:42:13"},"returnParameters":{"id":8514,"nodeType":"ParameterList","parameters":[],"src":"30767:0:13"},"scope":10531,"src":"30681:254:13","stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},{"canonicalName":"Comptroller.AccountLiquidityLocalVars","id":8560,"members":[{"constant":false,"id":8541,"name":"sumCollateral","nodeType":"VariableDeclaration","scope":8560,"src":"31321:18:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8540,"name":"uint","nodeType":"ElementaryTypeName","src":"31321:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":8543,"name":"sumBorrowPlusEffects","nodeType":"VariableDeclaration","scope":8560,"src":"31349:25:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8542,"name":"uint","nodeType":"ElementaryTypeName","src":"31349:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":8545,"name":"cTokenBalance","nodeType":"VariableDeclaration","scope":8560,"src":"31384:18:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8544,"name":"uint","nodeType":"ElementaryTypeName","src":"31384:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":8547,"name":"borrowBalance","nodeType":"VariableDeclaration","scope":8560,"src":"31412:18:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8546,"name":"uint","nodeType":"ElementaryTypeName","src":"31412:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":8549,"name":"exchangeRateMantissa","nodeType":"VariableDeclaration","scope":8560,"src":"31440:25:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8548,"name":"uint","nodeType":"ElementaryTypeName","src":"31440:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":8551,"name":"oraclePriceMantissa","nodeType":"VariableDeclaration","scope":8560,"src":"31475:24:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8550,"name":"uint","nodeType":"ElementaryTypeName","src":"31475:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":8553,"name":"collateralFactor","nodeType":"VariableDeclaration","scope":8560,"src":"31509:20:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":8552,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"31509:3:13","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"},{"constant":false,"id":8555,"name":"exchangeRate","nodeType":"VariableDeclaration","scope":8560,"src":"31539:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":8554,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"31539:3:13","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"},{"constant":false,"id":8557,"name":"oraclePrice","nodeType":"VariableDeclaration","scope":8560,"src":"31565:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":8556,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"31565:3:13","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"},{"constant":false,"id":8559,"name":"tokensToDenom","nodeType":"VariableDeclaration","scope":8560,"src":"31590:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":8558,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"31590:3:13","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"}],"name":"AccountLiquidityLocalVars","nodeType":"StructDefinition","scope":10531,"src":"31278:336:13","visibility":"public"},{"body":{"id":8593,"nodeType":"Block","src":"31992:179:13","statements":[{"assignments":[8572,8574,8576],"declarations":[{"constant":false,"id":8572,"name":"err","nodeType":"VariableDeclaration","scope":8593,"src":"32003:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"},"typeName":{"contractScope":null,"id":8571,"name":"Error","nodeType":"UserDefinedTypeName","referencedDeclaration":13574,"src":"32003:5:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},"value":null,"visibility":"internal"},{"constant":false,"id":8574,"name":"liquidity","nodeType":"VariableDeclaration","scope":8593,"src":"32014:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8573,"name":"uint","nodeType":"ElementaryTypeName","src":"32014:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":8576,"name":"shortfall","nodeType":"VariableDeclaration","scope":8593,"src":"32030:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8575,"name":"uint","nodeType":"ElementaryTypeName","src":"32030:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":8585,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":8578,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8562,"src":"32088:7:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":8580,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32104:1:13","subdenomination":null,"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":8579,"name":"CToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6186,"src":"32097:6:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CToken_$6186_$","typeString":"type(contract CToken)"}},"id":8581,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"32097:9:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},{"argumentTypes":null,"hexValue":"30","id":8582,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32108:1:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"argumentTypes":null,"hexValue":"30","id":8583,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32111:1:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":8577,"name":"getHypotheticalAccountLiquidityInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8881,"src":"32048:39:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_contract$_CToken_$6186_$_t_uint256_$_t_uint256_$returns$_t_enum$_Error_$13574_$_t_uint256_$_t_uint256_$","typeString":"function (address,contract CToken,uint256,uint256) view returns (enum ComptrollerErrorReporter.Error,uint256,uint256)"}},"id":8584,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"32048:65:13","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_Error_$13574_$_t_uint256_$_t_uint256_$","typeString":"tuple(enum ComptrollerErrorReporter.Error,uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"32002:111:13"},{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":8587,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8572,"src":"32137:3:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":8586,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"32132:4:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":8588,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"32132:9:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":8589,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8574,"src":"32143:9:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":8590,"name":"shortfall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8576,"src":"32154:9:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":8591,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"32131:33:13","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256,uint256)"}},"functionReturnParameters":8570,"id":8592,"nodeType":"Return","src":"32124:40:13"}]},"documentation":"@notice Determine the current account liquidity wrt collateral requirements\n@return (possible error code (semi-opaque),\naccount liquidity in excess of collateral requirements,\n account shortfall below collateral requirements)","id":8594,"implemented":true,"kind":"function","modifiers":[],"name":"getAccountLiquidity","nodeType":"FunctionDefinition","parameters":{"id":8563,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8562,"name":"account","nodeType":"VariableDeclaration","scope":8594,"src":"31936:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8561,"name":"address","nodeType":"ElementaryTypeName","src":"31936:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"31935:17:13"},"returnParameters":{"id":8570,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8565,"name":"","nodeType":"VariableDeclaration","scope":8594,"src":"31974:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8564,"name":"uint","nodeType":"ElementaryTypeName","src":"31974:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":8567,"name":"","nodeType":"VariableDeclaration","scope":8594,"src":"31980:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8566,"name":"uint","nodeType":"ElementaryTypeName","src":"31980:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":8569,"name":"","nodeType":"VariableDeclaration","scope":8594,"src":"31986:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8568,"name":"uint","nodeType":"ElementaryTypeName","src":"31986:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"31973:18:13"},"scope":10531,"src":"31907:264:13","stateMutability":"view","superFunction":null,"visibility":"public"},{"body":{"id":8614,"nodeType":"Block","src":"32546:89:13","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":8606,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8596,"src":"32603:7:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":8608,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32619:1:13","subdenomination":null,"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":8607,"name":"CToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6186,"src":"32612:6:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CToken_$6186_$","typeString":"type(contract CToken)"}},"id":8609,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"32612:9:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},{"argumentTypes":null,"hexValue":"30","id":8610,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32623:1:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"argumentTypes":null,"hexValue":"30","id":8611,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32626:1:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":8605,"name":"getHypotheticalAccountLiquidityInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8881,"src":"32563:39:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_contract$_CToken_$6186_$_t_uint256_$_t_uint256_$returns$_t_enum$_Error_$13574_$_t_uint256_$_t_uint256_$","typeString":"function (address,contract CToken,uint256,uint256) view returns (enum ComptrollerErrorReporter.Error,uint256,uint256)"}},"id":8612,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"32563:65:13","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_Error_$13574_$_t_uint256_$_t_uint256_$","typeString":"tuple(enum ComptrollerErrorReporter.Error,uint256,uint256)"}},"functionReturnParameters":8604,"id":8613,"nodeType":"Return","src":"32556:72:13"}]},"documentation":"@notice Determine the current account liquidity wrt collateral requirements\n@return (possible error code,\naccount liquidity in excess of collateral requirements,\n account shortfall below collateral requirements)","id":8615,"implemented":true,"kind":"function","modifiers":[],"name":"getAccountLiquidityInternal","nodeType":"FunctionDefinition","parameters":{"id":8597,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8596,"name":"account","nodeType":"VariableDeclaration","scope":8615,"src":"32487:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8595,"name":"address","nodeType":"ElementaryTypeName","src":"32487:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"32486:17:13"},"returnParameters":{"id":8604,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8599,"name":"","nodeType":"VariableDeclaration","scope":8615,"src":"32527:5:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"},"typeName":{"contractScope":null,"id":8598,"name":"Error","nodeType":"UserDefinedTypeName","referencedDeclaration":13574,"src":"32527:5:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},"value":null,"visibility":"internal"},{"constant":false,"id":8601,"name":"","nodeType":"VariableDeclaration","scope":8615,"src":"32534:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8600,"name":"uint","nodeType":"ElementaryTypeName","src":"32534:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":8603,"name":"","nodeType":"VariableDeclaration","scope":8615,"src":"32540:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8602,"name":"uint","nodeType":"ElementaryTypeName","src":"32540:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"32526:19:13"},"scope":10531,"src":"32450:185:13","stateMutability":"view","superFunction":null,"visibility":"internal"},{"body":{"id":8654,"nodeType":"Block","src":"33450:211:13","statements":[{"assignments":[8633,8635,8637],"declarations":[{"constant":false,"id":8633,"name":"err","nodeType":"VariableDeclaration","scope":8654,"src":"33461:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"},"typeName":{"contractScope":null,"id":8632,"name":"Error","nodeType":"UserDefinedTypeName","referencedDeclaration":13574,"src":"33461:5:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},"value":null,"visibility":"internal"},{"constant":false,"id":8635,"name":"liquidity","nodeType":"VariableDeclaration","scope":8654,"src":"33472:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8634,"name":"uint","nodeType":"ElementaryTypeName","src":"33472:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":8637,"name":"shortfall","nodeType":"VariableDeclaration","scope":8654,"src":"33488:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8636,"name":"uint","nodeType":"ElementaryTypeName","src":"33488:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":8646,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":8639,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8617,"src":"33546:7:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":8641,"name":"cTokenModify","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8619,"src":"33562:12:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8640,"name":"CToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6186,"src":"33555:6:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CToken_$6186_$","typeString":"type(contract CToken)"}},"id":8642,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"33555:20:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},{"argumentTypes":null,"id":8643,"name":"redeemTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8621,"src":"33577:12:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":8644,"name":"borrowAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8623,"src":"33591:12:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8638,"name":"getHypotheticalAccountLiquidityInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8881,"src":"33506:39:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_contract$_CToken_$6186_$_t_uint256_$_t_uint256_$returns$_t_enum$_Error_$13574_$_t_uint256_$_t_uint256_$","typeString":"function (address,contract CToken,uint256,uint256) view returns (enum ComptrollerErrorReporter.Error,uint256,uint256)"}},"id":8645,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"33506:98:13","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_Error_$13574_$_t_uint256_$_t_uint256_$","typeString":"tuple(enum ComptrollerErrorReporter.Error,uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"33460:144:13"},{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":8648,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8633,"src":"33627:3:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":8647,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"33622:4:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":8649,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"33622:9:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":8650,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8635,"src":"33633:9:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":8651,"name":"shortfall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8637,"src":"33644:9:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":8652,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"33621:33:13","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256,uint256)"}},"functionReturnParameters":8631,"id":8653,"nodeType":"Return","src":"33614:40:13"}]},"documentation":"@notice Determine what the account liquidity would be if the given amounts were redeemed/borrowed\n@param cTokenModify The market to hypothetically redeem/borrow in\n@param account The account to determine liquidity for\n@param redeemTokens The number of tokens to hypothetically redeem\n@param borrowAmount The amount of underlying to hypothetically borrow\n@return (possible error code (semi-opaque),\nhypothetical account liquidity in excess of collateral requirements,\n hypothetical account shortfall below collateral requirements)","id":8655,"implemented":true,"kind":"function","modifiers":[],"name":"getHypotheticalAccountLiquidity","nodeType":"FunctionDefinition","parameters":{"id":8624,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8617,"name":"account","nodeType":"VariableDeclaration","scope":8655,"src":"33310:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8616,"name":"address","nodeType":"ElementaryTypeName","src":"33310:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":8619,"name":"cTokenModify","nodeType":"VariableDeclaration","scope":8655,"src":"33335:20:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8618,"name":"address","nodeType":"ElementaryTypeName","src":"33335:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":8621,"name":"redeemTokens","nodeType":"VariableDeclaration","scope":8655,"src":"33365:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8620,"name":"uint","nodeType":"ElementaryTypeName","src":"33365:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":8623,"name":"borrowAmount","nodeType":"VariableDeclaration","scope":8655,"src":"33392:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8622,"name":"uint","nodeType":"ElementaryTypeName","src":"33392:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"33300:110:13"},"returnParameters":{"id":8631,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8626,"name":"","nodeType":"VariableDeclaration","scope":8655,"src":"33432:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8625,"name":"uint","nodeType":"ElementaryTypeName","src":"33432:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":8628,"name":"","nodeType":"VariableDeclaration","scope":8655,"src":"33438:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8627,"name":"uint","nodeType":"ElementaryTypeName","src":"33438:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":8630,"name":"","nodeType":"VariableDeclaration","scope":8655,"src":"33444:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8629,"name":"uint","nodeType":"ElementaryTypeName","src":"33444:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"33431:18:13"},"scope":10531,"src":"33260:401:13","stateMutability":"view","superFunction":null,"visibility":"public"},{"body":{"id":8880,"nodeType":"Block","src":"34626:2685:13","statements":[{"assignments":[8673],"declarations":[{"constant":false,"id":8673,"name":"vars","nodeType":"VariableDeclaration","scope":8880,"src":"34637:37:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_AccountLiquidityLocalVars_$8560_memory_ptr","typeString":"struct Comptroller.AccountLiquidityLocalVars"},"typeName":{"contractScope":null,"id":8672,"name":"AccountLiquidityLocalVars","nodeType":"UserDefinedTypeName","referencedDeclaration":8560,"src":"34637:25:13","typeDescriptions":{"typeIdentifier":"t_struct$_AccountLiquidityLocalVars_$8560_storage_ptr","typeString":"struct Comptroller.AccountLiquidityLocalVars"}},"value":null,"visibility":"internal"}],"id":8674,"initialValue":null,"nodeType":"VariableDeclarationStatement","src":"34637:37:13"},{"assignments":[8676],"declarations":[{"constant":false,"id":8676,"name":"oErr","nodeType":"VariableDeclaration","scope":8880,"src":"34721:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8675,"name":"uint","nodeType":"ElementaryTypeName","src":"34721:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":8677,"initialValue":null,"nodeType":"VariableDeclarationStatement","src":"34721:9:13"},{"assignments":[8681],"declarations":[{"constant":false,"id":8681,"name":"assets","nodeType":"VariableDeclaration","scope":8880,"src":"34785:22:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_memory_ptr","typeString":"contract CToken[]"},"typeName":{"baseType":{"contractScope":null,"id":8679,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"34785:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":8680,"length":null,"nodeType":"ArrayTypeName","src":"34785:8:13","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_storage_ptr","typeString":"contract CToken[]"}},"value":null,"visibility":"internal"}],"id":8685,"initialValue":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":8682,"name":"accountAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13044,"src":"34810:13:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_array$_t_contract$_CToken_$6186_$dyn_storage_$","typeString":"mapping(address => contract CToken[] storage ref)"}},"id":8684,"indexExpression":{"argumentTypes":null,"id":8683,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8657,"src":"34824:7:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"34810:22:13","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_storage","typeString":"contract CToken[] storage ref"}},"nodeType":"VariableDeclarationStatement","src":"34785:47:13"},{"body":{"id":8850,"nodeType":"Block","src":"34883:2085:13","statements":[{"assignments":[8698],"declarations":[{"constant":false,"id":8698,"name":"asset","nodeType":"VariableDeclaration","scope":8850,"src":"34897:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},"typeName":{"contractScope":null,"id":8697,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"34897:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"value":null,"visibility":"internal"}],"id":8702,"initialValue":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":8699,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8681,"src":"34912:6:13","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_memory_ptr","typeString":"contract CToken[] memory"}},"id":8701,"indexExpression":{"argumentTypes":null,"id":8700,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8687,"src":"34919:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"34912:9:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"nodeType":"VariableDeclarationStatement","src":"34897:24:13"},{"expression":{"argumentTypes":null,"id":8715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":8703,"name":"oErr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8676,"src":"35004:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":8704,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8673,"src":"35010:4:13","typeDescriptions":{"typeIdentifier":"t_struct$_AccountLiquidityLocalVars_$8560_memory_ptr","typeString":"struct Comptroller.AccountLiquidityLocalVars memory"}},"id":8705,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"cTokenBalance","nodeType":"MemberAccess","referencedDeclaration":8545,"src":"35010:18:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":8706,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8673,"src":"35030:4:13","typeDescriptions":{"typeIdentifier":"t_struct$_AccountLiquidityLocalVars_$8560_memory_ptr","typeString":"struct Comptroller.AccountLiquidityLocalVars memory"}},"id":8707,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"borrowBalance","nodeType":"MemberAccess","referencedDeclaration":8547,"src":"35030:18:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":8708,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8673,"src":"35050:4:13","typeDescriptions":{"typeIdentifier":"t_struct$_AccountLiquidityLocalVars_$8560_memory_ptr","typeString":"struct Comptroller.AccountLiquidityLocalVars memory"}},"id":8709,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"exchangeRateMantissa","nodeType":"MemberAccess","referencedDeclaration":8549,"src":"35050:25:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":8710,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"35003:73:13","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256,uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":8713,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8657,"src":"35104:7:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":8711,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8698,"src":"35079:5:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":8712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAccountSnapshot","nodeType":"MemberAccess","referencedDeclaration":2903,"src":"35079:24:13","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"function (address) view external returns (uint256,uint256,uint256,uint256)"}},"id":8714,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"35079:33:13","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256,uint256,uint256)"}},"src":"35003:109:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8716,"nodeType":"ExpressionStatement","src":"35003:109:13"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8719,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":8717,"name":"oErr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8676,"src":"35130:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"hexValue":"30","id":8718,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"35138:1:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"35130:9:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":8727,"nodeType":"IfStatement","src":"35126:164:13","trueBody":{"id":8726,"nodeType":"Block","src":"35141:149:13","statements":[{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":8720,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"35248:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":8721,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"SNAPSHOT_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"35248:20:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},{"argumentTypes":null,"hexValue":"30","id":8722,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"35270:1:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"argumentTypes":null,"hexValue":"30","id":8723,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"35273:1:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":8724,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"35247:28:13","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_Error_$13574_$_t_rational_0_by_1_$_t_rational_0_by_1_$","typeString":"tuple(enum ComptrollerErrorReporter.Error,int_const 0,int_const 0)"}},"functionReturnParameters":8671,"id":8725,"nodeType":"Return","src":"35240:35:13"}]}},{"expression":{"argumentTypes":null,"id":8739,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":8728,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8673,"src":"35303:4:13","typeDescriptions":{"typeIdentifier":"t_struct$_AccountLiquidityLocalVars_$8560_memory_ptr","typeString":"struct Comptroller.AccountLiquidityLocalVars memory"}},"id":8730,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"collateralFactor","nodeType":"MemberAccess","referencedDeclaration":8553,"src":"35303:21:13","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":8732,"name":"markets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13060,"src":"35342:7:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Market_$13056_storage_$","typeString":"mapping(address => struct ComptrollerV2Storage.Market storage ref)"}},"id":8736,"indexExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":8734,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8698,"src":"35358:5:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":8733,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"35350:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":8735,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"35350:14:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"35342:23:13","typeDescriptions":{"typeIdentifier":"t_struct$_Market_$13056_storage","typeString":"struct ComptrollerV2Storage.Market storage ref"}},"id":8737,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"collateralFactorMantissa","nodeType":"MemberAccess","referencedDeclaration":13051,"src":"35342:48:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8731,"name":"Exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14390,"src":"35327:3:13","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Exp_$14390_storage_ptr_$","typeString":"type(struct ExponentialNoError.Exp storage pointer)"}},"id":8738,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"35327:65:13","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}},"src":"35303:89:13","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}},"id":8740,"nodeType":"ExpressionStatement","src":"35303:89:13"},{"expression":{"argumentTypes":null,"id":8748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":8741,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8673,"src":"35406:4:13","typeDescriptions":{"typeIdentifier":"t_struct$_AccountLiquidityLocalVars_$8560_memory_ptr","typeString":"struct Comptroller.AccountLiquidityLocalVars memory"}},"id":8743,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"exchangeRate","nodeType":"MemberAccess","referencedDeclaration":8555,"src":"35406:17:13","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":8745,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8673,"src":"35441:4:13","typeDescriptions":{"typeIdentifier":"t_struct$_AccountLiquidityLocalVars_$8560_memory_ptr","typeString":"struct Comptroller.AccountLiquidityLocalVars memory"}},"id":8746,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"exchangeRateMantissa","nodeType":"MemberAccess","referencedDeclaration":8549,"src":"35441:25:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8744,"name":"Exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14390,"src":"35426:3:13","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Exp_$14390_storage_ptr_$","typeString":"type(struct ExponentialNoError.Exp storage pointer)"}},"id":8747,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"35426:42:13","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}},"src":"35406:62:13","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}},"id":8749,"nodeType":"ExpressionStatement","src":"35406:62:13"},{"expression":{"argumentTypes":null,"id":8757,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":8750,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8673,"src":"35536:4:13","typeDescriptions":{"typeIdentifier":"t_struct$_AccountLiquidityLocalVars_$8560_memory_ptr","typeString":"struct Comptroller.AccountLiquidityLocalVars memory"}},"id":8752,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"oraclePriceMantissa","nodeType":"MemberAccess","referencedDeclaration":8551,"src":"35536:24:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":8755,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8698,"src":"35589:5:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"expression":{"argumentTypes":null,"id":8753,"name":"oracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13033,"src":"35563:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_PriceOracle_$18689","typeString":"contract PriceOracle"}},"id":8754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getUnderlyingPrice","nodeType":"MemberAccess","referencedDeclaration":18688,"src":"35563:25:13","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_contract$_CToken_$6186_$returns$_t_uint256_$","typeString":"function (contract CToken) view external returns (uint256)"}},"id":8756,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"35563:32:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"35536:59:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8758,"nodeType":"ExpressionStatement","src":"35536:59:13"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8762,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":8759,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8673,"src":"35613:4:13","typeDescriptions":{"typeIdentifier":"t_struct$_AccountLiquidityLocalVars_$8560_memory_ptr","typeString":"struct Comptroller.AccountLiquidityLocalVars memory"}},"id":8760,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"oraclePriceMantissa","nodeType":"MemberAccess","referencedDeclaration":8551,"src":"35613:24:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":8761,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"35641:1:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"35613:29:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":8770,"nodeType":"IfStatement","src":"35609:100:13","trueBody":{"id":8769,"nodeType":"Block","src":"35644:65:13","statements":[{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":8763,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"35670:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":8764,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"PRICE_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"35670:17:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},{"argumentTypes":null,"hexValue":"30","id":8765,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"35689:1:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"argumentTypes":null,"hexValue":"30","id":8766,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"35692:1:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":8767,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"35669:25:13","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_Error_$13574_$_t_rational_0_by_1_$_t_rational_0_by_1_$","typeString":"tuple(enum ComptrollerErrorReporter.Error,int_const 0,int_const 0)"}},"functionReturnParameters":8671,"id":8768,"nodeType":"Return","src":"35662:32:13"}]}},{"expression":{"argumentTypes":null,"id":8778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":8771,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8673,"src":"35722:4:13","typeDescriptions":{"typeIdentifier":"t_struct$_AccountLiquidityLocalVars_$8560_memory_ptr","typeString":"struct Comptroller.AccountLiquidityLocalVars memory"}},"id":8773,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"oraclePrice","nodeType":"MemberAccess","referencedDeclaration":8557,"src":"35722:16:13","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":8775,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8673,"src":"35756:4:13","typeDescriptions":{"typeIdentifier":"t_struct$_AccountLiquidityLocalVars_$8560_memory_ptr","typeString":"struct Comptroller.AccountLiquidityLocalVars memory"}},"id":8776,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"oraclePriceMantissa","nodeType":"MemberAccess","referencedDeclaration":8551,"src":"35756:24:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8774,"name":"Exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14390,"src":"35741:3:13","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Exp_$14390_storage_ptr_$","typeString":"type(struct ExponentialNoError.Exp storage pointer)"}},"id":8777,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"35741:41:13","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}},"src":"35722:60:13","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}},"id":8779,"nodeType":"ExpressionStatement","src":"35722:60:13"},{"expression":{"argumentTypes":null,"id":8793,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":8780,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8673,"src":"35890:4:13","typeDescriptions":{"typeIdentifier":"t_struct$_AccountLiquidityLocalVars_$8560_memory_ptr","typeString":"struct Comptroller.AccountLiquidityLocalVars memory"}},"id":8782,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"tokensToDenom","nodeType":"MemberAccess","referencedDeclaration":8559,"src":"35890:18:13","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":8785,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8673,"src":"35921:4:13","typeDescriptions":{"typeIdentifier":"t_struct$_AccountLiquidityLocalVars_$8560_memory_ptr","typeString":"struct Comptroller.AccountLiquidityLocalVars memory"}},"id":8786,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"collateralFactor","nodeType":"MemberAccess","referencedDeclaration":8553,"src":"35921:21:13","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":8787,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8673,"src":"35944:4:13","typeDescriptions":{"typeIdentifier":"t_struct$_AccountLiquidityLocalVars_$8560_memory_ptr","typeString":"struct Comptroller.AccountLiquidityLocalVars memory"}},"id":8788,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"exchangeRate","nodeType":"MemberAccess","referencedDeclaration":8555,"src":"35944:17:13","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"},{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}],"id":8784,"name":"mul_","nodeType":"Identifier","overloadedDeclarations":[14739,14757,14775,14796,14814,14832,14848,14888],"referencedDeclaration":14739,"src":"35916:4:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Exp_$14390_memory_ptr_$_t_struct$_Exp_$14390_memory_ptr_$returns$_t_struct$_Exp_$14390_memory_ptr_$","typeString":"function (struct ExponentialNoError.Exp memory,struct ExponentialNoError.Exp memory) pure returns (struct ExponentialNoError.Exp memory)"}},"id":8789,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"35916:46:13","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":8790,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8673,"src":"35964:4:13","typeDescriptions":{"typeIdentifier":"t_struct$_AccountLiquidityLocalVars_$8560_memory_ptr","typeString":"struct Comptroller.AccountLiquidityLocalVars memory"}},"id":8791,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"oraclePrice","nodeType":"MemberAccess","referencedDeclaration":8557,"src":"35964:16:13","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"},{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}],"id":8783,"name":"mul_","nodeType":"Identifier","overloadedDeclarations":[14739,14757,14775,14796,14814,14832,14848,14888],"referencedDeclaration":14739,"src":"35911:4:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Exp_$14390_memory_ptr_$_t_struct$_Exp_$14390_memory_ptr_$returns$_t_struct$_Exp_$14390_memory_ptr_$","typeString":"function (struct ExponentialNoError.Exp memory,struct ExponentialNoError.Exp memory) pure returns (struct ExponentialNoError.Exp memory)"}},"id":8792,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"35911:70:13","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}},"src":"35890:91:13","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}},"id":8794,"nodeType":"ExpressionStatement","src":"35890:91:13"},{"expression":{"argumentTypes":null,"id":8806,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":8795,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8673,"src":"36058:4:13","typeDescriptions":{"typeIdentifier":"t_struct$_AccountLiquidityLocalVars_$8560_memory_ptr","typeString":"struct Comptroller.AccountLiquidityLocalVars memory"}},"id":8797,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"sumCollateral","nodeType":"MemberAccess","referencedDeclaration":8541,"src":"36058:18:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":8799,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8673,"src":"36105:4:13","typeDescriptions":{"typeIdentifier":"t_struct$_AccountLiquidityLocalVars_$8560_memory_ptr","typeString":"struct Comptroller.AccountLiquidityLocalVars memory"}},"id":8800,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tokensToDenom","nodeType":"MemberAccess","referencedDeclaration":8559,"src":"36105:18:13","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":8801,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8673,"src":"36125:4:13","typeDescriptions":{"typeIdentifier":"t_struct$_AccountLiquidityLocalVars_$8560_memory_ptr","typeString":"struct Comptroller.AccountLiquidityLocalVars memory"}},"id":8802,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"cTokenBalance","nodeType":"MemberAccess","referencedDeclaration":8545,"src":"36125:18:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":8803,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8673,"src":"36145:4:13","typeDescriptions":{"typeIdentifier":"t_struct$_AccountLiquidityLocalVars_$8560_memory_ptr","typeString":"struct Comptroller.AccountLiquidityLocalVars memory"}},"id":8804,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"sumCollateral","nodeType":"MemberAccess","referencedDeclaration":8541,"src":"36145:18:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8798,"name":"mul_ScalarTruncateAddUInt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14453,"src":"36079:25:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Exp_$14390_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct ExponentialNoError.Exp memory,uint256,uint256) pure returns (uint256)"}},"id":8805,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"36079:85:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"36058:106:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8807,"nodeType":"ExpressionStatement","src":"36058:106:13"},{"expression":{"argumentTypes":null,"id":8819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":8808,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8673,"src":"36246:4:13","typeDescriptions":{"typeIdentifier":"t_struct$_AccountLiquidityLocalVars_$8560_memory_ptr","typeString":"struct Comptroller.AccountLiquidityLocalVars memory"}},"id":8810,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"sumBorrowPlusEffects","nodeType":"MemberAccess","referencedDeclaration":8543,"src":"36246:25:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":8812,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8673,"src":"36300:4:13","typeDescriptions":{"typeIdentifier":"t_struct$_AccountLiquidityLocalVars_$8560_memory_ptr","typeString":"struct Comptroller.AccountLiquidityLocalVars memory"}},"id":8813,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"oraclePrice","nodeType":"MemberAccess","referencedDeclaration":8557,"src":"36300:16:13","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":8814,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8673,"src":"36318:4:13","typeDescriptions":{"typeIdentifier":"t_struct$_AccountLiquidityLocalVars_$8560_memory_ptr","typeString":"struct Comptroller.AccountLiquidityLocalVars memory"}},"id":8815,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"borrowBalance","nodeType":"MemberAccess","referencedDeclaration":8547,"src":"36318:18:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":8816,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8673,"src":"36338:4:13","typeDescriptions":{"typeIdentifier":"t_struct$_AccountLiquidityLocalVars_$8560_memory_ptr","typeString":"struct Comptroller.AccountLiquidityLocalVars memory"}},"id":8817,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"sumBorrowPlusEffects","nodeType":"MemberAccess","referencedDeclaration":8543,"src":"36338:25:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8811,"name":"mul_ScalarTruncateAddUInt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14453,"src":"36274:25:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Exp_$14390_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct ExponentialNoError.Exp memory,uint256,uint256) pure returns (uint256)"}},"id":8818,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"36274:90:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"36246:118:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8820,"nodeType":"ExpressionStatement","src":"36246:118:13"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},"id":8823,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":8821,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8698,"src":"36449:5:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":8822,"name":"cTokenModify","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8659,"src":"36458:12:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"src":"36449:21:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":8849,"nodeType":"IfStatement","src":"36445:513:13","trueBody":{"id":8848,"nodeType":"Block","src":"36472:486:13","statements":[{"expression":{"argumentTypes":null,"id":8834,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":8824,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8673,"src":"36595:4:13","typeDescriptions":{"typeIdentifier":"t_struct$_AccountLiquidityLocalVars_$8560_memory_ptr","typeString":"struct Comptroller.AccountLiquidityLocalVars memory"}},"id":8826,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"sumBorrowPlusEffects","nodeType":"MemberAccess","referencedDeclaration":8543,"src":"36595:25:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":8828,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8673,"src":"36649:4:13","typeDescriptions":{"typeIdentifier":"t_struct$_AccountLiquidityLocalVars_$8560_memory_ptr","typeString":"struct Comptroller.AccountLiquidityLocalVars memory"}},"id":8829,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tokensToDenom","nodeType":"MemberAccess","referencedDeclaration":8559,"src":"36649:18:13","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}},{"argumentTypes":null,"id":8830,"name":"redeemTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8661,"src":"36669:12:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":8831,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8673,"src":"36683:4:13","typeDescriptions":{"typeIdentifier":"t_struct$_AccountLiquidityLocalVars_$8560_memory_ptr","typeString":"struct Comptroller.AccountLiquidityLocalVars memory"}},"id":8832,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"sumBorrowPlusEffects","nodeType":"MemberAccess","referencedDeclaration":8543,"src":"36683:25:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8827,"name":"mul_ScalarTruncateAddUInt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14453,"src":"36623:25:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Exp_$14390_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct ExponentialNoError.Exp memory,uint256,uint256) pure returns (uint256)"}},"id":8833,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"36623:86:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"36595:114:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8835,"nodeType":"ExpressionStatement","src":"36595:114:13"},{"expression":{"argumentTypes":null,"id":8846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":8836,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8673,"src":"36831:4:13","typeDescriptions":{"typeIdentifier":"t_struct$_AccountLiquidityLocalVars_$8560_memory_ptr","typeString":"struct Comptroller.AccountLiquidityLocalVars memory"}},"id":8838,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"sumBorrowPlusEffects","nodeType":"MemberAccess","referencedDeclaration":8543,"src":"36831:25:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":8840,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8673,"src":"36885:4:13","typeDescriptions":{"typeIdentifier":"t_struct$_AccountLiquidityLocalVars_$8560_memory_ptr","typeString":"struct Comptroller.AccountLiquidityLocalVars memory"}},"id":8841,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"oraclePrice","nodeType":"MemberAccess","referencedDeclaration":8557,"src":"36885:16:13","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}},{"argumentTypes":null,"id":8842,"name":"borrowAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8663,"src":"36903:12:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":8843,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8673,"src":"36917:4:13","typeDescriptions":{"typeIdentifier":"t_struct$_AccountLiquidityLocalVars_$8560_memory_ptr","typeString":"struct Comptroller.AccountLiquidityLocalVars memory"}},"id":8844,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"sumBorrowPlusEffects","nodeType":"MemberAccess","referencedDeclaration":8543,"src":"36917:25:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8839,"name":"mul_ScalarTruncateAddUInt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14453,"src":"36859:25:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Exp_$14390_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct ExponentialNoError.Exp memory,uint256,uint256) pure returns (uint256)"}},"id":8845,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"36859:84:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"36831:112:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8847,"nodeType":"ExpressionStatement","src":"36831:112:13"}]}}]},"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8693,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":8690,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8687,"src":"34859:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":8691,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8681,"src":"34863:6:13","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_memory_ptr","typeString":"contract CToken[] memory"}},"id":8692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"34863:13:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"34859:17:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8851,"initializationExpression":{"assignments":[8687],"declarations":[{"constant":false,"id":8687,"name":"i","nodeType":"VariableDeclaration","scope":8851,"src":"34847:6:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8686,"name":"uint","nodeType":"ElementaryTypeName","src":"34847:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":8689,"initialValue":{"argumentTypes":null,"hexValue":"30","id":8688,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"34856:1:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"34847:10:13"},"loopExpression":{"expression":{"argumentTypes":null,"id":8695,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"34878:3:13","subExpression":{"argumentTypes":null,"id":8694,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8687,"src":"34878:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8696,"nodeType":"ExpressionStatement","src":"34878:3:13"},"nodeType":"ForStatement","src":"34842:2126:13"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":8852,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8673,"src":"37053:4:13","typeDescriptions":{"typeIdentifier":"t_struct$_AccountLiquidityLocalVars_$8560_memory_ptr","typeString":"struct Comptroller.AccountLiquidityLocalVars memory"}},"id":8853,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"sumCollateral","nodeType":"MemberAccess","referencedDeclaration":8541,"src":"37053:18:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":8854,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8673,"src":"37074:4:13","typeDescriptions":{"typeIdentifier":"t_struct$_AccountLiquidityLocalVars_$8560_memory_ptr","typeString":"struct Comptroller.AccountLiquidityLocalVars memory"}},"id":8855,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"sumBorrowPlusEffects","nodeType":"MemberAccess","referencedDeclaration":8543,"src":"37074:25:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"37053:46:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":8878,"nodeType":"Block","src":"37206:99:13","statements":[{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":8868,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"37228:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":8869,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"37228:14:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},{"argumentTypes":null,"hexValue":"30","id":8870,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37244:1:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8875,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":8871,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8673,"src":"37247:4:13","typeDescriptions":{"typeIdentifier":"t_struct$_AccountLiquidityLocalVars_$8560_memory_ptr","typeString":"struct Comptroller.AccountLiquidityLocalVars memory"}},"id":8872,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"sumBorrowPlusEffects","nodeType":"MemberAccess","referencedDeclaration":8543,"src":"37247:25:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":8873,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8673,"src":"37275:4:13","typeDescriptions":{"typeIdentifier":"t_struct$_AccountLiquidityLocalVars_$8560_memory_ptr","typeString":"struct Comptroller.AccountLiquidityLocalVars memory"}},"id":8874,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"sumCollateral","nodeType":"MemberAccess","referencedDeclaration":8541,"src":"37275:18:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"37247:46:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":8876,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"37227:67:13","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_Error_$13574_$_t_rational_0_by_1_$_t_uint256_$","typeString":"tuple(enum ComptrollerErrorReporter.Error,int_const 0,uint256)"}},"functionReturnParameters":8671,"id":8877,"nodeType":"Return","src":"37220:74:13"}]},"id":8879,"nodeType":"IfStatement","src":"37049:256:13","trueBody":{"id":8867,"nodeType":"Block","src":"37101:99:13","statements":[{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":8857,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"37123:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":8858,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"37123:14:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":8859,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8673,"src":"37139:4:13","typeDescriptions":{"typeIdentifier":"t_struct$_AccountLiquidityLocalVars_$8560_memory_ptr","typeString":"struct Comptroller.AccountLiquidityLocalVars memory"}},"id":8860,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"sumCollateral","nodeType":"MemberAccess","referencedDeclaration":8541,"src":"37139:18:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":8861,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8673,"src":"37160:4:13","typeDescriptions":{"typeIdentifier":"t_struct$_AccountLiquidityLocalVars_$8560_memory_ptr","typeString":"struct Comptroller.AccountLiquidityLocalVars memory"}},"id":8862,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"sumBorrowPlusEffects","nodeType":"MemberAccess","referencedDeclaration":8543,"src":"37160:25:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"37139:46:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"30","id":8864,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37187:1:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":8865,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"37122:67:13","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_Error_$13574_$_t_uint256_$_t_rational_0_by_1_$","typeString":"tuple(enum ComptrollerErrorReporter.Error,uint256,int_const 0)"}},"functionReturnParameters":8671,"id":8866,"nodeType":"Return","src":"37115:74:13"}]}}]},"documentation":"@notice Determine what the account liquidity would be if the given amounts were redeemed/borrowed\n@param cTokenModify The market to hypothetically redeem/borrow in\n@param account The account to determine liquidity for\n@param redeemTokens The number of tokens to hypothetically redeem\n@param borrowAmount The amount of underlying to hypothetically borrow\n@dev Note that we calculate the exchangeRateStored for each collateral cToken using stored data,\n without calculating accumulated interest.\n@return (possible error code,\nhypothetical account liquidity in excess of collateral requirements,\n hypothetical account shortfall below collateral requirements)","id":8881,"implemented":true,"kind":"function","modifiers":[],"name":"getHypotheticalAccountLiquidityInternal","nodeType":"FunctionDefinition","parameters":{"id":8664,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8657,"name":"account","nodeType":"VariableDeclaration","scope":8881,"src":"34484:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8656,"name":"address","nodeType":"ElementaryTypeName","src":"34484:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":8659,"name":"cTokenModify","nodeType":"VariableDeclaration","scope":8881,"src":"34509:19:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},"typeName":{"contractScope":null,"id":8658,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"34509:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"value":null,"visibility":"internal"},{"constant":false,"id":8661,"name":"redeemTokens","nodeType":"VariableDeclaration","scope":8881,"src":"34538:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8660,"name":"uint","nodeType":"ElementaryTypeName","src":"34538:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":8663,"name":"borrowAmount","nodeType":"VariableDeclaration","scope":8881,"src":"34565:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8662,"name":"uint","nodeType":"ElementaryTypeName","src":"34565:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"34474:109:13"},"returnParameters":{"id":8671,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8666,"name":"","nodeType":"VariableDeclaration","scope":8881,"src":"34607:5:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"},"typeName":{"contractScope":null,"id":8665,"name":"Error","nodeType":"UserDefinedTypeName","referencedDeclaration":13574,"src":"34607:5:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},"value":null,"visibility":"internal"},{"constant":false,"id":8668,"name":"","nodeType":"VariableDeclaration","scope":8881,"src":"34614:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8667,"name":"uint","nodeType":"ElementaryTypeName","src":"34614:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":8670,"name":"","nodeType":"VariableDeclaration","scope":8881,"src":"34620:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8669,"name":"uint","nodeType":"ElementaryTypeName","src":"34620:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"34606:19:13"},"scope":10531,"src":"34426:2885:13","stateMutability":"view","superFunction":null,"visibility":"internal"},{"body":{"id":8991,"nodeType":"Block","src":"37987:1379:13","statements":[{"assignments":[8895],"declarations":[{"constant":false,"id":8895,"name":"priceBorrowedMantissa","nodeType":"VariableDeclaration","scope":8991,"src":"38066:26:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8894,"name":"uint","nodeType":"ElementaryTypeName","src":"38066:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":8902,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":8899,"name":"cTokenBorrowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8883,"src":"38128:14:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8898,"name":"CToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6186,"src":"38121:6:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CToken_$6186_$","typeString":"type(contract CToken)"}},"id":8900,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"38121:22:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"expression":{"argumentTypes":null,"id":8896,"name":"oracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13033,"src":"38095:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_PriceOracle_$18689","typeString":"contract PriceOracle"}},"id":8897,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getUnderlyingPrice","nodeType":"MemberAccess","referencedDeclaration":18688,"src":"38095:25:13","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_contract$_CToken_$6186_$returns$_t_uint256_$","typeString":"function (contract CToken) view external returns (uint256)"}},"id":8901,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"38095:49:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"38066:78:13"},{"assignments":[8904],"declarations":[{"constant":false,"id":8904,"name":"priceCollateralMantissa","nodeType":"VariableDeclaration","scope":8991,"src":"38154:28:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8903,"name":"uint","nodeType":"ElementaryTypeName","src":"38154:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":8911,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":8908,"name":"cTokenCollateral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8885,"src":"38218:16:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8907,"name":"CToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6186,"src":"38211:6:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CToken_$6186_$","typeString":"type(contract CToken)"}},"id":8909,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"38211:24:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"expression":{"argumentTypes":null,"id":8905,"name":"oracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13033,"src":"38185:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_PriceOracle_$18689","typeString":"contract PriceOracle"}},"id":8906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getUnderlyingPrice","nodeType":"MemberAccess","referencedDeclaration":18688,"src":"38185:25:13","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_contract$_CToken_$6186_$returns$_t_uint256_$","typeString":"function (contract CToken) view external returns (uint256)"}},"id":8910,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"38185:51:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"38154:82:13"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8918,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8914,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":8912,"name":"priceBorrowedMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8895,"src":"38250:21:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":8913,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"38275:1:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"38250:26:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8917,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":8915,"name":"priceCollateralMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8904,"src":"38280:23:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":8916,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"38307:1:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"38280:28:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"38250:58:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":8927,"nodeType":"IfStatement","src":"38246:124:13","trueBody":{"id":8926,"nodeType":"Block","src":"38310:60:13","statements":[{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":8920,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"38337:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":8921,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"PRICE_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"38337:17:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":8919,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"38332:4:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":8922,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"38332:23:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"30","id":8923,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"38357:1:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":8924,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"38331:28:13","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_rational_0_by_1_$","typeString":"tuple(uint256,int_const 0)"}},"functionReturnParameters":8893,"id":8925,"nodeType":"Return","src":"38324:35:13"}]}},{"assignments":[8929],"declarations":[{"constant":false,"id":8929,"name":"exchangeRateMantissa","nodeType":"VariableDeclaration","scope":8991,"src":"38755:25:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8928,"name":"uint","nodeType":"ElementaryTypeName","src":"38755:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":8935,"initialValue":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":8931,"name":"cTokenCollateral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8885,"src":"38790:16:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8930,"name":"CToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6186,"src":"38783:6:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CToken_$6186_$","typeString":"type(contract CToken)"}},"id":8932,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"38783:24:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":8933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"exchangeRateStored","nodeType":"MemberAccess","referencedDeclaration":3158,"src":"38783:43:13","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":8934,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"38783:45:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"38755:73:13"},{"assignments":[8937],"declarations":[{"constant":false,"id":8937,"name":"seizeTokens","nodeType":"VariableDeclaration","scope":8991,"src":"38864:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8936,"name":"uint","nodeType":"ElementaryTypeName","src":"38864:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":8938,"initialValue":null,"nodeType":"VariableDeclarationStatement","src":"38864:16:13"},{"assignments":[8940],"declarations":[{"constant":false,"id":8940,"name":"numerator","nodeType":"VariableDeclaration","scope":8991,"src":"38890:20:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":8939,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"38890:3:13","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"}],"id":8941,"initialValue":null,"nodeType":"VariableDeclarationStatement","src":"38890:20:13"},{"assignments":[8943],"declarations":[{"constant":false,"id":8943,"name":"denominator","nodeType":"VariableDeclaration","scope":8991,"src":"38920:22:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":8942,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"38920:3:13","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"}],"id":8944,"initialValue":null,"nodeType":"VariableDeclarationStatement","src":"38920:22:13"},{"assignments":[8946],"declarations":[{"constant":false,"id":8946,"name":"ratio","nodeType":"VariableDeclaration","scope":8991,"src":"38952:16:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":8945,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"38952:3:13","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"}],"id":8947,"initialValue":null,"nodeType":"VariableDeclarationStatement","src":"38952:16:13"},{"expression":{"argumentTypes":null,"id":8957,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":8948,"name":"numerator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8940,"src":"38979:9:13","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":8951,"name":"liquidationIncentiveMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13037,"src":"39011:28:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8950,"name":"Exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14390,"src":"38996:3:13","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Exp_$14390_storage_ptr_$","typeString":"type(struct ExponentialNoError.Exp storage pointer)"}},"id":8952,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"38996:45:13","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":8954,"name":"priceBorrowedMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8895,"src":"39058:21:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8953,"name":"Exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14390,"src":"39043:3:13","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Exp_$14390_storage_ptr_$","typeString":"type(struct ExponentialNoError.Exp storage pointer)"}},"id":8955,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"39043:38:13","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"},{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}],"id":8949,"name":"mul_","nodeType":"Identifier","overloadedDeclarations":[14739,14757,14775,14796,14814,14832,14848,14888],"referencedDeclaration":14739,"src":"38991:4:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Exp_$14390_memory_ptr_$_t_struct$_Exp_$14390_memory_ptr_$returns$_t_struct$_Exp_$14390_memory_ptr_$","typeString":"function (struct ExponentialNoError.Exp memory,struct ExponentialNoError.Exp memory) pure returns (struct ExponentialNoError.Exp memory)"}},"id":8956,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"38991:91:13","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}},"src":"38979:103:13","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}},"id":8958,"nodeType":"ExpressionStatement","src":"38979:103:13"},{"expression":{"argumentTypes":null,"id":8968,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":8959,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8943,"src":"39092:11:13","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":8962,"name":"priceCollateralMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8904,"src":"39126:23:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8961,"name":"Exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14390,"src":"39111:3:13","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Exp_$14390_storage_ptr_$","typeString":"type(struct ExponentialNoError.Exp storage pointer)"}},"id":8963,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"39111:40:13","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":8965,"name":"exchangeRateMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8929,"src":"39168:20:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8964,"name":"Exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14390,"src":"39153:3:13","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Exp_$14390_storage_ptr_$","typeString":"type(struct ExponentialNoError.Exp storage pointer)"}},"id":8966,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"39153:37:13","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"},{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}],"id":8960,"name":"mul_","nodeType":"Identifier","overloadedDeclarations":[14739,14757,14775,14796,14814,14832,14848,14888],"referencedDeclaration":14739,"src":"39106:4:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Exp_$14390_memory_ptr_$_t_struct$_Exp_$14390_memory_ptr_$returns$_t_struct$_Exp_$14390_memory_ptr_$","typeString":"function (struct ExponentialNoError.Exp memory,struct ExponentialNoError.Exp memory) pure returns (struct ExponentialNoError.Exp memory)"}},"id":8967,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"39106:85:13","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}},"src":"39092:99:13","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}},"id":8969,"nodeType":"ExpressionStatement","src":"39092:99:13"},{"expression":{"argumentTypes":null,"id":8975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":8970,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8946,"src":"39201:5:13","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":8972,"name":"numerator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8940,"src":"39214:9:13","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}},{"argumentTypes":null,"id":8973,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8943,"src":"39225:11:13","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"},{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}],"id":8971,"name":"div_","nodeType":"Identifier","overloadedDeclarations":[14910,14928,14947,14969,14987,15006,15022,15045],"referencedDeclaration":14910,"src":"39209:4:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Exp_$14390_memory_ptr_$_t_struct$_Exp_$14390_memory_ptr_$returns$_t_struct$_Exp_$14390_memory_ptr_$","typeString":"function (struct ExponentialNoError.Exp memory,struct ExponentialNoError.Exp memory) pure returns (struct ExponentialNoError.Exp memory)"}},"id":8974,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"39209:28:13","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}},"src":"39201:36:13","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}},"id":8976,"nodeType":"ExpressionStatement","src":"39201:36:13"},{"expression":{"argumentTypes":null,"id":8982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":8977,"name":"seizeTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8937,"src":"39248:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":8979,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8946,"src":"39281:5:13","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}},{"argumentTypes":null,"id":8980,"name":"actualRepayAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8887,"src":"39288:17:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8978,"name":"mul_ScalarTruncate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14427,"src":"39262:18:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Exp_$14390_memory_ptr_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct ExponentialNoError.Exp memory,uint256) pure returns (uint256)"}},"id":8981,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"39262:44:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"39248:58:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8983,"nodeType":"ExpressionStatement","src":"39248:58:13"},{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":8985,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"39330:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":8986,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"39330:14:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":8984,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"39325:4:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":8987,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"39325:20:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":8988,"name":"seizeTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8937,"src":"39347:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":8989,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"39324:35:13","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"functionReturnParameters":8893,"id":8990,"nodeType":"Return","src":"39317:42:13"}]},"documentation":"@notice Calculate number of tokens of collateral asset to seize given an underlying amount\n@dev Used in liquidation (called in cToken.liquidateBorrowFresh)\n@param cTokenBorrowed The address of the borrowed cToken\n@param cTokenCollateral The address of the collateral cToken\n@param actualRepayAmount The amount of cTokenBorrowed underlying to convert into cTokenCollateral tokens\n@return (errorCode, number of cTokenCollateral tokens to be seized in a liquidation)","id":8992,"implemented":true,"kind":"function","modifiers":[],"name":"liquidateCalculateSeizeTokens","nodeType":"FunctionDefinition","parameters":{"id":8888,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8883,"name":"cTokenBorrowed","nodeType":"VariableDeclaration","scope":8992,"src":"37878:22:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8882,"name":"address","nodeType":"ElementaryTypeName","src":"37878:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":8885,"name":"cTokenCollateral","nodeType":"VariableDeclaration","scope":8992,"src":"37902:24:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8884,"name":"address","nodeType":"ElementaryTypeName","src":"37902:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":8887,"name":"actualRepayAmount","nodeType":"VariableDeclaration","scope":8992,"src":"37928:22:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8886,"name":"uint","nodeType":"ElementaryTypeName","src":"37928:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"37877:74:13"},"returnParameters":{"id":8893,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8890,"name":"","nodeType":"VariableDeclaration","scope":8992,"src":"37975:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8889,"name":"uint","nodeType":"ElementaryTypeName","src":"37975:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":8892,"name":"","nodeType":"VariableDeclaration","scope":8992,"src":"37981:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8891,"name":"uint","nodeType":"ElementaryTypeName","src":"37981:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"37974:12:13"},"scope":10531,"src":"37839:1527:13","stateMutability":"view","superFunction":12973,"visibility":"external"},{"body":{"id":9056,"nodeType":"Block","src":"39702:707:13","statements":[{"condition":{"argumentTypes":null,"id":9001,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"39749:17:13","subExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":8999,"name":"hasAdminRights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13024,"src":"39750:14:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":9000,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"39750:16:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":9010,"nodeType":"IfStatement","src":"39745:128:13","trueBody":{"id":9009,"nodeType":"Block","src":"39768:105:13","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9003,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"39794:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":9004,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"UNAUTHORIZED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"39794:18:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9005,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13603,"src":"39814:11:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13603_$","typeString":"type(enum ComptrollerErrorReporter.FailureInfo)"}},"id":9006,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"ADD_REWARDS_DISTRIBUTOR_OWNER_CHECK","nodeType":"MemberAccess","referencedDeclaration":null,"src":"39814:47:13","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}],"id":9002,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13635,"src":"39789:4:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13574_$_t_enum$_FailureInfo_$13603_$returns$_t_uint256_$","typeString":"function (enum ComptrollerErrorReporter.Error,enum ComptrollerErrorReporter.FailureInfo) returns (uint256)"}},"id":9007,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"39789:73:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8998,"id":9008,"nodeType":"Return","src":"39782:80:13"}]}},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":9013,"name":"distributor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8994,"src":"39949:11:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9012,"name":"RewardsDistributorDelegate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20921,"src":"39922:26:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_RewardsDistributorDelegate_$20921_$","typeString":"type(contract RewardsDistributorDelegate)"}},"id":9014,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"39922:39:13","typeDescriptions":{"typeIdentifier":"t_contract$_RewardsDistributorDelegate_$20921","typeString":"contract RewardsDistributorDelegate"}},"id":9015,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"isRewardsDistributor","nodeType":"MemberAccess","referencedDeclaration":19382,"src":"39922:60:13","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bool_$","typeString":"function () view external returns (bool)"}},"id":9016,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"39922:62:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"6d61726b6572206d6574686f642072657475726e65642066616c7365","id":9017,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"39986:30:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_73c0b9b9fc59551809f9e3f686bb994cac13db80a83fd9ccdfe6d53da80fe637","typeString":"literal_string \"marker method returned false\""},"value":"marker method returned false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_73c0b9b9fc59551809f9e3f686bb994cac13db80a83fd9ccdfe6d53da80fe637","typeString":"literal_string \"marker method returned false\""}],"id":9011,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"39914:7:13","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9018,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"39914:103:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9019,"nodeType":"ExpressionStatement","src":"39914:103:13"},{"body":{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":9036,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":9032,"name":"distributor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8994,"src":"40139:11:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":9033,"name":"rewardsDistributors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13131,"src":"40154:19:13","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":9035,"indexExpression":{"argumentTypes":null,"id":9034,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9021,"src":"40174:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"40154:22:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"40139:37:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"526577617264734469737472696275746f7220636f6e747261637420616c7265616479206164646564","id":9037,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"40178:43:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_039ef4042d1a0f5219fc25e3f53d7299bcbcffba2b223ffd5aa3dd9bfe27af40","typeString":"literal_string \"RewardsDistributor contract already added\""},"value":"RewardsDistributor contract already added"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_039ef4042d1a0f5219fc25e3f53d7299bcbcffba2b223ffd5aa3dd9bfe27af40","typeString":"literal_string \"RewardsDistributor contract already added\""}],"id":9031,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"40131:7:13","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9038,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"40131:91:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9039,"nodeType":"ExpressionStatement","src":"40131:91:13"},"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":9024,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9021,"src":"40094:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9025,"name":"rewardsDistributors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13131,"src":"40098:19:13","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":9026,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"40098:26:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"40094:30:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9040,"initializationExpression":{"assignments":[9021],"declarations":[{"constant":false,"id":9021,"name":"i","nodeType":"VariableDeclaration","scope":9040,"src":"40082:6:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9020,"name":"uint","nodeType":"ElementaryTypeName","src":"40082:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":9023,"initialValue":{"argumentTypes":null,"hexValue":"30","id":9022,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"40091:1:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"40082:10:13"},"loopExpression":{"expression":{"argumentTypes":null,"id":9029,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"40126:3:13","subExpression":{"argumentTypes":null,"id":9028,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9021,"src":"40126:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9030,"nodeType":"ExpressionStatement","src":"40126:3:13"},"nodeType":"ForStatement","src":"40077:145:13"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":9044,"name":"distributor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8994,"src":"40301:11:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":9041,"name":"rewardsDistributors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13131,"src":"40276:19:13","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":9043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"push","nodeType":"MemberAccess","referencedDeclaration":null,"src":"40276:24:13","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_address_$returns$_t_uint256_$","typeString":"function (address) returns (uint256)"}},"id":9045,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"40276:37:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9046,"nodeType":"ExpressionStatement","src":"40276:37:13"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":9048,"name":"distributor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8994,"src":"40352:11:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9047,"name":"AddedRewardsDistributor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6952,"src":"40328:23:13","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":9049,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"40328:36:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9050,"nodeType":"EmitStatement","src":"40323:41:13"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9052,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"40387:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":9053,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"40387:14:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":9051,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"40382:4:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":9054,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"40382:20:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8998,"id":9055,"nodeType":"Return","src":"40375:27:13"}]},"documentation":"@notice Add a RewardsDistributor contracts.\n@dev Admin function to add a RewardsDistributor contract\n@return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)","id":9057,"implemented":true,"kind":"function","modifiers":[],"name":"_addRewardsDistributor","nodeType":"FunctionDefinition","parameters":{"id":8995,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8994,"name":"distributor","nodeType":"VariableDeclaration","scope":9057,"src":"39657:19:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8993,"name":"address","nodeType":"ElementaryTypeName","src":"39657:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"39656:21:13"},"returnParameters":{"id":8998,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8997,"name":"","nodeType":"VariableDeclaration","scope":9057,"src":"39696:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8996,"name":"uint","nodeType":"ElementaryTypeName","src":"39696:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"39695:6:13"},"scope":10531,"src":"39625:784:13","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":{"id":9099,"nodeType":"Block","src":"40730:585:13","statements":[{"condition":{"argumentTypes":null,"id":9066,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"40777:17:13","subExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":9064,"name":"hasAdminRights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13024,"src":"40778:14:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":9065,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"40778:16:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":9075,"nodeType":"IfStatement","src":"40773:130:13","trueBody":{"id":9074,"nodeType":"Block","src":"40796:107:13","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9068,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"40822:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":9069,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"UNAUTHORIZED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"40822:18:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9070,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13603,"src":"40842:11:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13603_$","typeString":"type(enum ComptrollerErrorReporter.FailureInfo)"}},"id":9071,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"SET_WHITELIST_ENFORCEMENT_OWNER_CHECK","nodeType":"MemberAccess","referencedDeclaration":null,"src":"40842:49:13","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}],"id":9067,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13635,"src":"40817:4:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13574_$_t_enum$_FailureInfo_$13603_$returns$_t_uint256_$","typeString":"function (enum ComptrollerErrorReporter.Error,enum ComptrollerErrorReporter.FailureInfo) returns (uint256)"}},"id":9072,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"40817:75:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9063,"id":9073,"nodeType":"Return","src":"40810:82:13"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":9078,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":9076,"name":"enforceWhitelist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13084,"src":"40981:16:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":9077,"name":"enforce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9059,"src":"41001:7:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"40981:27:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":9085,"nodeType":"IfStatement","src":"40977:85:13","trueBody":{"id":9084,"nodeType":"Block","src":"41010:52:13","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9080,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"41036:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":9081,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"41036:14:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":9079,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"41031:4:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":9082,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"41031:20:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9063,"id":9083,"nodeType":"Return","src":"41024:27:13"}]}},{"expression":{"argumentTypes":null,"id":9088,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":9086,"name":"enforceWhitelist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13084,"src":"41133:16:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":9087,"name":"enforce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9059,"src":"41152:7:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41133:26:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9089,"nodeType":"ExpressionStatement","src":"41133:26:13"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":9091,"name":"enforce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9059,"src":"41262:7:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":9090,"name":"WhitelistEnforcementChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6926,"src":"41234:27:13","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bool_$returns$__$","typeString":"function (bool)"}},"id":9092,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"41234:36:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9093,"nodeType":"EmitStatement","src":"41229:41:13"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9095,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"41293:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":9096,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"41293:14:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":9094,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"41288:4:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":9097,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"41288:20:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9063,"id":9098,"nodeType":"Return","src":"41281:27:13"}]},"documentation":"@notice Sets the whitelist enforcement for the comptroller\n@dev Admin function to set a new whitelist enforcement boolean\n@return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)","id":9100,"implemented":true,"kind":"function","modifiers":[],"name":"_setWhitelistEnforcement","nodeType":"FunctionDefinition","parameters":{"id":9060,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9059,"name":"enforce","nodeType":"VariableDeclaration","scope":9100,"src":"40692:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9058,"name":"bool","nodeType":"ElementaryTypeName","src":"40692:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"40691:14:13"},"returnParameters":{"id":9063,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9062,"name":"","nodeType":"VariableDeclaration","scope":9100,"src":"40724:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9061,"name":"uint","nodeType":"ElementaryTypeName","src":"40724:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"40723:6:13"},"scope":10531,"src":"40658:657:13","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":{"id":9237,"nodeType":"Block","src":"41675:1855:13","statements":[{"condition":{"argumentTypes":null,"id":9113,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"41722:17:13","subExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":9111,"name":"hasAdminRights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13024,"src":"41723:14:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":9112,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"41723:16:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":9122,"nodeType":"IfStatement","src":"41718:125:13","trueBody":{"id":9121,"nodeType":"Block","src":"41741:102:13","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9115,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"41767:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":9116,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"UNAUTHORIZED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"41767:18:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9117,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13603,"src":"41787:11:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13603_$","typeString":"type(enum ComptrollerErrorReporter.FailureInfo)"}},"id":9118,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"SET_WHITELIST_STATUS_OWNER_CHECK","nodeType":"MemberAccess","referencedDeclaration":null,"src":"41787:44:13","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}],"id":9114,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13635,"src":"41762:4:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13574_$_t_enum$_FailureInfo_$13603_$returns$_t_uint256_$","typeString":"function (enum ComptrollerErrorReporter.Error,enum ComptrollerErrorReporter.FailureInfo) returns (uint256)"}},"id":9119,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"41762:70:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9110,"id":9120,"nodeType":"Return","src":"41755:77:13"}]}},{"body":{"id":9230,"nodeType":"Block","src":"41945:1541:13","statements":[{"assignments":[9135],"declarations":[{"constant":false,"id":9135,"name":"supplier","nodeType":"VariableDeclaration","scope":9230,"src":"41959:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9134,"name":"address","nodeType":"ElementaryTypeName","src":"41959:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":9139,"initialValue":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":9136,"name":"suppliers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9103,"src":"41978:9:13","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":9138,"indexExpression":{"argumentTypes":null,"id":9137,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9124,"src":"41988:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"41978:12:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"41959:31:13"},{"condition":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":9140,"name":"statuses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9106,"src":"42009:8:13","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_calldata_ptr","typeString":"bool[] calldata"}},"id":9142,"indexExpression":{"argumentTypes":null,"id":9141,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9124,"src":"42018:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"42009:11:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":9228,"nodeType":"Block","src":"42344:1132:13","statements":[{"condition":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":9171,"name":"whitelist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13088,"src":"42423:9:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":9173,"indexExpression":{"argumentTypes":null,"id":9172,"name":"supplier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9135,"src":"42433:8:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"42423:19:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":9227,"nodeType":"IfStatement","src":"42419:1043:13","trueBody":{"id":9226,"nodeType":"Block","src":"42444:1018:13","statements":[{"assignments":[9175],"declarations":[{"constant":false,"id":9175,"name":"supplierIndex","nodeType":"VariableDeclaration","scope":9226,"src":"42466:21:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9174,"name":"uint256","nodeType":"ElementaryTypeName","src":"42466:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":9179,"initialValue":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":9176,"name":"whitelistIndexes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13095,"src":"42490:16:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":9178,"indexExpression":{"argumentTypes":null,"id":9177,"name":"supplier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9135,"src":"42507:8:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"42490:26:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"42466:50:13"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":9180,"name":"supplierIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9175,"src":"42676:13:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9184,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9181,"name":"whitelistArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13091,"src":"42692:14:13","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":9182,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"42692:21:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"hexValue":"31","id":9183,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"42716:1:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"42692:25:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"42676:41:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":9208,"nodeType":"IfStatement","src":"42672:413:13","trueBody":{"id":9207,"nodeType":"Block","src":"42719:366:13","statements":[{"assignments":[9187],"declarations":[{"constant":false,"id":9187,"name":"lastElement","nodeType":"VariableDeclaration","scope":9207,"src":"42745:19:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9186,"name":"address","nodeType":"ElementaryTypeName","src":"42745:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":9194,"initialValue":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":9188,"name":"whitelistArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13091,"src":"42767:14:13","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":9193,"indexExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9189,"name":"whitelistArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13091,"src":"42782:14:13","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":9190,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"42782:21:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"hexValue":"31","id":9191,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"42806:1:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"42782:25:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"42767:41:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"42745:63:13"},{"expression":{"argumentTypes":null,"id":9199,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":9195,"name":"whitelistArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13091,"src":"42834:14:13","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":9197,"indexExpression":{"argumentTypes":null,"id":9196,"name":"supplierIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9175,"src":"42849:13:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"42834:29:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":9198,"name":"lastElement","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9187,"src":"42866:11:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"42834:43:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9200,"nodeType":"ExpressionStatement","src":"42834:43:13"},{"expression":{"argumentTypes":null,"id":9205,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":9201,"name":"whitelistIndexes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13095,"src":"42963:16:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":9203,"indexExpression":{"argumentTypes":null,"id":9202,"name":"lastElement","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9187,"src":"42980:11:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"42963:29:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":9204,"name":"supplierIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9175,"src":"42995:13:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"42963:45:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9206,"nodeType":"ExpressionStatement","src":"42963:45:13"}]}},{"expression":{"argumentTypes":null,"id":9212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"43177:23:13","subExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9209,"name":"whitelistArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13091,"src":"43177:14:13","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":9211,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"43177:21:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9213,"nodeType":"ExpressionStatement","src":"43177:23:13"},{"expression":{"argumentTypes":null,"id":9218,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":9214,"name":"whitelistIndexes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13095,"src":"43244:16:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":9216,"indexExpression":{"argumentTypes":null,"id":9215,"name":"supplier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9135,"src":"43261:8:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"43244:26:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"hexValue":"30","id":9217,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"43273:1:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"43244:30:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9219,"nodeType":"ExpressionStatement","src":"43244:30:13"},{"expression":{"argumentTypes":null,"id":9224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":9220,"name":"whitelist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13088,"src":"43352:9:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":9222,"indexExpression":{"argumentTypes":null,"id":9221,"name":"supplier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9135,"src":"43362:8:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"43352:19:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"hexValue":"66616c7365","id":9223,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"43374:5:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"43352:27:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9225,"nodeType":"ExpressionStatement","src":"43352:27:13"}]}}]},"id":9229,"nodeType":"IfStatement","src":"42005:1471:13","trueBody":{"id":9170,"nodeType":"Block","src":"42022:316:13","statements":[{"condition":{"argumentTypes":null,"id":9146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"42108:20:13","subExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":9143,"name":"whitelist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13088,"src":"42109:9:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":9145,"indexExpression":{"argumentTypes":null,"id":9144,"name":"supplier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9135,"src":"42119:8:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"42109:19:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":9169,"nodeType":"IfStatement","src":"42104:220:13","trueBody":{"id":9168,"nodeType":"Block","src":"42130:194:13","statements":[{"expression":{"argumentTypes":null,"id":9151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":9147,"name":"whitelist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13088,"src":"42152:9:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":9149,"indexExpression":{"argumentTypes":null,"id":9148,"name":"supplier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9135,"src":"42162:8:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"42152:19:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"hexValue":"74727565","id":9150,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"42174:4:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"42152:26:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9152,"nodeType":"ExpressionStatement","src":"42152:26:13"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":9156,"name":"supplier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9135,"src":"42220:8:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":9153,"name":"whitelistArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13091,"src":"42200:14:13","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":9155,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"push","nodeType":"MemberAccess","referencedDeclaration":null,"src":"42200:19:13","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_address_$returns$_t_uint256_$","typeString":"function (address) returns (uint256)"}},"id":9157,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"42200:29:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9158,"nodeType":"ExpressionStatement","src":"42200:29:13"},{"expression":{"argumentTypes":null,"id":9166,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":9159,"name":"whitelistIndexes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13095,"src":"42251:16:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":9161,"indexExpression":{"argumentTypes":null,"id":9160,"name":"supplier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9135,"src":"42268:8:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"42251:26:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9162,"name":"whitelistArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13091,"src":"42280:14:13","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":9163,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"42280:21:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"hexValue":"31","id":9164,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"42304:1:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"42280:25:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"42251:54:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9167,"nodeType":"ExpressionStatement","src":"42251:54:13"}]}}]}}]},"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9130,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":9127,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9124,"src":"41918:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9128,"name":"suppliers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9103,"src":"41922:9:13","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":9129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"41922:16:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"41918:20:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9231,"initializationExpression":{"assignments":[9124],"declarations":[{"constant":false,"id":9124,"name":"i","nodeType":"VariableDeclaration","scope":9231,"src":"41906:6:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9123,"name":"uint","nodeType":"ElementaryTypeName","src":"41906:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":9126,"initialValue":{"argumentTypes":null,"hexValue":"30","id":9125,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"41915:1:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"41906:10:13"},"loopExpression":{"expression":{"argumentTypes":null,"id":9132,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"41940:3:13","subExpression":{"argumentTypes":null,"id":9131,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9124,"src":"41940:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9133,"nodeType":"ExpressionStatement","src":"41940:3:13"},"nodeType":"ForStatement","src":"41901:1585:13"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9233,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"43508:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":9234,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"43508:14:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":9232,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"43503:4:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":9235,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"43503:20:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9110,"id":9236,"nodeType":"Return","src":"43496:27:13"}]},"documentation":"@notice Sets the whitelist `statuses` for `suppliers`\n@dev Admin function to set the whitelist `statuses` for `suppliers`\n@return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)","id":9238,"implemented":true,"kind":"function","modifiers":[],"name":"_setWhitelistStatuses","nodeType":"FunctionDefinition","parameters":{"id":9107,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9103,"name":"suppliers","nodeType":"VariableDeclaration","scope":9238,"src":"41595:28:13","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":9101,"name":"address","nodeType":"ElementaryTypeName","src":"41595:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9102,"length":null,"nodeType":"ArrayTypeName","src":"41595:9:13","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":9106,"name":"statuses","nodeType":"VariableDeclaration","scope":9238,"src":"41625:24:13","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_calldata_ptr","typeString":"bool[]"},"typeName":{"baseType":{"id":9104,"name":"bool","nodeType":"ElementaryTypeName","src":"41625:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9105,"length":null,"nodeType":"ArrayTypeName","src":"41625:6:13","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_storage_ptr","typeString":"bool[]"}},"value":null,"visibility":"internal"}],"src":"41594:56:13"},"returnParameters":{"id":9110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9109,"name":"","nodeType":"VariableDeclaration","scope":9238,"src":"41669:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9108,"name":"uint","nodeType":"ElementaryTypeName","src":"41669:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"41668:6:13"},"scope":10531,"src":"41564:1966:13","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":{"id":9275,"nodeType":"Block","src":"43825:484:13","statements":[{"condition":{"argumentTypes":null,"id":9247,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"43872:17:13","subExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":9245,"name":"hasAdminRights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13024,"src":"43873:14:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":9246,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"43873:16:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":9256,"nodeType":"IfStatement","src":"43868:121:13","trueBody":{"id":9255,"nodeType":"Block","src":"43891:98:13","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9249,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"43917:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":9250,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"UNAUTHORIZED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"43917:18:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9251,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13603,"src":"43937:11:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13603_$","typeString":"type(enum ComptrollerErrorReporter.FailureInfo)"}},"id":9252,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"SET_PRICE_ORACLE_OWNER_CHECK","nodeType":"MemberAccess","referencedDeclaration":null,"src":"43937:40:13","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}],"id":9248,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13635,"src":"43912:4:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13574_$_t_enum$_FailureInfo_$13603_$returns$_t_uint256_$","typeString":"function (enum ComptrollerErrorReporter.Error,enum ComptrollerErrorReporter.FailureInfo) returns (uint256)"}},"id":9253,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"43912:66:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9244,"id":9254,"nodeType":"Return","src":"43905:73:13"}]}},{"assignments":[9258],"declarations":[{"constant":false,"id":9258,"name":"oldOracle","nodeType":"VariableDeclaration","scope":9275,"src":"44051:21:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_PriceOracle_$18689","typeString":"contract PriceOracle"},"typeName":{"contractScope":null,"id":9257,"name":"PriceOracle","nodeType":"UserDefinedTypeName","referencedDeclaration":18689,"src":"44051:11:13","typeDescriptions":{"typeIdentifier":"t_contract$_PriceOracle_$18689","typeString":"contract PriceOracle"}},"value":null,"visibility":"internal"}],"id":9260,"initialValue":{"argumentTypes":null,"id":9259,"name":"oracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13033,"src":"44075:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_PriceOracle_$18689","typeString":"contract PriceOracle"}},"nodeType":"VariableDeclarationStatement","src":"44051:30:13"},{"expression":{"argumentTypes":null,"id":9263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":9261,"name":"oracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13033,"src":"44141:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_PriceOracle_$18689","typeString":"contract PriceOracle"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":9262,"name":"newOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9240,"src":"44150:9:13","typeDescriptions":{"typeIdentifier":"t_contract$_PriceOracle_$18689","typeString":"contract PriceOracle"}},"src":"44141:18:13","typeDescriptions":{"typeIdentifier":"t_contract$_PriceOracle_$18689","typeString":"contract PriceOracle"}},"id":9264,"nodeType":"ExpressionStatement","src":"44141:18:13"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":9266,"name":"oldOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9258,"src":"44243:9:13","typeDescriptions":{"typeIdentifier":"t_contract$_PriceOracle_$18689","typeString":"contract PriceOracle"}},{"argumentTypes":null,"id":9267,"name":"newOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9240,"src":"44254:9:13","typeDescriptions":{"typeIdentifier":"t_contract$_PriceOracle_$18689","typeString":"contract PriceOracle"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PriceOracle_$18689","typeString":"contract PriceOracle"},{"typeIdentifier":"t_contract$_PriceOracle_$18689","typeString":"contract PriceOracle"}],"id":9265,"name":"NewPriceOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6902,"src":"44228:14:13","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_contract$_PriceOracle_$18689_$_t_contract$_PriceOracle_$18689_$returns$__$","typeString":"function (contract PriceOracle,contract PriceOracle)"}},"id":9268,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"44228:36:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9269,"nodeType":"EmitStatement","src":"44223:41:13"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9271,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"44287:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":9272,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"44287:14:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":9270,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44282:4:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":9273,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"44282:20:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9244,"id":9274,"nodeType":"Return","src":"44275:27:13"}]},"documentation":"@notice Sets a new price oracle for the comptroller\n@dev Admin function to set a new price oracle\n@return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)","id":9276,"implemented":true,"kind":"function","modifiers":[],"name":"_setPriceOracle","nodeType":"FunctionDefinition","parameters":{"id":9241,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9240,"name":"newOracle","nodeType":"VariableDeclaration","scope":9276,"src":"43780:21:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_PriceOracle_$18689","typeString":"contract PriceOracle"},"typeName":{"contractScope":null,"id":9239,"name":"PriceOracle","nodeType":"UserDefinedTypeName","referencedDeclaration":18689,"src":"43780:11:13","typeDescriptions":{"typeIdentifier":"t_contract$_PriceOracle_$18689","typeString":"contract PriceOracle"}},"value":null,"visibility":"internal"}],"src":"43779:23:13"},"returnParameters":{"id":9244,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9243,"name":"","nodeType":"VariableDeclaration","scope":9276,"src":"43819:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9242,"name":"uint","nodeType":"ElementaryTypeName","src":"43819:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"43818:6:13"},"scope":10531,"src":"43755:554:13","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":9357,"nodeType":"Block","src":"44683:1069:13","statements":[{"condition":{"argumentTypes":null,"id":9285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"44730:17:13","subExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":9283,"name":"hasAdminRights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13024,"src":"44731:14:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":9284,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"44731:16:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":9294,"nodeType":"IfStatement","src":"44726:121:13","trueBody":{"id":9293,"nodeType":"Block","src":"44749:98:13","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9287,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"44775:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":9288,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"UNAUTHORIZED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"44775:18:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9289,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13603,"src":"44795:11:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13603_$","typeString":"type(enum ComptrollerErrorReporter.FailureInfo)"}},"id":9290,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"SET_CLOSE_FACTOR_OWNER_CHECK","nodeType":"MemberAccess","referencedDeclaration":null,"src":"44795:40:13","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}],"id":9286,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13635,"src":"44770:4:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13574_$_t_enum$_FailureInfo_$13603_$returns$_t_uint256_$","typeString":"function (enum ComptrollerErrorReporter.Error,enum ComptrollerErrorReporter.FailureInfo) returns (uint256)"}},"id":9291,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"44770:66:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9282,"id":9292,"nodeType":"Return","src":"44763:73:13"}]}},{"assignments":[9296],"declarations":[{"constant":false,"id":9296,"name":"newCloseFactorExp","nodeType":"VariableDeclaration","scope":9357,"src":"44881:28:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":9295,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"44881:3:13","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"}],"id":9300,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":9298,"name":"newCloseFactorMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9278,"src":"44927:22:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9297,"name":"Exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14390,"src":"44912:3:13","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Exp_$14390_storage_ptr_$","typeString":"type(struct ExponentialNoError.Exp storage pointer)"}},"id":9299,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"44912:39:13","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}},"nodeType":"VariableDeclarationStatement","src":"44881:70:13"},{"assignments":[9302],"declarations":[{"constant":false,"id":9302,"name":"lowLimit","nodeType":"VariableDeclaration","scope":9357,"src":"44961:19:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":9301,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"44961:3:13","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"}],"id":9306,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":9304,"name":"closeFactorMinMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6955,"src":"44998:22:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9303,"name":"Exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14390,"src":"44983:3:13","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Exp_$14390_storage_ptr_$","typeString":"type(struct ExponentialNoError.Exp storage pointer)"}},"id":9305,"isConstant":false,"isLValue":false,"isPure":true,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"44983:39:13","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}},"nodeType":"VariableDeclarationStatement","src":"44961:61:13"},{"condition":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":9308,"name":"newCloseFactorExp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9296,"src":"45055:17:13","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}},{"argumentTypes":null,"id":9309,"name":"lowLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9302,"src":"45074:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"},{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}],"id":9307,"name":"lessThanOrEqualExp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14485,"src":"45036:18:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Exp_$14390_memory_ptr_$_t_struct$_Exp_$14390_memory_ptr_$returns$_t_bool_$","typeString":"function (struct ExponentialNoError.Exp memory,struct ExponentialNoError.Exp memory) pure returns (bool)"}},"id":9310,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"45036:47:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":9319,"nodeType":"IfStatement","src":"45032:158:13","trueBody":{"id":9318,"nodeType":"Block","src":"45085:105:13","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9312,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"45111:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":9313,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"INVALID_CLOSE_FACTOR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"45111:26:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9314,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13603,"src":"45139:11:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13603_$","typeString":"type(enum ComptrollerErrorReporter.FailureInfo)"}},"id":9315,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"SET_CLOSE_FACTOR_VALIDATION","nodeType":"MemberAccess","referencedDeclaration":null,"src":"45139:39:13","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}],"id":9311,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13635,"src":"45106:4:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13574_$_t_enum$_FailureInfo_$13603_$returns$_t_uint256_$","typeString":"function (enum ComptrollerErrorReporter.Error,enum ComptrollerErrorReporter.FailureInfo) returns (uint256)"}},"id":9316,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"45106:73:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9282,"id":9317,"nodeType":"Return","src":"45099:80:13"}]}},{"assignments":[9321],"declarations":[{"constant":false,"id":9321,"name":"highLimit","nodeType":"VariableDeclaration","scope":9357,"src":"45200:20:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":9320,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"45200:3:13","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"}],"id":9325,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":9323,"name":"closeFactorMaxMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6958,"src":"45238:22:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9322,"name":"Exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14390,"src":"45223:3:13","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Exp_$14390_storage_ptr_$","typeString":"type(struct ExponentialNoError.Exp storage pointer)"}},"id":9324,"isConstant":false,"isLValue":false,"isPure":true,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"45223:39:13","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}},"nodeType":"VariableDeclarationStatement","src":"45200:62:13"},{"condition":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":9327,"name":"highLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9321,"src":"45288:9:13","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}},{"argumentTypes":null,"id":9328,"name":"newCloseFactorExp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9296,"src":"45299:17:13","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"},{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}],"id":9326,"name":"lessThanExp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14469,"src":"45276:11:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Exp_$14390_memory_ptr_$_t_struct$_Exp_$14390_memory_ptr_$returns$_t_bool_$","typeString":"function (struct ExponentialNoError.Exp memory,struct ExponentialNoError.Exp memory) pure returns (bool)"}},"id":9329,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"45276:41:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":9338,"nodeType":"IfStatement","src":"45272:152:13","trueBody":{"id":9337,"nodeType":"Block","src":"45319:105:13","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9331,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"45345:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":9332,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"INVALID_CLOSE_FACTOR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"45345:26:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9333,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13603,"src":"45373:11:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13603_$","typeString":"type(enum ComptrollerErrorReporter.FailureInfo)"}},"id":9334,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"SET_CLOSE_FACTOR_VALIDATION","nodeType":"MemberAccess","referencedDeclaration":null,"src":"45373:39:13","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}],"id":9330,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13635,"src":"45340:4:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13574_$_t_enum$_FailureInfo_$13603_$returns$_t_uint256_$","typeString":"function (enum ComptrollerErrorReporter.Error,enum ComptrollerErrorReporter.FailureInfo) returns (uint256)"}},"id":9335,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"45340:73:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9282,"id":9336,"nodeType":"Return","src":"45333:80:13"}]}},{"assignments":[9340],"declarations":[{"constant":false,"id":9340,"name":"oldCloseFactorMantissa","nodeType":"VariableDeclaration","scope":9357,"src":"45507:27:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9339,"name":"uint","nodeType":"ElementaryTypeName","src":"45507:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":9342,"initialValue":{"argumentTypes":null,"id":9341,"name":"closeFactorMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13035,"src":"45537:19:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"45507:49:13"},{"expression":{"argumentTypes":null,"id":9345,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":9343,"name":"closeFactorMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13035,"src":"45566:19:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":9344,"name":"newCloseFactorMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9278,"src":"45588:22:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"45566:44:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9346,"nodeType":"ExpressionStatement","src":"45566:44:13"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":9348,"name":"oldCloseFactorMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9340,"src":"45663:22:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":9349,"name":"closeFactorMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13035,"src":"45687:19:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9347,"name":"NewCloseFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6882,"src":"45648:14:13","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":9350,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"45648:59:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9351,"nodeType":"EmitStatement","src":"45643:64:13"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9353,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"45730:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":9354,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"45730:14:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":9352,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45725:4:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":9355,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"45725:20:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9282,"id":9356,"nodeType":"Return","src":"45718:27:13"}]},"documentation":"@notice Sets the closeFactor used when liquidating borrows\n@dev Admin function to set closeFactor\n@param newCloseFactorMantissa New close factor, scaled by 1e18\n@return uint 0=success, otherwise a failure. (See ErrorReporter for details)","id":9358,"implemented":true,"kind":"function","modifiers":[],"name":"_setCloseFactor","nodeType":"FunctionDefinition","parameters":{"id":9279,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9278,"name":"newCloseFactorMantissa","nodeType":"VariableDeclaration","scope":9358,"src":"44627:27:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9277,"name":"uint","nodeType":"ElementaryTypeName","src":"44627:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"44626:29:13"},"returnParameters":{"id":9282,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9281,"name":"","nodeType":"VariableDeclaration","scope":9358,"src":"44674:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9280,"name":"uint256","nodeType":"ElementaryTypeName","src":"44674:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"44673:9:13"},"scope":10531,"src":"44602:1150:13","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":{"id":9465,"nodeType":"Block","src":"46221:1501:13","statements":[{"condition":{"argumentTypes":null,"id":9369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"46268:17:13","subExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":9367,"name":"hasAdminRights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13024,"src":"46269:14:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":9368,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"46269:16:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":9378,"nodeType":"IfStatement","src":"46264:126:13","trueBody":{"id":9377,"nodeType":"Block","src":"46287:103:13","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9371,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"46313:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":9372,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"UNAUTHORIZED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"46313:18:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9373,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13603,"src":"46333:11:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13603_$","typeString":"type(enum ComptrollerErrorReporter.FailureInfo)"}},"id":9374,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"SET_COLLATERAL_FACTOR_OWNER_CHECK","nodeType":"MemberAccess","referencedDeclaration":null,"src":"46333:45:13","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}],"id":9370,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13635,"src":"46308:4:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13574_$_t_enum$_FailureInfo_$13603_$returns$_t_uint256_$","typeString":"function (enum ComptrollerErrorReporter.Error,enum ComptrollerErrorReporter.FailureInfo) returns (uint256)"}},"id":9375,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"46308:71:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9366,"id":9376,"nodeType":"Return","src":"46301:78:13"}]}},{"assignments":[9380],"declarations":[{"constant":false,"id":9380,"name":"market","nodeType":"VariableDeclaration","scope":9465,"src":"46435:21:13","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Market_$13056_storage_ptr","typeString":"struct ComptrollerV2Storage.Market"},"typeName":{"contractScope":null,"id":9379,"name":"Market","nodeType":"UserDefinedTypeName","referencedDeclaration":13056,"src":"46435:6:13","typeDescriptions":{"typeIdentifier":"t_struct$_Market_$13056_storage_ptr","typeString":"struct ComptrollerV2Storage.Market"}},"value":null,"visibility":"internal"}],"id":9386,"initialValue":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":9381,"name":"markets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13060,"src":"46459:7:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Market_$13056_storage_$","typeString":"mapping(address => struct ComptrollerV2Storage.Market storage ref)"}},"id":9385,"indexExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":9383,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9360,"src":"46475:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":9382,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46467:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":9384,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"46467:15:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"46459:24:13","typeDescriptions":{"typeIdentifier":"t_struct$_Market_$13056_storage","typeString":"struct ComptrollerV2Storage.Market storage ref"}},"nodeType":"VariableDeclarationStatement","src":"46435:48:13"},{"condition":{"argumentTypes":null,"id":9389,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"46497:16:13","subExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9387,"name":"market","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9380,"src":"46498:6:13","typeDescriptions":{"typeIdentifier":"t_struct$_Market_$13056_storage_ptr","typeString":"struct ComptrollerV2Storage.Market storage pointer"}},"id":9388,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"isListed","nodeType":"MemberAccess","referencedDeclaration":13049,"src":"46498:15:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":9398,"nodeType":"IfStatement","src":"46493:128:13","trueBody":{"id":9397,"nodeType":"Block","src":"46515:106:13","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9391,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"46541:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":9392,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"MARKET_NOT_LISTED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"46541:23:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9393,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13603,"src":"46566:11:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13603_$","typeString":"type(enum ComptrollerErrorReporter.FailureInfo)"}},"id":9394,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"SET_COLLATERAL_FACTOR_NO_EXISTS","nodeType":"MemberAccess","referencedDeclaration":null,"src":"46566:43:13","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}],"id":9390,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13635,"src":"46536:4:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13574_$_t_enum$_FailureInfo_$13603_$returns$_t_uint256_$","typeString":"function (enum ComptrollerErrorReporter.Error,enum ComptrollerErrorReporter.FailureInfo) returns (uint256)"}},"id":9395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"46536:74:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9366,"id":9396,"nodeType":"Return","src":"46529:81:13"}]}},{"assignments":[9400],"declarations":[{"constant":false,"id":9400,"name":"newCollateralFactorExp","nodeType":"VariableDeclaration","scope":9465,"src":"46631:33:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":9399,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"46631:3:13","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"}],"id":9404,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":9402,"name":"newCollateralFactorMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9362,"src":"46682:27:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9401,"name":"Exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14390,"src":"46667:3:13","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Exp_$14390_storage_ptr_$","typeString":"type(struct ExponentialNoError.Exp storage pointer)"}},"id":9403,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"46667:44:13","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}},"nodeType":"VariableDeclarationStatement","src":"46631:80:13"},{"assignments":[9406],"declarations":[{"constant":false,"id":9406,"name":"highLimit","nodeType":"VariableDeclaration","scope":9465,"src":"46764:20:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":9405,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"46764:3:13","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"}],"id":9410,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":9408,"name":"collateralFactorMaxMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6961,"src":"46802:27:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9407,"name":"Exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14390,"src":"46787:3:13","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Exp_$14390_storage_ptr_$","typeString":"type(struct ExponentialNoError.Exp storage pointer)"}},"id":9409,"isConstant":false,"isLValue":false,"isPure":true,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"46787:44:13","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}},"nodeType":"VariableDeclarationStatement","src":"46764:67:13"},{"condition":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":9412,"name":"highLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9406,"src":"46857:9:13","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}},{"argumentTypes":null,"id":9413,"name":"newCollateralFactorExp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9400,"src":"46868:22:13","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"},{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}],"id":9411,"name":"lessThanExp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14469,"src":"46845:11:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Exp_$14390_memory_ptr_$_t_struct$_Exp_$14390_memory_ptr_$returns$_t_bool_$","typeString":"function (struct ExponentialNoError.Exp memory,struct ExponentialNoError.Exp memory) pure returns (bool)"}},"id":9414,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"46845:46:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":9423,"nodeType":"IfStatement","src":"46841:167:13","trueBody":{"id":9422,"nodeType":"Block","src":"46893:115:13","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9416,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"46919:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":9417,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"INVALID_COLLATERAL_FACTOR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"46919:31:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9418,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13603,"src":"46952:11:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13603_$","typeString":"type(enum ComptrollerErrorReporter.FailureInfo)"}},"id":9419,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"SET_COLLATERAL_FACTOR_VALIDATION","nodeType":"MemberAccess","referencedDeclaration":null,"src":"46952:44:13","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}],"id":9415,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13635,"src":"46914:4:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13574_$_t_enum$_FailureInfo_$13603_$returns$_t_uint256_$","typeString":"function (enum ComptrollerErrorReporter.Error,enum ComptrollerErrorReporter.FailureInfo) returns (uint256)"}},"id":9420,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"46914:83:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9366,"id":9421,"nodeType":"Return","src":"46907:90:13"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":9433,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":9424,"name":"newCollateralFactorMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9362,"src":"47079:27:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"hexValue":"30","id":9425,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47110:1:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"47079:32:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9432,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":9429,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9360,"src":"47141:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"expression":{"argumentTypes":null,"id":9427,"name":"oracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13033,"src":"47115:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_PriceOracle_$18689","typeString":"contract PriceOracle"}},"id":9428,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getUnderlyingPrice","nodeType":"MemberAccess","referencedDeclaration":18688,"src":"47115:25:13","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_contract$_CToken_$6186_$returns$_t_uint256_$","typeString":"function (contract CToken) view external returns (uint256)"}},"id":9430,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"47115:33:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":9431,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47152:1:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"47115:38:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"47079:74:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":9442,"nodeType":"IfStatement","src":"47075:184:13","trueBody":{"id":9441,"nodeType":"Block","src":"47155:104:13","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9435,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"47181:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":9436,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"PRICE_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"47181:17:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9437,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13603,"src":"47200:11:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13603_$","typeString":"type(enum ComptrollerErrorReporter.FailureInfo)"}},"id":9438,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"SET_COLLATERAL_FACTOR_WITHOUT_PRICE","nodeType":"MemberAccess","referencedDeclaration":null,"src":"47200:47:13","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}],"id":9434,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13635,"src":"47176:4:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13574_$_t_enum$_FailureInfo_$13603_$returns$_t_uint256_$","typeString":"function (enum ComptrollerErrorReporter.Error,enum ComptrollerErrorReporter.FailureInfo) returns (uint256)"}},"id":9439,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"47176:72:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9366,"id":9440,"nodeType":"Return","src":"47169:79:13"}]}},{"assignments":[9444],"declarations":[{"constant":false,"id":9444,"name":"oldCollateralFactorMantissa","nodeType":"VariableDeclaration","scope":9465,"src":"47356:32:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9443,"name":"uint","nodeType":"ElementaryTypeName","src":"47356:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":9447,"initialValue":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9445,"name":"market","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9380,"src":"47391:6:13","typeDescriptions":{"typeIdentifier":"t_struct$_Market_$13056_storage_ptr","typeString":"struct ComptrollerV2Storage.Market storage pointer"}},"id":9446,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"collateralFactorMantissa","nodeType":"MemberAccess","referencedDeclaration":13051,"src":"47391:31:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"47356:66:13"},{"expression":{"argumentTypes":null,"id":9452,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9448,"name":"market","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9380,"src":"47432:6:13","typeDescriptions":{"typeIdentifier":"t_struct$_Market_$13056_storage_ptr","typeString":"struct ComptrollerV2Storage.Market storage pointer"}},"id":9450,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"collateralFactorMantissa","nodeType":"MemberAccess","referencedDeclaration":13051,"src":"47432:31:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":9451,"name":"newCollateralFactorMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9362,"src":"47466:27:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"47432:61:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9453,"nodeType":"ExpressionStatement","src":"47432:61:13"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":9455,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9360,"src":"47612:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},{"argumentTypes":null,"id":9456,"name":"oldCollateralFactorMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9444,"src":"47620:27:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":9457,"name":"newCollateralFactorMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9362,"src":"47649:27:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9454,"name":"NewCollateralFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6890,"src":"47592:19:13","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_contract$_CToken_$6186_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (contract CToken,uint256,uint256)"}},"id":9458,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"47592:85:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9459,"nodeType":"EmitStatement","src":"47587:90:13"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9461,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"47700:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":9462,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"47700:14:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":9460,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47695:4:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":9463,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"47695:20:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9366,"id":9464,"nodeType":"Return","src":"47688:27:13"}]},"documentation":"@notice Sets the collateralFactor for a market\n@dev Admin function to set per-market collateralFactor\n@param cToken The market to set the factor on\n@param newCollateralFactorMantissa The new collateral factor, scaled by 1e18\n@return uint 0=success, otherwise a failure. (See ErrorReporter for details)","id":9466,"implemented":true,"kind":"function","modifiers":[],"name":"_setCollateralFactor","nodeType":"FunctionDefinition","parameters":{"id":9363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9360,"name":"cToken","nodeType":"VariableDeclaration","scope":9466,"src":"46147:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},"typeName":{"contractScope":null,"id":9359,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"46147:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"value":null,"visibility":"internal"},{"constant":false,"id":9362,"name":"newCollateralFactorMantissa","nodeType":"VariableDeclaration","scope":9466,"src":"46162:32:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9361,"name":"uint","nodeType":"ElementaryTypeName","src":"46162:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"46146:49:13"},"returnParameters":{"id":9366,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9365,"name":"","nodeType":"VariableDeclaration","scope":9466,"src":"46212:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9364,"name":"uint256","nodeType":"ElementaryTypeName","src":"46212:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"46211:9:13"},"scope":10531,"src":"46117:1605:13","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":9547,"nodeType":"Block","src":"48111:1378:13","statements":[{"condition":{"argumentTypes":null,"id":9475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"48158:17:13","subExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":9473,"name":"hasAdminRights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13024,"src":"48159:14:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":9474,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"48159:16:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":9484,"nodeType":"IfStatement","src":"48154:130:13","trueBody":{"id":9483,"nodeType":"Block","src":"48177:107:13","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9477,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"48203:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":9478,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"UNAUTHORIZED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"48203:18:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9479,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13603,"src":"48223:11:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13603_$","typeString":"type(enum ComptrollerErrorReporter.FailureInfo)"}},"id":9480,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"SET_LIQUIDATION_INCENTIVE_OWNER_CHECK","nodeType":"MemberAccess","referencedDeclaration":null,"src":"48223:49:13","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}],"id":9476,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13635,"src":"48198:4:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13574_$_t_enum$_FailureInfo_$13603_$returns$_t_uint256_$","typeString":"function (enum ComptrollerErrorReporter.Error,enum ComptrollerErrorReporter.FailureInfo) returns (uint256)"}},"id":9481,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"48198:75:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9472,"id":9482,"nodeType":"Return","src":"48191:82:13"}]}},{"assignments":[9486],"declarations":[{"constant":false,"id":9486,"name":"newLiquidationIncentive","nodeType":"VariableDeclaration","scope":9547,"src":"48359:34:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":9485,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"48359:3:13","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"}],"id":9490,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":9488,"name":"newLiquidationIncentiveMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9468,"src":"48411:31:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9487,"name":"Exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14390,"src":"48396:3:13","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Exp_$14390_storage_ptr_$","typeString":"type(struct ExponentialNoError.Exp storage pointer)"}},"id":9489,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"48396:48:13","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}},"nodeType":"VariableDeclarationStatement","src":"48359:85:13"},{"assignments":[9492],"declarations":[{"constant":false,"id":9492,"name":"minLiquidationIncentive","nodeType":"VariableDeclaration","scope":9547,"src":"48454:34:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":9491,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"48454:3:13","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"}],"id":9496,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":9494,"name":"liquidationIncentiveMinMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6964,"src":"48506:31:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9493,"name":"Exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14390,"src":"48491:3:13","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Exp_$14390_storage_ptr_$","typeString":"type(struct ExponentialNoError.Exp storage pointer)"}},"id":9495,"isConstant":false,"isLValue":false,"isPure":true,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"48491:48:13","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}},"nodeType":"VariableDeclarationStatement","src":"48454:85:13"},{"condition":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":9498,"name":"newLiquidationIncentive","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9486,"src":"48565:23:13","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}},{"argumentTypes":null,"id":9499,"name":"minLiquidationIncentive","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9492,"src":"48590:23:13","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"},{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}],"id":9497,"name":"lessThanExp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14469,"src":"48553:11:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Exp_$14390_memory_ptr_$_t_struct$_Exp_$14390_memory_ptr_$returns$_t_bool_$","typeString":"function (struct ExponentialNoError.Exp memory,struct ExponentialNoError.Exp memory) pure returns (bool)"}},"id":9500,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"48553:61:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":9509,"nodeType":"IfStatement","src":"48549:190:13","trueBody":{"id":9508,"nodeType":"Block","src":"48616:123:13","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9502,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"48642:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":9503,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"INVALID_LIQUIDATION_INCENTIVE","nodeType":"MemberAccess","referencedDeclaration":null,"src":"48642:35:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9504,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13603,"src":"48679:11:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13603_$","typeString":"type(enum ComptrollerErrorReporter.FailureInfo)"}},"id":9505,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"SET_LIQUIDATION_INCENTIVE_VALIDATION","nodeType":"MemberAccess","referencedDeclaration":null,"src":"48679:48:13","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}],"id":9501,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13635,"src":"48637:4:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13574_$_t_enum$_FailureInfo_$13603_$returns$_t_uint256_$","typeString":"function (enum ComptrollerErrorReporter.Error,enum ComptrollerErrorReporter.FailureInfo) returns (uint256)"}},"id":9506,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"48637:91:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9472,"id":9507,"nodeType":"Return","src":"48630:98:13"}]}},{"assignments":[9511],"declarations":[{"constant":false,"id":9511,"name":"maxLiquidationIncentive","nodeType":"VariableDeclaration","scope":9547,"src":"48749:34:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":9510,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"48749:3:13","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"}],"id":9515,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":9513,"name":"liquidationIncentiveMaxMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6967,"src":"48801:31:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9512,"name":"Exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14390,"src":"48786:3:13","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Exp_$14390_storage_ptr_$","typeString":"type(struct ExponentialNoError.Exp storage pointer)"}},"id":9514,"isConstant":false,"isLValue":false,"isPure":true,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"48786:48:13","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}},"nodeType":"VariableDeclarationStatement","src":"48749:85:13"},{"condition":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":9517,"name":"maxLiquidationIncentive","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9511,"src":"48860:23:13","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}},{"argumentTypes":null,"id":9518,"name":"newLiquidationIncentive","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9486,"src":"48885:23:13","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"},{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}],"id":9516,"name":"lessThanExp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14469,"src":"48848:11:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Exp_$14390_memory_ptr_$_t_struct$_Exp_$14390_memory_ptr_$returns$_t_bool_$","typeString":"function (struct ExponentialNoError.Exp memory,struct ExponentialNoError.Exp memory) pure returns (bool)"}},"id":9519,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"48848:61:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":9528,"nodeType":"IfStatement","src":"48844:190:13","trueBody":{"id":9527,"nodeType":"Block","src":"48911:123:13","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9521,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"48937:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":9522,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"INVALID_LIQUIDATION_INCENTIVE","nodeType":"MemberAccess","referencedDeclaration":null,"src":"48937:35:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9523,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13603,"src":"48974:11:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13603_$","typeString":"type(enum ComptrollerErrorReporter.FailureInfo)"}},"id":9524,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"SET_LIQUIDATION_INCENTIVE_VALIDATION","nodeType":"MemberAccess","referencedDeclaration":null,"src":"48974:48:13","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}],"id":9520,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13635,"src":"48932:4:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13574_$_t_enum$_FailureInfo_$13603_$returns$_t_uint256_$","typeString":"function (enum ComptrollerErrorReporter.Error,enum ComptrollerErrorReporter.FailureInfo) returns (uint256)"}},"id":9525,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"48932:91:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9472,"id":9526,"nodeType":"Return","src":"48925:98:13"}]}},{"assignments":[9530],"declarations":[{"constant":false,"id":9530,"name":"oldLiquidationIncentiveMantissa","nodeType":"VariableDeclaration","scope":9547,"src":"49089:36:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9529,"name":"uint","nodeType":"ElementaryTypeName","src":"49089:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":9532,"initialValue":{"argumentTypes":null,"id":9531,"name":"liquidationIncentiveMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13037,"src":"49128:28:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"49089:67:13"},{"expression":{"argumentTypes":null,"id":9535,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":9533,"name":"liquidationIncentiveMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13037,"src":"49221:28:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":9534,"name":"newLiquidationIncentiveMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9468,"src":"49252:31:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"49221:62:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9536,"nodeType":"ExpressionStatement","src":"49221:62:13"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":9538,"name":"oldLiquidationIncentiveMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9530,"src":"49379:31:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":9539,"name":"newLiquidationIncentiveMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9468,"src":"49412:31:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9537,"name":"NewLiquidationIncentive","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6896,"src":"49355:23:13","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":9540,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"49355:89:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9541,"nodeType":"EmitStatement","src":"49350:94:13"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9543,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"49467:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":9544,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"49467:14:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":9542,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"49462:4:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":9545,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"49462:20:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9472,"id":9546,"nodeType":"Return","src":"49455:27:13"}]},"documentation":"@notice Sets liquidationIncentive\n@dev Admin function to set liquidationIncentive\n@param newLiquidationIncentiveMantissa New liquidationIncentive scaled by 1e18\n@return uint 0=success, otherwise a failure. (See ErrorReporter for details)","id":9548,"implemented":true,"kind":"function","modifiers":[],"name":"_setLiquidationIncentive","nodeType":"FunctionDefinition","parameters":{"id":9469,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9468,"name":"newLiquidationIncentiveMantissa","nodeType":"VariableDeclaration","scope":9548,"src":"48049:36:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9467,"name":"uint","nodeType":"ElementaryTypeName","src":"48049:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"48048:38:13"},"returnParameters":{"id":9472,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9471,"name":"","nodeType":"VariableDeclaration","scope":9548,"src":"48105:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9470,"name":"uint","nodeType":"ElementaryTypeName","src":"48105:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"48104:6:13"},"scope":10531,"src":"48015:1474:13","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":{"id":9669,"nodeType":"Block","src":"49871:1253:13","statements":[{"condition":{"argumentTypes":null,"id":9557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"49918:17:13","subExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":9555,"name":"hasAdminRights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13024,"src":"49919:14:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":9556,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"49919:16:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":9566,"nodeType":"IfStatement","src":"49914:119:13","trueBody":{"id":9565,"nodeType":"Block","src":"49937:96:13","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9559,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"49963:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":9560,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"UNAUTHORIZED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"49963:18:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9561,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13603,"src":"49983:11:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13603_$","typeString":"type(enum ComptrollerErrorReporter.FailureInfo)"}},"id":9562,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"SUPPORT_MARKET_OWNER_CHECK","nodeType":"MemberAccess","referencedDeclaration":null,"src":"49983:38:13","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}],"id":9558,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13635,"src":"49958:4:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13574_$_t_enum$_FailureInfo_$13603_$returns$_t_uint256_$","typeString":"function (enum ComptrollerErrorReporter.Error,enum ComptrollerErrorReporter.FailureInfo) returns (uint256)"}},"id":9563,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"49958:64:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9554,"id":9564,"nodeType":"Return","src":"49951:71:13"}]}},{"condition":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":9567,"name":"markets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13060,"src":"50084:7:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Market_$13056_storage_$","typeString":"mapping(address => struct ComptrollerV2Storage.Market storage ref)"}},"id":9571,"indexExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":9569,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9550,"src":"50100:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":9568,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50092:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":9570,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"50092:15:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"50084:24:13","typeDescriptions":{"typeIdentifier":"t_struct$_Market_$13056_storage","typeString":"struct ComptrollerV2Storage.Market storage ref"}},"id":9572,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"isListed","nodeType":"MemberAccess","referencedDeclaration":13049,"src":"50084:33:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":9581,"nodeType":"IfStatement","src":"50080:139:13","trueBody":{"id":9580,"nodeType":"Block","src":"50119:100:13","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9574,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"50145:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":9575,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"MARKET_ALREADY_LISTED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"50145:27:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9576,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13603,"src":"50174:11:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13603_$","typeString":"type(enum ComptrollerErrorReporter.FailureInfo)"}},"id":9577,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"SUPPORT_MARKET_EXISTS","nodeType":"MemberAccess","referencedDeclaration":null,"src":"50174:33:13","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}],"id":9573,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13635,"src":"50140:4:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13574_$_t_enum$_FailureInfo_$13603_$returns$_t_uint256_$","typeString":"function (enum ComptrollerErrorReporter.Error,enum ComptrollerErrorReporter.FailureInfo) returns (uint256)"}},"id":9578,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"50140:68:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9554,"id":9579,"nodeType":"Return","src":"50133:75:13"}]}},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":9583,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9550,"src":"50294:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":9584,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"isCToken","nodeType":"MemberAccess","referencedDeclaration":6276,"src":"50294:15:13","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bool_$","typeString":"function () view external returns (bool)"}},"id":9585,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"50294:17:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"6d61726b6572206d6574686f642072657475726e65642066616c7365","id":9586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"50313:30:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_73c0b9b9fc59551809f9e3f686bb994cac13db80a83fd9ccdfe6d53da80fe637","typeString":"literal_string \"marker method returned false\""},"value":"marker method returned false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_73c0b9b9fc59551809f9e3f686bb994cac13db80a83fd9ccdfe6d53da80fe637","typeString":"literal_string \"marker method returned false\""}],"id":9582,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"50286:7:13","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9587,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"50286:58:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9588,"nodeType":"ExpressionStatement","src":"50286:58:13"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":9598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":9591,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9550,"src":"50415:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":9592,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"comptroller","nodeType":"MemberAccess","referencedDeclaration":6224,"src":"50415:18:13","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_ComptrollerInterface_$12980_$","typeString":"function () view external returns (contract ComptrollerInterface)"}},"id":9593,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"50415:20:13","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerInterface_$12980","typeString":"contract ComptrollerInterface"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ComptrollerInterface_$12980","typeString":"contract ComptrollerInterface"}],"id":9590,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50407:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":9594,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"50407:29:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":9596,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22652,"src":"50448:4:13","typeDescriptions":{"typeIdentifier":"t_contract$_Comptroller_$10531","typeString":"contract Comptroller"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Comptroller_$10531","typeString":"contract Comptroller"}],"id":9595,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50440:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":9597,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"50440:13:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50407:46:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"43616e6e6f7420737570706f72742061206d61726b65742077697468206120646966666572656e7420436f6d7074726f6c6c65722e","id":9599,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"50455:55:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_f1ed68537a8f8d4a297fe9d96815f6073ee9803a389b22107ce878069f3924d9","typeString":"literal_string \"Cannot support a market with a different Comptroller.\""},"value":"Cannot support a market with a different Comptroller."}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f1ed68537a8f8d4a297fe9d96815f6073ee9803a389b22107ce878069f3924d9","typeString":"literal_string \"Cannot support a market with a different Comptroller.\""}],"id":9589,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"50399:7:13","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9600,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"50399:112:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9601,"nodeType":"ExpressionStatement","src":"50399:112:13"},{"assignments":[9603],"declarations":[{"constant":false,"id":9603,"name":"underlying","nodeType":"VariableDeclaration","scope":9669,"src":"50572:18:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9602,"name":"address","nodeType":"ElementaryTypeName","src":"50572:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":9618,"initialValue":{"argumentTypes":null,"condition":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":9604,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9550,"src":"50593:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":9605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"isCEther","nodeType":"MemberAccess","referencedDeclaration":6279,"src":"50593:15:13","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bool_$","typeString":"function () view external returns (bool)"}},"id":9606,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"50593:17:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":9612,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9550,"src":"50641:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":9611,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50633:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":9613,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"50633:15:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9610,"name":"CErc20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1143,"src":"50626:6:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CErc20_$1143_$","typeString":"type(contract CErc20)"}},"id":9614,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"50626:23:13","typeDescriptions":{"typeIdentifier":"t_contract$_CErc20_$1143","typeString":"contract CErc20"}},"id":9615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"underlying","nodeType":"MemberAccess","referencedDeclaration":6558,"src":"50626:34:13","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":9616,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"50626:36:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"50593:69:13","trueExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":9608,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50621:1:13","subdenomination":null,"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":9607,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50613:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":9609,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"50613:10:13","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"50572:90:13"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":9627,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":9620,"name":"cTokensByUnderlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13082,"src":"50685:19:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_contract$_CToken_$6186_$","typeString":"mapping(address => contract CToken)"}},"id":9622,"indexExpression":{"argumentTypes":null,"id":9621,"name":"underlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9603,"src":"50705:10:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"50685:31:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":9619,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50677:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":9623,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"50677:40:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":9625,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50729:1:13","subdenomination":null,"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":9624,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50721:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":9626,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"50721:10:13","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"50677:54:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":9636,"nodeType":"IfStatement","src":"50673:160:13","trueBody":{"id":9635,"nodeType":"Block","src":"50733:100:13","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9629,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"50759:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":9630,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"MARKET_ALREADY_LISTED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"50759:27:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9631,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13603,"src":"50788:11:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13603_$","typeString":"type(enum ComptrollerErrorReporter.FailureInfo)"}},"id":9632,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"SUPPORT_MARKET_EXISTS","nodeType":"MemberAccess","referencedDeclaration":null,"src":"50788:33:13","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}],"id":9628,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13635,"src":"50754:4:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13574_$_t_enum$_FailureInfo_$13603_$returns$_t_uint256_$","typeString":"function (enum ComptrollerErrorReporter.Error,enum ComptrollerErrorReporter.FailureInfo) returns (uint256)"}},"id":9633,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"50754:68:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9554,"id":9634,"nodeType":"Return","src":"50747:75:13"}]}},{"expression":{"argumentTypes":null,"id":9646,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":9637,"name":"markets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13060,"src":"50881:7:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Market_$13056_storage_$","typeString":"mapping(address => struct ComptrollerV2Storage.Market storage ref)"}},"id":9641,"indexExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":9639,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9550,"src":"50897:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":9638,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50889:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":9640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"50889:15:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"50881:24:13","typeDescriptions":{"typeIdentifier":"t_struct$_Market_$13056_storage","typeString":"struct ComptrollerV2Storage.Market storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"74727565","id":9643,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"50926:4:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"argumentTypes":null,"hexValue":"30","id":9644,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50958:1:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":9642,"name":"Market","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13056,"src":"50908:6:13","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Market_$13056_storage_ptr_$","typeString":"type(struct ComptrollerV2Storage.Market storage pointer)"}},"id":9645,"isConstant":false,"isLValue":false,"isPure":true,"kind":"structConstructorCall","lValueRequested":false,"names":["isListed","collateralFactorMantissa"],"nodeType":"FunctionCall","src":"50908:53:13","typeDescriptions":{"typeIdentifier":"t_struct$_Market_$13056_memory","typeString":"struct ComptrollerV2Storage.Market memory"}},"src":"50881:80:13","typeDescriptions":{"typeIdentifier":"t_struct$_Market_$13056_storage","typeString":"struct ComptrollerV2Storage.Market storage ref"}},"id":9647,"nodeType":"ExpressionStatement","src":"50881:80:13"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":9651,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9550,"src":"50987:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"expression":{"argumentTypes":null,"id":9648,"name":"allMarkets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13063,"src":"50971:10:13","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_storage","typeString":"contract CToken[] storage ref"}},"id":9650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"push","nodeType":"MemberAccess","referencedDeclaration":null,"src":"50971:15:13","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_contract$_CToken_$6186_$returns$_t_uint256_$","typeString":"function (contract CToken) returns (uint256)"}},"id":9652,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"50971:23:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9653,"nodeType":"ExpressionStatement","src":"50971:23:13"},{"expression":{"argumentTypes":null,"id":9658,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":9654,"name":"cTokensByUnderlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13082,"src":"51004:19:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_contract$_CToken_$6186_$","typeString":"mapping(address => contract CToken)"}},"id":9656,"indexExpression":{"argumentTypes":null,"id":9655,"name":"underlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9603,"src":"51024:10:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"51004:31:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":9657,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9550,"src":"51038:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"src":"51004:40:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":9659,"nodeType":"ExpressionStatement","src":"51004:40:13"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":9661,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9550,"src":"51072:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":9660,"name":"MarketListed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6860,"src":"51059:12:13","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_contract$_CToken_$6186_$returns$__$","typeString":"function (contract CToken)"}},"id":9662,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"51059:20:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9663,"nodeType":"EmitStatement","src":"51054:25:13"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9665,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"51102:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":9666,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"51102:14:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":9664,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"51097:4:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":9667,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"51097:20:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9554,"id":9668,"nodeType":"Return","src":"51090:27:13"}]},"documentation":"@notice Add the market to the markets mapping and set it as listed\n@dev Admin function to set isListed and add support for the market\n@param cToken The address of the market (token) to list\n@return uint 0=success, otherwise a failure. (See enum Error for details)","id":9670,"implemented":true,"kind":"function","modifiers":[],"name":"_supportMarket","nodeType":"FunctionDefinition","parameters":{"id":9551,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9550,"name":"cToken","nodeType":"VariableDeclaration","scope":9670,"src":"49832:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},"typeName":{"contractScope":null,"id":9549,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"49832:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"value":null,"visibility":"internal"}],"src":"49831:15:13"},"returnParameters":{"id":9554,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9553,"name":"","nodeType":"VariableDeclaration","scope":9670,"src":"49865:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9552,"name":"uint","nodeType":"ElementaryTypeName","src":"49865:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"49864:6:13"},"scope":10531,"src":"49808:1316:13","stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},{"body":{"id":9739,"nodeType":"Block","src":"51626:867:13","statements":[{"condition":{"argumentTypes":null,"id":9683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"51673:17:13","subExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":9681,"name":"hasAdminRights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13024,"src":"51674:14:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":9682,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"51674:16:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":9692,"nodeType":"IfStatement","src":"51669:119:13","trueBody":{"id":9691,"nodeType":"Block","src":"51692:96:13","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9685,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"51718:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":9686,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"UNAUTHORIZED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"51718:18:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9687,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13603,"src":"51738:11:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13603_$","typeString":"type(enum ComptrollerErrorReporter.FailureInfo)"}},"id":9688,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"SUPPORT_MARKET_OWNER_CHECK","nodeType":"MemberAccess","referencedDeclaration":null,"src":"51738:38:13","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}],"id":9684,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13635,"src":"51713:4:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13574_$_t_enum$_FailureInfo_$13603_$returns$_t_uint256_$","typeString":"function (enum ComptrollerErrorReporter.Error,enum ComptrollerErrorReporter.FailureInfo) returns (uint256)"}},"id":9689,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"51713:64:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9680,"id":9690,"nodeType":"Return","src":"51706:71:13"}]}},{"assignments":[9694],"declarations":[{"constant":false,"id":9694,"name":"oldFuseAdminHasRights","nodeType":"VariableDeclaration","scope":9739,"src":"51896:26:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9693,"name":"bool","nodeType":"ElementaryTypeName","src":"51896:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"id":9696,"initialValue":{"argumentTypes":null,"id":9695,"name":"fuseAdminHasRights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12997,"src":"51925:18:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"51896:47:13"},{"expression":{"argumentTypes":null,"id":9699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":9697,"name":"fuseAdminHasRights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12997,"src":"51953:18:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"hexValue":"74727565","id":9698,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"51974:4:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"51953:25:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9700,"nodeType":"ExpressionStatement","src":"51953:25:13"},{"assignments":[9702],"declarations":[{"constant":false,"id":9702,"name":"cToken","nodeType":"VariableDeclaration","scope":9739,"src":"52022:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},"typeName":{"contractScope":null,"id":9701,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"52022:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"value":null,"visibility":"internal"}],"id":9715,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"condition":{"argumentTypes":null,"id":9704,"name":"isCEther","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9672,"src":"52045:8:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":9711,"name":"constructorData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9674,"src":"52121:15:13","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"argumentTypes":null,"id":9709,"name":"fuseAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12990,"src":"52098:9:13","typeDescriptions":{"typeIdentifier":"t_contract$_IFuseFeeDistributor_$17368","typeString":"contract IFuseFeeDistributor"}},"id":9710,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"deployCErc20","nodeType":"MemberAccess","referencedDeclaration":17364,"src":"52098:22:13","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$_t_address_$","typeString":"function (bytes memory) external returns (address)"}},"id":9712,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"52098:39:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9713,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"52045:92:13","trueExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":9707,"name":"constructorData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9674,"src":"52079:15:13","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"argumentTypes":null,"id":9705,"name":"fuseAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12990,"src":"52056:9:13","typeDescriptions":{"typeIdentifier":"t_contract$_IFuseFeeDistributor_$17368","typeString":"contract IFuseFeeDistributor"}},"id":9706,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"deployCEther","nodeType":"MemberAccess","referencedDeclaration":17357,"src":"52056:22:13","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$_t_address_$","typeString":"function (bytes memory) external returns (address)"}},"id":9708,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"52056:39:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9703,"name":"CToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6186,"src":"52038:6:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CToken_$6186_$","typeString":"type(contract CToken)"}},"id":9714,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"52038:100:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"nodeType":"VariableDeclarationStatement","src":"52022:116:13"},{"expression":{"argumentTypes":null,"id":9718,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":9716,"name":"fuseAdminHasRights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12997,"src":"52206:18:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":9717,"name":"oldFuseAdminHasRights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9694,"src":"52227:21:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"52206:42:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9719,"nodeType":"ExpressionStatement","src":"52206:42:13"},{"assignments":[9721],"declarations":[{"constant":false,"id":9721,"name":"err","nodeType":"VariableDeclaration","scope":9739,"src":"52309:11:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9720,"name":"uint256","nodeType":"ElementaryTypeName","src":"52309:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":9725,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":9723,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9702,"src":"52338:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":9722,"name":"_supportMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9670,"src":"52323:14:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_CToken_$6186_$returns$_t_uint256_$","typeString":"function (contract CToken) returns (uint256)"}},"id":9724,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"52323:22:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"52309:36:13"},{"expression":{"argumentTypes":null,"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9731,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":9726,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9721,"src":"52396:3:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9728,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"52408:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":9729,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"52408:14:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":9727,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"52403:4:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":9730,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"52403:20:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"52396:27:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"argumentTypes":null,"id":9736,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9721,"src":"52483:3:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"52396:90:13","trueExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":9733,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9702,"src":"52447:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},{"argumentTypes":null,"id":9734,"name":"collateralFactorMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9676,"src":"52455:24:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9732,"name":"_setCollateralFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9466,"src":"52426:20:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_CToken_$6186_$_t_uint256_$returns$_t_uint256_$","typeString":"function (contract CToken,uint256) returns (uint256)"}},"id":9735,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"52426:54:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9680,"id":9738,"nodeType":"Return","src":"52389:97:13"}]},"documentation":"@notice Deploy cToken, add the market to the markets mapping, and set it as listed and set the collateral factor\n@dev Admin function to deploy cToken, set isListed, and add support for the market and set the collateral factor\n@return uint 0=success, otherwise a failure. (See enum Error for details)","id":9740,"implemented":true,"kind":"function","modifiers":[],"name":"_deployMarket","nodeType":"FunctionDefinition","parameters":{"id":9677,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9672,"name":"isCEther","nodeType":"VariableDeclaration","scope":9740,"src":"51503:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9671,"name":"bool","nodeType":"ElementaryTypeName","src":"51503:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},{"constant":false,"id":9674,"name":"constructorData","nodeType":"VariableDeclaration","scope":9740,"src":"51526:30:13","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":9673,"name":"bytes","nodeType":"ElementaryTypeName","src":"51526:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"},{"constant":false,"id":9676,"name":"collateralFactorMantissa","nodeType":"VariableDeclaration","scope":9740,"src":"51566:29:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9675,"name":"uint","nodeType":"ElementaryTypeName","src":"51566:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"51493:108:13"},"returnParameters":{"id":9680,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9679,"name":"","nodeType":"VariableDeclaration","scope":9740,"src":"51620:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9678,"name":"uint","nodeType":"ElementaryTypeName","src":"51620:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"51619:6:13"},"scope":10531,"src":"51471:1022:13","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":{"id":9886,"nodeType":"Block","src":"52916:1443:13","statements":[{"condition":{"argumentTypes":null,"id":9749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"52960:17:13","subExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":9747,"name":"hasAdminRights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13024,"src":"52961:14:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":9748,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"52961:16:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":9757,"nodeType":"IfStatement","src":"52956:96:13","trueBody":{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9751,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"52991:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":9752,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"UNAUTHORIZED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"52991:18:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9753,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13603,"src":"53011:11:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13603_$","typeString":"type(enum ComptrollerErrorReporter.FailureInfo)"}},"id":9754,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"UNSUPPORT_MARKET_OWNER_CHECK","nodeType":"MemberAccess","referencedDeclaration":null,"src":"53011:40:13","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}],"id":9750,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13635,"src":"52986:4:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13574_$_t_enum$_FailureInfo_$13603_$returns$_t_uint256_$","typeString":"function (enum ComptrollerErrorReporter.Error,enum ComptrollerErrorReporter.FailureInfo) returns (uint256)"}},"id":9755,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"52986:66:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9746,"id":9756,"nodeType":"Return","src":"52979:73:13"}},{"condition":{"argumentTypes":null,"id":9764,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"53114:34:13","subExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":9758,"name":"markets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13060,"src":"53115:7:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Market_$13056_storage_$","typeString":"mapping(address => struct ComptrollerV2Storage.Market storage ref)"}},"id":9762,"indexExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":9760,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9742,"src":"53131:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":9759,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"53123:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":9761,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"53123:15:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"53115:24:13","typeDescriptions":{"typeIdentifier":"t_struct$_Market_$13056_storage","typeString":"struct ComptrollerV2Storage.Market storage ref"}},"id":9763,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"isListed","nodeType":"MemberAccess","referencedDeclaration":13049,"src":"53115:33:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":9772,"nodeType":"IfStatement","src":"53110:121:13","trueBody":{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9766,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"53162:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":9767,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"MARKET_NOT_LISTED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"53162:23:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9768,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13603,"src":"53187:11:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13603_$","typeString":"type(enum ComptrollerErrorReporter.FailureInfo)"}},"id":9769,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"UNSUPPORT_MARKET_DOES_NOT_EXIST","nodeType":"MemberAccess","referencedDeclaration":null,"src":"53187:43:13","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}],"id":9765,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13635,"src":"53157:4:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13574_$_t_enum$_FailureInfo_$13603_$returns$_t_uint256_$","typeString":"function (enum ComptrollerErrorReporter.Error,enum ComptrollerErrorReporter.FailureInfo) returns (uint256)"}},"id":9770,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"53157:74:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9746,"id":9771,"nodeType":"Return","src":"53150:81:13"}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":9773,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9742,"src":"53283:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":9774,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"totalSupply","nodeType":"MemberAccess","referencedDeclaration":6248,"src":"53283:18:13","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":9775,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"53283:20:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"30","id":9776,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"53306:1:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"53283:24:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":9785,"nodeType":"IfStatement","src":"53279:106:13","trueBody":{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9779,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"53321:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":9780,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NONZERO_TOTAL_SUPPLY","nodeType":"MemberAccess","referencedDeclaration":null,"src":"53321:26:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9781,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13603,"src":"53349:11:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13603_$","typeString":"type(enum ComptrollerErrorReporter.FailureInfo)"}},"id":9782,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"UNSUPPORT_MARKET_IN_USE","nodeType":"MemberAccess","referencedDeclaration":null,"src":"53349:35:13","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}],"id":9778,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13635,"src":"53316:4:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13574_$_t_enum$_FailureInfo_$13603_$returns$_t_uint256_$","typeString":"function (enum ComptrollerErrorReporter.Error,enum ComptrollerErrorReporter.FailureInfo) returns (uint256)"}},"id":9783,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"53316:69:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9746,"id":9784,"nodeType":"Return","src":"53309:76:13"}},{"expression":{"argumentTypes":null,"id":9791,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"53421:31:13","subExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":9786,"name":"markets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13060,"src":"53428:7:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Market_$13056_storage_$","typeString":"mapping(address => struct ComptrollerV2Storage.Market storage ref)"}},"id":9790,"indexExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":9788,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9742,"src":"53444:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":9787,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"53436:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":9789,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"53436:15:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"53428:24:13","typeDescriptions":{"typeIdentifier":"t_struct$_Market_$13056_storage","typeString":"struct ComptrollerV2Storage.Market storage ref"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9792,"nodeType":"ExpressionStatement","src":"53421:31:13"},{"assignments":[9796],"declarations":[{"constant":false,"id":9796,"name":"_allMarkets","nodeType":"VariableDeclaration","scope":9886,"src":"53564:27:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_memory_ptr","typeString":"contract CToken[]"},"typeName":{"baseType":{"contractScope":null,"id":9794,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"53564:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":9795,"length":null,"nodeType":"ArrayTypeName","src":"53564:8:13","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_storage_ptr","typeString":"contract CToken[]"}},"value":null,"visibility":"internal"}],"id":9798,"initialValue":{"argumentTypes":null,"id":9797,"name":"allMarkets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13063,"src":"53594:10:13","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_storage","typeString":"contract CToken[] storage ref"}},"nodeType":"VariableDeclarationStatement","src":"53564:40:13"},{"assignments":[9800],"declarations":[{"constant":false,"id":9800,"name":"len","nodeType":"VariableDeclaration","scope":9886,"src":"53614:8:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9799,"name":"uint","nodeType":"ElementaryTypeName","src":"53614:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":9803,"initialValue":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9801,"name":"_allMarkets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9796,"src":"53625:11:13","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_memory_ptr","typeString":"contract CToken[] memory"}},"id":9802,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"53625:18:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"53614:29:13"},{"assignments":[9805],"declarations":[{"constant":false,"id":9805,"name":"assetIndex","nodeType":"VariableDeclaration","scope":9886,"src":"53653:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9804,"name":"uint","nodeType":"ElementaryTypeName","src":"53653:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":9807,"initialValue":{"argumentTypes":null,"id":9806,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9800,"src":"53671:3:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"53653:21:13"},{"body":{"id":9830,"nodeType":"Block","src":"53715:124:13","statements":[{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},"id":9822,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":9818,"name":"_allMarkets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9796,"src":"53733:11:13","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_memory_ptr","typeString":"contract CToken[] memory"}},"id":9820,"indexExpression":{"argumentTypes":null,"id":9819,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9809,"src":"53745:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"53733:14:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":9821,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9742,"src":"53751:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"src":"53733:24:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":9829,"nodeType":"IfStatement","src":"53729:100:13","trueBody":{"id":9828,"nodeType":"Block","src":"53759:70:13","statements":[{"expression":{"argumentTypes":null,"id":9825,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":9823,"name":"assetIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9805,"src":"53777:10:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":9824,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9809,"src":"53790:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"53777:14:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9826,"nodeType":"ExpressionStatement","src":"53777:14:13"},{"id":9827,"nodeType":"Break","src":"53809:5:13"}]}}]},"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9814,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":9812,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9809,"src":"53701:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"id":9813,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9800,"src":"53705:3:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"53701:7:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9831,"initializationExpression":{"assignments":[9809],"declarations":[{"constant":false,"id":9809,"name":"i","nodeType":"VariableDeclaration","scope":9831,"src":"53689:6:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9808,"name":"uint","nodeType":"ElementaryTypeName","src":"53689:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":9811,"initialValue":{"argumentTypes":null,"hexValue":"30","id":9810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"53698:1:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"53689:10:13"},"loopExpression":{"expression":{"argumentTypes":null,"id":9816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"53710:3:13","subExpression":{"argumentTypes":null,"id":9815,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9809,"src":"53710:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9817,"nodeType":"ExpressionStatement","src":"53710:3:13"},"nodeType":"ForStatement","src":"53684:155:13"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9835,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":9833,"name":"assetIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9805,"src":"53952:10:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"id":9834,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9800,"src":"53965:3:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"53952:16:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":9832,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22539,"src":"53945:6:13","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":9836,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"53945:24:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9837,"nodeType":"ExpressionStatement","src":"53945:24:13"},{"expression":{"argumentTypes":null,"id":9847,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":9838,"name":"allMarkets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13063,"src":"54068:10:13","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_storage","typeString":"contract CToken[] storage ref"}},"id":9840,"indexExpression":{"argumentTypes":null,"id":9839,"name":"assetIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9805,"src":"54079:10:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"54068:22:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":9841,"name":"allMarkets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13063,"src":"54093:10:13","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_storage","typeString":"contract CToken[] storage ref"}},"id":9846,"indexExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9845,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9842,"name":"allMarkets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13063,"src":"54104:10:13","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_storage","typeString":"contract CToken[] storage ref"}},"id":9843,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"54104:17:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"hexValue":"31","id":9844,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"54124:1:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"54104:21:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"54093:33:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"src":"54068:58:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":9848,"nodeType":"ExpressionStatement","src":"54068:58:13"},{"expression":{"argumentTypes":null,"id":9852,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"54136:19:13","subExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9849,"name":"allMarkets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13063,"src":"54136:10:13","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_storage","typeString":"contract CToken[] storage ref"}},"id":9851,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"54136:17:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9853,"nodeType":"ExpressionStatement","src":"54136:19:13"},{"expression":{"argumentTypes":null,"id":9875,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":9854,"name":"cTokensByUnderlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13082,"src":"54166:19:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_contract$_CToken_$6186_$","typeString":"mapping(address => contract CToken)"}},"id":9869,"indexExpression":{"argumentTypes":null,"condition":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":9855,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9742,"src":"54186:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":9856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"isCEther","nodeType":"MemberAccess","referencedDeclaration":6279,"src":"54186:15:13","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bool_$","typeString":"function () view external returns (bool)"}},"id":9857,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"54186:17:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":9863,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9742,"src":"54234:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":9862,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"54226:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":9864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"54226:15:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9861,"name":"CErc20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1143,"src":"54219:6:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CErc20_$1143_$","typeString":"type(contract CErc20)"}},"id":9865,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"54219:23:13","typeDescriptions":{"typeIdentifier":"t_contract$_CErc20_$1143","typeString":"contract CErc20"}},"id":9866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"underlying","nodeType":"MemberAccess","referencedDeclaration":6558,"src":"54219:34:13","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":9867,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"54219:36:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9868,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"54186:69:13","trueExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":9859,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"54214:1:13","subdenomination":null,"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":9858,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"54206:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":9860,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"54206:10:13","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"54166:90:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":9872,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"54274:1:13","subdenomination":null,"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":9871,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"54266:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":9873,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"54266:10:13","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":9870,"name":"CToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6186,"src":"54259:6:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CToken_$6186_$","typeString":"type(contract CToken)"}},"id":9874,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"54259:18:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"src":"54166:111:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":9876,"nodeType":"ExpressionStatement","src":"54166:111:13"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":9878,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9742,"src":"54307:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":9877,"name":"MarketUnlisted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6864,"src":"54292:14:13","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_contract$_CToken_$6186_$returns$__$","typeString":"function (contract CToken)"}},"id":9879,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"54292:22:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9880,"nodeType":"EmitStatement","src":"54287:27:13"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9882,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"54337:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":9883,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"54337:14:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":9881,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"54332:4:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":9884,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"54332:20:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9746,"id":9885,"nodeType":"Return","src":"54325:27:13"}]},"documentation":"@notice Removed a market from the markets mapping and sets it as unlisted\n@dev Admin function unset isListed and collateralFactorMantissa and unadd support for the market\n@param cToken The address of the market (token) to unlist\n@return uint 0=success, otherwise a failure. (See enum Error for details)","id":9887,"implemented":true,"kind":"function","modifiers":[],"name":"_unsupportMarket","nodeType":"FunctionDefinition","parameters":{"id":9743,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9742,"name":"cToken","nodeType":"VariableDeclaration","scope":9887,"src":"52877:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},"typeName":{"contractScope":null,"id":9741,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"52877:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"value":null,"visibility":"internal"}],"src":"52876:15:13"},"returnParameters":{"id":9746,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9745,"name":"","nodeType":"VariableDeclaration","scope":9887,"src":"52910:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9744,"name":"uint","nodeType":"ElementaryTypeName","src":"52910:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"52909:6:13"},"scope":10531,"src":"52851:1508:13","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":{"id":9928,"nodeType":"Block","src":"54643:527:13","statements":[{"condition":{"argumentTypes":null,"id":9896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"54657:17:13","subExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":9894,"name":"hasAdminRights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13024,"src":"54658:14:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":9895,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"54658:16:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":9905,"nodeType":"IfStatement","src":"54653:140:13","trueBody":{"id":9904,"nodeType":"Block","src":"54676:117:13","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9898,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"54702:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":9899,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"UNAUTHORIZED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"54702:18:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9900,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13603,"src":"54722:11:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13603_$","typeString":"type(enum ComptrollerErrorReporter.FailureInfo)"}},"id":9901,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"TOGGLE_AUTO_IMPLEMENTATIONS_ENABLED_OWNER_CHECK","nodeType":"MemberAccess","referencedDeclaration":null,"src":"54722:59:13","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}],"id":9897,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13635,"src":"54697:4:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13574_$_t_enum$_FailureInfo_$13603_$returns$_t_uint256_$","typeString":"function (enum ComptrollerErrorReporter.Error,enum ComptrollerErrorReporter.FailureInfo) returns (uint256)"}},"id":9902,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"54697:85:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9893,"id":9903,"nodeType":"Return","src":"54690:92:13"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":9908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":9906,"name":"autoImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13118,"src":"54870:18:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":9907,"name":"enabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9889,"src":"54892:7:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"54870:29:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":9914,"nodeType":"IfStatement","src":"54866:62:13","trueBody":{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9910,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"54913:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":9911,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"54913:14:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":9909,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"54908:4:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":9912,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"54908:20:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9893,"id":9913,"nodeType":"Return","src":"54901:27:13"}},{"expression":{"argumentTypes":null,"id":9917,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":9915,"name":"autoImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13118,"src":"54994:18:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":9916,"name":"enabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9889,"src":"55015:7:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"54994:28:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9918,"nodeType":"ExpressionStatement","src":"54994:28:13"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":9920,"name":"enabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9889,"src":"55117:7:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":9919,"name":"AutoImplementationsToggled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6930,"src":"55090:26:13","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bool_$returns$__$","typeString":"function (bool)"}},"id":9921,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"55090:35:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9922,"nodeType":"EmitStatement","src":"55085:40:13"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9924,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"55148:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":9925,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"55148:14:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":9923,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"55143:4:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":9926,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"55143:20:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9893,"id":9927,"nodeType":"Return","src":"55136:27:13"}]},"documentation":"@notice Toggles the auto-implementation feature\n@param enabled If the feature is to be enabled\n@return uint 0=success, otherwise a failure. (See enum Error for details)","id":9929,"implemented":true,"kind":"function","modifiers":[],"name":"_toggleAutoImplementations","nodeType":"FunctionDefinition","parameters":{"id":9890,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9889,"name":"enabled","nodeType":"VariableDeclaration","scope":9929,"src":"54607:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9888,"name":"bool","nodeType":"ElementaryTypeName","src":"54607:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"54606:14:13"},"returnParameters":{"id":9893,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9892,"name":"","nodeType":"VariableDeclaration","scope":9929,"src":"54637:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9891,"name":"uint","nodeType":"ElementaryTypeName","src":"54637:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"54636:6:13"},"scope":10531,"src":"54571:599:13","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":10003,"nodeType":"Block","src":"55791:492:13","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":9945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":9939,"name":"hasAdminRights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13024,"src":"55806:14:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":9940,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"55806:16:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":9944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9941,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"55826:3:13","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9942,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"55826:10:13","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":9943,"name":"borrowCapGuardian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13120,"src":"55840:17:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"55826:31:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"55806:51:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"6f6e6c792061646d696e206f7220626f72726f772063617020677561726469616e2063616e2073657420737570706c792063617073","id":9946,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"55859:55:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_d903caba8ebca451a5c98649d6863c307a5a722c48fe49c8e7b2b574d4069d98","typeString":"literal_string \"only admin or borrow cap guardian can set supply caps\""},"value":"only admin or borrow cap guardian can set supply caps"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d903caba8ebca451a5c98649d6863c307a5a722c48fe49c8e7b2b574d4069d98","typeString":"literal_string \"only admin or borrow cap guardian can set supply caps\""}],"id":9938,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"55798:7:13","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9947,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"55798:117:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9948,"nodeType":"ExpressionStatement","src":"55798:117:13"},{"assignments":[9950],"declarations":[{"constant":false,"id":9950,"name":"numMarkets","nodeType":"VariableDeclaration","scope":10003,"src":"55927:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9949,"name":"uint","nodeType":"ElementaryTypeName","src":"55927:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":9953,"initialValue":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9951,"name":"cTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9932,"src":"55945:7:13","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_calldata_ptr","typeString":"contract CToken[] calldata"}},"id":9952,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"55945:14:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"55927:32:13"},{"assignments":[9955],"declarations":[{"constant":false,"id":9955,"name":"numSupplyCaps","nodeType":"VariableDeclaration","scope":10003,"src":"55969:18:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9954,"name":"uint","nodeType":"ElementaryTypeName","src":"55969:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":9958,"initialValue":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9956,"name":"newSupplyCaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9935,"src":"55990:13:13","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":9957,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"55990:20:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"55969:41:13"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":9966,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9962,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":9960,"name":"numMarkets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9950,"src":"56029:10:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"hexValue":"30","id":9961,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"56043:1:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"56029:15:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":9963,"name":"numMarkets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9950,"src":"56048:10:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":9964,"name":"numSupplyCaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9955,"src":"56062:13:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"56048:27:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"56029:46:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"696e76616c696420696e707574","id":9967,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"56077:15:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_dbab81719f15ade78f76dcdbf7cff531fc5f9822fe7e8466ffdd2feb23510f3b","typeString":"literal_string \"invalid input\""},"value":"invalid input"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_dbab81719f15ade78f76dcdbf7cff531fc5f9822fe7e8466ffdd2feb23510f3b","typeString":"literal_string \"invalid input\""}],"id":9959,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"56021:7:13","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9968,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"56021:72:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9969,"nodeType":"ExpressionStatement","src":"56021:72:13"},{"body":{"id":10001,"nodeType":"Block","src":"56141:136:13","statements":[{"expression":{"argumentTypes":null,"id":9990,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":9980,"name":"supplyCaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13128,"src":"56155:10:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":9986,"indexExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":9982,"name":"cTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9932,"src":"56174:7:13","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_calldata_ptr","typeString":"contract CToken[] calldata"}},"id":9984,"indexExpression":{"argumentTypes":null,"id":9983,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9971,"src":"56182:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"56174:10:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":9981,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"56166:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":9985,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"56166:19:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"56155:31:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":9987,"name":"newSupplyCaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9935,"src":"56189:13:13","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":9989,"indexExpression":{"argumentTypes":null,"id":9988,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9971,"src":"56203:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"56189:16:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"56155:50:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9991,"nodeType":"ExpressionStatement","src":"56155:50:13"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":9993,"name":"cTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9932,"src":"56237:7:13","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_calldata_ptr","typeString":"contract CToken[] calldata"}},"id":9995,"indexExpression":{"argumentTypes":null,"id":9994,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9971,"src":"56245:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"56237:10:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":9996,"name":"newSupplyCaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9935,"src":"56249:13:13","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":9998,"indexExpression":{"argumentTypes":null,"id":9997,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9971,"src":"56263:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"56249:16:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9992,"name":"NewSupplyCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6936,"src":"56224:12:13","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_contract$_CToken_$6186_$_t_uint256_$returns$__$","typeString":"function (contract CToken,uint256)"}},"id":9999,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"56224:42:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10000,"nodeType":"EmitStatement","src":"56219:47:13"}]},"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9976,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":9974,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9971,"src":"56120:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"id":9975,"name":"numMarkets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9950,"src":"56124:10:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"56120:14:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10002,"initializationExpression":{"assignments":[9971],"declarations":[{"constant":false,"id":9971,"name":"i","nodeType":"VariableDeclaration","scope":10002,"src":"56108:6:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9970,"name":"uint","nodeType":"ElementaryTypeName","src":"56108:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":9973,"initialValue":{"argumentTypes":null,"hexValue":"30","id":9972,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"56117:1:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"56108:10:13"},"loopExpression":{"expression":{"argumentTypes":null,"id":9978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"56136:3:13","subExpression":{"argumentTypes":null,"id":9977,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9971,"src":"56136:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9979,"nodeType":"ExpressionStatement","src":"56136:3:13"},"nodeType":"ForStatement","src":"56104:173:13"}]},"documentation":"@notice Set the given supply caps for the given cToken markets. Supplying that brings total underlying supply to or above supply cap will revert.\n@dev Admin or borrowCapGuardian function to set the supply caps. A supply cap of 0 corresponds to unlimited supplying.\n@param cTokens The addresses of the markets (tokens) to change the supply caps for\n@param newSupplyCaps The new supply cap values in underlying to be set. A value of 0 corresponds to unlimited supplying.","id":10004,"implemented":true,"kind":"function","modifiers":[],"name":"_setMarketSupplyCaps","nodeType":"FunctionDefinition","parameters":{"id":9936,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9932,"name":"cTokens","nodeType":"VariableDeclaration","scope":10004,"src":"55724:25:13","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_calldata_ptr","typeString":"contract CToken[]"},"typeName":{"baseType":{"contractScope":null,"id":9930,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"55724:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":9931,"length":null,"nodeType":"ArrayTypeName","src":"55724:8:13","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_storage_ptr","typeString":"contract CToken[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":9935,"name":"newSupplyCaps","nodeType":"VariableDeclaration","scope":10004,"src":"55751:29:13","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":9933,"name":"uint","nodeType":"ElementaryTypeName","src":"55751:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9934,"length":null,"nodeType":"ArrayTypeName","src":"55751:6:13","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"value":null,"visibility":"internal"}],"src":"55723:58:13"},"returnParameters":{"id":9937,"nodeType":"ParameterList","parameters":[],"src":"55791:0:13"},"scope":10531,"src":"55694:589:13","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":{"id":10078,"nodeType":"Block","src":"56894:492:13","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10020,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":10014,"name":"hasAdminRights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13024,"src":"56909:14:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":10015,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"56909:16:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":10016,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"56929:3:13","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"56929:10:13","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":10018,"name":"borrowCapGuardian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13120,"src":"56943:17:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"56929:31:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"56909:51:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"6f6e6c792061646d696e206f7220626f72726f772063617020677561726469616e2063616e2073657420626f72726f772063617073","id":10021,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"56962:55:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_c52e43c56c1766225f7880eeb88c0e0929ce672205bb849d400966d7edc00144","typeString":"literal_string \"only admin or borrow cap guardian can set borrow caps\""},"value":"only admin or borrow cap guardian can set borrow caps"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c52e43c56c1766225f7880eeb88c0e0929ce672205bb849d400966d7edc00144","typeString":"literal_string \"only admin or borrow cap guardian can set borrow caps\""}],"id":10013,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"56901:7:13","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":10022,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"56901:117:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10023,"nodeType":"ExpressionStatement","src":"56901:117:13"},{"assignments":[10025],"declarations":[{"constant":false,"id":10025,"name":"numMarkets","nodeType":"VariableDeclaration","scope":10078,"src":"57030:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10024,"name":"uint","nodeType":"ElementaryTypeName","src":"57030:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":10028,"initialValue":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":10026,"name":"cTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10007,"src":"57048:7:13","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_calldata_ptr","typeString":"contract CToken[] calldata"}},"id":10027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"57048:14:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"57030:32:13"},{"assignments":[10030],"declarations":[{"constant":false,"id":10030,"name":"numBorrowCaps","nodeType":"VariableDeclaration","scope":10078,"src":"57072:18:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10029,"name":"uint","nodeType":"ElementaryTypeName","src":"57072:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":10033,"initialValue":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":10031,"name":"newBorrowCaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10010,"src":"57093:13:13","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":10032,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"57093:20:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"57072:41:13"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10041,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10037,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":10035,"name":"numMarkets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10025,"src":"57132:10:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"hexValue":"30","id":10036,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"57146:1:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"57132:15:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10040,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":10038,"name":"numMarkets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10025,"src":"57151:10:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":10039,"name":"numBorrowCaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10030,"src":"57165:13:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"57151:27:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"57132:46:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"696e76616c696420696e707574","id":10042,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"57180:15:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_dbab81719f15ade78f76dcdbf7cff531fc5f9822fe7e8466ffdd2feb23510f3b","typeString":"literal_string \"invalid input\""},"value":"invalid input"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_dbab81719f15ade78f76dcdbf7cff531fc5f9822fe7e8466ffdd2feb23510f3b","typeString":"literal_string \"invalid input\""}],"id":10034,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"57124:7:13","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":10043,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"57124:72:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10044,"nodeType":"ExpressionStatement","src":"57124:72:13"},{"body":{"id":10076,"nodeType":"Block","src":"57244:136:13","statements":[{"expression":{"argumentTypes":null,"id":10065,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":10055,"name":"borrowCaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13124,"src":"57258:10:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":10061,"indexExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":10057,"name":"cTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10007,"src":"57277:7:13","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_calldata_ptr","typeString":"contract CToken[] calldata"}},"id":10059,"indexExpression":{"argumentTypes":null,"id":10058,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10046,"src":"57285:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"57277:10:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":10056,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"57269:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":10060,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"57269:19:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"57258:31:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":10062,"name":"newBorrowCaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10010,"src":"57292:13:13","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":10064,"indexExpression":{"argumentTypes":null,"id":10063,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10046,"src":"57306:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"57292:16:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"57258:50:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10066,"nodeType":"ExpressionStatement","src":"57258:50:13"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":10068,"name":"cTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10007,"src":"57340:7:13","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_calldata_ptr","typeString":"contract CToken[] calldata"}},"id":10070,"indexExpression":{"argumentTypes":null,"id":10069,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10046,"src":"57348:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"57340:10:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":10071,"name":"newBorrowCaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10010,"src":"57352:13:13","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":10073,"indexExpression":{"argumentTypes":null,"id":10072,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10046,"src":"57366:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"57352:16:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10067,"name":"NewBorrowCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6942,"src":"57327:12:13","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_contract$_CToken_$6186_$_t_uint256_$returns$__$","typeString":"function (contract CToken,uint256)"}},"id":10074,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"57327:42:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10075,"nodeType":"EmitStatement","src":"57322:47:13"}]},"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":10049,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10046,"src":"57223:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"id":10050,"name":"numMarkets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10025,"src":"57227:10:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"57223:14:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10077,"initializationExpression":{"assignments":[10046],"declarations":[{"constant":false,"id":10046,"name":"i","nodeType":"VariableDeclaration","scope":10077,"src":"57211:6:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10045,"name":"uint","nodeType":"ElementaryTypeName","src":"57211:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":10048,"initialValue":{"argumentTypes":null,"hexValue":"30","id":10047,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"57220:1:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"57211:10:13"},"loopExpression":{"expression":{"argumentTypes":null,"id":10053,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"57239:3:13","subExpression":{"argumentTypes":null,"id":10052,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10046,"src":"57239:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10054,"nodeType":"ExpressionStatement","src":"57239:3:13"},"nodeType":"ForStatement","src":"57207:173:13"}]},"documentation":"@notice Set the given borrow caps for the given cToken markets. Borrowing that brings total borrows to or above borrow cap will revert.\n@dev Admin or borrowCapGuardian function to set the borrow caps. A borrow cap of 0 corresponds to unlimited borrowing.\n@param cTokens The addresses of the markets (tokens) to change the borrow caps for\n@param newBorrowCaps The new borrow cap values in underlying to be set. A value of 0 corresponds to unlimited borrowing.","id":10079,"implemented":true,"kind":"function","modifiers":[],"name":"_setMarketBorrowCaps","nodeType":"FunctionDefinition","parameters":{"id":10011,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10007,"name":"cTokens","nodeType":"VariableDeclaration","scope":10079,"src":"56827:25:13","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_calldata_ptr","typeString":"contract CToken[]"},"typeName":{"baseType":{"contractScope":null,"id":10005,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"56827:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":10006,"length":null,"nodeType":"ArrayTypeName","src":"56827:8:13","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_storage_ptr","typeString":"contract CToken[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":10010,"name":"newBorrowCaps","nodeType":"VariableDeclaration","scope":10079,"src":"56854:29:13","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":10008,"name":"uint","nodeType":"ElementaryTypeName","src":"56854:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10009,"length":null,"nodeType":"ArrayTypeName","src":"56854:6:13","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"value":null,"visibility":"internal"}],"src":"56826:58:13"},"returnParameters":{"id":10012,"nodeType":"ParameterList","parameters":[],"src":"56894:0:13"},"scope":10531,"src":"56797:589:13","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":{"id":10103,"nodeType":"Block","src":"57620:473:13","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":10085,"name":"hasAdminRights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13024,"src":"57638:14:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":10086,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"57638:16:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"6f6e6c792061646d696e2063616e2073657420626f72726f772063617020677561726469616e","id":10087,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"57656:40:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_6b99e94e4e24bae0f68df3a62bf05a1aa126af8be8c5f958d69c28141ae73bea","typeString":"literal_string \"only admin can set borrow cap guardian\""},"value":"only admin can set borrow cap guardian"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6b99e94e4e24bae0f68df3a62bf05a1aa126af8be8c5f958d69c28141ae73bea","typeString":"literal_string \"only admin can set borrow cap guardian\""}],"id":10084,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"57630:7:13","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":10088,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"57630:67:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10089,"nodeType":"ExpressionStatement","src":"57630:67:13"},{"assignments":[10091],"declarations":[{"constant":false,"id":10091,"name":"oldBorrowCapGuardian","nodeType":"VariableDeclaration","scope":10103,"src":"57759:28:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10090,"name":"address","nodeType":"ElementaryTypeName","src":"57759:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":10093,"initialValue":{"argumentTypes":null,"id":10092,"name":"borrowCapGuardian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13120,"src":"57790:17:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"57759:48:13"},{"expression":{"argumentTypes":null,"id":10096,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":10094,"name":"borrowCapGuardian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13120,"src":"57885:17:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":10095,"name":"newBorrowCapGuardian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10081,"src":"57905:20:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"57885:40:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10097,"nodeType":"ExpressionStatement","src":"57885:40:13"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":10099,"name":"oldBorrowCapGuardian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10091,"src":"58043:20:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":10100,"name":"newBorrowCapGuardian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10081,"src":"58065:20:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":10098,"name":"NewBorrowCapGuardian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6948,"src":"58022:20:13","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":10101,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"58022:64:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10102,"nodeType":"EmitStatement","src":"58017:69:13"}]},"documentation":"@notice Admin function to change the Borrow Cap Guardian\n@param newBorrowCapGuardian The address of the new Borrow Cap Guardian","id":10104,"implemented":true,"kind":"function","modifiers":[],"name":"_setBorrowCapGuardian","nodeType":"FunctionDefinition","parameters":{"id":10082,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10081,"name":"newBorrowCapGuardian","nodeType":"VariableDeclaration","scope":10104,"src":"57581:28:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10080,"name":"address","nodeType":"ElementaryTypeName","src":"57581:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"57580:30:13"},"returnParameters":{"id":10083,"nodeType":"ParameterList","parameters":[],"src":"57620:0:13"},"scope":10531,"src":"57550:543:13","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":{"id":10141,"nodeType":"Block","src":"58399:515:13","statements":[{"condition":{"argumentTypes":null,"id":10113,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"58413:17:13","subExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":10111,"name":"hasAdminRights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13024,"src":"58414:14:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":10112,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"58414:16:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":10122,"nodeType":"IfStatement","src":"58409:123:13","trueBody":{"id":10121,"nodeType":"Block","src":"58432:100:13","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":10115,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"58458:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":10116,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"UNAUTHORIZED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"58458:18:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":10117,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13603,"src":"58478:11:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13603_$","typeString":"type(enum ComptrollerErrorReporter.FailureInfo)"}},"id":10118,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"SET_PAUSE_GUARDIAN_OWNER_CHECK","nodeType":"MemberAccess","referencedDeclaration":null,"src":"58478:42:13","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}],"id":10114,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13635,"src":"58453:4:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13574_$_t_enum$_FailureInfo_$13603_$returns$_t_uint256_$","typeString":"function (enum ComptrollerErrorReporter.Error,enum ComptrollerErrorReporter.FailureInfo) returns (uint256)"}},"id":10119,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"58453:68:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10110,"id":10120,"nodeType":"Return","src":"58446:75:13"}]}},{"assignments":[10124],"declarations":[{"constant":false,"id":10124,"name":"oldPauseGuardian","nodeType":"VariableDeclaration","scope":10141,"src":"58593:24:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10123,"name":"address","nodeType":"ElementaryTypeName","src":"58593:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":10126,"initialValue":{"argumentTypes":null,"id":10125,"name":"pauseGuardian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13097,"src":"58620:13:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"58593:40:13"},{"expression":{"argumentTypes":null,"id":10129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":10127,"name":"pauseGuardian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13097,"src":"58703:13:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":10128,"name":"newPauseGuardian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10106,"src":"58719:16:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"58703:32:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10130,"nodeType":"ExpressionStatement","src":"58703:32:13"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":10132,"name":"oldPauseGuardian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10124,"src":"58837:16:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":10133,"name":"pauseGuardian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13097,"src":"58855:13:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":10131,"name":"NewPauseGuardian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6908,"src":"58820:16:13","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":10134,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"58820:49:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10135,"nodeType":"EmitStatement","src":"58815:54:13"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":10137,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"58892:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":10138,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"58892:14:13","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":10136,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"58887:4:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":10139,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"58887:20:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10110,"id":10140,"nodeType":"Return","src":"58880:27:13"}]},"documentation":"@notice Admin function to change the Pause Guardian\n@param newPauseGuardian The address of the new Pause Guardian\n@return uint 0=success, otherwise a failure. (See enum Error for details)","id":10142,"implemented":true,"kind":"function","modifiers":[],"name":"_setPauseGuardian","nodeType":"FunctionDefinition","parameters":{"id":10107,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10106,"name":"newPauseGuardian","nodeType":"VariableDeclaration","scope":10142,"src":"58351:24:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10105,"name":"address","nodeType":"ElementaryTypeName","src":"58351:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"58350:26:13"},"returnParameters":{"id":10110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10109,"name":"","nodeType":"VariableDeclaration","scope":10142,"src":"58393:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10108,"name":"uint","nodeType":"ElementaryTypeName","src":"58393:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"58392:6:13"},"scope":10531,"src":"58324:590:13","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":10198,"nodeType":"Block","src":"58993:416:13","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":10152,"name":"markets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13060,"src":"59011:7:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Market_$13056_storage_$","typeString":"mapping(address => struct ComptrollerV2Storage.Market storage ref)"}},"id":10156,"indexExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":10154,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10144,"src":"59027:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":10153,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"59019:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":10155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"59019:15:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"59011:24:13","typeDescriptions":{"typeIdentifier":"t_struct$_Market_$13056_storage","typeString":"struct ComptrollerV2Storage.Market storage ref"}},"id":10157,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"isListed","nodeType":"MemberAccess","referencedDeclaration":13049,"src":"59011:33:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"63616e6e6f742070617573652061206d61726b65742074686174206973206e6f74206c6973746564","id":10158,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"59046:42:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_0ad46837fefc66a37a27d365ae7d6446a39b33a37d743c62daa13796b21a9a61","typeString":"literal_string \"cannot pause a market that is not listed\""},"value":"cannot pause a market that is not listed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_0ad46837fefc66a37a27d365ae7d6446a39b33a37d743c62daa13796b21a9a61","typeString":"literal_string \"cannot pause a market that is not listed\""}],"id":10151,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"59003:7:13","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":10159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"59003:86:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10160,"nodeType":"ExpressionStatement","src":"59003:86:13"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":10162,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"59107:3:13","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10163,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"59107:10:13","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":10164,"name":"pauseGuardian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13097,"src":"59121:13:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"59107:27:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":10166,"name":"hasAdminRights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13024,"src":"59138:14:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":10167,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"59138:16:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"59107:47:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"6f6e6c7920706175736520677561726469616e20616e642061646d696e2063616e207061757365","id":10169,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"59156:41:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_5e020e1a96b4ab4ba411c1975849456615c80f16e98fad3f52c3497dacd698b6","typeString":"literal_string \"only pause guardian and admin can pause\""},"value":"only pause guardian and admin can pause"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5e020e1a96b4ab4ba411c1975849456615c80f16e98fad3f52c3497dacd698b6","typeString":"literal_string \"only pause guardian and admin can pause\""}],"id":10161,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"59099:7:13","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":10170,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"59099:99:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10171,"nodeType":"ExpressionStatement","src":"59099:99:13"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10178,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":10173,"name":"hasAdminRights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13024,"src":"59216:14:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":10174,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"59216:16:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":10175,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10146,"src":"59236:5:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"74727565","id":10176,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"59245:4:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"59236:13:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"59216:33:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"6f6e6c792061646d696e2063616e20756e7061757365","id":10179,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"59251:24:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_591a1484d16116f5d48f25e1321d80627bc17b2d3f0d7384d855c565fac570fe","typeString":"literal_string \"only admin can unpause\""},"value":"only admin can unpause"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_591a1484d16116f5d48f25e1321d80627bc17b2d3f0d7384d855c565fac570fe","typeString":"literal_string \"only admin can unpause\""}],"id":10172,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"59208:7:13","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":10180,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"59208:68:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10181,"nodeType":"ExpressionStatement","src":"59208:68:13"},{"expression":{"argumentTypes":null,"id":10188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":10182,"name":"mintGuardianPaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13109,"src":"59287:18:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":10186,"indexExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":10184,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10144,"src":"59314:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":10183,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"59306:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":10185,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"59306:15:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"59287:35:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":10187,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10146,"src":"59325:5:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"59287:43:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10189,"nodeType":"ExpressionStatement","src":"59287:43:13"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":10191,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10144,"src":"59358:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},{"argumentTypes":null,"hexValue":"4d696e74","id":10192,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"59366:6:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_234e55c1cd55f1338241b50d352f0e91c7e4ffad0e4271d64eb347589ebdfd16","typeString":"literal_string \"Mint\""},"value":"Mint"},{"argumentTypes":null,"id":10193,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10146,"src":"59374:5:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},{"typeIdentifier":"t_stringliteral_234e55c1cd55f1338241b50d352f0e91c7e4ffad0e4271d64eb347589ebdfd16","typeString":"literal_string \"Mint\""},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":10190,"name":"ActionPaused","nodeType":"Identifier","overloadedDeclarations":[6914,6922],"referencedDeclaration":6922,"src":"59345:12:13","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_contract$_CToken_$6186_$_t_string_memory_ptr_$_t_bool_$returns$__$","typeString":"function (contract CToken,string memory,bool)"}},"id":10194,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"59345:35:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10195,"nodeType":"EmitStatement","src":"59340:40:13"},{"expression":{"argumentTypes":null,"id":10196,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10146,"src":"59397:5:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":10150,"id":10197,"nodeType":"Return","src":"59390:12:13"}]},"documentation":null,"id":10199,"implemented":true,"kind":"function","modifiers":[],"name":"_setMintPaused","nodeType":"FunctionDefinition","parameters":{"id":10147,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10144,"name":"cToken","nodeType":"VariableDeclaration","scope":10199,"src":"58944:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},"typeName":{"contractScope":null,"id":10143,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"58944:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"value":null,"visibility":"internal"},{"constant":false,"id":10146,"name":"state","nodeType":"VariableDeclaration","scope":10199,"src":"58959:10:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10145,"name":"bool","nodeType":"ElementaryTypeName","src":"58959:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"58943:27:13"},"returnParameters":{"id":10150,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10149,"name":"","nodeType":"VariableDeclaration","scope":10199,"src":"58987:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10148,"name":"bool","nodeType":"ElementaryTypeName","src":"58987:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"58986:6:13"},"scope":10531,"src":"58920:489:13","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":10255,"nodeType":"Block","src":"59490:420:13","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":10209,"name":"markets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13060,"src":"59508:7:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Market_$13056_storage_$","typeString":"mapping(address => struct ComptrollerV2Storage.Market storage ref)"}},"id":10213,"indexExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":10211,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10201,"src":"59524:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":10210,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"59516:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":10212,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"59516:15:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"59508:24:13","typeDescriptions":{"typeIdentifier":"t_struct$_Market_$13056_storage","typeString":"struct ComptrollerV2Storage.Market storage ref"}},"id":10214,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"isListed","nodeType":"MemberAccess","referencedDeclaration":13049,"src":"59508:33:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"63616e6e6f742070617573652061206d61726b65742074686174206973206e6f74206c6973746564","id":10215,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"59543:42:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_0ad46837fefc66a37a27d365ae7d6446a39b33a37d743c62daa13796b21a9a61","typeString":"literal_string \"cannot pause a market that is not listed\""},"value":"cannot pause a market that is not listed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_0ad46837fefc66a37a27d365ae7d6446a39b33a37d743c62daa13796b21a9a61","typeString":"literal_string \"cannot pause a market that is not listed\""}],"id":10208,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"59500:7:13","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":10216,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"59500:86:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10217,"nodeType":"ExpressionStatement","src":"59500:86:13"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10225,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":10219,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"59604:3:13","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10220,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"59604:10:13","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":10221,"name":"pauseGuardian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13097,"src":"59618:13:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"59604:27:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":10223,"name":"hasAdminRights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13024,"src":"59635:14:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":10224,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"59635:16:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"59604:47:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"6f6e6c7920706175736520677561726469616e20616e642061646d696e2063616e207061757365","id":10226,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"59653:41:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_5e020e1a96b4ab4ba411c1975849456615c80f16e98fad3f52c3497dacd698b6","typeString":"literal_string \"only pause guardian and admin can pause\""},"value":"only pause guardian and admin can pause"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5e020e1a96b4ab4ba411c1975849456615c80f16e98fad3f52c3497dacd698b6","typeString":"literal_string \"only pause guardian and admin can pause\""}],"id":10218,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"59596:7:13","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":10227,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"59596:99:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10228,"nodeType":"ExpressionStatement","src":"59596:99:13"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10235,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":10230,"name":"hasAdminRights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13024,"src":"59713:14:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":10231,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"59713:16:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":10232,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10203,"src":"59733:5:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"74727565","id":10233,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"59742:4:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"59733:13:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"59713:33:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"6f6e6c792061646d696e2063616e20756e7061757365","id":10236,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"59748:24:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_591a1484d16116f5d48f25e1321d80627bc17b2d3f0d7384d855c565fac570fe","typeString":"literal_string \"only admin can unpause\""},"value":"only admin can unpause"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_591a1484d16116f5d48f25e1321d80627bc17b2d3f0d7384d855c565fac570fe","typeString":"literal_string \"only admin can unpause\""}],"id":10229,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"59705:7:13","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":10237,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"59705:68:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10238,"nodeType":"ExpressionStatement","src":"59705:68:13"},{"expression":{"argumentTypes":null,"id":10245,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":10239,"name":"borrowGuardianPaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13113,"src":"59784:20:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":10243,"indexExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":10241,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10201,"src":"59813:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":10240,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"59805:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":10242,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"59805:15:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"59784:37:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":10244,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10203,"src":"59824:5:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"59784:45:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10246,"nodeType":"ExpressionStatement","src":"59784:45:13"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":10248,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10201,"src":"59857:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},{"argumentTypes":null,"hexValue":"426f72726f77","id":10249,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"59865:8:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_7be2dfa0d0bbc9b229c88acd70a4e76511e2d12d8821c5955d8b5d57fd4c5944","typeString":"literal_string \"Borrow\""},"value":"Borrow"},{"argumentTypes":null,"id":10250,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10203,"src":"59875:5:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},{"typeIdentifier":"t_stringliteral_7be2dfa0d0bbc9b229c88acd70a4e76511e2d12d8821c5955d8b5d57fd4c5944","typeString":"literal_string \"Borrow\""},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":10247,"name":"ActionPaused","nodeType":"Identifier","overloadedDeclarations":[6914,6922],"referencedDeclaration":6922,"src":"59844:12:13","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_contract$_CToken_$6186_$_t_string_memory_ptr_$_t_bool_$returns$__$","typeString":"function (contract CToken,string memory,bool)"}},"id":10251,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"59844:37:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10252,"nodeType":"EmitStatement","src":"59839:42:13"},{"expression":{"argumentTypes":null,"id":10253,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10203,"src":"59898:5:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":10207,"id":10254,"nodeType":"Return","src":"59891:12:13"}]},"documentation":null,"id":10256,"implemented":true,"kind":"function","modifiers":[],"name":"_setBorrowPaused","nodeType":"FunctionDefinition","parameters":{"id":10204,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10201,"name":"cToken","nodeType":"VariableDeclaration","scope":10256,"src":"59441:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},"typeName":{"contractScope":null,"id":10200,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"59441:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"value":null,"visibility":"internal"},{"constant":false,"id":10203,"name":"state","nodeType":"VariableDeclaration","scope":10256,"src":"59456:10:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10202,"name":"bool","nodeType":"ElementaryTypeName","src":"59456:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"59440:27:13"},"returnParameters":{"id":10207,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10206,"name":"","nodeType":"VariableDeclaration","scope":10256,"src":"59484:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10205,"name":"bool","nodeType":"ElementaryTypeName","src":"59484:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"59483:6:13"},"scope":10531,"src":"59415:495:13","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":10295,"nodeType":"Block","src":"59978:303:13","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":10264,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"59996:3:13","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"59996:10:13","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":10266,"name":"pauseGuardian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13097,"src":"60010:13:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"59996:27:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":10268,"name":"hasAdminRights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13024,"src":"60027:14:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":10269,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"60027:16:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"59996:47:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"6f6e6c7920706175736520677561726469616e20616e642061646d696e2063616e207061757365","id":10271,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"60045:41:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_5e020e1a96b4ab4ba411c1975849456615c80f16e98fad3f52c3497dacd698b6","typeString":"literal_string \"only pause guardian and admin can pause\""},"value":"only pause guardian and admin can pause"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5e020e1a96b4ab4ba411c1975849456615c80f16e98fad3f52c3497dacd698b6","typeString":"literal_string \"only pause guardian and admin can pause\""}],"id":10263,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"59988:7:13","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":10272,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"59988:99:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10273,"nodeType":"ExpressionStatement","src":"59988:99:13"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10280,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":10275,"name":"hasAdminRights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13024,"src":"60105:14:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":10276,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"60105:16:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10279,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":10277,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10258,"src":"60125:5:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"74727565","id":10278,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"60134:4:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"60125:13:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"60105:33:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"6f6e6c792061646d696e2063616e20756e7061757365","id":10281,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"60140:24:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_591a1484d16116f5d48f25e1321d80627bc17b2d3f0d7384d855c565fac570fe","typeString":"literal_string \"only admin can unpause\""},"value":"only admin can unpause"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_591a1484d16116f5d48f25e1321d80627bc17b2d3f0d7384d855c565fac570fe","typeString":"literal_string \"only admin can unpause\""}],"id":10274,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"60097:7:13","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":10282,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"60097:68:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10283,"nodeType":"ExpressionStatement","src":"60097:68:13"},{"expression":{"argumentTypes":null,"id":10286,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":10284,"name":"transferGuardianPaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13103,"src":"60176:22:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":10285,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10258,"src":"60201:5:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"60176:30:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10287,"nodeType":"ExpressionStatement","src":"60176:30:13"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"5472616e73666572","id":10289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"60234:10:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_f099cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9","typeString":"literal_string \"Transfer\""},"value":"Transfer"},{"argumentTypes":null,"id":10290,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10258,"src":"60246:5:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_f099cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9","typeString":"literal_string \"Transfer\""},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":10288,"name":"ActionPaused","nodeType":"Identifier","overloadedDeclarations":[6914,6922],"referencedDeclaration":6914,"src":"60221:12:13","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_bool_$returns$__$","typeString":"function (string memory,bool)"}},"id":10291,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"60221:31:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10292,"nodeType":"EmitStatement","src":"60216:36:13"},{"expression":{"argumentTypes":null,"id":10293,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10258,"src":"60269:5:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":10262,"id":10294,"nodeType":"Return","src":"60262:12:13"}]},"documentation":null,"id":10296,"implemented":true,"kind":"function","modifiers":[],"name":"_setTransferPaused","nodeType":"FunctionDefinition","parameters":{"id":10259,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10258,"name":"state","nodeType":"VariableDeclaration","scope":10296,"src":"59944:10:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10257,"name":"bool","nodeType":"ElementaryTypeName","src":"59944:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"59943:12:13"},"returnParameters":{"id":10262,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10261,"name":"","nodeType":"VariableDeclaration","scope":10296,"src":"59972:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10260,"name":"bool","nodeType":"ElementaryTypeName","src":"59972:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"59971:6:13"},"scope":10531,"src":"59916:365:13","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":10335,"nodeType":"Block","src":"60346:297:13","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10310,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10307,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":10304,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"60364:3:13","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"60364:10:13","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":10306,"name":"pauseGuardian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13097,"src":"60378:13:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"60364:27:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":10308,"name":"hasAdminRights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13024,"src":"60395:14:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":10309,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"60395:16:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"60364:47:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"6f6e6c7920706175736520677561726469616e20616e642061646d696e2063616e207061757365","id":10311,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"60413:41:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_5e020e1a96b4ab4ba411c1975849456615c80f16e98fad3f52c3497dacd698b6","typeString":"literal_string \"only pause guardian and admin can pause\""},"value":"only pause guardian and admin can pause"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5e020e1a96b4ab4ba411c1975849456615c80f16e98fad3f52c3497dacd698b6","typeString":"literal_string \"only pause guardian and admin can pause\""}],"id":10303,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"60356:7:13","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":10312,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"60356:99:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10313,"nodeType":"ExpressionStatement","src":"60356:99:13"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10320,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":10315,"name":"hasAdminRights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13024,"src":"60473:14:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":10316,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"60473:16:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":10317,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10298,"src":"60493:5:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"74727565","id":10318,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"60502:4:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"60493:13:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"60473:33:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"6f6e6c792061646d696e2063616e20756e7061757365","id":10321,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"60508:24:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_591a1484d16116f5d48f25e1321d80627bc17b2d3f0d7384d855c565fac570fe","typeString":"literal_string \"only admin can unpause\""},"value":"only admin can unpause"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_591a1484d16116f5d48f25e1321d80627bc17b2d3f0d7384d855c565fac570fe","typeString":"literal_string \"only admin can unpause\""}],"id":10314,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"60465:7:13","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":10322,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"60465:68:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10323,"nodeType":"ExpressionStatement","src":"60465:68:13"},{"expression":{"argumentTypes":null,"id":10326,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":10324,"name":"seizeGuardianPaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13105,"src":"60544:19:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":10325,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10298,"src":"60566:5:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"60544:27:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10327,"nodeType":"ExpressionStatement","src":"60544:27:13"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"5365697a65","id":10329,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"60599:7:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_5c1f74cea61207c2a1a5566895b9d1152af4e3bee017489720ca70120db76661","typeString":"literal_string \"Seize\""},"value":"Seize"},{"argumentTypes":null,"id":10330,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10298,"src":"60608:5:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_5c1f74cea61207c2a1a5566895b9d1152af4e3bee017489720ca70120db76661","typeString":"literal_string \"Seize\""},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":10328,"name":"ActionPaused","nodeType":"Identifier","overloadedDeclarations":[6914,6922],"referencedDeclaration":6914,"src":"60586:12:13","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_bool_$returns$__$","typeString":"function (string memory,bool)"}},"id":10331,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"60586:28:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10332,"nodeType":"EmitStatement","src":"60581:33:13"},{"expression":{"argumentTypes":null,"id":10333,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10298,"src":"60631:5:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":10302,"id":10334,"nodeType":"Return","src":"60624:12:13"}]},"documentation":null,"id":10336,"implemented":true,"kind":"function","modifiers":[],"name":"_setSeizePaused","nodeType":"FunctionDefinition","parameters":{"id":10299,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10298,"name":"state","nodeType":"VariableDeclaration","scope":10336,"src":"60312:10:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10297,"name":"bool","nodeType":"ElementaryTypeName","src":"60312:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"60311:12:13"},"returnParameters":{"id":10302,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10301,"name":"","nodeType":"VariableDeclaration","scope":10336,"src":"60340:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10300,"name":"bool","nodeType":"ElementaryTypeName","src":"60340:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"60339:6:13"},"scope":10531,"src":"60287:356:13","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":10389,"nodeType":"Block","src":"60696:400:13","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"components":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10351,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"id":10347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":10342,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"60715:3:13","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"60715:10:13","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":10345,"name":"fuseAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12990,"src":"60737:9:13","typeDescriptions":{"typeIdentifier":"t_contract$_IFuseFeeDistributor_$17368","typeString":"contract IFuseFeeDistributor"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IFuseFeeDistributor_$17368","typeString":"contract IFuseFeeDistributor"}],"id":10344,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"60729:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":10346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"60729:18:13","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"60715:32:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":10348,"name":"unitroller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10338,"src":"60751:10:13","typeDescriptions":{"typeIdentifier":"t_contract$_Unitroller_$22368","typeString":"contract Unitroller"}},"id":10349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"fuseAdminHasRights","nodeType":"MemberAccess","referencedDeclaration":12997,"src":"60751:29:13","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bool_$","typeString":"function () view external returns (bool)"}},"id":10350,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"60751:31:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"60715:67:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":10352,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"60714:69:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"argumentTypes":null,"components":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10362,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10358,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":10353,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"60788:3:13","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10354,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"60788:10:13","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":10355,"name":"unitroller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10338,"src":"60802:10:13","typeDescriptions":{"typeIdentifier":"t_contract$_Unitroller_$22368","typeString":"contract Unitroller"}},"id":10356,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"admin","nodeType":"MemberAccess","referencedDeclaration":12992,"src":"60802:16:13","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":10357,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"60802:18:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"60788:32:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":10359,"name":"unitroller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10338,"src":"60824:10:13","typeDescriptions":{"typeIdentifier":"t_contract$_Unitroller_$22368","typeString":"contract Unitroller"}},"id":10360,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"adminHasRights","nodeType":"MemberAccess","referencedDeclaration":13000,"src":"60824:25:13","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bool_$","typeString":"function () view external returns (bool)"}},"id":10361,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"60824:27:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"60788:63:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":10363,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"60787:65:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"60714:138:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"6f6e6c7920756e6974726f6c6c65722061646d696e2063616e206368616e676520627261696e73","id":10365,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"60854:41:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_f707df4514ea5b5fb8028d4563616eaaee14c4e2dd4bd81e2c8201e4cb9f9bb3","typeString":"literal_string \"only unitroller admin can change brains\""},"value":"only unitroller admin can change brains"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f707df4514ea5b5fb8028d4563616eaaee14c4e2dd4bd81e2c8201e4cb9f9bb3","typeString":"literal_string \"only unitroller admin can change brains\""}],"id":10341,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"60706:7:13","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":10366,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"60706:190:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10367,"nodeType":"ExpressionStatement","src":"60706:190:13"},{"assignments":[10369],"declarations":[{"constant":false,"id":10369,"name":"changeStatus","nodeType":"VariableDeclaration","scope":10389,"src":"60907:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10368,"name":"uint","nodeType":"ElementaryTypeName","src":"60907:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":10373,"initialValue":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":10370,"name":"unitroller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10338,"src":"60927:10:13","typeDescriptions":{"typeIdentifier":"t_contract$_Unitroller_$22368","typeString":"contract Unitroller"}},"id":10371,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"_acceptImplementation","nodeType":"MemberAccess","referencedDeclaration":22108,"src":"60927:32:13","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$_t_uint256_$","typeString":"function () external returns (uint256)"}},"id":10372,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"60927:34:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"60907:54:13"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10377,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":10375,"name":"changeStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10369,"src":"60979:12:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":10376,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"60995:1:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"60979:17:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"6368616e6765206e6f7420617574686f72697a6564","id":10378,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"60998:23:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_c97af826dc35ad084eb38e82309aaa9eaac3c0d2d1e1571cb89b514117456352","typeString":"literal_string \"change not authorized\""},"value":"change not authorized"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c97af826dc35ad084eb38e82309aaa9eaac3c0d2d1e1571cb89b514117456352","typeString":"literal_string \"change not authorized\""}],"id":10374,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"60971:7:13","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":10379,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"60971:51:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10380,"nodeType":"ExpressionStatement","src":"60971:51:13"},{"expression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":10383,"name":"unitroller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10338,"src":"61053:10:13","typeDescriptions":{"typeIdentifier":"t_contract$_Unitroller_$22368","typeString":"contract Unitroller"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Unitroller_$22368","typeString":"contract Unitroller"}],"id":10382,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"61045:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":10384,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"61045:19:13","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":10381,"name":"Comptroller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10531,"src":"61033:11:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Comptroller_$10531_$","typeString":"type(contract Comptroller)"}},"id":10385,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"61033:32:13","typeDescriptions":{"typeIdentifier":"t_contract$_Comptroller_$10531","typeString":"contract Comptroller"}},"id":10386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"_becomeImplementation","nodeType":"MemberAccess","referencedDeclaration":10414,"src":"61033:54:13","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$__$","typeString":"function () external"}},"id":10387,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"61033:56:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10388,"nodeType":"ExpressionStatement","src":"61033:56:13"}]},"documentation":null,"id":10390,"implemented":true,"kind":"function","modifiers":[],"name":"_become","nodeType":"FunctionDefinition","parameters":{"id":10339,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10338,"name":"unitroller","nodeType":"VariableDeclaration","scope":10390,"src":"60666:21:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_Unitroller_$22368","typeString":"contract Unitroller"},"typeName":{"contractScope":null,"id":10337,"name":"Unitroller","nodeType":"UserDefinedTypeName","referencedDeclaration":22368,"src":"60666:10:13","typeDescriptions":{"typeIdentifier":"t_contract$_Unitroller_$22368","typeString":"contract Unitroller"}},"value":null,"visibility":"internal"}],"src":"60665:23:13"},"returnParameters":{"id":10340,"nodeType":"ParameterList","parameters":[],"src":"60696:0:13"},"scope":10531,"src":"60649:447:13","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":10413,"nodeType":"Block","src":"61144:244:13","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":10394,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"61162:3:13","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10395,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"61162:10:13","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":10396,"name":"comptrollerImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13026,"src":"61176:25:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"61162:39:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"6f6e6c7920696d706c656d656e746174696f6e206d61792063616c6c205f6265636f6d65496d706c656d656e746174696f6e","id":10398,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"61203:52:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_80d4686e25ebb4ac5c44d242488465e8707f865bb9e310cdb4fa482e5fbbd7e3","typeString":"literal_string \"only implementation may call _becomeImplementation\""},"value":"only implementation may call _becomeImplementation"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_80d4686e25ebb4ac5c44d242488465e8707f865bb9e310cdb4fa482e5fbbd7e3","typeString":"literal_string \"only implementation may call _becomeImplementation\""}],"id":10393,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"61154:7:13","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":10399,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"61154:102:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10400,"nodeType":"ExpressionStatement","src":"61154:102:13"},{"condition":{"argumentTypes":null,"id":10402,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"61271:23:13","subExpression":{"argumentTypes":null,"id":10401,"name":"_notEnteredInitialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13135,"src":"61272:22:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":10412,"nodeType":"IfStatement","src":"61267:115:13","trueBody":{"id":10411,"nodeType":"Block","src":"61296:86:13","statements":[{"expression":{"argumentTypes":null,"id":10405,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":10403,"name":"_notEntered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13133,"src":"61310:11:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"hexValue":"74727565","id":10404,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"61324:4:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"61310:18:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10406,"nodeType":"ExpressionStatement","src":"61310:18:13"},{"expression":{"argumentTypes":null,"id":10409,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":10407,"name":"_notEnteredInitialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13135,"src":"61342:22:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"hexValue":"74727565","id":10408,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"61367:4:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"61342:29:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10410,"nodeType":"ExpressionStatement","src":"61342:29:13"}]}}]},"documentation":null,"id":10414,"implemented":true,"kind":"function","modifiers":[],"name":"_becomeImplementation","nodeType":"FunctionDefinition","parameters":{"id":10391,"nodeType":"ParameterList","parameters":[],"src":"61132:2:13"},"returnParameters":{"id":10392,"nodeType":"ParameterList","parameters":[],"src":"61144:0:13"},"scope":10531,"src":"61102:286:13","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":{"id":10422,"nodeType":"Block","src":"61667:34:13","statements":[{"expression":{"argumentTypes":null,"id":10420,"name":"allMarkets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13063,"src":"61684:10:13","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_storage","typeString":"contract CToken[] storage ref"}},"functionReturnParameters":10419,"id":10421,"nodeType":"Return","src":"61677:17:13"}]},"documentation":"@notice Return all of the markets\n@dev The automatic getter may be used to access an individual market.\n@return The list of market addresses","id":10423,"implemented":true,"kind":"function","modifiers":[],"name":"getAllMarkets","nodeType":"FunctionDefinition","parameters":{"id":10415,"nodeType":"ParameterList","parameters":[],"src":"61626:2:13"},"returnParameters":{"id":10419,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10418,"name":"","nodeType":"VariableDeclaration","scope":10423,"src":"61650:15:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_memory_ptr","typeString":"contract CToken[]"},"typeName":{"baseType":{"contractScope":null,"id":10416,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"61650:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":10417,"length":null,"nodeType":"ArrayTypeName","src":"61650:8:13","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_storage_ptr","typeString":"contract CToken[]"}},"value":null,"visibility":"internal"}],"src":"61649:17:13"},"scope":10531,"src":"61604:97:13","stateMutability":"view","superFunction":null,"visibility":"public"},{"body":{"id":10431,"nodeType":"Block","src":"61965:36:13","statements":[{"expression":{"argumentTypes":null,"id":10429,"name":"allBorrowers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13070,"src":"61982:12:13","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"functionReturnParameters":10428,"id":10430,"nodeType":"Return","src":"61975:19:13"}]},"documentation":"@notice Return all of the borrowers\n@dev The automatic getter may be used to access an individual borrower.\n@return The list of borrower account addresses","id":10432,"implemented":true,"kind":"function","modifiers":[],"name":"getAllBorrowers","nodeType":"FunctionDefinition","parameters":{"id":10424,"nodeType":"ParameterList","parameters":[],"src":"61923:2:13"},"returnParameters":{"id":10428,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10427,"name":"","nodeType":"VariableDeclaration","scope":10432,"src":"61947:16:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":10425,"name":"address","nodeType":"ElementaryTypeName","src":"61947:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10426,"length":null,"nodeType":"ArrayTypeName","src":"61947:9:13","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"value":null,"visibility":"internal"}],"src":"61946:18:13"},"scope":10531,"src":"61899:102:13","stateMutability":"view","superFunction":null,"visibility":"public"},{"body":{"id":10440,"nodeType":"Block","src":"62272:38:13","statements":[{"expression":{"argumentTypes":null,"id":10438,"name":"whitelistArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13091,"src":"62289:14:13","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"functionReturnParameters":10437,"id":10439,"nodeType":"Return","src":"62282:21:13"}]},"documentation":"@notice Return all of the whitelist\n@dev The automatic getter may be used to access an individual whitelist status.\n@return The list of borrower account addresses","id":10441,"implemented":true,"kind":"function","modifiers":[],"name":"getWhitelist","nodeType":"FunctionDefinition","parameters":{"id":10433,"nodeType":"ParameterList","parameters":[],"src":"62228:2:13"},"returnParameters":{"id":10437,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10436,"name":"","nodeType":"VariableDeclaration","scope":10441,"src":"62254:16:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":10434,"name":"address","nodeType":"ElementaryTypeName","src":"62254:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10435,"length":null,"nodeType":"ArrayTypeName","src":"62254:9:13","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"value":null,"visibility":"internal"}],"src":"62253:18:13"},"scope":10531,"src":"62207:103:13","stateMutability":"view","superFunction":null,"visibility":"external"},{"body":{"id":10449,"nodeType":"Block","src":"62466:43:13","statements":[{"expression":{"argumentTypes":null,"id":10447,"name":"rewardsDistributors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13131,"src":"62483:19:13","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"functionReturnParameters":10446,"id":10448,"nodeType":"Return","src":"62476:26:13"}]},"documentation":"@notice Returns an array of all RewardsDistributors","id":10450,"implemented":true,"kind":"function","modifiers":[],"name":"getRewardsDistributors","nodeType":"FunctionDefinition","parameters":{"id":10442,"nodeType":"ParameterList","parameters":[],"src":"62422:2:13"},"returnParameters":{"id":10446,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10445,"name":"","nodeType":"VariableDeclaration","scope":10450,"src":"62448:16:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":10443,"name":"address","nodeType":"ElementaryTypeName","src":"62448:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10444,"length":null,"nodeType":"ArrayTypeName","src":"62448:9:13","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"value":null,"visibility":"internal"}],"src":"62447:18:13"},"scope":10531,"src":"62391:118:13","stateMutability":"view","superFunction":null,"visibility":"external"},{"body":{"id":10490,"nodeType":"Block","src":"62809:281:13","statements":[{"expression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10472,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":10457,"name":"markets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13060,"src":"62838:7:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Market_$13056_storage_$","typeString":"mapping(address => struct ComptrollerV2Storage.Market storage ref)"}},"id":10461,"indexExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":10459,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10452,"src":"62854:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":10458,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"62846:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":10460,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"62846:15:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"62838:24:13","typeDescriptions":{"typeIdentifier":"t_struct$_Market_$13056_storage","typeString":"struct ComptrollerV2Storage.Market storage ref"}},"id":10462,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"collateralFactorMantissa","nodeType":"MemberAccess","referencedDeclaration":13051,"src":"62838:49:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":10463,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"62891:1:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"62838:54:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":10465,"name":"borrowGuardianPaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13113,"src":"62909:20:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":10469,"indexExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":10467,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10452,"src":"62938:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":10466,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"62930:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":10468,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"62930:15:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"62909:37:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"74727565","id":10470,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"62950:4:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"62909:45:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"62838:116:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":10475,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10452,"src":"62981:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":10476,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"reserveFactorMantissa","nodeType":"MemberAccess","referencedDeclaration":6234,"src":"62981:28:13","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":10477,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"62981:30:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":10478,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10452,"src":"63013:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":10479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"adminFeeMantissa","nodeType":"MemberAccess","referencedDeclaration":6230,"src":"63013:23:13","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":10480,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"63013:25:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10474,"name":"add_","nodeType":"Identifier","overloadedDeclarations":[14579,14598,14614,14641],"referencedDeclaration":14614,"src":"62976:4:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":10481,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"62976:63:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":10482,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10452,"src":"63041:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":10483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"fuseFeeMantissa","nodeType":"MemberAccess","referencedDeclaration":6232,"src":"63041:22:13","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":10484,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"63041:24:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10473,"name":"add_","nodeType":"Identifier","overloadedDeclarations":[14579,14598,14614,14641],"referencedDeclaration":14614,"src":"62971:4:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":10485,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"62971:95:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"31653138","id":10486,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"63070:4:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"src":"62971:103:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"62838:236:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":10456,"id":10489,"nodeType":"Return","src":"62819:255:13"}]},"documentation":"@notice Returns true if the given cToken market has been deprecated\n@dev All borrows in a deprecated cToken market can be immediately liquidated\n@param cToken The market to check if deprecated","id":10491,"implemented":true,"kind":"function","modifiers":[],"name":"isDeprecated","nodeType":"FunctionDefinition","parameters":{"id":10453,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10452,"name":"cToken","nodeType":"VariableDeclaration","scope":10491,"src":"62767:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},"typeName":{"contractScope":null,"id":10451,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"62767:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"value":null,"visibility":"internal"}],"src":"62766:15:13"},"returnParameters":{"id":10456,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10455,"name":"","nodeType":"VariableDeclaration","scope":10491,"src":"62803:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10454,"name":"bool","nodeType":"ElementaryTypeName","src":"62803:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"62802:6:13"},"scope":10531,"src":"62745:345:13","stateMutability":"view","superFunction":null,"visibility":"public"},{"body":{"id":10512,"nodeType":"Block","src":"63387:205:13","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":10495,"name":"markets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13060,"src":"63405:7:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Market_$13056_storage_$","typeString":"mapping(address => struct ComptrollerV2Storage.Market storage ref)"}},"id":10498,"indexExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":10496,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"63413:3:13","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"63413:10:13","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"63405:19:13","typeDescriptions":{"typeIdentifier":"t_struct$_Market_$13056_storage","typeString":"struct ComptrollerV2Storage.Market storage ref"}},"id":10499,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"isListed","nodeType":"MemberAccess","referencedDeclaration":13049,"src":"63405:28:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"436f6d7074726f6c6c65723a5f6265666f72654e6f6e5265656e7472616e743a2063616c6c6572206e6f74206c6973746564206173206d61726b6574","id":10500,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"63435:62:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_96d64befc6f94693260c333b1f529746921ccbc0eae5f686b5b8bfeaeb0ce475","typeString":"literal_string \"Comptroller:_beforeNonReentrant: caller not listed as market\""},"value":"Comptroller:_beforeNonReentrant: caller not listed as market"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_96d64befc6f94693260c333b1f529746921ccbc0eae5f686b5b8bfeaeb0ce475","typeString":"literal_string \"Comptroller:_beforeNonReentrant: caller not listed as market\""}],"id":10494,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"63397:7:13","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":10501,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"63397:101:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10502,"nodeType":"ExpressionStatement","src":"63397:101:13"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":10504,"name":"_notEntered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13133,"src":"63516:11:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"72652d656e7465726564206163726f737320617373657473","id":10505,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"63529:26:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_4e0e38799ac376b73c2115b6e901f54e60d3504bb47b8c0481fde1f5644f1c5c","typeString":"literal_string \"re-entered across assets\""},"value":"re-entered across assets"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_4e0e38799ac376b73c2115b6e901f54e60d3504bb47b8c0481fde1f5644f1c5c","typeString":"literal_string \"re-entered across assets\""}],"id":10503,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"63508:7:13","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":10506,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"63508:48:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10507,"nodeType":"ExpressionStatement","src":"63508:48:13"},{"expression":{"argumentTypes":null,"id":10510,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":10508,"name":"_notEntered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13133,"src":"63566:11:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"hexValue":"66616c7365","id":10509,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"63580:5:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"63566:19:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10511,"nodeType":"ExpressionStatement","src":"63566:19:13"}]},"documentation":"@dev Called by cTokens before a non-reentrant function for pool-wide reentrancy prevention.\nPrevents pool-wide/cross-asset reentrancy exploits like AMP on Cream.","id":10513,"implemented":true,"kind":"function","modifiers":[],"name":"_beforeNonReentrant","nodeType":"FunctionDefinition","parameters":{"id":10492,"nodeType":"ParameterList","parameters":[],"src":"63375:2:13"},"returnParameters":{"id":10493,"nodeType":"ParameterList","parameters":[],"src":"63387:0:13"},"scope":10531,"src":"63347:245:13","stateMutability":"nonpayable","superFunction":12976,"visibility":"external"},{"body":{"id":10529,"nodeType":"Block","src":"63828:179:13","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":10517,"name":"markets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13060,"src":"63846:7:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Market_$13056_storage_$","typeString":"mapping(address => struct ComptrollerV2Storage.Market storage ref)"}},"id":10520,"indexExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":10518,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"63854:3:13","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"63854:10:13","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"63846:19:13","typeDescriptions":{"typeIdentifier":"t_struct$_Market_$13056_storage","typeString":"struct ComptrollerV2Storage.Market storage ref"}},"id":10521,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"isListed","nodeType":"MemberAccess","referencedDeclaration":13049,"src":"63846:28:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"436f6d7074726f6c6c65723a5f61667465724e6f6e5265656e7472616e743a2063616c6c6572206e6f74206c6973746564206173206d61726b6574","id":10522,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"63876:61:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_380ead25d1db22059205405379a89dc964f6626052ff5796d92e88ed5b0e2851","typeString":"literal_string \"Comptroller:_afterNonReentrant: caller not listed as market\""},"value":"Comptroller:_afterNonReentrant: caller not listed as market"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_380ead25d1db22059205405379a89dc964f6626052ff5796d92e88ed5b0e2851","typeString":"literal_string \"Comptroller:_afterNonReentrant: caller not listed as market\""}],"id":10516,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"63838:7:13","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":10523,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"63838:100:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10524,"nodeType":"ExpressionStatement","src":"63838:100:13"},{"expression":{"argumentTypes":null,"id":10527,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":10525,"name":"_notEntered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13133,"src":"63948:11:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"hexValue":"74727565","id":10526,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"63962:4:13","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"63948:18:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10528,"nodeType":"ExpressionStatement","src":"63948:18:13"}]},"documentation":"@dev Called by cTokens after a non-reentrant function for pool-wide reentrancy prevention.\nPrevents pool-wide/cross-asset reentrancy exploits like AMP on Cream.","id":10530,"implemented":true,"kind":"function","modifiers":[],"name":"_afterNonReentrant","nodeType":"FunctionDefinition","parameters":{"id":10514,"nodeType":"ParameterList","parameters":[],"src":"63816:2:13"},"returnParameters":{"id":10515,"nodeType":"ParameterList","parameters":[],"src":"63828:0:13"},"scope":10531,"src":"63789:218:13","stateMutability":"nonpayable","superFunction":12979,"visibility":"external"}],"scope":10532,"src":"533:63476:13"}],"src":"0:64010:13"},"id":13},"contracts/ComptrollerG1.sol":{"ast":{"absolutePath":"contracts/ComptrollerG1.sol","exportedSymbols":{"ComptrollerG1":[12745]},"id":12746,"nodeType":"SourceUnit","nodes":[{"id":10533,"literals":["solidity","0.5",".17"],"nodeType":"PragmaDirective","src":"0:23:14"},{"absolutePath":"contracts/CToken.sol","file":"./CToken.sol","id":10534,"nodeType":"ImportDirective","scope":12746,"sourceUnit":6187,"src":"25:22:14","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/ErrorReporter.sol","file":"./ErrorReporter.sol","id":10535,"nodeType":"ImportDirective","scope":12746,"sourceUnit":13850,"src":"48:29:14","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/Exponential.sol","file":"./Exponential.sol","id":10536,"nodeType":"ImportDirective","scope":12746,"sourceUnit":14372,"src":"78:27:14","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/PriceOracle.sol","file":"./PriceOracle.sol","id":10537,"nodeType":"ImportDirective","scope":12746,"sourceUnit":18690,"src":"106:27:14","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/ComptrollerInterface.sol","file":"./ComptrollerInterface.sol","id":10538,"nodeType":"ImportDirective","scope":12746,"sourceUnit":12981,"src":"134:36:14","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/ComptrollerStorage.sol","file":"./ComptrollerStorage.sol","id":10539,"nodeType":"ImportDirective","scope":12746,"sourceUnit":13137,"src":"171:34:14","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/Unitroller.sol","file":"./Unitroller.sol","id":10540,"nodeType":"ImportDirective","scope":12746,"sourceUnit":22369,"src":"206:26:14","symbolAliases":[],"unitAlias":""},{"baseContracts":[{"arguments":null,"baseName":{"contractScope":null,"id":10541,"name":"ComptrollerV1Storage","nodeType":"UserDefinedTypeName","referencedDeclaration":13045,"src":"500:20:14","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerV1Storage_$13045","typeString":"contract ComptrollerV1Storage"}},"id":10542,"nodeType":"InheritanceSpecifier","src":"500:20:14"},{"arguments":null,"baseName":{"contractScope":null,"id":10543,"name":"ComptrollerInterface","nodeType":"UserDefinedTypeName","referencedDeclaration":12980,"src":"522:20:14","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerInterface_$12980","typeString":"contract ComptrollerInterface"}},"id":10544,"nodeType":"InheritanceSpecifier","src":"522:20:14"},{"arguments":null,"baseName":{"contractScope":null,"id":10545,"name":"ComptrollerErrorReporter","nodeType":"UserDefinedTypeName","referencedDeclaration":13662,"src":"544:24:14","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerErrorReporter_$13662","typeString":"contract ComptrollerErrorReporter"}},"id":10546,"nodeType":"InheritanceSpecifier","src":"544:24:14"},{"arguments":null,"baseName":{"contractScope":null,"id":10547,"name":"Exponential","nodeType":"UserDefinedTypeName","referencedDeclaration":14371,"src":"570:11:14","typeDescriptions":{"typeIdentifier":"t_contract$_Exponential_$14371","typeString":"contract Exponential"}},"id":10548,"nodeType":"InheritanceSpecifier","src":"570:11:14"}],"contractDependencies":[6837,12980,13029,13045,13662,14371,15066],"contractKind":"contract","documentation":"@title Compound's Comptroller Contract\n@author Compound\n@dev This was the first version of the Comptroller brains.\n We keep it so our tests can continue to do the real-life behavior of upgrading from this logic forward.","fullyImplemented":false,"id":12745,"linearizedBaseContracts":[12745,14371,15066,6837,13662,12980,13045,13029],"name":"ComptrollerG1","nodeType":"ContractDefinition","nodes":[{"canonicalName":"ComptrollerG1.Market","id":10557,"members":[{"constant":false,"id":10550,"name":"isListed","nodeType":"VariableDeclaration","scope":10557,"src":"692:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10549,"name":"bool","nodeType":"ElementaryTypeName","src":"692:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},{"constant":false,"id":10552,"name":"collateralFactorMantissa","nodeType":"VariableDeclaration","scope":10557,"src":"985:29:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10551,"name":"uint","nodeType":"ElementaryTypeName","src":"985:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":10556,"name":"accountMembership","nodeType":"VariableDeclaration","scope":10557,"src":"1115:42:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":10555,"keyType":{"id":10553,"name":"address","nodeType":"ElementaryTypeName","src":"1123:7:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1115:24:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueType":{"id":10554,"name":"bool","nodeType":"ElementaryTypeName","src":"1134:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"value":null,"visibility":"internal"}],"name":"Market","nodeType":"StructDefinition","scope":12745,"src":"588:576:14","visibility":"public"},{"constant":false,"id":10561,"name":"markets","nodeType":"VariableDeclaration","scope":12745,"src":"1308:41:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Market_$10557_storage_$","typeString":"mapping(address => struct ComptrollerG1.Market)"},"typeName":{"id":10560,"keyType":{"id":10558,"name":"address","nodeType":"ElementaryTypeName","src":"1316:7:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1308:26:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Market_$10557_storage_$","typeString":"mapping(address => struct ComptrollerG1.Market)"},"valueType":{"contractScope":null,"id":10559,"name":"Market","nodeType":"UserDefinedTypeName","referencedDeclaration":10557,"src":"1327:6:14","typeDescriptions":{"typeIdentifier":"t_struct$_Market_$10557_storage_ptr","typeString":"struct ComptrollerG1.Market"}}},"value":null,"visibility":"public"},{"anonymous":false,"documentation":"@notice Emitted when an admin supports a market","id":10565,"name":"MarketListed","nodeType":"EventDefinition","parameters":{"id":10564,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10563,"indexed":false,"name":"cToken","nodeType":"VariableDeclaration","scope":10565,"src":"1446:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},"typeName":{"contractScope":null,"id":10562,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"1446:6:14","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"value":null,"visibility":"internal"}],"src":"1445:15:14"},"src":"1427:34:14"},{"anonymous":false,"documentation":"@notice Emitted when an account enters a market","id":10571,"name":"MarketEntered","nodeType":"EventDefinition","parameters":{"id":10570,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10567,"indexed":false,"name":"cToken","nodeType":"VariableDeclaration","scope":10571,"src":"1558:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},"typeName":{"contractScope":null,"id":10566,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"1558:6:14","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"value":null,"visibility":"internal"},{"constant":false,"id":10569,"indexed":false,"name":"account","nodeType":"VariableDeclaration","scope":10571,"src":"1573:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10568,"name":"address","nodeType":"ElementaryTypeName","src":"1573:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"1557:32:14"},"src":"1538:52:14"},{"anonymous":false,"documentation":"@notice Emitted when an account exits a market","id":10577,"name":"MarketExited","nodeType":"EventDefinition","parameters":{"id":10576,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10573,"indexed":false,"name":"cToken","nodeType":"VariableDeclaration","scope":10577,"src":"1685:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},"typeName":{"contractScope":null,"id":10572,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"1685:6:14","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"value":null,"visibility":"internal"},{"constant":false,"id":10575,"indexed":false,"name":"account","nodeType":"VariableDeclaration","scope":10577,"src":"1700:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10574,"name":"address","nodeType":"ElementaryTypeName","src":"1700:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"1684:32:14"},"src":"1666:51:14"},{"anonymous":false,"documentation":"@notice Emitted when close factor is changed by admin","id":10583,"name":"NewCloseFactor","nodeType":"EventDefinition","parameters":{"id":10582,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10579,"indexed":false,"name":"oldCloseFactorMantissa","nodeType":"VariableDeclaration","scope":10583,"src":"1821:27:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10578,"name":"uint","nodeType":"ElementaryTypeName","src":"1821:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":10581,"indexed":false,"name":"newCloseFactorMantissa","nodeType":"VariableDeclaration","scope":10583,"src":"1850:27:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10580,"name":"uint","nodeType":"ElementaryTypeName","src":"1850:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1820:58:14"},"src":"1800:79:14"},{"anonymous":false,"documentation":"@notice Emitted when a collateral factor is changed by admin","id":10591,"name":"NewCollateralFactor","nodeType":"EventDefinition","parameters":{"id":10590,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10585,"indexed":false,"name":"cToken","nodeType":"VariableDeclaration","scope":10591,"src":"1995:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},"typeName":{"contractScope":null,"id":10584,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"1995:6:14","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"value":null,"visibility":"internal"},{"constant":false,"id":10587,"indexed":false,"name":"oldCollateralFactorMantissa","nodeType":"VariableDeclaration","scope":10591,"src":"2010:32:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10586,"name":"uint","nodeType":"ElementaryTypeName","src":"2010:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":10589,"indexed":false,"name":"newCollateralFactorMantissa","nodeType":"VariableDeclaration","scope":10591,"src":"2044:32:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10588,"name":"uint","nodeType":"ElementaryTypeName","src":"2044:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1994:83:14"},"src":"1969:109:14"},{"anonymous":false,"documentation":"@notice Emitted when liquidation incentive is changed by admin","id":10597,"name":"NewLiquidationIncentive","nodeType":"EventDefinition","parameters":{"id":10596,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10593,"indexed":false,"name":"oldLiquidationIncentiveMantissa","nodeType":"VariableDeclaration","scope":10597,"src":"2200:36:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10592,"name":"uint","nodeType":"ElementaryTypeName","src":"2200:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":10595,"indexed":false,"name":"newLiquidationIncentiveMantissa","nodeType":"VariableDeclaration","scope":10597,"src":"2238:36:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10594,"name":"uint","nodeType":"ElementaryTypeName","src":"2238:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2199:76:14"},"src":"2170:106:14"},{"anonymous":false,"documentation":"@notice Emitted when maxAssets is changed by admin","id":10603,"name":"NewMaxAssets","nodeType":"EventDefinition","parameters":{"id":10602,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10599,"indexed":false,"name":"oldMaxAssets","nodeType":"VariableDeclaration","scope":10603,"src":"2375:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10598,"name":"uint","nodeType":"ElementaryTypeName","src":"2375:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":10601,"indexed":false,"name":"newMaxAssets","nodeType":"VariableDeclaration","scope":10603,"src":"2394:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10600,"name":"uint","nodeType":"ElementaryTypeName","src":"2394:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2374:38:14"},"src":"2356:57:14"},{"anonymous":false,"documentation":"@notice Emitted when price oracle is changed","id":10609,"name":"NewPriceOracle","nodeType":"EventDefinition","parameters":{"id":10608,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10605,"indexed":false,"name":"oldPriceOracle","nodeType":"VariableDeclaration","scope":10609,"src":"2508:26:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_PriceOracle_$18689","typeString":"contract PriceOracle"},"typeName":{"contractScope":null,"id":10604,"name":"PriceOracle","nodeType":"UserDefinedTypeName","referencedDeclaration":18689,"src":"2508:11:14","typeDescriptions":{"typeIdentifier":"t_contract$_PriceOracle_$18689","typeString":"contract PriceOracle"}},"value":null,"visibility":"internal"},{"constant":false,"id":10607,"indexed":false,"name":"newPriceOracle","nodeType":"VariableDeclaration","scope":10609,"src":"2536:26:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_PriceOracle_$18689","typeString":"contract PriceOracle"},"typeName":{"contractScope":null,"id":10606,"name":"PriceOracle","nodeType":"UserDefinedTypeName","referencedDeclaration":18689,"src":"2536:11:14","typeDescriptions":{"typeIdentifier":"t_contract$_PriceOracle_$18689","typeString":"contract PriceOracle"}},"value":null,"visibility":"internal"}],"src":"2507:56:14"},"src":"2487:77:14"},{"constant":true,"id":10612,"name":"closeFactorMinMantissa","nodeType":"VariableDeclaration","scope":12745,"src":"2638:43:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10610,"name":"uint","nodeType":"ElementaryTypeName","src":"2638:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"argumentTypes":null,"hexValue":"35653136","id":10611,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2677:4:14","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_50000000000000000_by_1","typeString":"int_const 50000000000000000"},"value":"5e16"},"visibility":"internal"},{"constant":true,"id":10615,"name":"closeFactorMaxMantissa","nodeType":"VariableDeclaration","scope":12745,"src":"2750:43:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10613,"name":"uint","nodeType":"ElementaryTypeName","src":"2750:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"argumentTypes":null,"hexValue":"39653137","id":10614,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2789:4:14","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_900000000000000000_by_1","typeString":"int_const 900000000000000000"},"value":"9e17"},"visibility":"internal"},{"constant":true,"id":10618,"name":"collateralFactorMaxMantissa","nodeType":"VariableDeclaration","scope":12745,"src":"2864:48:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10616,"name":"uint","nodeType":"ElementaryTypeName","src":"2864:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"argumentTypes":null,"hexValue":"39653137","id":10617,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2908:4:14","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_900000000000000000_by_1","typeString":"int_const 900000000000000000"},"value":"9e17"},"visibility":"internal"},{"constant":true,"id":10621,"name":"liquidationIncentiveMinMantissa","nodeType":"VariableDeclaration","scope":12745,"src":"2994:59:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10619,"name":"uint","nodeType":"ElementaryTypeName","src":"2994:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"argumentTypes":null,"id":10620,"name":"mantissaOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14387,"src":"3042:11:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":true,"id":10624,"name":"liquidationIncentiveMaxMantissa","nodeType":"VariableDeclaration","scope":12745,"src":"3131:53:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10622,"name":"uint","nodeType":"ElementaryTypeName","src":"3131:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"argumentTypes":null,"hexValue":"3135653137","id":10623,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3179:5:14","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1500000000000000000_by_1","typeString":"int_const 1500000000000000000"},"value":"15e17"},"visibility":"internal"},{"body":{"id":10632,"nodeType":"Block","src":"3219:35:14","statements":[{"expression":{"argumentTypes":null,"id":10630,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":10627,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12992,"src":"3229:5:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":10628,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"3237:3:14","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10629,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"3237:10:14","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"3229:18:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10631,"nodeType":"ExpressionStatement","src":"3229:18:14"}]},"documentation":null,"id":10633,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":10625,"nodeType":"ParameterList","parameters":[],"src":"3209:2:14"},"returnParameters":{"id":10626,"nodeType":"ParameterList","parameters":[],"src":"3219:0:14"},"scope":12745,"src":"3198:56:14","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":10651,"nodeType":"Block","src":"3582:92:14","statements":[{"assignments":[10644],"declarations":[{"constant":false,"id":10644,"name":"assetsIn","nodeType":"VariableDeclaration","scope":10651,"src":"3592:24:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_memory_ptr","typeString":"contract CToken[]"},"typeName":{"baseType":{"contractScope":null,"id":10642,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"3592:6:14","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":10643,"length":null,"nodeType":"ArrayTypeName","src":"3592:8:14","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_storage_ptr","typeString":"contract CToken[]"}},"value":null,"visibility":"internal"}],"id":10648,"initialValue":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":10645,"name":"accountAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13044,"src":"3619:13:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_array$_t_contract$_CToken_$6186_$dyn_storage_$","typeString":"mapping(address => contract CToken[] storage ref)"}},"id":10647,"indexExpression":{"argumentTypes":null,"id":10646,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10635,"src":"3633:7:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3619:22:14","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_storage","typeString":"contract CToken[] storage ref"}},"nodeType":"VariableDeclarationStatement","src":"3592:49:14"},{"expression":{"argumentTypes":null,"id":10649,"name":"assetsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10644,"src":"3659:8:14","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_memory_ptr","typeString":"contract CToken[] memory"}},"functionReturnParameters":10640,"id":10650,"nodeType":"Return","src":"3652:15:14"}]},"documentation":"@notice Returns the assets an account has entered\n@param account The address of the account to pull assets for\n@return A dynamic list with the assets the account has entered","id":10652,"implemented":true,"kind":"function","modifiers":[],"name":"getAssetsIn","nodeType":"FunctionDefinition","parameters":{"id":10636,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10635,"name":"account","nodeType":"VariableDeclaration","scope":10652,"src":"3525:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10634,"name":"address","nodeType":"ElementaryTypeName","src":"3525:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"3524:17:14"},"returnParameters":{"id":10640,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10639,"name":"","nodeType":"VariableDeclaration","scope":10652,"src":"3565:15:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_memory_ptr","typeString":"contract CToken[]"},"typeName":{"baseType":{"contractScope":null,"id":10637,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"3565:6:14","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":10638,"length":null,"nodeType":"ArrayTypeName","src":"3565:8:14","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_storage_ptr","typeString":"contract CToken[]"}},"value":null,"visibility":"internal"}],"src":"3564:17:14"},"scope":12745,"src":"3504:170:14","stateMutability":"view","superFunction":null,"visibility":"external"},{"body":{"id":10670,"nodeType":"Block","src":"4029:75:14","statements":[{"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":10661,"name":"markets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10561,"src":"4046:7:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Market_$10557_storage_$","typeString":"mapping(address => struct ComptrollerG1.Market storage ref)"}},"id":10665,"indexExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":10663,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10656,"src":"4062:6:14","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":10662,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4054:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":10664,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4054:15:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4046:24:14","typeDescriptions":{"typeIdentifier":"t_struct$_Market_$10557_storage","typeString":"struct ComptrollerG1.Market storage ref"}},"id":10666,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"accountMembership","nodeType":"MemberAccess","referencedDeclaration":10556,"src":"4046:42:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":10668,"indexExpression":{"argumentTypes":null,"id":10667,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10654,"src":"4089:7:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4046:51:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":10660,"id":10669,"nodeType":"Return","src":"4039:58:14"}]},"documentation":"@notice Returns whether the given account is entered in the given asset\n@param account The address of the account to check\n@param cToken The cToken to check\n@return True if the account is in the asset, otherwise false.","id":10671,"implemented":true,"kind":"function","modifiers":[],"name":"checkMembership","nodeType":"FunctionDefinition","parameters":{"id":10657,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10654,"name":"account","nodeType":"VariableDeclaration","scope":10671,"src":"3968:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10653,"name":"address","nodeType":"ElementaryTypeName","src":"3968:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":10656,"name":"cToken","nodeType":"VariableDeclaration","scope":10671,"src":"3985:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},"typeName":{"contractScope":null,"id":10655,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"3985:6:14","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"value":null,"visibility":"internal"}],"src":"3967:32:14"},"returnParameters":{"id":10660,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10659,"name":"","nodeType":"VariableDeclaration","scope":10671,"src":"4023:4:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10658,"name":"bool","nodeType":"ElementaryTypeName","src":"4023:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"4022:6:14"},"scope":12745,"src":"3943:161:14","stateMutability":"view","superFunction":null,"visibility":"external"},{"body":{"id":10810,"nodeType":"Block","src":"4442:1535:14","statements":[{"assignments":[10681],"declarations":[{"constant":false,"id":10681,"name":"len","nodeType":"VariableDeclaration","scope":10810,"src":"4452:8:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10680,"name":"uint","nodeType":"ElementaryTypeName","src":"4452:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":10684,"initialValue":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":10682,"name":"cTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10674,"src":"4463:7:14","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":10683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"4463:14:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4452:25:14"},{"assignments":[10688],"declarations":[{"constant":false,"id":10688,"name":"results","nodeType":"VariableDeclaration","scope":10810,"src":"4488:21:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":10686,"name":"uint","nodeType":"ElementaryTypeName","src":"4488:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10687,"length":null,"nodeType":"ArrayTypeName","src":"4488:6:14","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"value":null,"visibility":"internal"}],"id":10694,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":10692,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10681,"src":"4523:3:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10691,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"4512:10:14","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":10689,"name":"uint","nodeType":"ElementaryTypeName","src":"4516:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10690,"length":null,"nodeType":"ArrayTypeName","src":"4516:6:14","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":10693,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4512:15:14","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"4488:39:14"},{"body":{"id":10806,"nodeType":"Block","src":"4568:1378:14","statements":[{"assignments":[10706],"declarations":[{"constant":false,"id":10706,"name":"cToken","nodeType":"VariableDeclaration","scope":10806,"src":"4582:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},"typeName":{"contractScope":null,"id":10705,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"4582:6:14","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"value":null,"visibility":"internal"}],"id":10712,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":10708,"name":"cTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10674,"src":"4605:7:14","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":10710,"indexExpression":{"argumentTypes":null,"id":10709,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10696,"src":"4613:1:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4605:10:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10707,"name":"CToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6186,"src":"4598:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CToken_$6186_$","typeString":"type(contract CToken)"}},"id":10711,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4598:18:14","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"nodeType":"VariableDeclarationStatement","src":"4582:34:14"},{"assignments":[10714],"declarations":[{"constant":false,"id":10714,"name":"marketToJoin","nodeType":"VariableDeclaration","scope":10806,"src":"4630:27:14","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Market_$10557_storage_ptr","typeString":"struct ComptrollerG1.Market"},"typeName":{"contractScope":null,"id":10713,"name":"Market","nodeType":"UserDefinedTypeName","referencedDeclaration":10557,"src":"4630:6:14","typeDescriptions":{"typeIdentifier":"t_struct$_Market_$10557_storage_ptr","typeString":"struct ComptrollerG1.Market"}},"value":null,"visibility":"internal"}],"id":10720,"initialValue":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":10715,"name":"markets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10561,"src":"4660:7:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Market_$10557_storage_$","typeString":"mapping(address => struct ComptrollerG1.Market storage ref)"}},"id":10719,"indexExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":10717,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10706,"src":"4676:6:14","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":10716,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4668:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":10718,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4668:15:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4660:24:14","typeDescriptions":{"typeIdentifier":"t_struct$_Market_$10557_storage","typeString":"struct ComptrollerG1.Market storage ref"}},"nodeType":"VariableDeclarationStatement","src":"4630:54:14"},{"condition":{"argumentTypes":null,"id":10723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4703:22:14","subExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":10721,"name":"marketToJoin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10714,"src":"4704:12:14","typeDescriptions":{"typeIdentifier":"t_struct$_Market_$10557_storage_ptr","typeString":"struct ComptrollerG1.Market storage pointer"}},"id":10722,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"isListed","nodeType":"MemberAccess","referencedDeclaration":10550,"src":"4704:21:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":10735,"nodeType":"IfStatement","src":"4699:196:14","trueBody":{"id":10734,"nodeType":"Block","src":"4727:168:14","statements":[{"expression":{"argumentTypes":null,"id":10731,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":10724,"name":"results","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10688,"src":"4812:7:14","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":10726,"indexExpression":{"argumentTypes":null,"id":10725,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10696,"src":"4820:1:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4812:10:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":10728,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"4830:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":10729,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"MARKET_NOT_LISTED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"4830:23:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":10727,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4825:4:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":10730,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4825:29:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4812:42:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10732,"nodeType":"ExpressionStatement","src":"4812:42:14"},{"id":10733,"nodeType":"Continue","src":"4872:8:14"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10742,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":10736,"name":"marketToJoin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10714,"src":"4913:12:14","typeDescriptions":{"typeIdentifier":"t_struct$_Market_$10557_storage_ptr","typeString":"struct ComptrollerG1.Market storage pointer"}},"id":10737,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"accountMembership","nodeType":"MemberAccess","referencedDeclaration":10556,"src":"4913:30:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":10740,"indexExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":10738,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"4944:3:14","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10739,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"4944:10:14","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4913:42:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"74727565","id":10741,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4959:4:14","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"4913:50:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":10754,"nodeType":"IfStatement","src":"4909:197:14","trueBody":{"id":10753,"nodeType":"Block","src":"4965:141:14","statements":[{"expression":{"argumentTypes":null,"id":10750,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":10743,"name":"results","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10688,"src":"5032:7:14","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":10745,"indexExpression":{"argumentTypes":null,"id":10744,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10696,"src":"5040:1:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5032:10:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":10747,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"5050:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":10748,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"5050:14:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":10746,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5045:4:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":10749,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5045:20:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5032:33:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10751,"nodeType":"ExpressionStatement","src":"5032:33:14"},{"id":10752,"nodeType":"Continue","src":"5083:8:14"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10761,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":10755,"name":"accountAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13044,"src":"5124:13:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_array$_t_contract$_CToken_$6186_$dyn_storage_$","typeString":"mapping(address => contract CToken[] storage ref)"}},"id":10758,"indexExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":10756,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"5138:3:14","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10757,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"5138:10:14","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5124:25:14","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_storage","typeString":"contract CToken[] storage ref"}},"id":10759,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"5124:32:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"argumentTypes":null,"id":10760,"name":"maxAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13039,"src":"5160:9:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5124:45:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":10773,"nodeType":"IfStatement","src":"5120:207:14","trueBody":{"id":10772,"nodeType":"Block","src":"5172:155:14","statements":[{"expression":{"argumentTypes":null,"id":10769,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":10762,"name":"results","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10688,"src":"5246:7:14","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":10764,"indexExpression":{"argumentTypes":null,"id":10763,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10696,"src":"5254:1:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5246:10:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":10766,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"5264:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":10767,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"TOO_MANY_ASSETS","nodeType":"MemberAccess","referencedDeclaration":null,"src":"5264:21:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":10765,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5259:4:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":10768,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5259:27:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5246:40:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10770,"nodeType":"ExpressionStatement","src":"5246:40:14"},{"id":10771,"nodeType":"Continue","src":"5304:8:14"}]}},{"expression":{"argumentTypes":null,"id":10781,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":10774,"name":"marketToJoin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10714,"src":"5733:12:14","typeDescriptions":{"typeIdentifier":"t_struct$_Market_$10557_storage_ptr","typeString":"struct ComptrollerG1.Market storage pointer"}},"id":10778,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"accountMembership","nodeType":"MemberAccess","referencedDeclaration":10556,"src":"5733:30:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":10779,"indexExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":10776,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"5764:3:14","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"5764:10:14","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5733:42:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"hexValue":"74727565","id":10780,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5778:4:14","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"5733:49:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10782,"nodeType":"ExpressionStatement","src":"5733:49:14"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":10788,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10706,"src":"5827:6:14","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":10783,"name":"accountAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13044,"src":"5796:13:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_array$_t_contract$_CToken_$6186_$dyn_storage_$","typeString":"mapping(address => contract CToken[] storage ref)"}},"id":10786,"indexExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":10784,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"5810:3:14","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10785,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"5810:10:14","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5796:25:14","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_storage","typeString":"contract CToken[] storage ref"}},"id":10787,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"push","nodeType":"MemberAccess","referencedDeclaration":null,"src":"5796:30:14","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_contract$_CToken_$6186_$returns$_t_uint256_$","typeString":"function (contract CToken) returns (uint256)"}},"id":10789,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5796:38:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10790,"nodeType":"ExpressionStatement","src":"5796:38:14"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":10792,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10706,"src":"5868:6:14","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":10793,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"5876:3:14","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10794,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"5876:10:14","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":10791,"name":"MarketEntered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10571,"src":"5854:13:14","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_contract$_CToken_$6186_$_t_address_$returns$__$","typeString":"function (contract CToken,address)"}},"id":10795,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5854:33:14","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10796,"nodeType":"EmitStatement","src":"5849:38:14"},{"expression":{"argumentTypes":null,"id":10804,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":10797,"name":"results","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10688,"src":"5902:7:14","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":10799,"indexExpression":{"argumentTypes":null,"id":10798,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10696,"src":"5910:1:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5902:10:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":10801,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"5920:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":10802,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"5920:14:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":10800,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5915:4:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":10803,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5915:20:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5902:33:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10805,"nodeType":"ExpressionStatement","src":"5902:33:14"}]},"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":10699,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10696,"src":"4554:1:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"id":10700,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10681,"src":"4558:3:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4554:7:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10807,"initializationExpression":{"assignments":[10696],"declarations":[{"constant":false,"id":10696,"name":"i","nodeType":"VariableDeclaration","scope":10807,"src":"4542:6:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10695,"name":"uint","nodeType":"ElementaryTypeName","src":"4542:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":10698,"initialValue":{"argumentTypes":null,"hexValue":"30","id":10697,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4551:1:14","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"4542:10:14"},"loopExpression":{"expression":{"argumentTypes":null,"id":10703,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"4563:3:14","subExpression":{"argumentTypes":null,"id":10702,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10696,"src":"4563:1:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10704,"nodeType":"ExpressionStatement","src":"4563:3:14"},"nodeType":"ForStatement","src":"4537:1409:14"},{"expression":{"argumentTypes":null,"id":10808,"name":"results","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10688,"src":"5963:7:14","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"functionReturnParameters":10679,"id":10809,"nodeType":"Return","src":"5956:14:14"}]},"documentation":"@notice Add assets to be included in account liquidity calculation\n@param cTokens The list of addresses of the cToken markets to be enabled\n@return Success indicator for whether each corresponding market was entered","id":10811,"implemented":true,"kind":"function","modifiers":[],"name":"enterMarkets","nodeType":"FunctionDefinition","parameters":{"id":10675,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10674,"name":"cTokens","nodeType":"VariableDeclaration","scope":10811,"src":"4385:24:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":10672,"name":"address","nodeType":"ElementaryTypeName","src":"4385:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10673,"length":null,"nodeType":"ArrayTypeName","src":"4385:9:14","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"value":null,"visibility":"internal"}],"src":"4384:26:14"},"returnParameters":{"id":10679,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10678,"name":"","nodeType":"VariableDeclaration","scope":10811,"src":"4427:13:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":10676,"name":"uint","nodeType":"ElementaryTypeName","src":"4427:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10677,"length":null,"nodeType":"ArrayTypeName","src":"4427:6:14","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"value":null,"visibility":"internal"}],"src":"4426:15:14"},"scope":12745,"src":"4363:1614:14","stateMutability":"nonpayable","superFunction":12759,"visibility":"public"},{"body":{"id":10989,"nodeType":"Block","src":"6429:2060:14","statements":[{"assignments":[10819],"declarations":[{"constant":false,"id":10819,"name":"cToken","nodeType":"VariableDeclaration","scope":10989,"src":"6439:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},"typeName":{"contractScope":null,"id":10818,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"6439:6:14","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"value":null,"visibility":"internal"}],"id":10823,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":10821,"name":"cTokenAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10813,"src":"6462:13:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10820,"name":"CToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6186,"src":"6455:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CToken_$6186_$","typeString":"type(contract CToken)"}},"id":10822,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6455:21:14","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"nodeType":"VariableDeclarationStatement","src":"6439:37:14"},{"assignments":[10825,10827,10829,null],"declarations":[{"constant":false,"id":10825,"name":"oErr","nodeType":"VariableDeclaration","scope":10989,"src":"6565:9:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10824,"name":"uint","nodeType":"ElementaryTypeName","src":"6565:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":10827,"name":"tokensHeld","nodeType":"VariableDeclaration","scope":10989,"src":"6576:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10826,"name":"uint","nodeType":"ElementaryTypeName","src":"6576:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":10829,"name":"amountOwed","nodeType":"VariableDeclaration","scope":10989,"src":"6593:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10828,"name":"uint","nodeType":"ElementaryTypeName","src":"6593:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},null],"id":10835,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":10832,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"6640:3:14","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10833,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"6640:10:14","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"argumentTypes":null,"id":10830,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10819,"src":"6614:6:14","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":10831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAccountSnapshot","nodeType":"MemberAccess","referencedDeclaration":2903,"src":"6614:25:14","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"function (address) view external returns (uint256,uint256,uint256,uint256)"}},"id":10834,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6614:37:14","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256,uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"6564:87:14"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":10837,"name":"oErr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10825,"src":"6669:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":10838,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6677:1:14","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6669:9:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"657869744d61726b65743a206765744163636f756e74536e617073686f74206661696c6564","id":10840,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6680:39:14","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_cafc76453fc83e3f10c72a8efc5040b77c059e2a8eb73233cb1b8ec3356ff222","typeString":"literal_string \"exitMarket: getAccountSnapshot failed\""},"value":"exitMarket: getAccountSnapshot failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cafc76453fc83e3f10c72a8efc5040b77c059e2a8eb73233cb1b8ec3356ff222","typeString":"literal_string \"exitMarket: getAccountSnapshot failed\""}],"id":10836,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"6661:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":10841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6661:59:14","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10842,"nodeType":"ExpressionStatement","src":"6661:59:14"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10845,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":10843,"name":"amountOwed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10829,"src":"6815:10:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"hexValue":"30","id":10844,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6829:1:14","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6815:15:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":10854,"nodeType":"IfStatement","src":"6811:125:14","trueBody":{"id":10853,"nodeType":"Block","src":"6832:104:14","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":10847,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"6858:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":10848,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NONZERO_BORROW_BALANCE","nodeType":"MemberAccess","referencedDeclaration":null,"src":"6858:28:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":10849,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13603,"src":"6888:11:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13603_$","typeString":"type(enum ComptrollerErrorReporter.FailureInfo)"}},"id":10850,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"EXIT_MARKET_BALANCE_OWED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"6888:36:14","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}],"id":10846,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13635,"src":"6853:4:14","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13574_$_t_enum$_FailureInfo_$13603_$returns$_t_uint256_$","typeString":"function (enum ComptrollerErrorReporter.Error,enum ComptrollerErrorReporter.FailureInfo) returns (uint256)"}},"id":10851,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6853:72:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10817,"id":10852,"nodeType":"Return","src":"6846:79:14"}]}},{"assignments":[10856],"declarations":[{"constant":false,"id":10856,"name":"allowed","nodeType":"VariableDeclaration","scope":10989,"src":"7026:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10855,"name":"uint","nodeType":"ElementaryTypeName","src":"7026:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":10863,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":10858,"name":"cTokenAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10813,"src":"7063:13:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":10859,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"7078:3:14","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10860,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"7078:10:14","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"id":10861,"name":"tokensHeld","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10827,"src":"7090:10:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10857,"name":"redeemAllowedInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11144,"src":"7041:21:14","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,address,uint256) view returns (uint256)"}},"id":10862,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7041:60:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7026:75:14"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":10864,"name":"allowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10856,"src":"7115:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"hexValue":"30","id":10865,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7126:1:14","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7115:12:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":10876,"nodeType":"IfStatement","src":"7111:121:14","trueBody":{"id":10875,"nodeType":"Block","src":"7129:103:14","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":10868,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"7161:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":10869,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"REJECTION","nodeType":"MemberAccess","referencedDeclaration":null,"src":"7161:15:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":10870,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13603,"src":"7178:11:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13603_$","typeString":"type(enum ComptrollerErrorReporter.FailureInfo)"}},"id":10871,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"EXIT_MARKET_REJECTION","nodeType":"MemberAccess","referencedDeclaration":null,"src":"7178:33:14","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}},{"argumentTypes":null,"id":10872,"name":"allowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10856,"src":"7213:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10867,"name":"failOpaque","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13661,"src":"7150:10:14","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13574_$_t_enum$_FailureInfo_$13603_$_t_uint256_$returns$_t_uint256_$","typeString":"function (enum ComptrollerErrorReporter.Error,enum ComptrollerErrorReporter.FailureInfo,uint256) returns (uint256)"}},"id":10873,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7150:71:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10817,"id":10874,"nodeType":"Return","src":"7143:78:14"}]}},{"assignments":[10878],"declarations":[{"constant":false,"id":10878,"name":"marketToExit","nodeType":"VariableDeclaration","scope":10989,"src":"7242:27:14","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Market_$10557_storage_ptr","typeString":"struct ComptrollerG1.Market"},"typeName":{"contractScope":null,"id":10877,"name":"Market","nodeType":"UserDefinedTypeName","referencedDeclaration":10557,"src":"7242:6:14","typeDescriptions":{"typeIdentifier":"t_struct$_Market_$10557_storage_ptr","typeString":"struct ComptrollerG1.Market"}},"value":null,"visibility":"internal"}],"id":10884,"initialValue":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":10879,"name":"markets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10561,"src":"7272:7:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Market_$10557_storage_$","typeString":"mapping(address => struct ComptrollerG1.Market storage ref)"}},"id":10883,"indexExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":10881,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10819,"src":"7288:6:14","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":10880,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7280:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":10882,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7280:15:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7272:24:14","typeDescriptions":{"typeIdentifier":"t_struct$_Market_$10557_storage","typeString":"struct ComptrollerG1.Market storage ref"}},"nodeType":"VariableDeclarationStatement","src":"7242:54:14"},{"condition":{"argumentTypes":null,"id":10890,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"7386:43:14","subExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":10885,"name":"marketToExit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10878,"src":"7387:12:14","typeDescriptions":{"typeIdentifier":"t_struct$_Market_$10557_storage_ptr","typeString":"struct ComptrollerG1.Market storage pointer"}},"id":10886,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"accountMembership","nodeType":"MemberAccess","referencedDeclaration":10556,"src":"7387:30:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":10889,"indexExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":10887,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"7418:3:14","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10888,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"7418:10:14","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7387:42:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":10897,"nodeType":"IfStatement","src":"7382:101:14","trueBody":{"id":10896,"nodeType":"Block","src":"7431:52:14","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":10892,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"7457:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":10893,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"7457:14:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":10891,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7452:4:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":10894,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7452:20:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10817,"id":10895,"nodeType":"Return","src":"7445:27:14"}]}},{"expression":{"argumentTypes":null,"id":10903,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"7546:49:14","subExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":10898,"name":"marketToExit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10878,"src":"7553:12:14","typeDescriptions":{"typeIdentifier":"t_struct$_Market_$10557_storage_ptr","typeString":"struct ComptrollerG1.Market storage pointer"}},"id":10899,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"accountMembership","nodeType":"MemberAccess","referencedDeclaration":10556,"src":"7553:30:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":10902,"indexExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":10900,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"7584:3:14","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10901,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"7584:10:14","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7553:42:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10904,"nodeType":"ExpressionStatement","src":"7546:49:14"},{"assignments":[10908],"declarations":[{"constant":false,"id":10908,"name":"userAssetList","nodeType":"VariableDeclaration","scope":10989,"src":"7719:29:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_memory_ptr","typeString":"contract CToken[]"},"typeName":{"baseType":{"contractScope":null,"id":10906,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"7719:6:14","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":10907,"length":null,"nodeType":"ArrayTypeName","src":"7719:8:14","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_storage_ptr","typeString":"contract CToken[]"}},"value":null,"visibility":"internal"}],"id":10913,"initialValue":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":10909,"name":"accountAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13044,"src":"7751:13:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_array$_t_contract$_CToken_$6186_$dyn_storage_$","typeString":"mapping(address => contract CToken[] storage ref)"}},"id":10912,"indexExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":10910,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"7765:3:14","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"7765:10:14","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7751:25:14","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_storage","typeString":"contract CToken[] storage ref"}},"nodeType":"VariableDeclarationStatement","src":"7719:57:14"},{"assignments":[10915],"declarations":[{"constant":false,"id":10915,"name":"len","nodeType":"VariableDeclaration","scope":10989,"src":"7786:8:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10914,"name":"uint","nodeType":"ElementaryTypeName","src":"7786:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":10918,"initialValue":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":10916,"name":"userAssetList","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10908,"src":"7797:13:14","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_memory_ptr","typeString":"contract CToken[] memory"}},"id":10917,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"7797:20:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7786:31:14"},{"assignments":[10920],"declarations":[{"constant":false,"id":10920,"name":"assetIndex","nodeType":"VariableDeclaration","scope":10989,"src":"7827:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10919,"name":"uint","nodeType":"ElementaryTypeName","src":"7827:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":10922,"initialValue":{"argumentTypes":null,"id":10921,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10915,"src":"7845:3:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7827:21:14"},{"body":{"id":10945,"nodeType":"Block","src":"7889:126:14","statements":[{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},"id":10937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":10933,"name":"userAssetList","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10908,"src":"7907:13:14","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_memory_ptr","typeString":"contract CToken[] memory"}},"id":10935,"indexExpression":{"argumentTypes":null,"id":10934,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10924,"src":"7921:1:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7907:16:14","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":10936,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10819,"src":"7927:6:14","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"src":"7907:26:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":10944,"nodeType":"IfStatement","src":"7903:102:14","trueBody":{"id":10943,"nodeType":"Block","src":"7935:70:14","statements":[{"expression":{"argumentTypes":null,"id":10940,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":10938,"name":"assetIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10920,"src":"7953:10:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":10939,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10924,"src":"7966:1:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7953:14:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10941,"nodeType":"ExpressionStatement","src":"7953:14:14"},{"id":10942,"nodeType":"Break","src":"7985:5:14"}]}}]},"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10929,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":10927,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10924,"src":"7875:1:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"id":10928,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10915,"src":"7879:3:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7875:7:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10946,"initializationExpression":{"assignments":[10924],"declarations":[{"constant":false,"id":10924,"name":"i","nodeType":"VariableDeclaration","scope":10946,"src":"7863:6:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10923,"name":"uint","nodeType":"ElementaryTypeName","src":"7863:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":10926,"initialValue":{"argumentTypes":null,"hexValue":"30","id":10925,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7872:1:14","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"7863:10:14"},"loopExpression":{"expression":{"argumentTypes":null,"id":10931,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"7884:3:14","subExpression":{"argumentTypes":null,"id":10930,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10924,"src":"7884:1:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10932,"nodeType":"ExpressionStatement","src":"7884:3:14"},"nodeType":"ForStatement","src":"7858:157:14"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10950,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":10948,"name":"assetIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10920,"src":"8128:10:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"id":10949,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10915,"src":"8141:3:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8128:16:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":10947,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22539,"src":"8121:6:14","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":10951,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8121:24:14","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10952,"nodeType":"ExpressionStatement","src":"8121:24:14"},{"assignments":[10956],"declarations":[{"constant":false,"id":10956,"name":"storedList","nodeType":"VariableDeclaration","scope":10989,"src":"8244:27:14","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_storage_ptr","typeString":"contract CToken[]"},"typeName":{"baseType":{"contractScope":null,"id":10954,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"8244:6:14","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":10955,"length":null,"nodeType":"ArrayTypeName","src":"8244:8:14","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_storage_ptr","typeString":"contract CToken[]"}},"value":null,"visibility":"internal"}],"id":10961,"initialValue":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":10957,"name":"accountAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13044,"src":"8274:13:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_array$_t_contract$_CToken_$6186_$dyn_storage_$","typeString":"mapping(address => contract CToken[] storage ref)"}},"id":10960,"indexExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":10958,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"8288:3:14","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10959,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"8288:10:14","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8274:25:14","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_storage","typeString":"contract CToken[] storage ref"}},"nodeType":"VariableDeclarationStatement","src":"8244:55:14"},{"expression":{"argumentTypes":null,"id":10971,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":10962,"name":"storedList","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10956,"src":"8309:10:14","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_storage_ptr","typeString":"contract CToken[] storage pointer"}},"id":10964,"indexExpression":{"argumentTypes":null,"id":10963,"name":"assetIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10920,"src":"8320:10:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8309:22:14","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":10965,"name":"storedList","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10956,"src":"8334:10:14","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_storage_ptr","typeString":"contract CToken[] storage pointer"}},"id":10970,"indexExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10969,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":10966,"name":"storedList","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10956,"src":"8345:10:14","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_storage_ptr","typeString":"contract CToken[] storage pointer"}},"id":10967,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"8345:17:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"hexValue":"31","id":10968,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8365:1:14","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8345:21:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8334:33:14","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"src":"8309:58:14","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":10972,"nodeType":"ExpressionStatement","src":"8309:58:14"},{"expression":{"argumentTypes":null,"id":10976,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"8377:19:14","subExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":10973,"name":"storedList","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10956,"src":"8377:10:14","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_storage_ptr","typeString":"contract CToken[] storage pointer"}},"id":10975,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"8377:17:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10977,"nodeType":"ExpressionStatement","src":"8377:19:14"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":10979,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10819,"src":"8425:6:14","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":10980,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"8433:3:14","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10981,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"8433:10:14","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":10978,"name":"MarketExited","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10577,"src":"8412:12:14","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_contract$_CToken_$6186_$_t_address_$returns$__$","typeString":"function (contract CToken,address)"}},"id":10982,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8412:32:14","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10983,"nodeType":"EmitStatement","src":"8407:37:14"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":10985,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"8467:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":10986,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"8467:14:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":10984,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8462:4:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":10987,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8462:20:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10817,"id":10988,"nodeType":"Return","src":"8455:27:14"}]},"documentation":"@notice Removes asset from sender's account liquidity calculation\n@dev Sender must not have an outstanding borrow balance in the asset,\n or be providing neccessary collateral for an outstanding borrow.\n@param cTokenAddress The address of the asset to be removed\n@return Whether or not the account successfully exited the market","id":10990,"implemented":true,"kind":"function","modifiers":[],"name":"exitMarket","nodeType":"FunctionDefinition","parameters":{"id":10814,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10813,"name":"cTokenAddress","nodeType":"VariableDeclaration","scope":10990,"src":"6382:21:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10812,"name":"address","nodeType":"ElementaryTypeName","src":"6382:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"6381:23:14"},"returnParameters":{"id":10817,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10816,"name":"","nodeType":"VariableDeclaration","scope":10990,"src":"6423:4:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10815,"name":"uint","nodeType":"ElementaryTypeName","src":"6423:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"6422:6:14"},"scope":12745,"src":"6362:2127:14","stateMutability":"nonpayable","superFunction":12766,"visibility":"external"},{"body":{"id":11022,"nodeType":"Block","src":"9051:280:14","statements":[{"expression":{"argumentTypes":null,"id":11001,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10994,"src":"9061:6:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11002,"nodeType":"ExpressionStatement","src":"9061:6:14"},{"expression":{"argumentTypes":null,"id":11003,"name":"mintAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10996,"src":"9103:10:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11004,"nodeType":"ExpressionStatement","src":"9103:10:14"},{"condition":{"argumentTypes":null,"id":11009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"9150:25:14","subExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":11005,"name":"markets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10561,"src":"9151:7:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Market_$10557_storage_$","typeString":"mapping(address => struct ComptrollerG1.Market storage ref)"}},"id":11007,"indexExpression":{"argumentTypes":null,"id":11006,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10992,"src":"9159:6:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9151:15:14","typeDescriptions":{"typeIdentifier":"t_struct$_Market_$10557_storage","typeString":"struct ComptrollerG1.Market storage ref"}},"id":11008,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"isListed","nodeType":"MemberAccess","referencedDeclaration":10550,"src":"9151:24:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":11016,"nodeType":"IfStatement","src":"9146:92:14","trueBody":{"id":11015,"nodeType":"Block","src":"9177:61:14","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":11011,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"9203:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":11012,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"MARKET_NOT_LISTED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"9203:23:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":11010,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9198:4:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":11013,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9198:29:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11000,"id":11014,"nodeType":"Return","src":"9191:36:14"}]}},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":11018,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"9309:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":11019,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"9309:14:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":11017,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9304:4:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":11020,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9304:20:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11000,"id":11021,"nodeType":"Return","src":"9297:27:14"}]},"documentation":"@notice Checks if the account should be allowed to mint tokens in the given market\n@param cToken The market to verify the mint against\n@param minter The account which would get the minted tokens\n@param mintAmount The amount of underlying being supplied to the market in exchange for tokens\n@return 0 if the mint is allowed, otherwise a semi-opaque error code (See ErrorReporter.sol)","id":11023,"implemented":true,"kind":"function","modifiers":[],"name":"mintAllowed","nodeType":"FunctionDefinition","parameters":{"id":10997,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10992,"name":"cToken","nodeType":"VariableDeclaration","scope":11023,"src":"8978:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10991,"name":"address","nodeType":"ElementaryTypeName","src":"8978:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":10994,"name":"minter","nodeType":"VariableDeclaration","scope":11023,"src":"8994:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10993,"name":"address","nodeType":"ElementaryTypeName","src":"8994:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":10996,"name":"mintAmount","nodeType":"VariableDeclaration","scope":11023,"src":"9010:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10995,"name":"uint","nodeType":"ElementaryTypeName","src":"9010:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"8977:49:14"},"returnParameters":{"id":11000,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10999,"name":"","nodeType":"VariableDeclaration","scope":11023,"src":"9045:4:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10998,"name":"uint","nodeType":"ElementaryTypeName","src":"9045:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"9044:6:14"},"scope":12745,"src":"8957:374:14","stateMutability":"nonpayable","superFunction":12777,"visibility":"external"},{"body":{"id":11049,"nodeType":"Block","src":"9743:254:14","statements":[{"expression":{"argumentTypes":null,"id":11034,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11025,"src":"9753:6:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11035,"nodeType":"ExpressionStatement","src":"9753:6:14"},{"expression":{"argumentTypes":null,"id":11036,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11027,"src":"9795:6:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11037,"nodeType":"ExpressionStatement","src":"9795:6:14"},{"expression":{"argumentTypes":null,"id":11038,"name":"mintAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11029,"src":"9837:10:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11039,"nodeType":"ExpressionStatement","src":"9837:10:14"},{"expression":{"argumentTypes":null,"id":11040,"name":"mintTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11031,"src":"9879:10:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11041,"nodeType":"ExpressionStatement","src":"9879:10:14"},{"condition":{"argumentTypes":null,"hexValue":"66616c7365","id":11042,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9926:5:14","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"falseBody":null,"id":11048,"nodeType":"IfStatement","src":"9922:69:14","trueBody":{"id":11047,"nodeType":"Block","src":"9933:58:14","statements":[{"expression":{"argumentTypes":null,"id":11045,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":11043,"name":"maxAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13039,"src":"9947:9:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":11044,"name":"maxAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13039,"src":"9959:9:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9947:21:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11046,"nodeType":"ExpressionStatement","src":"9947:21:14"}]}}]},"documentation":"@notice Validates mint and reverts on rejection. May emit logs.\n@param cToken Asset being minted\n@param minter The address minting the tokens\n@param mintAmount The amount of the underlying asset being minted\n@param mintTokens The number of tokens being minted","id":11050,"implemented":true,"kind":"function","modifiers":[],"name":"mintVerify","nodeType":"FunctionDefinition","parameters":{"id":11032,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11025,"name":"cToken","nodeType":"VariableDeclaration","scope":11050,"src":"9668:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11024,"name":"address","nodeType":"ElementaryTypeName","src":"9668:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":11027,"name":"minter","nodeType":"VariableDeclaration","scope":11050,"src":"9684:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11026,"name":"address","nodeType":"ElementaryTypeName","src":"9684:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":11029,"name":"mintAmount","nodeType":"VariableDeclaration","scope":11050,"src":"9700:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11028,"name":"uint","nodeType":"ElementaryTypeName","src":"9700:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":11031,"name":"mintTokens","nodeType":"VariableDeclaration","scope":11050,"src":"9717:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11030,"name":"uint","nodeType":"ElementaryTypeName","src":"9717:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"9667:66:14"},"returnParameters":{"id":11033,"nodeType":"ParameterList","parameters":[],"src":"9743:0:14"},"scope":12745,"src":"9648:349:14","stateMutability":"nonpayable","superFunction":12801,"visibility":"external"},{"body":{"id":11067,"nodeType":"Block","src":"10539:77:14","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":11062,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11052,"src":"10578:6:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":11063,"name":"redeemer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11054,"src":"10586:8:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":11064,"name":"redeemTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11056,"src":"10596:12:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11061,"name":"redeemAllowedInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11144,"src":"10556:21:14","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,address,uint256) view returns (uint256)"}},"id":11065,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10556:53:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11060,"id":11066,"nodeType":"Return","src":"10549:60:14"}]},"documentation":"@notice Checks if the account should be allowed to redeem tokens in the given market\n@param cToken The market to verify the redeem against\n@param redeemer The account which would redeem the tokens\n@param redeemTokens The number of cTokens to exchange for the underlying asset in the market\n@return 0 if the redeem is allowed, otherwise a semi-opaque error code (See ErrorReporter.sol)","id":11068,"implemented":true,"kind":"function","modifiers":[],"name":"redeemAllowed","nodeType":"FunctionDefinition","parameters":{"id":11057,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11052,"name":"cToken","nodeType":"VariableDeclaration","scope":11068,"src":"10462:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11051,"name":"address","nodeType":"ElementaryTypeName","src":"10462:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":11054,"name":"redeemer","nodeType":"VariableDeclaration","scope":11068,"src":"10478:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11053,"name":"address","nodeType":"ElementaryTypeName","src":"10478:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":11056,"name":"redeemTokens","nodeType":"VariableDeclaration","scope":11068,"src":"10496:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11055,"name":"uint","nodeType":"ElementaryTypeName","src":"10496:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"10461:53:14"},"returnParameters":{"id":11060,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11059,"name":"","nodeType":"VariableDeclaration","scope":11068,"src":"10533:4:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11058,"name":"uint","nodeType":"ElementaryTypeName","src":"10533:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"10532:6:14"},"scope":12745,"src":"10439:177:14","stateMutability":"nonpayable","superFunction":12812,"visibility":"external"},{"body":{"id":11143,"nodeType":"Block","src":"10735:787:14","statements":[{"condition":{"argumentTypes":null,"id":11083,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"10749:25:14","subExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":11079,"name":"markets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10561,"src":"10750:7:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Market_$10557_storage_$","typeString":"mapping(address => struct ComptrollerG1.Market storage ref)"}},"id":11081,"indexExpression":{"argumentTypes":null,"id":11080,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11070,"src":"10758:6:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10750:15:14","typeDescriptions":{"typeIdentifier":"t_struct$_Market_$10557_storage","typeString":"struct ComptrollerG1.Market storage ref"}},"id":11082,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"isListed","nodeType":"MemberAccess","referencedDeclaration":10550,"src":"10750:24:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":11090,"nodeType":"IfStatement","src":"10745:92:14","trueBody":{"id":11089,"nodeType":"Block","src":"10776:61:14","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":11085,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"10802:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":11086,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"MARKET_NOT_LISTED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"10802:23:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":11084,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10797:4:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":11087,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10797:29:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11078,"id":11088,"nodeType":"Return","src":"10790:36:14"}]}},{"condition":{"argumentTypes":null,"id":11097,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"10993:44:14","subExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":11091,"name":"markets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10561,"src":"10994:7:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Market_$10557_storage_$","typeString":"mapping(address => struct ComptrollerG1.Market storage ref)"}},"id":11093,"indexExpression":{"argumentTypes":null,"id":11092,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11070,"src":"11002:6:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10994:15:14","typeDescriptions":{"typeIdentifier":"t_struct$_Market_$10557_storage","typeString":"struct ComptrollerG1.Market storage ref"}},"id":11094,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"accountMembership","nodeType":"MemberAccess","referencedDeclaration":10556,"src":"10994:33:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":11096,"indexExpression":{"argumentTypes":null,"id":11095,"name":"redeemer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11072,"src":"11028:8:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10994:43:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":11104,"nodeType":"IfStatement","src":"10989:102:14","trueBody":{"id":11103,"nodeType":"Block","src":"11039:52:14","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":11099,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"11065:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":11100,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"11065:14:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":11098,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11060:4:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":11101,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11060:20:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11078,"id":11102,"nodeType":"Return","src":"11053:27:14"}]}},{"assignments":[11106,null,11108],"declarations":[{"constant":false,"id":11106,"name":"err","nodeType":"VariableDeclaration","scope":11143,"src":"11193:9:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"},"typeName":{"contractScope":null,"id":11105,"name":"Error","nodeType":"UserDefinedTypeName","referencedDeclaration":13574,"src":"11193:5:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},"value":null,"visibility":"internal"},null,{"constant":false,"id":11108,"name":"shortfall","nodeType":"VariableDeclaration","scope":11143,"src":"11206:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11107,"name":"uint","nodeType":"ElementaryTypeName","src":"11206:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":11117,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":11110,"name":"redeemer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11072,"src":"11264:8:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":11112,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11070,"src":"11281:6:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11111,"name":"CToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6186,"src":"11274:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CToken_$6186_$","typeString":"type(contract CToken)"}},"id":11113,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11274:14:14","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},{"argumentTypes":null,"id":11114,"name":"redeemTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11074,"src":"11290:12:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"30","id":11115,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11304:1:14","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":11109,"name":"getHypotheticalAccountLiquidityInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12025,"src":"11224:39:14","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_contract$_CToken_$6186_$_t_uint256_$_t_uint256_$returns$_t_enum$_Error_$13574_$_t_uint256_$_t_uint256_$","typeString":"function (address,contract CToken,uint256,uint256) view returns (enum ComptrollerErrorReporter.Error,uint256,uint256)"}},"id":11116,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11224:82:14","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_Error_$13574_$_t_uint256_$_t_uint256_$","typeString":"tuple(enum ComptrollerErrorReporter.Error,uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"11192:114:14"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"},"id":11121,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":11118,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11106,"src":"11320:3:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":11119,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"11327:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":11120,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"11327:14:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},"src":"11320:21:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":11127,"nodeType":"IfStatement","src":"11316:68:14","trueBody":{"id":11126,"nodeType":"Block","src":"11343:41:14","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":11123,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11106,"src":"11369:3:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":11122,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11364:4:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":11124,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11364:9:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11078,"id":11125,"nodeType":"Return","src":"11357:16:14"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11130,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":11128,"name":"shortfall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11108,"src":"11397:9:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"30","id":11129,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11409:1:14","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11397:13:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":11137,"nodeType":"IfStatement","src":"11393:85:14","trueBody":{"id":11136,"nodeType":"Block","src":"11412:66:14","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":11132,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"11438:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":11133,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"INSUFFICIENT_LIQUIDITY","nodeType":"MemberAccess","referencedDeclaration":null,"src":"11438:28:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":11131,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11433:4:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":11134,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11433:34:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11078,"id":11135,"nodeType":"Return","src":"11426:41:14"}]}},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":11139,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"11500:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":11140,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"11500:14:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":11138,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11495:4:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":11141,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11495:20:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11078,"id":11142,"nodeType":"Return","src":"11488:27:14"}]},"documentation":null,"id":11144,"implemented":true,"kind":"function","modifiers":[],"name":"redeemAllowedInternal","nodeType":"FunctionDefinition","parameters":{"id":11075,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11070,"name":"cToken","nodeType":"VariableDeclaration","scope":11144,"src":"10653:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11069,"name":"address","nodeType":"ElementaryTypeName","src":"10653:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":11072,"name":"redeemer","nodeType":"VariableDeclaration","scope":11144,"src":"10669:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11071,"name":"address","nodeType":"ElementaryTypeName","src":"10669:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":11074,"name":"redeemTokens","nodeType":"VariableDeclaration","scope":11144,"src":"10687:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11073,"name":"uint","nodeType":"ElementaryTypeName","src":"10687:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"10652:53:14"},"returnParameters":{"id":11078,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11077,"name":"","nodeType":"VariableDeclaration","scope":11144,"src":"10729:4:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11076,"name":"uint","nodeType":"ElementaryTypeName","src":"10729:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"10728:6:14"},"scope":12745,"src":"10622:900:14","stateMutability":"view","superFunction":null,"visibility":"internal"},{"body":{"id":11176,"nodeType":"Block","src":"11958:345:14","statements":[{"expression":{"argumentTypes":null,"id":11155,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11146,"src":"11968:6:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11156,"nodeType":"ExpressionStatement","src":"11968:6:14"},{"expression":{"argumentTypes":null,"id":11157,"name":"redeemer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11148,"src":"12012:8:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11158,"nodeType":"ExpressionStatement","src":"12012:8:14"},{"expression":{"argumentTypes":null,"id":11159,"name":"redeemAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11150,"src":"12056:12:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11160,"nodeType":"ExpressionStatement","src":"12056:12:14"},{"expression":{"argumentTypes":null,"id":11161,"name":"redeemTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11152,"src":"12100:12:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11162,"nodeType":"ExpressionStatement","src":"12100:12:14"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":11169,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":11163,"name":"redeemTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11152,"src":"12206:12:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":11164,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12222:1:14","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12206:17:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":11166,"name":"redeemAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11150,"src":"12227:12:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"30","id":11167,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12242:1:14","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12227:16:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12206:37:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":11175,"nodeType":"IfStatement","src":"12202:95:14","trueBody":{"id":11174,"nodeType":"Block","src":"12245:52:14","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"72656465656d546f6b656e73207a65726f","id":11171,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12266:19:14","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_be68349ba5b02869947a89562a2d8143503a6601656c6cceb6f211f463db7e95","typeString":"literal_string \"redeemTokens zero\""},"value":"redeemTokens zero"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_be68349ba5b02869947a89562a2d8143503a6601656c6cceb6f211f463db7e95","typeString":"literal_string \"redeemTokens zero\""}],"id":11170,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[22555,22556],"referencedDeclaration":22556,"src":"12259:6:14","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":11172,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12259:27:14","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11173,"nodeType":"ExpressionStatement","src":"12259:27:14"}]}}]},"documentation":"@notice Validates redeem and reverts on rejection. May emit logs.\n@param cToken Asset being redeemed\n@param redeemer The address redeeming the tokens\n@param redeemAmount The amount of the underlying asset being redeemed\n@param redeemTokens The number of tokens being redeemed","id":11177,"implemented":true,"kind":"function","modifiers":[],"name":"redeemVerify","nodeType":"FunctionDefinition","parameters":{"id":11153,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11146,"name":"cToken","nodeType":"VariableDeclaration","scope":11177,"src":"11877:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11145,"name":"address","nodeType":"ElementaryTypeName","src":"11877:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":11148,"name":"redeemer","nodeType":"VariableDeclaration","scope":11177,"src":"11893:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11147,"name":"address","nodeType":"ElementaryTypeName","src":"11893:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":11150,"name":"redeemAmount","nodeType":"VariableDeclaration","scope":11177,"src":"11911:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11149,"name":"uint","nodeType":"ElementaryTypeName","src":"11911:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":11152,"name":"redeemTokens","nodeType":"VariableDeclaration","scope":11177,"src":"11930:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11151,"name":"uint","nodeType":"ElementaryTypeName","src":"11930:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"11876:72:14"},"returnParameters":{"id":11154,"nodeType":"ParameterList","parameters":[],"src":"11958:0:14"},"scope":12745,"src":"11855:448:14","stateMutability":"nonpayable","superFunction":12823,"visibility":"external"},{"body":{"id":11267,"nodeType":"Block","src":"12835:730:14","statements":[{"condition":{"argumentTypes":null,"id":11192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"12849:25:14","subExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":11188,"name":"markets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10561,"src":"12850:7:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Market_$10557_storage_$","typeString":"mapping(address => struct ComptrollerG1.Market storage ref)"}},"id":11190,"indexExpression":{"argumentTypes":null,"id":11189,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11179,"src":"12858:6:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12850:15:14","typeDescriptions":{"typeIdentifier":"t_struct$_Market_$10557_storage","typeString":"struct ComptrollerG1.Market storage ref"}},"id":11191,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"isListed","nodeType":"MemberAccess","referencedDeclaration":10550,"src":"12850:24:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":11199,"nodeType":"IfStatement","src":"12845:92:14","trueBody":{"id":11198,"nodeType":"Block","src":"12876:61:14","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":11194,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"12902:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":11195,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"MARKET_NOT_LISTED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"12902:23:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":11193,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12897:4:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":11196,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12897:29:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11187,"id":11197,"nodeType":"Return","src":"12890:36:14"}]}},{"condition":{"argumentTypes":null,"id":11206,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"13000:44:14","subExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":11200,"name":"markets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10561,"src":"13001:7:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Market_$10557_storage_$","typeString":"mapping(address => struct ComptrollerG1.Market storage ref)"}},"id":11202,"indexExpression":{"argumentTypes":null,"id":11201,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11179,"src":"13009:6:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13001:15:14","typeDescriptions":{"typeIdentifier":"t_struct$_Market_$10557_storage","typeString":"struct ComptrollerG1.Market storage ref"}},"id":11203,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"accountMembership","nodeType":"MemberAccess","referencedDeclaration":10556,"src":"13001:33:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":11205,"indexExpression":{"argumentTypes":null,"id":11204,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11181,"src":"13035:8:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13001:43:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":11213,"nodeType":"IfStatement","src":"12996:112:14","trueBody":{"id":11212,"nodeType":"Block","src":"13046:62:14","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":11208,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"13072:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":11209,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"MARKET_NOT_ENTERED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"13072:24:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":11207,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13067:4:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":11210,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13067:30:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11187,"id":11211,"nodeType":"Return","src":"13060:37:14"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11221,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":11217,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11179,"src":"13155:6:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11216,"name":"CToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6186,"src":"13148:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CToken_$6186_$","typeString":"type(contract CToken)"}},"id":11218,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13148:14:14","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"expression":{"argumentTypes":null,"id":11214,"name":"oracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13033,"src":"13122:6:14","typeDescriptions":{"typeIdentifier":"t_contract$_PriceOracle_$18689","typeString":"contract PriceOracle"}},"id":11215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getUnderlyingPrice","nodeType":"MemberAccess","referencedDeclaration":18688,"src":"13122:25:14","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_contract$_CToken_$6186_$returns$_t_uint256_$","typeString":"function (contract CToken) view external returns (uint256)"}},"id":11219,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13122:41:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":11220,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13167:1:14","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13122:46:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":11228,"nodeType":"IfStatement","src":"13118:107:14","trueBody":{"id":11227,"nodeType":"Block","src":"13170:55:14","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":11223,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"13196:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":11224,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"PRICE_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"13196:17:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":11222,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13191:4:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":11225,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13191:23:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11187,"id":11226,"nodeType":"Return","src":"13184:30:14"}]}},{"assignments":[11230,null,11232],"declarations":[{"constant":false,"id":11230,"name":"err","nodeType":"VariableDeclaration","scope":11267,"src":"13236:9:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"},"typeName":{"contractScope":null,"id":11229,"name":"Error","nodeType":"UserDefinedTypeName","referencedDeclaration":13574,"src":"13236:5:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},"value":null,"visibility":"internal"},null,{"constant":false,"id":11232,"name":"shortfall","nodeType":"VariableDeclaration","scope":11267,"src":"13249:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11231,"name":"uint","nodeType":"ElementaryTypeName","src":"13249:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":11241,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":11234,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11181,"src":"13307:8:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":11236,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11179,"src":"13324:6:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11235,"name":"CToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6186,"src":"13317:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CToken_$6186_$","typeString":"type(contract CToken)"}},"id":11237,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13317:14:14","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},{"argumentTypes":null,"hexValue":"30","id":11238,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13333:1:14","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"argumentTypes":null,"id":11239,"name":"borrowAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11183,"src":"13336:12:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11233,"name":"getHypotheticalAccountLiquidityInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12025,"src":"13267:39:14","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_contract$_CToken_$6186_$_t_uint256_$_t_uint256_$returns$_t_enum$_Error_$13574_$_t_uint256_$_t_uint256_$","typeString":"function (address,contract CToken,uint256,uint256) view returns (enum ComptrollerErrorReporter.Error,uint256,uint256)"}},"id":11240,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13267:82:14","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_Error_$13574_$_t_uint256_$_t_uint256_$","typeString":"tuple(enum ComptrollerErrorReporter.Error,uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"13235:114:14"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"},"id":11245,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":11242,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11230,"src":"13363:3:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":11243,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"13370:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":11244,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"13370:14:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},"src":"13363:21:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":11251,"nodeType":"IfStatement","src":"13359:68:14","trueBody":{"id":11250,"nodeType":"Block","src":"13386:41:14","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":11247,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11230,"src":"13412:3:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":11246,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13407:4:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":11248,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13407:9:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11187,"id":11249,"nodeType":"Return","src":"13400:16:14"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":11252,"name":"shortfall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11232,"src":"13440:9:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"30","id":11253,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13452:1:14","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13440:13:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":11261,"nodeType":"IfStatement","src":"13436:85:14","trueBody":{"id":11260,"nodeType":"Block","src":"13455:66:14","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":11256,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"13481:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":11257,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"INSUFFICIENT_LIQUIDITY","nodeType":"MemberAccess","referencedDeclaration":null,"src":"13481:28:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":11255,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13476:4:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":11258,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13476:34:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11187,"id":11259,"nodeType":"Return","src":"13469:41:14"}]}},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":11263,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"13543:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":11264,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"13543:14:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":11262,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13538:4:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":11265,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13538:20:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11187,"id":11266,"nodeType":"Return","src":"13531:27:14"}]},"documentation":"@notice Checks if the account should be allowed to borrow the underlying asset of the given market\n@param cToken The market to verify the borrow against\n@param borrower The account which would borrow the asset\n@param borrowAmount The amount of underlying the account would borrow\n@return 0 if the borrow is allowed, otherwise a semi-opaque error code (See ErrorReporter.sol)","id":11268,"implemented":true,"kind":"function","modifiers":[],"name":"borrowAllowed","nodeType":"FunctionDefinition","parameters":{"id":11184,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11179,"name":"cToken","nodeType":"VariableDeclaration","scope":11268,"src":"12758:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11178,"name":"address","nodeType":"ElementaryTypeName","src":"12758:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":11181,"name":"borrower","nodeType":"VariableDeclaration","scope":11268,"src":"12774:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11180,"name":"address","nodeType":"ElementaryTypeName","src":"12774:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":11183,"name":"borrowAmount","nodeType":"VariableDeclaration","scope":11268,"src":"12792:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11182,"name":"uint","nodeType":"ElementaryTypeName","src":"12792:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"12757:53:14"},"returnParameters":{"id":11187,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11186,"name":"","nodeType":"VariableDeclaration","scope":11268,"src":"12829:4:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11185,"name":"uint","nodeType":"ElementaryTypeName","src":"12829:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"12828:6:14"},"scope":12745,"src":"12735:830:14","stateMutability":"nonpayable","superFunction":12834,"visibility":"external"},{"body":{"id":11290,"nodeType":"Block","src":"13948:218:14","statements":[{"expression":{"argumentTypes":null,"id":11277,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11270,"src":"13958:6:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11278,"nodeType":"ExpressionStatement","src":"13958:6:14"},{"expression":{"argumentTypes":null,"id":11279,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11272,"src":"14002:8:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11280,"nodeType":"ExpressionStatement","src":"14002:8:14"},{"expression":{"argumentTypes":null,"id":11281,"name":"borrowAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11274,"src":"14046:12:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11282,"nodeType":"ExpressionStatement","src":"14046:12:14"},{"condition":{"argumentTypes":null,"hexValue":"66616c7365","id":11283,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"14095:5:14","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"falseBody":null,"id":11289,"nodeType":"IfStatement","src":"14091:69:14","trueBody":{"id":11288,"nodeType":"Block","src":"14102:58:14","statements":[{"expression":{"argumentTypes":null,"id":11286,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":11284,"name":"maxAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13039,"src":"14116:9:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":11285,"name":"maxAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13039,"src":"14128:9:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14116:21:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11287,"nodeType":"ExpressionStatement","src":"14116:21:14"}]}}]},"documentation":"@notice Validates borrow and reverts on rejection. May emit logs.\n@param cToken Asset whose underlying is being borrowed\n@param borrower The address borrowing the underlying\n@param borrowAmount The amount of the underlying asset requested to borrow","id":11291,"implemented":true,"kind":"function","modifiers":[],"name":"borrowVerify","nodeType":"FunctionDefinition","parameters":{"id":11275,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11270,"name":"cToken","nodeType":"VariableDeclaration","scope":11291,"src":"13886:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11269,"name":"address","nodeType":"ElementaryTypeName","src":"13886:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":11272,"name":"borrower","nodeType":"VariableDeclaration","scope":11291,"src":"13902:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11271,"name":"address","nodeType":"ElementaryTypeName","src":"13902:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":11274,"name":"borrowAmount","nodeType":"VariableDeclaration","scope":11291,"src":"13920:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11273,"name":"uint","nodeType":"ElementaryTypeName","src":"13920:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"13885:53:14"},"returnParameters":{"id":11276,"nodeType":"ParameterList","parameters":[],"src":"13948:0:14"},"scope":12745,"src":"13864:302:14","stateMutability":"nonpayable","superFunction":12852,"visibility":"external"},{"body":{"id":11327,"nodeType":"Block","src":"14805:325:14","statements":[{"expression":{"argumentTypes":null,"id":11304,"name":"payer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11295,"src":"14815:5:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11305,"nodeType":"ExpressionStatement","src":"14815:5:14"},{"expression":{"argumentTypes":null,"id":11306,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11297,"src":"14858:8:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11307,"nodeType":"ExpressionStatement","src":"14858:8:14"},{"expression":{"argumentTypes":null,"id":11308,"name":"repayAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11299,"src":"14901:11:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11309,"nodeType":"ExpressionStatement","src":"14901:11:14"},{"condition":{"argumentTypes":null,"id":11314,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"14949:25:14","subExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":11310,"name":"markets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10561,"src":"14950:7:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Market_$10557_storage_$","typeString":"mapping(address => struct ComptrollerG1.Market storage ref)"}},"id":11312,"indexExpression":{"argumentTypes":null,"id":11311,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11293,"src":"14958:6:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14950:15:14","typeDescriptions":{"typeIdentifier":"t_struct$_Market_$10557_storage","typeString":"struct ComptrollerG1.Market storage ref"}},"id":11313,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"isListed","nodeType":"MemberAccess","referencedDeclaration":10550,"src":"14950:24:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":11321,"nodeType":"IfStatement","src":"14945:92:14","trueBody":{"id":11320,"nodeType":"Block","src":"14976:61:14","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":11316,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"15002:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":11317,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"MARKET_NOT_LISTED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"15002:23:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":11315,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14997:4:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":11318,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14997:29:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11303,"id":11319,"nodeType":"Return","src":"14990:36:14"}]}},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":11323,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"15108:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":11324,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"15108:14:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":11322,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15103:4:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":11325,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15103:20:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11303,"id":11326,"nodeType":"Return","src":"15096:27:14"}]},"documentation":"@notice Checks if the account should be allowed to repay a borrow in the given market\n@param cToken The market to verify the repay against\n@param payer The account which would repay the asset\n@param borrower The account which would borrowed the asset\n@param repayAmount The amount of the underlying asset the account would repay\n@return 0 if the repay is allowed, otherwise a semi-opaque error code (See ErrorReporter.sol)","id":11328,"implemented":true,"kind":"function","modifiers":[],"name":"repayBorrowAllowed","nodeType":"FunctionDefinition","parameters":{"id":11300,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11293,"name":"cToken","nodeType":"VariableDeclaration","scope":11328,"src":"14690:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11292,"name":"address","nodeType":"ElementaryTypeName","src":"14690:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":11295,"name":"payer","nodeType":"VariableDeclaration","scope":11328,"src":"14714:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11294,"name":"address","nodeType":"ElementaryTypeName","src":"14714:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":11297,"name":"borrower","nodeType":"VariableDeclaration","scope":11328,"src":"14737:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11296,"name":"address","nodeType":"ElementaryTypeName","src":"14737:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":11299,"name":"repayAmount","nodeType":"VariableDeclaration","scope":11328,"src":"14763:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11298,"name":"uint","nodeType":"ElementaryTypeName","src":"14763:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"14680:100:14"},"returnParameters":{"id":11303,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11302,"name":"","nodeType":"VariableDeclaration","scope":11328,"src":"14799:4:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11301,"name":"uint","nodeType":"ElementaryTypeName","src":"14799:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"14798:6:14"},"scope":12745,"src":"14653:477:14","stateMutability":"nonpayable","superFunction":12865,"visibility":"external"},{"body":{"id":11358,"nodeType":"Block","src":"15601:301:14","statements":[{"expression":{"argumentTypes":null,"id":11341,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11330,"src":"15611:6:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11342,"nodeType":"ExpressionStatement","src":"15611:6:14"},{"expression":{"argumentTypes":null,"id":11343,"name":"payer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11332,"src":"15654:5:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11344,"nodeType":"ExpressionStatement","src":"15654:5:14"},{"expression":{"argumentTypes":null,"id":11345,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11334,"src":"15697:8:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11346,"nodeType":"ExpressionStatement","src":"15697:8:14"},{"expression":{"argumentTypes":null,"id":11347,"name":"repayAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11336,"src":"15740:11:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11348,"nodeType":"ExpressionStatement","src":"15740:11:14"},{"expression":{"argumentTypes":null,"id":11349,"name":"borrowerIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11338,"src":"15783:13:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11350,"nodeType":"ExpressionStatement","src":"15783:13:14"},{"condition":{"argumentTypes":null,"hexValue":"66616c7365","id":11351,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"15831:5:14","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"falseBody":null,"id":11357,"nodeType":"IfStatement","src":"15827:69:14","trueBody":{"id":11356,"nodeType":"Block","src":"15838:58:14","statements":[{"expression":{"argumentTypes":null,"id":11354,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":11352,"name":"maxAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13039,"src":"15852:9:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":11353,"name":"maxAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13039,"src":"15864:9:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15852:21:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11355,"nodeType":"ExpressionStatement","src":"15852:21:14"}]}}]},"documentation":"@notice Validates repayBorrow and reverts on rejection. May emit logs.\n@param cToken Asset being repaid\n@param payer The address repaying the borrow\n@param borrower The address of the borrower\n@param repayAmount The amount of underlying being repaid","id":11359,"implemented":true,"kind":"function","modifiers":[],"name":"repayBorrowVerify","nodeType":"FunctionDefinition","parameters":{"id":11339,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11330,"name":"cToken","nodeType":"VariableDeclaration","scope":11359,"src":"15473:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11329,"name":"address","nodeType":"ElementaryTypeName","src":"15473:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":11332,"name":"payer","nodeType":"VariableDeclaration","scope":11359,"src":"15497:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11331,"name":"address","nodeType":"ElementaryTypeName","src":"15497:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":11334,"name":"borrower","nodeType":"VariableDeclaration","scope":11359,"src":"15520:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11333,"name":"address","nodeType":"ElementaryTypeName","src":"15520:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":11336,"name":"repayAmount","nodeType":"VariableDeclaration","scope":11359,"src":"15546:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11335,"name":"uint","nodeType":"ElementaryTypeName","src":"15546:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":11338,"name":"borrowerIndex","nodeType":"VariableDeclaration","scope":11359,"src":"15572:18:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11337,"name":"uint","nodeType":"ElementaryTypeName","src":"15572:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"15463:128:14"},"returnParameters":{"id":11340,"nodeType":"ParameterList","parameters":[],"src":"15601:0:14"},"scope":12745,"src":"15437:465:14","stateMutability":"nonpayable","superFunction":12878,"visibility":"external"},{"body":{"id":11472,"nodeType":"Block","src":"16549:1178:14","statements":[{"expression":{"argumentTypes":null,"id":11374,"name":"liquidator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11365,"src":"16559:10:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11375,"nodeType":"ExpressionStatement","src":"16559:10:14"},{"expression":{"argumentTypes":null,"id":11376,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11367,"src":"16601:8:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11377,"nodeType":"ExpressionStatement","src":"16601:8:14"},{"expression":{"argumentTypes":null,"id":11378,"name":"repayAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11369,"src":"16643:11:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11379,"nodeType":"ExpressionStatement","src":"16643:11:14"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":11390,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":11384,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"16690:33:14","subExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":11380,"name":"markets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10561,"src":"16691:7:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Market_$10557_storage_$","typeString":"mapping(address => struct ComptrollerG1.Market storage ref)"}},"id":11382,"indexExpression":{"argumentTypes":null,"id":11381,"name":"cTokenBorrowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11361,"src":"16699:14:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16691:23:14","typeDescriptions":{"typeIdentifier":"t_struct$_Market_$10557_storage","typeString":"struct ComptrollerG1.Market storage ref"}},"id":11383,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"isListed","nodeType":"MemberAccess","referencedDeclaration":10550,"src":"16691:32:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"argumentTypes":null,"id":11389,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"16727:35:14","subExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":11385,"name":"markets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10561,"src":"16728:7:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Market_$10557_storage_$","typeString":"mapping(address => struct ComptrollerG1.Market storage ref)"}},"id":11387,"indexExpression":{"argumentTypes":null,"id":11386,"name":"cTokenCollateral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11363,"src":"16736:16:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16728:25:14","typeDescriptions":{"typeIdentifier":"t_struct$_Market_$10557_storage","typeString":"struct ComptrollerG1.Market storage ref"}},"id":11388,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"isListed","nodeType":"MemberAccess","referencedDeclaration":10550,"src":"16728:34:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"16690:72:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":11397,"nodeType":"IfStatement","src":"16686:139:14","trueBody":{"id":11396,"nodeType":"Block","src":"16764:61:14","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":11392,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"16790:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":11393,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"MARKET_NOT_LISTED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"16790:23:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":11391,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16785:4:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":11394,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16785:29:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11373,"id":11395,"nodeType":"Return","src":"16778:36:14"}]}},{"assignments":[11399,null,11401],"declarations":[{"constant":false,"id":11399,"name":"err","nodeType":"VariableDeclaration","scope":11472,"src":"16960:9:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"},"typeName":{"contractScope":null,"id":11398,"name":"Error","nodeType":"UserDefinedTypeName","referencedDeclaration":13574,"src":"16960:5:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},"value":null,"visibility":"internal"},null,{"constant":false,"id":11401,"name":"shortfall","nodeType":"VariableDeclaration","scope":11472,"src":"16973:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11400,"name":"uint","nodeType":"ElementaryTypeName","src":"16973:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":11405,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":11403,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11367,"src":"17019:8:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11402,"name":"getAccountLiquidityInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11733,"src":"16991:27:14","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_enum$_Error_$13574_$_t_uint256_$_t_uint256_$","typeString":"function (address) view returns (enum ComptrollerErrorReporter.Error,uint256,uint256)"}},"id":11404,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16991:37:14","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_Error_$13574_$_t_uint256_$_t_uint256_$","typeString":"tuple(enum ComptrollerErrorReporter.Error,uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"16959:69:14"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"},"id":11409,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":11406,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11399,"src":"17042:3:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":11407,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"17049:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":11408,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"17049:14:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},"src":"17042:21:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":11415,"nodeType":"IfStatement","src":"17038:68:14","trueBody":{"id":11414,"nodeType":"Block","src":"17065:41:14","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":11411,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11399,"src":"17091:3:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":11410,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17086:4:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":11412,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17086:9:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11373,"id":11413,"nodeType":"Return","src":"17079:16:14"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":11416,"name":"shortfall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11401,"src":"17119:9:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":11417,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17132:1:14","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17119:14:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":11425,"nodeType":"IfStatement","src":"17115:86:14","trueBody":{"id":11424,"nodeType":"Block","src":"17135:66:14","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":11420,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"17161:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":11421,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"INSUFFICIENT_SHORTFALL","nodeType":"MemberAccess","referencedDeclaration":null,"src":"17161:28:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":11419,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17156:4:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":11422,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17156:34:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11373,"id":11423,"nodeType":"Return","src":"17149:41:14"}]}},{"assignments":[11427],"declarations":[{"constant":false,"id":11427,"name":"borrowBalance","nodeType":"VariableDeclaration","scope":11472,"src":"17299:18:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11426,"name":"uint","nodeType":"ElementaryTypeName","src":"17299:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":11434,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":11432,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11367,"src":"17363:8:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":11429,"name":"cTokenBorrowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11361,"src":"17327:14:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11428,"name":"CToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6186,"src":"17320:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CToken_$6186_$","typeString":"type(contract CToken)"}},"id":11430,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17320:22:14","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":11431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"borrowBalanceStored","nodeType":"MemberAccess","referencedDeclaration":3031,"src":"17320:42:14","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":11433,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17320:52:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"17299:73:14"},{"assignments":[11436,11438],"declarations":[{"constant":false,"id":11436,"name":"mathErr","nodeType":"VariableDeclaration","scope":11472,"src":"17383:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"typeName":{"contractScope":null,"id":11435,"name":"MathError","nodeType":"UserDefinedTypeName","referencedDeclaration":6659,"src":"17383:9:14","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"value":null,"visibility":"internal"},{"constant":false,"id":11438,"name":"maxClose","nodeType":"VariableDeclaration","scope":11472,"src":"17402:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11437,"name":"uint","nodeType":"ElementaryTypeName","src":"17402:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":11445,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":11441,"name":"closeFactorMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13035,"src":"17452:19:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11440,"name":"Exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14390,"src":"17437:3:14","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Exp_$14390_storage_ptr_$","typeString":"type(struct ExponentialNoError.Exp storage pointer)"}},"id":11442,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"17437:36:14","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}},{"argumentTypes":null,"id":11443,"name":"borrowBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11427,"src":"17475:13:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11439,"name":"mulScalarTruncate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14055,"src":"17419:17:14","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Exp_$14390_memory_ptr_$_t_uint256_$returns$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"function (struct ExponentialNoError.Exp memory,uint256) pure returns (enum CarefulMath.MathError,uint256)"}},"id":11444,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17419:70:14","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"17382:107:14"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"id":11449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":11446,"name":"mathErr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11436,"src":"17503:7:14","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":11447,"name":"MathError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6659,"src":"17514:9:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MathError_$6659_$","typeString":"type(enum CarefulMath.MathError)"}},"id":11448,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"17514:18:14","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"src":"17503:29:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":11456,"nodeType":"IfStatement","src":"17499:89:14","trueBody":{"id":11455,"nodeType":"Block","src":"17534:54:14","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":11451,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"17560:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":11452,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"MATH_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"17560:16:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":11450,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17555:4:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":11453,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17555:22:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11373,"id":11454,"nodeType":"Return","src":"17548:29:14"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":11457,"name":"repayAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11369,"src":"17601:11:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"id":11458,"name":"maxClose","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11438,"src":"17615:8:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17601:22:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":11466,"nodeType":"IfStatement","src":"17597:86:14","trueBody":{"id":11465,"nodeType":"Block","src":"17625:58:14","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":11461,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"17651:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":11462,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"TOO_MUCH_REPAY","nodeType":"MemberAccess","referencedDeclaration":null,"src":"17651:20:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":11460,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17646:4:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":11463,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17646:26:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11373,"id":11464,"nodeType":"Return","src":"17639:33:14"}]}},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":11468,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"17705:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":11469,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"17705:14:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":11467,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17700:4:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":11470,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17700:20:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11373,"id":11471,"nodeType":"Return","src":"17693:27:14"}]},"documentation":"@notice Checks if the liquidation should be allowed to occur\n@param cTokenBorrowed Asset which was borrowed by the borrower\n@param cTokenCollateral Asset which was used as collateral and will be seized\n@param liquidator The address repaying the borrow and seizing the collateral\n@param borrower The address of the borrower\n@param repayAmount The amount of underlying being repaid","id":11473,"implemented":true,"kind":"function","modifiers":[],"name":"liquidateBorrowAllowed","nodeType":"FunctionDefinition","parameters":{"id":11370,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11361,"name":"cTokenBorrowed","nodeType":"VariableDeclaration","scope":11473,"src":"16387:22:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11360,"name":"address","nodeType":"ElementaryTypeName","src":"16387:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":11363,"name":"cTokenCollateral","nodeType":"VariableDeclaration","scope":11473,"src":"16419:24:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11362,"name":"address","nodeType":"ElementaryTypeName","src":"16419:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":11365,"name":"liquidator","nodeType":"VariableDeclaration","scope":11473,"src":"16453:18:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11364,"name":"address","nodeType":"ElementaryTypeName","src":"16453:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":11367,"name":"borrower","nodeType":"VariableDeclaration","scope":11473,"src":"16481:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11366,"name":"address","nodeType":"ElementaryTypeName","src":"16481:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":11369,"name":"repayAmount","nodeType":"VariableDeclaration","scope":11473,"src":"16507:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11368,"name":"uint","nodeType":"ElementaryTypeName","src":"16507:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"16377:147:14"},"returnParameters":{"id":11373,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11372,"name":"","nodeType":"VariableDeclaration","scope":11473,"src":"16543:4:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11371,"name":"uint","nodeType":"ElementaryTypeName","src":"16543:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"16542:6:14"},"scope":12745,"src":"16346:1381:14","stateMutability":"nonpayable","superFunction":12893,"visibility":"external"},{"body":{"id":11507,"nodeType":"Block","src":"18398:362:14","statements":[{"expression":{"argumentTypes":null,"id":11488,"name":"cTokenBorrowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11475,"src":"18408:14:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11489,"nodeType":"ExpressionStatement","src":"18408:14:14"},{"expression":{"argumentTypes":null,"id":11490,"name":"cTokenCollateral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11477,"src":"18454:16:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11491,"nodeType":"ExpressionStatement","src":"18454:16:14"},{"expression":{"argumentTypes":null,"id":11492,"name":"liquidator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11479,"src":"18500:10:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11493,"nodeType":"ExpressionStatement","src":"18500:10:14"},{"expression":{"argumentTypes":null,"id":11494,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11481,"src":"18546:8:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11495,"nodeType":"ExpressionStatement","src":"18546:8:14"},{"expression":{"argumentTypes":null,"id":11496,"name":"repayAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11483,"src":"18592:11:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11497,"nodeType":"ExpressionStatement","src":"18592:11:14"},{"expression":{"argumentTypes":null,"id":11498,"name":"seizeTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11485,"src":"18638:11:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11499,"nodeType":"ExpressionStatement","src":"18638:11:14"},{"condition":{"argumentTypes":null,"hexValue":"66616c7365","id":11500,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"18689:5:14","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"falseBody":null,"id":11506,"nodeType":"IfStatement","src":"18685:69:14","trueBody":{"id":11505,"nodeType":"Block","src":"18696:58:14","statements":[{"expression":{"argumentTypes":null,"id":11503,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":11501,"name":"maxAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13039,"src":"18710:9:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":11502,"name":"maxAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13039,"src":"18722:9:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18710:21:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11504,"nodeType":"ExpressionStatement","src":"18710:21:14"}]}}]},"documentation":"@notice Validates liquidateBorrow and reverts on rejection. May emit logs.\n@param cTokenBorrowed Asset which was borrowed by the borrower\n@param cTokenCollateral Asset which was used as collateral and will be seized\n@param liquidator The address repaying the borrow and seizing the collateral\n@param borrower The address of the borrower\n@param repayAmount The amount of underlying being repaid","id":11508,"implemented":true,"kind":"function","modifiers":[],"name":"liquidateBorrowVerify","nodeType":"FunctionDefinition","parameters":{"id":11486,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11475,"name":"cTokenBorrowed","nodeType":"VariableDeclaration","scope":11508,"src":"18225:22:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11474,"name":"address","nodeType":"ElementaryTypeName","src":"18225:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":11477,"name":"cTokenCollateral","nodeType":"VariableDeclaration","scope":11508,"src":"18257:24:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11476,"name":"address","nodeType":"ElementaryTypeName","src":"18257:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":11479,"name":"liquidator","nodeType":"VariableDeclaration","scope":11508,"src":"18291:18:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11478,"name":"address","nodeType":"ElementaryTypeName","src":"18291:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":11481,"name":"borrower","nodeType":"VariableDeclaration","scope":11508,"src":"18319:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11480,"name":"address","nodeType":"ElementaryTypeName","src":"18319:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":11483,"name":"repayAmount","nodeType":"VariableDeclaration","scope":11508,"src":"18345:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11482,"name":"uint","nodeType":"ElementaryTypeName","src":"18345:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":11485,"name":"seizeTokens","nodeType":"VariableDeclaration","scope":11508,"src":"18371:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11484,"name":"uint","nodeType":"ElementaryTypeName","src":"18371:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"18215:173:14"},"returnParameters":{"id":11487,"nodeType":"ParameterList","parameters":[],"src":"18398:0:14"},"scope":12745,"src":"18185:575:14","stateMutability":"nonpayable","superFunction":12908,"visibility":"external"},{"body":{"id":11570,"nodeType":"Block","src":"19406:539:14","statements":[{"expression":{"argumentTypes":null,"id":11523,"name":"liquidator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11514,"src":"19416:10:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11524,"nodeType":"ExpressionStatement","src":"19416:10:14"},{"expression":{"argumentTypes":null,"id":11525,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11516,"src":"19462:8:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11526,"nodeType":"ExpressionStatement","src":"19462:8:14"},{"expression":{"argumentTypes":null,"id":11527,"name":"seizeTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11518,"src":"19508:11:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11528,"nodeType":"ExpressionStatement","src":"19508:11:14"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":11539,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":11533,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"19559:35:14","subExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":11529,"name":"markets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10561,"src":"19560:7:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Market_$10557_storage_$","typeString":"mapping(address => struct ComptrollerG1.Market storage ref)"}},"id":11531,"indexExpression":{"argumentTypes":null,"id":11530,"name":"cTokenCollateral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11510,"src":"19568:16:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19560:25:14","typeDescriptions":{"typeIdentifier":"t_struct$_Market_$10557_storage","typeString":"struct ComptrollerG1.Market storage ref"}},"id":11532,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"isListed","nodeType":"MemberAccess","referencedDeclaration":10550,"src":"19560:34:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"argumentTypes":null,"id":11538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"19598:33:14","subExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":11534,"name":"markets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10561,"src":"19599:7:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Market_$10557_storage_$","typeString":"mapping(address => struct ComptrollerG1.Market storage ref)"}},"id":11536,"indexExpression":{"argumentTypes":null,"id":11535,"name":"cTokenBorrowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11512,"src":"19607:14:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19599:23:14","typeDescriptions":{"typeIdentifier":"t_struct$_Market_$10557_storage","typeString":"struct ComptrollerG1.Market storage ref"}},"id":11537,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"isListed","nodeType":"MemberAccess","referencedDeclaration":10550,"src":"19599:32:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"19559:72:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":11546,"nodeType":"IfStatement","src":"19555:139:14","trueBody":{"id":11545,"nodeType":"Block","src":"19633:61:14","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":11541,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"19659:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":11542,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"MARKET_NOT_LISTED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"19659:23:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":11540,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19654:4:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":11543,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19654:29:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11522,"id":11544,"nodeType":"Return","src":"19647:36:14"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_contract$_ComptrollerInterface_$12980","typeString":"contract ComptrollerInterface"},"id":11557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":11548,"name":"cTokenCollateral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11510,"src":"19715:16:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11547,"name":"CToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6186,"src":"19708:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CToken_$6186_$","typeString":"type(contract CToken)"}},"id":11549,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19708:24:14","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":11550,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"comptroller","nodeType":"MemberAccess","referencedDeclaration":6224,"src":"19708:36:14","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_ComptrollerInterface_$12980_$","typeString":"function () view external returns (contract ComptrollerInterface)"}},"id":11551,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19708:38:14","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerInterface_$12980","typeString":"contract ComptrollerInterface"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":11553,"name":"cTokenBorrowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11512,"src":"19757:14:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11552,"name":"CToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6186,"src":"19750:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CToken_$6186_$","typeString":"type(contract CToken)"}},"id":11554,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19750:22:14","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":11555,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"comptroller","nodeType":"MemberAccess","referencedDeclaration":6224,"src":"19750:34:14","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_ComptrollerInterface_$12980_$","typeString":"function () view external returns (contract ComptrollerInterface)"}},"id":11556,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19750:36:14","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerInterface_$12980","typeString":"contract ComptrollerInterface"}},"src":"19708:78:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":11564,"nodeType":"IfStatement","src":"19704:148:14","trueBody":{"id":11563,"nodeType":"Block","src":"19788:64:14","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":11559,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"19814:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":11560,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"COMPTROLLER_MISMATCH","nodeType":"MemberAccess","referencedDeclaration":null,"src":"19814:26:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":11558,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19809:4:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":11561,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19809:32:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11522,"id":11562,"nodeType":"Return","src":"19802:39:14"}]}},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":11566,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"19923:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":11567,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"19923:14:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":11565,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19918:4:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":11568,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19918:20:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11522,"id":11569,"nodeType":"Return","src":"19911:27:14"}]},"documentation":"@notice Checks if the seizing of assets should be allowed to occur\n@param cTokenCollateral Asset which was used as collateral and will be seized\n@param cTokenBorrowed Asset which was borrowed by the borrower\n@param liquidator The address repaying the borrow and seizing the collateral\n@param borrower The address of the borrower\n@param seizeTokens The number of collateral tokens to seize","id":11571,"implemented":true,"kind":"function","modifiers":[],"name":"seizeAllowed","nodeType":"FunctionDefinition","parameters":{"id":11519,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11510,"name":"cTokenCollateral","nodeType":"VariableDeclaration","scope":11571,"src":"19244:24:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11509,"name":"address","nodeType":"ElementaryTypeName","src":"19244:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":11512,"name":"cTokenBorrowed","nodeType":"VariableDeclaration","scope":11571,"src":"19278:22:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11511,"name":"address","nodeType":"ElementaryTypeName","src":"19278:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":11514,"name":"liquidator","nodeType":"VariableDeclaration","scope":11571,"src":"19310:18:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11513,"name":"address","nodeType":"ElementaryTypeName","src":"19310:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":11516,"name":"borrower","nodeType":"VariableDeclaration","scope":11571,"src":"19338:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11515,"name":"address","nodeType":"ElementaryTypeName","src":"19338:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":11518,"name":"seizeTokens","nodeType":"VariableDeclaration","scope":11571,"src":"19364:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11517,"name":"uint","nodeType":"ElementaryTypeName","src":"19364:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"19234:147:14"},"returnParameters":{"id":11522,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11521,"name":"","nodeType":"VariableDeclaration","scope":11571,"src":"19400:4:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11520,"name":"uint","nodeType":"ElementaryTypeName","src":"19400:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"19399:6:14"},"scope":12745,"src":"19213:732:14","stateMutability":"nonpayable","superFunction":12923,"visibility":"external"},{"body":{"id":11601,"nodeType":"Block","src":"20573:316:14","statements":[{"expression":{"argumentTypes":null,"id":11584,"name":"cTokenCollateral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11573,"src":"20583:16:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11585,"nodeType":"ExpressionStatement","src":"20583:16:14"},{"expression":{"argumentTypes":null,"id":11586,"name":"cTokenBorrowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11575,"src":"20629:14:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11587,"nodeType":"ExpressionStatement","src":"20629:14:14"},{"expression":{"argumentTypes":null,"id":11588,"name":"liquidator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11577,"src":"20675:10:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11589,"nodeType":"ExpressionStatement","src":"20675:10:14"},{"expression":{"argumentTypes":null,"id":11590,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11579,"src":"20721:8:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11591,"nodeType":"ExpressionStatement","src":"20721:8:14"},{"expression":{"argumentTypes":null,"id":11592,"name":"seizeTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11581,"src":"20767:11:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11593,"nodeType":"ExpressionStatement","src":"20767:11:14"},{"condition":{"argumentTypes":null,"hexValue":"66616c7365","id":11594,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"20818:5:14","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"falseBody":null,"id":11600,"nodeType":"IfStatement","src":"20814:69:14","trueBody":{"id":11599,"nodeType":"Block","src":"20825:58:14","statements":[{"expression":{"argumentTypes":null,"id":11597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":11595,"name":"maxAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13039,"src":"20839:9:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":11596,"name":"maxAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13039,"src":"20851:9:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20839:21:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11598,"nodeType":"ExpressionStatement","src":"20839:21:14"}]}}]},"documentation":"@notice Validates seize and reverts on rejection. May emit logs.\n@param cTokenCollateral Asset which was used as collateral and will be seized\n@param cTokenBorrowed Asset which was borrowed by the borrower\n@param liquidator The address repaying the borrow and seizing the collateral\n@param borrower The address of the borrower\n@param seizeTokens The number of collateral tokens to seize","id":11602,"implemented":true,"kind":"function","modifiers":[],"name":"seizeVerify","nodeType":"FunctionDefinition","parameters":{"id":11582,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11573,"name":"cTokenCollateral","nodeType":"VariableDeclaration","scope":11602,"src":"20426:24:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11572,"name":"address","nodeType":"ElementaryTypeName","src":"20426:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":11575,"name":"cTokenBorrowed","nodeType":"VariableDeclaration","scope":11602,"src":"20460:22:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11574,"name":"address","nodeType":"ElementaryTypeName","src":"20460:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":11577,"name":"liquidator","nodeType":"VariableDeclaration","scope":11602,"src":"20492:18:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11576,"name":"address","nodeType":"ElementaryTypeName","src":"20492:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":11579,"name":"borrower","nodeType":"VariableDeclaration","scope":11602,"src":"20520:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11578,"name":"address","nodeType":"ElementaryTypeName","src":"20520:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":11581,"name":"seizeTokens","nodeType":"VariableDeclaration","scope":11602,"src":"20546:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11580,"name":"uint","nodeType":"ElementaryTypeName","src":"20546:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"20416:147:14"},"returnParameters":{"id":11583,"nodeType":"ParameterList","parameters":[],"src":"20573:0:14"},"scope":12745,"src":"20396:493:14","stateMutability":"nonpayable","superFunction":12936,"visibility":"external"},{"body":{"id":11629,"nodeType":"Block","src":"21458:420:14","statements":[{"expression":{"argumentTypes":null,"id":11615,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11604,"src":"21468:6:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11616,"nodeType":"ExpressionStatement","src":"21468:6:14"},{"expression":{"argumentTypes":null,"id":11617,"name":"src","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11606,"src":"21512:3:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11618,"nodeType":"ExpressionStatement","src":"21512:3:14"},{"expression":{"argumentTypes":null,"id":11619,"name":"dst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11608,"src":"21556:3:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11620,"nodeType":"ExpressionStatement","src":"21556:3:14"},{"expression":{"argumentTypes":null,"id":11621,"name":"transferTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11610,"src":"21600:14:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11622,"nodeType":"ExpressionStatement","src":"21600:14:14"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":11624,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11604,"src":"21843:6:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":11625,"name":"src","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11606,"src":"21851:3:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":11626,"name":"transferTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11610,"src":"21856:14:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11623,"name":"redeemAllowedInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11144,"src":"21821:21:14","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,address,uint256) view returns (uint256)"}},"id":11627,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21821:50:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11614,"id":11628,"nodeType":"Return","src":"21814:57:14"}]},"documentation":"@notice Checks if the account should be allowed to transfer tokens in the given market\n@param cToken The market to verify the transfer against\n@param src The account which sources the tokens\n@param dst The account which receives the tokens\n@param transferTokens The number of cTokens to transfer\n@return 0 if the transfer is allowed, otherwise a semi-opaque error code (See ErrorReporter.sol)","id":11630,"implemented":true,"kind":"function","modifiers":[],"name":"transferAllowed","nodeType":"FunctionDefinition","parameters":{"id":11611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11604,"name":"cToken","nodeType":"VariableDeclaration","scope":11630,"src":"21371:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11603,"name":"address","nodeType":"ElementaryTypeName","src":"21371:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":11606,"name":"src","nodeType":"VariableDeclaration","scope":11630,"src":"21387:11:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11605,"name":"address","nodeType":"ElementaryTypeName","src":"21387:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":11608,"name":"dst","nodeType":"VariableDeclaration","scope":11630,"src":"21400:11:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11607,"name":"address","nodeType":"ElementaryTypeName","src":"21400:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":11610,"name":"transferTokens","nodeType":"VariableDeclaration","scope":11630,"src":"21413:19:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11609,"name":"uint","nodeType":"ElementaryTypeName","src":"21413:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"21370:63:14"},"returnParameters":{"id":11614,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11613,"name":"","nodeType":"VariableDeclaration","scope":11630,"src":"21452:4:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11612,"name":"uint","nodeType":"ElementaryTypeName","src":"21452:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"21451:6:14"},"scope":12745,"src":"21346:532:14","stateMutability":"nonpayable","superFunction":12949,"visibility":"external"},{"body":{"id":11656,"nodeType":"Block","src":"22290:262:14","statements":[{"expression":{"argumentTypes":null,"id":11641,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11632,"src":"22300:6:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11642,"nodeType":"ExpressionStatement","src":"22300:6:14"},{"expression":{"argumentTypes":null,"id":11643,"name":"src","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11634,"src":"22344:3:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11644,"nodeType":"ExpressionStatement","src":"22344:3:14"},{"expression":{"argumentTypes":null,"id":11645,"name":"dst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11636,"src":"22388:3:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11646,"nodeType":"ExpressionStatement","src":"22388:3:14"},{"expression":{"argumentTypes":null,"id":11647,"name":"transferTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11638,"src":"22432:14:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11648,"nodeType":"ExpressionStatement","src":"22432:14:14"},{"condition":{"argumentTypes":null,"hexValue":"66616c7365","id":11649,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"22481:5:14","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"falseBody":null,"id":11655,"nodeType":"IfStatement","src":"22477:69:14","trueBody":{"id":11654,"nodeType":"Block","src":"22488:58:14","statements":[{"expression":{"argumentTypes":null,"id":11652,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":11650,"name":"maxAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13039,"src":"22502:9:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":11651,"name":"maxAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13039,"src":"22514:9:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22502:21:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11653,"nodeType":"ExpressionStatement","src":"22502:21:14"}]}}]},"documentation":"@notice Validates transfer and reverts on rejection. May emit logs.\n@param cToken Asset being transferred\n@param src The account which sources the tokens\n@param dst The account which receives the tokens\n@param transferTokens The number of cTokens to transfer","id":11657,"implemented":true,"kind":"function","modifiers":[],"name":"transferVerify","nodeType":"FunctionDefinition","parameters":{"id":11639,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11632,"name":"cToken","nodeType":"VariableDeclaration","scope":11657,"src":"22218:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11631,"name":"address","nodeType":"ElementaryTypeName","src":"22218:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":11634,"name":"src","nodeType":"VariableDeclaration","scope":11657,"src":"22234:11:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11633,"name":"address","nodeType":"ElementaryTypeName","src":"22234:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":11636,"name":"dst","nodeType":"VariableDeclaration","scope":11657,"src":"22247:11:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11635,"name":"address","nodeType":"ElementaryTypeName","src":"22247:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":11638,"name":"transferTokens","nodeType":"VariableDeclaration","scope":11657,"src":"22260:19:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11637,"name":"uint","nodeType":"ElementaryTypeName","src":"22260:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"22217:63:14"},"returnParameters":{"id":11640,"nodeType":"ParameterList","parameters":[],"src":"22290:0:14"},"scope":12745,"src":"22194:358:14","stateMutability":"nonpayable","superFunction":12960,"visibility":"external"},{"canonicalName":"ComptrollerG1.AccountLiquidityLocalVars","id":11678,"members":[{"constant":false,"id":11659,"name":"sumCollateral","nodeType":"VariableDeclaration","scope":11678,"src":"22938:18:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11658,"name":"uint","nodeType":"ElementaryTypeName","src":"22938:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":11661,"name":"sumBorrowPlusEffects","nodeType":"VariableDeclaration","scope":11678,"src":"22966:25:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11660,"name":"uint","nodeType":"ElementaryTypeName","src":"22966:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":11663,"name":"cTokenBalance","nodeType":"VariableDeclaration","scope":11678,"src":"23001:18:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11662,"name":"uint","nodeType":"ElementaryTypeName","src":"23001:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":11665,"name":"borrowBalance","nodeType":"VariableDeclaration","scope":11678,"src":"23029:18:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11664,"name":"uint","nodeType":"ElementaryTypeName","src":"23029:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":11667,"name":"exchangeRateMantissa","nodeType":"VariableDeclaration","scope":11678,"src":"23057:25:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11666,"name":"uint","nodeType":"ElementaryTypeName","src":"23057:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":11669,"name":"oraclePriceMantissa","nodeType":"VariableDeclaration","scope":11678,"src":"23092:24:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11668,"name":"uint","nodeType":"ElementaryTypeName","src":"23092:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":11671,"name":"collateralFactor","nodeType":"VariableDeclaration","scope":11678,"src":"23126:20:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":11670,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"23126:3:14","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"},{"constant":false,"id":11673,"name":"exchangeRate","nodeType":"VariableDeclaration","scope":11678,"src":"23156:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":11672,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"23156:3:14","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"},{"constant":false,"id":11675,"name":"oraclePrice","nodeType":"VariableDeclaration","scope":11678,"src":"23182:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":11674,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"23182:3:14","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"},{"constant":false,"id":11677,"name":"tokensToEther","nodeType":"VariableDeclaration","scope":11678,"src":"23207:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":11676,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"23207:3:14","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"}],"name":"AccountLiquidityLocalVars","nodeType":"StructDefinition","scope":12745,"src":"22895:336:14","visibility":"public"},{"body":{"id":11711,"nodeType":"Block","src":"23609:179:14","statements":[{"assignments":[11690,11692,11694],"declarations":[{"constant":false,"id":11690,"name":"err","nodeType":"VariableDeclaration","scope":11711,"src":"23620:9:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"},"typeName":{"contractScope":null,"id":11689,"name":"Error","nodeType":"UserDefinedTypeName","referencedDeclaration":13574,"src":"23620:5:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},"value":null,"visibility":"internal"},{"constant":false,"id":11692,"name":"liquidity","nodeType":"VariableDeclaration","scope":11711,"src":"23631:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11691,"name":"uint","nodeType":"ElementaryTypeName","src":"23631:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":11694,"name":"shortfall","nodeType":"VariableDeclaration","scope":11711,"src":"23647:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11693,"name":"uint","nodeType":"ElementaryTypeName","src":"23647:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":11703,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":11696,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11680,"src":"23705:7:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":11698,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23721:1:14","subdenomination":null,"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":11697,"name":"CToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6186,"src":"23714:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CToken_$6186_$","typeString":"type(contract CToken)"}},"id":11699,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"23714:9:14","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},{"argumentTypes":null,"hexValue":"30","id":11700,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23725:1:14","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"argumentTypes":null,"hexValue":"30","id":11701,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23728:1:14","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":11695,"name":"getHypotheticalAccountLiquidityInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12025,"src":"23665:39:14","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_contract$_CToken_$6186_$_t_uint256_$_t_uint256_$returns$_t_enum$_Error_$13574_$_t_uint256_$_t_uint256_$","typeString":"function (address,contract CToken,uint256,uint256) view returns (enum ComptrollerErrorReporter.Error,uint256,uint256)"}},"id":11702,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"23665:65:14","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_Error_$13574_$_t_uint256_$_t_uint256_$","typeString":"tuple(enum ComptrollerErrorReporter.Error,uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"23619:111:14"},{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":11705,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11690,"src":"23754:3:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":11704,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"23749:4:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":11706,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"23749:9:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":11707,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11692,"src":"23760:9:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":11708,"name":"shortfall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11694,"src":"23771:9:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":11709,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"23748:33:14","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256,uint256)"}},"functionReturnParameters":11688,"id":11710,"nodeType":"Return","src":"23741:40:14"}]},"documentation":"@notice Determine the current account liquidity wrt collateral requirements\n@return (possible error code (semi-opaque),\naccount liquidity in excess of collateral requirements,\n account shortfall below collateral requirements)","id":11712,"implemented":true,"kind":"function","modifiers":[],"name":"getAccountLiquidity","nodeType":"FunctionDefinition","parameters":{"id":11681,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11680,"name":"account","nodeType":"VariableDeclaration","scope":11712,"src":"23553:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11679,"name":"address","nodeType":"ElementaryTypeName","src":"23553:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"23552:17:14"},"returnParameters":{"id":11688,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11683,"name":"","nodeType":"VariableDeclaration","scope":11712,"src":"23591:4:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11682,"name":"uint","nodeType":"ElementaryTypeName","src":"23591:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":11685,"name":"","nodeType":"VariableDeclaration","scope":11712,"src":"23597:4:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11684,"name":"uint","nodeType":"ElementaryTypeName","src":"23597:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":11687,"name":"","nodeType":"VariableDeclaration","scope":11712,"src":"23603:4:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11686,"name":"uint","nodeType":"ElementaryTypeName","src":"23603:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"23590:18:14"},"scope":12745,"src":"23524:264:14","stateMutability":"view","superFunction":null,"visibility":"public"},{"body":{"id":11732,"nodeType":"Block","src":"24163:89:14","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":11724,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11714,"src":"24220:7:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":11726,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24236:1:14","subdenomination":null,"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":11725,"name":"CToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6186,"src":"24229:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CToken_$6186_$","typeString":"type(contract CToken)"}},"id":11727,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"24229:9:14","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},{"argumentTypes":null,"hexValue":"30","id":11728,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24240:1:14","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"argumentTypes":null,"hexValue":"30","id":11729,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24243:1:14","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":11723,"name":"getHypotheticalAccountLiquidityInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12025,"src":"24180:39:14","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_contract$_CToken_$6186_$_t_uint256_$_t_uint256_$returns$_t_enum$_Error_$13574_$_t_uint256_$_t_uint256_$","typeString":"function (address,contract CToken,uint256,uint256) view returns (enum ComptrollerErrorReporter.Error,uint256,uint256)"}},"id":11730,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"24180:65:14","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_Error_$13574_$_t_uint256_$_t_uint256_$","typeString":"tuple(enum ComptrollerErrorReporter.Error,uint256,uint256)"}},"functionReturnParameters":11722,"id":11731,"nodeType":"Return","src":"24173:72:14"}]},"documentation":"@notice Determine the current account liquidity wrt collateral requirements\n@return (possible error code,\naccount liquidity in excess of collateral requirements,\n account shortfall below collateral requirements)","id":11733,"implemented":true,"kind":"function","modifiers":[],"name":"getAccountLiquidityInternal","nodeType":"FunctionDefinition","parameters":{"id":11715,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11714,"name":"account","nodeType":"VariableDeclaration","scope":11733,"src":"24104:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11713,"name":"address","nodeType":"ElementaryTypeName","src":"24104:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"24103:17:14"},"returnParameters":{"id":11722,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11717,"name":"","nodeType":"VariableDeclaration","scope":11733,"src":"24144:5:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"},"typeName":{"contractScope":null,"id":11716,"name":"Error","nodeType":"UserDefinedTypeName","referencedDeclaration":13574,"src":"24144:5:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},"value":null,"visibility":"internal"},{"constant":false,"id":11719,"name":"","nodeType":"VariableDeclaration","scope":11733,"src":"24151:4:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11718,"name":"uint","nodeType":"ElementaryTypeName","src":"24151:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":11721,"name":"","nodeType":"VariableDeclaration","scope":11733,"src":"24157:4:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11720,"name":"uint","nodeType":"ElementaryTypeName","src":"24157:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"24143:19:14"},"scope":12745,"src":"24067:185:14","stateMutability":"view","superFunction":null,"visibility":"internal"},{"body":{"id":12024,"nodeType":"Block","src":"25217:3311:14","statements":[{"assignments":[11751],"declarations":[{"constant":false,"id":11751,"name":"vars","nodeType":"VariableDeclaration","scope":12024,"src":"25228:37:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_AccountLiquidityLocalVars_$11678_memory_ptr","typeString":"struct ComptrollerG1.AccountLiquidityLocalVars"},"typeName":{"contractScope":null,"id":11750,"name":"AccountLiquidityLocalVars","nodeType":"UserDefinedTypeName","referencedDeclaration":11678,"src":"25228:25:14","typeDescriptions":{"typeIdentifier":"t_struct$_AccountLiquidityLocalVars_$11678_storage_ptr","typeString":"struct ComptrollerG1.AccountLiquidityLocalVars"}},"value":null,"visibility":"internal"}],"id":11752,"initialValue":null,"nodeType":"VariableDeclarationStatement","src":"25228:37:14"},{"assignments":[11754],"declarations":[{"constant":false,"id":11754,"name":"oErr","nodeType":"VariableDeclaration","scope":12024,"src":"25312:9:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11753,"name":"uint","nodeType":"ElementaryTypeName","src":"25312:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":11755,"initialValue":null,"nodeType":"VariableDeclarationStatement","src":"25312:9:14"},{"assignments":[11757],"declarations":[{"constant":false,"id":11757,"name":"mErr","nodeType":"VariableDeclaration","scope":12024,"src":"25331:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"typeName":{"contractScope":null,"id":11756,"name":"MathError","nodeType":"UserDefinedTypeName","referencedDeclaration":6659,"src":"25331:9:14","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"value":null,"visibility":"internal"}],"id":11758,"initialValue":null,"nodeType":"VariableDeclarationStatement","src":"25331:14:14"},{"assignments":[11762],"declarations":[{"constant":false,"id":11762,"name":"assets","nodeType":"VariableDeclaration","scope":12024,"src":"25400:22:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_memory_ptr","typeString":"contract CToken[]"},"typeName":{"baseType":{"contractScope":null,"id":11760,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"25400:6:14","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":11761,"length":null,"nodeType":"ArrayTypeName","src":"25400:8:14","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_storage_ptr","typeString":"contract CToken[]"}},"value":null,"visibility":"internal"}],"id":11766,"initialValue":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":11763,"name":"accountAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13044,"src":"25425:13:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_array$_t_contract$_CToken_$6186_$dyn_storage_$","typeString":"mapping(address => contract CToken[] storage ref)"}},"id":11765,"indexExpression":{"argumentTypes":null,"id":11764,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11735,"src":"25439:7:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"25425:22:14","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_storage","typeString":"contract CToken[] storage ref"}},"nodeType":"VariableDeclarationStatement","src":"25400:47:14"},{"body":{"id":11994,"nodeType":"Block","src":"25498:2687:14","statements":[{"assignments":[11779],"declarations":[{"constant":false,"id":11779,"name":"asset","nodeType":"VariableDeclaration","scope":11994,"src":"25512:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},"typeName":{"contractScope":null,"id":11778,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"25512:6:14","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"value":null,"visibility":"internal"}],"id":11783,"initialValue":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":11780,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11762,"src":"25527:6:14","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_memory_ptr","typeString":"contract CToken[] memory"}},"id":11782,"indexExpression":{"argumentTypes":null,"id":11781,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11768,"src":"25534:1:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"25527:9:14","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"nodeType":"VariableDeclarationStatement","src":"25512:24:14"},{"expression":{"argumentTypes":null,"id":11796,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":11784,"name":"oErr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11754,"src":"25619:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":11785,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11751,"src":"25625:4:14","typeDescriptions":{"typeIdentifier":"t_struct$_AccountLiquidityLocalVars_$11678_memory_ptr","typeString":"struct ComptrollerG1.AccountLiquidityLocalVars memory"}},"id":11786,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"cTokenBalance","nodeType":"MemberAccess","referencedDeclaration":11663,"src":"25625:18:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":11787,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11751,"src":"25645:4:14","typeDescriptions":{"typeIdentifier":"t_struct$_AccountLiquidityLocalVars_$11678_memory_ptr","typeString":"struct ComptrollerG1.AccountLiquidityLocalVars memory"}},"id":11788,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"borrowBalance","nodeType":"MemberAccess","referencedDeclaration":11665,"src":"25645:18:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":11789,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11751,"src":"25665:4:14","typeDescriptions":{"typeIdentifier":"t_struct$_AccountLiquidityLocalVars_$11678_memory_ptr","typeString":"struct ComptrollerG1.AccountLiquidityLocalVars memory"}},"id":11790,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"exchangeRateMantissa","nodeType":"MemberAccess","referencedDeclaration":11667,"src":"25665:25:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":11791,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"25618:73:14","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256,uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":11794,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11735,"src":"25719:7:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":11792,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11779,"src":"25694:5:14","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":11793,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAccountSnapshot","nodeType":"MemberAccess","referencedDeclaration":2903,"src":"25694:24:14","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"function (address) view external returns (uint256,uint256,uint256,uint256)"}},"id":11795,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"25694:33:14","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256,uint256,uint256)"}},"src":"25618:109:14","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11797,"nodeType":"ExpressionStatement","src":"25618:109:14"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11800,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":11798,"name":"oErr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11754,"src":"25745:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"hexValue":"30","id":11799,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25753:1:14","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"25745:9:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":11808,"nodeType":"IfStatement","src":"25741:164:14","trueBody":{"id":11807,"nodeType":"Block","src":"25756:149:14","statements":[{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":11801,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"25863:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":11802,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"SNAPSHOT_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"25863:20:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},{"argumentTypes":null,"hexValue":"30","id":11803,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25885:1:14","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"argumentTypes":null,"hexValue":"30","id":11804,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25888:1:14","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":11805,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"25862:28:14","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_Error_$13574_$_t_rational_0_by_1_$_t_rational_0_by_1_$","typeString":"tuple(enum ComptrollerErrorReporter.Error,int_const 0,int_const 0)"}},"functionReturnParameters":11749,"id":11806,"nodeType":"Return","src":"25855:35:14"}]}},{"expression":{"argumentTypes":null,"id":11820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":11809,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11751,"src":"25918:4:14","typeDescriptions":{"typeIdentifier":"t_struct$_AccountLiquidityLocalVars_$11678_memory_ptr","typeString":"struct ComptrollerG1.AccountLiquidityLocalVars memory"}},"id":11811,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"collateralFactor","nodeType":"MemberAccess","referencedDeclaration":11671,"src":"25918:21:14","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":11813,"name":"markets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10561,"src":"25957:7:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Market_$10557_storage_$","typeString":"mapping(address => struct ComptrollerG1.Market storage ref)"}},"id":11817,"indexExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":11815,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11779,"src":"25973:5:14","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":11814,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25965:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":11816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"25965:14:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"25957:23:14","typeDescriptions":{"typeIdentifier":"t_struct$_Market_$10557_storage","typeString":"struct ComptrollerG1.Market storage ref"}},"id":11818,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"collateralFactorMantissa","nodeType":"MemberAccess","referencedDeclaration":10552,"src":"25957:48:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11812,"name":"Exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14390,"src":"25942:3:14","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Exp_$14390_storage_ptr_$","typeString":"type(struct ExponentialNoError.Exp storage pointer)"}},"id":11819,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"25942:65:14","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}},"src":"25918:89:14","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}},"id":11821,"nodeType":"ExpressionStatement","src":"25918:89:14"},{"expression":{"argumentTypes":null,"id":11829,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":11822,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11751,"src":"26021:4:14","typeDescriptions":{"typeIdentifier":"t_struct$_AccountLiquidityLocalVars_$11678_memory_ptr","typeString":"struct ComptrollerG1.AccountLiquidityLocalVars memory"}},"id":11824,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"exchangeRate","nodeType":"MemberAccess","referencedDeclaration":11673,"src":"26021:17:14","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":11826,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11751,"src":"26056:4:14","typeDescriptions":{"typeIdentifier":"t_struct$_AccountLiquidityLocalVars_$11678_memory_ptr","typeString":"struct ComptrollerG1.AccountLiquidityLocalVars memory"}},"id":11827,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"exchangeRateMantissa","nodeType":"MemberAccess","referencedDeclaration":11667,"src":"26056:25:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11825,"name":"Exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14390,"src":"26041:3:14","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Exp_$14390_storage_ptr_$","typeString":"type(struct ExponentialNoError.Exp storage pointer)"}},"id":11828,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"26041:42:14","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}},"src":"26021:62:14","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}},"id":11830,"nodeType":"ExpressionStatement","src":"26021:62:14"},{"expression":{"argumentTypes":null,"id":11838,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":11831,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11751,"src":"26151:4:14","typeDescriptions":{"typeIdentifier":"t_struct$_AccountLiquidityLocalVars_$11678_memory_ptr","typeString":"struct ComptrollerG1.AccountLiquidityLocalVars memory"}},"id":11833,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"oraclePriceMantissa","nodeType":"MemberAccess","referencedDeclaration":11669,"src":"26151:24:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":11836,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11779,"src":"26204:5:14","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"expression":{"argumentTypes":null,"id":11834,"name":"oracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13033,"src":"26178:6:14","typeDescriptions":{"typeIdentifier":"t_contract$_PriceOracle_$18689","typeString":"contract PriceOracle"}},"id":11835,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getUnderlyingPrice","nodeType":"MemberAccess","referencedDeclaration":18688,"src":"26178:25:14","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_contract$_CToken_$6186_$returns$_t_uint256_$","typeString":"function (contract CToken) view external returns (uint256)"}},"id":11837,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"26178:32:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26151:59:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11839,"nodeType":"ExpressionStatement","src":"26151:59:14"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11843,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":11840,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11751,"src":"26228:4:14","typeDescriptions":{"typeIdentifier":"t_struct$_AccountLiquidityLocalVars_$11678_memory_ptr","typeString":"struct ComptrollerG1.AccountLiquidityLocalVars memory"}},"id":11841,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"oraclePriceMantissa","nodeType":"MemberAccess","referencedDeclaration":11669,"src":"26228:24:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":11842,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26256:1:14","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"26228:29:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":11851,"nodeType":"IfStatement","src":"26224:100:14","trueBody":{"id":11850,"nodeType":"Block","src":"26259:65:14","statements":[{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":11844,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"26285:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":11845,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"PRICE_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"26285:17:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},{"argumentTypes":null,"hexValue":"30","id":11846,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26304:1:14","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"argumentTypes":null,"hexValue":"30","id":11847,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26307:1:14","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":11848,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"26284:25:14","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_Error_$13574_$_t_rational_0_by_1_$_t_rational_0_by_1_$","typeString":"tuple(enum ComptrollerErrorReporter.Error,int_const 0,int_const 0)"}},"functionReturnParameters":11749,"id":11849,"nodeType":"Return","src":"26277:32:14"}]}},{"expression":{"argumentTypes":null,"id":11859,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":11852,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11751,"src":"26337:4:14","typeDescriptions":{"typeIdentifier":"t_struct$_AccountLiquidityLocalVars_$11678_memory_ptr","typeString":"struct ComptrollerG1.AccountLiquidityLocalVars memory"}},"id":11854,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"oraclePrice","nodeType":"MemberAccess","referencedDeclaration":11675,"src":"26337:16:14","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":11856,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11751,"src":"26371:4:14","typeDescriptions":{"typeIdentifier":"t_struct$_AccountLiquidityLocalVars_$11678_memory_ptr","typeString":"struct ComptrollerG1.AccountLiquidityLocalVars memory"}},"id":11857,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"oraclePriceMantissa","nodeType":"MemberAccess","referencedDeclaration":11669,"src":"26371:24:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11855,"name":"Exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14390,"src":"26356:3:14","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Exp_$14390_storage_ptr_$","typeString":"type(struct ExponentialNoError.Exp storage pointer)"}},"id":11858,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"26356:41:14","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}},"src":"26337:60:14","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}},"id":11860,"nodeType":"ExpressionStatement","src":"26337:60:14"},{"expression":{"argumentTypes":null,"id":11873,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":11861,"name":"mErr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11757,"src":"26506:4:14","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":11862,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11751,"src":"26512:4:14","typeDescriptions":{"typeIdentifier":"t_struct$_AccountLiquidityLocalVars_$11678_memory_ptr","typeString":"struct ComptrollerG1.AccountLiquidityLocalVars memory"}},"id":11863,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"tokensToEther","nodeType":"MemberAccess","referencedDeclaration":11677,"src":"26512:18:14","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}}],"id":11864,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"26505:26:14","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_struct$_Exp_$14390_memory_$","typeString":"tuple(enum CarefulMath.MathError,struct ExponentialNoError.Exp memory)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":11866,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11751,"src":"26542:4:14","typeDescriptions":{"typeIdentifier":"t_struct$_AccountLiquidityLocalVars_$11678_memory_ptr","typeString":"struct ComptrollerG1.AccountLiquidityLocalVars memory"}},"id":11867,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"collateralFactor","nodeType":"MemberAccess","referencedDeclaration":11671,"src":"26542:21:14","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":11868,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11751,"src":"26565:4:14","typeDescriptions":{"typeIdentifier":"t_struct$_AccountLiquidityLocalVars_$11678_memory_ptr","typeString":"struct ComptrollerG1.AccountLiquidityLocalVars memory"}},"id":11869,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"exchangeRate","nodeType":"MemberAccess","referencedDeclaration":11673,"src":"26565:17:14","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":11870,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11751,"src":"26584:4:14","typeDescriptions":{"typeIdentifier":"t_struct$_AccountLiquidityLocalVars_$11678_memory_ptr","typeString":"struct ComptrollerG1.AccountLiquidityLocalVars memory"}},"id":11871,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"oraclePrice","nodeType":"MemberAccess","referencedDeclaration":11675,"src":"26584:16:14","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"},{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"},{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}],"id":11865,"name":"mulExp3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14351,"src":"26534:7:14","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Exp_$14390_memory_ptr_$_t_struct$_Exp_$14390_memory_ptr_$_t_struct$_Exp_$14390_memory_ptr_$returns$_t_enum$_MathError_$6659_$_t_struct$_Exp_$14390_memory_ptr_$","typeString":"function (struct ExponentialNoError.Exp memory,struct ExponentialNoError.Exp memory,struct ExponentialNoError.Exp memory) pure returns (enum CarefulMath.MathError,struct ExponentialNoError.Exp memory)"}},"id":11872,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"26534:67:14","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_struct$_Exp_$14390_memory_ptr_$","typeString":"tuple(enum CarefulMath.MathError,struct ExponentialNoError.Exp memory)"}},"src":"26505:96:14","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11874,"nodeType":"ExpressionStatement","src":"26505:96:14"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"id":11878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":11875,"name":"mErr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11757,"src":"26619:4:14","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":11876,"name":"MathError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6659,"src":"26627:9:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MathError_$6659_$","typeString":"type(enum CarefulMath.MathError)"}},"id":11877,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"26627:18:14","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"src":"26619:26:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":11886,"nodeType":"IfStatement","src":"26615:96:14","trueBody":{"id":11885,"nodeType":"Block","src":"26647:64:14","statements":[{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":11879,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"26673:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":11880,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"MATH_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"26673:16:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},{"argumentTypes":null,"hexValue":"30","id":11881,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26691:1:14","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"argumentTypes":null,"hexValue":"30","id":11882,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26694:1:14","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":11883,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"26672:24:14","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_Error_$13574_$_t_rational_0_by_1_$_t_rational_0_by_1_$","typeString":"tuple(enum ComptrollerErrorReporter.Error,int_const 0,int_const 0)"}},"functionReturnParameters":11749,"id":11884,"nodeType":"Return","src":"26665:31:14"}]}},{"expression":{"argumentTypes":null,"id":11899,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":11887,"name":"mErr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11757,"src":"26788:4:14","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":11888,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11751,"src":"26794:4:14","typeDescriptions":{"typeIdentifier":"t_struct$_AccountLiquidityLocalVars_$11678_memory_ptr","typeString":"struct ComptrollerG1.AccountLiquidityLocalVars memory"}},"id":11889,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"sumCollateral","nodeType":"MemberAccess","referencedDeclaration":11659,"src":"26794:18:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":11890,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"26787:26:14","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":11892,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11751,"src":"26841:4:14","typeDescriptions":{"typeIdentifier":"t_struct$_AccountLiquidityLocalVars_$11678_memory_ptr","typeString":"struct ComptrollerG1.AccountLiquidityLocalVars memory"}},"id":11893,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tokensToEther","nodeType":"MemberAccess","referencedDeclaration":11677,"src":"26841:18:14","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":11894,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11751,"src":"26861:4:14","typeDescriptions":{"typeIdentifier":"t_struct$_AccountLiquidityLocalVars_$11678_memory_ptr","typeString":"struct ComptrollerG1.AccountLiquidityLocalVars memory"}},"id":11895,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"cTokenBalance","nodeType":"MemberAccess","referencedDeclaration":11663,"src":"26861:18:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":11896,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11751,"src":"26881:4:14","typeDescriptions":{"typeIdentifier":"t_struct$_AccountLiquidityLocalVars_$11678_memory_ptr","typeString":"struct ComptrollerG1.AccountLiquidityLocalVars memory"}},"id":11897,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"sumCollateral","nodeType":"MemberAccess","referencedDeclaration":11659,"src":"26881:18:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11891,"name":"mulScalarTruncateAddUInt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14095,"src":"26816:24:14","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Exp_$14390_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"function (struct ExponentialNoError.Exp memory,uint256,uint256) pure returns (enum CarefulMath.MathError,uint256)"}},"id":11898,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"26816:84:14","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"src":"26787:113:14","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11900,"nodeType":"ExpressionStatement","src":"26787:113:14"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"id":11904,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":11901,"name":"mErr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11757,"src":"26918:4:14","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":11902,"name":"MathError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6659,"src":"26926:9:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MathError_$6659_$","typeString":"type(enum CarefulMath.MathError)"}},"id":11903,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"26926:18:14","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"src":"26918:26:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":11912,"nodeType":"IfStatement","src":"26914:96:14","trueBody":{"id":11911,"nodeType":"Block","src":"26946:64:14","statements":[{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":11905,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"26972:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":11906,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"MATH_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"26972:16:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},{"argumentTypes":null,"hexValue":"30","id":11907,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26990:1:14","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"argumentTypes":null,"hexValue":"30","id":11908,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26993:1:14","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":11909,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"26971:24:14","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_Error_$13574_$_t_rational_0_by_1_$_t_rational_0_by_1_$","typeString":"tuple(enum ComptrollerErrorReporter.Error,int_const 0,int_const 0)"}},"functionReturnParameters":11749,"id":11910,"nodeType":"Return","src":"26964:31:14"}]}},{"expression":{"argumentTypes":null,"id":11925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":11913,"name":"mErr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11757,"src":"27092:4:14","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":11914,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11751,"src":"27098:4:14","typeDescriptions":{"typeIdentifier":"t_struct$_AccountLiquidityLocalVars_$11678_memory_ptr","typeString":"struct ComptrollerG1.AccountLiquidityLocalVars memory"}},"id":11915,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"sumBorrowPlusEffects","nodeType":"MemberAccess","referencedDeclaration":11661,"src":"27098:25:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":11916,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"27091:33:14","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":11918,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11751,"src":"27152:4:14","typeDescriptions":{"typeIdentifier":"t_struct$_AccountLiquidityLocalVars_$11678_memory_ptr","typeString":"struct ComptrollerG1.AccountLiquidityLocalVars memory"}},"id":11919,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"oraclePrice","nodeType":"MemberAccess","referencedDeclaration":11675,"src":"27152:16:14","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":11920,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11751,"src":"27170:4:14","typeDescriptions":{"typeIdentifier":"t_struct$_AccountLiquidityLocalVars_$11678_memory_ptr","typeString":"struct ComptrollerG1.AccountLiquidityLocalVars memory"}},"id":11921,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"borrowBalance","nodeType":"MemberAccess","referencedDeclaration":11665,"src":"27170:18:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":11922,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11751,"src":"27190:4:14","typeDescriptions":{"typeIdentifier":"t_struct$_AccountLiquidityLocalVars_$11678_memory_ptr","typeString":"struct ComptrollerG1.AccountLiquidityLocalVars memory"}},"id":11923,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"sumBorrowPlusEffects","nodeType":"MemberAccess","referencedDeclaration":11661,"src":"27190:25:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11917,"name":"mulScalarTruncateAddUInt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14095,"src":"27127:24:14","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Exp_$14390_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"function (struct ExponentialNoError.Exp memory,uint256,uint256) pure returns (enum CarefulMath.MathError,uint256)"}},"id":11924,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"27127:89:14","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"src":"27091:125:14","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11926,"nodeType":"ExpressionStatement","src":"27091:125:14"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"id":11930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":11927,"name":"mErr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11757,"src":"27234:4:14","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":11928,"name":"MathError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6659,"src":"27242:9:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MathError_$6659_$","typeString":"type(enum CarefulMath.MathError)"}},"id":11929,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"27242:18:14","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"src":"27234:26:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":11938,"nodeType":"IfStatement","src":"27230:96:14","trueBody":{"id":11937,"nodeType":"Block","src":"27262:64:14","statements":[{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":11931,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"27288:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":11932,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"MATH_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"27288:16:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},{"argumentTypes":null,"hexValue":"30","id":11933,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27306:1:14","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"argumentTypes":null,"hexValue":"30","id":11934,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27309:1:14","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":11935,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"27287:24:14","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_Error_$13574_$_t_rational_0_by_1_$_t_rational_0_by_1_$","typeString":"tuple(enum ComptrollerErrorReporter.Error,int_const 0,int_const 0)"}},"functionReturnParameters":11749,"id":11936,"nodeType":"Return","src":"27280:31:14"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},"id":11941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":11939,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11779,"src":"27410:5:14","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":11940,"name":"cTokenModify","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11737,"src":"27419:12:14","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"src":"27410:21:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":11993,"nodeType":"IfStatement","src":"27406:769:14","trueBody":{"id":11992,"nodeType":"Block","src":"27433:742:14","statements":[{"expression":{"argumentTypes":null,"id":11953,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":11942,"name":"mErr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11757,"src":"27557:4:14","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":11943,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11751,"src":"27563:4:14","typeDescriptions":{"typeIdentifier":"t_struct$_AccountLiquidityLocalVars_$11678_memory_ptr","typeString":"struct ComptrollerG1.AccountLiquidityLocalVars memory"}},"id":11944,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"sumBorrowPlusEffects","nodeType":"MemberAccess","referencedDeclaration":11661,"src":"27563:25:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":11945,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"27556:33:14","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":11947,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11751,"src":"27617:4:14","typeDescriptions":{"typeIdentifier":"t_struct$_AccountLiquidityLocalVars_$11678_memory_ptr","typeString":"struct ComptrollerG1.AccountLiquidityLocalVars memory"}},"id":11948,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tokensToEther","nodeType":"MemberAccess","referencedDeclaration":11677,"src":"27617:18:14","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}},{"argumentTypes":null,"id":11949,"name":"redeemTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11739,"src":"27637:12:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":11950,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11751,"src":"27651:4:14","typeDescriptions":{"typeIdentifier":"t_struct$_AccountLiquidityLocalVars_$11678_memory_ptr","typeString":"struct ComptrollerG1.AccountLiquidityLocalVars memory"}},"id":11951,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"sumBorrowPlusEffects","nodeType":"MemberAccess","referencedDeclaration":11661,"src":"27651:25:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11946,"name":"mulScalarTruncateAddUInt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14095,"src":"27592:24:14","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Exp_$14390_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"function (struct ExponentialNoError.Exp memory,uint256,uint256) pure returns (enum CarefulMath.MathError,uint256)"}},"id":11952,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"27592:85:14","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"src":"27556:121:14","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11954,"nodeType":"ExpressionStatement","src":"27556:121:14"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"id":11958,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":11955,"name":"mErr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11757,"src":"27699:4:14","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":11956,"name":"MathError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6659,"src":"27707:9:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MathError_$6659_$","typeString":"type(enum CarefulMath.MathError)"}},"id":11957,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"27707:18:14","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"src":"27699:26:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":11966,"nodeType":"IfStatement","src":"27695:104:14","trueBody":{"id":11965,"nodeType":"Block","src":"27727:72:14","statements":[{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":11959,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"27757:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":11960,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"MATH_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"27757:16:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},{"argumentTypes":null,"hexValue":"30","id":11961,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27775:1:14","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"argumentTypes":null,"hexValue":"30","id":11962,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27778:1:14","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":11963,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"27756:24:14","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_Error_$13574_$_t_rational_0_by_1_$_t_rational_0_by_1_$","typeString":"tuple(enum ComptrollerErrorReporter.Error,int_const 0,int_const 0)"}},"functionReturnParameters":11749,"id":11964,"nodeType":"Return","src":"27749:31:14"}]}},{"expression":{"argumentTypes":null,"id":11978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":11967,"name":"mErr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11757,"src":"27921:4:14","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":11968,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11751,"src":"27927:4:14","typeDescriptions":{"typeIdentifier":"t_struct$_AccountLiquidityLocalVars_$11678_memory_ptr","typeString":"struct ComptrollerG1.AccountLiquidityLocalVars memory"}},"id":11969,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"sumBorrowPlusEffects","nodeType":"MemberAccess","referencedDeclaration":11661,"src":"27927:25:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":11970,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"27920:33:14","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":11972,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11751,"src":"27981:4:14","typeDescriptions":{"typeIdentifier":"t_struct$_AccountLiquidityLocalVars_$11678_memory_ptr","typeString":"struct ComptrollerG1.AccountLiquidityLocalVars memory"}},"id":11973,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"oraclePrice","nodeType":"MemberAccess","referencedDeclaration":11675,"src":"27981:16:14","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}},{"argumentTypes":null,"id":11974,"name":"borrowAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11741,"src":"27999:12:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":11975,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11751,"src":"28013:4:14","typeDescriptions":{"typeIdentifier":"t_struct$_AccountLiquidityLocalVars_$11678_memory_ptr","typeString":"struct ComptrollerG1.AccountLiquidityLocalVars memory"}},"id":11976,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"sumBorrowPlusEffects","nodeType":"MemberAccess","referencedDeclaration":11661,"src":"28013:25:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11971,"name":"mulScalarTruncateAddUInt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14095,"src":"27956:24:14","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Exp_$14390_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"function (struct ExponentialNoError.Exp memory,uint256,uint256) pure returns (enum CarefulMath.MathError,uint256)"}},"id":11977,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"27956:83:14","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"src":"27920:119:14","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11979,"nodeType":"ExpressionStatement","src":"27920:119:14"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"id":11983,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":11980,"name":"mErr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11757,"src":"28061:4:14","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":11981,"name":"MathError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6659,"src":"28069:9:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MathError_$6659_$","typeString":"type(enum CarefulMath.MathError)"}},"id":11982,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"28069:18:14","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"src":"28061:26:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":11991,"nodeType":"IfStatement","src":"28057:104:14","trueBody":{"id":11990,"nodeType":"Block","src":"28089:72:14","statements":[{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":11984,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"28119:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":11985,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"MATH_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"28119:16:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},{"argumentTypes":null,"hexValue":"30","id":11986,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"28137:1:14","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"argumentTypes":null,"hexValue":"30","id":11987,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"28140:1:14","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":11988,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"28118:24:14","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_Error_$13574_$_t_rational_0_by_1_$_t_rational_0_by_1_$","typeString":"tuple(enum ComptrollerErrorReporter.Error,int_const 0,int_const 0)"}},"functionReturnParameters":11749,"id":11989,"nodeType":"Return","src":"28111:31:14"}]}}]}}]},"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11774,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":11771,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11768,"src":"25474:1:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":11772,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11762,"src":"25478:6:14","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_memory_ptr","typeString":"contract CToken[] memory"}},"id":11773,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"25478:13:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25474:17:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11995,"initializationExpression":{"assignments":[11768],"declarations":[{"constant":false,"id":11768,"name":"i","nodeType":"VariableDeclaration","scope":11995,"src":"25462:6:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11767,"name":"uint","nodeType":"ElementaryTypeName","src":"25462:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":11770,"initialValue":{"argumentTypes":null,"hexValue":"30","id":11769,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25471:1:14","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"25462:10:14"},"loopExpression":{"expression":{"argumentTypes":null,"id":11776,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"25493:3:14","subExpression":{"argumentTypes":null,"id":11775,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11768,"src":"25493:1:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11777,"nodeType":"ExpressionStatement","src":"25493:3:14"},"nodeType":"ForStatement","src":"25457:2728:14"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":11996,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11751,"src":"28270:4:14","typeDescriptions":{"typeIdentifier":"t_struct$_AccountLiquidityLocalVars_$11678_memory_ptr","typeString":"struct ComptrollerG1.AccountLiquidityLocalVars memory"}},"id":11997,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"sumCollateral","nodeType":"MemberAccess","referencedDeclaration":11659,"src":"28270:18:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":11998,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11751,"src":"28291:4:14","typeDescriptions":{"typeIdentifier":"t_struct$_AccountLiquidityLocalVars_$11678_memory_ptr","typeString":"struct ComptrollerG1.AccountLiquidityLocalVars memory"}},"id":11999,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"sumBorrowPlusEffects","nodeType":"MemberAccess","referencedDeclaration":11661,"src":"28291:25:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"28270:46:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":12022,"nodeType":"Block","src":"28423:99:14","statements":[{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":12012,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"28445:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":12013,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"28445:14:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},{"argumentTypes":null,"hexValue":"30","id":12014,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"28461:1:14","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":12015,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11751,"src":"28464:4:14","typeDescriptions":{"typeIdentifier":"t_struct$_AccountLiquidityLocalVars_$11678_memory_ptr","typeString":"struct ComptrollerG1.AccountLiquidityLocalVars memory"}},"id":12016,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"sumBorrowPlusEffects","nodeType":"MemberAccess","referencedDeclaration":11661,"src":"28464:25:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":12017,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11751,"src":"28492:4:14","typeDescriptions":{"typeIdentifier":"t_struct$_AccountLiquidityLocalVars_$11678_memory_ptr","typeString":"struct ComptrollerG1.AccountLiquidityLocalVars memory"}},"id":12018,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"sumCollateral","nodeType":"MemberAccess","referencedDeclaration":11659,"src":"28492:18:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"28464:46:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":12020,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"28444:67:14","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_Error_$13574_$_t_rational_0_by_1_$_t_uint256_$","typeString":"tuple(enum ComptrollerErrorReporter.Error,int_const 0,uint256)"}},"functionReturnParameters":11749,"id":12021,"nodeType":"Return","src":"28437:74:14"}]},"id":12023,"nodeType":"IfStatement","src":"28266:256:14","trueBody":{"id":12011,"nodeType":"Block","src":"28318:99:14","statements":[{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":12001,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"28340:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":12002,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"28340:14:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12007,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":12003,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11751,"src":"28356:4:14","typeDescriptions":{"typeIdentifier":"t_struct$_AccountLiquidityLocalVars_$11678_memory_ptr","typeString":"struct ComptrollerG1.AccountLiquidityLocalVars memory"}},"id":12004,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"sumCollateral","nodeType":"MemberAccess","referencedDeclaration":11659,"src":"28356:18:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":12005,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11751,"src":"28377:4:14","typeDescriptions":{"typeIdentifier":"t_struct$_AccountLiquidityLocalVars_$11678_memory_ptr","typeString":"struct ComptrollerG1.AccountLiquidityLocalVars memory"}},"id":12006,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"sumBorrowPlusEffects","nodeType":"MemberAccess","referencedDeclaration":11661,"src":"28377:25:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"28356:46:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"30","id":12008,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"28404:1:14","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":12009,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"28339:67:14","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_Error_$13574_$_t_uint256_$_t_rational_0_by_1_$","typeString":"tuple(enum ComptrollerErrorReporter.Error,uint256,int_const 0)"}},"functionReturnParameters":11749,"id":12010,"nodeType":"Return","src":"28332:74:14"}]}}]},"documentation":"@notice Determine what the account liquidity would be if the given amounts were redeemed/borrowed\n@param cTokenModify The market to hypothetically redeem/borrow in\n@param account The account to determine liquidity for\n@param redeemTokens The number of tokens to hypothetically redeem\n@param borrowAmount The amount of underlying to hypothetically borrow\n@dev Note that we calculate the exchangeRateStored for each collateral cToken using stored data,\n without calculating accumulated interest.\n@return (possible error code,\nhypothetical account liquidity in excess of collateral requirements,\n hypothetical account shortfall below collateral requirements)","id":12025,"implemented":true,"kind":"function","modifiers":[],"name":"getHypotheticalAccountLiquidityInternal","nodeType":"FunctionDefinition","parameters":{"id":11742,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11735,"name":"account","nodeType":"VariableDeclaration","scope":12025,"src":"25075:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11734,"name":"address","nodeType":"ElementaryTypeName","src":"25075:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":11737,"name":"cTokenModify","nodeType":"VariableDeclaration","scope":12025,"src":"25100:19:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},"typeName":{"contractScope":null,"id":11736,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"25100:6:14","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"value":null,"visibility":"internal"},{"constant":false,"id":11739,"name":"redeemTokens","nodeType":"VariableDeclaration","scope":12025,"src":"25129:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11738,"name":"uint","nodeType":"ElementaryTypeName","src":"25129:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":11741,"name":"borrowAmount","nodeType":"VariableDeclaration","scope":12025,"src":"25156:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11740,"name":"uint","nodeType":"ElementaryTypeName","src":"25156:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"25065:109:14"},"returnParameters":{"id":11749,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11744,"name":"","nodeType":"VariableDeclaration","scope":12025,"src":"25198:5:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"},"typeName":{"contractScope":null,"id":11743,"name":"Error","nodeType":"UserDefinedTypeName","referencedDeclaration":13574,"src":"25198:5:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},"value":null,"visibility":"internal"},{"constant":false,"id":11746,"name":"","nodeType":"VariableDeclaration","scope":12025,"src":"25205:4:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11745,"name":"uint","nodeType":"ElementaryTypeName","src":"25205:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":11748,"name":"","nodeType":"VariableDeclaration","scope":12025,"src":"25211:4:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11747,"name":"uint","nodeType":"ElementaryTypeName","src":"25211:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"25197:19:14"},"scope":12745,"src":"25017:3511:14","stateMutability":"view","superFunction":null,"visibility":"internal"},{"body":{"id":12190,"nodeType":"Block","src":"29192:1783:14","statements":[{"assignments":[12039],"declarations":[{"constant":false,"id":12039,"name":"priceBorrowedMantissa","nodeType":"VariableDeclaration","scope":12190,"src":"29271:26:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12038,"name":"uint","nodeType":"ElementaryTypeName","src":"29271:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":12046,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":12043,"name":"cTokenBorrowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12027,"src":"29333:14:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12042,"name":"CToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6186,"src":"29326:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CToken_$6186_$","typeString":"type(contract CToken)"}},"id":12044,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"29326:22:14","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"expression":{"argumentTypes":null,"id":12040,"name":"oracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13033,"src":"29300:6:14","typeDescriptions":{"typeIdentifier":"t_contract$_PriceOracle_$18689","typeString":"contract PriceOracle"}},"id":12041,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getUnderlyingPrice","nodeType":"MemberAccess","referencedDeclaration":18688,"src":"29300:25:14","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_contract$_CToken_$6186_$returns$_t_uint256_$","typeString":"function (contract CToken) view external returns (uint256)"}},"id":12045,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"29300:49:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"29271:78:14"},{"assignments":[12048],"declarations":[{"constant":false,"id":12048,"name":"priceCollateralMantissa","nodeType":"VariableDeclaration","scope":12190,"src":"29359:28:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12047,"name":"uint","nodeType":"ElementaryTypeName","src":"29359:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":12055,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":12052,"name":"cTokenCollateral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12029,"src":"29423:16:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12051,"name":"CToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6186,"src":"29416:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CToken_$6186_$","typeString":"type(contract CToken)"}},"id":12053,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"29416:24:14","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"expression":{"argumentTypes":null,"id":12049,"name":"oracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13033,"src":"29390:6:14","typeDescriptions":{"typeIdentifier":"t_contract$_PriceOracle_$18689","typeString":"contract PriceOracle"}},"id":12050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getUnderlyingPrice","nodeType":"MemberAccess","referencedDeclaration":18688,"src":"29390:25:14","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_contract$_CToken_$6186_$returns$_t_uint256_$","typeString":"function (contract CToken) view external returns (uint256)"}},"id":12054,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"29390:51:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"29359:82:14"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":12062,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12058,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":12056,"name":"priceBorrowedMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12039,"src":"29455:21:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":12057,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29480:1:14","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"29455:26:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":12059,"name":"priceCollateralMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12048,"src":"29485:23:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":12060,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29512:1:14","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"29485:28:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"29455:58:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":12071,"nodeType":"IfStatement","src":"29451:124:14","trueBody":{"id":12070,"nodeType":"Block","src":"29515:60:14","statements":[{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":12064,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"29542:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":12065,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"PRICE_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"29542:17:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":12063,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"29537:4:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":12066,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"29537:23:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"30","id":12067,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29562:1:14","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":12068,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"29536:28:14","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_rational_0_by_1_$","typeString":"tuple(uint256,int_const 0)"}},"functionReturnParameters":12037,"id":12069,"nodeType":"Return","src":"29529:35:14"}]}},{"assignments":[12073],"declarations":[{"constant":false,"id":12073,"name":"exchangeRateMantissa","nodeType":"VariableDeclaration","scope":12190,"src":"29948:25:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12072,"name":"uint","nodeType":"ElementaryTypeName","src":"29948:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":12079,"initialValue":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":12075,"name":"cTokenCollateral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12029,"src":"29983:16:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12074,"name":"CToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6186,"src":"29976:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CToken_$6186_$","typeString":"type(contract CToken)"}},"id":12076,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"29976:24:14","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":12077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"exchangeRateStored","nodeType":"MemberAccess","referencedDeclaration":3158,"src":"29976:43:14","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":12078,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"29976:45:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"29948:73:14"},{"assignments":[12081],"declarations":[{"constant":false,"id":12081,"name":"seizeTokens","nodeType":"VariableDeclaration","scope":12190,"src":"30057:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12080,"name":"uint","nodeType":"ElementaryTypeName","src":"30057:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":12082,"initialValue":null,"nodeType":"VariableDeclarationStatement","src":"30057:16:14"},{"assignments":[12084],"declarations":[{"constant":false,"id":12084,"name":"numerator","nodeType":"VariableDeclaration","scope":12190,"src":"30083:20:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":12083,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"30083:3:14","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"}],"id":12085,"initialValue":null,"nodeType":"VariableDeclarationStatement","src":"30083:20:14"},{"assignments":[12087],"declarations":[{"constant":false,"id":12087,"name":"denominator","nodeType":"VariableDeclaration","scope":12190,"src":"30113:22:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":12086,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"30113:3:14","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"}],"id":12088,"initialValue":null,"nodeType":"VariableDeclarationStatement","src":"30113:22:14"},{"assignments":[12090],"declarations":[{"constant":false,"id":12090,"name":"ratio","nodeType":"VariableDeclaration","scope":12190,"src":"30145:16:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":12089,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"30145:3:14","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"}],"id":12091,"initialValue":null,"nodeType":"VariableDeclarationStatement","src":"30145:16:14"},{"assignments":[12093],"declarations":[{"constant":false,"id":12093,"name":"mathErr","nodeType":"VariableDeclaration","scope":12190,"src":"30171:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"typeName":{"contractScope":null,"id":12092,"name":"MathError","nodeType":"UserDefinedTypeName","referencedDeclaration":6659,"src":"30171:9:14","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"value":null,"visibility":"internal"}],"id":12094,"initialValue":null,"nodeType":"VariableDeclarationStatement","src":"30171:17:14"},{"expression":{"argumentTypes":null,"id":12102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":12095,"name":"mathErr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12093,"src":"30200:7:14","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},{"argumentTypes":null,"id":12096,"name":"numerator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12084,"src":"30209:9:14","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}}],"id":12097,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"30199:20:14","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_struct$_Exp_$14390_memory_ptr_$","typeString":"tuple(enum CarefulMath.MathError,struct ExponentialNoError.Exp memory)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":12099,"name":"liquidationIncentiveMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13037,"src":"30229:28:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":12100,"name":"priceBorrowedMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12039,"src":"30259:21:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12098,"name":"mulExp","nodeType":"Identifier","overloadedDeclarations":[14292,14313],"referencedDeclaration":14313,"src":"30222:6:14","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_enum$_MathError_$6659_$_t_struct$_Exp_$14390_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (enum CarefulMath.MathError,struct ExponentialNoError.Exp memory)"}},"id":12101,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"30222:59:14","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_struct$_Exp_$14390_memory_ptr_$","typeString":"tuple(enum CarefulMath.MathError,struct ExponentialNoError.Exp memory)"}},"src":"30199:82:14","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12103,"nodeType":"ExpressionStatement","src":"30199:82:14"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"id":12107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":12104,"name":"mathErr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12093,"src":"30295:7:14","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":12105,"name":"MathError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6659,"src":"30306:9:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MathError_$6659_$","typeString":"type(enum CarefulMath.MathError)"}},"id":12106,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"30306:18:14","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"src":"30295:29:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":12116,"nodeType":"IfStatement","src":"30291:94:14","trueBody":{"id":12115,"nodeType":"Block","src":"30326:59:14","statements":[{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":12109,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"30353:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":12110,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"MATH_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"30353:16:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":12108,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"30348:4:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":12111,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"30348:22:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"30","id":12112,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30372:1:14","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":12113,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"30347:27:14","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_rational_0_by_1_$","typeString":"tuple(uint256,int_const 0)"}},"functionReturnParameters":12037,"id":12114,"nodeType":"Return","src":"30340:34:14"}]}},{"expression":{"argumentTypes":null,"id":12124,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":12117,"name":"mathErr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12093,"src":"30396:7:14","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},{"argumentTypes":null,"id":12118,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12087,"src":"30405:11:14","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}}],"id":12119,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"30395:22:14","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_struct$_Exp_$14390_memory_ptr_$","typeString":"tuple(enum CarefulMath.MathError,struct ExponentialNoError.Exp memory)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":12121,"name":"priceCollateralMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12048,"src":"30427:23:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":12122,"name":"exchangeRateMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12073,"src":"30452:20:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12120,"name":"mulExp","nodeType":"Identifier","overloadedDeclarations":[14292,14313],"referencedDeclaration":14313,"src":"30420:6:14","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_enum$_MathError_$6659_$_t_struct$_Exp_$14390_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (enum CarefulMath.MathError,struct ExponentialNoError.Exp memory)"}},"id":12123,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"30420:53:14","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_struct$_Exp_$14390_memory_ptr_$","typeString":"tuple(enum CarefulMath.MathError,struct ExponentialNoError.Exp memory)"}},"src":"30395:78:14","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12125,"nodeType":"ExpressionStatement","src":"30395:78:14"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"id":12129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":12126,"name":"mathErr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12093,"src":"30487:7:14","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":12127,"name":"MathError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6659,"src":"30498:9:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MathError_$6659_$","typeString":"type(enum CarefulMath.MathError)"}},"id":12128,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"30498:18:14","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"src":"30487:29:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":12138,"nodeType":"IfStatement","src":"30483:94:14","trueBody":{"id":12137,"nodeType":"Block","src":"30518:59:14","statements":[{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":12131,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"30545:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":12132,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"MATH_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"30545:16:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":12130,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"30540:4:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":12133,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"30540:22:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"30","id":12134,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30564:1:14","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":12135,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"30539:27:14","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_rational_0_by_1_$","typeString":"tuple(uint256,int_const 0)"}},"functionReturnParameters":12037,"id":12136,"nodeType":"Return","src":"30532:34:14"}]}},{"expression":{"argumentTypes":null,"id":12146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":12139,"name":"mathErr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12093,"src":"30588:7:14","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},{"argumentTypes":null,"id":12140,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12090,"src":"30597:5:14","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}}],"id":12141,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"30587:16:14","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_struct$_Exp_$14390_memory_ptr_$","typeString":"tuple(enum CarefulMath.MathError,struct ExponentialNoError.Exp memory)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":12143,"name":"numerator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12084,"src":"30613:9:14","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}},{"argumentTypes":null,"id":12144,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12087,"src":"30624:11:14","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"},{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}],"id":12142,"name":"divExp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14370,"src":"30606:6:14","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Exp_$14390_memory_ptr_$_t_struct$_Exp_$14390_memory_ptr_$returns$_t_enum$_MathError_$6659_$_t_struct$_Exp_$14390_memory_ptr_$","typeString":"function (struct ExponentialNoError.Exp memory,struct ExponentialNoError.Exp memory) pure returns (enum CarefulMath.MathError,struct ExponentialNoError.Exp memory)"}},"id":12145,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"30606:30:14","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_struct$_Exp_$14390_memory_ptr_$","typeString":"tuple(enum CarefulMath.MathError,struct ExponentialNoError.Exp memory)"}},"src":"30587:49:14","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12147,"nodeType":"ExpressionStatement","src":"30587:49:14"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"id":12151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":12148,"name":"mathErr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12093,"src":"30650:7:14","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":12149,"name":"MathError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6659,"src":"30661:9:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MathError_$6659_$","typeString":"type(enum CarefulMath.MathError)"}},"id":12150,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"30661:18:14","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"src":"30650:29:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":12160,"nodeType":"IfStatement","src":"30646:94:14","trueBody":{"id":12159,"nodeType":"Block","src":"30681:59:14","statements":[{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":12153,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"30708:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":12154,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"MATH_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"30708:16:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":12152,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"30703:4:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":12155,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"30703:22:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"30","id":12156,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30727:1:14","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":12157,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"30702:27:14","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_rational_0_by_1_$","typeString":"tuple(uint256,int_const 0)"}},"functionReturnParameters":12037,"id":12158,"nodeType":"Return","src":"30695:34:14"}]}},{"expression":{"argumentTypes":null,"id":12168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":12161,"name":"mathErr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12093,"src":"30751:7:14","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},{"argumentTypes":null,"id":12162,"name":"seizeTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12081,"src":"30760:11:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":12163,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"30750:22:14","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":12165,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12090,"src":"30793:5:14","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}},{"argumentTypes":null,"id":12166,"name":"repayAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12031,"src":"30800:11:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12164,"name":"mulScalarTruncate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14055,"src":"30775:17:14","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Exp_$14390_memory_ptr_$_t_uint256_$returns$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"function (struct ExponentialNoError.Exp memory,uint256) pure returns (enum CarefulMath.MathError,uint256)"}},"id":12167,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"30775:37:14","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"src":"30750:62:14","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12169,"nodeType":"ExpressionStatement","src":"30750:62:14"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"id":12173,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":12170,"name":"mathErr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12093,"src":"30826:7:14","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":12171,"name":"MathError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6659,"src":"30837:9:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MathError_$6659_$","typeString":"type(enum CarefulMath.MathError)"}},"id":12172,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"30837:18:14","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"src":"30826:29:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":12182,"nodeType":"IfStatement","src":"30822:94:14","trueBody":{"id":12181,"nodeType":"Block","src":"30857:59:14","statements":[{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":12175,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"30884:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":12176,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"MATH_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"30884:16:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":12174,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"30879:4:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":12177,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"30879:22:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"30","id":12178,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30903:1:14","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":12179,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"30878:27:14","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_rational_0_by_1_$","typeString":"tuple(uint256,int_const 0)"}},"functionReturnParameters":12037,"id":12180,"nodeType":"Return","src":"30871:34:14"}]}},{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":12184,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"30939:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":12185,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"30939:14:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":12183,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"30934:4:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":12186,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"30934:20:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":12187,"name":"seizeTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12081,"src":"30956:11:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":12188,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"30933:35:14","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"functionReturnParameters":12037,"id":12189,"nodeType":"Return","src":"30926:42:14"}]},"documentation":"@notice Calculate number of tokens of collateral asset to seize given an underlying amount\n@dev Used in liquidation (called in cToken.liquidateBorrowFresh)\n@param cTokenBorrowed The address of the borrowed cToken\n@param cTokenCollateral The address of the collateral cToken\n@param repayAmount The amount of cTokenBorrowed underlying to convert into cTokenCollateral tokens\n@return (errorCode, number of cTokenCollateral tokens to be seized in a liquidation)","id":12191,"implemented":true,"kind":"function","modifiers":[],"name":"liquidateCalculateSeizeTokens","nodeType":"FunctionDefinition","parameters":{"id":12032,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12027,"name":"cTokenBorrowed","nodeType":"VariableDeclaration","scope":12191,"src":"29089:22:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12026,"name":"address","nodeType":"ElementaryTypeName","src":"29089:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":12029,"name":"cTokenCollateral","nodeType":"VariableDeclaration","scope":12191,"src":"29113:24:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12028,"name":"address","nodeType":"ElementaryTypeName","src":"29113:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":12031,"name":"repayAmount","nodeType":"VariableDeclaration","scope":12191,"src":"29139:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12030,"name":"uint","nodeType":"ElementaryTypeName","src":"29139:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"29088:68:14"},"returnParameters":{"id":12037,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12034,"name":"","nodeType":"VariableDeclaration","scope":12191,"src":"29180:4:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12033,"name":"uint","nodeType":"ElementaryTypeName","src":"29180:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":12036,"name":"","nodeType":"VariableDeclaration","scope":12191,"src":"29186:4:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12035,"name":"uint","nodeType":"ElementaryTypeName","src":"29186:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"29179:12:14"},"scope":12745,"src":"29050:1925:14","stateMutability":"view","superFunction":12973,"visibility":"external"},{"body":{"id":12228,"nodeType":"Block","src":"31301:705:14","statements":[{"condition":{"argumentTypes":null,"id":12200,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"31406:22:14","subExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":12198,"name":"adminOrInitializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12744,"src":"31407:19:14","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":12199,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"31407:21:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":12209,"nodeType":"IfStatement","src":"31402:126:14","trueBody":{"id":12208,"nodeType":"Block","src":"31430:98:14","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":12202,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"31456:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":12203,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"UNAUTHORIZED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"31456:18:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":12204,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13603,"src":"31476:11:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13603_$","typeString":"type(enum ComptrollerErrorReporter.FailureInfo)"}},"id":12205,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"SET_PRICE_ORACLE_OWNER_CHECK","nodeType":"MemberAccess","referencedDeclaration":null,"src":"31476:40:14","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}],"id":12201,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13635,"src":"31451:4:14","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13574_$_t_enum$_FailureInfo_$13603_$returns$_t_uint256_$","typeString":"function (enum ComptrollerErrorReporter.Error,enum ComptrollerErrorReporter.FailureInfo) returns (uint256)"}},"id":12206,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"31451:66:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12197,"id":12207,"nodeType":"Return","src":"31444:73:14"}]}},{"assignments":[12211],"declarations":[{"constant":false,"id":12211,"name":"oldOracle","nodeType":"VariableDeclaration","scope":12228,"src":"31590:21:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_PriceOracle_$18689","typeString":"contract PriceOracle"},"typeName":{"contractScope":null,"id":12210,"name":"PriceOracle","nodeType":"UserDefinedTypeName","referencedDeclaration":18689,"src":"31590:11:14","typeDescriptions":{"typeIdentifier":"t_contract$_PriceOracle_$18689","typeString":"contract PriceOracle"}},"value":null,"visibility":"internal"}],"id":12213,"initialValue":{"argumentTypes":null,"id":12212,"name":"oracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13033,"src":"31614:6:14","typeDescriptions":{"typeIdentifier":"t_contract$_PriceOracle_$18689","typeString":"contract PriceOracle"}},"nodeType":"VariableDeclarationStatement","src":"31590:30:14"},{"expression":{"argumentTypes":null,"id":12216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":12214,"name":"oracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13033,"src":"31838:6:14","typeDescriptions":{"typeIdentifier":"t_contract$_PriceOracle_$18689","typeString":"contract PriceOracle"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":12215,"name":"newOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12193,"src":"31847:9:14","typeDescriptions":{"typeIdentifier":"t_contract$_PriceOracle_$18689","typeString":"contract PriceOracle"}},"src":"31838:18:14","typeDescriptions":{"typeIdentifier":"t_contract$_PriceOracle_$18689","typeString":"contract PriceOracle"}},"id":12217,"nodeType":"ExpressionStatement","src":"31838:18:14"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":12219,"name":"oldOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12211,"src":"31940:9:14","typeDescriptions":{"typeIdentifier":"t_contract$_PriceOracle_$18689","typeString":"contract PriceOracle"}},{"argumentTypes":null,"id":12220,"name":"newOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12193,"src":"31951:9:14","typeDescriptions":{"typeIdentifier":"t_contract$_PriceOracle_$18689","typeString":"contract PriceOracle"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PriceOracle_$18689","typeString":"contract PriceOracle"},{"typeIdentifier":"t_contract$_PriceOracle_$18689","typeString":"contract PriceOracle"}],"id":12218,"name":"NewPriceOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10609,"src":"31925:14:14","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_contract$_PriceOracle_$18689_$_t_contract$_PriceOracle_$18689_$returns$__$","typeString":"function (contract PriceOracle,contract PriceOracle)"}},"id":12221,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"31925:36:14","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12222,"nodeType":"EmitStatement","src":"31920:41:14"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":12224,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"31984:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":12225,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"31984:14:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":12223,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"31979:4:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":12226,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"31979:20:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12197,"id":12227,"nodeType":"Return","src":"31972:27:14"}]},"documentation":"@notice Sets a new price oracle for the comptroller\n@dev Admin function to set a new price oracle\n@return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)","id":12229,"implemented":true,"kind":"function","modifiers":[],"name":"_setPriceOracle","nodeType":"FunctionDefinition","parameters":{"id":12194,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12193,"name":"newOracle","nodeType":"VariableDeclaration","scope":12229,"src":"31256:21:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_PriceOracle_$18689","typeString":"contract PriceOracle"},"typeName":{"contractScope":null,"id":12192,"name":"PriceOracle","nodeType":"UserDefinedTypeName","referencedDeclaration":18689,"src":"31256:11:14","typeDescriptions":{"typeIdentifier":"t_contract$_PriceOracle_$18689","typeString":"contract PriceOracle"}},"value":null,"visibility":"internal"}],"src":"31255:23:14"},"returnParameters":{"id":12197,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12196,"name":"","nodeType":"VariableDeclaration","scope":12229,"src":"31295:4:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12195,"name":"uint","nodeType":"ElementaryTypeName","src":"31295:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"31294:6:14"},"scope":12745,"src":"31231:775:14","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":12310,"nodeType":"Block","src":"32380:1012:14","statements":[{"condition":{"argumentTypes":null,"id":12238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"32485:22:14","subExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":12236,"name":"adminOrInitializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12744,"src":"32486:19:14","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":12237,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"32486:21:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":12247,"nodeType":"IfStatement","src":"32481:126:14","trueBody":{"id":12246,"nodeType":"Block","src":"32509:98:14","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":12240,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"32535:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":12241,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"UNAUTHORIZED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"32535:18:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":12242,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13603,"src":"32555:11:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13603_$","typeString":"type(enum ComptrollerErrorReporter.FailureInfo)"}},"id":12243,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"SET_CLOSE_FACTOR_OWNER_CHECK","nodeType":"MemberAccess","referencedDeclaration":null,"src":"32555:40:14","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}],"id":12239,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13635,"src":"32530:4:14","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13574_$_t_enum$_FailureInfo_$13603_$returns$_t_uint256_$","typeString":"function (enum ComptrollerErrorReporter.Error,enum ComptrollerErrorReporter.FailureInfo) returns (uint256)"}},"id":12244,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"32530:66:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12235,"id":12245,"nodeType":"Return","src":"32523:73:14"}]}},{"assignments":[12249],"declarations":[{"constant":false,"id":12249,"name":"newCloseFactorExp","nodeType":"VariableDeclaration","scope":12310,"src":"32617:28:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":12248,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"32617:3:14","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"}],"id":12253,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":12251,"name":"newCloseFactorMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12231,"src":"32663:22:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12250,"name":"Exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14390,"src":"32648:3:14","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Exp_$14390_storage_ptr_$","typeString":"type(struct ExponentialNoError.Exp storage pointer)"}},"id":12252,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"32648:39:14","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}},"nodeType":"VariableDeclarationStatement","src":"32617:70:14"},{"assignments":[12255],"declarations":[{"constant":false,"id":12255,"name":"lowLimit","nodeType":"VariableDeclaration","scope":12310,"src":"32697:19:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":12254,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"32697:3:14","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"}],"id":12259,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":12257,"name":"closeFactorMinMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10612,"src":"32734:22:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12256,"name":"Exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14390,"src":"32719:3:14","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Exp_$14390_storage_ptr_$","typeString":"type(struct ExponentialNoError.Exp storage pointer)"}},"id":12258,"isConstant":false,"isLValue":false,"isPure":true,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"32719:39:14","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}},"nodeType":"VariableDeclarationStatement","src":"32697:61:14"},{"condition":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":12261,"name":"newCloseFactorExp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12249,"src":"32791:17:14","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}},{"argumentTypes":null,"id":12262,"name":"lowLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12255,"src":"32810:8:14","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"},{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}],"id":12260,"name":"lessThanOrEqualExp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14485,"src":"32772:18:14","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Exp_$14390_memory_ptr_$_t_struct$_Exp_$14390_memory_ptr_$returns$_t_bool_$","typeString":"function (struct ExponentialNoError.Exp memory,struct ExponentialNoError.Exp memory) pure returns (bool)"}},"id":12263,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"32772:47:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":12272,"nodeType":"IfStatement","src":"32768:158:14","trueBody":{"id":12271,"nodeType":"Block","src":"32821:105:14","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":12265,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"32847:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":12266,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"INVALID_CLOSE_FACTOR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"32847:26:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":12267,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13603,"src":"32875:11:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13603_$","typeString":"type(enum ComptrollerErrorReporter.FailureInfo)"}},"id":12268,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"SET_CLOSE_FACTOR_VALIDATION","nodeType":"MemberAccess","referencedDeclaration":null,"src":"32875:39:14","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}],"id":12264,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13635,"src":"32842:4:14","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13574_$_t_enum$_FailureInfo_$13603_$returns$_t_uint256_$","typeString":"function (enum ComptrollerErrorReporter.Error,enum ComptrollerErrorReporter.FailureInfo) returns (uint256)"}},"id":12269,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"32842:73:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12235,"id":12270,"nodeType":"Return","src":"32835:80:14"}]}},{"assignments":[12274],"declarations":[{"constant":false,"id":12274,"name":"highLimit","nodeType":"VariableDeclaration","scope":12310,"src":"32936:20:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":12273,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"32936:3:14","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"}],"id":12278,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":12276,"name":"closeFactorMaxMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10615,"src":"32974:22:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12275,"name":"Exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14390,"src":"32959:3:14","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Exp_$14390_storage_ptr_$","typeString":"type(struct ExponentialNoError.Exp storage pointer)"}},"id":12277,"isConstant":false,"isLValue":false,"isPure":true,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"32959:39:14","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}},"nodeType":"VariableDeclarationStatement","src":"32936:62:14"},{"condition":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":12280,"name":"highLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12274,"src":"33024:9:14","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}},{"argumentTypes":null,"id":12281,"name":"newCloseFactorExp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12249,"src":"33035:17:14","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"},{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}],"id":12279,"name":"lessThanExp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14469,"src":"33012:11:14","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Exp_$14390_memory_ptr_$_t_struct$_Exp_$14390_memory_ptr_$returns$_t_bool_$","typeString":"function (struct ExponentialNoError.Exp memory,struct ExponentialNoError.Exp memory) pure returns (bool)"}},"id":12282,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"33012:41:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":12291,"nodeType":"IfStatement","src":"33008:152:14","trueBody":{"id":12290,"nodeType":"Block","src":"33055:105:14","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":12284,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"33081:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":12285,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"INVALID_CLOSE_FACTOR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"33081:26:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":12286,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13603,"src":"33109:11:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13603_$","typeString":"type(enum ComptrollerErrorReporter.FailureInfo)"}},"id":12287,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"SET_CLOSE_FACTOR_VALIDATION","nodeType":"MemberAccess","referencedDeclaration":null,"src":"33109:39:14","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}],"id":12283,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13635,"src":"33076:4:14","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13574_$_t_enum$_FailureInfo_$13603_$returns$_t_uint256_$","typeString":"function (enum ComptrollerErrorReporter.Error,enum ComptrollerErrorReporter.FailureInfo) returns (uint256)"}},"id":12288,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"33076:73:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12235,"id":12289,"nodeType":"Return","src":"33069:80:14"}]}},{"assignments":[12293],"declarations":[{"constant":false,"id":12293,"name":"oldCloseFactorMantissa","nodeType":"VariableDeclaration","scope":12310,"src":"33170:27:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12292,"name":"uint","nodeType":"ElementaryTypeName","src":"33170:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":12295,"initialValue":{"argumentTypes":null,"id":12294,"name":"closeFactorMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13035,"src":"33200:19:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"33170:49:14"},{"expression":{"argumentTypes":null,"id":12298,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":12296,"name":"closeFactorMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13035,"src":"33229:19:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":12297,"name":"newCloseFactorMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12231,"src":"33251:22:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"33229:44:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12299,"nodeType":"ExpressionStatement","src":"33229:44:14"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":12301,"name":"oldCloseFactorMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12293,"src":"33303:22:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":12302,"name":"closeFactorMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13035,"src":"33327:19:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12300,"name":"NewCloseFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10583,"src":"33288:14:14","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":12303,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"33288:59:14","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12304,"nodeType":"EmitStatement","src":"33283:64:14"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":12306,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"33370:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":12307,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"33370:14:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":12305,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"33365:4:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":12308,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"33365:20:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12235,"id":12309,"nodeType":"Return","src":"33358:27:14"}]},"documentation":"@notice Sets the closeFactor used when liquidating borrows\n@dev Admin function to set closeFactor\n@param newCloseFactorMantissa New close factor, scaled by 1e18\n@return uint 0=success, otherwise a failure. (See ErrorReporter for details)","id":12311,"implemented":true,"kind":"function","modifiers":[],"name":"_setCloseFactor","nodeType":"FunctionDefinition","parameters":{"id":12232,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12231,"name":"newCloseFactorMantissa","nodeType":"VariableDeclaration","scope":12311,"src":"32324:27:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12230,"name":"uint","nodeType":"ElementaryTypeName","src":"32324:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"32323:29:14"},"returnParameters":{"id":12235,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12234,"name":"","nodeType":"VariableDeclaration","scope":12311,"src":"32371:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12233,"name":"uint256","nodeType":"ElementaryTypeName","src":"32371:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"32370:9:14"},"scope":12745,"src":"32299:1093:14","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":{"id":12418,"nodeType":"Block","src":"33863:1501:14","statements":[{"condition":{"argumentTypes":null,"id":12322,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"33910:17:14","subExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":12320,"name":"hasAdminRights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13024,"src":"33911:14:14","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":12321,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"33911:16:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":12331,"nodeType":"IfStatement","src":"33906:126:14","trueBody":{"id":12330,"nodeType":"Block","src":"33929:103:14","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":12324,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"33955:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":12325,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"UNAUTHORIZED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"33955:18:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":12326,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13603,"src":"33975:11:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13603_$","typeString":"type(enum ComptrollerErrorReporter.FailureInfo)"}},"id":12327,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"SET_COLLATERAL_FACTOR_OWNER_CHECK","nodeType":"MemberAccess","referencedDeclaration":null,"src":"33975:45:14","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}],"id":12323,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13635,"src":"33950:4:14","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13574_$_t_enum$_FailureInfo_$13603_$returns$_t_uint256_$","typeString":"function (enum ComptrollerErrorReporter.Error,enum ComptrollerErrorReporter.FailureInfo) returns (uint256)"}},"id":12328,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"33950:71:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12319,"id":12329,"nodeType":"Return","src":"33943:78:14"}]}},{"assignments":[12333],"declarations":[{"constant":false,"id":12333,"name":"market","nodeType":"VariableDeclaration","scope":12418,"src":"34077:21:14","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Market_$10557_storage_ptr","typeString":"struct ComptrollerG1.Market"},"typeName":{"contractScope":null,"id":12332,"name":"Market","nodeType":"UserDefinedTypeName","referencedDeclaration":10557,"src":"34077:6:14","typeDescriptions":{"typeIdentifier":"t_struct$_Market_$10557_storage_ptr","typeString":"struct ComptrollerG1.Market"}},"value":null,"visibility":"internal"}],"id":12339,"initialValue":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":12334,"name":"markets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10561,"src":"34101:7:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Market_$10557_storage_$","typeString":"mapping(address => struct ComptrollerG1.Market storage ref)"}},"id":12338,"indexExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":12336,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12313,"src":"34117:6:14","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":12335,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34109:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":12337,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"34109:15:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"34101:24:14","typeDescriptions":{"typeIdentifier":"t_struct$_Market_$10557_storage","typeString":"struct ComptrollerG1.Market storage ref"}},"nodeType":"VariableDeclarationStatement","src":"34077:48:14"},{"condition":{"argumentTypes":null,"id":12342,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"34139:16:14","subExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":12340,"name":"market","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12333,"src":"34140:6:14","typeDescriptions":{"typeIdentifier":"t_struct$_Market_$10557_storage_ptr","typeString":"struct ComptrollerG1.Market storage pointer"}},"id":12341,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"isListed","nodeType":"MemberAccess","referencedDeclaration":10550,"src":"34140:15:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":12351,"nodeType":"IfStatement","src":"34135:128:14","trueBody":{"id":12350,"nodeType":"Block","src":"34157:106:14","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":12344,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"34183:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":12345,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"MARKET_NOT_LISTED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"34183:23:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":12346,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13603,"src":"34208:11:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13603_$","typeString":"type(enum ComptrollerErrorReporter.FailureInfo)"}},"id":12347,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"SET_COLLATERAL_FACTOR_NO_EXISTS","nodeType":"MemberAccess","referencedDeclaration":null,"src":"34208:43:14","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}],"id":12343,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13635,"src":"34178:4:14","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13574_$_t_enum$_FailureInfo_$13603_$returns$_t_uint256_$","typeString":"function (enum ComptrollerErrorReporter.Error,enum ComptrollerErrorReporter.FailureInfo) returns (uint256)"}},"id":12348,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"34178:74:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12319,"id":12349,"nodeType":"Return","src":"34171:81:14"}]}},{"assignments":[12353],"declarations":[{"constant":false,"id":12353,"name":"newCollateralFactorExp","nodeType":"VariableDeclaration","scope":12418,"src":"34273:33:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":12352,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"34273:3:14","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"}],"id":12357,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":12355,"name":"newCollateralFactorMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12315,"src":"34324:27:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12354,"name":"Exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14390,"src":"34309:3:14","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Exp_$14390_storage_ptr_$","typeString":"type(struct ExponentialNoError.Exp storage pointer)"}},"id":12356,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"34309:44:14","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}},"nodeType":"VariableDeclarationStatement","src":"34273:80:14"},{"assignments":[12359],"declarations":[{"constant":false,"id":12359,"name":"highLimit","nodeType":"VariableDeclaration","scope":12418,"src":"34406:20:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":12358,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"34406:3:14","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"}],"id":12363,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":12361,"name":"collateralFactorMaxMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10618,"src":"34444:27:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12360,"name":"Exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14390,"src":"34429:3:14","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Exp_$14390_storage_ptr_$","typeString":"type(struct ExponentialNoError.Exp storage pointer)"}},"id":12362,"isConstant":false,"isLValue":false,"isPure":true,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"34429:44:14","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}},"nodeType":"VariableDeclarationStatement","src":"34406:67:14"},{"condition":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":12365,"name":"highLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12359,"src":"34499:9:14","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}},{"argumentTypes":null,"id":12366,"name":"newCollateralFactorExp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12353,"src":"34510:22:14","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"},{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}],"id":12364,"name":"lessThanExp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14469,"src":"34487:11:14","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Exp_$14390_memory_ptr_$_t_struct$_Exp_$14390_memory_ptr_$returns$_t_bool_$","typeString":"function (struct ExponentialNoError.Exp memory,struct ExponentialNoError.Exp memory) pure returns (bool)"}},"id":12367,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"34487:46:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":12376,"nodeType":"IfStatement","src":"34483:167:14","trueBody":{"id":12375,"nodeType":"Block","src":"34535:115:14","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":12369,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"34561:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":12370,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"INVALID_COLLATERAL_FACTOR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"34561:31:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":12371,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13603,"src":"34594:11:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13603_$","typeString":"type(enum ComptrollerErrorReporter.FailureInfo)"}},"id":12372,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"SET_COLLATERAL_FACTOR_VALIDATION","nodeType":"MemberAccess","referencedDeclaration":null,"src":"34594:44:14","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}],"id":12368,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13635,"src":"34556:4:14","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13574_$_t_enum$_FailureInfo_$13603_$returns$_t_uint256_$","typeString":"function (enum ComptrollerErrorReporter.Error,enum ComptrollerErrorReporter.FailureInfo) returns (uint256)"}},"id":12373,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"34556:83:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12319,"id":12374,"nodeType":"Return","src":"34549:90:14"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":12386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12379,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":12377,"name":"newCollateralFactorMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12315,"src":"34721:27:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"hexValue":"30","id":12378,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"34752:1:14","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"34721:32:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12385,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":12382,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12313,"src":"34783:6:14","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"expression":{"argumentTypes":null,"id":12380,"name":"oracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13033,"src":"34757:6:14","typeDescriptions":{"typeIdentifier":"t_contract$_PriceOracle_$18689","typeString":"contract PriceOracle"}},"id":12381,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getUnderlyingPrice","nodeType":"MemberAccess","referencedDeclaration":18688,"src":"34757:25:14","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_contract$_CToken_$6186_$returns$_t_uint256_$","typeString":"function (contract CToken) view external returns (uint256)"}},"id":12383,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"34757:33:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":12384,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"34794:1:14","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"34757:38:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"34721:74:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":12395,"nodeType":"IfStatement","src":"34717:184:14","trueBody":{"id":12394,"nodeType":"Block","src":"34797:104:14","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":12388,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"34823:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":12389,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"PRICE_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"34823:17:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":12390,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13603,"src":"34842:11:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13603_$","typeString":"type(enum ComptrollerErrorReporter.FailureInfo)"}},"id":12391,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"SET_COLLATERAL_FACTOR_WITHOUT_PRICE","nodeType":"MemberAccess","referencedDeclaration":null,"src":"34842:47:14","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}],"id":12387,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13635,"src":"34818:4:14","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13574_$_t_enum$_FailureInfo_$13603_$returns$_t_uint256_$","typeString":"function (enum ComptrollerErrorReporter.Error,enum ComptrollerErrorReporter.FailureInfo) returns (uint256)"}},"id":12392,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"34818:72:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12319,"id":12393,"nodeType":"Return","src":"34811:79:14"}]}},{"assignments":[12397],"declarations":[{"constant":false,"id":12397,"name":"oldCollateralFactorMantissa","nodeType":"VariableDeclaration","scope":12418,"src":"34998:32:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12396,"name":"uint","nodeType":"ElementaryTypeName","src":"34998:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":12400,"initialValue":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":12398,"name":"market","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12333,"src":"35033:6:14","typeDescriptions":{"typeIdentifier":"t_struct$_Market_$10557_storage_ptr","typeString":"struct ComptrollerG1.Market storage pointer"}},"id":12399,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"collateralFactorMantissa","nodeType":"MemberAccess","referencedDeclaration":10552,"src":"35033:31:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"34998:66:14"},{"expression":{"argumentTypes":null,"id":12405,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":12401,"name":"market","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12333,"src":"35074:6:14","typeDescriptions":{"typeIdentifier":"t_struct$_Market_$10557_storage_ptr","typeString":"struct ComptrollerG1.Market storage pointer"}},"id":12403,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"collateralFactorMantissa","nodeType":"MemberAccess","referencedDeclaration":10552,"src":"35074:31:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":12404,"name":"newCollateralFactorMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12315,"src":"35108:27:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"35074:61:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12406,"nodeType":"ExpressionStatement","src":"35074:61:14"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":12408,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12313,"src":"35254:6:14","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},{"argumentTypes":null,"id":12409,"name":"oldCollateralFactorMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12397,"src":"35262:27:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":12410,"name":"newCollateralFactorMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12315,"src":"35291:27:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12407,"name":"NewCollateralFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10591,"src":"35234:19:14","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_contract$_CToken_$6186_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (contract CToken,uint256,uint256)"}},"id":12411,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"35234:85:14","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12412,"nodeType":"EmitStatement","src":"35229:90:14"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":12414,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"35342:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":12415,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"35342:14:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":12413,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"35337:4:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":12416,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"35337:20:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12319,"id":12417,"nodeType":"Return","src":"35330:27:14"}]},"documentation":"@notice Sets the collateralFactor for a market\n@dev Admin function to set per-market collateralFactor\n@param cToken The market to set the factor on\n@param newCollateralFactorMantissa The new collateral factor, scaled by 1e18\n@return uint 0=success, otherwise a failure. (See ErrorReporter for details)","id":12419,"implemented":true,"kind":"function","modifiers":[],"name":"_setCollateralFactor","nodeType":"FunctionDefinition","parameters":{"id":12316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12313,"name":"cToken","nodeType":"VariableDeclaration","scope":12419,"src":"33787:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},"typeName":{"contractScope":null,"id":12312,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"33787:6:14","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"value":null,"visibility":"internal"},{"constant":false,"id":12315,"name":"newCollateralFactorMantissa","nodeType":"VariableDeclaration","scope":12419,"src":"33802:32:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12314,"name":"uint","nodeType":"ElementaryTypeName","src":"33802:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"33786:49:14"},"returnParameters":{"id":12319,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12318,"name":"","nodeType":"VariableDeclaration","scope":12419,"src":"33854:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12317,"name":"uint256","nodeType":"ElementaryTypeName","src":"33854:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"33853:9:14"},"scope":12745,"src":"33757:1607:14","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":{"id":12456,"nodeType":"Block","src":"35704:398:14","statements":[{"condition":{"argumentTypes":null,"id":12428,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"35809:22:14","subExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":12426,"name":"adminOrInitializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12744,"src":"35810:19:14","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":12427,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"35810:21:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":12437,"nodeType":"IfStatement","src":"35805:124:14","trueBody":{"id":12436,"nodeType":"Block","src":"35833:96:14","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":12430,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"35859:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":12431,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"UNAUTHORIZED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"35859:18:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":12432,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13603,"src":"35879:11:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13603_$","typeString":"type(enum ComptrollerErrorReporter.FailureInfo)"}},"id":12433,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"SET_MAX_ASSETS_OWNER_CHECK","nodeType":"MemberAccess","referencedDeclaration":null,"src":"35879:38:14","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}],"id":12429,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13635,"src":"35854:4:14","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13574_$_t_enum$_FailureInfo_$13603_$returns$_t_uint256_$","typeString":"function (enum ComptrollerErrorReporter.Error,enum ComptrollerErrorReporter.FailureInfo) returns (uint256)"}},"id":12434,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"35854:64:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12425,"id":12435,"nodeType":"Return","src":"35847:71:14"}]}},{"assignments":[12439],"declarations":[{"constant":false,"id":12439,"name":"oldMaxAssets","nodeType":"VariableDeclaration","scope":12456,"src":"35939:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12438,"name":"uint","nodeType":"ElementaryTypeName","src":"35939:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":12441,"initialValue":{"argumentTypes":null,"id":12440,"name":"maxAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13039,"src":"35959:9:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"35939:29:14"},{"expression":{"argumentTypes":null,"id":12444,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":12442,"name":"maxAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13039,"src":"35978:9:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":12443,"name":"newMaxAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12421,"src":"35990:12:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"35978:24:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12445,"nodeType":"ExpressionStatement","src":"35978:24:14"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":12447,"name":"oldMaxAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12439,"src":"36030:12:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":12448,"name":"newMaxAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12421,"src":"36044:12:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12446,"name":"NewMaxAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10603,"src":"36017:12:14","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":12449,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"36017:40:14","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12450,"nodeType":"EmitStatement","src":"36012:45:14"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":12452,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"36080:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":12453,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"36080:14:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":12451,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"36075:4:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":12454,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"36075:20:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12425,"id":12455,"nodeType":"Return","src":"36068:27:14"}]},"documentation":"@notice Sets maxAssets which controls how many markets can be entered\n@dev Admin function to set maxAssets\n@param newMaxAssets New max assets\n@return uint 0=success, otherwise a failure. (See ErrorReporter for details)","id":12457,"implemented":true,"kind":"function","modifiers":[],"name":"_setMaxAssets","nodeType":"FunctionDefinition","parameters":{"id":12422,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12421,"name":"newMaxAssets","nodeType":"VariableDeclaration","scope":12457,"src":"35661:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12420,"name":"uint","nodeType":"ElementaryTypeName","src":"35661:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"35660:19:14"},"returnParameters":{"id":12425,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12424,"name":"","nodeType":"VariableDeclaration","scope":12457,"src":"35698:4:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12423,"name":"uint","nodeType":"ElementaryTypeName","src":"35698:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"35697:6:14"},"scope":12745,"src":"35638:464:14","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":{"id":12538,"nodeType":"Block","src":"36491:1438:14","statements":[{"condition":{"argumentTypes":null,"id":12466,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"36596:22:14","subExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":12464,"name":"adminOrInitializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12744,"src":"36597:19:14","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":12465,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"36597:21:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":12475,"nodeType":"IfStatement","src":"36592:135:14","trueBody":{"id":12474,"nodeType":"Block","src":"36620:107:14","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":12468,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"36646:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":12469,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"UNAUTHORIZED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"36646:18:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":12470,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13603,"src":"36666:11:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13603_$","typeString":"type(enum ComptrollerErrorReporter.FailureInfo)"}},"id":12471,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"SET_LIQUIDATION_INCENTIVE_OWNER_CHECK","nodeType":"MemberAccess","referencedDeclaration":null,"src":"36666:49:14","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}],"id":12467,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13635,"src":"36641:4:14","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13574_$_t_enum$_FailureInfo_$13603_$returns$_t_uint256_$","typeString":"function (enum ComptrollerErrorReporter.Error,enum ComptrollerErrorReporter.FailureInfo) returns (uint256)"}},"id":12472,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"36641:75:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12463,"id":12473,"nodeType":"Return","src":"36634:82:14"}]}},{"assignments":[12477],"declarations":[{"constant":false,"id":12477,"name":"newLiquidationIncentive","nodeType":"VariableDeclaration","scope":12538,"src":"36799:34:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":12476,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"36799:3:14","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"}],"id":12481,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":12479,"name":"newLiquidationIncentiveMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12459,"src":"36851:31:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12478,"name":"Exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14390,"src":"36836:3:14","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Exp_$14390_storage_ptr_$","typeString":"type(struct ExponentialNoError.Exp storage pointer)"}},"id":12480,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"36836:48:14","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}},"nodeType":"VariableDeclarationStatement","src":"36799:85:14"},{"assignments":[12483],"declarations":[{"constant":false,"id":12483,"name":"minLiquidationIncentive","nodeType":"VariableDeclaration","scope":12538,"src":"36894:34:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":12482,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"36894:3:14","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"}],"id":12487,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":12485,"name":"liquidationIncentiveMinMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10621,"src":"36946:31:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12484,"name":"Exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14390,"src":"36931:3:14","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Exp_$14390_storage_ptr_$","typeString":"type(struct ExponentialNoError.Exp storage pointer)"}},"id":12486,"isConstant":false,"isLValue":false,"isPure":true,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"36931:48:14","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}},"nodeType":"VariableDeclarationStatement","src":"36894:85:14"},{"condition":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":12489,"name":"newLiquidationIncentive","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12477,"src":"37005:23:14","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}},{"argumentTypes":null,"id":12490,"name":"minLiquidationIncentive","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12483,"src":"37030:23:14","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"},{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}],"id":12488,"name":"lessThanExp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14469,"src":"36993:11:14","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Exp_$14390_memory_ptr_$_t_struct$_Exp_$14390_memory_ptr_$returns$_t_bool_$","typeString":"function (struct ExponentialNoError.Exp memory,struct ExponentialNoError.Exp memory) pure returns (bool)"}},"id":12491,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"36993:61:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":12500,"nodeType":"IfStatement","src":"36989:190:14","trueBody":{"id":12499,"nodeType":"Block","src":"37056:123:14","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":12493,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"37082:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":12494,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"INVALID_LIQUIDATION_INCENTIVE","nodeType":"MemberAccess","referencedDeclaration":null,"src":"37082:35:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":12495,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13603,"src":"37119:11:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13603_$","typeString":"type(enum ComptrollerErrorReporter.FailureInfo)"}},"id":12496,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"SET_LIQUIDATION_INCENTIVE_VALIDATION","nodeType":"MemberAccess","referencedDeclaration":null,"src":"37119:48:14","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}],"id":12492,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13635,"src":"37077:4:14","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13574_$_t_enum$_FailureInfo_$13603_$returns$_t_uint256_$","typeString":"function (enum ComptrollerErrorReporter.Error,enum ComptrollerErrorReporter.FailureInfo) returns (uint256)"}},"id":12497,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"37077:91:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12463,"id":12498,"nodeType":"Return","src":"37070:98:14"}]}},{"assignments":[12502],"declarations":[{"constant":false,"id":12502,"name":"maxLiquidationIncentive","nodeType":"VariableDeclaration","scope":12538,"src":"37189:34:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":12501,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"37189:3:14","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"}],"id":12506,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":12504,"name":"liquidationIncentiveMaxMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10624,"src":"37241:31:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12503,"name":"Exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14390,"src":"37226:3:14","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Exp_$14390_storage_ptr_$","typeString":"type(struct ExponentialNoError.Exp storage pointer)"}},"id":12505,"isConstant":false,"isLValue":false,"isPure":true,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"37226:48:14","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}},"nodeType":"VariableDeclarationStatement","src":"37189:85:14"},{"condition":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":12508,"name":"maxLiquidationIncentive","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12502,"src":"37300:23:14","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}},{"argumentTypes":null,"id":12509,"name":"newLiquidationIncentive","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12477,"src":"37325:23:14","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"},{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}],"id":12507,"name":"lessThanExp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14469,"src":"37288:11:14","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Exp_$14390_memory_ptr_$_t_struct$_Exp_$14390_memory_ptr_$returns$_t_bool_$","typeString":"function (struct ExponentialNoError.Exp memory,struct ExponentialNoError.Exp memory) pure returns (bool)"}},"id":12510,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"37288:61:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":12519,"nodeType":"IfStatement","src":"37284:190:14","trueBody":{"id":12518,"nodeType":"Block","src":"37351:123:14","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":12512,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"37377:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":12513,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"INVALID_LIQUIDATION_INCENTIVE","nodeType":"MemberAccess","referencedDeclaration":null,"src":"37377:35:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":12514,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13603,"src":"37414:11:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13603_$","typeString":"type(enum ComptrollerErrorReporter.FailureInfo)"}},"id":12515,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"SET_LIQUIDATION_INCENTIVE_VALIDATION","nodeType":"MemberAccess","referencedDeclaration":null,"src":"37414:48:14","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}],"id":12511,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13635,"src":"37372:4:14","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13574_$_t_enum$_FailureInfo_$13603_$returns$_t_uint256_$","typeString":"function (enum ComptrollerErrorReporter.Error,enum ComptrollerErrorReporter.FailureInfo) returns (uint256)"}},"id":12516,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"37372:91:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12463,"id":12517,"nodeType":"Return","src":"37365:98:14"}]}},{"assignments":[12521],"declarations":[{"constant":false,"id":12521,"name":"oldLiquidationIncentiveMantissa","nodeType":"VariableDeclaration","scope":12538,"src":"37529:36:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12520,"name":"uint","nodeType":"ElementaryTypeName","src":"37529:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":12523,"initialValue":{"argumentTypes":null,"id":12522,"name":"liquidationIncentiveMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13037,"src":"37568:28:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"37529:67:14"},{"expression":{"argumentTypes":null,"id":12526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":12524,"name":"liquidationIncentiveMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13037,"src":"37661:28:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":12525,"name":"newLiquidationIncentiveMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12459,"src":"37692:31:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"37661:62:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12527,"nodeType":"ExpressionStatement","src":"37661:62:14"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":12529,"name":"oldLiquidationIncentiveMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12521,"src":"37819:31:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":12530,"name":"newLiquidationIncentiveMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12459,"src":"37852:31:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12528,"name":"NewLiquidationIncentive","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10597,"src":"37795:23:14","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":12531,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"37795:89:14","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12532,"nodeType":"EmitStatement","src":"37790:94:14"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":12534,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"37907:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":12535,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"37907:14:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":12533,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"37902:4:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":12536,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"37902:20:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12463,"id":12537,"nodeType":"Return","src":"37895:27:14"}]},"documentation":"@notice Sets liquidationIncentive\n@dev Admin function to set liquidationIncentive\n@param newLiquidationIncentiveMantissa New liquidationIncentive scaled by 1e18\n@return uint 0=success, otherwise a failure. (See ErrorReporter for details)","id":12539,"implemented":true,"kind":"function","modifiers":[],"name":"_setLiquidationIncentive","nodeType":"FunctionDefinition","parameters":{"id":12460,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12459,"name":"newLiquidationIncentiveMantissa","nodeType":"VariableDeclaration","scope":12539,"src":"36429:36:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12458,"name":"uint","nodeType":"ElementaryTypeName","src":"36429:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"36428:38:14"},"returnParameters":{"id":12463,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12462,"name":"","nodeType":"VariableDeclaration","scope":12539,"src":"36485:4:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12461,"name":"uint","nodeType":"ElementaryTypeName","src":"36485:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"36484:6:14"},"scope":12745,"src":"36395:1534:14","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":{"id":12598,"nodeType":"Block","src":"38311:525:14","statements":[{"condition":{"argumentTypes":null,"id":12548,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"38325:17:14","subExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":12546,"name":"hasAdminRights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13024,"src":"38326:14:14","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":12547,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"38326:16:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":12557,"nodeType":"IfStatement","src":"38321:119:14","trueBody":{"id":12556,"nodeType":"Block","src":"38344:96:14","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":12550,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"38370:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":12551,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"UNAUTHORIZED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"38370:18:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":12552,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13603,"src":"38390:11:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13603_$","typeString":"type(enum ComptrollerErrorReporter.FailureInfo)"}},"id":12553,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"SUPPORT_MARKET_OWNER_CHECK","nodeType":"MemberAccess","referencedDeclaration":null,"src":"38390:38:14","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}],"id":12549,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13635,"src":"38365:4:14","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13574_$_t_enum$_FailureInfo_$13603_$returns$_t_uint256_$","typeString":"function (enum ComptrollerErrorReporter.Error,enum ComptrollerErrorReporter.FailureInfo) returns (uint256)"}},"id":12554,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"38365:64:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12545,"id":12555,"nodeType":"Return","src":"38358:71:14"}]}},{"condition":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":12558,"name":"markets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10561,"src":"38454:7:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Market_$10557_storage_$","typeString":"mapping(address => struct ComptrollerG1.Market storage ref)"}},"id":12562,"indexExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":12560,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12541,"src":"38470:6:14","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":12559,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"38462:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":12561,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"38462:15:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"38454:24:14","typeDescriptions":{"typeIdentifier":"t_struct$_Market_$10557_storage","typeString":"struct ComptrollerG1.Market storage ref"}},"id":12563,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"isListed","nodeType":"MemberAccess","referencedDeclaration":10550,"src":"38454:33:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":12572,"nodeType":"IfStatement","src":"38450:139:14","trueBody":{"id":12571,"nodeType":"Block","src":"38489:100:14","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":12565,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"38515:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":12566,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"MARKET_ALREADY_LISTED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"38515:27:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":12567,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13603,"src":"38544:11:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13603_$","typeString":"type(enum ComptrollerErrorReporter.FailureInfo)"}},"id":12568,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"SUPPORT_MARKET_EXISTS","nodeType":"MemberAccess","referencedDeclaration":null,"src":"38544:33:14","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}],"id":12564,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13635,"src":"38510:4:14","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13574_$_t_enum$_FailureInfo_$13603_$returns$_t_uint256_$","typeString":"function (enum ComptrollerErrorReporter.Error,enum ComptrollerErrorReporter.FailureInfo) returns (uint256)"}},"id":12569,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"38510:68:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12545,"id":12570,"nodeType":"Return","src":"38503:75:14"}]}},{"expression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":12573,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12541,"src":"38599:6:14","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":12575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"isCToken","nodeType":"MemberAccess","referencedDeclaration":6276,"src":"38599:15:14","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bool_$","typeString":"function () view external returns (bool)"}},"id":12576,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"38599:17:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12577,"nodeType":"ExpressionStatement","src":"38599:17:14"},{"expression":{"argumentTypes":null,"id":12587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":12578,"name":"markets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10561,"src":"38676:7:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Market_$10557_storage_$","typeString":"mapping(address => struct ComptrollerG1.Market storage ref)"}},"id":12582,"indexExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":12580,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12541,"src":"38692:6:14","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":12579,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"38684:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":12581,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"38684:15:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"38676:24:14","typeDescriptions":{"typeIdentifier":"t_struct$_Market_$10557_storage","typeString":"struct ComptrollerG1.Market storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"74727565","id":12584,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"38721:4:14","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"argumentTypes":null,"hexValue":"30","id":12585,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"38753:1:14","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":12583,"name":"Market","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10557,"src":"38703:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Market_$10557_storage_ptr_$","typeString":"type(struct ComptrollerG1.Market storage pointer)"}},"id":12586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"structConstructorCall","lValueRequested":false,"names":["isListed","collateralFactorMantissa"],"nodeType":"FunctionCall","src":"38703:53:14","typeDescriptions":{"typeIdentifier":"t_struct$_Market_$10557_memory","typeString":"struct ComptrollerG1.Market memory"}},"src":"38676:80:14","typeDescriptions":{"typeIdentifier":"t_struct$_Market_$10557_storage","typeString":"struct ComptrollerG1.Market storage ref"}},"id":12588,"nodeType":"ExpressionStatement","src":"38676:80:14"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":12590,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12541,"src":"38784:6:14","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":12589,"name":"MarketListed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10565,"src":"38771:12:14","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_contract$_CToken_$6186_$returns$__$","typeString":"function (contract CToken)"}},"id":12591,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"38771:20:14","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12592,"nodeType":"EmitStatement","src":"38766:25:14"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":12594,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"38814:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":12595,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"38814:14:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":12593,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"38809:4:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":12596,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"38809:20:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12545,"id":12597,"nodeType":"Return","src":"38802:27:14"}]},"documentation":"@notice Add the market to the markets mapping and set it as listed\n@dev Admin function to set isListed and add support for the market\n@param cToken The address of the market (token) to list\n@return uint 0=success, otherwise a failure. (See enum Error for details)","id":12599,"implemented":true,"kind":"function","modifiers":[],"name":"_supportMarket","nodeType":"FunctionDefinition","parameters":{"id":12542,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12541,"name":"cToken","nodeType":"VariableDeclaration","scope":12599,"src":"38272:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},"typeName":{"contractScope":null,"id":12540,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"38272:6:14","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"value":null,"visibility":"internal"}],"src":"38271:15:14"},"returnParameters":{"id":12545,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12544,"name":"","nodeType":"VariableDeclaration","scope":12599,"src":"38305:4:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12543,"name":"uint","nodeType":"ElementaryTypeName","src":"38305:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"38304:6:14"},"scope":12745,"src":"38248:588:14","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":{"id":12715,"nodeType":"Block","src":"38975:1243:14","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":12618,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":12613,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"38993:3:14","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"38993:10:14","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":12615,"name":"unitroller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12601,"src":"39007:10:14","typeDescriptions":{"typeIdentifier":"t_contract$_Unitroller_$22368","typeString":"contract Unitroller"}},"id":12616,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"admin","nodeType":"MemberAccess","referencedDeclaration":12992,"src":"39007:16:14","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":12617,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"39007:18:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"38993:32:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"6f6e6c7920756e6974726f6c6c65722061646d696e2063616e206368616e676520627261696e73","id":12619,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"39027:41:14","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_f707df4514ea5b5fb8028d4563616eaaee14c4e2dd4bd81e2c8201e4cb9f9bb3","typeString":"literal_string \"only unitroller admin can change brains\""},"value":"only unitroller admin can change brains"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f707df4514ea5b5fb8028d4563616eaaee14c4e2dd4bd81e2c8201e4cb9f9bb3","typeString":"literal_string \"only unitroller admin can change brains\""}],"id":12612,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"38985:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":12620,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"38985:84:14","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12621,"nodeType":"ExpressionStatement","src":"38985:84:14"},{"assignments":[12623],"declarations":[{"constant":false,"id":12623,"name":"changeStatus","nodeType":"VariableDeclaration","scope":12715,"src":"39079:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12622,"name":"uint","nodeType":"ElementaryTypeName","src":"39079:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":12627,"initialValue":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":12624,"name":"unitroller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12601,"src":"39099:10:14","typeDescriptions":{"typeIdentifier":"t_contract$_Unitroller_$22368","typeString":"contract Unitroller"}},"id":12625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"_acceptImplementation","nodeType":"MemberAccess","referencedDeclaration":22108,"src":"39099:32:14","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$_t_uint256_$","typeString":"function () external returns (uint256)"}},"id":12626,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"39099:34:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"39079:54:14"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12631,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":12629,"name":"changeStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12623,"src":"39152:12:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":12630,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39168:1:14","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"39152:17:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"6368616e6765206e6f7420617574686f72697a6564","id":12632,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"39171:23:14","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_c97af826dc35ad084eb38e82309aaa9eaac3c0d2d1e1571cb89b514117456352","typeString":"literal_string \"change not authorized\""},"value":"change not authorized"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c97af826dc35ad084eb38e82309aaa9eaac3c0d2d1e1571cb89b514117456352","typeString":"literal_string \"change not authorized\""}],"id":12628,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"39144:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":12633,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"39144:51:14","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12634,"nodeType":"ExpressionStatement","src":"39144:51:14"},{"condition":{"argumentTypes":null,"id":12636,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"39210:15:14","subExpression":{"argumentTypes":null,"id":12635,"name":"reinitializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12609,"src":"39211:14:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":12714,"nodeType":"IfStatement","src":"39206:1006:14","trueBody":{"id":12713,"nodeType":"Block","src":"39227:985:14","statements":[{"assignments":[12638],"declarations":[{"constant":false,"id":12638,"name":"freshBrainedComptroller","nodeType":"VariableDeclaration","scope":12713,"src":"39241:37:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerG1_$12745","typeString":"contract ComptrollerG1"},"typeName":{"contractScope":null,"id":12637,"name":"ComptrollerG1","nodeType":"UserDefinedTypeName","referencedDeclaration":12745,"src":"39241:13:14","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerG1_$12745","typeString":"contract ComptrollerG1"}},"value":null,"visibility":"internal"}],"id":12644,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":12641,"name":"unitroller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12601,"src":"39303:10:14","typeDescriptions":{"typeIdentifier":"t_contract$_Unitroller_$22368","typeString":"contract Unitroller"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Unitroller_$22368","typeString":"contract Unitroller"}],"id":12640,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"39295:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":12642,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"39295:19:14","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":12639,"name":"ComptrollerG1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12745,"src":"39281:13:14","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ComptrollerG1_$12745_$","typeString":"type(contract ComptrollerG1)"}},"id":12643,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"39281:34:14","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerG1_$12745","typeString":"contract ComptrollerG1"}},"nodeType":"VariableDeclarationStatement","src":"39241:74:14"},{"assignments":[12646],"declarations":[{"constant":false,"id":12646,"name":"err","nodeType":"VariableDeclaration","scope":12713,"src":"39381:8:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12645,"name":"uint","nodeType":"ElementaryTypeName","src":"39381:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":12651,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":12649,"name":"_oracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12603,"src":"39432:7:14","typeDescriptions":{"typeIdentifier":"t_contract$_PriceOracle_$18689","typeString":"contract PriceOracle"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PriceOracle_$18689","typeString":"contract PriceOracle"}],"expression":{"argumentTypes":null,"id":12647,"name":"freshBrainedComptroller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12638,"src":"39392:23:14","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerG1_$12745","typeString":"contract ComptrollerG1"}},"id":12648,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"_setPriceOracle","nodeType":"MemberAccess","referencedDeclaration":12229,"src":"39392:39:14","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_PriceOracle_$18689_$returns$_t_uint256_$","typeString":"function (contract PriceOracle) external returns (uint256)"}},"id":12650,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"39392:48:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"39381:59:14"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12658,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":12653,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12646,"src":"39463:3:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":12655,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"39475:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":12656,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"39475:14:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":12654,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"39470:4:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":12657,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"39470:20:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"39463:27:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"736574207072696365206f7261636c65206572726f72","id":12659,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"39492:24:14","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_e776d85f1a148e4233809354fbae3f1527b719b46a6aeee618139722b999b628","typeString":"literal_string \"set price oracle error\""},"value":"set price oracle error"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e776d85f1a148e4233809354fbae3f1527b719b46a6aeee618139722b999b628","typeString":"literal_string \"set price oracle error\""}],"id":12652,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"39454:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":12660,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"39454:63:14","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12661,"nodeType":"ExpressionStatement","src":"39454:63:14"},{"expression":{"argumentTypes":null,"id":12667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":12662,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12646,"src":"39583:3:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":12665,"name":"_closeFactorMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12605,"src":"39629:20:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":12663,"name":"freshBrainedComptroller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12638,"src":"39589:23:14","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerG1_$12745","typeString":"contract ComptrollerG1"}},"id":12664,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"_setCloseFactor","nodeType":"MemberAccess","referencedDeclaration":12311,"src":"39589:39:14","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) external returns (uint256)"}},"id":12666,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"39589:61:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"39583:67:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12668,"nodeType":"ExpressionStatement","src":"39583:67:14"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12675,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":12670,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12646,"src":"39673:3:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":12672,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"39685:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":12673,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"39685:14:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":12671,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"39680:4:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":12674,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"39680:20:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"39673:27:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"73657420636c6f736520666163746f72206572726f72","id":12676,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"39702:24:14","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_616f8d1176fba033267b048aa69dc01888bb2b30fe0c90a7e49c5374f12965ff","typeString":"literal_string \"set close factor error\""},"value":"set close factor error"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_616f8d1176fba033267b048aa69dc01888bb2b30fe0c90a7e49c5374f12965ff","typeString":"literal_string \"set close factor error\""}],"id":12669,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"39664:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":12677,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"39664:63:14","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12678,"nodeType":"ExpressionStatement","src":"39664:63:14"},{"expression":{"argumentTypes":null,"id":12684,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":12679,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12646,"src":"39791:3:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":12682,"name":"_maxAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12607,"src":"39835:10:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":12680,"name":"freshBrainedComptroller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12638,"src":"39797:23:14","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerG1_$12745","typeString":"contract ComptrollerG1"}},"id":12681,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"_setMaxAssets","nodeType":"MemberAccess","referencedDeclaration":12457,"src":"39797:37:14","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) external returns (uint256)"}},"id":12683,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"39797:49:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"39791:55:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12685,"nodeType":"ExpressionStatement","src":"39791:55:14"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":12687,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12646,"src":"39869:3:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":12689,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"39881:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":12690,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"39881:14:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":12688,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"39876:4:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":12691,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"39876:20:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"39869:27:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"736574206d61782061737373657473206572726f72","id":12693,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"39898:23:14","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_62f17c961561543ded4471475f0deffb53dbf06763764929b8ab92c6ee675a27","typeString":"literal_string \"set max asssets error\""},"value":"set max asssets error"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_62f17c961561543ded4471475f0deffb53dbf06763764929b8ab92c6ee675a27","typeString":"literal_string \"set max asssets error\""}],"id":12686,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"39860:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":12694,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"39860:62:14","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12695,"nodeType":"ExpressionStatement","src":"39860:62:14"},{"expression":{"argumentTypes":null,"id":12701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":12696,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12646,"src":"40028:3:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":12699,"name":"liquidationIncentiveMinMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10621,"src":"40083:31:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":12697,"name":"freshBrainedComptroller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12638,"src":"40034:23:14","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerG1_$12745","typeString":"contract ComptrollerG1"}},"id":12698,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"_setLiquidationIncentive","nodeType":"MemberAccess","referencedDeclaration":12539,"src":"40034:48:14","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) external returns (uint256)"}},"id":12700,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"40034:81:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"40028:87:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12702,"nodeType":"ExpressionStatement","src":"40028:87:14"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12709,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":12704,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12646,"src":"40138:3:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":12706,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"40150:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":12707,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"40150:14:14","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":12705,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"40145:4:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":12708,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"40145:20:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"40138:27:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"736574206c69717569646174696f6e20696e63656e74697665206572726f72","id":12710,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"40167:33:14","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_33384a6fb55d617ab38992123fb2c1e223a738f4db4d9eceb6db6eed80cd368a","typeString":"literal_string \"set liquidation incentive error\""},"value":"set liquidation incentive error"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_33384a6fb55d617ab38992123fb2c1e223a738f4db4d9eceb6db6eed80cd368a","typeString":"literal_string \"set liquidation incentive error\""}],"id":12703,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"40129:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":12711,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"40129:72:14","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12712,"nodeType":"ExpressionStatement","src":"40129:72:14"}]}}]},"documentation":null,"id":12716,"implemented":true,"kind":"function","modifiers":[],"name":"_become","nodeType":"FunctionDefinition","parameters":{"id":12610,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12601,"name":"unitroller","nodeType":"VariableDeclaration","scope":12716,"src":"38859:21:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_Unitroller_$22368","typeString":"contract Unitroller"},"typeName":{"contractScope":null,"id":12600,"name":"Unitroller","nodeType":"UserDefinedTypeName","referencedDeclaration":22368,"src":"38859:10:14","typeDescriptions":{"typeIdentifier":"t_contract$_Unitroller_$22368","typeString":"contract Unitroller"}},"value":null,"visibility":"internal"},{"constant":false,"id":12603,"name":"_oracle","nodeType":"VariableDeclaration","scope":12716,"src":"38882:19:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_PriceOracle_$18689","typeString":"contract PriceOracle"},"typeName":{"contractScope":null,"id":12602,"name":"PriceOracle","nodeType":"UserDefinedTypeName","referencedDeclaration":18689,"src":"38882:11:14","typeDescriptions":{"typeIdentifier":"t_contract$_PriceOracle_$18689","typeString":"contract PriceOracle"}},"value":null,"visibility":"internal"},{"constant":false,"id":12605,"name":"_closeFactorMantissa","nodeType":"VariableDeclaration","scope":12716,"src":"38903:25:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12604,"name":"uint","nodeType":"ElementaryTypeName","src":"38903:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":12607,"name":"_maxAssets","nodeType":"VariableDeclaration","scope":12716,"src":"38930:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12606,"name":"uint","nodeType":"ElementaryTypeName","src":"38930:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":12609,"name":"reinitializing","nodeType":"VariableDeclaration","scope":12716,"src":"38947:19:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12608,"name":"bool","nodeType":"ElementaryTypeName","src":"38947:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"38858:109:14"},"returnParameters":{"id":12611,"nodeType":"ParameterList","parameters":[],"src":"38975:0:14"},"scope":12745,"src":"38842:1376:14","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":12743,"nodeType":"Block","src":"40576:304:14","statements":[{"assignments":[12722],"declarations":[{"constant":false,"id":12722,"name":"initializing","nodeType":"VariableDeclaration","scope":12743,"src":"40586:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12721,"name":"bool","nodeType":"ElementaryTypeName","src":"40586:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"id":12733,"initialValue":{"argumentTypes":null,"components":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":12731,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":12726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":12723,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"40624:3:14","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12724,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"40624:10:14","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":12725,"name":"comptrollerImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13026,"src":"40638:25:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"40624:39:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":12730,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":12727,"name":"tx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22562,"src":"40764:2:14","typeDescriptions":{"typeIdentifier":"t_magic_transaction","typeString":"tx"}},"id":12728,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"origin","nodeType":"MemberAccess","referencedDeclaration":null,"src":"40764:9:14","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":12729,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12992,"src":"40777:5:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"40764:18:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"40624:158:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":12732,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"40606:186:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"40586:206:14"},{"assignments":[12735],"declarations":[{"constant":false,"id":12735,"name":"isAdmin","nodeType":"VariableDeclaration","scope":12743,"src":"40802:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12734,"name":"bool","nodeType":"ElementaryTypeName","src":"40802:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"id":12738,"initialValue":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":12736,"name":"hasAdminRights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13024,"src":"40817:14:14","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":12737,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"40817:16:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"40802:31:14"},{"expression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":12741,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":12739,"name":"isAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12735,"src":"40850:7:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"argumentTypes":null,"id":12740,"name":"initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12722,"src":"40861:12:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"40850:23:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":12720,"id":12742,"nodeType":"Return","src":"40843:30:14"}]},"documentation":"@dev Check that caller is admin or this contract is initializing itself as\nthe new implementation.\nThere should be no way to satisfy msg.sender == comptrollerImplementaiton\nwithout tx.origin also being admin, but both are included for extra safety","id":12744,"implemented":true,"kind":"function","modifiers":[],"name":"adminOrInitializing","nodeType":"FunctionDefinition","parameters":{"id":12717,"nodeType":"ParameterList","parameters":[],"src":"40544:2:14"},"returnParameters":{"id":12720,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12719,"name":"","nodeType":"VariableDeclaration","scope":12744,"src":"40570:4:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12718,"name":"bool","nodeType":"ElementaryTypeName","src":"40570:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"40569:6:14"},"scope":12745,"src":"40516:364:14","stateMutability":"view","superFunction":null,"visibility":"internal"}],"scope":12746,"src":"474:40408:14"}],"src":"0:40882:14"},"id":14},"contracts/ComptrollerInterface.sol":{"ast":{"absolutePath":"contracts/ComptrollerInterface.sol","exportedSymbols":{"ComptrollerInterface":[12980]},"id":12981,"nodeType":"SourceUnit","nodes":[{"id":12747,"literals":["solidity","0.5",".17"],"nodeType":"PragmaDirective","src":"0:23:15"},{"baseContracts":[],"contractDependencies":[],"contractKind":"contract","documentation":null,"fullyImplemented":false,"id":12980,"linearizedBaseContracts":[12980],"name":"ComptrollerInterface","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":12750,"name":"isComptroller","nodeType":"VariableDeclaration","scope":12980,"src":"140:41:15","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12748,"name":"bool","nodeType":"ElementaryTypeName","src":"140:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":{"argumentTypes":null,"hexValue":"74727565","id":12749,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"177:4:15","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"visibility":"public"},{"body":null,"documentation":"* Assets You Are In **","id":12759,"implemented":false,"kind":"function","modifiers":[],"name":"enterMarkets","nodeType":"FunctionDefinition","parameters":{"id":12754,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12753,"name":"cTokens","nodeType":"VariableDeclaration","scope":12759,"src":"243:26:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":12751,"name":"address","nodeType":"ElementaryTypeName","src":"243:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":12752,"length":null,"nodeType":"ArrayTypeName","src":"243:9:15","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"value":null,"visibility":"internal"}],"src":"242:28:15"},"returnParameters":{"id":12758,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12757,"name":"","nodeType":"VariableDeclaration","scope":12759,"src":"289:13:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":12755,"name":"uint","nodeType":"ElementaryTypeName","src":"289:4:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12756,"length":null,"nodeType":"ArrayTypeName","src":"289:6:15","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"value":null,"visibility":"internal"}],"src":"288:15:15"},"scope":12980,"src":"221:83:15","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":null,"documentation":null,"id":12766,"implemented":false,"kind":"function","modifiers":[],"name":"exitMarket","nodeType":"FunctionDefinition","parameters":{"id":12762,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12761,"name":"cToken","nodeType":"VariableDeclaration","scope":12766,"src":"329:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12760,"name":"address","nodeType":"ElementaryTypeName","src":"329:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"328:16:15"},"returnParameters":{"id":12765,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12764,"name":"","nodeType":"VariableDeclaration","scope":12766,"src":"363:4:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12763,"name":"uint","nodeType":"ElementaryTypeName","src":"363:4:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"362:6:15"},"scope":12980,"src":"309:60:15","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":null,"documentation":"* Policy Hooks **","id":12777,"implemented":false,"kind":"function","modifiers":[],"name":"mintAllowed","nodeType":"FunctionDefinition","parameters":{"id":12773,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12768,"name":"cToken","nodeType":"VariableDeclaration","scope":12777,"src":"424:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12767,"name":"address","nodeType":"ElementaryTypeName","src":"424:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":12770,"name":"minter","nodeType":"VariableDeclaration","scope":12777,"src":"440:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12769,"name":"address","nodeType":"ElementaryTypeName","src":"440:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":12772,"name":"mintAmount","nodeType":"VariableDeclaration","scope":12777,"src":"456:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12771,"name":"uint","nodeType":"ElementaryTypeName","src":"456:4:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"423:49:15"},"returnParameters":{"id":12776,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12775,"name":"","nodeType":"VariableDeclaration","scope":12777,"src":"491:4:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12774,"name":"uint","nodeType":"ElementaryTypeName","src":"491:4:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"490:6:15"},"scope":12980,"src":"403:94:15","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":null,"documentation":null,"id":12790,"implemented":false,"kind":"function","modifiers":[],"name":"mintWithinLimits","nodeType":"FunctionDefinition","parameters":{"id":12786,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12779,"name":"cToken","nodeType":"VariableDeclaration","scope":12790,"src":"528:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12778,"name":"address","nodeType":"ElementaryTypeName","src":"528:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":12781,"name":"exchangeRateMantissa","nodeType":"VariableDeclaration","scope":12790,"src":"544:25:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12780,"name":"uint","nodeType":"ElementaryTypeName","src":"544:4:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":12783,"name":"accountTokens","nodeType":"VariableDeclaration","scope":12790,"src":"571:18:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12782,"name":"uint","nodeType":"ElementaryTypeName","src":"571:4:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":12785,"name":"mintAmount","nodeType":"VariableDeclaration","scope":12790,"src":"591:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12784,"name":"uint","nodeType":"ElementaryTypeName","src":"591:4:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"527:80:15"},"returnParameters":{"id":12789,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12788,"name":"","nodeType":"VariableDeclaration","scope":12790,"src":"626:4:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12787,"name":"uint","nodeType":"ElementaryTypeName","src":"626:4:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"625:6:15"},"scope":12980,"src":"502:130:15","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":null,"documentation":null,"id":12801,"implemented":false,"kind":"function","modifiers":[],"name":"mintVerify","nodeType":"FunctionDefinition","parameters":{"id":12799,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12792,"name":"cToken","nodeType":"VariableDeclaration","scope":12801,"src":"657:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12791,"name":"address","nodeType":"ElementaryTypeName","src":"657:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":12794,"name":"minter","nodeType":"VariableDeclaration","scope":12801,"src":"673:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12793,"name":"address","nodeType":"ElementaryTypeName","src":"673:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":12796,"name":"mintAmount","nodeType":"VariableDeclaration","scope":12801,"src":"689:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12795,"name":"uint","nodeType":"ElementaryTypeName","src":"689:4:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":12798,"name":"mintTokens","nodeType":"VariableDeclaration","scope":12801,"src":"706:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12797,"name":"uint","nodeType":"ElementaryTypeName","src":"706:4:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"656:66:15"},"returnParameters":{"id":12800,"nodeType":"ParameterList","parameters":[],"src":"731:0:15"},"scope":12980,"src":"637:95:15","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":null,"documentation":null,"id":12812,"implemented":false,"kind":"function","modifiers":[],"name":"redeemAllowed","nodeType":"FunctionDefinition","parameters":{"id":12808,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12803,"name":"cToken","nodeType":"VariableDeclaration","scope":12812,"src":"761:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12802,"name":"address","nodeType":"ElementaryTypeName","src":"761:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":12805,"name":"redeemer","nodeType":"VariableDeclaration","scope":12812,"src":"777:16:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12804,"name":"address","nodeType":"ElementaryTypeName","src":"777:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":12807,"name":"redeemTokens","nodeType":"VariableDeclaration","scope":12812,"src":"795:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12806,"name":"uint","nodeType":"ElementaryTypeName","src":"795:4:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"760:53:15"},"returnParameters":{"id":12811,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12810,"name":"","nodeType":"VariableDeclaration","scope":12812,"src":"832:4:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12809,"name":"uint","nodeType":"ElementaryTypeName","src":"832:4:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"831:6:15"},"scope":12980,"src":"738:100:15","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":null,"documentation":null,"id":12823,"implemented":false,"kind":"function","modifiers":[],"name":"redeemVerify","nodeType":"FunctionDefinition","parameters":{"id":12821,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12814,"name":"cToken","nodeType":"VariableDeclaration","scope":12823,"src":"865:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12813,"name":"address","nodeType":"ElementaryTypeName","src":"865:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":12816,"name":"redeemer","nodeType":"VariableDeclaration","scope":12823,"src":"881:16:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12815,"name":"address","nodeType":"ElementaryTypeName","src":"881:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":12818,"name":"redeemAmount","nodeType":"VariableDeclaration","scope":12823,"src":"899:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12817,"name":"uint","nodeType":"ElementaryTypeName","src":"899:4:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":12820,"name":"redeemTokens","nodeType":"VariableDeclaration","scope":12823,"src":"918:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12819,"name":"uint","nodeType":"ElementaryTypeName","src":"918:4:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"864:72:15"},"returnParameters":{"id":12822,"nodeType":"ParameterList","parameters":[],"src":"945:0:15"},"scope":12980,"src":"843:103:15","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":null,"documentation":null,"id":12834,"implemented":false,"kind":"function","modifiers":[],"name":"borrowAllowed","nodeType":"FunctionDefinition","parameters":{"id":12830,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12825,"name":"cToken","nodeType":"VariableDeclaration","scope":12834,"src":"975:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12824,"name":"address","nodeType":"ElementaryTypeName","src":"975:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":12827,"name":"borrower","nodeType":"VariableDeclaration","scope":12834,"src":"991:16:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12826,"name":"address","nodeType":"ElementaryTypeName","src":"991:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":12829,"name":"borrowAmount","nodeType":"VariableDeclaration","scope":12834,"src":"1009:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12828,"name":"uint","nodeType":"ElementaryTypeName","src":"1009:4:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"974:53:15"},"returnParameters":{"id":12833,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12832,"name":"","nodeType":"VariableDeclaration","scope":12834,"src":"1046:4:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12831,"name":"uint","nodeType":"ElementaryTypeName","src":"1046:4:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1045:6:15"},"scope":12980,"src":"952:100:15","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":null,"documentation":null,"id":12843,"implemented":false,"kind":"function","modifiers":[],"name":"borrowWithinLimits","nodeType":"FunctionDefinition","parameters":{"id":12839,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12836,"name":"cToken","nodeType":"VariableDeclaration","scope":12843,"src":"1085:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12835,"name":"address","nodeType":"ElementaryTypeName","src":"1085:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":12838,"name":"accountBorrowsNew","nodeType":"VariableDeclaration","scope":12843,"src":"1101:22:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12837,"name":"uint","nodeType":"ElementaryTypeName","src":"1101:4:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1084:40:15"},"returnParameters":{"id":12842,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12841,"name":"","nodeType":"VariableDeclaration","scope":12843,"src":"1143:4:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12840,"name":"uint","nodeType":"ElementaryTypeName","src":"1143:4:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1142:6:15"},"scope":12980,"src":"1057:92:15","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":null,"documentation":null,"id":12852,"implemented":false,"kind":"function","modifiers":[],"name":"borrowVerify","nodeType":"FunctionDefinition","parameters":{"id":12850,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12845,"name":"cToken","nodeType":"VariableDeclaration","scope":12852,"src":"1176:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12844,"name":"address","nodeType":"ElementaryTypeName","src":"1176:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":12847,"name":"borrower","nodeType":"VariableDeclaration","scope":12852,"src":"1192:16:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12846,"name":"address","nodeType":"ElementaryTypeName","src":"1192:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":12849,"name":"borrowAmount","nodeType":"VariableDeclaration","scope":12852,"src":"1210:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12848,"name":"uint","nodeType":"ElementaryTypeName","src":"1210:4:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1175:53:15"},"returnParameters":{"id":12851,"nodeType":"ParameterList","parameters":[],"src":"1237:0:15"},"scope":12980,"src":"1154:84:15","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":null,"documentation":null,"id":12865,"implemented":false,"kind":"function","modifiers":[],"name":"repayBorrowAllowed","nodeType":"FunctionDefinition","parameters":{"id":12861,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12854,"name":"cToken","nodeType":"VariableDeclaration","scope":12865,"src":"1281:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12853,"name":"address","nodeType":"ElementaryTypeName","src":"1281:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":12856,"name":"payer","nodeType":"VariableDeclaration","scope":12865,"src":"1305:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12855,"name":"address","nodeType":"ElementaryTypeName","src":"1305:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":12858,"name":"borrower","nodeType":"VariableDeclaration","scope":12865,"src":"1328:16:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12857,"name":"address","nodeType":"ElementaryTypeName","src":"1328:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":12860,"name":"repayAmount","nodeType":"VariableDeclaration","scope":12865,"src":"1354:16:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12859,"name":"uint","nodeType":"ElementaryTypeName","src":"1354:4:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1271:100:15"},"returnParameters":{"id":12864,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12863,"name":"","nodeType":"VariableDeclaration","scope":12865,"src":"1390:4:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12862,"name":"uint","nodeType":"ElementaryTypeName","src":"1390:4:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1389:6:15"},"scope":12980,"src":"1244:152:15","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":null,"documentation":null,"id":12878,"implemented":false,"kind":"function","modifiers":[],"name":"repayBorrowVerify","nodeType":"FunctionDefinition","parameters":{"id":12876,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12867,"name":"cToken","nodeType":"VariableDeclaration","scope":12878,"src":"1437:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12866,"name":"address","nodeType":"ElementaryTypeName","src":"1437:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":12869,"name":"payer","nodeType":"VariableDeclaration","scope":12878,"src":"1461:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12868,"name":"address","nodeType":"ElementaryTypeName","src":"1461:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":12871,"name":"borrower","nodeType":"VariableDeclaration","scope":12878,"src":"1484:16:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12870,"name":"address","nodeType":"ElementaryTypeName","src":"1484:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":12873,"name":"repayAmount","nodeType":"VariableDeclaration","scope":12878,"src":"1510:16:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12872,"name":"uint","nodeType":"ElementaryTypeName","src":"1510:4:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":12875,"name":"borrowerIndex","nodeType":"VariableDeclaration","scope":12878,"src":"1536:18:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12874,"name":"uint","nodeType":"ElementaryTypeName","src":"1536:4:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1427:128:15"},"returnParameters":{"id":12877,"nodeType":"ParameterList","parameters":[],"src":"1564:0:15"},"scope":12980,"src":"1401:164:15","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":null,"documentation":null,"id":12893,"implemented":false,"kind":"function","modifiers":[],"name":"liquidateBorrowAllowed","nodeType":"FunctionDefinition","parameters":{"id":12889,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12880,"name":"cTokenBorrowed","nodeType":"VariableDeclaration","scope":12893,"src":"1612:22:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12879,"name":"address","nodeType":"ElementaryTypeName","src":"1612:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":12882,"name":"cTokenCollateral","nodeType":"VariableDeclaration","scope":12893,"src":"1644:24:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12881,"name":"address","nodeType":"ElementaryTypeName","src":"1644:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":12884,"name":"liquidator","nodeType":"VariableDeclaration","scope":12893,"src":"1678:18:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12883,"name":"address","nodeType":"ElementaryTypeName","src":"1678:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":12886,"name":"borrower","nodeType":"VariableDeclaration","scope":12893,"src":"1706:16:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12885,"name":"address","nodeType":"ElementaryTypeName","src":"1706:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":12888,"name":"repayAmount","nodeType":"VariableDeclaration","scope":12893,"src":"1732:16:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12887,"name":"uint","nodeType":"ElementaryTypeName","src":"1732:4:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1602:147:15"},"returnParameters":{"id":12892,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12891,"name":"","nodeType":"VariableDeclaration","scope":12893,"src":"1768:4:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12890,"name":"uint","nodeType":"ElementaryTypeName","src":"1768:4:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1767:6:15"},"scope":12980,"src":"1571:203:15","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":null,"documentation":null,"id":12908,"implemented":false,"kind":"function","modifiers":[],"name":"liquidateBorrowVerify","nodeType":"FunctionDefinition","parameters":{"id":12906,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12895,"name":"cTokenBorrowed","nodeType":"VariableDeclaration","scope":12908,"src":"1819:22:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12894,"name":"address","nodeType":"ElementaryTypeName","src":"1819:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":12897,"name":"cTokenCollateral","nodeType":"VariableDeclaration","scope":12908,"src":"1851:24:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12896,"name":"address","nodeType":"ElementaryTypeName","src":"1851:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":12899,"name":"liquidator","nodeType":"VariableDeclaration","scope":12908,"src":"1885:18:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12898,"name":"address","nodeType":"ElementaryTypeName","src":"1885:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":12901,"name":"borrower","nodeType":"VariableDeclaration","scope":12908,"src":"1913:16:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12900,"name":"address","nodeType":"ElementaryTypeName","src":"1913:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":12903,"name":"repayAmount","nodeType":"VariableDeclaration","scope":12908,"src":"1939:16:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12902,"name":"uint","nodeType":"ElementaryTypeName","src":"1939:4:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":12905,"name":"seizeTokens","nodeType":"VariableDeclaration","scope":12908,"src":"1965:16:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12904,"name":"uint","nodeType":"ElementaryTypeName","src":"1965:4:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1809:173:15"},"returnParameters":{"id":12907,"nodeType":"ParameterList","parameters":[],"src":"1991:0:15"},"scope":12980,"src":"1779:213:15","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":null,"documentation":null,"id":12923,"implemented":false,"kind":"function","modifiers":[],"name":"seizeAllowed","nodeType":"FunctionDefinition","parameters":{"id":12919,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12910,"name":"cTokenCollateral","nodeType":"VariableDeclaration","scope":12923,"src":"2029:24:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12909,"name":"address","nodeType":"ElementaryTypeName","src":"2029:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":12912,"name":"cTokenBorrowed","nodeType":"VariableDeclaration","scope":12923,"src":"2063:22:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12911,"name":"address","nodeType":"ElementaryTypeName","src":"2063:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":12914,"name":"liquidator","nodeType":"VariableDeclaration","scope":12923,"src":"2095:18:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12913,"name":"address","nodeType":"ElementaryTypeName","src":"2095:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":12916,"name":"borrower","nodeType":"VariableDeclaration","scope":12923,"src":"2123:16:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12915,"name":"address","nodeType":"ElementaryTypeName","src":"2123:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":12918,"name":"seizeTokens","nodeType":"VariableDeclaration","scope":12923,"src":"2149:16:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12917,"name":"uint","nodeType":"ElementaryTypeName","src":"2149:4:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2019:147:15"},"returnParameters":{"id":12922,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12921,"name":"","nodeType":"VariableDeclaration","scope":12923,"src":"2185:4:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12920,"name":"uint","nodeType":"ElementaryTypeName","src":"2185:4:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2184:6:15"},"scope":12980,"src":"1998:193:15","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":null,"documentation":null,"id":12936,"implemented":false,"kind":"function","modifiers":[],"name":"seizeVerify","nodeType":"FunctionDefinition","parameters":{"id":12934,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12925,"name":"cTokenCollateral","nodeType":"VariableDeclaration","scope":12936,"src":"2226:24:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12924,"name":"address","nodeType":"ElementaryTypeName","src":"2226:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":12927,"name":"cTokenBorrowed","nodeType":"VariableDeclaration","scope":12936,"src":"2260:22:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12926,"name":"address","nodeType":"ElementaryTypeName","src":"2260:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":12929,"name":"liquidator","nodeType":"VariableDeclaration","scope":12936,"src":"2292:18:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12928,"name":"address","nodeType":"ElementaryTypeName","src":"2292:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":12931,"name":"borrower","nodeType":"VariableDeclaration","scope":12936,"src":"2320:16:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12930,"name":"address","nodeType":"ElementaryTypeName","src":"2320:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":12933,"name":"seizeTokens","nodeType":"VariableDeclaration","scope":12936,"src":"2346:16:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12932,"name":"uint","nodeType":"ElementaryTypeName","src":"2346:4:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2216:147:15"},"returnParameters":{"id":12935,"nodeType":"ParameterList","parameters":[],"src":"2372:0:15"},"scope":12980,"src":"2196:177:15","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":null,"documentation":null,"id":12949,"implemented":false,"kind":"function","modifiers":[],"name":"transferAllowed","nodeType":"FunctionDefinition","parameters":{"id":12945,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12938,"name":"cToken","nodeType":"VariableDeclaration","scope":12949,"src":"2404:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12937,"name":"address","nodeType":"ElementaryTypeName","src":"2404:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":12940,"name":"src","nodeType":"VariableDeclaration","scope":12949,"src":"2420:11:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12939,"name":"address","nodeType":"ElementaryTypeName","src":"2420:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":12942,"name":"dst","nodeType":"VariableDeclaration","scope":12949,"src":"2433:11:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12941,"name":"address","nodeType":"ElementaryTypeName","src":"2433:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":12944,"name":"transferTokens","nodeType":"VariableDeclaration","scope":12949,"src":"2446:19:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12943,"name":"uint","nodeType":"ElementaryTypeName","src":"2446:4:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2403:63:15"},"returnParameters":{"id":12948,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12947,"name":"","nodeType":"VariableDeclaration","scope":12949,"src":"2485:4:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12946,"name":"uint","nodeType":"ElementaryTypeName","src":"2485:4:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2484:6:15"},"scope":12980,"src":"2379:112:15","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":null,"documentation":null,"id":12960,"implemented":false,"kind":"function","modifiers":[],"name":"transferVerify","nodeType":"FunctionDefinition","parameters":{"id":12958,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12951,"name":"cToken","nodeType":"VariableDeclaration","scope":12960,"src":"2520:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12950,"name":"address","nodeType":"ElementaryTypeName","src":"2520:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":12953,"name":"src","nodeType":"VariableDeclaration","scope":12960,"src":"2536:11:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12952,"name":"address","nodeType":"ElementaryTypeName","src":"2536:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":12955,"name":"dst","nodeType":"VariableDeclaration","scope":12960,"src":"2549:11:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12954,"name":"address","nodeType":"ElementaryTypeName","src":"2549:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":12957,"name":"transferTokens","nodeType":"VariableDeclaration","scope":12960,"src":"2562:19:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12956,"name":"uint","nodeType":"ElementaryTypeName","src":"2562:4:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2519:63:15"},"returnParameters":{"id":12959,"nodeType":"ParameterList","parameters":[],"src":"2591:0:15"},"scope":12980,"src":"2496:96:15","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":null,"documentation":"* Liquidity/Liquidation Calculations **","id":12973,"implemented":false,"kind":"function","modifiers":[],"name":"liquidateCalculateSeizeTokens","nodeType":"FunctionDefinition","parameters":{"id":12967,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12962,"name":"cTokenBorrowed","nodeType":"VariableDeclaration","scope":12973,"src":"2696:22:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12961,"name":"address","nodeType":"ElementaryTypeName","src":"2696:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":12964,"name":"cTokenCollateral","nodeType":"VariableDeclaration","scope":12973,"src":"2728:24:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12963,"name":"address","nodeType":"ElementaryTypeName","src":"2728:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":12966,"name":"repayAmount","nodeType":"VariableDeclaration","scope":12973,"src":"2762:16:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12965,"name":"uint","nodeType":"ElementaryTypeName","src":"2762:4:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2686:93:15"},"returnParameters":{"id":12972,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12969,"name":"","nodeType":"VariableDeclaration","scope":12973,"src":"2803:4:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12968,"name":"uint","nodeType":"ElementaryTypeName","src":"2803:4:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":12971,"name":"","nodeType":"VariableDeclaration","scope":12973,"src":"2809:4:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12970,"name":"uint","nodeType":"ElementaryTypeName","src":"2809:4:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2802:12:15"},"scope":12980,"src":"2648:167:15","stateMutability":"view","superFunction":null,"visibility":"external"},{"body":null,"documentation":"* Pool-Wide/Cross-Asset Reentrancy Prevention **","id":12976,"implemented":false,"kind":"function","modifiers":[],"name":"_beforeNonReentrant","nodeType":"FunctionDefinition","parameters":{"id":12974,"nodeType":"ParameterList","parameters":[],"src":"2912:2:15"},"returnParameters":{"id":12975,"nodeType":"ParameterList","parameters":[],"src":"2923:0:15"},"scope":12980,"src":"2884:40:15","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":null,"documentation":null,"id":12979,"implemented":false,"kind":"function","modifiers":[],"name":"_afterNonReentrant","nodeType":"FunctionDefinition","parameters":{"id":12977,"nodeType":"ParameterList","parameters":[],"src":"2956:2:15"},"returnParameters":{"id":12978,"nodeType":"ParameterList","parameters":[],"src":"2967:0:15"},"scope":12980,"src":"2929:39:15","stateMutability":"nonpayable","superFunction":null,"visibility":"external"}],"scope":12981,"src":"25:2945:15"}],"src":"0:2971:15"},"id":15},"contracts/ComptrollerStorage.sol":{"ast":{"absolutePath":"contracts/ComptrollerStorage.sol","exportedSymbols":{"ComptrollerV1Storage":[13045],"ComptrollerV2Storage":[13114],"ComptrollerV3Storage":[13136],"UnitrollerAdminStorage":[13029]},"id":13137,"nodeType":"SourceUnit","nodes":[{"id":12982,"literals":["solidity","0.5",".17"],"nodeType":"PragmaDirective","src":"0:23:16"},{"absolutePath":"contracts/IFuseFeeDistributor.sol","file":"./IFuseFeeDistributor.sol","id":12983,"nodeType":"ImportDirective","scope":13137,"sourceUnit":17369,"src":"25:35:16","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/CToken.sol","file":"./CToken.sol","id":12984,"nodeType":"ImportDirective","scope":13137,"sourceUnit":6187,"src":"61:22:16","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/PriceOracle.sol","file":"./PriceOracle.sol","id":12985,"nodeType":"ImportDirective","scope":13137,"sourceUnit":18690,"src":"84:27:16","symbolAliases":[],"unitAlias":""},{"baseContracts":[],"contractDependencies":[],"contractKind":"contract","documentation":null,"fullyImplemented":true,"id":13029,"linearizedBaseContracts":[13029],"name":"UnitrollerAdminStorage","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":12990,"name":"fuseAdmin","nodeType":"VariableDeclaration","scope":13029,"src":"205:113:16","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IFuseFeeDistributor_$17368","typeString":"contract IFuseFeeDistributor"},"typeName":{"contractScope":null,"id":12986,"name":"IFuseFeeDistributor","nodeType":"UserDefinedTypeName","referencedDeclaration":17368,"src":"205:19:16","typeDescriptions":{"typeIdentifier":"t_contract$_IFuseFeeDistributor_$17368","typeString":"contract IFuseFeeDistributor"}},"value":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"307861373331353835616230356643396638333535356366394266663846353865653934653138463835","id":12988,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"275:42:16","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"value":"0xa731585ab05fC9f83555cf9Bff8F58ee94e18F85"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":12987,"name":"IFuseFeeDistributor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17368,"src":"255:19:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IFuseFeeDistributor_$17368_$","typeString":"type(contract IFuseFeeDistributor)"}},"id":12989,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"255:63:16","typeDescriptions":{"typeIdentifier":"t_contract$_IFuseFeeDistributor_$17368","typeString":"contract IFuseFeeDistributor"}},"visibility":"internal"},{"constant":false,"id":12992,"name":"admin","nodeType":"VariableDeclaration","scope":13029,"src":"386:20:16","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12991,"name":"address","nodeType":"ElementaryTypeName","src":"386:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"public"},{"constant":false,"id":12994,"name":"pendingAdmin","nodeType":"VariableDeclaration","scope":13029,"src":"482:27:16","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12993,"name":"address","nodeType":"ElementaryTypeName","src":"482:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"public"},{"constant":false,"id":12997,"name":"fuseAdminHasRights","nodeType":"VariableDeclaration","scope":13029,"src":"594:37:16","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12995,"name":"bool","nodeType":"ElementaryTypeName","src":"594:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":{"argumentTypes":null,"hexValue":"74727565","id":12996,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"627:4:16","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"visibility":"public"},{"constant":false,"id":13000,"name":"adminHasRights","nodeType":"VariableDeclaration","scope":13029,"src":"711:33:16","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12998,"name":"bool","nodeType":"ElementaryTypeName","src":"711:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":{"argumentTypes":null,"hexValue":"74727565","id":12999,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"740:4:16","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"visibility":"public"},{"body":{"id":13023,"nodeType":"Block","src":"897:123:16","statements":[{"expression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":13021,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"components":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":13010,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":13008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":13005,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"915:3:16","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13006,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"915:10:16","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":13007,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12992,"src":"929:5:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"915:19:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"argumentTypes":null,"id":13009,"name":"adminHasRights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13000,"src":"938:14:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"915:37:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":13011,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"914:39:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"argumentTypes":null,"components":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":13019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"id":13017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":13012,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"958:3:16","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13013,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"958:10:16","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":13015,"name":"fuseAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12990,"src":"980:9:16","typeDescriptions":{"typeIdentifier":"t_contract$_IFuseFeeDistributor_$17368","typeString":"contract IFuseFeeDistributor"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IFuseFeeDistributor_$17368","typeString":"contract IFuseFeeDistributor"}],"id":13014,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"972:7:16","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":13016,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"972:18:16","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"958:32:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"argumentTypes":null,"id":13018,"name":"fuseAdminHasRights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12997,"src":"994:18:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"958:54:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":13020,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"957:56:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"914:99:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":13004,"id":13022,"nodeType":"Return","src":"907:106:16"}]},"documentation":"@notice Returns a boolean indicating if the sender has admin rights","id":13024,"implemented":true,"kind":"function","modifiers":[],"name":"hasAdminRights","nodeType":"FunctionDefinition","parameters":{"id":13001,"nodeType":"ParameterList","parameters":[],"src":"865:2:16"},"returnParameters":{"id":13004,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13003,"name":"","nodeType":"VariableDeclaration","scope":13024,"src":"891:4:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13002,"name":"bool","nodeType":"ElementaryTypeName","src":"891:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"890:6:16"},"scope":13029,"src":"842:178:16","stateMutability":"view","superFunction":null,"visibility":"internal"},{"constant":false,"id":13026,"name":"comptrollerImplementation","nodeType":"VariableDeclaration","scope":13029,"src":"1083:40:16","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13025,"name":"address","nodeType":"ElementaryTypeName","src":"1083:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"public"},{"constant":false,"id":13028,"name":"pendingComptrollerImplementation","nodeType":"VariableDeclaration","scope":13029,"src":"1188:47:16","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13027,"name":"address","nodeType":"ElementaryTypeName","src":"1188:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"public"}],"scope":13137,"src":"113:1125:16"},{"baseContracts":[{"arguments":null,"baseName":{"contractScope":null,"id":13030,"name":"UnitrollerAdminStorage","nodeType":"UserDefinedTypeName","referencedDeclaration":13029,"src":"1273:22:16","typeDescriptions":{"typeIdentifier":"t_contract$_UnitrollerAdminStorage_$13029","typeString":"contract UnitrollerAdminStorage"}},"id":13031,"nodeType":"InheritanceSpecifier","src":"1273:22:16"}],"contractDependencies":[13029],"contractKind":"contract","documentation":null,"fullyImplemented":true,"id":13045,"linearizedBaseContracts":[13045,13029],"name":"ComptrollerV1Storage","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":13033,"name":"oracle","nodeType":"VariableDeclaration","scope":13045,"src":"1381:25:16","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_PriceOracle_$18689","typeString":"contract PriceOracle"},"typeName":{"contractScope":null,"id":13032,"name":"PriceOracle","nodeType":"UserDefinedTypeName","referencedDeclaration":18689,"src":"1381:11:16","typeDescriptions":{"typeIdentifier":"t_contract$_PriceOracle_$18689","typeString":"contract PriceOracle"}},"value":null,"visibility":"public"},{"constant":false,"id":13035,"name":"closeFactorMantissa","nodeType":"VariableDeclaration","scope":13045,"src":"1523:31:16","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13034,"name":"uint","nodeType":"ElementaryTypeName","src":"1523:4:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"public"},{"constant":false,"id":13037,"name":"liquidationIncentiveMantissa","nodeType":"VariableDeclaration","scope":13045,"src":"1670:40:16","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13036,"name":"uint","nodeType":"ElementaryTypeName","src":"1670:4:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"public"},{"constant":false,"id":13039,"name":"maxAssets","nodeType":"VariableDeclaration","scope":13045,"src":"1857:23:16","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13038,"name":"uint","nodeType":"ElementaryTypeName","src":"1857:4:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":13044,"name":"accountAssets","nodeType":"VariableDeclaration","scope":13045,"src":"1982:49:16","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_array$_t_contract$_CToken_$6186_$dyn_storage_$","typeString":"mapping(address => contract CToken[])"},"typeName":{"id":13043,"keyType":{"id":13040,"name":"address","nodeType":"ElementaryTypeName","src":"1990:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1982:28:16","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_array$_t_contract$_CToken_$6186_$dyn_storage_$","typeString":"mapping(address => contract CToken[])"},"valueType":{"baseType":{"contractScope":null,"id":13041,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"2001:6:16","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":13042,"length":null,"nodeType":"ArrayTypeName","src":"2001:8:16","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_storage_ptr","typeString":"contract CToken[]"}}},"value":null,"visibility":"public"}],"scope":13137,"src":"1240:795:16"},{"baseContracts":[{"arguments":null,"baseName":{"contractScope":null,"id":13046,"name":"ComptrollerV1Storage","nodeType":"UserDefinedTypeName","referencedDeclaration":13045,"src":"2070:20:16","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerV1Storage_$13045","typeString":"contract ComptrollerV1Storage"}},"id":13047,"nodeType":"InheritanceSpecifier","src":"2070:20:16"}],"contractDependencies":[13029,13045],"contractKind":"contract","documentation":null,"fullyImplemented":true,"id":13114,"linearizedBaseContracts":[13114,13045,13029],"name":"ComptrollerV2Storage","nodeType":"ContractDefinition","nodes":[{"canonicalName":"ComptrollerV2Storage.Market","id":13056,"members":[{"constant":false,"id":13049,"name":"isListed","nodeType":"VariableDeclaration","scope":13056,"src":"2201:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13048,"name":"bool","nodeType":"ElementaryTypeName","src":"2201:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},{"constant":false,"id":13051,"name":"collateralFactorMantissa","nodeType":"VariableDeclaration","scope":13056,"src":"2494:29:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13050,"name":"uint","nodeType":"ElementaryTypeName","src":"2494:4:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":13055,"name":"accountMembership","nodeType":"VariableDeclaration","scope":13056,"src":"2624:42:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":13054,"keyType":{"id":13052,"name":"address","nodeType":"ElementaryTypeName","src":"2632:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2624:24:16","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueType":{"id":13053,"name":"bool","nodeType":"ElementaryTypeName","src":"2643:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"value":null,"visibility":"internal"}],"name":"Market","nodeType":"StructDefinition","scope":13114,"src":"2097:576:16","visibility":"public"},{"constant":false,"id":13060,"name":"markets","nodeType":"VariableDeclaration","scope":13114,"src":"2817:41:16","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Market_$13056_storage_$","typeString":"mapping(address => struct ComptrollerV2Storage.Market)"},"typeName":{"id":13059,"keyType":{"id":13057,"name":"address","nodeType":"ElementaryTypeName","src":"2825:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2817:26:16","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Market_$13056_storage_$","typeString":"mapping(address => struct ComptrollerV2Storage.Market)"},"valueType":{"contractScope":null,"id":13058,"name":"Market","nodeType":"UserDefinedTypeName","referencedDeclaration":13056,"src":"2836:6:16","typeDescriptions":{"typeIdentifier":"t_struct$_Market_$13056_storage_ptr","typeString":"struct ComptrollerV2Storage.Market"}}},"value":null,"visibility":"public"},{"constant":false,"id":13063,"name":"allMarkets","nodeType":"VariableDeclaration","scope":13114,"src":"2903:26:16","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_storage","typeString":"contract CToken[]"},"typeName":{"baseType":{"contractScope":null,"id":13061,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"2903:6:16","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":13062,"length":null,"nodeType":"ArrayTypeName","src":"2903:8:16","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_storage_ptr","typeString":"contract CToken[]"}},"value":null,"visibility":"public"},{"constant":false,"id":13067,"name":"borrowers","nodeType":"VariableDeclaration","scope":13114,"src":"3035:43:16","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":13066,"keyType":{"id":13064,"name":"address","nodeType":"ElementaryTypeName","src":"3043:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"3035:24:16","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueType":{"id":13065,"name":"bool","nodeType":"ElementaryTypeName","src":"3054:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"value":null,"visibility":"internal"},{"constant":false,"id":13070,"name":"allBorrowers","nodeType":"VariableDeclaration","scope":13114,"src":"3150:29:16","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[]"},"typeName":{"baseType":{"id":13068,"name":"address","nodeType":"ElementaryTypeName","src":"3150:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":13069,"length":null,"nodeType":"ArrayTypeName","src":"3150:9:16","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"value":null,"visibility":"public"},{"constant":false,"id":13074,"name":"borrowerIndexes","nodeType":"VariableDeclaration","scope":13114,"src":"3268:52:16","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":13073,"keyType":{"id":13071,"name":"address","nodeType":"ElementaryTypeName","src":"3276:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"3268:27:16","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":13072,"name":"uint256","nodeType":"ElementaryTypeName","src":"3287:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"value":null,"visibility":"internal"},{"constant":false,"id":13078,"name":"suppliers","nodeType":"VariableDeclaration","scope":13114,"src":"3435:41:16","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":13077,"keyType":{"id":13075,"name":"address","nodeType":"ElementaryTypeName","src":"3443:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"3435:24:16","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueType":{"id":13076,"name":"bool","nodeType":"ElementaryTypeName","src":"3454:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"value":null,"visibility":"public"},{"constant":false,"id":13082,"name":"cTokensByUnderlying","nodeType":"VariableDeclaration","scope":13114,"src":"3564:53:16","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_contract$_CToken_$6186_$","typeString":"mapping(address => contract CToken)"},"typeName":{"id":13081,"keyType":{"id":13079,"name":"address","nodeType":"ElementaryTypeName","src":"3572:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"3564:26:16","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_contract$_CToken_$6186_$","typeString":"mapping(address => contract CToken)"},"valueType":{"contractScope":null,"id":13080,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"3583:6:16","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}},"value":null,"visibility":"public"},{"constant":false,"id":13084,"name":"enforceWhitelist","nodeType":"VariableDeclaration","scope":13114,"src":"3690:28:16","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13083,"name":"bool","nodeType":"ElementaryTypeName","src":"3690:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"public"},{"constant":false,"id":13088,"name":"whitelist","nodeType":"VariableDeclaration","scope":13114,"src":"3837:41:16","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":13087,"keyType":{"id":13085,"name":"address","nodeType":"ElementaryTypeName","src":"3845:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"3837:24:16","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueType":{"id":13086,"name":"bool","nodeType":"ElementaryTypeName","src":"3856:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"value":null,"visibility":"public"},{"constant":false,"id":13091,"name":"whitelistArray","nodeType":"VariableDeclaration","scope":13114,"src":"3938:31:16","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[]"},"typeName":{"baseType":{"id":13089,"name":"address","nodeType":"ElementaryTypeName","src":"3938:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":13090,"length":null,"nodeType":"ArrayTypeName","src":"3938:9:16","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"value":null,"visibility":"public"},{"constant":false,"id":13095,"name":"whitelistIndexes","nodeType":"VariableDeclaration","scope":13114,"src":"4051:53:16","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":13094,"keyType":{"id":13092,"name":"address","nodeType":"ElementaryTypeName","src":"4059:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"4051:27:16","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":13093,"name":"uint256","nodeType":"ElementaryTypeName","src":"4070:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"value":null,"visibility":"internal"},{"constant":false,"id":13097,"name":"pauseGuardian","nodeType":"VariableDeclaration","scope":13114,"src":"4374:28:16","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13096,"name":"address","nodeType":"ElementaryTypeName","src":"4374:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"public"},{"constant":false,"id":13099,"name":"_mintGuardianPaused","nodeType":"VariableDeclaration","scope":13114,"src":"4408:31:16","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13098,"name":"bool","nodeType":"ElementaryTypeName","src":"4408:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"public"},{"constant":false,"id":13101,"name":"_borrowGuardianPaused","nodeType":"VariableDeclaration","scope":13114,"src":"4445:33:16","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13100,"name":"bool","nodeType":"ElementaryTypeName","src":"4445:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"public"},{"constant":false,"id":13103,"name":"transferGuardianPaused","nodeType":"VariableDeclaration","scope":13114,"src":"4484:34:16","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13102,"name":"bool","nodeType":"ElementaryTypeName","src":"4484:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"public"},{"constant":false,"id":13105,"name":"seizeGuardianPaused","nodeType":"VariableDeclaration","scope":13114,"src":"4524:31:16","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13104,"name":"bool","nodeType":"ElementaryTypeName","src":"4524:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"public"},{"constant":false,"id":13109,"name":"mintGuardianPaused","nodeType":"VariableDeclaration","scope":13114,"src":"4561:50:16","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":13108,"keyType":{"id":13106,"name":"address","nodeType":"ElementaryTypeName","src":"4569:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"4561:24:16","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueType":{"id":13107,"name":"bool","nodeType":"ElementaryTypeName","src":"4580:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"value":null,"visibility":"public"},{"constant":false,"id":13113,"name":"borrowGuardianPaused","nodeType":"VariableDeclaration","scope":13114,"src":"4617:52:16","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":13112,"keyType":{"id":13110,"name":"address","nodeType":"ElementaryTypeName","src":"4625:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"4617:24:16","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueType":{"id":13111,"name":"bool","nodeType":"ElementaryTypeName","src":"4636:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"value":null,"visibility":"public"}],"scope":13137,"src":"2037:2635:16"},{"baseContracts":[{"arguments":null,"baseName":{"contractScope":null,"id":13115,"name":"ComptrollerV2Storage","nodeType":"UserDefinedTypeName","referencedDeclaration":13114,"src":"4707:20:16","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerV2Storage_$13114","typeString":"contract ComptrollerV2Storage"}},"id":13116,"nodeType":"InheritanceSpecifier","src":"4707:20:16"}],"contractDependencies":[13029,13045,13114],"contractKind":"contract","documentation":null,"fullyImplemented":true,"id":13136,"linearizedBaseContracts":[13136,13114,13045,13029],"name":"ComptrollerV3Storage","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":13118,"name":"autoImplementation","nodeType":"VariableDeclaration","scope":13136,"src":"4821:30:16","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13117,"name":"bool","nodeType":"ElementaryTypeName","src":"4821:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"public"},{"constant":false,"id":13120,"name":"borrowCapGuardian","nodeType":"VariableDeclaration","scope":13136,"src":"5014:32:16","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13119,"name":"address","nodeType":"ElementaryTypeName","src":"5014:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"public"},{"constant":false,"id":13124,"name":"borrowCaps","nodeType":"VariableDeclaration","scope":13136,"src":"5191:42:16","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":13123,"keyType":{"id":13121,"name":"address","nodeType":"ElementaryTypeName","src":"5199:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"5191:24:16","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":13122,"name":"uint","nodeType":"ElementaryTypeName","src":"5210:4:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"value":null,"visibility":"public"},{"constant":false,"id":13128,"name":"supplyCaps","nodeType":"VariableDeclaration","scope":13136,"src":"5376:42:16","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":13127,"keyType":{"id":13125,"name":"address","nodeType":"ElementaryTypeName","src":"5384:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"5376:24:16","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":13126,"name":"uint","nodeType":"ElementaryTypeName","src":"5395:4:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"value":null,"visibility":"public"},{"constant":false,"id":13131,"name":"rewardsDistributors","nodeType":"VariableDeclaration","scope":13136,"src":"5501:36:16","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[]"},"typeName":{"baseType":{"id":13129,"name":"address","nodeType":"ElementaryTypeName","src":"5501:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":13130,"length":null,"nodeType":"ArrayTypeName","src":"5501:9:16","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"value":null,"visibility":"public"},{"constant":false,"id":13133,"name":"_notEntered","nodeType":"VariableDeclaration","scope":13136,"src":"5617:25:16","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13132,"name":"bool","nodeType":"ElementaryTypeName","src":"5617:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},{"constant":false,"id":13135,"name":"_notEnteredInitialized","nodeType":"VariableDeclaration","scope":13136,"src":"5710:36:16","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13134,"name":"bool","nodeType":"ElementaryTypeName","src":"5710:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"scope":13137,"src":"4674:1075:16"}],"src":"0:5750:16"},"id":16},"contracts/DAIInterestRateModelV2.sol":{"ast":{"absolutePath":"contracts/DAIInterestRateModelV2.sol","exportedSymbols":{"DAIInterestRateModelV2":[13350],"JugLike":[13400],"PotLike":[13388]},"id":13401,"nodeType":"SourceUnit","nodes":[{"id":13138,"literals":["solidity","0.5",".17"],"nodeType":"PragmaDirective","src":"0:23:17"},{"absolutePath":"contracts/JumpRateModel.sol","file":"./JumpRateModel.sol","id":13139,"nodeType":"ImportDirective","scope":13401,"sourceUnit":17628,"src":"25:29:17","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/SafeMath.sol","file":"./SafeMath.sol","id":13140,"nodeType":"ImportDirective","scope":13401,"sourceUnit":21346,"src":"55:24:17","symbolAliases":[],"unitAlias":""},{"baseContracts":[{"arguments":null,"baseName":{"contractScope":null,"id":13141,"name":"JumpRateModel","nodeType":"UserDefinedTypeName","referencedDeclaration":17627,"src":"580:13:17","typeDescriptions":{"typeIdentifier":"t_contract$_JumpRateModel_$17627","typeString":"contract JumpRateModel"}},"id":13142,"nodeType":"InheritanceSpecifier","src":"580:13:17"}],"contractDependencies":[17398,17627],"contractKind":"contract","documentation":"@title Compound's DAIInterestRateModel Contract (version 2)\n@author Compound (modified by Dharma Labs)\n@notice The parameterized model described in section 2.4 of the original Compound Protocol whitepaper.\nVersion 2 modifies the original interest rate model by increasing the \"gap\" or slope of the model prior\nto the \"kink\" from 0.05% to 2% with the goal of \"smoothing out\" interest rate changes as the utilization\nrate increases.","fullyImplemented":true,"id":13350,"linearizedBaseContracts":[13350,17627,17398],"name":"DAIInterestRateModelV2","nodeType":"ContractDefinition","nodes":[{"id":13145,"libraryName":{"contractScope":null,"id":13143,"name":"SafeMath","nodeType":"UserDefinedTypeName","referencedDeclaration":21345,"src":"606:8:17","typeDescriptions":{"typeIdentifier":"t_contract$_SafeMath_$21345","typeString":"library SafeMath"}},"nodeType":"UsingForDirective","src":"600:24:17","typeName":{"id":13144,"name":"uint","nodeType":"ElementaryTypeName","src":"619:4:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"constant":true,"id":13150,"name":"gapPerBlock","nodeType":"VariableDeclaration","scope":13350,"src":"844:55:17","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13146,"name":"uint","nodeType":"ElementaryTypeName","src":"844:4:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13149,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"hexValue":"32653136","id":13147,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"879:4:17","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_20000000000000000_by_1","typeString":"int_const 20000000000000000"},"value":"2e16"},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"argumentTypes":null,"id":13148,"name":"blocksPerYear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17420,"src":"886:13:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"879:20:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":true,"id":13153,"name":"assumedOneMinusReserveFactorMantissa","nodeType":"VariableDeclaration","scope":13350,"src":"1036:67:17","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13151,"name":"uint","nodeType":"ElementaryTypeName","src":"1036:4:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"argumentTypes":null,"hexValue":"302e3935653138","id":13152,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1096:7:17","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_950000000000000000_by_1","typeString":"int_const 950000000000000000"},"value":"0.95e18"},"visibility":"public"},{"constant":false,"id":13155,"name":"pot","nodeType":"VariableDeclaration","scope":13350,"src":"1110:11:17","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_PotLike_$13388","typeString":"contract PotLike"},"typeName":{"contractScope":null,"id":13154,"name":"PotLike","nodeType":"UserDefinedTypeName","referencedDeclaration":13388,"src":"1110:7:17","typeDescriptions":{"typeIdentifier":"t_contract$_PotLike_$13388","typeString":"contract PotLike"}},"value":null,"visibility":"internal"},{"constant":false,"id":13157,"name":"jug","nodeType":"VariableDeclaration","scope":13350,"src":"1127:11:17","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_JugLike_$13400","typeString":"contract JugLike"},"typeName":{"contractScope":null,"id":13156,"name":"JugLike","nodeType":"UserDefinedTypeName","referencedDeclaration":13400,"src":"1127:7:17","typeDescriptions":{"typeIdentifier":"t_contract$_JugLike_$13400","typeString":"contract JugLike"}},"value":null,"visibility":"internal"},{"body":{"id":13189,"nodeType":"Block","src":"1664:81:17","statements":[{"expression":{"argumentTypes":null,"id":13178,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":13174,"name":"pot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13155,"src":"1674:3:17","typeDescriptions":{"typeIdentifier":"t_contract$_PotLike_$13388","typeString":"contract PotLike"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":13176,"name":"pot_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13163,"src":"1688:4:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13175,"name":"PotLike","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13388,"src":"1680:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PotLike_$13388_$","typeString":"type(contract PotLike)"}},"id":13177,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1680:13:17","typeDescriptions":{"typeIdentifier":"t_contract$_PotLike_$13388","typeString":"contract PotLike"}},"src":"1674:19:17","typeDescriptions":{"typeIdentifier":"t_contract$_PotLike_$13388","typeString":"contract PotLike"}},"id":13179,"nodeType":"ExpressionStatement","src":"1674:19:17"},{"expression":{"argumentTypes":null,"id":13184,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":13180,"name":"jug","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13157,"src":"1703:3:17","typeDescriptions":{"typeIdentifier":"t_contract$_JugLike_$13400","typeString":"contract JugLike"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":13182,"name":"jug_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13165,"src":"1717:4:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13181,"name":"JugLike","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13400,"src":"1709:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_JugLike_$13400_$","typeString":"type(contract JugLike)"}},"id":13183,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1709:13:17","typeDescriptions":{"typeIdentifier":"t_contract$_JugLike_$13400","typeString":"contract JugLike"}},"src":"1703:19:17","typeDescriptions":{"typeIdentifier":"t_contract$_JugLike_$13400","typeString":"contract JugLike"}},"id":13185,"nodeType":"ExpressionStatement","src":"1703:19:17"},{"expression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":13186,"name":"poke","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13349,"src":"1732:4:17","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":13187,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1732:6:17","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13188,"nodeType":"ExpressionStatement","src":"1732:6:17"}]},"documentation":"@notice Construct an interest rate model\n@param jumpMultiplierPerYear The multiplierPerBlock after hitting a specified utilization point\n@param kink_ The utilization point at which the jump multiplier is applied\n@param pot_ The address of the Dai pot (where DSR is earned)\n@param jug_ The address of the Dai jug (where SF is kept)","id":13190,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"argumentTypes":null,"hexValue":"30","id":13168,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1621:1:17","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"argumentTypes":null,"hexValue":"30","id":13169,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1624:1:17","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"argumentTypes":null,"id":13170,"name":"jumpMultiplierPerYear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13159,"src":"1627:21:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":13171,"name":"kink_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13161,"src":"1650:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":13172,"modifierName":{"argumentTypes":null,"id":13167,"name":"JumpRateModel","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17627,"src":"1607:13:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_JumpRateModel_$17627_$","typeString":"type(contract JumpRateModel)"}},"nodeType":"ModifierInvocation","src":"1607:49:17"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":13166,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13159,"name":"jumpMultiplierPerYear","nodeType":"VariableDeclaration","scope":13190,"src":"1539:26:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13158,"name":"uint","nodeType":"ElementaryTypeName","src":"1539:4:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":13161,"name":"kink_","nodeType":"VariableDeclaration","scope":13190,"src":"1567:10:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13160,"name":"uint","nodeType":"ElementaryTypeName","src":"1567:4:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":13163,"name":"pot_","nodeType":"VariableDeclaration","scope":13190,"src":"1579:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13162,"name":"address","nodeType":"ElementaryTypeName","src":"1579:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":13165,"name":"jug_","nodeType":"VariableDeclaration","scope":13190,"src":"1593:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13164,"name":"address","nodeType":"ElementaryTypeName","src":"1593:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"1538:68:17"},"returnParameters":{"id":13173,"nodeType":"ParameterList","parameters":[],"src":"1664:0:17"},"scope":13350,"src":"1527:218:17","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":13247,"nodeType":"Block","src":"2346:371:17","statements":[{"assignments":[13204],"declarations":[{"constant":false,"id":13204,"name":"protocolRate","nodeType":"VariableDeclaration","scope":13247,"src":"2356:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13203,"name":"uint","nodeType":"ElementaryTypeName","src":"2356:4:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":13212,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":13207,"name":"cash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13192,"src":"2396:4:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":13208,"name":"borrows","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13194,"src":"2402:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":13209,"name":"reserves","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13196,"src":"2411:8:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":13210,"name":"reserveFactorMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13198,"src":"2421:21:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":13205,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22659,"src":"2376:5:17","typeDescriptions":{"typeIdentifier":"t_super$_DAIInterestRateModelV2_$13350","typeString":"contract super DAIInterestRateModelV2"}},"id":13206,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getSupplyRate","nodeType":"MemberAccess","referencedDeclaration":17626,"src":"2376:19:17","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256,uint256) view returns (uint256)"}},"id":13211,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2376:67:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2356:87:17"},{"assignments":[13214],"declarations":[{"constant":false,"id":13214,"name":"underlying","nodeType":"VariableDeclaration","scope":13247,"src":"2454:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13213,"name":"uint","nodeType":"ElementaryTypeName","src":"2454:4:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":13222,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":13220,"name":"reserves","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13196,"src":"2494:8:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":13217,"name":"borrows","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13194,"src":"2481:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":13215,"name":"cash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13192,"src":"2472:4:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":21122,"src":"2472:8:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":13218,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2472:17:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13219,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":21165,"src":"2472:21:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":13221,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2472:31:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2454:49:17"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13225,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":13223,"name":"underlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13214,"src":"2517:10:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":13224,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2531:1:17","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2517:15:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":13245,"nodeType":"Block","src":"2584:127:17","statements":[{"assignments":[13230],"declarations":[{"constant":false,"id":13230,"name":"cashRate","nodeType":"VariableDeclaration","scope":13245,"src":"2598:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13229,"name":"uint","nodeType":"ElementaryTypeName","src":"2598:4:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":13239,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":13237,"name":"underlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13214,"src":"2642:10:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":13233,"name":"dsrPerBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13267,"src":"2623:11:17","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":13234,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2623:13:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":13231,"name":"cash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13192,"src":"2614:4:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13232,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":21226,"src":"2614:8:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":13235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2614:23:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13236,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"div","nodeType":"MemberAccess","referencedDeclaration":21278,"src":"2614:27:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":13238,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2614:39:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2598:55:17"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":13242,"name":"protocolRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13204,"src":"2687:12:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":13240,"name":"cashRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13230,"src":"2674:8:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13241,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":21122,"src":"2674:12:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":13243,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2674:26:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":13202,"id":13244,"nodeType":"Return","src":"2667:33:17"}]},"id":13246,"nodeType":"IfStatement","src":"2513:198:17","trueBody":{"id":13228,"nodeType":"Block","src":"2534:44:17","statements":[{"expression":{"argumentTypes":null,"id":13226,"name":"protocolRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13204,"src":"2555:12:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":13202,"id":13227,"nodeType":"Return","src":"2548:19:17"}]}}]},"documentation":"@notice Calculates the current supply interest rate per block including the Dai savings rate\n@param cash The total amount of cash the market has\n@param borrows The total amount of borrows the market has outstanding\n@param reserves The total amnount of reserves the market has\n@param reserveFactorMantissa The current reserve factor the market has\n@return The supply rate per block (as a percentage, and scaled by 1e18)","id":13248,"implemented":true,"kind":"function","modifiers":[],"name":"getSupplyRate","nodeType":"FunctionDefinition","parameters":{"id":13199,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13192,"name":"cash","nodeType":"VariableDeclaration","scope":13248,"src":"2251:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13191,"name":"uint","nodeType":"ElementaryTypeName","src":"2251:4:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":13194,"name":"borrows","nodeType":"VariableDeclaration","scope":13248,"src":"2262:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13193,"name":"uint","nodeType":"ElementaryTypeName","src":"2262:4:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":13196,"name":"reserves","nodeType":"VariableDeclaration","scope":13248,"src":"2276:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13195,"name":"uint","nodeType":"ElementaryTypeName","src":"2276:4:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":13198,"name":"reserveFactorMantissa","nodeType":"VariableDeclaration","scope":13248,"src":"2291:26:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13197,"name":"uint","nodeType":"ElementaryTypeName","src":"2291:4:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2250:68:17"},"returnParameters":{"id":13202,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13201,"name":"","nodeType":"VariableDeclaration","scope":13248,"src":"2340:4:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13200,"name":"uint","nodeType":"ElementaryTypeName","src":"2340:4:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2339:6:17"},"scope":13350,"src":"2228:489:17","stateMutability":"view","superFunction":17626,"visibility":"public"},{"body":{"id":13266,"nodeType":"Block","src":"2930:213:17","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"3135","id":13263,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3109:2:17","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"15"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"316539","id":13260,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3068:3:17","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1000000000_by_1","typeString":"int_const 1000000000"},"value":"1e9"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1000000000_by_1","typeString":"int_const 1000000000"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"31653237","id":13257,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2974:4:17","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000000000000_by_1","typeString":"int_const 1000000000000000000000000000"},"value":"1e27"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1000000000000000000000000000_by_1","typeString":"int_const 1000000000000000000000000000"}],"expression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":13253,"name":"pot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13155,"src":"2947:3:17","typeDescriptions":{"typeIdentifier":"t_contract$_PotLike_$13388","typeString":"contract PotLike"}},"id":13254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"dsr","nodeType":"MemberAccess","referencedDeclaration":13360,"src":"2947:20:17","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":13255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2947:22:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13256,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":21165,"src":"2947:26:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":13258,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2947:32:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"div","nodeType":"MemberAccess","referencedDeclaration":21278,"src":"2947:120:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":13261,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2947:125:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13262,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":21226,"src":"2947:161:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":13264,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2947:165:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":13252,"id":13265,"nodeType":"Return","src":"2940:172:17"}]},"documentation":"@notice Calculates the Dai savings rate per block\n@return The Dai savings rate per block (as a percentage, and scaled by 1e18)","id":13267,"implemented":true,"kind":"function","modifiers":[],"name":"dsrPerBlock","nodeType":"FunctionDefinition","parameters":{"id":13249,"nodeType":"ParameterList","parameters":[],"src":"2900:2:17"},"returnParameters":{"id":13252,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13251,"name":"","nodeType":"VariableDeclaration","scope":13267,"src":"2924:4:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13250,"name":"uint","nodeType":"ElementaryTypeName","src":"2924:4:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2923:6:17"},"scope":13350,"src":"2880:263:17","stateMutability":"view","superFunction":null,"visibility":"public"},{"body":{"id":13348,"nodeType":"Block","src":"3296:783:17","statements":[{"assignments":[13271,null],"declarations":[{"constant":false,"id":13271,"name":"duty","nodeType":"VariableDeclaration","scope":13348,"src":"3307:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13270,"name":"uint","nodeType":"ElementaryTypeName","src":"3307:4:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},null],"id":13276,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"4554482d41","id":13274,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3331:7:17","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_92d6310469a67b269ee5e0d2a48c84207650ba161e2b36668e1ce951a5db69e5","typeString":"literal_string \"ETH-A\""},"value":"ETH-A"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_92d6310469a67b269ee5e0d2a48c84207650ba161e2b36668e1ce951a5db69e5","typeString":"literal_string \"ETH-A\""}],"expression":{"argumentTypes":null,"id":13272,"name":"jug","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13157,"src":"3322:3:17","typeDescriptions":{"typeIdentifier":"t_contract$_JugLike_$13400","typeString":"contract JugLike"}},"id":13273,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ilks","nodeType":"MemberAccess","referencedDeclaration":13397,"src":"3322:8:17","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$returns$_t_uint256_$_t_uint256_$","typeString":"function (bytes32) view external returns (uint256,uint256)"}},"id":13275,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3322:17:17","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"3306:33:17"},{"assignments":[13278],"declarations":[{"constant":false,"id":13278,"name":"stabilityFeePerBlock","nodeType":"VariableDeclaration","scope":13348,"src":"3349:25:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13277,"name":"uint","nodeType":"ElementaryTypeName","src":"3349:4:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":13297,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"3135","id":13295,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3432:2:17","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"15"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"31653237","id":13292,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3422:4:17","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000000000000_by_1","typeString":"int_const 1000000000000000000000000000"},"value":"1e27"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1000000000000000000000000000_by_1","typeString":"int_const 1000000000000000000000000000"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"31653138","id":13289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3412:4:17","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"31653237","id":13286,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3402:4:17","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000000000000_by_1","typeString":"int_const 1000000000000000000000000000"},"value":"1e27"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1000000000000000000000000000_by_1","typeString":"int_const 1000000000000000000000000000"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":13281,"name":"jug","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13157,"src":"3386:3:17","typeDescriptions":{"typeIdentifier":"t_contract$_JugLike_$13400","typeString":"contract JugLike"}},"id":13282,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"base","nodeType":"MemberAccess","referencedDeclaration":13399,"src":"3386:8:17","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":13283,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3386:10:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":13279,"name":"duty","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13271,"src":"3377:4:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13280,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":21122,"src":"3377:8:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":13284,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3377:20:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":21165,"src":"3377:24:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":13287,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3377:30:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13288,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":21226,"src":"3377:34:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":13290,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3377:40:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13291,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"div","nodeType":"MemberAccess","referencedDeclaration":21278,"src":"3377:44:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":13293,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3377:50:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13294,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":21226,"src":"3377:54:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":13296,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3377:58:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3349:86:17"},{"expression":{"argumentTypes":null,"id":13307,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":13298,"name":"baseRatePerBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17424,"src":"3521:16:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":13305,"name":"assumedOneMinusReserveFactorMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13153,"src":"3568:36:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"31653138","id":13302,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3558:4:17","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"}],"expression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":13299,"name":"dsrPerBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13267,"src":"3540:11:17","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":13300,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3540:13:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13301,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":21226,"src":"3540:17:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":13303,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3540:23:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"div","nodeType":"MemberAccess","referencedDeclaration":21278,"src":"3540:27:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":13306,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3540:65:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3521:84:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13308,"nodeType":"ExpressionStatement","src":"3521:84:17"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13311,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":13309,"name":"baseRatePerBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17424,"src":"3723:16:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"id":13310,"name":"stabilityFeePerBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13278,"src":"3742:20:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3723:39:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":13339,"nodeType":"Block","src":"3895:77:17","statements":[{"expression":{"argumentTypes":null,"id":13337,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":13329,"name":"multiplierPerBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17422,"src":"3909:18:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":13335,"name":"kink","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17428,"src":"3956:4:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"31653138","id":13332,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3946:4:17","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"}],"expression":{"argumentTypes":null,"id":13330,"name":"gapPerBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13150,"src":"3930:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13331,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":21226,"src":"3930:15:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":13333,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3930:21:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"div","nodeType":"MemberAccess","referencedDeclaration":21278,"src":"3930:25:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":13336,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3930:31:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3909:52:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13338,"nodeType":"ExpressionStatement","src":"3909:52:17"}]},"id":13340,"nodeType":"IfStatement","src":"3719:253:17","trueBody":{"id":13328,"nodeType":"Block","src":"3764:125:17","statements":[{"expression":{"argumentTypes":null,"id":13326,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":13312,"name":"multiplierPerBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17422,"src":"3778:18:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":13324,"name":"kink","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17428,"src":"3873:4:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"31653138","id":13321,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3863:4:17","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":13318,"name":"gapPerBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13150,"src":"3846:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":13315,"name":"baseRatePerBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17424,"src":"3824:16:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":13313,"name":"stabilityFeePerBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13278,"src":"3799:20:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13314,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":21165,"src":"3799:24:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":13316,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3799:42:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":21122,"src":"3799:46:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":13319,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3799:59:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13320,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":21226,"src":"3799:63:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":13322,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3799:69:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"div","nodeType":"MemberAccess","referencedDeclaration":21278,"src":"3799:73:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":13325,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3799:79:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3778:100:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13327,"nodeType":"ExpressionStatement","src":"3778:100:17"}]}},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":13342,"name":"baseRatePerBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17424,"src":"4005:16:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":13343,"name":"multiplierPerBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17422,"src":"4023:18:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":13344,"name":"jumpMultiplierPerBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17426,"src":"4043:22:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":13345,"name":"kink","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17428,"src":"4067:4:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13341,"name":"NewInterestParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17417,"src":"3987:17:17","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,uint256,uint256)"}},"id":13346,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3987:85:17","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13347,"nodeType":"EmitStatement","src":"3982:90:17"}]},"documentation":"@notice Resets the baseRate and multiplier per block based on the stability fee and Dai savings rate","id":13349,"implemented":true,"kind":"function","modifiers":[],"name":"poke","nodeType":"FunctionDefinition","parameters":{"id":13268,"nodeType":"ParameterList","parameters":[],"src":"3286:2:17"},"returnParameters":{"id":13269,"nodeType":"ParameterList","parameters":[],"src":"3296:0:17"},"scope":13350,"src":"3273:806:17","stateMutability":"nonpayable","superFunction":null,"visibility":"public"}],"scope":13401,"src":"545:3536:17"},{"baseContracts":[],"contractDependencies":[],"contractKind":"contract","documentation":"* Maker Interfaces **","fullyImplemented":false,"id":13388,"linearizedBaseContracts":[13388],"name":"PotLike","nodeType":"ContractDefinition","nodes":[{"body":null,"documentation":null,"id":13355,"implemented":false,"kind":"function","modifiers":[],"name":"chi","nodeType":"FunctionDefinition","parameters":{"id":13351,"nodeType":"ParameterList","parameters":[],"src":"4147:2:17"},"returnParameters":{"id":13354,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13353,"name":"","nodeType":"VariableDeclaration","scope":13355,"src":"4173:4:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13352,"name":"uint","nodeType":"ElementaryTypeName","src":"4173:4:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"4172:6:17"},"scope":13388,"src":"4135:44:17","stateMutability":"view","superFunction":null,"visibility":"external"},{"body":null,"documentation":null,"id":13360,"implemented":false,"kind":"function","modifiers":[],"name":"dsr","nodeType":"FunctionDefinition","parameters":{"id":13356,"nodeType":"ParameterList","parameters":[],"src":"4196:2:17"},"returnParameters":{"id":13359,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13358,"name":"","nodeType":"VariableDeclaration","scope":13360,"src":"4222:4:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13357,"name":"uint","nodeType":"ElementaryTypeName","src":"4222:4:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"4221:6:17"},"scope":13388,"src":"4184:44:17","stateMutability":"view","superFunction":null,"visibility":"external"},{"body":null,"documentation":null,"id":13365,"implemented":false,"kind":"function","modifiers":[],"name":"rho","nodeType":"FunctionDefinition","parameters":{"id":13361,"nodeType":"ParameterList","parameters":[],"src":"4245:2:17"},"returnParameters":{"id":13364,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13363,"name":"","nodeType":"VariableDeclaration","scope":13365,"src":"4271:4:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13362,"name":"uint","nodeType":"ElementaryTypeName","src":"4271:4:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"4270:6:17"},"scope":13388,"src":"4233:44:17","stateMutability":"view","superFunction":null,"visibility":"external"},{"body":null,"documentation":null,"id":13372,"implemented":false,"kind":"function","modifiers":[],"name":"pie","nodeType":"FunctionDefinition","parameters":{"id":13368,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13367,"name":"","nodeType":"VariableDeclaration","scope":13372,"src":"4295:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13366,"name":"address","nodeType":"ElementaryTypeName","src":"4295:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"4294:9:17"},"returnParameters":{"id":13371,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13370,"name":"","nodeType":"VariableDeclaration","scope":13372,"src":"4327:4:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13369,"name":"uint","nodeType":"ElementaryTypeName","src":"4327:4:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"4326:6:17"},"scope":13388,"src":"4282:51:17","stateMutability":"view","superFunction":null,"visibility":"external"},{"body":null,"documentation":null,"id":13377,"implemented":false,"kind":"function","modifiers":[],"name":"drip","nodeType":"FunctionDefinition","parameters":{"id":13373,"nodeType":"ParameterList","parameters":[],"src":"4351:2:17"},"returnParameters":{"id":13376,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13375,"name":"","nodeType":"VariableDeclaration","scope":13377,"src":"4372:4:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13374,"name":"uint","nodeType":"ElementaryTypeName","src":"4372:4:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"4371:6:17"},"scope":13388,"src":"4338:40:17","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":null,"documentation":null,"id":13382,"implemented":false,"kind":"function","modifiers":[],"name":"join","nodeType":"FunctionDefinition","parameters":{"id":13380,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13379,"name":"","nodeType":"VariableDeclaration","scope":13382,"src":"4397:4:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13378,"name":"uint","nodeType":"ElementaryTypeName","src":"4397:4:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"4396:6:17"},"returnParameters":{"id":13381,"nodeType":"ParameterList","parameters":[],"src":"4411:0:17"},"scope":13388,"src":"4383:29:17","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":null,"documentation":null,"id":13387,"implemented":false,"kind":"function","modifiers":[],"name":"exit","nodeType":"FunctionDefinition","parameters":{"id":13385,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13384,"name":"","nodeType":"VariableDeclaration","scope":13387,"src":"4431:4:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13383,"name":"uint","nodeType":"ElementaryTypeName","src":"4431:4:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"4430:6:17"},"returnParameters":{"id":13386,"nodeType":"ParameterList","parameters":[],"src":"4445:0:17"},"scope":13388,"src":"4417:29:17","stateMutability":"nonpayable","superFunction":null,"visibility":"external"}],"scope":13401,"src":"4112:336:17"},{"baseContracts":[],"contractDependencies":[],"contractKind":"contract","documentation":null,"fullyImplemented":true,"id":13400,"linearizedBaseContracts":[13400],"name":"JugLike","nodeType":"ContractDefinition","nodes":[{"canonicalName":"JugLike.Ilk","id":13393,"members":[{"constant":false,"id":13390,"name":"duty","nodeType":"VariableDeclaration","scope":13393,"src":"4514:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13389,"name":"uint256","nodeType":"ElementaryTypeName","src":"4514:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":13392,"name":"rho","nodeType":"VariableDeclaration","scope":13393,"src":"4536:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13391,"name":"uint256","nodeType":"ElementaryTypeName","src":"4536:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"name":"Ilk","nodeType":"StructDefinition","scope":13400,"src":"4493:62:17","visibility":"public"},{"constant":false,"id":13397,"name":"ilks","nodeType":"VariableDeclaration","scope":13400,"src":"4560:36:17","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Ilk_$13393_storage_$","typeString":"mapping(bytes32 => struct JugLike.Ilk)"},"typeName":{"id":13396,"keyType":{"id":13394,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4569:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"4560:24:17","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Ilk_$13393_storage_$","typeString":"mapping(bytes32 => struct JugLike.Ilk)"},"valueType":{"contractScope":null,"id":13395,"name":"Ilk","nodeType":"UserDefinedTypeName","referencedDeclaration":13393,"src":"4580:3:17","typeDescriptions":{"typeIdentifier":"t_struct$_Ilk_$13393_storage_ptr","typeString":"struct JugLike.Ilk"}}},"value":null,"visibility":"public"},{"constant":false,"id":13399,"name":"base","nodeType":"VariableDeclaration","scope":13400,"src":"4601:19:17","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13398,"name":"uint256","nodeType":"ElementaryTypeName","src":"4601:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"public"}],"scope":13401,"src":"4450:173:17"}],"src":"0:4624:17"},"id":17},"contracts/EIP20Interface.sol":{"ast":{"absolutePath":"contracts/EIP20Interface.sol","exportedSymbols":{"EIP20Interface":[13484]},"id":13485,"nodeType":"SourceUnit","nodes":[{"id":13402,"literals":["solidity","0.5",".17"],"nodeType":"PragmaDirective","src":"0:23:18"},{"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":"@title ERC 20 Token Standard Interface\n https://eips.ethereum.org/EIPS/eip-20","fullyImplemented":false,"id":13484,"linearizedBaseContracts":[13484],"name":"EIP20Interface","nodeType":"ContractDefinition","nodes":[{"body":null,"documentation":null,"id":13407,"implemented":false,"kind":"function","modifiers":[],"name":"name","nodeType":"FunctionDefinition","parameters":{"id":13403,"nodeType":"ParameterList","parameters":[],"src":"161:2:18"},"returnParameters":{"id":13406,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13405,"name":"","nodeType":"VariableDeclaration","scope":13407,"src":"187:13:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":13404,"name":"string","nodeType":"ElementaryTypeName","src":"187:6:18","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":null,"visibility":"internal"}],"src":"186:15:18"},"scope":13484,"src":"148:54:18","stateMutability":"view","superFunction":null,"visibility":"external"},{"body":null,"documentation":null,"id":13412,"implemented":false,"kind":"function","modifiers":[],"name":"symbol","nodeType":"FunctionDefinition","parameters":{"id":13408,"nodeType":"ParameterList","parameters":[],"src":"222:2:18"},"returnParameters":{"id":13411,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13410,"name":"","nodeType":"VariableDeclaration","scope":13412,"src":"248:13:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":13409,"name":"string","nodeType":"ElementaryTypeName","src":"248:6:18","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":null,"visibility":"internal"}],"src":"247:15:18"},"scope":13484,"src":"207:56:18","stateMutability":"view","superFunction":null,"visibility":"external"},{"body":null,"documentation":null,"id":13417,"implemented":false,"kind":"function","modifiers":[],"name":"decimals","nodeType":"FunctionDefinition","parameters":{"id":13413,"nodeType":"ParameterList","parameters":[],"src":"285:2:18"},"returnParameters":{"id":13416,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13415,"name":"","nodeType":"VariableDeclaration","scope":13417,"src":"311:5:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":13414,"name":"uint8","nodeType":"ElementaryTypeName","src":"311:5:18","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":null,"visibility":"internal"}],"src":"310:7:18"},"scope":13484,"src":"268:50:18","stateMutability":"view","superFunction":null,"visibility":"external"},{"body":null,"documentation":"@notice Get the total number of tokens in circulation\n@return The supply of tokens","id":13422,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nodeType":"FunctionDefinition","parameters":{"id":13418,"nodeType":"ParameterList","parameters":[],"src":"460:2:18"},"returnParameters":{"id":13421,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13420,"name":"","nodeType":"VariableDeclaration","scope":13422,"src":"486:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13419,"name":"uint256","nodeType":"ElementaryTypeName","src":"486:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"485:9:18"},"scope":13484,"src":"440:55:18","stateMutability":"view","superFunction":null,"visibility":"external"},{"body":null,"documentation":"@notice Gets the balance of the specified address\n@param owner The address from which the balance will be retrieved\n@return The balance","id":13429,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nodeType":"FunctionDefinition","parameters":{"id":13425,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13424,"name":"owner","nodeType":"VariableDeclaration","scope":13429,"src":"693:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13423,"name":"address","nodeType":"ElementaryTypeName","src":"693:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"692:15:18"},"returnParameters":{"id":13428,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13427,"name":"balance","nodeType":"VariableDeclaration","scope":13429,"src":"731:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13426,"name":"uint256","nodeType":"ElementaryTypeName","src":"731:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"730:17:18"},"scope":13484,"src":"674:74:18","stateMutability":"view","superFunction":null,"visibility":"external"},{"body":null,"documentation":"@notice Transfer `amount` tokens from `msg.sender` to `dst`\n@param dst The address of the destination account\n@param amount The number of tokens to transfer\n@return Whether or not the transfer succeeded","id":13438,"implemented":false,"kind":"function","modifiers":[],"name":"transfer","nodeType":"FunctionDefinition","parameters":{"id":13434,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13431,"name":"dst","nodeType":"VariableDeclaration","scope":13438,"src":"1024:11:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13430,"name":"address","nodeType":"ElementaryTypeName","src":"1024:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":13433,"name":"amount","nodeType":"VariableDeclaration","scope":13438,"src":"1037:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13432,"name":"uint256","nodeType":"ElementaryTypeName","src":"1037:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1023:29:18"},"returnParameters":{"id":13437,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13436,"name":"success","nodeType":"VariableDeclaration","scope":13438,"src":"1071:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13435,"name":"bool","nodeType":"ElementaryTypeName","src":"1071:4:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"1070:14:18"},"scope":13484,"src":"1006:79:18","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":null,"documentation":"@notice Transfer `amount` tokens from `src` to `dst`\n@param src The address of the source account\n@param dst The address of the destination account\n@param amount The number of tokens to transfer\n@return Whether or not the transfer succeeded","id":13449,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nodeType":"FunctionDefinition","parameters":{"id":13445,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13440,"name":"src","nodeType":"VariableDeclaration","scope":13449,"src":"1411:11:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13439,"name":"address","nodeType":"ElementaryTypeName","src":"1411:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":13442,"name":"dst","nodeType":"VariableDeclaration","scope":13449,"src":"1424:11:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13441,"name":"address","nodeType":"ElementaryTypeName","src":"1424:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":13444,"name":"amount","nodeType":"VariableDeclaration","scope":13449,"src":"1437:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13443,"name":"uint256","nodeType":"ElementaryTypeName","src":"1437:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1410:42:18"},"returnParameters":{"id":13448,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13447,"name":"success","nodeType":"VariableDeclaration","scope":13449,"src":"1471:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13446,"name":"bool","nodeType":"ElementaryTypeName","src":"1471:4:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"1470:14:18"},"scope":13484,"src":"1389:96:18","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":null,"documentation":"@notice Approve `spender` to transfer up to `amount` from `src`\n@dev This will overwrite the approval amount for `spender`\n and is subject to issues noted [here](https://eips.ethereum.org/EIPS/eip-20#approve)\n@param spender The address of the account which may transfer tokens\n@param amount The number of tokens that are approved (-1 means infinite)\n@return Whether or not the approval succeeded","id":13458,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nodeType":"FunctionDefinition","parameters":{"id":13454,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13451,"name":"spender","nodeType":"VariableDeclaration","scope":13458,"src":"1969:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13450,"name":"address","nodeType":"ElementaryTypeName","src":"1969:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":13453,"name":"amount","nodeType":"VariableDeclaration","scope":13458,"src":"1986:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13452,"name":"uint256","nodeType":"ElementaryTypeName","src":"1986:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1968:33:18"},"returnParameters":{"id":13457,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13456,"name":"success","nodeType":"VariableDeclaration","scope":13458,"src":"2020:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13455,"name":"bool","nodeType":"ElementaryTypeName","src":"2020:4:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"2019:14:18"},"scope":13484,"src":"1952:82:18","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":null,"documentation":"@notice Get the current allowance from `owner` for `spender`\n@param owner The address of the account which owns the tokens to be spent\n@param spender The address of the account which may transfer tokens\n@return The number of tokens allowed to be spent (-1 means infinite)","id":13467,"implemented":false,"kind":"function","modifiers":[],"name":"allowance","nodeType":"FunctionDefinition","parameters":{"id":13463,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13460,"name":"owner","nodeType":"VariableDeclaration","scope":13467,"src":"2380:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13459,"name":"address","nodeType":"ElementaryTypeName","src":"2380:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":13462,"name":"spender","nodeType":"VariableDeclaration","scope":13467,"src":"2395:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13461,"name":"address","nodeType":"ElementaryTypeName","src":"2395:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"2379:32:18"},"returnParameters":{"id":13466,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13465,"name":"remaining","nodeType":"VariableDeclaration","scope":13467,"src":"2435:17:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13464,"name":"uint256","nodeType":"ElementaryTypeName","src":"2435:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2434:19:18"},"scope":13484,"src":"2361:93:18","stateMutability":"view","superFunction":null,"visibility":"external"},{"anonymous":false,"documentation":null,"id":13475,"name":"Transfer","nodeType":"EventDefinition","parameters":{"id":13474,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13469,"indexed":true,"name":"from","nodeType":"VariableDeclaration","scope":13475,"src":"2475:20:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13468,"name":"address","nodeType":"ElementaryTypeName","src":"2475:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":13471,"indexed":true,"name":"to","nodeType":"VariableDeclaration","scope":13475,"src":"2497:18:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13470,"name":"address","nodeType":"ElementaryTypeName","src":"2497:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":13473,"indexed":false,"name":"amount","nodeType":"VariableDeclaration","scope":13475,"src":"2517:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13472,"name":"uint256","nodeType":"ElementaryTypeName","src":"2517:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2474:58:18"},"src":"2460:73:18"},{"anonymous":false,"documentation":null,"id":13483,"name":"Approval","nodeType":"EventDefinition","parameters":{"id":13482,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13477,"indexed":true,"name":"owner","nodeType":"VariableDeclaration","scope":13483,"src":"2553:21:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13476,"name":"address","nodeType":"ElementaryTypeName","src":"2553:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":13479,"indexed":true,"name":"spender","nodeType":"VariableDeclaration","scope":13483,"src":"2576:23:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13478,"name":"address","nodeType":"ElementaryTypeName","src":"2576:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":13481,"indexed":false,"name":"amount","nodeType":"VariableDeclaration","scope":13483,"src":"2601:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13480,"name":"uint256","nodeType":"ElementaryTypeName","src":"2601:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2552:64:18"},"src":"2538:79:18"}],"scope":13485,"src":"117:2502:18"}],"src":"0:2620:18"},"id":18},"contracts/EIP20NonStandardInterface.sol":{"ast":{"absolutePath":"contracts/EIP20NonStandardInterface.sol","exportedSymbols":{"EIP20NonStandardInterface":[13549]},"id":13550,"nodeType":"SourceUnit","nodes":[{"id":13486,"literals":["solidity","0.5",".17"],"nodeType":"PragmaDirective","src":"0:23:19"},{"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":"@title EIP20NonStandardInterface\n@dev Version of ERC20 with no return values for `transfer` and `transferFrom`\n See https://medium.com/coinmonks/missing-return-value-bug-at-least-130-tokens-affected-d67bf08521ca","fullyImplemented":false,"id":13549,"linearizedBaseContracts":[13549],"name":"EIP20NonStandardInterface","nodeType":"ContractDefinition","nodes":[{"body":null,"documentation":"@notice Get the total number of tokens in circulation\n@return The supply of tokens","id":13491,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nodeType":"FunctionDefinition","parameters":{"id":13487,"nodeType":"ParameterList","parameters":[],"src":"430:2:19"},"returnParameters":{"id":13490,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13489,"name":"","nodeType":"VariableDeclaration","scope":13491,"src":"456:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13488,"name":"uint256","nodeType":"ElementaryTypeName","src":"456:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"455:9:19"},"scope":13549,"src":"410:55:19","stateMutability":"view","superFunction":null,"visibility":"external"},{"body":null,"documentation":"@notice Gets the balance of the specified address\n@param owner The address from which the balance will be retrieved\n@return The balance","id":13498,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nodeType":"FunctionDefinition","parameters":{"id":13494,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13493,"name":"owner","nodeType":"VariableDeclaration","scope":13498,"src":"663:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13492,"name":"address","nodeType":"ElementaryTypeName","src":"663:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"662:15:19"},"returnParameters":{"id":13497,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13496,"name":"balance","nodeType":"VariableDeclaration","scope":13498,"src":"701:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13495,"name":"uint256","nodeType":"ElementaryTypeName","src":"701:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"700:17:19"},"scope":13549,"src":"644:74:19","stateMutability":"view","superFunction":null,"visibility":"external"},{"body":null,"documentation":"@notice Transfer `amount` tokens from `msg.sender` to `dst`\n@param dst The address of the destination account\n@param amount The number of tokens to transfer","id":13505,"implemented":false,"kind":"function","modifiers":[],"name":"transfer","nodeType":"FunctionDefinition","parameters":{"id":13503,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13500,"name":"dst","nodeType":"VariableDeclaration","scope":13505,"src":"1103:11:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13499,"name":"address","nodeType":"ElementaryTypeName","src":"1103:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":13502,"name":"amount","nodeType":"VariableDeclaration","scope":13505,"src":"1116:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13501,"name":"uint256","nodeType":"ElementaryTypeName","src":"1116:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1102:29:19"},"returnParameters":{"id":13504,"nodeType":"ParameterList","parameters":[],"src":"1140:0:19"},"scope":13549,"src":"1085:56:19","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":null,"documentation":"@notice Transfer `amount` tokens from `src` to `dst`\n@param src The address of the source account\n@param dst The address of the destination account\n@param amount The number of tokens to transfer","id":13514,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nodeType":"FunctionDefinition","parameters":{"id":13512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13507,"name":"src","nodeType":"VariableDeclaration","scope":13514,"src":"1580:11:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13506,"name":"address","nodeType":"ElementaryTypeName","src":"1580:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":13509,"name":"dst","nodeType":"VariableDeclaration","scope":13514,"src":"1593:11:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13508,"name":"address","nodeType":"ElementaryTypeName","src":"1593:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":13511,"name":"amount","nodeType":"VariableDeclaration","scope":13514,"src":"1606:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13510,"name":"uint256","nodeType":"ElementaryTypeName","src":"1606:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1579:42:19"},"returnParameters":{"id":13513,"nodeType":"ParameterList","parameters":[],"src":"1630:0:19"},"scope":13549,"src":"1558:73:19","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":null,"documentation":"@notice Approve `spender` to transfer up to `amount` from `src`\n@dev This will overwrite the approval amount for `spender`\n and is subject to issues noted [here](https://eips.ethereum.org/EIPS/eip-20#approve)\n@param spender The address of the account which may transfer tokens\n@param amount The number of tokens that are approved\n@return Whether or not the approval succeeded","id":13523,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nodeType":"FunctionDefinition","parameters":{"id":13519,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13516,"name":"spender","nodeType":"VariableDeclaration","scope":13523,"src":"2095:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13515,"name":"address","nodeType":"ElementaryTypeName","src":"2095:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":13518,"name":"amount","nodeType":"VariableDeclaration","scope":13523,"src":"2112:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13517,"name":"uint256","nodeType":"ElementaryTypeName","src":"2112:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2094:33:19"},"returnParameters":{"id":13522,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13521,"name":"success","nodeType":"VariableDeclaration","scope":13523,"src":"2146:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13520,"name":"bool","nodeType":"ElementaryTypeName","src":"2146:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"2145:14:19"},"scope":13549,"src":"2078:82:19","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":null,"documentation":"@notice Get the current allowance from `owner` for `spender`\n@param owner The address of the account which owns the tokens to be spent\n@param spender The address of the account which may transfer tokens\n@return The number of tokens allowed to be spent","id":13532,"implemented":false,"kind":"function","modifiers":[],"name":"allowance","nodeType":"FunctionDefinition","parameters":{"id":13528,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13525,"name":"owner","nodeType":"VariableDeclaration","scope":13532,"src":"2486:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13524,"name":"address","nodeType":"ElementaryTypeName","src":"2486:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":13527,"name":"spender","nodeType":"VariableDeclaration","scope":13532,"src":"2501:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13526,"name":"address","nodeType":"ElementaryTypeName","src":"2501:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"2485:32:19"},"returnParameters":{"id":13531,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13530,"name":"remaining","nodeType":"VariableDeclaration","scope":13532,"src":"2541:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13529,"name":"uint256","nodeType":"ElementaryTypeName","src":"2541:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2540:19:19"},"scope":13549,"src":"2467:93:19","stateMutability":"view","superFunction":null,"visibility":"external"},{"anonymous":false,"documentation":null,"id":13540,"name":"Transfer","nodeType":"EventDefinition","parameters":{"id":13539,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13534,"indexed":true,"name":"from","nodeType":"VariableDeclaration","scope":13540,"src":"2581:20:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13533,"name":"address","nodeType":"ElementaryTypeName","src":"2581:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":13536,"indexed":true,"name":"to","nodeType":"VariableDeclaration","scope":13540,"src":"2603:18:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13535,"name":"address","nodeType":"ElementaryTypeName","src":"2603:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":13538,"indexed":false,"name":"amount","nodeType":"VariableDeclaration","scope":13540,"src":"2623:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13537,"name":"uint256","nodeType":"ElementaryTypeName","src":"2623:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2580:58:19"},"src":"2566:73:19"},{"anonymous":false,"documentation":null,"id":13548,"name":"Approval","nodeType":"EventDefinition","parameters":{"id":13547,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13542,"indexed":true,"name":"owner","nodeType":"VariableDeclaration","scope":13548,"src":"2659:21:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13541,"name":"address","nodeType":"ElementaryTypeName","src":"2659:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":13544,"indexed":true,"name":"spender","nodeType":"VariableDeclaration","scope":13548,"src":"2682:23:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13543,"name":"address","nodeType":"ElementaryTypeName","src":"2682:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":13546,"indexed":false,"name":"amount","nodeType":"VariableDeclaration","scope":13548,"src":"2707:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13545,"name":"uint256","nodeType":"ElementaryTypeName","src":"2707:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2658:64:19"},"src":"2644:79:19"}],"scope":13550,"src":"254:2471:19"}],"src":"0:2726:19"},"id":19},"contracts/ErrorReporter.sol":{"ast":{"absolutePath":"contracts/ErrorReporter.sol","exportedSymbols":{"ComptrollerErrorReporter":[13662],"TokenErrorReporter":[13849]},"id":13850,"nodeType":"SourceUnit","nodes":[{"id":13551,"literals":["solidity","0.5",".17"],"nodeType":"PragmaDirective","src":"0:23:20"},{"baseContracts":[],"contractDependencies":[],"contractKind":"contract","documentation":null,"fullyImplemented":true,"id":13662,"linearizedBaseContracts":[13662],"name":"ComptrollerErrorReporter","nodeType":"ContractDefinition","nodes":[{"canonicalName":"ComptrollerErrorReporter.Error","id":13574,"members":[{"id":13552,"name":"NO_ERROR","nodeType":"EnumValue","src":"86:8:20"},{"id":13553,"name":"UNAUTHORIZED","nodeType":"EnumValue","src":"104:12:20"},{"id":13554,"name":"COMPTROLLER_MISMATCH","nodeType":"EnumValue","src":"126:20:20"},{"id":13555,"name":"INSUFFICIENT_SHORTFALL","nodeType":"EnumValue","src":"156:22:20"},{"id":13556,"name":"INSUFFICIENT_LIQUIDITY","nodeType":"EnumValue","src":"188:22:20"},{"id":13557,"name":"INVALID_CLOSE_FACTOR","nodeType":"EnumValue","src":"220:20:20"},{"id":13558,"name":"INVALID_COLLATERAL_FACTOR","nodeType":"EnumValue","src":"250:25:20"},{"id":13559,"name":"INVALID_LIQUIDATION_INCENTIVE","nodeType":"EnumValue","src":"285:29:20"},{"id":13560,"name":"MARKET_NOT_ENTERED","nodeType":"EnumValue","src":"324:18:20"},{"id":13561,"name":"MARKET_NOT_LISTED","nodeType":"EnumValue","src":"374:17:20"},{"id":13562,"name":"MARKET_ALREADY_LISTED","nodeType":"EnumValue","src":"401:21:20"},{"id":13563,"name":"MATH_ERROR","nodeType":"EnumValue","src":"432:10:20"},{"id":13564,"name":"NONZERO_BORROW_BALANCE","nodeType":"EnumValue","src":"452:22:20"},{"id":13565,"name":"PRICE_ERROR","nodeType":"EnumValue","src":"484:11:20"},{"id":13566,"name":"REJECTION","nodeType":"EnumValue","src":"505:9:20"},{"id":13567,"name":"SNAPSHOT_ERROR","nodeType":"EnumValue","src":"524:14:20"},{"id":13568,"name":"TOO_MANY_ASSETS","nodeType":"EnumValue","src":"548:15:20"},{"id":13569,"name":"TOO_MUCH_REPAY","nodeType":"EnumValue","src":"573:14:20"},{"id":13570,"name":"SUPPLIER_NOT_WHITELISTED","nodeType":"EnumValue","src":"597:24:20"},{"id":13571,"name":"BORROW_BELOW_MIN","nodeType":"EnumValue","src":"631:16:20"},{"id":13572,"name":"SUPPLY_ABOVE_MAX","nodeType":"EnumValue","src":"657:16:20"},{"id":13573,"name":"NONZERO_TOTAL_SUPPLY","nodeType":"EnumValue","src":"683:20:20"}],"name":"Error","nodeType":"EnumDefinition","src":"65:644:20"},{"canonicalName":"ComptrollerErrorReporter.FailureInfo","id":13603,"members":[{"id":13575,"name":"ACCEPT_ADMIN_PENDING_ADMIN_CHECK","nodeType":"EnumValue","src":"742:32:20"},{"id":13576,"name":"ACCEPT_PENDING_IMPLEMENTATION_ADDRESS_CHECK","nodeType":"EnumValue","src":"784:43:20"},{"id":13577,"name":"ADD_REWARDS_DISTRIBUTOR_OWNER_CHECK","nodeType":"EnumValue","src":"837:35:20"},{"id":13578,"name":"EXIT_MARKET_BALANCE_OWED","nodeType":"EnumValue","src":"882:24:20"},{"id":13579,"name":"EXIT_MARKET_REJECTION","nodeType":"EnumValue","src":"916:21:20"},{"id":13580,"name":"TOGGLE_ADMIN_RIGHTS_OWNER_CHECK","nodeType":"EnumValue","src":"947:31:20"},{"id":13581,"name":"TOGGLE_AUTO_IMPLEMENTATIONS_ENABLED_OWNER_CHECK","nodeType":"EnumValue","src":"988:47:20"},{"id":13582,"name":"SET_CLOSE_FACTOR_OWNER_CHECK","nodeType":"EnumValue","src":"1045:28:20"},{"id":13583,"name":"SET_CLOSE_FACTOR_VALIDATION","nodeType":"EnumValue","src":"1083:27:20"},{"id":13584,"name":"SET_COLLATERAL_FACTOR_OWNER_CHECK","nodeType":"EnumValue","src":"1120:33:20"},{"id":13585,"name":"SET_COLLATERAL_FACTOR_NO_EXISTS","nodeType":"EnumValue","src":"1163:31:20"},{"id":13586,"name":"SET_COLLATERAL_FACTOR_VALIDATION","nodeType":"EnumValue","src":"1204:32:20"},{"id":13587,"name":"SET_COLLATERAL_FACTOR_WITHOUT_PRICE","nodeType":"EnumValue","src":"1246:35:20"},{"id":13588,"name":"SET_LIQUIDATION_INCENTIVE_OWNER_CHECK","nodeType":"EnumValue","src":"1291:37:20"},{"id":13589,"name":"SET_LIQUIDATION_INCENTIVE_VALIDATION","nodeType":"EnumValue","src":"1338:36:20"},{"id":13590,"name":"SET_MAX_ASSETS_OWNER_CHECK","nodeType":"EnumValue","src":"1384:26:20"},{"id":13591,"name":"SET_PENDING_ADMIN_OWNER_CHECK","nodeType":"EnumValue","src":"1420:29:20"},{"id":13592,"name":"SET_PENDING_IMPLEMENTATION_CONTRACT_CHECK","nodeType":"EnumValue","src":"1459:41:20"},{"id":13593,"name":"SET_PENDING_IMPLEMENTATION_OWNER_CHECK","nodeType":"EnumValue","src":"1510:38:20"},{"id":13594,"name":"SET_PRICE_ORACLE_OWNER_CHECK","nodeType":"EnumValue","src":"1558:28:20"},{"id":13595,"name":"SET_WHITELIST_ENFORCEMENT_OWNER_CHECK","nodeType":"EnumValue","src":"1596:37:20"},{"id":13596,"name":"SET_WHITELIST_STATUS_OWNER_CHECK","nodeType":"EnumValue","src":"1643:32:20"},{"id":13597,"name":"SUPPORT_MARKET_EXISTS","nodeType":"EnumValue","src":"1685:21:20"},{"id":13598,"name":"SUPPORT_MARKET_OWNER_CHECK","nodeType":"EnumValue","src":"1716:26:20"},{"id":13599,"name":"SET_PAUSE_GUARDIAN_OWNER_CHECK","nodeType":"EnumValue","src":"1752:30:20"},{"id":13600,"name":"UNSUPPORT_MARKET_OWNER_CHECK","nodeType":"EnumValue","src":"1792:28:20"},{"id":13601,"name":"UNSUPPORT_MARKET_DOES_NOT_EXIST","nodeType":"EnumValue","src":"1830:31:20"},{"id":13602,"name":"UNSUPPORT_MARKET_IN_USE","nodeType":"EnumValue","src":"1871:23:20"}],"name":"FailureInfo","nodeType":"EnumDefinition","src":"715:1185:20"},{"anonymous":false,"documentation":"@dev `error` corresponds to enum Error; `info` corresponds to enum FailureInfo, and `detail` is an arbitrary\ncontract-specific code that enables us to report opaque error codes from upgradeable contracts.*","id":13611,"name":"Failure","nodeType":"EventDefinition","parameters":{"id":13610,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13605,"indexed":false,"name":"error","nodeType":"VariableDeclaration","scope":13611,"src":"2159:10:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13604,"name":"uint","nodeType":"ElementaryTypeName","src":"2159:4:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":13607,"indexed":false,"name":"info","nodeType":"VariableDeclaration","scope":13611,"src":"2171:9:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13606,"name":"uint","nodeType":"ElementaryTypeName","src":"2171:4:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":13609,"indexed":false,"name":"detail","nodeType":"VariableDeclaration","scope":13611,"src":"2182:11:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13608,"name":"uint","nodeType":"ElementaryTypeName","src":"2182:4:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2158:36:20"},"src":"2145:50:20"},{"body":{"id":13634,"nodeType":"Block","src":"2392:82:20","statements":[{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":13622,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13613,"src":"2420:3:20","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":13621,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2415:4:20","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":13623,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2415:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":13625,"name":"info","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13615,"src":"2431:4:20","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}],"id":13624,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2426:4:20","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":13626,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2426:10:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"30","id":13627,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2438:1:20","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":13620,"name":"Failure","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13611,"src":"2407:7:20","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,uint256)"}},"id":13628,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2407:33:20","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13629,"nodeType":"EmitStatement","src":"2402:38:20"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":13631,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13613,"src":"2463:3:20","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":13630,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2458:4:20","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":13632,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2458:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":13619,"id":13633,"nodeType":"Return","src":"2451:16:20"}]},"documentation":"@dev use this when reporting a known error from the money market or a non-upgradeable collaborator","id":13635,"implemented":true,"kind":"function","modifiers":[],"name":"fail","nodeType":"FunctionDefinition","parameters":{"id":13616,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13613,"name":"err","nodeType":"VariableDeclaration","scope":13635,"src":"2339:9:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"},"typeName":{"contractScope":null,"id":13612,"name":"Error","nodeType":"UserDefinedTypeName","referencedDeclaration":13574,"src":"2339:5:20","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},"value":null,"visibility":"internal"},{"constant":false,"id":13615,"name":"info","nodeType":"VariableDeclaration","scope":13635,"src":"2350:16:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"},"typeName":{"contractScope":null,"id":13614,"name":"FailureInfo","nodeType":"UserDefinedTypeName","referencedDeclaration":13603,"src":"2350:11:20","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}},"value":null,"visibility":"internal"}],"src":"2338:29:20"},"returnParameters":{"id":13619,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13618,"name":"","nodeType":"VariableDeclaration","scope":13635,"src":"2386:4:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13617,"name":"uint","nodeType":"ElementaryTypeName","src":"2386:4:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2385:6:20"},"scope":13662,"src":"2325:149:20","stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},{"body":{"id":13660,"nodeType":"Block","src":"2683:92:20","statements":[{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":13648,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13637,"src":"2711:3:20","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":13647,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2706:4:20","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":13649,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2706:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":13651,"name":"info","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13639,"src":"2722:4:20","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}],"id":13650,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2717:4:20","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":13652,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2717:10:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":13653,"name":"opaqueError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13641,"src":"2729:11:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13646,"name":"Failure","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13611,"src":"2698:7:20","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,uint256)"}},"id":13654,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2698:43:20","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13655,"nodeType":"EmitStatement","src":"2693:48:20"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":13657,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13637,"src":"2764:3:20","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":13656,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2759:4:20","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":13658,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2759:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":13645,"id":13659,"nodeType":"Return","src":"2752:16:20"}]},"documentation":"@dev use this when reporting an opaque error from an upgradeable collaborator contract","id":13661,"implemented":true,"kind":"function","modifiers":[],"name":"failOpaque","nodeType":"FunctionDefinition","parameters":{"id":13642,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13637,"name":"err","nodeType":"VariableDeclaration","scope":13661,"src":"2612:9:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"},"typeName":{"contractScope":null,"id":13636,"name":"Error","nodeType":"UserDefinedTypeName","referencedDeclaration":13574,"src":"2612:5:20","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},"value":null,"visibility":"internal"},{"constant":false,"id":13639,"name":"info","nodeType":"VariableDeclaration","scope":13661,"src":"2623:16:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"},"typeName":{"contractScope":null,"id":13638,"name":"FailureInfo","nodeType":"UserDefinedTypeName","referencedDeclaration":13603,"src":"2623:11:20","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}},"value":null,"visibility":"internal"},{"constant":false,"id":13641,"name":"opaqueError","nodeType":"VariableDeclaration","scope":13661,"src":"2641:16:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13640,"name":"uint","nodeType":"ElementaryTypeName","src":"2641:4:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2611:47:20"},"returnParameters":{"id":13645,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13644,"name":"","nodeType":"VariableDeclaration","scope":13661,"src":"2677:4:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13643,"name":"uint","nodeType":"ElementaryTypeName","src":"2677:4:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2676:6:20"},"scope":13662,"src":"2592:183:20","stateMutability":"nonpayable","superFunction":null,"visibility":"internal"}],"scope":13850,"src":"25:2752:20"},{"baseContracts":[],"contractDependencies":[],"contractKind":"contract","documentation":null,"fullyImplemented":true,"id":13849,"linearizedBaseContracts":[13849],"name":"TokenErrorReporter","nodeType":"ContractDefinition","nodes":[{"canonicalName":"TokenErrorReporter.Error","id":13681,"members":[{"id":13663,"name":"NO_ERROR","nodeType":"EnumValue","src":"2834:8:20"},{"id":13664,"name":"UNAUTHORIZED","nodeType":"EnumValue","src":"2852:12:20"},{"id":13665,"name":"BAD_INPUT","nodeType":"EnumValue","src":"2874:9:20"},{"id":13666,"name":"COMPTROLLER_REJECTION","nodeType":"EnumValue","src":"2893:21:20"},{"id":13667,"name":"COMPTROLLER_CALCULATION_ERROR","nodeType":"EnumValue","src":"2924:29:20"},{"id":13668,"name":"INTEREST_RATE_MODEL_ERROR","nodeType":"EnumValue","src":"2963:25:20"},{"id":13669,"name":"INVALID_ACCOUNT_PAIR","nodeType":"EnumValue","src":"2998:20:20"},{"id":13670,"name":"INVALID_CLOSE_AMOUNT_REQUESTED","nodeType":"EnumValue","src":"3028:30:20"},{"id":13671,"name":"INVALID_COLLATERAL_FACTOR","nodeType":"EnumValue","src":"3068:25:20"},{"id":13672,"name":"MATH_ERROR","nodeType":"EnumValue","src":"3103:10:20"},{"id":13673,"name":"MARKET_NOT_FRESH","nodeType":"EnumValue","src":"3123:16:20"},{"id":13674,"name":"MARKET_NOT_LISTED","nodeType":"EnumValue","src":"3149:17:20"},{"id":13675,"name":"TOKEN_INSUFFICIENT_ALLOWANCE","nodeType":"EnumValue","src":"3176:28:20"},{"id":13676,"name":"TOKEN_INSUFFICIENT_BALANCE","nodeType":"EnumValue","src":"3214:26:20"},{"id":13677,"name":"TOKEN_INSUFFICIENT_CASH","nodeType":"EnumValue","src":"3250:23:20"},{"id":13678,"name":"TOKEN_TRANSFER_IN_FAILED","nodeType":"EnumValue","src":"3283:24:20"},{"id":13679,"name":"TOKEN_TRANSFER_OUT_FAILED","nodeType":"EnumValue","src":"3317:25:20"},{"id":13680,"name":"UTILIZATION_ABOVE_MAX","nodeType":"EnumValue","src":"3352:21:20"}],"name":"Error","nodeType":"EnumDefinition","src":"2813:566:20"},{"canonicalName":"TokenErrorReporter.FailureInfo","id":13782,"members":[{"id":13682,"name":"ACCEPT_ADMIN_PENDING_ADMIN_CHECK","nodeType":"EnumValue","src":"3688:32:20"},{"id":13683,"name":"ACCRUE_INTEREST_ACCUMULATED_INTEREST_CALCULATION_FAILED","nodeType":"EnumValue","src":"3730:55:20"},{"id":13684,"name":"ACCRUE_INTEREST_BORROW_RATE_CALCULATION_FAILED","nodeType":"EnumValue","src":"3795:46:20"},{"id":13685,"name":"ACCRUE_INTEREST_NEW_BORROW_INDEX_CALCULATION_FAILED","nodeType":"EnumValue","src":"3851:51:20"},{"id":13686,"name":"ACCRUE_INTEREST_NEW_TOTAL_BORROWS_CALCULATION_FAILED","nodeType":"EnumValue","src":"3912:52:20"},{"id":13687,"name":"ACCRUE_INTEREST_NEW_TOTAL_RESERVES_CALCULATION_FAILED","nodeType":"EnumValue","src":"3974:53:20"},{"id":13688,"name":"ACCRUE_INTEREST_NEW_TOTAL_FUSE_FEES_CALCULATION_FAILED","nodeType":"EnumValue","src":"4037:54:20"},{"id":13689,"name":"ACCRUE_INTEREST_NEW_TOTAL_ADMIN_FEES_CALCULATION_FAILED","nodeType":"EnumValue","src":"4101:55:20"},{"id":13690,"name":"ACCRUE_INTEREST_SIMPLE_INTEREST_FACTOR_CALCULATION_FAILED","nodeType":"EnumValue","src":"4166:57:20"},{"id":13691,"name":"BORROW_ACCUMULATED_BALANCE_CALCULATION_FAILED","nodeType":"EnumValue","src":"4233:45:20"},{"id":13692,"name":"BORROW_ACCRUE_INTEREST_FAILED","nodeType":"EnumValue","src":"4288:29:20"},{"id":13693,"name":"BORROW_CASH_NOT_AVAILABLE","nodeType":"EnumValue","src":"4327:25:20"},{"id":13694,"name":"BORROW_FRESHNESS_CHECK","nodeType":"EnumValue","src":"4362:22:20"},{"id":13695,"name":"BORROW_NEW_TOTAL_BALANCE_CALCULATION_FAILED","nodeType":"EnumValue","src":"4394:43:20"},{"id":13696,"name":"BORROW_NEW_ACCOUNT_BORROW_BALANCE_CALCULATION_FAILED","nodeType":"EnumValue","src":"4447:52:20"},{"id":13697,"name":"BORROW_MARKET_NOT_LISTED","nodeType":"EnumValue","src":"4509:24:20"},{"id":13698,"name":"BORROW_COMPTROLLER_REJECTION","nodeType":"EnumValue","src":"4543:28:20"},{"id":13699,"name":"LIQUIDATE_ACCRUE_BORROW_INTEREST_FAILED","nodeType":"EnumValue","src":"4581:39:20"},{"id":13700,"name":"LIQUIDATE_ACCRUE_COLLATERAL_INTEREST_FAILED","nodeType":"EnumValue","src":"4630:43:20"},{"id":13701,"name":"LIQUIDATE_COLLATERAL_FRESHNESS_CHECK","nodeType":"EnumValue","src":"4683:36:20"},{"id":13702,"name":"LIQUIDATE_COMPTROLLER_REJECTION","nodeType":"EnumValue","src":"4729:31:20"},{"id":13703,"name":"LIQUIDATE_COMPTROLLER_CALCULATE_AMOUNT_SEIZE_FAILED","nodeType":"EnumValue","src":"4770:51:20"},{"id":13704,"name":"LIQUIDATE_CLOSE_AMOUNT_IS_UINT_MAX","nodeType":"EnumValue","src":"4831:34:20"},{"id":13705,"name":"LIQUIDATE_CLOSE_AMOUNT_IS_ZERO","nodeType":"EnumValue","src":"4875:30:20"},{"id":13706,"name":"LIQUIDATE_FRESHNESS_CHECK","nodeType":"EnumValue","src":"4915:25:20"},{"id":13707,"name":"LIQUIDATE_LIQUIDATOR_IS_BORROWER","nodeType":"EnumValue","src":"4950:32:20"},{"id":13708,"name":"LIQUIDATE_REPAY_BORROW_FRESH_FAILED","nodeType":"EnumValue","src":"4992:35:20"},{"id":13709,"name":"LIQUIDATE_SEIZE_BALANCE_INCREMENT_FAILED","nodeType":"EnumValue","src":"5037:40:20"},{"id":13710,"name":"LIQUIDATE_SEIZE_BALANCE_DECREMENT_FAILED","nodeType":"EnumValue","src":"5087:40:20"},{"id":13711,"name":"LIQUIDATE_SEIZE_COMPTROLLER_REJECTION","nodeType":"EnumValue","src":"5137:37:20"},{"id":13712,"name":"LIQUIDATE_SEIZE_LIQUIDATOR_IS_BORROWER","nodeType":"EnumValue","src":"5184:38:20"},{"id":13713,"name":"LIQUIDATE_SEIZE_TOO_MUCH","nodeType":"EnumValue","src":"5232:24:20"},{"id":13714,"name":"MINT_ACCRUE_INTEREST_FAILED","nodeType":"EnumValue","src":"5266:27:20"},{"id":13715,"name":"MINT_COMPTROLLER_REJECTION","nodeType":"EnumValue","src":"5303:26:20"},{"id":13716,"name":"MINT_EXCHANGE_CALCULATION_FAILED","nodeType":"EnumValue","src":"5339:32:20"},{"id":13717,"name":"MINT_EXCHANGE_RATE_READ_FAILED","nodeType":"EnumValue","src":"5381:30:20"},{"id":13718,"name":"MINT_FRESHNESS_CHECK","nodeType":"EnumValue","src":"5421:20:20"},{"id":13719,"name":"MINT_NEW_ACCOUNT_BALANCE_CALCULATION_FAILED","nodeType":"EnumValue","src":"5451:43:20"},{"id":13720,"name":"MINT_NEW_TOTAL_SUPPLY_CALCULATION_FAILED","nodeType":"EnumValue","src":"5504:40:20"},{"id":13721,"name":"MINT_TRANSFER_IN_FAILED","nodeType":"EnumValue","src":"5554:23:20"},{"id":13722,"name":"MINT_TRANSFER_IN_NOT_POSSIBLE","nodeType":"EnumValue","src":"5587:29:20"},{"id":13723,"name":"NEW_UTILIZATION_RATE_ABOVE_MAX","nodeType":"EnumValue","src":"5626:30:20"},{"id":13724,"name":"REDEEM_ACCRUE_INTEREST_FAILED","nodeType":"EnumValue","src":"5666:29:20"},{"id":13725,"name":"REDEEM_COMPTROLLER_REJECTION","nodeType":"EnumValue","src":"5705:28:20"},{"id":13726,"name":"REDEEM_EXCHANGE_TOKENS_CALCULATION_FAILED","nodeType":"EnumValue","src":"5743:41:20"},{"id":13727,"name":"REDEEM_EXCHANGE_AMOUNT_CALCULATION_FAILED","nodeType":"EnumValue","src":"5794:41:20"},{"id":13728,"name":"REDEEM_EXCHANGE_RATE_READ_FAILED","nodeType":"EnumValue","src":"5845:32:20"},{"id":13729,"name":"REDEEM_FRESHNESS_CHECK","nodeType":"EnumValue","src":"5887:22:20"},{"id":13730,"name":"REDEEM_NEW_ACCOUNT_BALANCE_CALCULATION_FAILED","nodeType":"EnumValue","src":"5919:45:20"},{"id":13731,"name":"REDEEM_NEW_TOTAL_SUPPLY_CALCULATION_FAILED","nodeType":"EnumValue","src":"5974:42:20"},{"id":13732,"name":"REDEEM_TRANSFER_OUT_NOT_POSSIBLE","nodeType":"EnumValue","src":"6026:32:20"},{"id":13733,"name":"WITHDRAW_FUSE_FEES_ACCRUE_INTEREST_FAILED","nodeType":"EnumValue","src":"6068:41:20"},{"id":13734,"name":"WITHDRAW_FUSE_FEES_CASH_NOT_AVAILABLE","nodeType":"EnumValue","src":"6119:37:20"},{"id":13735,"name":"WITHDRAW_FUSE_FEES_FRESH_CHECK","nodeType":"EnumValue","src":"6166:30:20"},{"id":13736,"name":"WITHDRAW_FUSE_FEES_VALIDATION","nodeType":"EnumValue","src":"6206:29:20"},{"id":13737,"name":"WITHDRAW_ADMIN_FEES_ACCRUE_INTEREST_FAILED","nodeType":"EnumValue","src":"6245:42:20"},{"id":13738,"name":"WITHDRAW_ADMIN_FEES_CASH_NOT_AVAILABLE","nodeType":"EnumValue","src":"6297:38:20"},{"id":13739,"name":"WITHDRAW_ADMIN_FEES_FRESH_CHECK","nodeType":"EnumValue","src":"6345:31:20"},{"id":13740,"name":"WITHDRAW_ADMIN_FEES_VALIDATION","nodeType":"EnumValue","src":"6386:30:20"},{"id":13741,"name":"REDUCE_RESERVES_ACCRUE_INTEREST_FAILED","nodeType":"EnumValue","src":"6426:38:20"},{"id":13742,"name":"REDUCE_RESERVES_ADMIN_CHECK","nodeType":"EnumValue","src":"6474:27:20"},{"id":13743,"name":"REDUCE_RESERVES_CASH_NOT_AVAILABLE","nodeType":"EnumValue","src":"6511:34:20"},{"id":13744,"name":"REDUCE_RESERVES_FRESH_CHECK","nodeType":"EnumValue","src":"6555:27:20"},{"id":13745,"name":"REDUCE_RESERVES_VALIDATION","nodeType":"EnumValue","src":"6592:26:20"},{"id":13746,"name":"REPAY_BEHALF_ACCRUE_INTEREST_FAILED","nodeType":"EnumValue","src":"6628:35:20"},{"id":13747,"name":"REPAY_BORROW_ACCRUE_INTEREST_FAILED","nodeType":"EnumValue","src":"6673:35:20"},{"id":13748,"name":"REPAY_BORROW_ACCUMULATED_BALANCE_CALCULATION_FAILED","nodeType":"EnumValue","src":"6718:51:20"},{"id":13749,"name":"REPAY_BORROW_COMPTROLLER_REJECTION","nodeType":"EnumValue","src":"6779:34:20"},{"id":13750,"name":"REPAY_BORROW_FRESHNESS_CHECK","nodeType":"EnumValue","src":"6823:28:20"},{"id":13751,"name":"REPAY_BORROW_NEW_ACCOUNT_BORROW_BALANCE_CALCULATION_FAILED","nodeType":"EnumValue","src":"6861:58:20"},{"id":13752,"name":"REPAY_BORROW_NEW_TOTAL_BALANCE_CALCULATION_FAILED","nodeType":"EnumValue","src":"6929:49:20"},{"id":13753,"name":"REPAY_BORROW_TRANSFER_IN_NOT_POSSIBLE","nodeType":"EnumValue","src":"6988:37:20"},{"id":13754,"name":"SET_COLLATERAL_FACTOR_OWNER_CHECK","nodeType":"EnumValue","src":"7035:33:20"},{"id":13755,"name":"SET_COLLATERAL_FACTOR_VALIDATION","nodeType":"EnumValue","src":"7078:32:20"},{"id":13756,"name":"SET_COMPTROLLER_OWNER_CHECK","nodeType":"EnumValue","src":"7120:27:20"},{"id":13757,"name":"SET_INTEREST_RATE_MODEL_ACCRUE_INTEREST_FAILED","nodeType":"EnumValue","src":"7157:46:20"},{"id":13758,"name":"SET_INTEREST_RATE_MODEL_FRESH_CHECK","nodeType":"EnumValue","src":"7213:35:20"},{"id":13759,"name":"SET_INTEREST_RATE_MODEL_OWNER_CHECK","nodeType":"EnumValue","src":"7258:35:20"},{"id":13760,"name":"SET_MAX_ASSETS_OWNER_CHECK","nodeType":"EnumValue","src":"7303:26:20"},{"id":13761,"name":"SET_ORACLE_MARKET_NOT_LISTED","nodeType":"EnumValue","src":"7339:28:20"},{"id":13762,"name":"TOGGLE_ADMIN_RIGHTS_OWNER_CHECK","nodeType":"EnumValue","src":"7377:31:20"},{"id":13763,"name":"SET_PENDING_ADMIN_OWNER_CHECK","nodeType":"EnumValue","src":"7418:29:20"},{"id":13764,"name":"SET_ADMIN_FEE_ACCRUE_INTEREST_FAILED","nodeType":"EnumValue","src":"7457:36:20"},{"id":13765,"name":"SET_ADMIN_FEE_ADMIN_CHECK","nodeType":"EnumValue","src":"7503:25:20"},{"id":13766,"name":"SET_ADMIN_FEE_FRESH_CHECK","nodeType":"EnumValue","src":"7538:25:20"},{"id":13767,"name":"SET_ADMIN_FEE_BOUNDS_CHECK","nodeType":"EnumValue","src":"7573:26:20"},{"id":13768,"name":"SET_FUSE_FEE_ACCRUE_INTEREST_FAILED","nodeType":"EnumValue","src":"7609:35:20"},{"id":13769,"name":"SET_FUSE_FEE_FRESH_CHECK","nodeType":"EnumValue","src":"7654:24:20"},{"id":13770,"name":"SET_FUSE_FEE_BOUNDS_CHECK","nodeType":"EnumValue","src":"7688:25:20"},{"id":13771,"name":"SET_RESERVE_FACTOR_ACCRUE_INTEREST_FAILED","nodeType":"EnumValue","src":"7723:41:20"},{"id":13772,"name":"SET_RESERVE_FACTOR_ADMIN_CHECK","nodeType":"EnumValue","src":"7774:30:20"},{"id":13773,"name":"SET_RESERVE_FACTOR_FRESH_CHECK","nodeType":"EnumValue","src":"7814:30:20"},{"id":13774,"name":"SET_RESERVE_FACTOR_BOUNDS_CHECK","nodeType":"EnumValue","src":"7854:31:20"},{"id":13775,"name":"TRANSFER_COMPTROLLER_REJECTION","nodeType":"EnumValue","src":"7895:30:20"},{"id":13776,"name":"TRANSFER_NOT_ALLOWED","nodeType":"EnumValue","src":"7935:20:20"},{"id":13777,"name":"TRANSFER_NOT_ENOUGH","nodeType":"EnumValue","src":"7965:19:20"},{"id":13778,"name":"TRANSFER_TOO_MUCH","nodeType":"EnumValue","src":"7994:17:20"},{"id":13779,"name":"ADD_RESERVES_ACCRUE_INTEREST_FAILED","nodeType":"EnumValue","src":"8021:35:20"},{"id":13780,"name":"ADD_RESERVES_FRESH_CHECK","nodeType":"EnumValue","src":"8066:24:20"},{"id":13781,"name":"ADD_RESERVES_TRANSFER_IN_NOT_POSSIBLE","nodeType":"EnumValue","src":"8100:37:20"}],"name":"FailureInfo","nodeType":"EnumDefinition","src":"3661:4482:20"},{"anonymous":false,"documentation":"@dev `error` corresponds to enum Error; `info` corresponds to enum FailureInfo, and `detail` is an arbitrary\ncontract-specific code that enables us to report opaque error codes from upgradeable contracts.*","id":13790,"name":"Failure","nodeType":"EventDefinition","parameters":{"id":13789,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13784,"indexed":false,"name":"error","nodeType":"VariableDeclaration","scope":13790,"src":"8402:10:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13783,"name":"uint","nodeType":"ElementaryTypeName","src":"8402:4:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":13786,"indexed":false,"name":"info","nodeType":"VariableDeclaration","scope":13790,"src":"8414:9:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13785,"name":"uint","nodeType":"ElementaryTypeName","src":"8414:4:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":13788,"indexed":false,"name":"detail","nodeType":"VariableDeclaration","scope":13790,"src":"8425:11:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13787,"name":"uint","nodeType":"ElementaryTypeName","src":"8425:4:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"8401:36:20"},"src":"8388:50:20"},{"body":{"id":13813,"nodeType":"Block","src":"8635:82:20","statements":[{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":13801,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13792,"src":"8663:3:20","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}],"id":13800,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8658:4:20","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":13802,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8658:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":13804,"name":"info","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13794,"src":"8674:4:20","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}],"id":13803,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8669:4:20","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":13805,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8669:10:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"30","id":13806,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8681:1:20","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":13799,"name":"Failure","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13790,"src":"8650:7:20","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,uint256)"}},"id":13807,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8650:33:20","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13808,"nodeType":"EmitStatement","src":"8645:38:20"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":13810,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13792,"src":"8706:3:20","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}],"id":13809,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8701:4:20","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":13811,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8701:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":13798,"id":13812,"nodeType":"Return","src":"8694:16:20"}]},"documentation":"@dev use this when reporting a known error from the money market or a non-upgradeable collaborator","id":13814,"implemented":true,"kind":"function","modifiers":[],"name":"fail","nodeType":"FunctionDefinition","parameters":{"id":13795,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13792,"name":"err","nodeType":"VariableDeclaration","scope":13814,"src":"8582:9:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"},"typeName":{"contractScope":null,"id":13791,"name":"Error","nodeType":"UserDefinedTypeName","referencedDeclaration":13681,"src":"8582:5:20","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}},"value":null,"visibility":"internal"},{"constant":false,"id":13794,"name":"info","nodeType":"VariableDeclaration","scope":13814,"src":"8593:16:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"},"typeName":{"contractScope":null,"id":13793,"name":"FailureInfo","nodeType":"UserDefinedTypeName","referencedDeclaration":13782,"src":"8593:11:20","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}},"value":null,"visibility":"internal"}],"src":"8581:29:20"},"returnParameters":{"id":13798,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13797,"name":"","nodeType":"VariableDeclaration","scope":13814,"src":"8629:4:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13796,"name":"uint","nodeType":"ElementaryTypeName","src":"8629:4:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"8628:6:20"},"scope":13849,"src":"8568:149:20","stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},{"body":{"id":13847,"nodeType":"Block","src":"8926:150:20","statements":[{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":13827,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13816,"src":"8954:3:20","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}],"id":13826,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8949:4:20","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":13828,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8949:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":13830,"name":"info","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13818,"src":"8965:4:20","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}],"id":13829,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8960:4:20","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":13831,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8960:10:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":13832,"name":"opaqueError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13820,"src":"8972:11:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13825,"name":"Failure","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13790,"src":"8941:7:20","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,uint256)"}},"id":13833,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8941:43:20","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13834,"nodeType":"EmitStatement","src":"8936:48:20"},{"expression":{"argumentTypes":null,"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"},"id":13838,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":13835,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13816,"src":"9002:3:20","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":13836,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13681,"src":"9009:5:20","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13681_$","typeString":"type(enum TokenErrorReporter.Error)"}},"id":13837,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"COMPTROLLER_REJECTION","nodeType":"MemberAccess","referencedDeclaration":null,"src":"9009:27:20","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}},"src":"9002:34:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":13843,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13816,"src":"9065:3:20","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}],"id":13842,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9060:4:20","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":13844,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9060:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13845,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"9002:67:20","trueExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13841,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"hexValue":"31303030","id":13839,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9039:4:20","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1000_by_1","typeString":"int_const 1000"},"value":"1000"},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"argumentTypes":null,"id":13840,"name":"opaqueError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13820,"src":"9046:11:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9039:18:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":13824,"id":13846,"nodeType":"Return","src":"8995:74:20"}]},"documentation":"@dev use this when reporting an opaque error from an upgradeable collaborator contract","id":13848,"implemented":true,"kind":"function","modifiers":[],"name":"failOpaque","nodeType":"FunctionDefinition","parameters":{"id":13821,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13816,"name":"err","nodeType":"VariableDeclaration","scope":13848,"src":"8855:9:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"},"typeName":{"contractScope":null,"id":13815,"name":"Error","nodeType":"UserDefinedTypeName","referencedDeclaration":13681,"src":"8855:5:20","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13681","typeString":"enum TokenErrorReporter.Error"}},"value":null,"visibility":"internal"},{"constant":false,"id":13818,"name":"info","nodeType":"VariableDeclaration","scope":13848,"src":"8866:16:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"},"typeName":{"contractScope":null,"id":13817,"name":"FailureInfo","nodeType":"UserDefinedTypeName","referencedDeclaration":13782,"src":"8866:11:20","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13782","typeString":"enum TokenErrorReporter.FailureInfo"}},"value":null,"visibility":"internal"},{"constant":false,"id":13820,"name":"opaqueError","nodeType":"VariableDeclaration","scope":13848,"src":"8884:16:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13819,"name":"uint","nodeType":"ElementaryTypeName","src":"8884:4:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"8854:47:20"},"returnParameters":{"id":13824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13823,"name":"","nodeType":"VariableDeclaration","scope":13848,"src":"8920:4:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13822,"name":"uint","nodeType":"ElementaryTypeName","src":"8920:4:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"8919:6:20"},"scope":13849,"src":"8835:241:20","stateMutability":"nonpayable","superFunction":null,"visibility":"internal"}],"scope":13850,"src":"2779:6299:20"}],"src":"0:9078:20"},"id":20},"contracts/Exponential.sol":{"ast":{"absolutePath":"contracts/Exponential.sol","exportedSymbols":{"Exponential":[14371]},"id":14372,"nodeType":"SourceUnit","nodes":[{"id":13851,"literals":["solidity","0.5",".17"],"nodeType":"PragmaDirective","src":"0:23:21"},{"absolutePath":"contracts/CarefulMath.sol","file":"./CarefulMath.sol","id":13852,"nodeType":"ImportDirective","scope":14372,"sourceUnit":6838,"src":"25:27:21","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/ExponentialNoError.sol","file":"./ExponentialNoError.sol","id":13853,"nodeType":"ImportDirective","scope":14372,"sourceUnit":15067,"src":"53:34:21","symbolAliases":[],"unitAlias":""},{"baseContracts":[{"arguments":null,"baseName":{"contractScope":null,"id":13854,"name":"CarefulMath","nodeType":"UserDefinedTypeName","referencedDeclaration":6837,"src":"537:11:21","typeDescriptions":{"typeIdentifier":"t_contract$_CarefulMath_$6837","typeString":"contract CarefulMath"}},"id":13855,"nodeType":"InheritanceSpecifier","src":"537:11:21"},{"arguments":null,"baseName":{"contractScope":null,"id":13856,"name":"ExponentialNoError","nodeType":"UserDefinedTypeName","referencedDeclaration":15066,"src":"550:18:21","typeDescriptions":{"typeIdentifier":"t_contract$_ExponentialNoError_$15066","typeString":"contract ExponentialNoError"}},"id":13857,"nodeType":"InheritanceSpecifier","src":"550:18:21"}],"contractDependencies":[6837,15066],"contractKind":"contract","documentation":"@title Exponential module for storing fixed-precision decimals\n@author Compound\n@dev Legacy contract for compatibility reasons with existing contracts that still use MathError\n@notice Exp is a struct which stores decimals with a fixed precision of 18 decimal places.\n Thus, if we wanted to store the 5.1, mantissa would store 5.1e18. That is:\n `Exp({mantissa: 5100000000000000000})`.","fullyImplemented":true,"id":14371,"linearizedBaseContracts":[14371,15066,6837],"name":"Exponential","nodeType":"ContractDefinition","nodes":[{"body":{"id":13917,"nodeType":"Block","src":"855:419:21","statements":[{"assignments":[13869,13871],"declarations":[{"constant":false,"id":13869,"name":"err0","nodeType":"VariableDeclaration","scope":13917,"src":"866:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"typeName":{"contractScope":null,"id":13868,"name":"MathError","nodeType":"UserDefinedTypeName","referencedDeclaration":6659,"src":"866:9:21","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"value":null,"visibility":"internal"},{"constant":false,"id":13871,"name":"scaledNumerator","nodeType":"VariableDeclaration","scope":13917,"src":"882:20:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13870,"name":"uint","nodeType":"ElementaryTypeName","src":"882:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":13876,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":13873,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13859,"src":"914:3:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":13874,"name":"expScale","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14376,"src":"919:8:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13872,"name":"mulUInt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6705,"src":"906:7:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (enum CarefulMath.MathError,uint256)"}},"id":13875,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"906:22:21","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"865:63:21"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"id":13880,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":13877,"name":"err0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13869,"src":"942:4:21","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":13878,"name":"MathError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6659,"src":"950:9:21","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MathError_$6659_$","typeString":"type(enum CarefulMath.MathError)"}},"id":13879,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"950:18:21","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"src":"942:26:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":13888,"nodeType":"IfStatement","src":"938:90:21","trueBody":{"id":13887,"nodeType":"Block","src":"970:58:21","statements":[{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":13881,"name":"err0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13869,"src":"992:4:21","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":13883,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1013:1:21","subdenomination":null,"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":13882,"name":"Exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14390,"src":"998:3:21","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Exp_$14390_storage_ptr_$","typeString":"type(struct ExponentialNoError.Exp storage pointer)"}},"id":13884,"isConstant":false,"isLValue":false,"isPure":true,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"998:18:21","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}}],"id":13885,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"991:26:21","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_struct$_Exp_$14390_memory_$","typeString":"tuple(enum CarefulMath.MathError,struct ExponentialNoError.Exp memory)"}},"functionReturnParameters":13867,"id":13886,"nodeType":"Return","src":"984:33:21"}]}},{"assignments":[13890,13892],"declarations":[{"constant":false,"id":13890,"name":"err1","nodeType":"VariableDeclaration","scope":13917,"src":"1039:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"typeName":{"contractScope":null,"id":13889,"name":"MathError","nodeType":"UserDefinedTypeName","referencedDeclaration":6659,"src":"1039:9:21","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"value":null,"visibility":"internal"},{"constant":false,"id":13892,"name":"rational","nodeType":"VariableDeclaration","scope":13917,"src":"1055:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13891,"name":"uint","nodeType":"ElementaryTypeName","src":"1055:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":13897,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":13894,"name":"scaledNumerator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13871,"src":"1080:15:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":13895,"name":"denom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13861,"src":"1097:5:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13893,"name":"divUInt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6734,"src":"1072:7:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (enum CarefulMath.MathError,uint256)"}},"id":13896,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1072:31:21","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"1038:65:21"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"id":13901,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":13898,"name":"err1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13890,"src":"1117:4:21","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":13899,"name":"MathError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6659,"src":"1125:9:21","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MathError_$6659_$","typeString":"type(enum CarefulMath.MathError)"}},"id":13900,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"1125:18:21","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"src":"1117:26:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":13909,"nodeType":"IfStatement","src":"1113:90:21","trueBody":{"id":13908,"nodeType":"Block","src":"1145:58:21","statements":[{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":13902,"name":"err1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13890,"src":"1167:4:21","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":13904,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1188:1:21","subdenomination":null,"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":13903,"name":"Exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14390,"src":"1173:3:21","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Exp_$14390_storage_ptr_$","typeString":"type(struct ExponentialNoError.Exp storage pointer)"}},"id":13905,"isConstant":false,"isLValue":false,"isPure":true,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"1173:18:21","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}}],"id":13906,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1166:26:21","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_struct$_Exp_$14390_memory_$","typeString":"tuple(enum CarefulMath.MathError,struct ExponentialNoError.Exp memory)"}},"functionReturnParameters":13867,"id":13907,"nodeType":"Return","src":"1159:33:21"}]}},{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":13910,"name":"MathError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6659,"src":"1221:9:21","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MathError_$6659_$","typeString":"type(enum CarefulMath.MathError)"}},"id":13911,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"1221:18:21","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":13913,"name":"rational","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13892,"src":"1256:8:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13912,"name":"Exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14390,"src":"1241:3:21","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Exp_$14390_storage_ptr_$","typeString":"type(struct ExponentialNoError.Exp storage pointer)"}},"id":13914,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"1241:25:21","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}}],"id":13915,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1220:47:21","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_struct$_Exp_$14390_memory_$","typeString":"tuple(enum CarefulMath.MathError,struct ExponentialNoError.Exp memory)"}},"functionReturnParameters":13867,"id":13916,"nodeType":"Return","src":"1213:54:21"}]},"documentation":"@dev Creates an exponential from numerator and denominator values.\n Note: Returns an error if (`num` * 10e18) > MAX_INT,\n or if `denom` is zero.","id":13918,"implemented":true,"kind":"function","modifiers":[],"name":"getExp","nodeType":"FunctionDefinition","parameters":{"id":13862,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13859,"name":"num","nodeType":"VariableDeclaration","scope":13918,"src":"787:8:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13858,"name":"uint","nodeType":"ElementaryTypeName","src":"787:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":13861,"name":"denom","nodeType":"VariableDeclaration","scope":13918,"src":"797:10:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13860,"name":"uint","nodeType":"ElementaryTypeName","src":"797:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"786:22:21"},"returnParameters":{"id":13867,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13864,"name":"","nodeType":"VariableDeclaration","scope":13918,"src":"832:9:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"typeName":{"contractScope":null,"id":13863,"name":"MathError","nodeType":"UserDefinedTypeName","referencedDeclaration":6659,"src":"832:9:21","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"value":null,"visibility":"internal"},{"constant":false,"id":13866,"name":"","nodeType":"VariableDeclaration","scope":13918,"src":"843:10:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":13865,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"843:3:21","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"}],"src":"831:23:21"},"scope":14371,"src":"771:503:21","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":13946,"nodeType":"Block","src":"1450:131:21","statements":[{"assignments":[13930,13932],"declarations":[{"constant":false,"id":13930,"name":"error","nodeType":"VariableDeclaration","scope":13946,"src":"1461:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"typeName":{"contractScope":null,"id":13929,"name":"MathError","nodeType":"UserDefinedTypeName","referencedDeclaration":6659,"src":"1461:9:21","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"value":null,"visibility":"internal"},{"constant":false,"id":13932,"name":"result","nodeType":"VariableDeclaration","scope":13946,"src":"1478:11:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13931,"name":"uint","nodeType":"ElementaryTypeName","src":"1478:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":13939,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":13934,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13920,"src":"1501:1:21","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}},"id":13935,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mantissa","nodeType":"MemberAccess","referencedDeclaration":14389,"src":"1501:10:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":13936,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13922,"src":"1513:1:21","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}},"id":13937,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mantissa","nodeType":"MemberAccess","referencedDeclaration":14389,"src":"1513:10:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13933,"name":"addUInt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6798,"src":"1493:7:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (enum CarefulMath.MathError,uint256)"}},"id":13938,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1493:31:21","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"1460:64:21"},{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":13940,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13930,"src":"1543:5:21","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":13942,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13932,"src":"1565:6:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13941,"name":"Exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14390,"src":"1550:3:21","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Exp_$14390_storage_ptr_$","typeString":"type(struct ExponentialNoError.Exp storage pointer)"}},"id":13943,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"1550:23:21","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}}],"id":13944,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1542:32:21","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_struct$_Exp_$14390_memory_$","typeString":"tuple(enum CarefulMath.MathError,struct ExponentialNoError.Exp memory)"}},"functionReturnParameters":13928,"id":13945,"nodeType":"Return","src":"1535:39:21"}]},"documentation":"@dev Adds two exponentials, returning a new exponential.","id":13947,"implemented":true,"kind":"function","modifiers":[],"name":"addExp","nodeType":"FunctionDefinition","parameters":{"id":13923,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13920,"name":"a","nodeType":"VariableDeclaration","scope":13947,"src":"1376:12:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":13919,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"1376:3:21","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"},{"constant":false,"id":13922,"name":"b","nodeType":"VariableDeclaration","scope":13947,"src":"1390:12:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":13921,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"1390:3:21","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"}],"src":"1375:28:21"},"returnParameters":{"id":13928,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13925,"name":"","nodeType":"VariableDeclaration","scope":13947,"src":"1427:9:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"typeName":{"contractScope":null,"id":13924,"name":"MathError","nodeType":"UserDefinedTypeName","referencedDeclaration":6659,"src":"1427:9:21","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"value":null,"visibility":"internal"},{"constant":false,"id":13927,"name":"","nodeType":"VariableDeclaration","scope":13947,"src":"1438:10:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":13926,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"1438:3:21","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"}],"src":"1426:23:21"},"scope":14371,"src":"1360:221:21","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":13975,"nodeType":"Block","src":"1762:131:21","statements":[{"assignments":[13959,13961],"declarations":[{"constant":false,"id":13959,"name":"error","nodeType":"VariableDeclaration","scope":13975,"src":"1773:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"typeName":{"contractScope":null,"id":13958,"name":"MathError","nodeType":"UserDefinedTypeName","referencedDeclaration":6659,"src":"1773:9:21","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"value":null,"visibility":"internal"},{"constant":false,"id":13961,"name":"result","nodeType":"VariableDeclaration","scope":13975,"src":"1790:11:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13960,"name":"uint","nodeType":"ElementaryTypeName","src":"1790:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":13968,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":13963,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13949,"src":"1813:1:21","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}},"id":13964,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mantissa","nodeType":"MemberAccess","referencedDeclaration":14389,"src":"1813:10:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":13965,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13951,"src":"1825:1:21","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}},"id":13966,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mantissa","nodeType":"MemberAccess","referencedDeclaration":14389,"src":"1825:10:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13962,"name":"subUInt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6764,"src":"1805:7:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (enum CarefulMath.MathError,uint256)"}},"id":13967,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1805:31:21","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"1772:64:21"},{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":13969,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13959,"src":"1855:5:21","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":13971,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13961,"src":"1877:6:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13970,"name":"Exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14390,"src":"1862:3:21","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Exp_$14390_storage_ptr_$","typeString":"type(struct ExponentialNoError.Exp storage pointer)"}},"id":13972,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"1862:23:21","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}}],"id":13973,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1854:32:21","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_struct$_Exp_$14390_memory_$","typeString":"tuple(enum CarefulMath.MathError,struct ExponentialNoError.Exp memory)"}},"functionReturnParameters":13957,"id":13974,"nodeType":"Return","src":"1847:39:21"}]},"documentation":"@dev Subtracts two exponentials, returning a new exponential.","id":13976,"implemented":true,"kind":"function","modifiers":[],"name":"subExp","nodeType":"FunctionDefinition","parameters":{"id":13952,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13949,"name":"a","nodeType":"VariableDeclaration","scope":13976,"src":"1688:12:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":13948,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"1688:3:21","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"},{"constant":false,"id":13951,"name":"b","nodeType":"VariableDeclaration","scope":13976,"src":"1702:12:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":13950,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"1702:3:21","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"}],"src":"1687:28:21"},"returnParameters":{"id":13957,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13954,"name":"","nodeType":"VariableDeclaration","scope":13976,"src":"1739:9:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"typeName":{"contractScope":null,"id":13953,"name":"MathError","nodeType":"UserDefinedTypeName","referencedDeclaration":6659,"src":"1739:9:21","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"value":null,"visibility":"internal"},{"constant":false,"id":13956,"name":"","nodeType":"VariableDeclaration","scope":13976,"src":"1750:10:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":13955,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"1750:3:21","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"}],"src":"1738:23:21"},"scope":14371,"src":"1672:221:21","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":14016,"nodeType":"Block","src":"2069:254:21","statements":[{"assignments":[13988,13990],"declarations":[{"constant":false,"id":13988,"name":"err0","nodeType":"VariableDeclaration","scope":14016,"src":"2080:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"typeName":{"contractScope":null,"id":13987,"name":"MathError","nodeType":"UserDefinedTypeName","referencedDeclaration":6659,"src":"2080:9:21","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"value":null,"visibility":"internal"},{"constant":false,"id":13990,"name":"scaledMantissa","nodeType":"VariableDeclaration","scope":14016,"src":"2096:19:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13989,"name":"uint","nodeType":"ElementaryTypeName","src":"2096:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":13996,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":13992,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13978,"src":"2127:1:21","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}},"id":13993,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mantissa","nodeType":"MemberAccess","referencedDeclaration":14389,"src":"2127:10:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":13994,"name":"scalar","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13980,"src":"2139:6:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13991,"name":"mulUInt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6705,"src":"2119:7:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (enum CarefulMath.MathError,uint256)"}},"id":13995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2119:27:21","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"2079:67:21"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"id":14000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":13997,"name":"err0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13988,"src":"2160:4:21","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":13998,"name":"MathError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6659,"src":"2168:9:21","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MathError_$6659_$","typeString":"type(enum CarefulMath.MathError)"}},"id":13999,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2168:18:21","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"src":"2160:26:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":14008,"nodeType":"IfStatement","src":"2156:90:21","trueBody":{"id":14007,"nodeType":"Block","src":"2188:58:21","statements":[{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":14001,"name":"err0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13988,"src":"2210:4:21","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":14003,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2231:1:21","subdenomination":null,"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":14002,"name":"Exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14390,"src":"2216:3:21","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Exp_$14390_storage_ptr_$","typeString":"type(struct ExponentialNoError.Exp storage pointer)"}},"id":14004,"isConstant":false,"isLValue":false,"isPure":true,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"2216:18:21","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}}],"id":14005,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2209:26:21","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_struct$_Exp_$14390_memory_$","typeString":"tuple(enum CarefulMath.MathError,struct ExponentialNoError.Exp memory)"}},"functionReturnParameters":13986,"id":14006,"nodeType":"Return","src":"2202:33:21"}]}},{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":14009,"name":"MathError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6659,"src":"2264:9:21","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MathError_$6659_$","typeString":"type(enum CarefulMath.MathError)"}},"id":14010,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2264:18:21","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":14012,"name":"scaledMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13990,"src":"2299:14:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14011,"name":"Exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14390,"src":"2284:3:21","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Exp_$14390_storage_ptr_$","typeString":"type(struct ExponentialNoError.Exp storage pointer)"}},"id":14013,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"2284:31:21","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}}],"id":14014,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2263:53:21","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_struct$_Exp_$14390_memory_$","typeString":"tuple(enum CarefulMath.MathError,struct ExponentialNoError.Exp memory)"}},"functionReturnParameters":13986,"id":14015,"nodeType":"Return","src":"2256:60:21"}]},"documentation":"@dev Multiply an Exp by a scalar, returning a new Exp.","id":14017,"implemented":true,"kind":"function","modifiers":[],"name":"mulScalar","nodeType":"FunctionDefinition","parameters":{"id":13981,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13978,"name":"a","nodeType":"VariableDeclaration","scope":14017,"src":"1996:12:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":13977,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"1996:3:21","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"},{"constant":false,"id":13980,"name":"scalar","nodeType":"VariableDeclaration","scope":14017,"src":"2010:11:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13979,"name":"uint","nodeType":"ElementaryTypeName","src":"2010:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1995:27:21"},"returnParameters":{"id":13986,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13983,"name":"","nodeType":"VariableDeclaration","scope":14017,"src":"2046:9:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"typeName":{"contractScope":null,"id":13982,"name":"MathError","nodeType":"UserDefinedTypeName","referencedDeclaration":6659,"src":"2046:9:21","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"value":null,"visibility":"internal"},{"constant":false,"id":13985,"name":"","nodeType":"VariableDeclaration","scope":14017,"src":"2057:10:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":13984,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"2057:3:21","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"}],"src":"2045:23:21"},"scope":14371,"src":"1977:346:21","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":14054,"nodeType":"Block","src":"2525:212:21","statements":[{"assignments":[14029,14031],"declarations":[{"constant":false,"id":14029,"name":"err","nodeType":"VariableDeclaration","scope":14054,"src":"2536:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"typeName":{"contractScope":null,"id":14028,"name":"MathError","nodeType":"UserDefinedTypeName","referencedDeclaration":6659,"src":"2536:9:21","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"value":null,"visibility":"internal"},{"constant":false,"id":14031,"name":"product","nodeType":"VariableDeclaration","scope":14054,"src":"2551:18:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":14030,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"2551:3:21","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"}],"id":14036,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":14033,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14019,"src":"2583:1:21","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}},{"argumentTypes":null,"id":14034,"name":"scalar","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14021,"src":"2586:6:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14032,"name":"mulScalar","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14017,"src":"2573:9:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Exp_$14390_memory_ptr_$_t_uint256_$returns$_t_enum$_MathError_$6659_$_t_struct$_Exp_$14390_memory_ptr_$","typeString":"function (struct ExponentialNoError.Exp memory,uint256) pure returns (enum CarefulMath.MathError,struct ExponentialNoError.Exp memory)"}},"id":14035,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2573:20:21","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_struct$_Exp_$14390_memory_ptr_$","typeString":"tuple(enum CarefulMath.MathError,struct ExponentialNoError.Exp memory)"}},"nodeType":"VariableDeclarationStatement","src":"2535:58:21"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"id":14040,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":14037,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14029,"src":"2607:3:21","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":14038,"name":"MathError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6659,"src":"2614:9:21","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MathError_$6659_$","typeString":"type(enum CarefulMath.MathError)"}},"id":14039,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2614:18:21","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"src":"2607:25:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":14046,"nodeType":"IfStatement","src":"2603:71:21","trueBody":{"id":14045,"nodeType":"Block","src":"2634:40:21","statements":[{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":14041,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14029,"src":"2656:3:21","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},{"argumentTypes":null,"hexValue":"30","id":14042,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2661:1:21","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":14043,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2655:8:21","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_rational_0_by_1_$","typeString":"tuple(enum CarefulMath.MathError,int_const 0)"}},"functionReturnParameters":14027,"id":14044,"nodeType":"Return","src":"2648:15:21"}]}},{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":14047,"name":"MathError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6659,"src":"2692:9:21","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MathError_$6659_$","typeString":"type(enum CarefulMath.MathError)"}},"id":14048,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2692:18:21","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":14050,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14031,"src":"2721:7:21","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}],"id":14049,"name":"truncate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14406,"src":"2712:8:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Exp_$14390_memory_ptr_$returns$_t_uint256_$","typeString":"function (struct ExponentialNoError.Exp memory) pure returns (uint256)"}},"id":14051,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2712:17:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":14052,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2691:39:21","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"functionReturnParameters":14027,"id":14053,"nodeType":"Return","src":"2684:46:21"}]},"documentation":"@dev Multiply an Exp by a scalar, then truncate to return an unsigned integer.","id":14055,"implemented":true,"kind":"function","modifiers":[],"name":"mulScalarTruncate","nodeType":"FunctionDefinition","parameters":{"id":14022,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14019,"name":"a","nodeType":"VariableDeclaration","scope":14055,"src":"2458:12:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":14018,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"2458:3:21","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"},{"constant":false,"id":14021,"name":"scalar","nodeType":"VariableDeclaration","scope":14055,"src":"2472:11:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14020,"name":"uint","nodeType":"ElementaryTypeName","src":"2472:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2457:27:21"},"returnParameters":{"id":14027,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14024,"name":"","nodeType":"VariableDeclaration","scope":14055,"src":"2508:9:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"typeName":{"contractScope":null,"id":14023,"name":"MathError","nodeType":"UserDefinedTypeName","referencedDeclaration":6659,"src":"2508:9:21","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"value":null,"visibility":"internal"},{"constant":false,"id":14026,"name":"","nodeType":"VariableDeclaration","scope":14055,"src":"2519:4:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14025,"name":"uint","nodeType":"ElementaryTypeName","src":"2519:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2507:17:21"},"scope":14371,"src":"2431:306:21","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":14094,"nodeType":"Block","src":"2991:207:21","statements":[{"assignments":[14069,14071],"declarations":[{"constant":false,"id":14069,"name":"err","nodeType":"VariableDeclaration","scope":14094,"src":"3002:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"typeName":{"contractScope":null,"id":14068,"name":"MathError","nodeType":"UserDefinedTypeName","referencedDeclaration":6659,"src":"3002:9:21","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"value":null,"visibility":"internal"},{"constant":false,"id":14071,"name":"product","nodeType":"VariableDeclaration","scope":14094,"src":"3017:18:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":14070,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"3017:3:21","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"}],"id":14076,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":14073,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14057,"src":"3049:1:21","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}},{"argumentTypes":null,"id":14074,"name":"scalar","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14059,"src":"3052:6:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14072,"name":"mulScalar","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14017,"src":"3039:9:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Exp_$14390_memory_ptr_$_t_uint256_$returns$_t_enum$_MathError_$6659_$_t_struct$_Exp_$14390_memory_ptr_$","typeString":"function (struct ExponentialNoError.Exp memory,uint256) pure returns (enum CarefulMath.MathError,struct ExponentialNoError.Exp memory)"}},"id":14075,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3039:20:21","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_struct$_Exp_$14390_memory_ptr_$","typeString":"tuple(enum CarefulMath.MathError,struct ExponentialNoError.Exp memory)"}},"nodeType":"VariableDeclarationStatement","src":"3001:58:21"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"id":14080,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":14077,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14069,"src":"3073:3:21","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":14078,"name":"MathError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6659,"src":"3080:9:21","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MathError_$6659_$","typeString":"type(enum CarefulMath.MathError)"}},"id":14079,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"3080:18:21","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"src":"3073:25:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":14086,"nodeType":"IfStatement","src":"3069:71:21","trueBody":{"id":14085,"nodeType":"Block","src":"3100:40:21","statements":[{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":14081,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14069,"src":"3122:3:21","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},{"argumentTypes":null,"hexValue":"30","id":14082,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3127:1:21","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":14083,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3121:8:21","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_rational_0_by_1_$","typeString":"tuple(enum CarefulMath.MathError,int_const 0)"}},"functionReturnParameters":14067,"id":14084,"nodeType":"Return","src":"3114:15:21"}]}},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":14089,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14071,"src":"3174:7:21","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}],"id":14088,"name":"truncate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14406,"src":"3165:8:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Exp_$14390_memory_ptr_$returns$_t_uint256_$","typeString":"function (struct ExponentialNoError.Exp memory) pure returns (uint256)"}},"id":14090,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3165:17:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":14091,"name":"addend","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14061,"src":"3184:6:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14087,"name":"addUInt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6798,"src":"3157:7:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (enum CarefulMath.MathError,uint256)"}},"id":14092,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3157:34:21","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"functionReturnParameters":14067,"id":14093,"nodeType":"Return","src":"3150:41:21"}]},"documentation":"@dev Multiply an Exp by a scalar, truncate, then add an to an unsigned integer, returning an unsigned integer.","id":14095,"implemented":true,"kind":"function","modifiers":[],"name":"mulScalarTruncateAddUInt","nodeType":"FunctionDefinition","parameters":{"id":14062,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14057,"name":"a","nodeType":"VariableDeclaration","scope":14095,"src":"2911:12:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":14056,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"2911:3:21","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"},{"constant":false,"id":14059,"name":"scalar","nodeType":"VariableDeclaration","scope":14095,"src":"2925:11:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14058,"name":"uint","nodeType":"ElementaryTypeName","src":"2925:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":14061,"name":"addend","nodeType":"VariableDeclaration","scope":14095,"src":"2938:11:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14060,"name":"uint","nodeType":"ElementaryTypeName","src":"2938:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2910:40:21"},"returnParameters":{"id":14067,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14064,"name":"","nodeType":"VariableDeclaration","scope":14095,"src":"2974:9:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"typeName":{"contractScope":null,"id":14063,"name":"MathError","nodeType":"UserDefinedTypeName","referencedDeclaration":6659,"src":"2974:9:21","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"value":null,"visibility":"internal"},{"constant":false,"id":14066,"name":"","nodeType":"VariableDeclaration","scope":14095,"src":"2985:4:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14065,"name":"uint","nodeType":"ElementaryTypeName","src":"2985:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2973:17:21"},"scope":14371,"src":"2877:321:21","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":14135,"nodeType":"Block","src":"3372:258:21","statements":[{"assignments":[14107,14109],"declarations":[{"constant":false,"id":14107,"name":"err0","nodeType":"VariableDeclaration","scope":14135,"src":"3383:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"typeName":{"contractScope":null,"id":14106,"name":"MathError","nodeType":"UserDefinedTypeName","referencedDeclaration":6659,"src":"3383:9:21","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"value":null,"visibility":"internal"},{"constant":false,"id":14109,"name":"descaledMantissa","nodeType":"VariableDeclaration","scope":14135,"src":"3399:21:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14108,"name":"uint","nodeType":"ElementaryTypeName","src":"3399:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":14115,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":14111,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14097,"src":"3432:1:21","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}},"id":14112,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mantissa","nodeType":"MemberAccess","referencedDeclaration":14389,"src":"3432:10:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":14113,"name":"scalar","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14099,"src":"3444:6:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14110,"name":"divUInt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6734,"src":"3424:7:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (enum CarefulMath.MathError,uint256)"}},"id":14114,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3424:27:21","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"3382:69:21"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"id":14119,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":14116,"name":"err0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14107,"src":"3465:4:21","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":14117,"name":"MathError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6659,"src":"3473:9:21","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MathError_$6659_$","typeString":"type(enum CarefulMath.MathError)"}},"id":14118,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"3473:18:21","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"src":"3465:26:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":14127,"nodeType":"IfStatement","src":"3461:90:21","trueBody":{"id":14126,"nodeType":"Block","src":"3493:58:21","statements":[{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":14120,"name":"err0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14107,"src":"3515:4:21","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":14122,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3536:1:21","subdenomination":null,"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":14121,"name":"Exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14390,"src":"3521:3:21","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Exp_$14390_storage_ptr_$","typeString":"type(struct ExponentialNoError.Exp storage pointer)"}},"id":14123,"isConstant":false,"isLValue":false,"isPure":true,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"3521:18:21","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}}],"id":14124,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3514:26:21","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_struct$_Exp_$14390_memory_$","typeString":"tuple(enum CarefulMath.MathError,struct ExponentialNoError.Exp memory)"}},"functionReturnParameters":14105,"id":14125,"nodeType":"Return","src":"3507:33:21"}]}},{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":14128,"name":"MathError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6659,"src":"3569:9:21","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MathError_$6659_$","typeString":"type(enum CarefulMath.MathError)"}},"id":14129,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"3569:18:21","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":14131,"name":"descaledMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14109,"src":"3604:16:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14130,"name":"Exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14390,"src":"3589:3:21","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Exp_$14390_storage_ptr_$","typeString":"type(struct ExponentialNoError.Exp storage pointer)"}},"id":14132,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"3589:33:21","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}}],"id":14133,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3568:55:21","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_struct$_Exp_$14390_memory_$","typeString":"tuple(enum CarefulMath.MathError,struct ExponentialNoError.Exp memory)"}},"functionReturnParameters":14105,"id":14134,"nodeType":"Return","src":"3561:62:21"}]},"documentation":"@dev Divide an Exp by a scalar, returning a new Exp.","id":14136,"implemented":true,"kind":"function","modifiers":[],"name":"divScalar","nodeType":"FunctionDefinition","parameters":{"id":14100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14097,"name":"a","nodeType":"VariableDeclaration","scope":14136,"src":"3299:12:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":14096,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"3299:3:21","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"},{"constant":false,"id":14099,"name":"scalar","nodeType":"VariableDeclaration","scope":14136,"src":"3313:11:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14098,"name":"uint","nodeType":"ElementaryTypeName","src":"3313:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"3298:27:21"},"returnParameters":{"id":14105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14102,"name":"","nodeType":"VariableDeclaration","scope":14136,"src":"3349:9:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"typeName":{"contractScope":null,"id":14101,"name":"MathError","nodeType":"UserDefinedTypeName","referencedDeclaration":6659,"src":"3349:9:21","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"value":null,"visibility":"internal"},{"constant":false,"id":14104,"name":"","nodeType":"VariableDeclaration","scope":14136,"src":"3360:10:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":14103,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"3360:3:21","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"}],"src":"3348:23:21"},"scope":14371,"src":"3280:350:21","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":14174,"nodeType":"Block","src":"3815:502:21","statements":[{"assignments":[14148,14150],"declarations":[{"constant":false,"id":14148,"name":"err0","nodeType":"VariableDeclaration","scope":14174,"src":"4100:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"typeName":{"contractScope":null,"id":14147,"name":"MathError","nodeType":"UserDefinedTypeName","referencedDeclaration":6659,"src":"4100:9:21","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"value":null,"visibility":"internal"},{"constant":false,"id":14150,"name":"numerator","nodeType":"VariableDeclaration","scope":14174,"src":"4116:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14149,"name":"uint","nodeType":"ElementaryTypeName","src":"4116:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":14155,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":14152,"name":"expScale","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14376,"src":"4142:8:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":14153,"name":"scalar","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14138,"src":"4152:6:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14151,"name":"mulUInt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6705,"src":"4134:7:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (enum CarefulMath.MathError,uint256)"}},"id":14154,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4134:25:21","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"4099:60:21"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"id":14159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":14156,"name":"err0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14148,"src":"4173:4:21","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":14157,"name":"MathError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6659,"src":"4181:9:21","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MathError_$6659_$","typeString":"type(enum CarefulMath.MathError)"}},"id":14158,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"4181:18:21","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"src":"4173:26:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":14167,"nodeType":"IfStatement","src":"4169:90:21","trueBody":{"id":14166,"nodeType":"Block","src":"4201:58:21","statements":[{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":14160,"name":"err0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14148,"src":"4223:4:21","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":14162,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4244:1:21","subdenomination":null,"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":14161,"name":"Exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14390,"src":"4229:3:21","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Exp_$14390_storage_ptr_$","typeString":"type(struct ExponentialNoError.Exp storage pointer)"}},"id":14163,"isConstant":false,"isLValue":false,"isPure":true,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"4229:18:21","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}}],"id":14164,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4222:26:21","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_struct$_Exp_$14390_memory_$","typeString":"tuple(enum CarefulMath.MathError,struct ExponentialNoError.Exp memory)"}},"functionReturnParameters":14146,"id":14165,"nodeType":"Return","src":"4215:33:21"}]}},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":14169,"name":"numerator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14150,"src":"4282:9:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":14170,"name":"divisor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14140,"src":"4293:7:21","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}},"id":14171,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mantissa","nodeType":"MemberAccess","referencedDeclaration":14389,"src":"4293:16:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14168,"name":"getExp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13918,"src":"4275:6:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_enum$_MathError_$6659_$_t_struct$_Exp_$14390_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (enum CarefulMath.MathError,struct ExponentialNoError.Exp memory)"}},"id":14172,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4275:35:21","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_struct$_Exp_$14390_memory_ptr_$","typeString":"tuple(enum CarefulMath.MathError,struct ExponentialNoError.Exp memory)"}},"functionReturnParameters":14146,"id":14173,"nodeType":"Return","src":"4268:42:21"}]},"documentation":"@dev Divide a scalar by an Exp, returning a new Exp.","id":14175,"implemented":true,"kind":"function","modifiers":[],"name":"divScalarByExp","nodeType":"FunctionDefinition","parameters":{"id":14141,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14138,"name":"scalar","nodeType":"VariableDeclaration","scope":14175,"src":"3736:11:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14137,"name":"uint","nodeType":"ElementaryTypeName","src":"3736:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":14140,"name":"divisor","nodeType":"VariableDeclaration","scope":14175,"src":"3749:18:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":14139,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"3749:3:21","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"}],"src":"3735:33:21"},"returnParameters":{"id":14146,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14143,"name":"","nodeType":"VariableDeclaration","scope":14175,"src":"3792:9:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"typeName":{"contractScope":null,"id":14142,"name":"MathError","nodeType":"UserDefinedTypeName","referencedDeclaration":6659,"src":"3792:9:21","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"value":null,"visibility":"internal"},{"constant":false,"id":14145,"name":"","nodeType":"VariableDeclaration","scope":14175,"src":"3803:10:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":14144,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"3803:3:21","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"}],"src":"3791:23:21"},"scope":14371,"src":"3712:605:21","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":14212,"nodeType":"Block","src":"4528:225:21","statements":[{"assignments":[14187,14189],"declarations":[{"constant":false,"id":14187,"name":"err","nodeType":"VariableDeclaration","scope":14212,"src":"4539:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"typeName":{"contractScope":null,"id":14186,"name":"MathError","nodeType":"UserDefinedTypeName","referencedDeclaration":6659,"src":"4539:9:21","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"value":null,"visibility":"internal"},{"constant":false,"id":14189,"name":"fraction","nodeType":"VariableDeclaration","scope":14212,"src":"4554:19:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":14188,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"4554:3:21","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"}],"id":14194,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":14191,"name":"scalar","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14177,"src":"4592:6:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":14192,"name":"divisor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14179,"src":"4600:7:21","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}],"id":14190,"name":"divScalarByExp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14175,"src":"4577:14:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_struct$_Exp_$14390_memory_ptr_$returns$_t_enum$_MathError_$6659_$_t_struct$_Exp_$14390_memory_ptr_$","typeString":"function (uint256,struct ExponentialNoError.Exp memory) pure returns (enum CarefulMath.MathError,struct ExponentialNoError.Exp memory)"}},"id":14193,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4577:31:21","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_struct$_Exp_$14390_memory_ptr_$","typeString":"tuple(enum CarefulMath.MathError,struct ExponentialNoError.Exp memory)"}},"nodeType":"VariableDeclarationStatement","src":"4538:70:21"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"id":14198,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":14195,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14187,"src":"4622:3:21","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":14196,"name":"MathError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6659,"src":"4629:9:21","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MathError_$6659_$","typeString":"type(enum CarefulMath.MathError)"}},"id":14197,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"4629:18:21","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"src":"4622:25:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":14204,"nodeType":"IfStatement","src":"4618:71:21","trueBody":{"id":14203,"nodeType":"Block","src":"4649:40:21","statements":[{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":14199,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14187,"src":"4671:3:21","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},{"argumentTypes":null,"hexValue":"30","id":14200,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4676:1:21","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":14201,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4670:8:21","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_rational_0_by_1_$","typeString":"tuple(enum CarefulMath.MathError,int_const 0)"}},"functionReturnParameters":14185,"id":14202,"nodeType":"Return","src":"4663:15:21"}]}},{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":14205,"name":"MathError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6659,"src":"4707:9:21","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MathError_$6659_$","typeString":"type(enum CarefulMath.MathError)"}},"id":14206,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"4707:18:21","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":14208,"name":"fraction","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14189,"src":"4736:8:21","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}],"id":14207,"name":"truncate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14406,"src":"4727:8:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Exp_$14390_memory_ptr_$returns$_t_uint256_$","typeString":"function (struct ExponentialNoError.Exp memory) pure returns (uint256)"}},"id":14209,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4727:18:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":14210,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4706:40:21","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"functionReturnParameters":14185,"id":14211,"nodeType":"Return","src":"4699:47:21"}]},"documentation":"@dev Divide a scalar by an Exp, then truncate to return an unsigned integer.","id":14213,"implemented":true,"kind":"function","modifiers":[],"name":"divScalarByExpTruncate","nodeType":"FunctionDefinition","parameters":{"id":14180,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14177,"name":"scalar","nodeType":"VariableDeclaration","scope":14213,"src":"4455:11:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14176,"name":"uint","nodeType":"ElementaryTypeName","src":"4455:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":14179,"name":"divisor","nodeType":"VariableDeclaration","scope":14213,"src":"4468:18:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":14178,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"4468:3:21","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"}],"src":"4454:33:21"},"returnParameters":{"id":14185,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14182,"name":"","nodeType":"VariableDeclaration","scope":14213,"src":"4511:9:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"typeName":{"contractScope":null,"id":14181,"name":"MathError","nodeType":"UserDefinedTypeName","referencedDeclaration":6659,"src":"4511:9:21","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"value":null,"visibility":"internal"},{"constant":false,"id":14184,"name":"","nodeType":"VariableDeclaration","scope":14213,"src":"4522:4:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14183,"name":"uint","nodeType":"ElementaryTypeName","src":"4522:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"4510:17:21"},"scope":14371,"src":"4423:330:21","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":14291,"nodeType":"Block","src":"4935:1026:21","statements":[{"assignments":[14225,14227],"declarations":[{"constant":false,"id":14225,"name":"err0","nodeType":"VariableDeclaration","scope":14291,"src":"4947:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"typeName":{"contractScope":null,"id":14224,"name":"MathError","nodeType":"UserDefinedTypeName","referencedDeclaration":6659,"src":"4947:9:21","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"value":null,"visibility":"internal"},{"constant":false,"id":14227,"name":"doubleScaledProduct","nodeType":"VariableDeclaration","scope":14291,"src":"4963:24:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14226,"name":"uint","nodeType":"ElementaryTypeName","src":"4963:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":14234,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":14229,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14215,"src":"4999:1:21","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}},"id":14230,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mantissa","nodeType":"MemberAccess","referencedDeclaration":14389,"src":"4999:10:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":14231,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14217,"src":"5011:1:21","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}},"id":14232,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mantissa","nodeType":"MemberAccess","referencedDeclaration":14389,"src":"5011:10:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14228,"name":"mulUInt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6705,"src":"4991:7:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (enum CarefulMath.MathError,uint256)"}},"id":14233,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4991:31:21","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"4946:76:21"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"id":14238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":14235,"name":"err0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14225,"src":"5036:4:21","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":14236,"name":"MathError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6659,"src":"5044:9:21","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MathError_$6659_$","typeString":"type(enum CarefulMath.MathError)"}},"id":14237,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"5044:18:21","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"src":"5036:26:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":14246,"nodeType":"IfStatement","src":"5032:90:21","trueBody":{"id":14245,"nodeType":"Block","src":"5064:58:21","statements":[{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":14239,"name":"err0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14225,"src":"5086:4:21","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":14241,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5107:1:21","subdenomination":null,"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":14240,"name":"Exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14390,"src":"5092:3:21","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Exp_$14390_storage_ptr_$","typeString":"type(struct ExponentialNoError.Exp storage pointer)"}},"id":14242,"isConstant":false,"isLValue":false,"isPure":true,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"5092:18:21","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}}],"id":14243,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5085:26:21","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_struct$_Exp_$14390_memory_$","typeString":"tuple(enum CarefulMath.MathError,struct ExponentialNoError.Exp memory)"}},"functionReturnParameters":14223,"id":14244,"nodeType":"Return","src":"5078:33:21"}]}},{"assignments":[14248,14250],"declarations":[{"constant":false,"id":14248,"name":"err1","nodeType":"VariableDeclaration","scope":14291,"src":"5434:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"typeName":{"contractScope":null,"id":14247,"name":"MathError","nodeType":"UserDefinedTypeName","referencedDeclaration":6659,"src":"5434:9:21","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"value":null,"visibility":"internal"},{"constant":false,"id":14250,"name":"doubleScaledProductWithHalfScale","nodeType":"VariableDeclaration","scope":14291,"src":"5450:37:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14249,"name":"uint","nodeType":"ElementaryTypeName","src":"5450:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":14255,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":14252,"name":"halfExpScale","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14384,"src":"5499:12:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":14253,"name":"doubleScaledProduct","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14227,"src":"5513:19:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14251,"name":"addUInt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6798,"src":"5491:7:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (enum CarefulMath.MathError,uint256)"}},"id":14254,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5491:42:21","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"5433:100:21"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"id":14259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":14256,"name":"err1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14248,"src":"5547:4:21","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":14257,"name":"MathError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6659,"src":"5555:9:21","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MathError_$6659_$","typeString":"type(enum CarefulMath.MathError)"}},"id":14258,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"5555:18:21","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"src":"5547:26:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":14267,"nodeType":"IfStatement","src":"5543:90:21","trueBody":{"id":14266,"nodeType":"Block","src":"5575:58:21","statements":[{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":14260,"name":"err1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14248,"src":"5597:4:21","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":14262,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5618:1:21","subdenomination":null,"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":14261,"name":"Exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14390,"src":"5603:3:21","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Exp_$14390_storage_ptr_$","typeString":"type(struct ExponentialNoError.Exp storage pointer)"}},"id":14263,"isConstant":false,"isLValue":false,"isPure":true,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"5603:18:21","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}}],"id":14264,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5596:26:21","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_struct$_Exp_$14390_memory_$","typeString":"tuple(enum CarefulMath.MathError,struct ExponentialNoError.Exp memory)"}},"functionReturnParameters":14223,"id":14265,"nodeType":"Return","src":"5589:33:21"}]}},{"assignments":[14269,14271],"declarations":[{"constant":false,"id":14269,"name":"err2","nodeType":"VariableDeclaration","scope":14291,"src":"5644:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"typeName":{"contractScope":null,"id":14268,"name":"MathError","nodeType":"UserDefinedTypeName","referencedDeclaration":6659,"src":"5644:9:21","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"value":null,"visibility":"internal"},{"constant":false,"id":14271,"name":"product","nodeType":"VariableDeclaration","scope":14291,"src":"5660:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14270,"name":"uint","nodeType":"ElementaryTypeName","src":"5660:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":14276,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":14273,"name":"doubleScaledProductWithHalfScale","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14250,"src":"5684:32:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":14274,"name":"expScale","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14376,"src":"5718:8:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14272,"name":"divUInt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6734,"src":"5676:7:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (enum CarefulMath.MathError,uint256)"}},"id":14275,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5676:51:21","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_uint256_$","typeString":"tuple(enum CarefulMath.MathError,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"5643:84:21"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"id":14281,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":14278,"name":"err2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14269,"src":"5863:4:21","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":14279,"name":"MathError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6659,"src":"5871:9:21","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MathError_$6659_$","typeString":"type(enum CarefulMath.MathError)"}},"id":14280,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"5871:18:21","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"src":"5863:26:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":14277,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22539,"src":"5856:6:21","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":14282,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5856:34:21","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14283,"nodeType":"ExpressionStatement","src":"5856:34:21"},{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":14284,"name":"MathError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6659,"src":"5909:9:21","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MathError_$6659_$","typeString":"type(enum CarefulMath.MathError)"}},"id":14285,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"5909:18:21","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":14287,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14271,"src":"5944:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14286,"name":"Exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14390,"src":"5929:3:21","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Exp_$14390_storage_ptr_$","typeString":"type(struct ExponentialNoError.Exp storage pointer)"}},"id":14288,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"5929:24:21","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}}],"id":14289,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5908:46:21","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_struct$_Exp_$14390_memory_$","typeString":"tuple(enum CarefulMath.MathError,struct ExponentialNoError.Exp memory)"}},"functionReturnParameters":14223,"id":14290,"nodeType":"Return","src":"5901:53:21"}]},"documentation":"@dev Multiplies two exponentials, returning a new exponential.","id":14292,"implemented":true,"kind":"function","modifiers":[],"name":"mulExp","nodeType":"FunctionDefinition","parameters":{"id":14218,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14215,"name":"a","nodeType":"VariableDeclaration","scope":14292,"src":"4861:12:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":14214,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"4861:3:21","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"},{"constant":false,"id":14217,"name":"b","nodeType":"VariableDeclaration","scope":14292,"src":"4875:12:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":14216,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"4875:3:21","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"}],"src":"4860:28:21"},"returnParameters":{"id":14223,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14220,"name":"","nodeType":"VariableDeclaration","scope":14292,"src":"4912:9:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"typeName":{"contractScope":null,"id":14219,"name":"MathError","nodeType":"UserDefinedTypeName","referencedDeclaration":6659,"src":"4912:9:21","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"value":null,"visibility":"internal"},{"constant":false,"id":14222,"name":"","nodeType":"VariableDeclaration","scope":14292,"src":"4923:10:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":14221,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"4923:3:21","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"}],"src":"4911:23:21"},"scope":14371,"src":"4845:1116:21","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":14312,"nodeType":"Block","src":"6153:70:21","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":14305,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14294,"src":"6192:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14304,"name":"Exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14390,"src":"6177:3:21","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Exp_$14390_storage_ptr_$","typeString":"type(struct ExponentialNoError.Exp storage pointer)"}},"id":14306,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"6177:18:21","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":14308,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14296,"src":"6212:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14307,"name":"Exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14390,"src":"6197:3:21","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Exp_$14390_storage_ptr_$","typeString":"type(struct ExponentialNoError.Exp storage pointer)"}},"id":14309,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"6197:18:21","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"},{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}],"id":14303,"name":"mulExp","nodeType":"Identifier","overloadedDeclarations":[14292,14313],"referencedDeclaration":14292,"src":"6170:6:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Exp_$14390_memory_ptr_$_t_struct$_Exp_$14390_memory_ptr_$returns$_t_enum$_MathError_$6659_$_t_struct$_Exp_$14390_memory_ptr_$","typeString":"function (struct ExponentialNoError.Exp memory,struct ExponentialNoError.Exp memory) pure returns (enum CarefulMath.MathError,struct ExponentialNoError.Exp memory)"}},"id":14310,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6170:46:21","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_struct$_Exp_$14390_memory_ptr_$","typeString":"tuple(enum CarefulMath.MathError,struct ExponentialNoError.Exp memory)"}},"functionReturnParameters":14302,"id":14311,"nodeType":"Return","src":"6163:53:21"}]},"documentation":"@dev Multiplies two exponentials given their mantissas, returning a new exponential.","id":14313,"implemented":true,"kind":"function","modifiers":[],"name":"mulExp","nodeType":"FunctionDefinition","parameters":{"id":14297,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14294,"name":"a","nodeType":"VariableDeclaration","scope":14313,"src":"6091:6:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14293,"name":"uint","nodeType":"ElementaryTypeName","src":"6091:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":14296,"name":"b","nodeType":"VariableDeclaration","scope":14313,"src":"6099:6:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14295,"name":"uint","nodeType":"ElementaryTypeName","src":"6099:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"6090:16:21"},"returnParameters":{"id":14302,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14299,"name":"","nodeType":"VariableDeclaration","scope":14313,"src":"6130:9:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"typeName":{"contractScope":null,"id":14298,"name":"MathError","nodeType":"UserDefinedTypeName","referencedDeclaration":6659,"src":"6130:9:21","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"value":null,"visibility":"internal"},{"constant":false,"id":14301,"name":"","nodeType":"VariableDeclaration","scope":14313,"src":"6141:10:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":14300,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"6141:3:21","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"}],"src":"6129:23:21"},"scope":14371,"src":"6075:148:21","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":14350,"nodeType":"Block","src":"6422:173:21","statements":[{"assignments":[14327,14329],"declarations":[{"constant":false,"id":14327,"name":"err","nodeType":"VariableDeclaration","scope":14350,"src":"6433:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"typeName":{"contractScope":null,"id":14326,"name":"MathError","nodeType":"UserDefinedTypeName","referencedDeclaration":6659,"src":"6433:9:21","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"value":null,"visibility":"internal"},{"constant":false,"id":14329,"name":"ab","nodeType":"VariableDeclaration","scope":14350,"src":"6448:13:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":14328,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"6448:3:21","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"}],"id":14334,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":14331,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14315,"src":"6472:1:21","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}},{"argumentTypes":null,"id":14332,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14317,"src":"6475:1:21","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"},{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}],"id":14330,"name":"mulExp","nodeType":"Identifier","overloadedDeclarations":[14292,14313],"referencedDeclaration":14292,"src":"6465:6:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Exp_$14390_memory_ptr_$_t_struct$_Exp_$14390_memory_ptr_$returns$_t_enum$_MathError_$6659_$_t_struct$_Exp_$14390_memory_ptr_$","typeString":"function (struct ExponentialNoError.Exp memory,struct ExponentialNoError.Exp memory) pure returns (enum CarefulMath.MathError,struct ExponentialNoError.Exp memory)"}},"id":14333,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6465:12:21","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_struct$_Exp_$14390_memory_ptr_$","typeString":"tuple(enum CarefulMath.MathError,struct ExponentialNoError.Exp memory)"}},"nodeType":"VariableDeclarationStatement","src":"6432:45:21"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"id":14338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":14335,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14327,"src":"6491:3:21","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":14336,"name":"MathError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6659,"src":"6498:9:21","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MathError_$6659_$","typeString":"type(enum CarefulMath.MathError)"}},"id":14337,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"6498:18:21","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"src":"6491:25:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":14344,"nodeType":"IfStatement","src":"6487:72:21","trueBody":{"id":14343,"nodeType":"Block","src":"6518:41:21","statements":[{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":14339,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14327,"src":"6540:3:21","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},{"argumentTypes":null,"id":14340,"name":"ab","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14329,"src":"6545:2:21","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}}],"id":14341,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6539:9:21","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_struct$_Exp_$14390_memory_ptr_$","typeString":"tuple(enum CarefulMath.MathError,struct ExponentialNoError.Exp memory)"}},"functionReturnParameters":14325,"id":14342,"nodeType":"Return","src":"6532:16:21"}]}},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":14346,"name":"ab","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14329,"src":"6582:2:21","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}},{"argumentTypes":null,"id":14347,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14319,"src":"6586:1:21","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"},{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}],"id":14345,"name":"mulExp","nodeType":"Identifier","overloadedDeclarations":[14292,14313],"referencedDeclaration":14292,"src":"6575:6:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Exp_$14390_memory_ptr_$_t_struct$_Exp_$14390_memory_ptr_$returns$_t_enum$_MathError_$6659_$_t_struct$_Exp_$14390_memory_ptr_$","typeString":"function (struct ExponentialNoError.Exp memory,struct ExponentialNoError.Exp memory) pure returns (enum CarefulMath.MathError,struct ExponentialNoError.Exp memory)"}},"id":14348,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6575:13:21","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_struct$_Exp_$14390_memory_ptr_$","typeString":"tuple(enum CarefulMath.MathError,struct ExponentialNoError.Exp memory)"}},"functionReturnParameters":14325,"id":14349,"nodeType":"Return","src":"6568:20:21"}]},"documentation":"@dev Multiplies three exponentials, returning a new exponential.","id":14351,"implemented":true,"kind":"function","modifiers":[],"name":"mulExp3","nodeType":"FunctionDefinition","parameters":{"id":14320,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14315,"name":"a","nodeType":"VariableDeclaration","scope":14351,"src":"6334:12:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":14314,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"6334:3:21","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"},{"constant":false,"id":14317,"name":"b","nodeType":"VariableDeclaration","scope":14351,"src":"6348:12:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":14316,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"6348:3:21","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"},{"constant":false,"id":14319,"name":"c","nodeType":"VariableDeclaration","scope":14351,"src":"6362:12:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":14318,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"6362:3:21","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"}],"src":"6333:42:21"},"returnParameters":{"id":14325,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14322,"name":"","nodeType":"VariableDeclaration","scope":14351,"src":"6399:9:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"typeName":{"contractScope":null,"id":14321,"name":"MathError","nodeType":"UserDefinedTypeName","referencedDeclaration":6659,"src":"6399:9:21","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"value":null,"visibility":"internal"},{"constant":false,"id":14324,"name":"","nodeType":"VariableDeclaration","scope":14351,"src":"6410:10:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":14323,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"6410:3:21","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"}],"src":"6398:23:21"},"scope":14371,"src":"6317:278:21","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":14369,"nodeType":"Block","src":"6917:54:21","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":14363,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14353,"src":"6941:1:21","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}},"id":14364,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mantissa","nodeType":"MemberAccess","referencedDeclaration":14389,"src":"6941:10:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":14365,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14355,"src":"6953:1:21","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}},"id":14366,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mantissa","nodeType":"MemberAccess","referencedDeclaration":14389,"src":"6953:10:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14362,"name":"getExp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13918,"src":"6934:6:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_enum$_MathError_$6659_$_t_struct$_Exp_$14390_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (enum CarefulMath.MathError,struct ExponentialNoError.Exp memory)"}},"id":14367,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6934:30:21","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_MathError_$6659_$_t_struct$_Exp_$14390_memory_ptr_$","typeString":"tuple(enum CarefulMath.MathError,struct ExponentialNoError.Exp memory)"}},"functionReturnParameters":14361,"id":14368,"nodeType":"Return","src":"6927:37:21"}]},"documentation":"@dev Divides two exponentials, returning a new exponential.\n (a/scale) / (b/scale) = (a/scale) * (scale/b) = a/b,\n which we can scale as an Exp by calling getExp(a.mantissa, b.mantissa)","id":14370,"implemented":true,"kind":"function","modifiers":[],"name":"divExp","nodeType":"FunctionDefinition","parameters":{"id":14356,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14353,"name":"a","nodeType":"VariableDeclaration","scope":14370,"src":"6843:12:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":14352,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"6843:3:21","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"},{"constant":false,"id":14355,"name":"b","nodeType":"VariableDeclaration","scope":14370,"src":"6857:12:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":14354,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"6857:3:21","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"}],"src":"6842:28:21"},"returnParameters":{"id":14361,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14358,"name":"","nodeType":"VariableDeclaration","scope":14370,"src":"6894:9:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"},"typeName":{"contractScope":null,"id":14357,"name":"MathError","nodeType":"UserDefinedTypeName","referencedDeclaration":6659,"src":"6894:9:21","typeDescriptions":{"typeIdentifier":"t_enum$_MathError_$6659","typeString":"enum CarefulMath.MathError"}},"value":null,"visibility":"internal"},{"constant":false,"id":14360,"name":"","nodeType":"VariableDeclaration","scope":14370,"src":"6905:10:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":14359,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"6905:3:21","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"}],"src":"6893:23:21"},"scope":14371,"src":"6827:144:21","stateMutability":"pure","superFunction":null,"visibility":"internal"}],"scope":14372,"src":"513:6460:21"}],"src":"0:6974:21"},"id":21},"contracts/ExponentialNoError.sol":{"ast":{"absolutePath":"contracts/ExponentialNoError.sol","exportedSymbols":{"ExponentialNoError":[15066]},"id":15067,"nodeType":"SourceUnit","nodes":[{"id":14373,"literals":["solidity","0.5",".17"],"nodeType":"PragmaDirective","src":"0:23:22"},{"baseContracts":[],"contractDependencies":[],"contractKind":"contract","documentation":"@title Exponential module for storing fixed-precision decimals\n@author Compound\n@notice Exp is a struct which stores decimals with a fixed precision of 18 decimal places.\n Thus, if we wanted to store the 5.1, mantissa would store 5.1e18. That is:\n `Exp({mantissa: 5100000000000000000})`.","fullyImplemented":true,"id":15066,"linearizedBaseContracts":[15066],"name":"ExponentialNoError","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":14376,"name":"expScale","nodeType":"VariableDeclaration","scope":15066,"src":"384:29:22","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14374,"name":"uint","nodeType":"ElementaryTypeName","src":"384:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"argumentTypes":null,"hexValue":"31653138","id":14375,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"409:4:22","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"visibility":"internal"},{"constant":true,"id":14379,"name":"doubleScale","nodeType":"VariableDeclaration","scope":15066,"src":"419:32:22","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14377,"name":"uint","nodeType":"ElementaryTypeName","src":"419:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"argumentTypes":null,"hexValue":"31653336","id":14378,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"447:4:22","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(29 digits omitted)...0000"},"value":"1e36"},"visibility":"internal"},{"constant":true,"id":14384,"name":"halfExpScale","nodeType":"VariableDeclaration","scope":15066,"src":"457:39:22","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14380,"name":"uint","nodeType":"ElementaryTypeName","src":"457:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14383,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":14381,"name":"expScale","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14376,"src":"486:8:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"argumentTypes":null,"hexValue":"32","id":14382,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"495:1:22","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"486:10:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":true,"id":14387,"name":"mantissaOne","nodeType":"VariableDeclaration","scope":15066,"src":"502:36:22","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14385,"name":"uint","nodeType":"ElementaryTypeName","src":"502:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"argumentTypes":null,"id":14386,"name":"expScale","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14376,"src":"530:8:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"canonicalName":"ExponentialNoError.Exp","id":14390,"members":[{"constant":false,"id":14389,"name":"mantissa","nodeType":"VariableDeclaration","scope":14390,"src":"566:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14388,"name":"uint","nodeType":"ElementaryTypeName","src":"566:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"name":"Exp","nodeType":"StructDefinition","scope":15066,"src":"545:41:22","visibility":"public"},{"canonicalName":"ExponentialNoError.Double","id":14393,"members":[{"constant":false,"id":14392,"name":"mantissa","nodeType":"VariableDeclaration","scope":14393,"src":"616:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14391,"name":"uint","nodeType":"ElementaryTypeName","src":"616:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"name":"Double","nodeType":"StructDefinition","scope":15066,"src":"592:44:22","visibility":"public"},{"body":{"id":14405,"nodeType":"Block","src":"851:147:22","statements":[{"expression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":14400,"name":"exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14395,"src":"968:3:22","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}},"id":14401,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mantissa","nodeType":"MemberAccess","referencedDeclaration":14389,"src":"968:12:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"argumentTypes":null,"id":14402,"name":"expScale","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14376,"src":"983:8:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"968:23:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":14399,"id":14404,"nodeType":"Return","src":"961:30:22"}]},"documentation":"@dev Truncates the given exp to a whole number value.\n For example, truncate(Exp{mantissa: 15 * expScale}) = 15","id":14406,"implemented":true,"kind":"function","modifiers":[],"name":"truncate","nodeType":"FunctionDefinition","parameters":{"id":14396,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14395,"name":"exp","nodeType":"VariableDeclaration","scope":14406,"src":"806:14:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":14394,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"806:3:22","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"}],"src":"805:16:22"},"returnParameters":{"id":14399,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14398,"name":"","nodeType":"VariableDeclaration","scope":14406,"src":"845:4:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14397,"name":"uint","nodeType":"ElementaryTypeName","src":"845:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"844:6:22"},"scope":15066,"src":"788:210:22","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":14426,"nodeType":"Block","src":"1190:87:22","statements":[{"assignments":[14416],"declarations":[{"constant":false,"id":14416,"name":"product","nodeType":"VariableDeclaration","scope":14426,"src":"1200:18:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":14415,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"1200:3:22","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"}],"id":14421,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":14418,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14408,"src":"1226:1:22","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}},{"argumentTypes":null,"id":14419,"name":"scalar","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14410,"src":"1229:6:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14417,"name":"mul_","nodeType":"Identifier","overloadedDeclarations":[14739,14757,14775,14796,14814,14832,14848,14888],"referencedDeclaration":14757,"src":"1221:4:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Exp_$14390_memory_ptr_$_t_uint256_$returns$_t_struct$_Exp_$14390_memory_ptr_$","typeString":"function (struct ExponentialNoError.Exp memory,uint256) pure returns (struct ExponentialNoError.Exp memory)"}},"id":14420,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1221:15:22","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}},"nodeType":"VariableDeclarationStatement","src":"1200:36:22"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":14423,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14416,"src":"1262:7:22","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}],"id":14422,"name":"truncate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14406,"src":"1253:8:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Exp_$14390_memory_ptr_$returns$_t_uint256_$","typeString":"function (struct ExponentialNoError.Exp memory) pure returns (uint256)"}},"id":14424,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1253:17:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":14414,"id":14425,"nodeType":"Return","src":"1246:24:22"}]},"documentation":"@dev Multiply an Exp by a scalar, then truncate to return an unsigned integer.","id":14427,"implemented":true,"kind":"function","modifiers":[],"name":"mul_ScalarTruncate","nodeType":"FunctionDefinition","parameters":{"id":14411,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14408,"name":"a","nodeType":"VariableDeclaration","scope":14427,"src":"1134:12:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":14407,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"1134:3:22","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"},{"constant":false,"id":14410,"name":"scalar","nodeType":"VariableDeclaration","scope":14427,"src":"1148:11:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14409,"name":"uint","nodeType":"ElementaryTypeName","src":"1148:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1133:27:22"},"returnParameters":{"id":14414,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14413,"name":"","nodeType":"VariableDeclaration","scope":14427,"src":"1184:4:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14412,"name":"uint","nodeType":"ElementaryTypeName","src":"1184:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1183:6:22"},"scope":15066,"src":"1106:171:22","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":14452,"nodeType":"Block","src":"1521:101:22","statements":[{"assignments":[14439],"declarations":[{"constant":false,"id":14439,"name":"product","nodeType":"VariableDeclaration","scope":14452,"src":"1531:18:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":14438,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"1531:3:22","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"}],"id":14444,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":14441,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14429,"src":"1557:1:22","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}},{"argumentTypes":null,"id":14442,"name":"scalar","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14431,"src":"1560:6:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14440,"name":"mul_","nodeType":"Identifier","overloadedDeclarations":[14739,14757,14775,14796,14814,14832,14848,14888],"referencedDeclaration":14757,"src":"1552:4:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Exp_$14390_memory_ptr_$_t_uint256_$returns$_t_struct$_Exp_$14390_memory_ptr_$","typeString":"function (struct ExponentialNoError.Exp memory,uint256) pure returns (struct ExponentialNoError.Exp memory)"}},"id":14443,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1552:15:22","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}},"nodeType":"VariableDeclarationStatement","src":"1531:36:22"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":14447,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14439,"src":"1598:7:22","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}],"id":14446,"name":"truncate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14406,"src":"1589:8:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Exp_$14390_memory_ptr_$returns$_t_uint256_$","typeString":"function (struct ExponentialNoError.Exp memory) pure returns (uint256)"}},"id":14448,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1589:17:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":14449,"name":"addend","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14433,"src":"1608:6:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14445,"name":"add_","nodeType":"Identifier","overloadedDeclarations":[14579,14598,14614,14641],"referencedDeclaration":14614,"src":"1584:4:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":14450,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1584:31:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":14437,"id":14451,"nodeType":"Return","src":"1577:38:22"}]},"documentation":"@dev Multiply an Exp by a scalar, truncate, then add an to an unsigned integer, returning an unsigned integer.","id":14453,"implemented":true,"kind":"function","modifiers":[],"name":"mul_ScalarTruncateAddUInt","nodeType":"FunctionDefinition","parameters":{"id":14434,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14429,"name":"a","nodeType":"VariableDeclaration","scope":14453,"src":"1452:12:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":14428,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"1452:3:22","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"},{"constant":false,"id":14431,"name":"scalar","nodeType":"VariableDeclaration","scope":14453,"src":"1466:11:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14430,"name":"uint","nodeType":"ElementaryTypeName","src":"1466:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":14433,"name":"addend","nodeType":"VariableDeclaration","scope":14453,"src":"1479:11:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14432,"name":"uint","nodeType":"ElementaryTypeName","src":"1479:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1451:40:22"},"returnParameters":{"id":14437,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14436,"name":"","nodeType":"VariableDeclaration","scope":14453,"src":"1515:4:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14435,"name":"uint","nodeType":"ElementaryTypeName","src":"1515:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1514:6:22"},"scope":15066,"src":"1417:205:22","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":14468,"nodeType":"Block","src":"1786:54:22","statements":[{"expression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14466,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":14462,"name":"left","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14455,"src":"1803:4:22","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}},"id":14463,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mantissa","nodeType":"MemberAccess","referencedDeclaration":14389,"src":"1803:13:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":14464,"name":"right","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14457,"src":"1819:5:22","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}},"id":14465,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mantissa","nodeType":"MemberAccess","referencedDeclaration":14389,"src":"1819:14:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1803:30:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":14461,"id":14467,"nodeType":"Return","src":"1796:37:22"}]},"documentation":"@dev Checks if first Exp is less than second Exp.","id":14469,"implemented":true,"kind":"function","modifiers":[],"name":"lessThanExp","nodeType":"FunctionDefinition","parameters":{"id":14458,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14455,"name":"left","nodeType":"VariableDeclaration","scope":14469,"src":"1722:15:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":14454,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"1722:3:22","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"},{"constant":false,"id":14457,"name":"right","nodeType":"VariableDeclaration","scope":14469,"src":"1739:16:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":14456,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"1739:3:22","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"}],"src":"1721:35:22"},"returnParameters":{"id":14461,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14460,"name":"","nodeType":"VariableDeclaration","scope":14469,"src":"1780:4:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14459,"name":"bool","nodeType":"ElementaryTypeName","src":"1780:4:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"1779:6:22"},"scope":15066,"src":"1701:139:22","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":14484,"nodeType":"Block","src":"1999:55:22","statements":[{"expression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":14478,"name":"left","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14471,"src":"2016:4:22","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}},"id":14479,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mantissa","nodeType":"MemberAccess","referencedDeclaration":14389,"src":"2016:13:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":14480,"name":"right","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14473,"src":"2033:5:22","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}},"id":14481,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mantissa","nodeType":"MemberAccess","referencedDeclaration":14389,"src":"2033:14:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2016:31:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":14477,"id":14483,"nodeType":"Return","src":"2009:38:22"}]},"documentation":"@dev Checks if left Exp <= right Exp.","id":14485,"implemented":true,"kind":"function","modifiers":[],"name":"lessThanOrEqualExp","nodeType":"FunctionDefinition","parameters":{"id":14474,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14471,"name":"left","nodeType":"VariableDeclaration","scope":14485,"src":"1935:15:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":14470,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"1935:3:22","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"},{"constant":false,"id":14473,"name":"right","nodeType":"VariableDeclaration","scope":14485,"src":"1952:16:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":14472,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"1952:3:22","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"}],"src":"1934:35:22"},"returnParameters":{"id":14477,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14476,"name":"","nodeType":"VariableDeclaration","scope":14485,"src":"1993:4:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14475,"name":"bool","nodeType":"ElementaryTypeName","src":"1993:4:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"1992:6:22"},"scope":15066,"src":"1907:147:22","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":14500,"nodeType":"Block","src":"2208:54:22","statements":[{"expression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":14494,"name":"left","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14487,"src":"2225:4:22","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}},"id":14495,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mantissa","nodeType":"MemberAccess","referencedDeclaration":14389,"src":"2225:13:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":14496,"name":"right","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14489,"src":"2241:5:22","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}},"id":14497,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mantissa","nodeType":"MemberAccess","referencedDeclaration":14389,"src":"2241:14:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2225:30:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":14493,"id":14499,"nodeType":"Return","src":"2218:37:22"}]},"documentation":"@dev Checks if left Exp > right Exp.","id":14501,"implemented":true,"kind":"function","modifiers":[],"name":"greaterThanExp","nodeType":"FunctionDefinition","parameters":{"id":14490,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14487,"name":"left","nodeType":"VariableDeclaration","scope":14501,"src":"2144:15:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":14486,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"2144:3:22","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"},{"constant":false,"id":14489,"name":"right","nodeType":"VariableDeclaration","scope":14501,"src":"2161:16:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":14488,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"2161:3:22","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"}],"src":"2143:35:22"},"returnParameters":{"id":14493,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14492,"name":"","nodeType":"VariableDeclaration","scope":14501,"src":"2202:4:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14491,"name":"bool","nodeType":"ElementaryTypeName","src":"2202:4:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"2201:6:22"},"scope":15066,"src":"2120:142:22","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":14513,"nodeType":"Block","src":"2398:43:22","statements":[{"expression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14511,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":14508,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14503,"src":"2415:5:22","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}},"id":14509,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mantissa","nodeType":"MemberAccess","referencedDeclaration":14389,"src":"2415:14:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":14510,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2433:1:22","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2415:19:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":14507,"id":14512,"nodeType":"Return","src":"2408:26:22"}]},"documentation":"@dev returns true if Exp is exactly zero","id":14514,"implemented":true,"kind":"function","modifiers":[],"name":"isZeroExp","nodeType":"FunctionDefinition","parameters":{"id":14504,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14503,"name":"value","nodeType":"VariableDeclaration","scope":14514,"src":"2351:16:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":14502,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"2351:3:22","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"}],"src":"2350:18:22"},"returnParameters":{"id":14507,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14506,"name":"","nodeType":"VariableDeclaration","scope":14514,"src":"2392:4:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14505,"name":"bool","nodeType":"ElementaryTypeName","src":"2392:4:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"2391:6:22"},"scope":15066,"src":"2332:109:22","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":14536,"nodeType":"Block","src":"2532:77:22","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":14524,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14516,"src":"2550:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_26959946667150639794667015087019630673637144422540572481103610249216_by_1","typeString":"int_const 2695...(60 digits omitted)...9216"},"id":14527,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"hexValue":"32","id":14525,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2554:1:22","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"argumentTypes":null,"hexValue":"323234","id":14526,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2557:3:22","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"},"value":"224"},"src":"2554:6:22","typeDescriptions":{"typeIdentifier":"t_rational_26959946667150639794667015087019630673637144422540572481103610249216_by_1","typeString":"int_const 2695...(60 digits omitted)...9216"}},"src":"2550:10:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"id":14529,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14518,"src":"2562:12:22","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":14523,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"2542:7:22","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":14530,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2542:33:22","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14531,"nodeType":"ExpressionStatement","src":"2542:33:22"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":14533,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14516,"src":"2600:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14532,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2592:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":"uint224"},"id":14534,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2592:10:22","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"functionReturnParameters":14522,"id":14535,"nodeType":"Return","src":"2585:17:22"}]},"documentation":null,"id":14537,"implemented":true,"kind":"function","modifiers":[],"name":"safe224","nodeType":"FunctionDefinition","parameters":{"id":14519,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14516,"name":"n","nodeType":"VariableDeclaration","scope":14537,"src":"2464:6:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14515,"name":"uint","nodeType":"ElementaryTypeName","src":"2464:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":14518,"name":"errorMessage","nodeType":"VariableDeclaration","scope":14537,"src":"2472:26:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":14517,"name":"string","nodeType":"ElementaryTypeName","src":"2472:6:22","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":null,"visibility":"internal"}],"src":"2463:36:22"},"returnParameters":{"id":14522,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14521,"name":"","nodeType":"VariableDeclaration","scope":14537,"src":"2523:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":14520,"name":"uint224","nodeType":"ElementaryTypeName","src":"2523:7:22","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"value":null,"visibility":"internal"}],"src":"2522:9:22"},"scope":15066,"src":"2447:162:22","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":14559,"nodeType":"Block","src":"2698:75:22","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":14547,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14539,"src":"2716:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"},"id":14550,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"hexValue":"32","id":14548,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2720:1:22","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"argumentTypes":null,"hexValue":"3332","id":14549,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2723:2:22","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"2720:5:22","typeDescriptions":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"}},"src":"2716:9:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"id":14552,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14541,"src":"2727:12:22","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":14546,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"2708:7:22","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":14553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2708:32:22","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14554,"nodeType":"ExpressionStatement","src":"2708:32:22"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":14556,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14539,"src":"2764:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14555,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2757:6:22","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":"uint32"},"id":14557,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2757:9:22","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"functionReturnParameters":14545,"id":14558,"nodeType":"Return","src":"2750:16:22"}]},"documentation":null,"id":14560,"implemented":true,"kind":"function","modifiers":[],"name":"safe32","nodeType":"FunctionDefinition","parameters":{"id":14542,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14539,"name":"n","nodeType":"VariableDeclaration","scope":14560,"src":"2631:6:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14538,"name":"uint","nodeType":"ElementaryTypeName","src":"2631:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":14541,"name":"errorMessage","nodeType":"VariableDeclaration","scope":14560,"src":"2639:26:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":14540,"name":"string","nodeType":"ElementaryTypeName","src":"2639:6:22","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":null,"visibility":"internal"}],"src":"2630:36:22"},"returnParameters":{"id":14545,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14544,"name":"","nodeType":"VariableDeclaration","scope":14560,"src":"2690:6:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":14543,"name":"uint32","nodeType":"ElementaryTypeName","src":"2690:6:22","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"value":null,"visibility":"internal"}],"src":"2689:8:22"},"scope":15066,"src":"2615:158:22","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":14578,"nodeType":"Block","src":"2856:69:22","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":14571,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14562,"src":"2893:1:22","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}},"id":14572,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mantissa","nodeType":"MemberAccess","referencedDeclaration":14389,"src":"2893:10:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":14573,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14564,"src":"2905:1:22","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}},"id":14574,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mantissa","nodeType":"MemberAccess","referencedDeclaration":14389,"src":"2905:10:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14570,"name":"add_","nodeType":"Identifier","overloadedDeclarations":[14579,14598,14614,14641],"referencedDeclaration":14614,"src":"2888:4:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":14575,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2888:28:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14569,"name":"Exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14390,"src":"2873:3:22","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Exp_$14390_storage_ptr_$","typeString":"type(struct ExponentialNoError.Exp storage pointer)"}},"id":14576,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"2873:45:22","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}},"functionReturnParameters":14568,"id":14577,"nodeType":"Return","src":"2866:52:22"}]},"documentation":null,"id":14579,"implemented":true,"kind":"function","modifiers":[],"name":"add_","nodeType":"FunctionDefinition","parameters":{"id":14565,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14562,"name":"a","nodeType":"VariableDeclaration","scope":14579,"src":"2793:12:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":14561,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"2793:3:22","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"},{"constant":false,"id":14564,"name":"b","nodeType":"VariableDeclaration","scope":14579,"src":"2807:12:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":14563,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"2807:3:22","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"}],"src":"2792:28:22"},"returnParameters":{"id":14568,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14567,"name":"","nodeType":"VariableDeclaration","scope":14579,"src":"2844:10:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":14566,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"2844:3:22","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"}],"src":"2843:12:22"},"scope":15066,"src":"2779:146:22","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":14597,"nodeType":"Block","src":"3017:72:22","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":14590,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14581,"src":"3057:1:22","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double memory"}},"id":14591,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mantissa","nodeType":"MemberAccess","referencedDeclaration":14392,"src":"3057:10:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":14592,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14583,"src":"3069:1:22","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double memory"}},"id":14593,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mantissa","nodeType":"MemberAccess","referencedDeclaration":14392,"src":"3069:10:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14589,"name":"add_","nodeType":"Identifier","overloadedDeclarations":[14579,14598,14614,14641],"referencedDeclaration":14614,"src":"3052:4:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":14594,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3052:28:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14588,"name":"Double","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14393,"src":"3034:6:22","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Double_$14393_storage_ptr_$","typeString":"type(struct ExponentialNoError.Double storage pointer)"}},"id":14595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"3034:48:22","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory","typeString":"struct ExponentialNoError.Double memory"}},"functionReturnParameters":14587,"id":14596,"nodeType":"Return","src":"3027:55:22"}]},"documentation":null,"id":14598,"implemented":true,"kind":"function","modifiers":[],"name":"add_","nodeType":"FunctionDefinition","parameters":{"id":14584,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14581,"name":"a","nodeType":"VariableDeclaration","scope":14598,"src":"2945:15:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double"},"typeName":{"contractScope":null,"id":14580,"name":"Double","nodeType":"UserDefinedTypeName","referencedDeclaration":14393,"src":"2945:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_storage_ptr","typeString":"struct ExponentialNoError.Double"}},"value":null,"visibility":"internal"},{"constant":false,"id":14583,"name":"b","nodeType":"VariableDeclaration","scope":14598,"src":"2962:15:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double"},"typeName":{"contractScope":null,"id":14582,"name":"Double","nodeType":"UserDefinedTypeName","referencedDeclaration":14393,"src":"2962:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_storage_ptr","typeString":"struct ExponentialNoError.Double"}},"value":null,"visibility":"internal"}],"src":"2944:34:22"},"returnParameters":{"id":14587,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14586,"name":"","nodeType":"VariableDeclaration","scope":14598,"src":"3002:13:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double"},"typeName":{"contractScope":null,"id":14585,"name":"Double","nodeType":"UserDefinedTypeName","referencedDeclaration":14393,"src":"3002:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_storage_ptr","typeString":"struct ExponentialNoError.Double"}},"value":null,"visibility":"internal"}],"src":"3001:15:22"},"scope":15066,"src":"2931:158:22","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":14613,"nodeType":"Block","src":"3154:55:22","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":14608,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14600,"src":"3176:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":14609,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14602,"src":"3179:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"6164646974696f6e206f766572666c6f77","id":14610,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3182:19:22","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_8c0d96e929759368d857f737222dcb6a5217a09dbc29c3e61addc531fdea00f5","typeString":"literal_string \"addition overflow\""},"value":"addition overflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_8c0d96e929759368d857f737222dcb6a5217a09dbc29c3e61addc531fdea00f5","typeString":"literal_string \"addition overflow\""}],"id":14607,"name":"add_","nodeType":"Identifier","overloadedDeclarations":[14579,14598,14614,14641],"referencedDeclaration":14641,"src":"3171:4:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$","typeString":"function (uint256,uint256,string memory) pure returns (uint256)"}},"id":14611,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3171:31:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":14606,"id":14612,"nodeType":"Return","src":"3164:38:22"}]},"documentation":null,"id":14614,"implemented":true,"kind":"function","modifiers":[],"name":"add_","nodeType":"FunctionDefinition","parameters":{"id":14603,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14600,"name":"a","nodeType":"VariableDeclaration","scope":14614,"src":"3109:6:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14599,"name":"uint","nodeType":"ElementaryTypeName","src":"3109:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":14602,"name":"b","nodeType":"VariableDeclaration","scope":14614,"src":"3117:6:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14601,"name":"uint","nodeType":"ElementaryTypeName","src":"3117:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"3108:16:22"},"returnParameters":{"id":14606,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14605,"name":"","nodeType":"VariableDeclaration","scope":14614,"src":"3148:4:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14604,"name":"uint","nodeType":"ElementaryTypeName","src":"3148:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"3147:6:22"},"scope":15066,"src":"3095:114:22","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":14640,"nodeType":"Block","src":"3302:88:22","statements":[{"assignments":[14626],"declarations":[{"constant":false,"id":14626,"name":"c","nodeType":"VariableDeclaration","scope":14640,"src":"3312:6:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14625,"name":"uint","nodeType":"ElementaryTypeName","src":"3312:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":14630,"initialValue":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14629,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":14627,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14616,"src":"3321:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"argumentTypes":null,"id":14628,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14618,"src":"3325:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3321:5:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3312:14:22"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14634,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":14632,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14626,"src":"3344:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"argumentTypes":null,"id":14633,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14616,"src":"3349:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3344:6:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"id":14635,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14620,"src":"3352:12:22","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":14631,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"3336:7:22","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":14636,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3336:29:22","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14637,"nodeType":"ExpressionStatement","src":"3336:29:22"},{"expression":{"argumentTypes":null,"id":14638,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14626,"src":"3382:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":14624,"id":14639,"nodeType":"Return","src":"3375:8:22"}]},"documentation":null,"id":14641,"implemented":true,"kind":"function","modifiers":[],"name":"add_","nodeType":"FunctionDefinition","parameters":{"id":14621,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14616,"name":"a","nodeType":"VariableDeclaration","scope":14641,"src":"3229:6:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14615,"name":"uint","nodeType":"ElementaryTypeName","src":"3229:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":14618,"name":"b","nodeType":"VariableDeclaration","scope":14641,"src":"3237:6:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14617,"name":"uint","nodeType":"ElementaryTypeName","src":"3237:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":14620,"name":"errorMessage","nodeType":"VariableDeclaration","scope":14641,"src":"3245:26:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":14619,"name":"string","nodeType":"ElementaryTypeName","src":"3245:6:22","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":null,"visibility":"internal"}],"src":"3228:44:22"},"returnParameters":{"id":14624,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14623,"name":"","nodeType":"VariableDeclaration","scope":14641,"src":"3296:4:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14622,"name":"uint","nodeType":"ElementaryTypeName","src":"3296:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"3295:6:22"},"scope":15066,"src":"3215:175:22","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":14659,"nodeType":"Block","src":"3473:69:22","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":14652,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14643,"src":"3510:1:22","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}},"id":14653,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mantissa","nodeType":"MemberAccess","referencedDeclaration":14389,"src":"3510:10:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":14654,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14645,"src":"3522:1:22","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}},"id":14655,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mantissa","nodeType":"MemberAccess","referencedDeclaration":14389,"src":"3522:10:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14651,"name":"sub_","nodeType":"Identifier","overloadedDeclarations":[14660,14679,14695,14718],"referencedDeclaration":14695,"src":"3505:4:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":14656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3505:28:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14650,"name":"Exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14390,"src":"3490:3:22","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Exp_$14390_storage_ptr_$","typeString":"type(struct ExponentialNoError.Exp storage pointer)"}},"id":14657,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"3490:45:22","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}},"functionReturnParameters":14649,"id":14658,"nodeType":"Return","src":"3483:52:22"}]},"documentation":null,"id":14660,"implemented":true,"kind":"function","modifiers":[],"name":"sub_","nodeType":"FunctionDefinition","parameters":{"id":14646,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14643,"name":"a","nodeType":"VariableDeclaration","scope":14660,"src":"3410:12:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":14642,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"3410:3:22","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"},{"constant":false,"id":14645,"name":"b","nodeType":"VariableDeclaration","scope":14660,"src":"3424:12:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":14644,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"3424:3:22","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"}],"src":"3409:28:22"},"returnParameters":{"id":14649,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14648,"name":"","nodeType":"VariableDeclaration","scope":14660,"src":"3461:10:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":14647,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"3461:3:22","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"}],"src":"3460:12:22"},"scope":15066,"src":"3396:146:22","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":14678,"nodeType":"Block","src":"3634:72:22","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":14671,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14662,"src":"3674:1:22","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double memory"}},"id":14672,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mantissa","nodeType":"MemberAccess","referencedDeclaration":14392,"src":"3674:10:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":14673,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14664,"src":"3686:1:22","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double memory"}},"id":14674,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mantissa","nodeType":"MemberAccess","referencedDeclaration":14392,"src":"3686:10:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14670,"name":"sub_","nodeType":"Identifier","overloadedDeclarations":[14660,14679,14695,14718],"referencedDeclaration":14695,"src":"3669:4:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":14675,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3669:28:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14669,"name":"Double","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14393,"src":"3651:6:22","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Double_$14393_storage_ptr_$","typeString":"type(struct ExponentialNoError.Double storage pointer)"}},"id":14676,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"3651:48:22","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory","typeString":"struct ExponentialNoError.Double memory"}},"functionReturnParameters":14668,"id":14677,"nodeType":"Return","src":"3644:55:22"}]},"documentation":null,"id":14679,"implemented":true,"kind":"function","modifiers":[],"name":"sub_","nodeType":"FunctionDefinition","parameters":{"id":14665,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14662,"name":"a","nodeType":"VariableDeclaration","scope":14679,"src":"3562:15:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double"},"typeName":{"contractScope":null,"id":14661,"name":"Double","nodeType":"UserDefinedTypeName","referencedDeclaration":14393,"src":"3562:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_storage_ptr","typeString":"struct ExponentialNoError.Double"}},"value":null,"visibility":"internal"},{"constant":false,"id":14664,"name":"b","nodeType":"VariableDeclaration","scope":14679,"src":"3579:15:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double"},"typeName":{"contractScope":null,"id":14663,"name":"Double","nodeType":"UserDefinedTypeName","referencedDeclaration":14393,"src":"3579:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_storage_ptr","typeString":"struct ExponentialNoError.Double"}},"value":null,"visibility":"internal"}],"src":"3561:34:22"},"returnParameters":{"id":14668,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14667,"name":"","nodeType":"VariableDeclaration","scope":14679,"src":"3619:13:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double"},"typeName":{"contractScope":null,"id":14666,"name":"Double","nodeType":"UserDefinedTypeName","referencedDeclaration":14393,"src":"3619:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_storage_ptr","typeString":"struct ExponentialNoError.Double"}},"value":null,"visibility":"internal"}],"src":"3618:15:22"},"scope":15066,"src":"3548:158:22","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":14694,"nodeType":"Block","src":"3771:59:22","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":14689,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14681,"src":"3793:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":14690,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14683,"src":"3796:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"7375627472616374696f6e20756e646572666c6f77","id":14691,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3799:23:22","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_f22f6b3017af2aff30fb71d5e8f8adc6cd3022431e6fc88c01d6d8b2adb30f31","typeString":"literal_string \"subtraction underflow\""},"value":"subtraction underflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_f22f6b3017af2aff30fb71d5e8f8adc6cd3022431e6fc88c01d6d8b2adb30f31","typeString":"literal_string \"subtraction underflow\""}],"id":14688,"name":"sub_","nodeType":"Identifier","overloadedDeclarations":[14660,14679,14695,14718],"referencedDeclaration":14718,"src":"3788:4:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$","typeString":"function (uint256,uint256,string memory) pure returns (uint256)"}},"id":14692,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3788:35:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":14687,"id":14693,"nodeType":"Return","src":"3781:42:22"}]},"documentation":null,"id":14695,"implemented":true,"kind":"function","modifiers":[],"name":"sub_","nodeType":"FunctionDefinition","parameters":{"id":14684,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14681,"name":"a","nodeType":"VariableDeclaration","scope":14695,"src":"3726:6:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14680,"name":"uint","nodeType":"ElementaryTypeName","src":"3726:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":14683,"name":"b","nodeType":"VariableDeclaration","scope":14695,"src":"3734:6:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14682,"name":"uint","nodeType":"ElementaryTypeName","src":"3734:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"3725:16:22"},"returnParameters":{"id":14687,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14686,"name":"","nodeType":"VariableDeclaration","scope":14695,"src":"3765:4:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14685,"name":"uint","nodeType":"ElementaryTypeName","src":"3765:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"3764:6:22"},"scope":15066,"src":"3712:118:22","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":14717,"nodeType":"Block","src":"3923:68:22","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14709,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":14707,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14699,"src":"3941:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"argumentTypes":null,"id":14708,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14697,"src":"3946:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3941:6:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"id":14710,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14701,"src":"3949:12:22","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":14706,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"3933:7:22","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":14711,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3933:29:22","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14712,"nodeType":"ExpressionStatement","src":"3933:29:22"},{"expression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":14713,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14697,"src":"3979:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"id":14714,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14699,"src":"3983:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3979:5:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":14705,"id":14716,"nodeType":"Return","src":"3972:12:22"}]},"documentation":null,"id":14718,"implemented":true,"kind":"function","modifiers":[],"name":"sub_","nodeType":"FunctionDefinition","parameters":{"id":14702,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14697,"name":"a","nodeType":"VariableDeclaration","scope":14718,"src":"3850:6:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14696,"name":"uint","nodeType":"ElementaryTypeName","src":"3850:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":14699,"name":"b","nodeType":"VariableDeclaration","scope":14718,"src":"3858:6:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14698,"name":"uint","nodeType":"ElementaryTypeName","src":"3858:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":14701,"name":"errorMessage","nodeType":"VariableDeclaration","scope":14718,"src":"3866:26:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":14700,"name":"string","nodeType":"ElementaryTypeName","src":"3866:6:22","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":null,"visibility":"internal"}],"src":"3849:44:22"},"returnParameters":{"id":14705,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14704,"name":"","nodeType":"VariableDeclaration","scope":14718,"src":"3917:4:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14703,"name":"uint","nodeType":"ElementaryTypeName","src":"3917:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"3916:6:22"},"scope":15066,"src":"3836:155:22","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":14738,"nodeType":"Block","src":"4074:80:22","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":14729,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14720,"src":"4111:1:22","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}},"id":14730,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mantissa","nodeType":"MemberAccess","referencedDeclaration":14389,"src":"4111:10:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":14731,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14722,"src":"4123:1:22","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}},"id":14732,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mantissa","nodeType":"MemberAccess","referencedDeclaration":14389,"src":"4123:10:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14728,"name":"mul_","nodeType":"Identifier","overloadedDeclarations":[14739,14757,14775,14796,14814,14832,14848,14888],"referencedDeclaration":14848,"src":"4106:4:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":14733,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4106:28:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"argumentTypes":null,"id":14734,"name":"expScale","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14376,"src":"4137:8:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4106:39:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14727,"name":"Exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14390,"src":"4091:3:22","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Exp_$14390_storage_ptr_$","typeString":"type(struct ExponentialNoError.Exp storage pointer)"}},"id":14736,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"4091:56:22","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}},"functionReturnParameters":14726,"id":14737,"nodeType":"Return","src":"4084:63:22"}]},"documentation":null,"id":14739,"implemented":true,"kind":"function","modifiers":[],"name":"mul_","nodeType":"FunctionDefinition","parameters":{"id":14723,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14720,"name":"a","nodeType":"VariableDeclaration","scope":14739,"src":"4011:12:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":14719,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"4011:3:22","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"},{"constant":false,"id":14722,"name":"b","nodeType":"VariableDeclaration","scope":14739,"src":"4025:12:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":14721,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"4025:3:22","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"}],"src":"4010:28:22"},"returnParameters":{"id":14726,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14725,"name":"","nodeType":"VariableDeclaration","scope":14739,"src":"4062:10:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":14724,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"4062:3:22","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"}],"src":"4061:12:22"},"scope":15066,"src":"3997:157:22","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":14756,"nodeType":"Block","src":"4231:60:22","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":14750,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14741,"src":"4268:1:22","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}},"id":14751,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mantissa","nodeType":"MemberAccess","referencedDeclaration":14389,"src":"4268:10:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":14752,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14743,"src":"4280:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14749,"name":"mul_","nodeType":"Identifier","overloadedDeclarations":[14739,14757,14775,14796,14814,14832,14848,14888],"referencedDeclaration":14848,"src":"4263:4:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":14753,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4263:19:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14748,"name":"Exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14390,"src":"4248:3:22","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Exp_$14390_storage_ptr_$","typeString":"type(struct ExponentialNoError.Exp storage pointer)"}},"id":14754,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"4248:36:22","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}},"functionReturnParameters":14747,"id":14755,"nodeType":"Return","src":"4241:43:22"}]},"documentation":null,"id":14757,"implemented":true,"kind":"function","modifiers":[],"name":"mul_","nodeType":"FunctionDefinition","parameters":{"id":14744,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14741,"name":"a","nodeType":"VariableDeclaration","scope":14757,"src":"4174:12:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":14740,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"4174:3:22","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"},{"constant":false,"id":14743,"name":"b","nodeType":"VariableDeclaration","scope":14757,"src":"4188:6:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14742,"name":"uint","nodeType":"ElementaryTypeName","src":"4188:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"4173:22:22"},"returnParameters":{"id":14747,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14746,"name":"","nodeType":"VariableDeclaration","scope":14757,"src":"4219:10:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":14745,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"4219:3:22","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"}],"src":"4218:12:22"},"scope":15066,"src":"4160:131:22","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":14774,"nodeType":"Block","src":"4362:54:22","statements":[{"expression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14772,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":14767,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14759,"src":"4384:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":14768,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14761,"src":"4387:1:22","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}},"id":14769,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mantissa","nodeType":"MemberAccess","referencedDeclaration":14389,"src":"4387:10:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14766,"name":"mul_","nodeType":"Identifier","overloadedDeclarations":[14739,14757,14775,14796,14814,14832,14848,14888],"referencedDeclaration":14848,"src":"4379:4:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":14770,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4379:19:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"argumentTypes":null,"id":14771,"name":"expScale","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14376,"src":"4401:8:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4379:30:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":14765,"id":14773,"nodeType":"Return","src":"4372:37:22"}]},"documentation":null,"id":14775,"implemented":true,"kind":"function","modifiers":[],"name":"mul_","nodeType":"FunctionDefinition","parameters":{"id":14762,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14759,"name":"a","nodeType":"VariableDeclaration","scope":14775,"src":"4311:6:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14758,"name":"uint","nodeType":"ElementaryTypeName","src":"4311:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":14761,"name":"b","nodeType":"VariableDeclaration","scope":14775,"src":"4319:12:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":14760,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"4319:3:22","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"}],"src":"4310:22:22"},"returnParameters":{"id":14765,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14764,"name":"","nodeType":"VariableDeclaration","scope":14775,"src":"4356:4:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14763,"name":"uint","nodeType":"ElementaryTypeName","src":"4356:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"4355:6:22"},"scope":15066,"src":"4297:119:22","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":14795,"nodeType":"Block","src":"4508:86:22","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":14786,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14777,"src":"4548:1:22","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double memory"}},"id":14787,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mantissa","nodeType":"MemberAccess","referencedDeclaration":14392,"src":"4548:10:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":14788,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14779,"src":"4560:1:22","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double memory"}},"id":14789,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mantissa","nodeType":"MemberAccess","referencedDeclaration":14392,"src":"4560:10:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14785,"name":"mul_","nodeType":"Identifier","overloadedDeclarations":[14739,14757,14775,14796,14814,14832,14848,14888],"referencedDeclaration":14848,"src":"4543:4:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":14790,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4543:28:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"argumentTypes":null,"id":14791,"name":"doubleScale","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14379,"src":"4574:11:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4543:42:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14784,"name":"Double","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14393,"src":"4525:6:22","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Double_$14393_storage_ptr_$","typeString":"type(struct ExponentialNoError.Double storage pointer)"}},"id":14793,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"4525:62:22","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory","typeString":"struct ExponentialNoError.Double memory"}},"functionReturnParameters":14783,"id":14794,"nodeType":"Return","src":"4518:69:22"}]},"documentation":null,"id":14796,"implemented":true,"kind":"function","modifiers":[],"name":"mul_","nodeType":"FunctionDefinition","parameters":{"id":14780,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14777,"name":"a","nodeType":"VariableDeclaration","scope":14796,"src":"4436:15:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double"},"typeName":{"contractScope":null,"id":14776,"name":"Double","nodeType":"UserDefinedTypeName","referencedDeclaration":14393,"src":"4436:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_storage_ptr","typeString":"struct ExponentialNoError.Double"}},"value":null,"visibility":"internal"},{"constant":false,"id":14779,"name":"b","nodeType":"VariableDeclaration","scope":14796,"src":"4453:15:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double"},"typeName":{"contractScope":null,"id":14778,"name":"Double","nodeType":"UserDefinedTypeName","referencedDeclaration":14393,"src":"4453:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_storage_ptr","typeString":"struct ExponentialNoError.Double"}},"value":null,"visibility":"internal"}],"src":"4435:34:22"},"returnParameters":{"id":14783,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14782,"name":"","nodeType":"VariableDeclaration","scope":14796,"src":"4493:13:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double"},"typeName":{"contractScope":null,"id":14781,"name":"Double","nodeType":"UserDefinedTypeName","referencedDeclaration":14393,"src":"4493:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_storage_ptr","typeString":"struct ExponentialNoError.Double"}},"value":null,"visibility":"internal"}],"src":"4492:15:22"},"scope":15066,"src":"4422:172:22","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":14813,"nodeType":"Block","src":"4677:63:22","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":14807,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14798,"src":"4717:1:22","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double memory"}},"id":14808,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mantissa","nodeType":"MemberAccess","referencedDeclaration":14392,"src":"4717:10:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":14809,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14800,"src":"4729:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14806,"name":"mul_","nodeType":"Identifier","overloadedDeclarations":[14739,14757,14775,14796,14814,14832,14848,14888],"referencedDeclaration":14848,"src":"4712:4:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":14810,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4712:19:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14805,"name":"Double","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14393,"src":"4694:6:22","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Double_$14393_storage_ptr_$","typeString":"type(struct ExponentialNoError.Double storage pointer)"}},"id":14811,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"4694:39:22","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory","typeString":"struct ExponentialNoError.Double memory"}},"functionReturnParameters":14804,"id":14812,"nodeType":"Return","src":"4687:46:22"}]},"documentation":null,"id":14814,"implemented":true,"kind":"function","modifiers":[],"name":"mul_","nodeType":"FunctionDefinition","parameters":{"id":14801,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14798,"name":"a","nodeType":"VariableDeclaration","scope":14814,"src":"4614:15:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double"},"typeName":{"contractScope":null,"id":14797,"name":"Double","nodeType":"UserDefinedTypeName","referencedDeclaration":14393,"src":"4614:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_storage_ptr","typeString":"struct ExponentialNoError.Double"}},"value":null,"visibility":"internal"},{"constant":false,"id":14800,"name":"b","nodeType":"VariableDeclaration","scope":14814,"src":"4631:6:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14799,"name":"uint","nodeType":"ElementaryTypeName","src":"4631:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"4613:25:22"},"returnParameters":{"id":14804,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14803,"name":"","nodeType":"VariableDeclaration","scope":14814,"src":"4662:13:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double"},"typeName":{"contractScope":null,"id":14802,"name":"Double","nodeType":"UserDefinedTypeName","referencedDeclaration":14393,"src":"4662:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_storage_ptr","typeString":"struct ExponentialNoError.Double"}},"value":null,"visibility":"internal"}],"src":"4661:15:22"},"scope":15066,"src":"4600:140:22","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":14831,"nodeType":"Block","src":"4814:57:22","statements":[{"expression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14829,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":14824,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14816,"src":"4836:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":14825,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14818,"src":"4839:1:22","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double memory"}},"id":14826,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mantissa","nodeType":"MemberAccess","referencedDeclaration":14392,"src":"4839:10:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14823,"name":"mul_","nodeType":"Identifier","overloadedDeclarations":[14739,14757,14775,14796,14814,14832,14848,14888],"referencedDeclaration":14848,"src":"4831:4:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":14827,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4831:19:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"argumentTypes":null,"id":14828,"name":"doubleScale","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14379,"src":"4853:11:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4831:33:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":14822,"id":14830,"nodeType":"Return","src":"4824:40:22"}]},"documentation":null,"id":14832,"implemented":true,"kind":"function","modifiers":[],"name":"mul_","nodeType":"FunctionDefinition","parameters":{"id":14819,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14816,"name":"a","nodeType":"VariableDeclaration","scope":14832,"src":"4760:6:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14815,"name":"uint","nodeType":"ElementaryTypeName","src":"4760:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":14818,"name":"b","nodeType":"VariableDeclaration","scope":14832,"src":"4768:15:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double"},"typeName":{"contractScope":null,"id":14817,"name":"Double","nodeType":"UserDefinedTypeName","referencedDeclaration":14393,"src":"4768:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_storage_ptr","typeString":"struct ExponentialNoError.Double"}},"value":null,"visibility":"internal"}],"src":"4759:25:22"},"returnParameters":{"id":14822,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14821,"name":"","nodeType":"VariableDeclaration","scope":14832,"src":"4808:4:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14820,"name":"uint","nodeType":"ElementaryTypeName","src":"4808:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"4807:6:22"},"scope":15066,"src":"4746:125:22","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":14847,"nodeType":"Block","src":"4936:61:22","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":14842,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14834,"src":"4958:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":14843,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14836,"src":"4961:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"6d756c7469706c69636174696f6e206f766572666c6f77","id":14844,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4964:25:22","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_3e4a9c0e386509f7d51443819fe3039eb3974511fef3f90a0001815722534080","typeString":"literal_string \"multiplication overflow\""},"value":"multiplication overflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_3e4a9c0e386509f7d51443819fe3039eb3974511fef3f90a0001815722534080","typeString":"literal_string \"multiplication overflow\""}],"id":14841,"name":"mul_","nodeType":"Identifier","overloadedDeclarations":[14739,14757,14775,14796,14814,14832,14848,14888],"referencedDeclaration":14888,"src":"4953:4:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$","typeString":"function (uint256,uint256,string memory) pure returns (uint256)"}},"id":14845,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4953:37:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":14840,"id":14846,"nodeType":"Return","src":"4946:44:22"}]},"documentation":null,"id":14848,"implemented":true,"kind":"function","modifiers":[],"name":"mul_","nodeType":"FunctionDefinition","parameters":{"id":14837,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14834,"name":"a","nodeType":"VariableDeclaration","scope":14848,"src":"4891:6:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14833,"name":"uint","nodeType":"ElementaryTypeName","src":"4891:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":14836,"name":"b","nodeType":"VariableDeclaration","scope":14848,"src":"4899:6:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14835,"name":"uint","nodeType":"ElementaryTypeName","src":"4899:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"4890:16:22"},"returnParameters":{"id":14840,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14839,"name":"","nodeType":"VariableDeclaration","scope":14848,"src":"4930:4:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14838,"name":"uint","nodeType":"ElementaryTypeName","src":"4930:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"4929:6:22"},"scope":15066,"src":"4877:120:22","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":14887,"nodeType":"Block","src":"5090:156:22","statements":[{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":14865,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":14859,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14850,"src":"5104:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":14860,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5109:1:22","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5104:6:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14864,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":14862,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14852,"src":"5114:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":14863,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5119:1:22","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5114:6:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5104:16:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":14869,"nodeType":"IfStatement","src":"5100:55:22","trueBody":{"id":14868,"nodeType":"Block","src":"5122:33:22","statements":[{"expression":{"argumentTypes":null,"hexValue":"30","id":14866,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5143:1:22","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":14858,"id":14867,"nodeType":"Return","src":"5136:8:22"}]}},{"assignments":[14871],"declarations":[{"constant":false,"id":14871,"name":"c","nodeType":"VariableDeclaration","scope":14887,"src":"5164:6:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14870,"name":"uint","nodeType":"ElementaryTypeName","src":"5164:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":14875,"initialValue":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14874,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":14872,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14850,"src":"5173:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"argumentTypes":null,"id":14873,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14852,"src":"5177:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5173:5:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5164:14:22"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14879,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":14877,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14871,"src":"5196:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"argumentTypes":null,"id":14878,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14850,"src":"5200:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5196:5:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":14880,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14852,"src":"5205:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5196:10:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"id":14882,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14854,"src":"5208:12:22","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":14876,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"5188:7:22","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":14883,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5188:33:22","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14884,"nodeType":"ExpressionStatement","src":"5188:33:22"},{"expression":{"argumentTypes":null,"id":14885,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14871,"src":"5238:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":14858,"id":14886,"nodeType":"Return","src":"5231:8:22"}]},"documentation":null,"id":14888,"implemented":true,"kind":"function","modifiers":[],"name":"mul_","nodeType":"FunctionDefinition","parameters":{"id":14855,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14850,"name":"a","nodeType":"VariableDeclaration","scope":14888,"src":"5017:6:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14849,"name":"uint","nodeType":"ElementaryTypeName","src":"5017:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":14852,"name":"b","nodeType":"VariableDeclaration","scope":14888,"src":"5025:6:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14851,"name":"uint","nodeType":"ElementaryTypeName","src":"5025:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":14854,"name":"errorMessage","nodeType":"VariableDeclaration","scope":14888,"src":"5033:26:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":14853,"name":"string","nodeType":"ElementaryTypeName","src":"5033:6:22","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":null,"visibility":"internal"}],"src":"5016:44:22"},"returnParameters":{"id":14858,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14857,"name":"","nodeType":"VariableDeclaration","scope":14888,"src":"5084:4:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14856,"name":"uint","nodeType":"ElementaryTypeName","src":"5084:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"5083:6:22"},"scope":15066,"src":"5003:243:22","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":14909,"nodeType":"Block","src":"5329:85:22","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":14900,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14890,"src":"5371:1:22","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}},"id":14901,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mantissa","nodeType":"MemberAccess","referencedDeclaration":14389,"src":"5371:10:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":14902,"name":"expScale","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14376,"src":"5383:8:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14899,"name":"mul_","nodeType":"Identifier","overloadedDeclarations":[14739,14757,14775,14796,14814,14832,14848,14888],"referencedDeclaration":14848,"src":"5366:4:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":14903,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5366:26:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":14904,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14892,"src":"5394:1:22","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}},"id":14905,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mantissa","nodeType":"MemberAccess","referencedDeclaration":14389,"src":"5394:10:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14898,"name":"div_","nodeType":"Identifier","overloadedDeclarations":[14910,14928,14947,14969,14987,15006,15022,15045],"referencedDeclaration":15022,"src":"5361:4:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":14906,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5361:44:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14897,"name":"Exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14390,"src":"5346:3:22","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Exp_$14390_storage_ptr_$","typeString":"type(struct ExponentialNoError.Exp storage pointer)"}},"id":14907,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"5346:61:22","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}},"functionReturnParameters":14896,"id":14908,"nodeType":"Return","src":"5339:68:22"}]},"documentation":null,"id":14910,"implemented":true,"kind":"function","modifiers":[],"name":"div_","nodeType":"FunctionDefinition","parameters":{"id":14893,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14890,"name":"a","nodeType":"VariableDeclaration","scope":14910,"src":"5266:12:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":14889,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"5266:3:22","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"},{"constant":false,"id":14892,"name":"b","nodeType":"VariableDeclaration","scope":14910,"src":"5280:12:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":14891,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"5280:3:22","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"}],"src":"5265:28:22"},"returnParameters":{"id":14896,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14895,"name":"","nodeType":"VariableDeclaration","scope":14910,"src":"5317:10:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":14894,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"5317:3:22","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"}],"src":"5316:12:22"},"scope":15066,"src":"5252:162:22","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":14927,"nodeType":"Block","src":"5491:60:22","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":14921,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14912,"src":"5528:1:22","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}},"id":14922,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mantissa","nodeType":"MemberAccess","referencedDeclaration":14389,"src":"5528:10:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":14923,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14914,"src":"5540:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14920,"name":"div_","nodeType":"Identifier","overloadedDeclarations":[14910,14928,14947,14969,14987,15006,15022,15045],"referencedDeclaration":15022,"src":"5523:4:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":14924,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5523:19:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14919,"name":"Exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14390,"src":"5508:3:22","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Exp_$14390_storage_ptr_$","typeString":"type(struct ExponentialNoError.Exp storage pointer)"}},"id":14925,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"5508:36:22","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}},"functionReturnParameters":14918,"id":14926,"nodeType":"Return","src":"5501:43:22"}]},"documentation":null,"id":14928,"implemented":true,"kind":"function","modifiers":[],"name":"div_","nodeType":"FunctionDefinition","parameters":{"id":14915,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14912,"name":"a","nodeType":"VariableDeclaration","scope":14928,"src":"5434:12:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":14911,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"5434:3:22","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"},{"constant":false,"id":14914,"name":"b","nodeType":"VariableDeclaration","scope":14928,"src":"5448:6:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14913,"name":"uint","nodeType":"ElementaryTypeName","src":"5448:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"5433:22:22"},"returnParameters":{"id":14918,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14917,"name":"","nodeType":"VariableDeclaration","scope":14928,"src":"5479:10:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":14916,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"5479:3:22","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"}],"src":"5478:12:22"},"scope":15066,"src":"5420:131:22","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":14946,"nodeType":"Block","src":"5622:59:22","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":14939,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14930,"src":"5649:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":14940,"name":"expScale","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14376,"src":"5652:8:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14938,"name":"mul_","nodeType":"Identifier","overloadedDeclarations":[14739,14757,14775,14796,14814,14832,14848,14888],"referencedDeclaration":14848,"src":"5644:4:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":14941,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5644:17:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":14942,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14932,"src":"5663:1:22","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}},"id":14943,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mantissa","nodeType":"MemberAccess","referencedDeclaration":14389,"src":"5663:10:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14937,"name":"div_","nodeType":"Identifier","overloadedDeclarations":[14910,14928,14947,14969,14987,15006,15022,15045],"referencedDeclaration":15022,"src":"5639:4:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":14944,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5639:35:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":14936,"id":14945,"nodeType":"Return","src":"5632:42:22"}]},"documentation":null,"id":14947,"implemented":true,"kind":"function","modifiers":[],"name":"div_","nodeType":"FunctionDefinition","parameters":{"id":14933,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14930,"name":"a","nodeType":"VariableDeclaration","scope":14947,"src":"5571:6:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14929,"name":"uint","nodeType":"ElementaryTypeName","src":"5571:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":14932,"name":"b","nodeType":"VariableDeclaration","scope":14947,"src":"5579:12:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":14931,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"5579:3:22","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"}],"src":"5570:22:22"},"returnParameters":{"id":14936,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14935,"name":"","nodeType":"VariableDeclaration","scope":14947,"src":"5616:4:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14934,"name":"uint","nodeType":"ElementaryTypeName","src":"5616:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"5615:6:22"},"scope":15066,"src":"5557:124:22","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":14968,"nodeType":"Block","src":"5773:91:22","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":14959,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14949,"src":"5818:1:22","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double memory"}},"id":14960,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mantissa","nodeType":"MemberAccess","referencedDeclaration":14392,"src":"5818:10:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":14961,"name":"doubleScale","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14379,"src":"5830:11:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14958,"name":"mul_","nodeType":"Identifier","overloadedDeclarations":[14739,14757,14775,14796,14814,14832,14848,14888],"referencedDeclaration":14848,"src":"5813:4:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":14962,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5813:29:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":14963,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14951,"src":"5844:1:22","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double memory"}},"id":14964,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mantissa","nodeType":"MemberAccess","referencedDeclaration":14392,"src":"5844:10:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14957,"name":"div_","nodeType":"Identifier","overloadedDeclarations":[14910,14928,14947,14969,14987,15006,15022,15045],"referencedDeclaration":15022,"src":"5808:4:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":14965,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5808:47:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14956,"name":"Double","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14393,"src":"5790:6:22","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Double_$14393_storage_ptr_$","typeString":"type(struct ExponentialNoError.Double storage pointer)"}},"id":14966,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"5790:67:22","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory","typeString":"struct ExponentialNoError.Double memory"}},"functionReturnParameters":14955,"id":14967,"nodeType":"Return","src":"5783:74:22"}]},"documentation":null,"id":14969,"implemented":true,"kind":"function","modifiers":[],"name":"div_","nodeType":"FunctionDefinition","parameters":{"id":14952,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14949,"name":"a","nodeType":"VariableDeclaration","scope":14969,"src":"5701:15:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double"},"typeName":{"contractScope":null,"id":14948,"name":"Double","nodeType":"UserDefinedTypeName","referencedDeclaration":14393,"src":"5701:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_storage_ptr","typeString":"struct ExponentialNoError.Double"}},"value":null,"visibility":"internal"},{"constant":false,"id":14951,"name":"b","nodeType":"VariableDeclaration","scope":14969,"src":"5718:15:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double"},"typeName":{"contractScope":null,"id":14950,"name":"Double","nodeType":"UserDefinedTypeName","referencedDeclaration":14393,"src":"5718:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_storage_ptr","typeString":"struct ExponentialNoError.Double"}},"value":null,"visibility":"internal"}],"src":"5700:34:22"},"returnParameters":{"id":14955,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14954,"name":"","nodeType":"VariableDeclaration","scope":14969,"src":"5758:13:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double"},"typeName":{"contractScope":null,"id":14953,"name":"Double","nodeType":"UserDefinedTypeName","referencedDeclaration":14393,"src":"5758:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_storage_ptr","typeString":"struct ExponentialNoError.Double"}},"value":null,"visibility":"internal"}],"src":"5757:15:22"},"scope":15066,"src":"5687:177:22","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":14986,"nodeType":"Block","src":"5947:63:22","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":14980,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14971,"src":"5987:1:22","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double memory"}},"id":14981,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mantissa","nodeType":"MemberAccess","referencedDeclaration":14392,"src":"5987:10:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":14982,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14973,"src":"5999:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14979,"name":"div_","nodeType":"Identifier","overloadedDeclarations":[14910,14928,14947,14969,14987,15006,15022,15045],"referencedDeclaration":15022,"src":"5982:4:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":14983,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5982:19:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14978,"name":"Double","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14393,"src":"5964:6:22","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Double_$14393_storage_ptr_$","typeString":"type(struct ExponentialNoError.Double storage pointer)"}},"id":14984,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"5964:39:22","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory","typeString":"struct ExponentialNoError.Double memory"}},"functionReturnParameters":14977,"id":14985,"nodeType":"Return","src":"5957:46:22"}]},"documentation":null,"id":14987,"implemented":true,"kind":"function","modifiers":[],"name":"div_","nodeType":"FunctionDefinition","parameters":{"id":14974,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14971,"name":"a","nodeType":"VariableDeclaration","scope":14987,"src":"5884:15:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double"},"typeName":{"contractScope":null,"id":14970,"name":"Double","nodeType":"UserDefinedTypeName","referencedDeclaration":14393,"src":"5884:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_storage_ptr","typeString":"struct ExponentialNoError.Double"}},"value":null,"visibility":"internal"},{"constant":false,"id":14973,"name":"b","nodeType":"VariableDeclaration","scope":14987,"src":"5901:6:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14972,"name":"uint","nodeType":"ElementaryTypeName","src":"5901:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"5883:25:22"},"returnParameters":{"id":14977,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14976,"name":"","nodeType":"VariableDeclaration","scope":14987,"src":"5932:13:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double"},"typeName":{"contractScope":null,"id":14975,"name":"Double","nodeType":"UserDefinedTypeName","referencedDeclaration":14393,"src":"5932:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_storage_ptr","typeString":"struct ExponentialNoError.Double"}},"value":null,"visibility":"internal"}],"src":"5931:15:22"},"scope":15066,"src":"5870:140:22","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":15005,"nodeType":"Block","src":"6084:62:22","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":14998,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14989,"src":"6111:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":14999,"name":"doubleScale","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14379,"src":"6114:11:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14997,"name":"mul_","nodeType":"Identifier","overloadedDeclarations":[14739,14757,14775,14796,14814,14832,14848,14888],"referencedDeclaration":14848,"src":"6106:4:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":15000,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6106:20:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":15001,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14991,"src":"6128:1:22","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double memory"}},"id":15002,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mantissa","nodeType":"MemberAccess","referencedDeclaration":14392,"src":"6128:10:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14996,"name":"div_","nodeType":"Identifier","overloadedDeclarations":[14910,14928,14947,14969,14987,15006,15022,15045],"referencedDeclaration":15022,"src":"6101:4:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":15003,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6101:38:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":14995,"id":15004,"nodeType":"Return","src":"6094:45:22"}]},"documentation":null,"id":15006,"implemented":true,"kind":"function","modifiers":[],"name":"div_","nodeType":"FunctionDefinition","parameters":{"id":14992,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14989,"name":"a","nodeType":"VariableDeclaration","scope":15006,"src":"6030:6:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14988,"name":"uint","nodeType":"ElementaryTypeName","src":"6030:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":14991,"name":"b","nodeType":"VariableDeclaration","scope":15006,"src":"6038:15:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double"},"typeName":{"contractScope":null,"id":14990,"name":"Double","nodeType":"UserDefinedTypeName","referencedDeclaration":14393,"src":"6038:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_storage_ptr","typeString":"struct ExponentialNoError.Double"}},"value":null,"visibility":"internal"}],"src":"6029:25:22"},"returnParameters":{"id":14995,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14994,"name":"","nodeType":"VariableDeclaration","scope":15006,"src":"6078:4:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14993,"name":"uint","nodeType":"ElementaryTypeName","src":"6078:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"6077:6:22"},"scope":15066,"src":"6016:130:22","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":15021,"nodeType":"Block","src":"6211:52:22","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":15016,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15008,"src":"6233:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":15017,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15010,"src":"6236:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"646976696465206279207a65726f","id":15018,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6239:16:22","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_336a586d2b2f9da7524b608e311033812081ceec42c301063df6eac84bf74752","typeString":"literal_string \"divide by zero\""},"value":"divide by zero"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_336a586d2b2f9da7524b608e311033812081ceec42c301063df6eac84bf74752","typeString":"literal_string \"divide by zero\""}],"id":15015,"name":"div_","nodeType":"Identifier","overloadedDeclarations":[14910,14928,14947,14969,14987,15006,15022,15045],"referencedDeclaration":15045,"src":"6228:4:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$","typeString":"function (uint256,uint256,string memory) pure returns (uint256)"}},"id":15019,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6228:28:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":15014,"id":15020,"nodeType":"Return","src":"6221:35:22"}]},"documentation":null,"id":15022,"implemented":true,"kind":"function","modifiers":[],"name":"div_","nodeType":"FunctionDefinition","parameters":{"id":15011,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15008,"name":"a","nodeType":"VariableDeclaration","scope":15022,"src":"6166:6:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15007,"name":"uint","nodeType":"ElementaryTypeName","src":"6166:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":15010,"name":"b","nodeType":"VariableDeclaration","scope":15022,"src":"6174:6:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15009,"name":"uint","nodeType":"ElementaryTypeName","src":"6174:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"6165:16:22"},"returnParameters":{"id":15014,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15013,"name":"","nodeType":"VariableDeclaration","scope":15022,"src":"6205:4:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15012,"name":"uint","nodeType":"ElementaryTypeName","src":"6205:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"6204:6:22"},"scope":15066,"src":"6152:111:22","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":15044,"nodeType":"Block","src":"6356:67:22","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15036,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":15034,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15026,"src":"6374:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"30","id":15035,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6378:1:22","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6374:5:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"id":15037,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15028,"src":"6381:12:22","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":15033,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"6366:7:22","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15038,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6366:28:22","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15039,"nodeType":"ExpressionStatement","src":"6366:28:22"},{"expression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15042,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":15040,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15024,"src":"6411:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"argumentTypes":null,"id":15041,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15026,"src":"6415:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6411:5:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":15032,"id":15043,"nodeType":"Return","src":"6404:12:22"}]},"documentation":null,"id":15045,"implemented":true,"kind":"function","modifiers":[],"name":"div_","nodeType":"FunctionDefinition","parameters":{"id":15029,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15024,"name":"a","nodeType":"VariableDeclaration","scope":15045,"src":"6283:6:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15023,"name":"uint","nodeType":"ElementaryTypeName","src":"6283:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":15026,"name":"b","nodeType":"VariableDeclaration","scope":15045,"src":"6291:6:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15025,"name":"uint","nodeType":"ElementaryTypeName","src":"6291:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":15028,"name":"errorMessage","nodeType":"VariableDeclaration","scope":15045,"src":"6299:26:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":15027,"name":"string","nodeType":"ElementaryTypeName","src":"6299:6:22","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":null,"visibility":"internal"}],"src":"6282:44:22"},"returnParameters":{"id":15032,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15031,"name":"","nodeType":"VariableDeclaration","scope":15045,"src":"6350:4:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15030,"name":"uint","nodeType":"ElementaryTypeName","src":"6350:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"6349:6:22"},"scope":15066,"src":"6269:154:22","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":15064,"nodeType":"Block","src":"6501:73:22","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":15057,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15047,"src":"6546:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":15058,"name":"doubleScale","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14379,"src":"6549:11:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15056,"name":"mul_","nodeType":"Identifier","overloadedDeclarations":[14739,14757,14775,14796,14814,14832,14848,14888],"referencedDeclaration":14848,"src":"6541:4:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":15059,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6541:20:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":15060,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15049,"src":"6563:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15055,"name":"div_","nodeType":"Identifier","overloadedDeclarations":[14910,14928,14947,14969,14987,15006,15022,15045],"referencedDeclaration":15022,"src":"6536:4:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":15061,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6536:29:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15054,"name":"Double","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14393,"src":"6518:6:22","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Double_$14393_storage_ptr_$","typeString":"type(struct ExponentialNoError.Double storage pointer)"}},"id":15062,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"6518:49:22","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory","typeString":"struct ExponentialNoError.Double memory"}},"functionReturnParameters":15053,"id":15063,"nodeType":"Return","src":"6511:56:22"}]},"documentation":null,"id":15065,"implemented":true,"kind":"function","modifiers":[],"name":"fraction","nodeType":"FunctionDefinition","parameters":{"id":15050,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15047,"name":"a","nodeType":"VariableDeclaration","scope":15065,"src":"6447:6:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15046,"name":"uint","nodeType":"ElementaryTypeName","src":"6447:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":15049,"name":"b","nodeType":"VariableDeclaration","scope":15065,"src":"6455:6:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15048,"name":"uint","nodeType":"ElementaryTypeName","src":"6455:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"6446:16:22"},"returnParameters":{"id":15053,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15052,"name":"","nodeType":"VariableDeclaration","scope":15065,"src":"6486:13:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double"},"typeName":{"contractScope":null,"id":15051,"name":"Double","nodeType":"UserDefinedTypeName","referencedDeclaration":14393,"src":"6486:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_storage_ptr","typeString":"struct ExponentialNoError.Double"}},"value":null,"visibility":"internal"}],"src":"6485:15:22"},"scope":15066,"src":"6429:145:22","stateMutability":"pure","superFunction":null,"visibility":"internal"}],"scope":15067,"src":"350:6226:22"}],"src":"0:6577:22"},"id":22},"contracts/Governance/Comp.sol":{"ast":{"absolutePath":"contracts/Governance/Comp.sol","exportedSymbols":{"Comp":[16024]},"id":16025,"nodeType":"SourceUnit","nodes":[{"id":15068,"literals":["solidity","0.5",".17"],"nodeType":"PragmaDirective","src":"0:23:23"},{"id":15069,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"24:33:23"},{"baseContracts":[],"contractDependencies":[],"contractKind":"contract","documentation":null,"fullyImplemented":true,"id":16024,"linearizedBaseContracts":[16024],"name":"Comp","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":15072,"name":"name","nodeType":"VariableDeclaration","scope":16024,"src":"128:40:23","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory","typeString":"string"},"typeName":{"id":15070,"name":"string","nodeType":"ElementaryTypeName","src":"128:6:23","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"argumentTypes":null,"hexValue":"436f6d706f756e64","id":15071,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"158:10:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_561ca898cce9f021c15a441ef41899706e923541cee724530075d1a1144761c7","typeString":"literal_string \"Compound\""},"value":"Compound"},"visibility":"public"},{"constant":true,"id":15075,"name":"symbol","nodeType":"VariableDeclaration","scope":16024,"src":"226:38:23","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory","typeString":"string"},"typeName":{"id":15073,"name":"string","nodeType":"ElementaryTypeName","src":"226:6:23","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"argumentTypes":null,"hexValue":"434f4d50","id":15074,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"258:6:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_b6dbcaeee318e11fe1e87d4af04bdd7b4d6a3f13307225dc7ee72f7c085ab454","typeString":"literal_string \"COMP\""},"value":"COMP"},"visibility":"public"},{"constant":true,"id":15078,"name":"decimals","nodeType":"VariableDeclaration","scope":16024,"src":"324:35:23","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":15076,"name":"uint8","nodeType":"ElementaryTypeName","src":"324:5:23","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"argumentTypes":null,"hexValue":"3138","id":15077,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"357:2:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"visibility":"public"},{"constant":true,"id":15081,"name":"totalSupply","nodeType":"VariableDeclaration","scope":16024,"src":"420:46:23","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15079,"name":"uint","nodeType":"ElementaryTypeName","src":"420:4:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"argumentTypes":null,"hexValue":"3130303030303030653138","id":15080,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"455:11:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000_by_1","typeString":"int_const 10000000000000000000000000"},"value":"10000000e18"},"visibility":"public"},{"constant":false,"id":15087,"name":"allowances","nodeType":"VariableDeclaration","scope":16024,"src":"546:68:23","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint96_$_$","typeString":"mapping(address => mapping(address => uint96))"},"typeName":{"id":15086,"keyType":{"id":15082,"name":"address","nodeType":"ElementaryTypeName","src":"555:7:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"546:48:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint96_$_$","typeString":"mapping(address => mapping(address => uint96))"},"valueType":{"id":15085,"keyType":{"id":15083,"name":"address","nodeType":"ElementaryTypeName","src":"575:7:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"566:27:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint96_$","typeString":"mapping(address => uint96)"},"valueType":{"id":15084,"name":"uint96","nodeType":"ElementaryTypeName","src":"586:6:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}}}},"value":null,"visibility":"internal"},{"constant":false,"id":15091,"name":"balances","nodeType":"VariableDeclaration","scope":16024,"src":"688:45:23","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint96_$","typeString":"mapping(address => uint96)"},"typeName":{"id":15090,"keyType":{"id":15088,"name":"address","nodeType":"ElementaryTypeName","src":"697:7:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"688:27:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint96_$","typeString":"mapping(address => uint96)"},"valueType":{"id":15089,"name":"uint96","nodeType":"ElementaryTypeName","src":"708:6:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}}},"value":null,"visibility":"internal"},{"constant":false,"id":15095,"name":"delegates","nodeType":"VariableDeclaration","scope":16024,"src":"791:45:23","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"},"typeName":{"id":15094,"keyType":{"id":15092,"name":"address","nodeType":"ElementaryTypeName","src":"800:7:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"791:28:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"},"valueType":{"id":15093,"name":"address","nodeType":"ElementaryTypeName","src":"811:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"value":null,"visibility":"public"},{"canonicalName":"Comp.Checkpoint","id":15100,"members":[{"constant":false,"id":15097,"name":"fromBlock","nodeType":"VariableDeclaration","scope":15100,"src":"947:16:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":15096,"name":"uint32","nodeType":"ElementaryTypeName","src":"947:6:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"value":null,"visibility":"internal"},{"constant":false,"id":15099,"name":"votes","nodeType":"VariableDeclaration","scope":15100,"src":"973:12:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":15098,"name":"uint96","nodeType":"ElementaryTypeName","src":"973:6:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"value":null,"visibility":"internal"}],"name":"Checkpoint","nodeType":"StructDefinition","scope":16024,"src":"919:73:23","visibility":"public"},{"constant":false,"id":15106,"name":"checkpoints","nodeType":"VariableDeclaration","scope":16024,"src":"1071:70:23","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15100_storage_$_$","typeString":"mapping(address => mapping(uint32 => struct Comp.Checkpoint))"},"typeName":{"id":15105,"keyType":{"id":15101,"name":"address","nodeType":"ElementaryTypeName","src":"1080:7:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1071:51:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15100_storage_$_$","typeString":"mapping(address => mapping(uint32 => struct Comp.Checkpoint))"},"valueType":{"id":15104,"keyType":{"id":15102,"name":"uint32","nodeType":"ElementaryTypeName","src":"1100:6:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Mapping","src":"1091:30:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15100_storage_$","typeString":"mapping(uint32 => struct Comp.Checkpoint)"},"valueType":{"contractScope":null,"id":15103,"name":"Checkpoint","nodeType":"UserDefinedTypeName","referencedDeclaration":15100,"src":"1110:10:23","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$15100_storage_ptr","typeString":"struct Comp.Checkpoint"}}}},"value":null,"visibility":"public"},{"constant":false,"id":15110,"name":"numCheckpoints","nodeType":"VariableDeclaration","scope":16024,"src":"1207:49:23","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint32_$","typeString":"mapping(address => uint32)"},"typeName":{"id":15109,"keyType":{"id":15107,"name":"address","nodeType":"ElementaryTypeName","src":"1216:7:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1207:27:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint32_$","typeString":"mapping(address => uint32)"},"valueType":{"id":15108,"name":"uint32","nodeType":"ElementaryTypeName","src":"1227:6:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}},"value":null,"visibility":"public"},{"constant":true,"id":15115,"name":"DOMAIN_TYPEHASH","nodeType":"VariableDeclaration","scope":16024,"src":"1326:122:23","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15111,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1326:7:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"454950373132446f6d61696e28737472696e67206e616d652c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429","id":15113,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1378:69:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866","typeString":"literal_string \"EIP712Domain(string name,uint256 chainId,address verifyingContract)\""},"value":"EIP712Domain(string name,uint256 chainId,address verifyingContract)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866","typeString":"literal_string \"EIP712Domain(string name,uint256 chainId,address verifyingContract)\""}],"id":15112,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22544,"src":"1368:9:23","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":15114,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1368:80:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"constant":true,"id":15120,"name":"DELEGATION_TYPEHASH","nodeType":"VariableDeclaration","scope":16024,"src":"1539:117:23","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15116,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1539:7:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"44656c65676174696f6e28616464726573732064656c6567617465652c75696e74323536206e6f6e63652c75696e743235362065787069727929","id":15118,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1595:60:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_e48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf","typeString":"literal_string \"Delegation(address delegatee,uint256 nonce,uint256 expiry)\""},"value":"Delegation(address delegatee,uint256 nonce,uint256 expiry)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_e48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf","typeString":"literal_string \"Delegation(address delegatee,uint256 nonce,uint256 expiry)\""}],"id":15117,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22544,"src":"1585:9:23","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":15119,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1585:71:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"constant":false,"id":15124,"name":"nonces","nodeType":"VariableDeclaration","scope":16024,"src":"1734:39:23","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":15123,"keyType":{"id":15121,"name":"address","nodeType":"ElementaryTypeName","src":"1743:7:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1734:25:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":15122,"name":"uint","nodeType":"ElementaryTypeName","src":"1754:4:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"value":null,"visibility":"public"},{"anonymous":false,"documentation":"@notice An event thats emitted when an account changes its delegate","id":15132,"name":"DelegateChanged","nodeType":"EventDefinition","parameters":{"id":15131,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15126,"indexed":true,"name":"delegator","nodeType":"VariableDeclaration","scope":15132,"src":"1878:25:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15125,"name":"address","nodeType":"ElementaryTypeName","src":"1878:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":15128,"indexed":true,"name":"fromDelegate","nodeType":"VariableDeclaration","scope":15132,"src":"1905:28:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15127,"name":"address","nodeType":"ElementaryTypeName","src":"1905:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":15130,"indexed":true,"name":"toDelegate","nodeType":"VariableDeclaration","scope":15132,"src":"1935:26:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15129,"name":"address","nodeType":"ElementaryTypeName","src":"1935:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"1877:85:23"},"src":"1856:107:23"},{"anonymous":false,"documentation":"@notice An event thats emitted when a delegate account's vote balance changes","id":15140,"name":"DelegateVotesChanged","nodeType":"EventDefinition","parameters":{"id":15139,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15134,"indexed":true,"name":"delegate","nodeType":"VariableDeclaration","scope":15140,"src":"2082:24:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15133,"name":"address","nodeType":"ElementaryTypeName","src":"2082:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":15136,"indexed":false,"name":"previousBalance","nodeType":"VariableDeclaration","scope":15140,"src":"2108:20:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15135,"name":"uint","nodeType":"ElementaryTypeName","src":"2108:4:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":15138,"indexed":false,"name":"newBalance","nodeType":"VariableDeclaration","scope":15140,"src":"2130:15:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15137,"name":"uint","nodeType":"ElementaryTypeName","src":"2130:4:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2081:65:23"},"src":"2055:92:23"},{"anonymous":false,"documentation":"@notice The standard EIP-20 transfer event","id":15148,"name":"Transfer","nodeType":"EventDefinition","parameters":{"id":15147,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15142,"indexed":true,"name":"from","nodeType":"VariableDeclaration","scope":15148,"src":"2219:20:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15141,"name":"address","nodeType":"ElementaryTypeName","src":"2219:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":15144,"indexed":true,"name":"to","nodeType":"VariableDeclaration","scope":15148,"src":"2241:18:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15143,"name":"address","nodeType":"ElementaryTypeName","src":"2241:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":15146,"indexed":false,"name":"amount","nodeType":"VariableDeclaration","scope":15148,"src":"2261:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15145,"name":"uint256","nodeType":"ElementaryTypeName","src":"2261:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2218:58:23"},"src":"2204:73:23"},{"anonymous":false,"documentation":"@notice The standard EIP-20 approval event","id":15156,"name":"Approval","nodeType":"EventDefinition","parameters":{"id":15155,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15150,"indexed":true,"name":"owner","nodeType":"VariableDeclaration","scope":15156,"src":"2349:21:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15149,"name":"address","nodeType":"ElementaryTypeName","src":"2349:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":15152,"indexed":true,"name":"spender","nodeType":"VariableDeclaration","scope":15156,"src":"2372:23:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15151,"name":"address","nodeType":"ElementaryTypeName","src":"2372:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":15154,"indexed":false,"name":"amount","nodeType":"VariableDeclaration","scope":15156,"src":"2397:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15153,"name":"uint256","nodeType":"ElementaryTypeName","src":"2397:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2348:64:23"},"src":"2334:79:23"},{"body":{"id":15177,"nodeType":"Block","src":"2579:113:23","statements":[{"expression":{"argumentTypes":null,"id":15167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":15161,"name":"balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15091,"src":"2589:8:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint96_$","typeString":"mapping(address => uint96)"}},"id":15163,"indexExpression":{"argumentTypes":null,"id":15162,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15158,"src":"2598:7:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2589:17:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":15165,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15081,"src":"2616:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15164,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2609:6:23","typeDescriptions":{"typeIdentifier":"t_type$_t_uint96_$","typeString":"type(uint96)"},"typeName":"uint96"},"id":15166,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2609:19:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"2589:39:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"id":15168,"nodeType":"ExpressionStatement","src":"2589:39:23"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":15171,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2660:1:23","subdenomination":null,"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":15170,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2652:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":15172,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2652:10:23","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"id":15173,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15158,"src":"2664:7:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":15174,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15081,"src":"2673:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15169,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15148,"src":"2643:8:23","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":15175,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2643:42:23","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15176,"nodeType":"EmitStatement","src":"2638:47:23"}]},"documentation":"@notice Construct a new Comp token\n@param account The initial account to grant all the tokens","id":15178,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":15159,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15158,"name":"account","nodeType":"VariableDeclaration","scope":15178,"src":"2555:15:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15157,"name":"address","nodeType":"ElementaryTypeName","src":"2555:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"2554:17:23"},"returnParameters":{"id":15160,"nodeType":"ParameterList","parameters":[],"src":"2579:0:23"},"scope":16024,"src":"2543:149:23","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":15193,"nodeType":"Block","src":"3070:52:23","statements":[{"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":15187,"name":"allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15087,"src":"3087:10:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint96_$_$","typeString":"mapping(address => mapping(address => uint96))"}},"id":15189,"indexExpression":{"argumentTypes":null,"id":15188,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15180,"src":"3098:7:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3087:19:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint96_$","typeString":"mapping(address => uint96)"}},"id":15191,"indexExpression":{"argumentTypes":null,"id":15190,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15182,"src":"3107:7:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3087:28:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"functionReturnParameters":15186,"id":15192,"nodeType":"Return","src":"3080:35:23"}]},"documentation":"@notice Get the number of tokens `spender` is approved to spend on behalf of `account`\n@param account The address of the account holding the funds\n@param spender The address of the account spending the funds\n@return The number of tokens approved","id":15194,"implemented":true,"kind":"function","modifiers":[],"name":"allowance","nodeType":"FunctionDefinition","parameters":{"id":15183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15180,"name":"account","nodeType":"VariableDeclaration","scope":15194,"src":"3007:15:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15179,"name":"address","nodeType":"ElementaryTypeName","src":"3007:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":15182,"name":"spender","nodeType":"VariableDeclaration","scope":15194,"src":"3024:15:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15181,"name":"address","nodeType":"ElementaryTypeName","src":"3024:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"3006:34:23"},"returnParameters":{"id":15186,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15185,"name":"","nodeType":"VariableDeclaration","scope":15194,"src":"3064:4:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15184,"name":"uint","nodeType":"ElementaryTypeName","src":"3064:4:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"3063:6:23"},"scope":16024,"src":"2988:134:23","stateMutability":"view","superFunction":null,"visibility":"external"},{"body":{"id":15247,"nodeType":"Block","src":"3664:333:23","statements":[{"assignments":[15204],"declarations":[{"constant":false,"id":15204,"name":"amount","nodeType":"VariableDeclaration","scope":15247,"src":"3674:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":15203,"name":"uint96","nodeType":"ElementaryTypeName","src":"3674:6:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"value":null,"visibility":"internal"}],"id":15205,"initialValue":null,"nodeType":"VariableDeclarationStatement","src":"3674:13:23"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15211,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":15206,"name":"rawAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15198,"src":"3701:9:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":15209,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"3719:2:23","subExpression":{"argumentTypes":null,"hexValue":"31","id":15208,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3720:1:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"id":15207,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3714:4:23","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":15210,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3714:8:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3701:21:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":15227,"nodeType":"Block","src":"3774:92:23","statements":[{"expression":{"argumentTypes":null,"id":15225,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":15220,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15204,"src":"3788:6:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":15222,"name":"rawAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15198,"src":"3804:9:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"436f6d703a3a617070726f76653a20616d6f756e7420657863656564732039362062697473","id":15223,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3815:39:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_32dab9ece0397c38c85244ed755f6110088fb13d43a7e9d6809da7619813d0fe","typeString":"literal_string \"Comp::approve: amount exceeds 96 bits\""},"value":"Comp::approve: amount exceeds 96 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_32dab9ece0397c38c85244ed755f6110088fb13d43a7e9d6809da7619813d0fe","typeString":"literal_string \"Comp::approve: amount exceeds 96 bits\""}],"id":15221,"name":"safe96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15961,"src":"3797:6:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint96_$","typeString":"function (uint256,string memory) pure returns (uint96)"}},"id":15224,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3797:58:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"3788:67:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"id":15226,"nodeType":"ExpressionStatement","src":"3788:67:23"}]},"id":15228,"nodeType":"IfStatement","src":"3697:169:23","trueBody":{"id":15219,"nodeType":"Block","src":"3724:44:23","statements":[{"expression":{"argumentTypes":null,"id":15217,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":15212,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15204,"src":"3738:6:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":15215,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"3754:2:23","subExpression":{"argumentTypes":null,"hexValue":"31","id":15214,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3755:1:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"id":15213,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3747:6:23","typeDescriptions":{"typeIdentifier":"t_type$_t_uint96_$","typeString":"type(uint96)"},"typeName":"uint96"},"id":15216,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3747:10:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"3738:19:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"id":15218,"nodeType":"ExpressionStatement","src":"3738:19:23"}]}},{"expression":{"argumentTypes":null,"id":15236,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":15229,"name":"allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15087,"src":"3876:10:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint96_$_$","typeString":"mapping(address => mapping(address => uint96))"}},"id":15233,"indexExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":15230,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"3887:3:23","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":15231,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"3887:10:23","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3876:22:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint96_$","typeString":"mapping(address => uint96)"}},"id":15234,"indexExpression":{"argumentTypes":null,"id":15232,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15196,"src":"3899:7:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3876:31:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":15235,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15204,"src":"3910:6:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"3876:40:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"id":15237,"nodeType":"ExpressionStatement","src":"3876:40:23"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":15239,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"3941:3:23","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":15240,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"3941:10:23","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"id":15241,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15196,"src":"3953:7:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":15242,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15204,"src":"3962:6:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint96","typeString":"uint96"}],"id":15238,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15156,"src":"3932:8:23","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":15243,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3932:37:23","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15244,"nodeType":"EmitStatement","src":"3927:42:23"},{"expression":{"argumentTypes":null,"hexValue":"74727565","id":15245,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3986:4:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":15202,"id":15246,"nodeType":"Return","src":"3979:11:23"}]},"documentation":"@notice Approve `spender` to transfer up to `amount` from `src`\n@dev This will overwrite the approval amount for `spender`\n and is subject to issues noted [here](https://eips.ethereum.org/EIPS/eip-20#approve)\n@param spender The address of the account which may transfer tokens\n@param rawAmount The number of tokens that are approved (2^256-1 means infinite)\n@return Whether or not the approval succeeded","id":15248,"implemented":true,"kind":"function","modifiers":[],"name":"approve","nodeType":"FunctionDefinition","parameters":{"id":15199,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15196,"name":"spender","nodeType":"VariableDeclaration","scope":15248,"src":"3607:15:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15195,"name":"address","nodeType":"ElementaryTypeName","src":"3607:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":15198,"name":"rawAmount","nodeType":"VariableDeclaration","scope":15248,"src":"3624:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15197,"name":"uint","nodeType":"ElementaryTypeName","src":"3624:4:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"3606:33:23"},"returnParameters":{"id":15202,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15201,"name":"","nodeType":"VariableDeclaration","scope":15248,"src":"3658:4:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15200,"name":"bool","nodeType":"ElementaryTypeName","src":"3658:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"3657:6:23"},"scope":16024,"src":"3590:407:23","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":{"id":15259,"nodeType":"Block","src":"4258:41:23","statements":[{"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":15255,"name":"balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15091,"src":"4275:8:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint96_$","typeString":"mapping(address => uint96)"}},"id":15257,"indexExpression":{"argumentTypes":null,"id":15256,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15250,"src":"4284:7:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4275:17:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"functionReturnParameters":15254,"id":15258,"nodeType":"Return","src":"4268:24:23"}]},"documentation":"@notice Get the number of tokens held by the `account`\n@param account The address of the account to get the balance of\n@return The number of tokens held","id":15260,"implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nodeType":"FunctionDefinition","parameters":{"id":15251,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15250,"name":"account","nodeType":"VariableDeclaration","scope":15260,"src":"4212:15:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15249,"name":"address","nodeType":"ElementaryTypeName","src":"4212:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"4211:17:23"},"returnParameters":{"id":15254,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15253,"name":"","nodeType":"VariableDeclaration","scope":15260,"src":"4252:4:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15252,"name":"uint","nodeType":"ElementaryTypeName","src":"4252:4:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"4251:6:23"},"scope":16024,"src":"4193:106:23","stateMutability":"view","superFunction":null,"visibility":"external"},{"body":{"id":15285,"nodeType":"Block","src":"4626:163:23","statements":[{"assignments":[15270],"declarations":[{"constant":false,"id":15270,"name":"amount","nodeType":"VariableDeclaration","scope":15285,"src":"4636:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":15269,"name":"uint96","nodeType":"ElementaryTypeName","src":"4636:6:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"value":null,"visibility":"internal"}],"id":15275,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":15272,"name":"rawAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15264,"src":"4659:9:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"436f6d703a3a7472616e736665723a20616d6f756e7420657863656564732039362062697473","id":15273,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4670:40:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_5bdeafae4aaace0ed9b7df6e60f285c9e8e84a3ceac05af6b6259bfed8e161f5","typeString":"literal_string \"Comp::transfer: amount exceeds 96 bits\""},"value":"Comp::transfer: amount exceeds 96 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_5bdeafae4aaace0ed9b7df6e60f285c9e8e84a3ceac05af6b6259bfed8e161f5","typeString":"literal_string \"Comp::transfer: amount exceeds 96 bits\""}],"id":15271,"name":"safe96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15961,"src":"4652:6:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint96_$","typeString":"function (uint256,string memory) pure returns (uint96)"}},"id":15274,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4652:59:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"VariableDeclarationStatement","src":"4636:75:23"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":15277,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"4737:3:23","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":15278,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"4737:10:23","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"id":15279,"name":"dst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15262,"src":"4749:3:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":15280,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15270,"src":"4754:6:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint96","typeString":"uint96"}],"id":15276,"name":"_transferTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15735,"src":"4721:15:23","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint96_$returns$__$","typeString":"function (address,address,uint96)"}},"id":15281,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4721:40:23","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15282,"nodeType":"ExpressionStatement","src":"4721:40:23"},{"expression":{"argumentTypes":null,"hexValue":"74727565","id":15283,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4778:4:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":15268,"id":15284,"nodeType":"Return","src":"4771:11:23"}]},"documentation":"@notice Transfer `amount` tokens from `msg.sender` to `dst`\n@param dst The address of the destination account\n@param rawAmount The number of tokens to transfer\n@return Whether or not the transfer succeeded","id":15286,"implemented":true,"kind":"function","modifiers":[],"name":"transfer","nodeType":"FunctionDefinition","parameters":{"id":15265,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15262,"name":"dst","nodeType":"VariableDeclaration","scope":15286,"src":"4573:11:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15261,"name":"address","nodeType":"ElementaryTypeName","src":"4573:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":15264,"name":"rawAmount","nodeType":"VariableDeclaration","scope":15286,"src":"4586:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15263,"name":"uint","nodeType":"ElementaryTypeName","src":"4586:4:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"4572:29:23"},"returnParameters":{"id":15268,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15267,"name":"","nodeType":"VariableDeclaration","scope":15286,"src":"4620:4:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15266,"name":"bool","nodeType":"ElementaryTypeName","src":"4620:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"4619:6:23"},"scope":16024,"src":"4555:234:23","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":{"id":15359,"nodeType":"Block","src":"5178:570:23","statements":[{"assignments":[15298],"declarations":[{"constant":false,"id":15298,"name":"spender","nodeType":"VariableDeclaration","scope":15359,"src":"5188:15:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15297,"name":"address","nodeType":"ElementaryTypeName","src":"5188:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":15301,"initialValue":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":15299,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"5206:3:23","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":15300,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"5206:10:23","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"VariableDeclarationStatement","src":"5188:28:23"},{"assignments":[15303],"declarations":[{"constant":false,"id":15303,"name":"spenderAllowance","nodeType":"VariableDeclaration","scope":15359,"src":"5226:23:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":15302,"name":"uint96","nodeType":"ElementaryTypeName","src":"5226:6:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"value":null,"visibility":"internal"}],"id":15309,"initialValue":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":15304,"name":"allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15087,"src":"5252:10:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint96_$_$","typeString":"mapping(address => mapping(address => uint96))"}},"id":15306,"indexExpression":{"argumentTypes":null,"id":15305,"name":"src","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15288,"src":"5263:3:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5252:15:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint96_$","typeString":"mapping(address => uint96)"}},"id":15308,"indexExpression":{"argumentTypes":null,"id":15307,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15298,"src":"5268:7:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5252:24:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"VariableDeclarationStatement","src":"5226:50:23"},{"assignments":[15311],"declarations":[{"constant":false,"id":15311,"name":"amount","nodeType":"VariableDeclaration","scope":15359,"src":"5286:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":15310,"name":"uint96","nodeType":"ElementaryTypeName","src":"5286:6:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"value":null,"visibility":"internal"}],"id":15316,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":15313,"name":"rawAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15292,"src":"5309:9:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"436f6d703a3a617070726f76653a20616d6f756e7420657863656564732039362062697473","id":15314,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5320:39:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_32dab9ece0397c38c85244ed755f6110088fb13d43a7e9d6809da7619813d0fe","typeString":"literal_string \"Comp::approve: amount exceeds 96 bits\""},"value":"Comp::approve: amount exceeds 96 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_32dab9ece0397c38c85244ed755f6110088fb13d43a7e9d6809da7619813d0fe","typeString":"literal_string \"Comp::approve: amount exceeds 96 bits\""}],"id":15312,"name":"safe96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15961,"src":"5302:6:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint96_$","typeString":"function (uint256,string memory) pure returns (uint96)"}},"id":15315,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5302:58:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"VariableDeclarationStatement","src":"5286:74:23"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":15326,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":15319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":15317,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15298,"src":"5375:7:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"id":15318,"name":"src","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15288,"src":"5386:3:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5375:14:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint96","typeString":"uint96"},"id":15325,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":15320,"name":"spenderAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15303,"src":"5393:16:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":15323,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"5420:2:23","subExpression":{"argumentTypes":null,"hexValue":"31","id":15322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5421:1:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"id":15321,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5413:6:23","typeDescriptions":{"typeIdentifier":"t_type$_t_uint96_$","typeString":"type(uint96)"},"typeName":"uint96"},"id":15324,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5413:10:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"5393:30:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5375:48:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":15350,"nodeType":"IfStatement","src":"5371:306:23","trueBody":{"id":15349,"nodeType":"Block","src":"5425:252:23","statements":[{"assignments":[15328],"declarations":[{"constant":false,"id":15328,"name":"newAllowance","nodeType":"VariableDeclaration","scope":15349,"src":"5439:19:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":15327,"name":"uint96","nodeType":"ElementaryTypeName","src":"5439:6:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"value":null,"visibility":"internal"}],"id":15334,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":15330,"name":"spenderAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15303,"src":"5467:16:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"argumentTypes":null,"id":15331,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15311,"src":"5485:6:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"argumentTypes":null,"hexValue":"436f6d703a3a7472616e7366657246726f6d3a207472616e7366657220616d6f756e742065786365656473207370656e64657220616c6c6f77616e6365","id":15332,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5493:63:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_b7ac833594da1df58fd15c3b6b55eb20762dba088c48b65ce9d522a789ff2495","typeString":"literal_string \"Comp::transferFrom: transfer amount exceeds spender allowance\""},"value":"Comp::transferFrom: transfer amount exceeds spender allowance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_stringliteral_b7ac833594da1df58fd15c3b6b55eb20762dba088c48b65ce9d522a789ff2495","typeString":"literal_string \"Comp::transferFrom: transfer amount exceeds spender allowance\""}],"id":15329,"name":"sub96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16011,"src":"5461:5:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint96_$_t_uint96_$_t_string_memory_ptr_$returns$_t_uint96_$","typeString":"function (uint96,uint96,string memory) pure returns (uint96)"}},"id":15333,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5461:96:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"VariableDeclarationStatement","src":"5439:118:23"},{"expression":{"argumentTypes":null,"id":15341,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":15335,"name":"allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15087,"src":"5571:10:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint96_$_$","typeString":"mapping(address => mapping(address => uint96))"}},"id":15338,"indexExpression":{"argumentTypes":null,"id":15336,"name":"src","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15288,"src":"5582:3:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5571:15:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint96_$","typeString":"mapping(address => uint96)"}},"id":15339,"indexExpression":{"argumentTypes":null,"id":15337,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15298,"src":"5587:7:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5571:24:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":15340,"name":"newAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15328,"src":"5598:12:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"5571:39:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"id":15342,"nodeType":"ExpressionStatement","src":"5571:39:23"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":15344,"name":"src","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15288,"src":"5639:3:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":15345,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15298,"src":"5644:7:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":15346,"name":"newAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15328,"src":"5653:12:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint96","typeString":"uint96"}],"id":15343,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15156,"src":"5630:8:23","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":15347,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5630:36:23","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15348,"nodeType":"EmitStatement","src":"5625:41:23"}]}},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":15352,"name":"src","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15288,"src":"5703:3:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":15353,"name":"dst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15290,"src":"5708:3:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":15354,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15311,"src":"5713:6:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint96","typeString":"uint96"}],"id":15351,"name":"_transferTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15735,"src":"5687:15:23","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint96_$returns$__$","typeString":"function (address,address,uint96)"}},"id":15355,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5687:33:23","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15356,"nodeType":"ExpressionStatement","src":"5687:33:23"},{"expression":{"argumentTypes":null,"hexValue":"74727565","id":15357,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5737:4:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":15296,"id":15358,"nodeType":"Return","src":"5730:11:23"}]},"documentation":"@notice Transfer `amount` tokens from `src` to `dst`\n@param src The address of the source account\n@param dst The address of the destination account\n@param rawAmount The number of tokens to transfer\n@return Whether or not the transfer succeeded","id":15360,"implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nodeType":"FunctionDefinition","parameters":{"id":15293,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15288,"name":"src","nodeType":"VariableDeclaration","scope":15360,"src":"5112:11:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15287,"name":"address","nodeType":"ElementaryTypeName","src":"5112:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":15290,"name":"dst","nodeType":"VariableDeclaration","scope":15360,"src":"5125:11:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15289,"name":"address","nodeType":"ElementaryTypeName","src":"5125:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":15292,"name":"rawAmount","nodeType":"VariableDeclaration","scope":15360,"src":"5138:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15291,"name":"uint","nodeType":"ElementaryTypeName","src":"5138:4:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"5111:42:23"},"returnParameters":{"id":15296,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15295,"name":"","nodeType":"VariableDeclaration","scope":15360,"src":"5172:4:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15294,"name":"bool","nodeType":"ElementaryTypeName","src":"5172:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"5171:6:23"},"scope":16024,"src":"5090:658:23","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":{"id":15371,"nodeType":"Block","src":"5934:56:23","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":15366,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"5961:3:23","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":15367,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"5961:10:23","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"id":15368,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15362,"src":"5973:9:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"id":15365,"name":"_delegate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15667,"src":"5951:9:23","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":15369,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5951:32:23","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"functionReturnParameters":15364,"id":15370,"nodeType":"Return","src":"5944:39:23"}]},"documentation":"@notice Delegate votes from `msg.sender` to `delegatee`\n@param delegatee The address to delegate votes to","id":15372,"implemented":true,"kind":"function","modifiers":[],"name":"delegate","nodeType":"FunctionDefinition","parameters":{"id":15363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15362,"name":"delegatee","nodeType":"VariableDeclaration","scope":15372,"src":"5908:17:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15361,"name":"address","nodeType":"ElementaryTypeName","src":"5908:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"5907:19:23"},"returnParameters":{"id":15364,"nodeType":"ParameterList","parameters":[],"src":"5934:0:23"},"scope":16024,"src":"5890:100:23","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":15469,"nodeType":"Block","src":"6518:675:23","statements":[{"assignments":[15388],"declarations":[{"constant":false,"id":15388,"name":"domainSeparator","nodeType":"VariableDeclaration","scope":15469,"src":"6528:23:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15387,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6528:7:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"}],"id":15405,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":15392,"name":"DOMAIN_TYPEHASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15115,"src":"6575:15:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":15395,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15072,"src":"6608:4:23","typeDescriptions":{"typeIdentifier":"t_string_memory","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory","typeString":"string memory"}],"id":15394,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6602:5:23","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":"bytes"},"id":15396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6602:11:23","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":15393,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22544,"src":"6592:9:23","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":15397,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6592:22:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":15398,"name":"getChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16023,"src":"6616:10:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_uint256_$","typeString":"function () pure returns (uint256)"}},"id":15399,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6616:12:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":15401,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22664,"src":"6638:4:23","typeDescriptions":{"typeIdentifier":"t_contract$_Comp_$16024","typeString":"contract Comp"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Comp_$16024","typeString":"contract Comp"}],"id":15400,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6630:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":15402,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6630:13:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":15390,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22537,"src":"6564:3:23","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":15391,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","referencedDeclaration":null,"src":"6564:10:23","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":15403,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6564:80:23","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":15389,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22544,"src":"6554:9:23","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":15404,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6554:91:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"6528:117:23"},{"assignments":[15407],"declarations":[{"constant":false,"id":15407,"name":"structHash","nodeType":"VariableDeclaration","scope":15469,"src":"6655:18:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15406,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6655:7:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"}],"id":15417,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":15411,"name":"DELEGATION_TYPEHASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15120,"src":"6697:19:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":15412,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15374,"src":"6718:9:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":15413,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15376,"src":"6729:5:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":15414,"name":"expiry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15378,"src":"6736:6:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":15409,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22537,"src":"6686:3:23","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":15410,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","referencedDeclaration":null,"src":"6686:10:23","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":15415,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6686:57:23","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":15408,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22544,"src":"6676:9:23","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":15416,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6676:68:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"6655:89:23"},{"assignments":[15419],"declarations":[{"constant":false,"id":15419,"name":"digest","nodeType":"VariableDeclaration","scope":15469,"src":"6754:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15418,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6754:7:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"}],"id":15428,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"1901","id":15423,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6798:10:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541","typeString":"literal_string \"\u0019\u0001\""},"value":"\u0019\u0001"},{"argumentTypes":null,"id":15424,"name":"domainSeparator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15388,"src":"6810:15:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":15425,"name":"structHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15407,"src":"6827:10:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541","typeString":"literal_string \"\u0019\u0001\""},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"argumentTypes":null,"id":15421,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22537,"src":"6781:3:23","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":15422,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","referencedDeclaration":null,"src":"6781:16:23","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":15426,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6781:57:23","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":15420,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22544,"src":"6771:9:23","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":15427,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6771:68:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"6754:85:23"},{"assignments":[15430],"declarations":[{"constant":false,"id":15430,"name":"signatory","nodeType":"VariableDeclaration","scope":15469,"src":"6849:17:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15429,"name":"address","nodeType":"ElementaryTypeName","src":"6849:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":15437,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":15432,"name":"digest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15419,"src":"6879:6:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":15433,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15380,"src":"6887:1:23","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"argumentTypes":null,"id":15434,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15382,"src":"6890:1:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":15435,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15384,"src":"6893:1:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":15431,"name":"ecrecover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22542,"src":"6869:9:23","typeDescriptions":{"typeIdentifier":"t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address)"}},"id":15436,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6869:26:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6849:46:23"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":15443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":15439,"name":"signatory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15430,"src":"6913:9:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":15441,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6934:1:23","subdenomination":null,"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":15440,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6926:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":15442,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6926:10:23","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"6913:23:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"436f6d703a3a64656c656761746542795369673a20696e76616c6964207369676e6174757265","id":15444,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6938:40:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_2af9d25b44c3e789cf7d12e941fc7ef1e32cecdd98da61996de7571027751bd3","typeString":"literal_string \"Comp::delegateBySig: invalid signature\""},"value":"Comp::delegateBySig: invalid signature"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2af9d25b44c3e789cf7d12e941fc7ef1e32cecdd98da61996de7571027751bd3","typeString":"literal_string \"Comp::delegateBySig: invalid signature\""}],"id":15438,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"6905:7:23","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15445,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6905:74:23","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15446,"nodeType":"ExpressionStatement","src":"6905:74:23"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15453,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":15448,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15376,"src":"6997:5:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":15452,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"7006:19:23","subExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":15449,"name":"nonces","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15124,"src":"7006:6:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":15451,"indexExpression":{"argumentTypes":null,"id":15450,"name":"signatory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15430,"src":"7013:9:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7006:17:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6997:28:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"436f6d703a3a64656c656761746542795369673a20696e76616c6964206e6f6e6365","id":15454,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7027:36:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_646cb63637df51b5cf3e35b8d418574ca2fa5dde981ba9f8f5779cfcbbc8a355","typeString":"literal_string \"Comp::delegateBySig: invalid nonce\""},"value":"Comp::delegateBySig: invalid nonce"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_646cb63637df51b5cf3e35b8d418574ca2fa5dde981ba9f8f5779cfcbbc8a355","typeString":"literal_string \"Comp::delegateBySig: invalid nonce\""}],"id":15447,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"6989:7:23","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15455,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6989:75:23","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15456,"nodeType":"ExpressionStatement","src":"6989:75:23"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":15458,"name":"now","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22552,"src":"7082:3:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"argumentTypes":null,"id":15459,"name":"expiry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15378,"src":"7089:6:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7082:13:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"436f6d703a3a64656c656761746542795369673a207369676e61747572652065787069726564","id":15461,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7097:40:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_2e8a87756e5afc73b82eff32f16bb6b10740f4f70e3e129eab06194e30ad3059","typeString":"literal_string \"Comp::delegateBySig: signature expired\""},"value":"Comp::delegateBySig: signature expired"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2e8a87756e5afc73b82eff32f16bb6b10740f4f70e3e129eab06194e30ad3059","typeString":"literal_string \"Comp::delegateBySig: signature expired\""}],"id":15457,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"7074:7:23","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15462,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7074:64:23","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15463,"nodeType":"ExpressionStatement","src":"7074:64:23"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":15465,"name":"signatory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15430,"src":"7165:9:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":15466,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15374,"src":"7176:9:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":15464,"name":"_delegate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15667,"src":"7155:9:23","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":15467,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7155:31:23","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"functionReturnParameters":15386,"id":15468,"nodeType":"Return","src":"7148:38:23"}]},"documentation":"@notice Delegates votes from signatory to `delegatee`\n@param delegatee The address to delegate votes to\n@param nonce The contract state required to match the signature\n@param expiry The time at which to expire the signature\n@param v The recovery byte of the signature\n@param r Half of the ECDSA signature pair\n@param s Half of the ECDSA signature pair","id":15470,"implemented":true,"kind":"function","modifiers":[],"name":"delegateBySig","nodeType":"FunctionDefinition","parameters":{"id":15385,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15374,"name":"delegatee","nodeType":"VariableDeclaration","scope":15470,"src":"6436:17:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15373,"name":"address","nodeType":"ElementaryTypeName","src":"6436:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":15376,"name":"nonce","nodeType":"VariableDeclaration","scope":15470,"src":"6455:10:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15375,"name":"uint","nodeType":"ElementaryTypeName","src":"6455:4:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":15378,"name":"expiry","nodeType":"VariableDeclaration","scope":15470,"src":"6467:11:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15377,"name":"uint","nodeType":"ElementaryTypeName","src":"6467:4:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":15380,"name":"v","nodeType":"VariableDeclaration","scope":15470,"src":"6480:7:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":15379,"name":"uint8","nodeType":"ElementaryTypeName","src":"6480:5:23","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":null,"visibility":"internal"},{"constant":false,"id":15382,"name":"r","nodeType":"VariableDeclaration","scope":15470,"src":"6489:9:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15381,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6489:7:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"},{"constant":false,"id":15384,"name":"s","nodeType":"VariableDeclaration","scope":15470,"src":"6500:9:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15383,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6500:7:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"}],"src":"6435:75:23"},"returnParameters":{"id":15386,"nodeType":"ParameterList","parameters":[],"src":"6518:0:23"},"scope":16024,"src":"6413:780:23","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":15497,"nodeType":"Block","src":"7460:146:23","statements":[{"assignments":[15478],"declarations":[{"constant":false,"id":15478,"name":"nCheckpoints","nodeType":"VariableDeclaration","scope":15497,"src":"7470:19:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":15477,"name":"uint32","nodeType":"ElementaryTypeName","src":"7470:6:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"value":null,"visibility":"internal"}],"id":15482,"initialValue":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":15479,"name":"numCheckpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15110,"src":"7492:14:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint32_$","typeString":"mapping(address => uint32)"}},"id":15481,"indexExpression":{"argumentTypes":null,"id":15480,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15472,"src":"7507:7:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7492:23:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"VariableDeclarationStatement","src":"7470:45:23"},{"expression":{"argumentTypes":null,"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":15485,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":15483,"name":"nCheckpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15478,"src":"7532:12:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"30","id":15484,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7547:1:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7532:16:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"argumentTypes":null,"hexValue":"30","id":15494,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7598:1:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":15495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7532:67:23","trueExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":15486,"name":"checkpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15106,"src":"7551:11:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15100_storage_$_$","typeString":"mapping(address => mapping(uint32 => struct Comp.Checkpoint storage ref))"}},"id":15488,"indexExpression":{"argumentTypes":null,"id":15487,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15472,"src":"7563:7:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7551:20:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15100_storage_$","typeString":"mapping(uint32 => struct Comp.Checkpoint storage ref)"}},"id":15492,"indexExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":15491,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":15489,"name":"nCheckpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15478,"src":"7572:12:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"hexValue":"31","id":15490,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7587:1:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7572:16:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7551:38:23","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$15100_storage","typeString":"struct Comp.Checkpoint storage ref"}},"id":15493,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"votes","nodeType":"MemberAccess","referencedDeclaration":15099,"src":"7551:44:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"functionReturnParameters":15476,"id":15496,"nodeType":"Return","src":"7525:74:23"}]},"documentation":"@notice Gets the current votes balance for `account`\n@param account The address to get votes balance\n@return The number of current votes for `account`","id":15498,"implemented":true,"kind":"function","modifiers":[],"name":"getCurrentVotes","nodeType":"FunctionDefinition","parameters":{"id":15473,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15472,"name":"account","nodeType":"VariableDeclaration","scope":15498,"src":"7412:15:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15471,"name":"address","nodeType":"ElementaryTypeName","src":"7412:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"7411:17:23"},"returnParameters":{"id":15476,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15475,"name":"","nodeType":"VariableDeclaration","scope":15498,"src":"7452:6:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":15474,"name":"uint96","nodeType":"ElementaryTypeName","src":"7452:6:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"value":null,"visibility":"internal"}],"src":"7451:8:23"},"scope":16024,"src":"7387:219:23","stateMutability":"view","superFunction":null,"visibility":"external"},{"body":{"id":15628,"nodeType":"Block","src":"8115:1099:23","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15511,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":15508,"name":"blockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15502,"src":"8133:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":15509,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22540,"src":"8147:5:23","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":15510,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"number","nodeType":"MemberAccess","referencedDeclaration":null,"src":"8147:12:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8133:26:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"436f6d703a3a6765745072696f72566f7465733a206e6f74207965742064657465726d696e6564","id":15512,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8161:41:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_49387db7fef935f0f28be8b61df0527ef3c11db5acad132a74e4fb5d480e55d0","typeString":"literal_string \"Comp::getPriorVotes: not yet determined\""},"value":"Comp::getPriorVotes: not yet determined"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_49387db7fef935f0f28be8b61df0527ef3c11db5acad132a74e4fb5d480e55d0","typeString":"literal_string \"Comp::getPriorVotes: not yet determined\""}],"id":15507,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"8125:7:23","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15513,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8125:78:23","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15514,"nodeType":"ExpressionStatement","src":"8125:78:23"},{"assignments":[15516],"declarations":[{"constant":false,"id":15516,"name":"nCheckpoints","nodeType":"VariableDeclaration","scope":15628,"src":"8214:19:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":15515,"name":"uint32","nodeType":"ElementaryTypeName","src":"8214:6:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"value":null,"visibility":"internal"}],"id":15520,"initialValue":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":15517,"name":"numCheckpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15110,"src":"8236:14:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint32_$","typeString":"mapping(address => uint32)"}},"id":15519,"indexExpression":{"argumentTypes":null,"id":15518,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15500,"src":"8251:7:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8236:23:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"VariableDeclarationStatement","src":"8214:45:23"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":15523,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":15521,"name":"nCheckpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15516,"src":"8273:12:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":15522,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8289:1:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8273:17:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":15527,"nodeType":"IfStatement","src":"8269:56:23","trueBody":{"id":15526,"nodeType":"Block","src":"8292:33:23","statements":[{"expression":{"argumentTypes":null,"hexValue":"30","id":15524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8313:1:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":15506,"id":15525,"nodeType":"Return","src":"8306:8:23"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15537,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":15528,"name":"checkpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15106,"src":"8382:11:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15100_storage_$_$","typeString":"mapping(address => mapping(uint32 => struct Comp.Checkpoint storage ref))"}},"id":15530,"indexExpression":{"argumentTypes":null,"id":15529,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15500,"src":"8394:7:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8382:20:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15100_storage_$","typeString":"mapping(uint32 => struct Comp.Checkpoint storage ref)"}},"id":15534,"indexExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":15533,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":15531,"name":"nCheckpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15516,"src":"8403:12:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"hexValue":"31","id":15532,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8418:1:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8403:16:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8382:38:23","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$15100_storage","typeString":"struct Comp.Checkpoint storage ref"}},"id":15535,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"fromBlock","nodeType":"MemberAccess","referencedDeclaration":15097,"src":"8382:48:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"argumentTypes":null,"id":15536,"name":"blockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15502,"src":"8434:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8382:63:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":15548,"nodeType":"IfStatement","src":"8378:145:23","trueBody":{"id":15547,"nodeType":"Block","src":"8447:76:23","statements":[{"expression":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":15538,"name":"checkpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15106,"src":"8468:11:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15100_storage_$_$","typeString":"mapping(address => mapping(uint32 => struct Comp.Checkpoint storage ref))"}},"id":15540,"indexExpression":{"argumentTypes":null,"id":15539,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15500,"src":"8480:7:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8468:20:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15100_storage_$","typeString":"mapping(uint32 => struct Comp.Checkpoint storage ref)"}},"id":15544,"indexExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":15543,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":15541,"name":"nCheckpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15516,"src":"8489:12:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"hexValue":"31","id":15542,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8504:1:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8489:16:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8468:38:23","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$15100_storage","typeString":"struct Comp.Checkpoint storage ref"}},"id":15545,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"votes","nodeType":"MemberAccess","referencedDeclaration":15099,"src":"8468:44:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"functionReturnParameters":15506,"id":15546,"nodeType":"Return","src":"8461:51:23"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15556,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":15549,"name":"checkpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15106,"src":"8581:11:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15100_storage_$_$","typeString":"mapping(address => mapping(uint32 => struct Comp.Checkpoint storage ref))"}},"id":15551,"indexExpression":{"argumentTypes":null,"id":15550,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15500,"src":"8593:7:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8581:20:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15100_storage_$","typeString":"mapping(uint32 => struct Comp.Checkpoint storage ref)"}},"id":15553,"indexExpression":{"argumentTypes":null,"hexValue":"30","id":15552,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8602:1:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8581:23:23","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$15100_storage","typeString":"struct Comp.Checkpoint storage ref"}},"id":15554,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"fromBlock","nodeType":"MemberAccess","referencedDeclaration":15097,"src":"8581:33:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"id":15555,"name":"blockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15502,"src":"8617:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8581:47:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":15560,"nodeType":"IfStatement","src":"8577:86:23","trueBody":{"id":15559,"nodeType":"Block","src":"8630:33:23","statements":[{"expression":{"argumentTypes":null,"hexValue":"30","id":15557,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8651:1:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":15506,"id":15558,"nodeType":"Return","src":"8644:8:23"}]}},{"assignments":[15562],"declarations":[{"constant":false,"id":15562,"name":"lower","nodeType":"VariableDeclaration","scope":15628,"src":"8673:12:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":15561,"name":"uint32","nodeType":"ElementaryTypeName","src":"8673:6:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"value":null,"visibility":"internal"}],"id":15564,"initialValue":{"argumentTypes":null,"hexValue":"30","id":15563,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8688:1:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"8673:16:23"},{"assignments":[15566],"declarations":[{"constant":false,"id":15566,"name":"upper","nodeType":"VariableDeclaration","scope":15628,"src":"8699:12:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":15565,"name":"uint32","nodeType":"ElementaryTypeName","src":"8699:6:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"value":null,"visibility":"internal"}],"id":15570,"initialValue":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":15569,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":15567,"name":"nCheckpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15516,"src":"8714:12:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"hexValue":"31","id":15568,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8729:1:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8714:16:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"VariableDeclarationStatement","src":"8699:31:23"},{"body":{"id":15619,"nodeType":"Block","src":"8762:396:23","statements":[{"assignments":[15575],"declarations":[{"constant":false,"id":15575,"name":"center","nodeType":"VariableDeclaration","scope":15619,"src":"8776:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":15574,"name":"uint32","nodeType":"ElementaryTypeName","src":"8776:6:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"value":null,"visibility":"internal"}],"id":15584,"initialValue":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":15583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":15576,"name":"upper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15566,"src":"8792:5:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":15582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"components":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":15579,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":15577,"name":"upper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15566,"src":"8801:5:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"id":15578,"name":"lower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15562,"src":"8809:5:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"8801:13:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"id":15580,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8800:15:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"argumentTypes":null,"hexValue":"32","id":15581,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8818:1:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"8800:19:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"8792:27:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"VariableDeclarationStatement","src":"8776:43:23"},{"assignments":[15586],"declarations":[{"constant":false,"id":15586,"name":"cp","nodeType":"VariableDeclaration","scope":15619,"src":"8860:20:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$15100_memory_ptr","typeString":"struct Comp.Checkpoint"},"typeName":{"contractScope":null,"id":15585,"name":"Checkpoint","nodeType":"UserDefinedTypeName","referencedDeclaration":15100,"src":"8860:10:23","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$15100_storage_ptr","typeString":"struct Comp.Checkpoint"}},"value":null,"visibility":"internal"}],"id":15592,"initialValue":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":15587,"name":"checkpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15106,"src":"8883:11:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15100_storage_$_$","typeString":"mapping(address => mapping(uint32 => struct Comp.Checkpoint storage ref))"}},"id":15589,"indexExpression":{"argumentTypes":null,"id":15588,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15500,"src":"8895:7:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8883:20:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15100_storage_$","typeString":"mapping(uint32 => struct Comp.Checkpoint storage ref)"}},"id":15591,"indexExpression":{"argumentTypes":null,"id":15590,"name":"center","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15575,"src":"8904:6:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8883:28:23","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$15100_storage","typeString":"struct Comp.Checkpoint storage ref"}},"nodeType":"VariableDeclarationStatement","src":"8860:51:23"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":15593,"name":"cp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15586,"src":"8929:2:23","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$15100_memory_ptr","typeString":"struct Comp.Checkpoint memory"}},"id":15594,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"fromBlock","nodeType":"MemberAccess","referencedDeclaration":15097,"src":"8929:12:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":15595,"name":"blockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15502,"src":"8945:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8929:27:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15604,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":15601,"name":"cp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15586,"src":"9016:2:23","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$15100_memory_ptr","typeString":"struct Comp.Checkpoint memory"}},"id":15602,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"fromBlock","nodeType":"MemberAccess","referencedDeclaration":15097,"src":"9016:12:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"id":15603,"name":"blockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15502,"src":"9031:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9016:26:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":15616,"nodeType":"Block","src":"9097:51:23","statements":[{"expression":{"argumentTypes":null,"id":15614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":15610,"name":"upper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15566,"src":"9115:5:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":15613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":15611,"name":"center","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15575,"src":"9123:6:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"hexValue":"31","id":15612,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9132:1:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9123:10:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"9115:18:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":15615,"nodeType":"ExpressionStatement","src":"9115:18:23"}]},"id":15617,"nodeType":"IfStatement","src":"9012:136:23","trueBody":{"id":15609,"nodeType":"Block","src":"9044:47:23","statements":[{"expression":{"argumentTypes":null,"id":15607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":15605,"name":"lower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15562,"src":"9062:5:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":15606,"name":"center","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15575,"src":"9070:6:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"9062:14:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":15608,"nodeType":"ExpressionStatement","src":"9062:14:23"}]}},"id":15618,"nodeType":"IfStatement","src":"8925:223:23","trueBody":{"id":15600,"nodeType":"Block","src":"8958:48:23","statements":[{"expression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":15597,"name":"cp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15586,"src":"8983:2:23","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$15100_memory_ptr","typeString":"struct Comp.Checkpoint memory"}},"id":15598,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"votes","nodeType":"MemberAccess","referencedDeclaration":15099,"src":"8983:8:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"functionReturnParameters":15506,"id":15599,"nodeType":"Return","src":"8976:15:23"}]}}]},"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":15573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":15571,"name":"upper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15566,"src":"8747:5:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"id":15572,"name":"lower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15562,"src":"8755:5:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"8747:13:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15620,"nodeType":"WhileStatement","src":"8740:418:23"},{"expression":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":15621,"name":"checkpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15106,"src":"9174:11:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15100_storage_$_$","typeString":"mapping(address => mapping(uint32 => struct Comp.Checkpoint storage ref))"}},"id":15623,"indexExpression":{"argumentTypes":null,"id":15622,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15500,"src":"9186:7:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9174:20:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15100_storage_$","typeString":"mapping(uint32 => struct Comp.Checkpoint storage ref)"}},"id":15625,"indexExpression":{"argumentTypes":null,"id":15624,"name":"lower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15562,"src":"9195:5:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9174:27:23","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$15100_storage","typeString":"struct Comp.Checkpoint storage ref"}},"id":15626,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"votes","nodeType":"MemberAccess","referencedDeclaration":15099,"src":"9174:33:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"functionReturnParameters":15506,"id":15627,"nodeType":"Return","src":"9167:40:23"}]},"documentation":"@notice Determine the prior number of votes for an account as of a block number\n@dev Block number must be a finalized block or else this function will revert to prevent misinformation.\n@param account The address of the account to check\n@param blockNumber The block number to get the vote balance at\n@return The number of votes the account had as of the given block","id":15629,"implemented":true,"kind":"function","modifiers":[],"name":"getPriorVotes","nodeType":"FunctionDefinition","parameters":{"id":15503,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15500,"name":"account","nodeType":"VariableDeclaration","scope":15629,"src":"8051:15:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15499,"name":"address","nodeType":"ElementaryTypeName","src":"8051:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":15502,"name":"blockNumber","nodeType":"VariableDeclaration","scope":15629,"src":"8068:16:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15501,"name":"uint","nodeType":"ElementaryTypeName","src":"8068:4:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"8050:35:23"},"returnParameters":{"id":15506,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15505,"name":"","nodeType":"VariableDeclaration","scope":15629,"src":"8107:6:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":15504,"name":"uint96","nodeType":"ElementaryTypeName","src":"8107:6:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"value":null,"visibility":"internal"}],"src":"8106:8:23"},"scope":16024,"src":"8028:1186:23","stateMutability":"view","superFunction":null,"visibility":"public"},{"body":{"id":15666,"nodeType":"Block","src":"9286:301:23","statements":[{"assignments":[15637],"declarations":[{"constant":false,"id":15637,"name":"currentDelegate","nodeType":"VariableDeclaration","scope":15666,"src":"9296:23:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15636,"name":"address","nodeType":"ElementaryTypeName","src":"9296:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":15641,"initialValue":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":15638,"name":"delegates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15095,"src":"9322:9:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":15640,"indexExpression":{"argumentTypes":null,"id":15639,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15631,"src":"9332:9:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9322:20:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"9296:46:23"},{"assignments":[15643],"declarations":[{"constant":false,"id":15643,"name":"delegatorBalance","nodeType":"VariableDeclaration","scope":15666,"src":"9352:23:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":15642,"name":"uint96","nodeType":"ElementaryTypeName","src":"9352:6:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"value":null,"visibility":"internal"}],"id":15647,"initialValue":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":15644,"name":"balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15091,"src":"9378:8:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint96_$","typeString":"mapping(address => uint96)"}},"id":15646,"indexExpression":{"argumentTypes":null,"id":15645,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15631,"src":"9387:9:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9378:19:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"VariableDeclarationStatement","src":"9352:45:23"},{"expression":{"argumentTypes":null,"id":15652,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":15648,"name":"delegates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15095,"src":"9407:9:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":15650,"indexExpression":{"argumentTypes":null,"id":15649,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15631,"src":"9417:9:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9407:20:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":15651,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15633,"src":"9430:9:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9407:32:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":15653,"nodeType":"ExpressionStatement","src":"9407:32:23"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":15655,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15631,"src":"9471:9:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":15656,"name":"currentDelegate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15637,"src":"9482:15:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":15657,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15633,"src":"9499:9:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":15654,"name":"DelegateChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15132,"src":"9455:15:23","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$returns$__$","typeString":"function (address,address,address)"}},"id":15658,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9455:54:23","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15659,"nodeType":"EmitStatement","src":"9450:59:23"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":15661,"name":"currentDelegate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15637,"src":"9535:15:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":15662,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15633,"src":"9552:9:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":15663,"name":"delegatorBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15643,"src":"9563:16:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint96","typeString":"uint96"}],"id":15660,"name":"_moveDelegates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15842,"src":"9520:14:23","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint96_$returns$__$","typeString":"function (address,address,uint96)"}},"id":15664,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9520:60:23","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15665,"nodeType":"ExpressionStatement","src":"9520:60:23"}]},"documentation":null,"id":15667,"implemented":true,"kind":"function","modifiers":[],"name":"_delegate","nodeType":"FunctionDefinition","parameters":{"id":15634,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15631,"name":"delegator","nodeType":"VariableDeclaration","scope":15667,"src":"9239:17:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15630,"name":"address","nodeType":"ElementaryTypeName","src":"9239:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":15633,"name":"delegatee","nodeType":"VariableDeclaration","scope":15667,"src":"9258:17:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15632,"name":"address","nodeType":"ElementaryTypeName","src":"9258:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"9238:38:23"},"returnParameters":{"id":15635,"nodeType":"ParameterList","parameters":[],"src":"9286:0:23"},"scope":16024,"src":"9220:367:23","stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},{"body":{"id":15734,"nodeType":"Block","src":"9668:530:23","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":15681,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":15677,"name":"src","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15669,"src":"9686:3:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":15679,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9701:1:23","subdenomination":null,"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":15678,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9693:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":15680,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9693:10:23","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"9686:17:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"436f6d703a3a5f7472616e73666572546f6b656e733a2063616e6e6f74207472616e736665722066726f6d20746865207a65726f2061646472657373","id":15682,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9705:62:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_a1f9ee8b9464145aa6c6c80f5dd3de0ed75b63050c7ed5dda64f4dfa66ae889e","typeString":"literal_string \"Comp::_transferTokens: cannot transfer from the zero address\""},"value":"Comp::_transferTokens: cannot transfer from the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a1f9ee8b9464145aa6c6c80f5dd3de0ed75b63050c7ed5dda64f4dfa66ae889e","typeString":"literal_string \"Comp::_transferTokens: cannot transfer from the zero address\""}],"id":15676,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"9678:7:23","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15683,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9678:90:23","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15684,"nodeType":"ExpressionStatement","src":"9678:90:23"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":15690,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":15686,"name":"dst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15671,"src":"9786:3:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":15688,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9801:1:23","subdenomination":null,"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":15687,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9793:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":15689,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9793:10:23","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"9786:17:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"436f6d703a3a5f7472616e73666572546f6b656e733a2063616e6e6f74207472616e7366657220746f20746865207a65726f2061646472657373","id":15691,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9805:60:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_6dfd73e095121fac86dfcecda88ee2e5a2c4c80da47692a4520dec08a942eef4","typeString":"literal_string \"Comp::_transferTokens: cannot transfer to the zero address\""},"value":"Comp::_transferTokens: cannot transfer to the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6dfd73e095121fac86dfcecda88ee2e5a2c4c80da47692a4520dec08a942eef4","typeString":"literal_string \"Comp::_transferTokens: cannot transfer to the zero address\""}],"id":15685,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"9778:7:23","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15692,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9778:88:23","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15693,"nodeType":"ExpressionStatement","src":"9778:88:23"},{"expression":{"argumentTypes":null,"id":15704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":15694,"name":"balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15091,"src":"9877:8:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint96_$","typeString":"mapping(address => uint96)"}},"id":15696,"indexExpression":{"argumentTypes":null,"id":15695,"name":"src","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15669,"src":"9886:3:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9877:13:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":15698,"name":"balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15091,"src":"9899:8:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint96_$","typeString":"mapping(address => uint96)"}},"id":15700,"indexExpression":{"argumentTypes":null,"id":15699,"name":"src","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15669,"src":"9908:3:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9899:13:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"argumentTypes":null,"id":15701,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15673,"src":"9914:6:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"argumentTypes":null,"hexValue":"436f6d703a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e7420657863656564732062616c616e6365","id":15702,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9922:56:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_20f75e61dae66bd43cc4d6e74412a2a0dfc4c34b4746776eb4e12c627179461c","typeString":"literal_string \"Comp::_transferTokens: transfer amount exceeds balance\""},"value":"Comp::_transferTokens: transfer amount exceeds balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_stringliteral_20f75e61dae66bd43cc4d6e74412a2a0dfc4c34b4746776eb4e12c627179461c","typeString":"literal_string \"Comp::_transferTokens: transfer amount exceeds balance\""}],"id":15697,"name":"sub96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16011,"src":"9893:5:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint96_$_t_uint96_$_t_string_memory_ptr_$returns$_t_uint96_$","typeString":"function (uint96,uint96,string memory) pure returns (uint96)"}},"id":15703,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9893:86:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"9877:102:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"id":15705,"nodeType":"ExpressionStatement","src":"9877:102:23"},{"expression":{"argumentTypes":null,"id":15716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":15706,"name":"balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15091,"src":"9989:8:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint96_$","typeString":"mapping(address => uint96)"}},"id":15708,"indexExpression":{"argumentTypes":null,"id":15707,"name":"dst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15671,"src":"9998:3:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9989:13:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":15710,"name":"balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15091,"src":"10011:8:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint96_$","typeString":"mapping(address => uint96)"}},"id":15712,"indexExpression":{"argumentTypes":null,"id":15711,"name":"dst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15671,"src":"10020:3:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10011:13:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"argumentTypes":null,"id":15713,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15673,"src":"10026:6:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"argumentTypes":null,"hexValue":"436f6d703a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e74206f766572666c6f7773","id":15714,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10034:50:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_838ec7826d8a7e194a0b4c14b8572b8a97cbf1ec9a1dd8f0dc2ca0dbf889365c","typeString":"literal_string \"Comp::_transferTokens: transfer amount overflows\""},"value":"Comp::_transferTokens: transfer amount overflows"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_stringliteral_838ec7826d8a7e194a0b4c14b8572b8a97cbf1ec9a1dd8f0dc2ca0dbf889365c","typeString":"literal_string \"Comp::_transferTokens: transfer amount overflows\""}],"id":15709,"name":"add96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15988,"src":"10005:5:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint96_$_t_uint96_$_t_string_memory_ptr_$returns$_t_uint96_$","typeString":"function (uint96,uint96,string memory) pure returns (uint96)"}},"id":15715,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10005:80:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"9989:96:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"id":15717,"nodeType":"ExpressionStatement","src":"9989:96:23"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":15719,"name":"src","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15669,"src":"10109:3:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":15720,"name":"dst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15671,"src":"10114:3:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":15721,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15673,"src":"10119:6:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint96","typeString":"uint96"}],"id":15718,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15148,"src":"10100:8:23","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":15722,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10100:26:23","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15723,"nodeType":"EmitStatement","src":"10095:31:23"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":15725,"name":"delegates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15095,"src":"10152:9:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":15727,"indexExpression":{"argumentTypes":null,"id":15726,"name":"src","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15669,"src":"10162:3:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10152:14:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":15728,"name":"delegates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15095,"src":"10168:9:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":15730,"indexExpression":{"argumentTypes":null,"id":15729,"name":"dst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15671,"src":"10178:3:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10168:14:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":15731,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15673,"src":"10184:6:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint96","typeString":"uint96"}],"id":15724,"name":"_moveDelegates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15842,"src":"10137:14:23","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint96_$returns$__$","typeString":"function (address,address,uint96)"}},"id":15732,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10137:54:23","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15733,"nodeType":"ExpressionStatement","src":"10137:54:23"}]},"documentation":null,"id":15735,"implemented":true,"kind":"function","modifiers":[],"name":"_transferTokens","nodeType":"FunctionDefinition","parameters":{"id":15674,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15669,"name":"src","nodeType":"VariableDeclaration","scope":15735,"src":"9618:11:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15668,"name":"address","nodeType":"ElementaryTypeName","src":"9618:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":15671,"name":"dst","nodeType":"VariableDeclaration","scope":15735,"src":"9631:11:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15670,"name":"address","nodeType":"ElementaryTypeName","src":"9631:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":15673,"name":"amount","nodeType":"VariableDeclaration","scope":15735,"src":"9644:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":15672,"name":"uint96","nodeType":"ElementaryTypeName","src":"9644:6:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"value":null,"visibility":"internal"}],"src":"9617:41:23"},"returnParameters":{"id":15675,"nodeType":"ParameterList","parameters":[],"src":"9668:0:23"},"scope":16024,"src":"9593:605:23","stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},{"body":{"id":15841,"nodeType":"Block","src":"10284:843:23","statements":[{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":15750,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":15746,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":15744,"name":"srcRep","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15737,"src":"10298:6:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"id":15745,"name":"dstRep","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15739,"src":"10308:6:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10298:16:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint96","typeString":"uint96"},"id":15749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":15747,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15741,"src":"10318:6:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"30","id":15748,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10327:1:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10318:10:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"10298:30:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":15840,"nodeType":"IfStatement","src":"10294:827:23","trueBody":{"id":15839,"nodeType":"Block","src":"10330:791:23","statements":[{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":15755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":15751,"name":"srcRep","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15737,"src":"10348:6:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":15753,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10366:1:23","subdenomination":null,"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":15752,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10358:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":15754,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10358:10:23","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"10348:20:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":15794,"nodeType":"IfStatement","src":"10344:377:23","trueBody":{"id":15793,"nodeType":"Block","src":"10370:351:23","statements":[{"assignments":[15757],"declarations":[{"constant":false,"id":15757,"name":"srcRepNum","nodeType":"VariableDeclaration","scope":15793,"src":"10388:16:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":15756,"name":"uint32","nodeType":"ElementaryTypeName","src":"10388:6:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"value":null,"visibility":"internal"}],"id":15761,"initialValue":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":15758,"name":"numCheckpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15110,"src":"10407:14:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint32_$","typeString":"mapping(address => uint32)"}},"id":15760,"indexExpression":{"argumentTypes":null,"id":15759,"name":"srcRep","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15737,"src":"10422:6:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10407:22:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"VariableDeclarationStatement","src":"10388:41:23"},{"assignments":[15763],"declarations":[{"constant":false,"id":15763,"name":"srcRepOld","nodeType":"VariableDeclaration","scope":15793,"src":"10447:16:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":15762,"name":"uint96","nodeType":"ElementaryTypeName","src":"10447:6:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"value":null,"visibility":"internal"}],"id":15777,"initialValue":{"argumentTypes":null,"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":15766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":15764,"name":"srcRepNum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15757,"src":"10466:9:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"30","id":15765,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10478:1:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10466:13:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"argumentTypes":null,"hexValue":"30","id":15775,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10525:1:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":15776,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10466:60:23","trueExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":15767,"name":"checkpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15106,"src":"10482:11:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15100_storage_$_$","typeString":"mapping(address => mapping(uint32 => struct Comp.Checkpoint storage ref))"}},"id":15769,"indexExpression":{"argumentTypes":null,"id":15768,"name":"srcRep","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15737,"src":"10494:6:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10482:19:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15100_storage_$","typeString":"mapping(uint32 => struct Comp.Checkpoint storage ref)"}},"id":15773,"indexExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":15772,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":15770,"name":"srcRepNum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15757,"src":"10502:9:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"hexValue":"31","id":15771,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10514:1:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10502:13:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10482:34:23","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$15100_storage","typeString":"struct Comp.Checkpoint storage ref"}},"id":15774,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"votes","nodeType":"MemberAccess","referencedDeclaration":15099,"src":"10482:40:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"VariableDeclarationStatement","src":"10447:79:23"},{"assignments":[15779],"declarations":[{"constant":false,"id":15779,"name":"srcRepNew","nodeType":"VariableDeclaration","scope":15793,"src":"10544:16:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":15778,"name":"uint96","nodeType":"ElementaryTypeName","src":"10544:6:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"value":null,"visibility":"internal"}],"id":15785,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":15781,"name":"srcRepOld","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15763,"src":"10569:9:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"argumentTypes":null,"id":15782,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15741,"src":"10580:6:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"argumentTypes":null,"hexValue":"436f6d703a3a5f6d6f7665566f7465733a20766f746520616d6f756e7420756e646572666c6f7773","id":15783,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10588:42:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_79bf2f3c2009651b33d37efb8a65657c3e203b2c36f61068863922cb9e64a77a","typeString":"literal_string \"Comp::_moveVotes: vote amount underflows\""},"value":"Comp::_moveVotes: vote amount underflows"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_stringliteral_79bf2f3c2009651b33d37efb8a65657c3e203b2c36f61068863922cb9e64a77a","typeString":"literal_string \"Comp::_moveVotes: vote amount underflows\""}],"id":15780,"name":"sub96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16011,"src":"10563:5:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint96_$_t_uint96_$_t_string_memory_ptr_$returns$_t_uint96_$","typeString":"function (uint96,uint96,string memory) pure returns (uint96)"}},"id":15784,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10563:68:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"VariableDeclarationStatement","src":"10544:87:23"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":15787,"name":"srcRep","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15737,"src":"10666:6:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":15788,"name":"srcRepNum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15757,"src":"10674:9:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"argumentTypes":null,"id":15789,"name":"srcRepOld","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15763,"src":"10685:9:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"argumentTypes":null,"id":15790,"name":"srcRepNew","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15779,"src":"10696:9:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_uint96","typeString":"uint96"}],"id":15786,"name":"_writeCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15915,"src":"10649:16:23","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint32_$_t_uint96_$_t_uint96_$returns$__$","typeString":"function (address,uint32,uint96,uint96)"}},"id":15791,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10649:57:23","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15792,"nodeType":"ExpressionStatement","src":"10649:57:23"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":15799,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":15795,"name":"dstRep","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15739,"src":"10739:6:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":15797,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10757:1:23","subdenomination":null,"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":15796,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10749:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":15798,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10749:10:23","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"10739:20:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":15838,"nodeType":"IfStatement","src":"10735:376:23","trueBody":{"id":15837,"nodeType":"Block","src":"10761:350:23","statements":[{"assignments":[15801],"declarations":[{"constant":false,"id":15801,"name":"dstRepNum","nodeType":"VariableDeclaration","scope":15837,"src":"10779:16:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":15800,"name":"uint32","nodeType":"ElementaryTypeName","src":"10779:6:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"value":null,"visibility":"internal"}],"id":15805,"initialValue":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":15802,"name":"numCheckpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15110,"src":"10798:14:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint32_$","typeString":"mapping(address => uint32)"}},"id":15804,"indexExpression":{"argumentTypes":null,"id":15803,"name":"dstRep","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15739,"src":"10813:6:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10798:22:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"VariableDeclarationStatement","src":"10779:41:23"},{"assignments":[15807],"declarations":[{"constant":false,"id":15807,"name":"dstRepOld","nodeType":"VariableDeclaration","scope":15837,"src":"10838:16:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":15806,"name":"uint96","nodeType":"ElementaryTypeName","src":"10838:6:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"value":null,"visibility":"internal"}],"id":15821,"initialValue":{"argumentTypes":null,"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":15810,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":15808,"name":"dstRepNum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15801,"src":"10857:9:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"30","id":15809,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10869:1:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10857:13:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"argumentTypes":null,"hexValue":"30","id":15819,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10916:1:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":15820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10857:60:23","trueExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":15811,"name":"checkpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15106,"src":"10873:11:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15100_storage_$_$","typeString":"mapping(address => mapping(uint32 => struct Comp.Checkpoint storage ref))"}},"id":15813,"indexExpression":{"argumentTypes":null,"id":15812,"name":"dstRep","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15739,"src":"10885:6:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10873:19:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15100_storage_$","typeString":"mapping(uint32 => struct Comp.Checkpoint storage ref)"}},"id":15817,"indexExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":15816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":15814,"name":"dstRepNum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15801,"src":"10893:9:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"hexValue":"31","id":15815,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10905:1:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10893:13:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10873:34:23","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$15100_storage","typeString":"struct Comp.Checkpoint storage ref"}},"id":15818,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"votes","nodeType":"MemberAccess","referencedDeclaration":15099,"src":"10873:40:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"VariableDeclarationStatement","src":"10838:79:23"},{"assignments":[15823],"declarations":[{"constant":false,"id":15823,"name":"dstRepNew","nodeType":"VariableDeclaration","scope":15837,"src":"10935:16:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":15822,"name":"uint96","nodeType":"ElementaryTypeName","src":"10935:6:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"value":null,"visibility":"internal"}],"id":15829,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":15825,"name":"dstRepOld","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15807,"src":"10960:9:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"argumentTypes":null,"id":15826,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15741,"src":"10971:6:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"argumentTypes":null,"hexValue":"436f6d703a3a5f6d6f7665566f7465733a20766f746520616d6f756e74206f766572666c6f7773","id":15827,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10979:41:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_cac5f7635b67aba587752f385d4aaa6fe7d1615e382cd95e6c1ae76525be695e","typeString":"literal_string \"Comp::_moveVotes: vote amount overflows\""},"value":"Comp::_moveVotes: vote amount overflows"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_stringliteral_cac5f7635b67aba587752f385d4aaa6fe7d1615e382cd95e6c1ae76525be695e","typeString":"literal_string \"Comp::_moveVotes: vote amount overflows\""}],"id":15824,"name":"add96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15988,"src":"10954:5:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint96_$_t_uint96_$_t_string_memory_ptr_$returns$_t_uint96_$","typeString":"function (uint96,uint96,string memory) pure returns (uint96)"}},"id":15828,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10954:67:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"VariableDeclarationStatement","src":"10935:86:23"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":15831,"name":"dstRep","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15739,"src":"11056:6:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":15832,"name":"dstRepNum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15801,"src":"11064:9:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"argumentTypes":null,"id":15833,"name":"dstRepOld","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15807,"src":"11075:9:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"argumentTypes":null,"id":15834,"name":"dstRepNew","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15823,"src":"11086:9:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_uint96","typeString":"uint96"}],"id":15830,"name":"_writeCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15915,"src":"11039:16:23","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint32_$_t_uint96_$_t_uint96_$returns$__$","typeString":"function (address,uint32,uint96,uint96)"}},"id":15835,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11039:57:23","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15836,"nodeType":"ExpressionStatement","src":"11039:57:23"}]}}]}}]},"documentation":null,"id":15842,"implemented":true,"kind":"function","modifiers":[],"name":"_moveDelegates","nodeType":"FunctionDefinition","parameters":{"id":15742,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15737,"name":"srcRep","nodeType":"VariableDeclaration","scope":15842,"src":"10228:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15736,"name":"address","nodeType":"ElementaryTypeName","src":"10228:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":15739,"name":"dstRep","nodeType":"VariableDeclaration","scope":15842,"src":"10244:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15738,"name":"address","nodeType":"ElementaryTypeName","src":"10244:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":15741,"name":"amount","nodeType":"VariableDeclaration","scope":15842,"src":"10260:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":15740,"name":"uint96","nodeType":"ElementaryTypeName","src":"10260:6:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"value":null,"visibility":"internal"}],"src":"10227:47:23"},"returnParameters":{"id":15743,"nodeType":"ParameterList","parameters":[],"src":"10284:0:23"},"scope":16024,"src":"10204:923:23","stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},{"body":{"id":15914,"nodeType":"Block","src":"11242:509:23","statements":[{"assignments":[15854],"declarations":[{"constant":false,"id":15854,"name":"blockNumber","nodeType":"VariableDeclaration","scope":15914,"src":"11250:18:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":15853,"name":"uint32","nodeType":"ElementaryTypeName","src":"11250:6:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"value":null,"visibility":"internal"}],"id":15860,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":15856,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22540,"src":"11278:5:23","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":15857,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"number","nodeType":"MemberAccess","referencedDeclaration":null,"src":"11278:12:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"436f6d703a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d62657220657863656564732033322062697473","id":15858,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11292:54:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_6426c6c63f7c8daecf0b8a35bfe8c0f43dc9621d39cb2bf0c2cd35cc9db8742f","typeString":"literal_string \"Comp::_writeCheckpoint: block number exceeds 32 bits\""},"value":"Comp::_writeCheckpoint: block number exceeds 32 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_6426c6c63f7c8daecf0b8a35bfe8c0f43dc9621d39cb2bf0c2cd35cc9db8742f","typeString":"literal_string \"Comp::_writeCheckpoint: block number exceeds 32 bits\""}],"id":15855,"name":"safe32","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15938,"src":"11271:6:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint32_$","typeString":"function (uint256,string memory) pure returns (uint32)"}},"id":15859,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11271:76:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"VariableDeclarationStatement","src":"11250:97:23"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":15874,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":15863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":15861,"name":"nCheckpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15846,"src":"11360:12:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"30","id":15862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11375:1:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11360:16:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":15873,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":15864,"name":"checkpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15106,"src":"11380:11:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15100_storage_$_$","typeString":"mapping(address => mapping(uint32 => struct Comp.Checkpoint storage ref))"}},"id":15866,"indexExpression":{"argumentTypes":null,"id":15865,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15844,"src":"11392:9:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11380:22:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15100_storage_$","typeString":"mapping(uint32 => struct Comp.Checkpoint storage ref)"}},"id":15870,"indexExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":15869,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":15867,"name":"nCheckpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15846,"src":"11403:12:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"hexValue":"31","id":15868,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11418:1:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11403:16:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11380:40:23","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$15100_storage","typeString":"struct Comp.Checkpoint storage ref"}},"id":15871,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"fromBlock","nodeType":"MemberAccess","referencedDeclaration":15097,"src":"11380:50:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":15872,"name":"blockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15854,"src":"11434:11:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"11380:65:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"11360:85:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":15906,"nodeType":"Block","src":"11531:149:23","statements":[{"expression":{"argumentTypes":null,"id":15896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":15887,"name":"checkpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15106,"src":"11543:11:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15100_storage_$_$","typeString":"mapping(address => mapping(uint32 => struct Comp.Checkpoint storage ref))"}},"id":15890,"indexExpression":{"argumentTypes":null,"id":15888,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15844,"src":"11555:9:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11543:22:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15100_storage_$","typeString":"mapping(uint32 => struct Comp.Checkpoint storage ref)"}},"id":15891,"indexExpression":{"argumentTypes":null,"id":15889,"name":"nCheckpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15846,"src":"11566:12:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11543:36:23","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$15100_storage","typeString":"struct Comp.Checkpoint storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":15893,"name":"blockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15854,"src":"11593:11:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"argumentTypes":null,"id":15894,"name":"newVotes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15850,"src":"11606:8:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint96","typeString":"uint96"}],"id":15892,"name":"Checkpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15100,"src":"11582:10:23","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Checkpoint_$15100_storage_ptr_$","typeString":"type(struct Comp.Checkpoint storage pointer)"}},"id":15895,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11582:33:23","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$15100_memory","typeString":"struct Comp.Checkpoint memory"}},"src":"11543:72:23","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$15100_storage","typeString":"struct Comp.Checkpoint storage ref"}},"id":15897,"nodeType":"ExpressionStatement","src":"11543:72:23"},{"expression":{"argumentTypes":null,"id":15904,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":15898,"name":"numCheckpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15110,"src":"11627:14:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint32_$","typeString":"mapping(address => uint32)"}},"id":15900,"indexExpression":{"argumentTypes":null,"id":15899,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15844,"src":"11642:9:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11627:25:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":15903,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":15901,"name":"nCheckpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15846,"src":"11655:12:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"argumentTypes":null,"hexValue":"31","id":15902,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11670:1:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11655:16:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"11627:44:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":15905,"nodeType":"ExpressionStatement","src":"11627:44:23"}]},"id":15907,"nodeType":"IfStatement","src":"11356:324:23","trueBody":{"id":15886,"nodeType":"Block","src":"11447:78:23","statements":[{"expression":{"argumentTypes":null,"id":15884,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":15875,"name":"checkpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15106,"src":"11459:11:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15100_storage_$_$","typeString":"mapping(address => mapping(uint32 => struct Comp.Checkpoint storage ref))"}},"id":15880,"indexExpression":{"argumentTypes":null,"id":15876,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15844,"src":"11471:9:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11459:22:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15100_storage_$","typeString":"mapping(uint32 => struct Comp.Checkpoint storage ref)"}},"id":15881,"indexExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":15879,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":15877,"name":"nCheckpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15846,"src":"11482:12:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"hexValue":"31","id":15878,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11497:1:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11482:16:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11459:40:23","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$15100_storage","typeString":"struct Comp.Checkpoint storage ref"}},"id":15882,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"votes","nodeType":"MemberAccess","referencedDeclaration":15099,"src":"11459:46:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":15883,"name":"newVotes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15850,"src":"11508:8:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"11459:57:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"id":15885,"nodeType":"ExpressionStatement","src":"11459:57:23"}]}},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":15909,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15844,"src":"11714:9:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":15910,"name":"oldVotes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15848,"src":"11725:8:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"argumentTypes":null,"id":15911,"name":"newVotes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15850,"src":"11735:8:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_uint96","typeString":"uint96"}],"id":15908,"name":"DelegateVotesChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15140,"src":"11693:20:23","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256)"}},"id":15912,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11693:51:23","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15913,"nodeType":"EmitStatement","src":"11688:56:23"}]},"documentation":null,"id":15915,"implemented":true,"kind":"function","modifiers":[],"name":"_writeCheckpoint","nodeType":"FunctionDefinition","parameters":{"id":15851,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15844,"name":"delegatee","nodeType":"VariableDeclaration","scope":15915,"src":"11159:17:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15843,"name":"address","nodeType":"ElementaryTypeName","src":"11159:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":15846,"name":"nCheckpoints","nodeType":"VariableDeclaration","scope":15915,"src":"11178:19:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":15845,"name":"uint32","nodeType":"ElementaryTypeName","src":"11178:6:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"value":null,"visibility":"internal"},{"constant":false,"id":15848,"name":"oldVotes","nodeType":"VariableDeclaration","scope":15915,"src":"11199:15:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":15847,"name":"uint96","nodeType":"ElementaryTypeName","src":"11199:6:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"value":null,"visibility":"internal"},{"constant":false,"id":15850,"name":"newVotes","nodeType":"VariableDeclaration","scope":15915,"src":"11216:15:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":15849,"name":"uint96","nodeType":"ElementaryTypeName","src":"11216:6:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"value":null,"visibility":"internal"}],"src":"11158:74:23"},"returnParameters":{"id":15852,"nodeType":"ParameterList","parameters":[],"src":"11242:0:23"},"scope":16024,"src":"11133:618:23","stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},{"body":{"id":15937,"nodeType":"Block","src":"11840:75:23","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15929,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":15925,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15917,"src":"11858:1:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"},"id":15928,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"hexValue":"32","id":15926,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11862:1:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"argumentTypes":null,"hexValue":"3332","id":15927,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11865:2:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"11862:5:23","typeDescriptions":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"}},"src":"11858:9:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"id":15930,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15919,"src":"11869:12:23","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":15924,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"11850:7:23","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15931,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11850:32:23","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15932,"nodeType":"ExpressionStatement","src":"11850:32:23"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":15934,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15917,"src":"11906:1:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15933,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11899:6:23","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":"uint32"},"id":15935,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11899:9:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"functionReturnParameters":15923,"id":15936,"nodeType":"Return","src":"11892:16:23"}]},"documentation":null,"id":15938,"implemented":true,"kind":"function","modifiers":[],"name":"safe32","nodeType":"FunctionDefinition","parameters":{"id":15920,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15917,"name":"n","nodeType":"VariableDeclaration","scope":15938,"src":"11773:6:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15916,"name":"uint","nodeType":"ElementaryTypeName","src":"11773:4:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":15919,"name":"errorMessage","nodeType":"VariableDeclaration","scope":15938,"src":"11781:26:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":15918,"name":"string","nodeType":"ElementaryTypeName","src":"11781:6:23","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":null,"visibility":"internal"}],"src":"11772:36:23"},"returnParameters":{"id":15923,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15922,"name":"","nodeType":"VariableDeclaration","scope":15938,"src":"11832:6:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":15921,"name":"uint32","nodeType":"ElementaryTypeName","src":"11832:6:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"value":null,"visibility":"internal"}],"src":"11831:8:23"},"scope":16024,"src":"11757:158:23","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":15960,"nodeType":"Block","src":"12004:75:23","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15952,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":15948,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15940,"src":"12022:1:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_79228162514264337593543950336_by_1","typeString":"int_const 79228162514264337593543950336"},"id":15951,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"hexValue":"32","id":15949,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12026:1:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"argumentTypes":null,"hexValue":"3936","id":15950,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12029:2:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"96"},"src":"12026:5:23","typeDescriptions":{"typeIdentifier":"t_rational_79228162514264337593543950336_by_1","typeString":"int_const 79228162514264337593543950336"}},"src":"12022:9:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"id":15953,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15942,"src":"12033:12:23","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":15947,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"12014:7:23","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15954,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12014:32:23","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15955,"nodeType":"ExpressionStatement","src":"12014:32:23"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":15957,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15940,"src":"12070:1:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15956,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12063:6:23","typeDescriptions":{"typeIdentifier":"t_type$_t_uint96_$","typeString":"type(uint96)"},"typeName":"uint96"},"id":15958,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12063:9:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"functionReturnParameters":15946,"id":15959,"nodeType":"Return","src":"12056:16:23"}]},"documentation":null,"id":15961,"implemented":true,"kind":"function","modifiers":[],"name":"safe96","nodeType":"FunctionDefinition","parameters":{"id":15943,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15940,"name":"n","nodeType":"VariableDeclaration","scope":15961,"src":"11937:6:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15939,"name":"uint","nodeType":"ElementaryTypeName","src":"11937:4:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":15942,"name":"errorMessage","nodeType":"VariableDeclaration","scope":15961,"src":"11945:26:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":15941,"name":"string","nodeType":"ElementaryTypeName","src":"11945:6:23","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":null,"visibility":"internal"}],"src":"11936:36:23"},"returnParameters":{"id":15946,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15945,"name":"","nodeType":"VariableDeclaration","scope":15961,"src":"11996:6:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":15944,"name":"uint96","nodeType":"ElementaryTypeName","src":"11996:6:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"value":null,"visibility":"internal"}],"src":"11995:8:23"},"scope":16024,"src":"11921:158:23","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":15987,"nodeType":"Block","src":"12179:90:23","statements":[{"assignments":[15973],"declarations":[{"constant":false,"id":15973,"name":"c","nodeType":"VariableDeclaration","scope":15987,"src":"12189:8:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":15972,"name":"uint96","nodeType":"ElementaryTypeName","src":"12189:6:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"value":null,"visibility":"internal"}],"id":15977,"initialValue":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint96","typeString":"uint96"},"id":15976,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":15974,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15963,"src":"12200:1:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"argumentTypes":null,"id":15975,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15965,"src":"12204:1:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"12200:5:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"VariableDeclarationStatement","src":"12189:16:23"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint96","typeString":"uint96"},"id":15981,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":15979,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15973,"src":"12223:1:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"argumentTypes":null,"id":15980,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15963,"src":"12228:1:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"12223:6:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"id":15982,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15967,"src":"12231:12:23","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":15978,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"12215:7:23","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15983,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12215:29:23","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15984,"nodeType":"ExpressionStatement","src":"12215:29:23"},{"expression":{"argumentTypes":null,"id":15985,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15973,"src":"12261:1:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"functionReturnParameters":15971,"id":15986,"nodeType":"Return","src":"12254:8:23"}]},"documentation":null,"id":15988,"implemented":true,"kind":"function","modifiers":[],"name":"add96","nodeType":"FunctionDefinition","parameters":{"id":15968,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15963,"name":"a","nodeType":"VariableDeclaration","scope":15988,"src":"12100:8:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":15962,"name":"uint96","nodeType":"ElementaryTypeName","src":"12100:6:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"value":null,"visibility":"internal"},{"constant":false,"id":15965,"name":"b","nodeType":"VariableDeclaration","scope":15988,"src":"12110:8:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":15964,"name":"uint96","nodeType":"ElementaryTypeName","src":"12110:6:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"value":null,"visibility":"internal"},{"constant":false,"id":15967,"name":"errorMessage","nodeType":"VariableDeclaration","scope":15988,"src":"12120:26:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":15966,"name":"string","nodeType":"ElementaryTypeName","src":"12120:6:23","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":null,"visibility":"internal"}],"src":"12099:48:23"},"returnParameters":{"id":15971,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15970,"name":"","nodeType":"VariableDeclaration","scope":15988,"src":"12171:6:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":15969,"name":"uint96","nodeType":"ElementaryTypeName","src":"12171:6:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"value":null,"visibility":"internal"}],"src":"12170:8:23"},"scope":16024,"src":"12085:184:23","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":16010,"nodeType":"Block","src":"12369:68:23","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint96","typeString":"uint96"},"id":16002,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":16000,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15992,"src":"12387:1:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"argumentTypes":null,"id":16001,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15990,"src":"12392:1:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"12387:6:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"id":16003,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15994,"src":"12395:12:23","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":15999,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"12379:7:23","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":16004,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12379:29:23","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16005,"nodeType":"ExpressionStatement","src":"12379:29:23"},{"expression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint96","typeString":"uint96"},"id":16008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":16006,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15990,"src":"12425:1:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"id":16007,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15992,"src":"12429:1:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"12425:5:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"functionReturnParameters":15998,"id":16009,"nodeType":"Return","src":"12418:12:23"}]},"documentation":null,"id":16011,"implemented":true,"kind":"function","modifiers":[],"name":"sub96","nodeType":"FunctionDefinition","parameters":{"id":15995,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15990,"name":"a","nodeType":"VariableDeclaration","scope":16011,"src":"12290:8:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":15989,"name":"uint96","nodeType":"ElementaryTypeName","src":"12290:6:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"value":null,"visibility":"internal"},{"constant":false,"id":15992,"name":"b","nodeType":"VariableDeclaration","scope":16011,"src":"12300:8:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":15991,"name":"uint96","nodeType":"ElementaryTypeName","src":"12300:6:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"value":null,"visibility":"internal"},{"constant":false,"id":15994,"name":"errorMessage","nodeType":"VariableDeclaration","scope":16011,"src":"12310:26:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":15993,"name":"string","nodeType":"ElementaryTypeName","src":"12310:6:23","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":null,"visibility":"internal"}],"src":"12289:48:23"},"returnParameters":{"id":15998,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15997,"name":"","nodeType":"VariableDeclaration","scope":16011,"src":"12361:6:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":15996,"name":"uint96","nodeType":"ElementaryTypeName","src":"12361:6:23","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"value":null,"visibility":"internal"}],"src":"12360:8:23"},"scope":16024,"src":"12275:162:23","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":16022,"nodeType":"Block","src":"12494:98:23","statements":[{"assignments":[16017],"declarations":[{"constant":false,"id":16017,"name":"chainId","nodeType":"VariableDeclaration","scope":16022,"src":"12504:15:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16016,"name":"uint256","nodeType":"ElementaryTypeName","src":"12504:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":16018,"initialValue":null,"nodeType":"VariableDeclarationStatement","src":"12504:15:23"},{"externalReferences":[{"chainId":{"declaration":16017,"isOffset":false,"isSlot":false,"src":"12540:7:23","valueSize":1}}],"id":16019,"nodeType":"InlineAssembly","operations":"{ chainId := chainid() }","src":"12529:33:23"},{"expression":{"argumentTypes":null,"id":16020,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16017,"src":"12578:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":16015,"id":16021,"nodeType":"Return","src":"12571:14:23"}]},"documentation":null,"id":16023,"implemented":true,"kind":"function","modifiers":[],"name":"getChainId","nodeType":"FunctionDefinition","parameters":{"id":16012,"nodeType":"ParameterList","parameters":[],"src":"12462:2:23"},"returnParameters":{"id":16015,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16014,"name":"","nodeType":"VariableDeclaration","scope":16023,"src":"12488:4:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16013,"name":"uint","nodeType":"ElementaryTypeName","src":"12488:4:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"12487:6:23"},"scope":16024,"src":"12443:149:23","stateMutability":"pure","superFunction":null,"visibility":"internal"}],"scope":16025,"src":"59:12535:23"}],"src":"0:12595:23"},"id":23},"contracts/Governance/GovernorAlpha.sol":{"ast":{"absolutePath":"contracts/Governance/GovernorAlpha.sol","exportedSymbols":{"CompInterface":[17268],"GovernorAlpha":[17194],"TimelockInterface":[17258]},"id":17269,"nodeType":"SourceUnit","nodes":[{"id":16026,"literals":["solidity","0.5",".17"],"nodeType":"PragmaDirective","src":"0:23:24"},{"id":16027,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"24:33:24"},{"baseContracts":[],"contractDependencies":[],"contractKind":"contract","documentation":null,"fullyImplemented":true,"id":17194,"linearizedBaseContracts":[17194],"name":"GovernorAlpha","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":16030,"name":"name","nodeType":"VariableDeclaration","scope":17194,"src":"130:55:24","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory","typeString":"string"},"typeName":{"id":16028,"name":"string","nodeType":"ElementaryTypeName","src":"130:6:24","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"argumentTypes":null,"hexValue":"436f6d706f756e6420476f7665726e6f7220416c706861","id":16029,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"160:25:24","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_f5eb22c2e7100465020c98b00537528808db4fec6eb24c550685a92742247bc5","typeString":"literal_string \"Compound Governor Alpha\""},"value":"Compound Governor Alpha"},"visibility":"public"},{"body":{"id":16037,"nodeType":"Block","src":"374:21:24","statements":[{"expression":{"argumentTypes":null,"hexValue":"343030303030653138","id":16035,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"383:9:24","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_400000000000000000000000_by_1","typeString":"int_const 400000000000000000000000"},"value":"400000e18"},"functionReturnParameters":16034,"id":16036,"nodeType":"Return","src":"376:16:24"}]},"documentation":"@notice The number of votes in support of a proposal required in order for a quorum to be reached and for a vote to succeed","id":16038,"implemented":true,"kind":"function","modifiers":[],"name":"quorumVotes","nodeType":"FunctionDefinition","parameters":{"id":16031,"nodeType":"ParameterList","parameters":[],"src":"344:2:24"},"returnParameters":{"id":16034,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16033,"name":"","nodeType":"VariableDeclaration","scope":16038,"src":"368:4:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16032,"name":"uint","nodeType":"ElementaryTypeName","src":"368:4:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"367:6:24"},"scope":17194,"src":"324:71:24","stateMutability":"pure","superFunction":null,"visibility":"public"},{"body":{"id":16045,"nodeType":"Block","src":"568:21:24","statements":[{"expression":{"argumentTypes":null,"hexValue":"313030303030653138","id":16043,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"577:9:24","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000_by_1","typeString":"int_const 100000000000000000000000"},"value":"100000e18"},"functionReturnParameters":16042,"id":16044,"nodeType":"Return","src":"570:16:24"}]},"documentation":"@notice The number of votes required in order for a voter to become a proposer","id":16046,"implemented":true,"kind":"function","modifiers":[],"name":"proposalThreshold","nodeType":"FunctionDefinition","parameters":{"id":16039,"nodeType":"ParameterList","parameters":[],"src":"538:2:24"},"returnParameters":{"id":16042,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16041,"name":"","nodeType":"VariableDeclaration","scope":16046,"src":"562:4:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16040,"name":"uint","nodeType":"ElementaryTypeName","src":"562:4:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"561:6:24"},"scope":17194,"src":"512:77:24","stateMutability":"pure","superFunction":null,"visibility":"public"},{"body":{"id":16053,"nodeType":"Block","src":"760:14:24","statements":[{"expression":{"argumentTypes":null,"hexValue":"3130","id":16051,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"769:2:24","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"functionReturnParameters":16050,"id":16052,"nodeType":"Return","src":"762:9:24"}]},"documentation":"@notice The maximum number of actions that can be included in a proposal","id":16054,"implemented":true,"kind":"function","modifiers":[],"name":"proposalMaxOperations","nodeType":"FunctionDefinition","parameters":{"id":16047,"nodeType":"ParameterList","parameters":[],"src":"730:2:24"},"returnParameters":{"id":16050,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16049,"name":"","nodeType":"VariableDeclaration","scope":16054,"src":"754:4:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16048,"name":"uint","nodeType":"ElementaryTypeName","src":"754:4:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"753:6:24"},"scope":17194,"src":"700:74:24","stateMutability":"pure","superFunction":null,"visibility":"public"},{"body":{"id":16061,"nodeType":"Block","src":"928:13:24","statements":[{"expression":{"argumentTypes":null,"hexValue":"31","id":16059,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"937:1:24","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"functionReturnParameters":16058,"id":16060,"nodeType":"Return","src":"930:8:24"}]},"documentation":"@notice The delay before voting on a proposal may take place, once proposed","id":16062,"implemented":true,"kind":"function","modifiers":[],"name":"votingDelay","nodeType":"FunctionDefinition","parameters":{"id":16055,"nodeType":"ParameterList","parameters":[],"src":"898:2:24"},"returnParameters":{"id":16058,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16057,"name":"","nodeType":"VariableDeclaration","scope":16062,"src":"922:4:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16056,"name":"uint","nodeType":"ElementaryTypeName","src":"922:4:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"921:6:24"},"scope":17194,"src":"878:63:24","stateMutability":"pure","superFunction":null,"visibility":"public"},{"body":{"id":16069,"nodeType":"Block","src":"1073:17:24","statements":[{"expression":{"argumentTypes":null,"hexValue":"3137323830","id":16067,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1082:5:24","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_17280_by_1","typeString":"int_const 17280"},"value":"17280"},"functionReturnParameters":16066,"id":16068,"nodeType":"Return","src":"1075:12:24"}]},"documentation":"@notice The duration of voting on a proposal, in blocks","id":16070,"implemented":true,"kind":"function","modifiers":[],"name":"votingPeriod","nodeType":"FunctionDefinition","parameters":{"id":16063,"nodeType":"ParameterList","parameters":[],"src":"1043:2:24"},"returnParameters":{"id":16066,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16065,"name":"","nodeType":"VariableDeclaration","scope":16070,"src":"1067:4:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16064,"name":"uint","nodeType":"ElementaryTypeName","src":"1067:4:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1066:6:24"},"scope":17194,"src":"1022:68:24","stateMutability":"pure","superFunction":null,"visibility":"public"},{"constant":false,"id":16072,"name":"timelock","nodeType":"VariableDeclaration","scope":17194,"src":"1201:33:24","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_TimelockInterface_$17258","typeString":"contract TimelockInterface"},"typeName":{"contractScope":null,"id":16071,"name":"TimelockInterface","nodeType":"UserDefinedTypeName","referencedDeclaration":17258,"src":"1201:17:24","typeDescriptions":{"typeIdentifier":"t_contract$_TimelockInterface_$17258","typeString":"contract TimelockInterface"}},"value":null,"visibility":"public"},{"constant":false,"id":16074,"name":"comp","nodeType":"VariableDeclaration","scope":17194,"src":"1302:25:24","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_CompInterface_$17268","typeString":"contract CompInterface"},"typeName":{"contractScope":null,"id":16073,"name":"CompInterface","nodeType":"UserDefinedTypeName","referencedDeclaration":17268,"src":"1302:13:24","typeDescriptions":{"typeIdentifier":"t_contract$_CompInterface_$17268","typeString":"contract CompInterface"}},"value":null,"visibility":"public"},{"constant":false,"id":16076,"name":"guardian","nodeType":"VariableDeclaration","scope":17194,"src":"1387:23:24","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16075,"name":"address","nodeType":"ElementaryTypeName","src":"1387:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"public"},{"constant":false,"id":16078,"name":"proposalCount","nodeType":"VariableDeclaration","scope":17194,"src":"1463:25:24","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16077,"name":"uint","nodeType":"ElementaryTypeName","src":"1463:4:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"public"},{"canonicalName":"GovernorAlpha.Proposal","id":16113,"members":[{"constant":false,"id":16080,"name":"id","nodeType":"VariableDeclaration","scope":16113,"src":"1577:7:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16079,"name":"uint","nodeType":"ElementaryTypeName","src":"1577:4:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":16082,"name":"proposer","nodeType":"VariableDeclaration","scope":16113,"src":"1639:16:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16081,"name":"address","nodeType":"ElementaryTypeName","src":"1639:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":16084,"name":"eta","nodeType":"VariableDeclaration","scope":16113,"src":"1778:8:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16083,"name":"uint","nodeType":"ElementaryTypeName","src":"1778:4:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":16087,"name":"targets","nodeType":"VariableDeclaration","scope":16113,"src":"1875:17:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":16085,"name":"address","nodeType":"ElementaryTypeName","src":"1875:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":16086,"length":null,"nodeType":"ArrayTypeName","src":"1875:9:24","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":16090,"name":"values","nodeType":"VariableDeclaration","scope":16113,"src":"2004:13:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":16088,"name":"uint","nodeType":"ElementaryTypeName","src":"2004:4:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16089,"length":null,"nodeType":"ArrayTypeName","src":"2004:6:24","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":16093,"name":"signatures","nodeType":"VariableDeclaration","scope":16113,"src":"2101:19:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"},"typeName":{"baseType":{"id":16091,"name":"string","nodeType":"ElementaryTypeName","src":"2101:6:24","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":16092,"length":null,"nodeType":"ArrayTypeName","src":"2101:8:24","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":16096,"name":"calldatas","nodeType":"VariableDeclaration","scope":16113,"src":"2206:17:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":16094,"name":"bytes","nodeType":"ElementaryTypeName","src":"2206:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":16095,"length":null,"nodeType":"ArrayTypeName","src":"2206:7:24","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":16098,"name":"startBlock","nodeType":"VariableDeclaration","scope":16113,"src":"2342:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16097,"name":"uint","nodeType":"ElementaryTypeName","src":"2342:4:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":16100,"name":"endBlock","nodeType":"VariableDeclaration","scope":16113,"src":"2459:13:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16099,"name":"uint","nodeType":"ElementaryTypeName","src":"2459:4:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":16102,"name":"forVotes","nodeType":"VariableDeclaration","scope":16113,"src":"2553:13:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16101,"name":"uint","nodeType":"ElementaryTypeName","src":"2553:4:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":16104,"name":"againstVotes","nodeType":"VariableDeclaration","scope":16113,"src":"2652:17:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16103,"name":"uint","nodeType":"ElementaryTypeName","src":"2652:4:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":16106,"name":"canceled","nodeType":"VariableDeclaration","scope":16113,"src":"2752:13:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":16105,"name":"bool","nodeType":"ElementaryTypeName","src":"2752:4:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},{"constant":false,"id":16108,"name":"executed","nodeType":"VariableDeclaration","scope":16113,"src":"2848:13:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":16107,"name":"bool","nodeType":"ElementaryTypeName","src":"2848:4:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},{"constant":false,"id":16112,"name":"receipts","nodeType":"VariableDeclaration","scope":16113,"src":"2941:37:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Receipt_$16120_storage_$","typeString":"mapping(address => struct GovernorAlpha.Receipt)"},"typeName":{"id":16111,"keyType":{"id":16109,"name":"address","nodeType":"ElementaryTypeName","src":"2950:7:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2941:28:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Receipt_$16120_storage_$","typeString":"mapping(address => struct GovernorAlpha.Receipt)"},"valueType":{"contractScope":null,"id":16110,"name":"Receipt","nodeType":"UserDefinedTypeName","referencedDeclaration":16120,"src":"2961:7:24","typeDescriptions":{"typeIdentifier":"t_struct$_Receipt_$16120_storage_ptr","typeString":"struct GovernorAlpha.Receipt"}}},"value":null,"visibility":"internal"}],"name":"Proposal","nodeType":"StructDefinition","scope":17194,"src":"1495:1490:24","visibility":"public"},{"canonicalName":"GovernorAlpha.Receipt","id":16120,"members":[{"constant":false,"id":16115,"name":"hasVoted","nodeType":"VariableDeclaration","scope":16120,"src":"3122:13:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":16114,"name":"bool","nodeType":"ElementaryTypeName","src":"3122:4:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},{"constant":false,"id":16117,"name":"support","nodeType":"VariableDeclaration","scope":16120,"src":"3213:12:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":16116,"name":"bool","nodeType":"ElementaryTypeName","src":"3213:4:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},{"constant":false,"id":16119,"name":"votes","nodeType":"VariableDeclaration","scope":16120,"src":"3307:12:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":16118,"name":"uint96","nodeType":"ElementaryTypeName","src":"3307:6:24","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"value":null,"visibility":"internal"}],"name":"Receipt","nodeType":"StructDefinition","scope":17194,"src":"3041:285:24","visibility":"public"},{"canonicalName":"GovernorAlpha.ProposalState","id":16129,"members":[{"id":16121,"name":"Pending","nodeType":"EnumValue","src":"3419:7:24"},{"id":16122,"name":"Active","nodeType":"EnumValue","src":"3436:6:24"},{"id":16123,"name":"Canceled","nodeType":"EnumValue","src":"3452:8:24"},{"id":16124,"name":"Defeated","nodeType":"EnumValue","src":"3470:8:24"},{"id":16125,"name":"Succeeded","nodeType":"EnumValue","src":"3488:9:24"},{"id":16126,"name":"Queued","nodeType":"EnumValue","src":"3507:6:24"},{"id":16127,"name":"Expired","nodeType":"EnumValue","src":"3523:7:24"},{"id":16128,"name":"Executed","nodeType":"EnumValue","src":"3540:8:24"}],"name":"ProposalState","nodeType":"EnumDefinition","src":"3390:164:24"},{"constant":false,"id":16133,"name":"proposals","nodeType":"VariableDeclaration","scope":17194,"src":"3627:43:24","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Proposal_$16113_storage_$","typeString":"mapping(uint256 => struct GovernorAlpha.Proposal)"},"typeName":{"id":16132,"keyType":{"id":16130,"name":"uint","nodeType":"ElementaryTypeName","src":"3636:4:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"3627:26:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Proposal_$16113_storage_$","typeString":"mapping(uint256 => struct GovernorAlpha.Proposal)"},"valueType":{"contractScope":null,"id":16131,"name":"Proposal","nodeType":"UserDefinedTypeName","referencedDeclaration":16113,"src":"3644:8:24","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$16113_storage_ptr","typeString":"struct GovernorAlpha.Proposal"}}},"value":null,"visibility":"public"},{"constant":false,"id":16137,"name":"latestProposalIds","nodeType":"VariableDeclaration","scope":17194,"src":"3731:50:24","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":16136,"keyType":{"id":16134,"name":"address","nodeType":"ElementaryTypeName","src":"3740:7:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"3731:25:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":16135,"name":"uint","nodeType":"ElementaryTypeName","src":"3751:4:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"value":null,"visibility":"public"},{"constant":true,"id":16142,"name":"DOMAIN_TYPEHASH","nodeType":"VariableDeclaration","scope":17194,"src":"3851:122:24","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16138,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3851:7:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"454950373132446f6d61696e28737472696e67206e616d652c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429","id":16140,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3903:69:24","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866","typeString":"literal_string \"EIP712Domain(string name,uint256 chainId,address verifyingContract)\""},"value":"EIP712Domain(string name,uint256 chainId,address verifyingContract)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866","typeString":"literal_string \"EIP712Domain(string name,uint256 chainId,address verifyingContract)\""}],"id":16139,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22544,"src":"3893:9:24","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":16141,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3893:80:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"constant":true,"id":16147,"name":"BALLOT_TYPEHASH","nodeType":"VariableDeclaration","scope":17194,"src":"4060:94:24","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16143,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4060:7:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"42616c6c6f742875696e743235362070726f706f73616c49642c626f6f6c20737570706f727429","id":16145,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4112:41:24","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_8e25870c07e0b0b3884c78da52790939a455c275406c44ae8b434b692fb916ee","typeString":"literal_string \"Ballot(uint256 proposalId,bool support)\""},"value":"Ballot(uint256 proposalId,bool support)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_8e25870c07e0b0b3884c78da52790939a455c275406c44ae8b434b692fb916ee","typeString":"literal_string \"Ballot(uint256 proposalId,bool support)\""}],"id":16144,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22544,"src":"4102:9:24","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":16146,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4102:52:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"anonymous":false,"documentation":"@notice An event emitted when a new proposal is created","id":16171,"name":"ProposalCreated","nodeType":"EventDefinition","parameters":{"id":16170,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16149,"indexed":false,"name":"id","nodeType":"VariableDeclaration","scope":16171,"src":"4247:7:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16148,"name":"uint","nodeType":"ElementaryTypeName","src":"4247:4:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":16151,"indexed":false,"name":"proposer","nodeType":"VariableDeclaration","scope":16171,"src":"4256:16:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16150,"name":"address","nodeType":"ElementaryTypeName","src":"4256:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":16154,"indexed":false,"name":"targets","nodeType":"VariableDeclaration","scope":16171,"src":"4274:17:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":16152,"name":"address","nodeType":"ElementaryTypeName","src":"4274:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":16153,"length":null,"nodeType":"ArrayTypeName","src":"4274:9:24","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":16157,"indexed":false,"name":"values","nodeType":"VariableDeclaration","scope":16171,"src":"4293:13:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":16155,"name":"uint","nodeType":"ElementaryTypeName","src":"4293:4:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16156,"length":null,"nodeType":"ArrayTypeName","src":"4293:6:24","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":16160,"indexed":false,"name":"signatures","nodeType":"VariableDeclaration","scope":16171,"src":"4308:19:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_$dyn_memory_ptr","typeString":"string[]"},"typeName":{"baseType":{"id":16158,"name":"string","nodeType":"ElementaryTypeName","src":"4308:6:24","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":16159,"length":null,"nodeType":"ArrayTypeName","src":"4308:8:24","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":16163,"indexed":false,"name":"calldatas","nodeType":"VariableDeclaration","scope":16171,"src":"4329:17:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":16161,"name":"bytes","nodeType":"ElementaryTypeName","src":"4329:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":16162,"length":null,"nodeType":"ArrayTypeName","src":"4329:7:24","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":16165,"indexed":false,"name":"startBlock","nodeType":"VariableDeclaration","scope":16171,"src":"4348:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16164,"name":"uint","nodeType":"ElementaryTypeName","src":"4348:4:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":16167,"indexed":false,"name":"endBlock","nodeType":"VariableDeclaration","scope":16171,"src":"4365:13:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16166,"name":"uint","nodeType":"ElementaryTypeName","src":"4365:4:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":16169,"indexed":false,"name":"description","nodeType":"VariableDeclaration","scope":16171,"src":"4380:18:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":16168,"name":"string","nodeType":"ElementaryTypeName","src":"4380:6:24","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":null,"visibility":"internal"}],"src":"4246:153:24"},"src":"4225:175:24"},{"anonymous":false,"documentation":"@notice An event emitted when a vote has been cast on a proposal","id":16181,"name":"VoteCast","nodeType":"EventDefinition","parameters":{"id":16180,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16173,"indexed":false,"name":"voter","nodeType":"VariableDeclaration","scope":16181,"src":"4494:13:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16172,"name":"address","nodeType":"ElementaryTypeName","src":"4494:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":16175,"indexed":false,"name":"proposalId","nodeType":"VariableDeclaration","scope":16181,"src":"4509:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16174,"name":"uint","nodeType":"ElementaryTypeName","src":"4509:4:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":16177,"indexed":false,"name":"support","nodeType":"VariableDeclaration","scope":16181,"src":"4526:12:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":16176,"name":"bool","nodeType":"ElementaryTypeName","src":"4526:4:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},{"constant":false,"id":16179,"indexed":false,"name":"votes","nodeType":"VariableDeclaration","scope":16181,"src":"4540:10:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16178,"name":"uint","nodeType":"ElementaryTypeName","src":"4540:4:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"4493:58:24"},"src":"4479:73:24"},{"anonymous":false,"documentation":"@notice An event emitted when a proposal has been canceled","id":16185,"name":"ProposalCanceled","nodeType":"EventDefinition","parameters":{"id":16184,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16183,"indexed":false,"name":"id","nodeType":"VariableDeclaration","scope":16185,"src":"4648:7:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16182,"name":"uint","nodeType":"ElementaryTypeName","src":"4648:4:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"4647:9:24"},"src":"4625:32:24"},{"anonymous":false,"documentation":"@notice An event emitted when a proposal has been queued in the Timelock","id":16191,"name":"ProposalQueued","nodeType":"EventDefinition","parameters":{"id":16190,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16187,"indexed":false,"name":"id","nodeType":"VariableDeclaration","scope":16191,"src":"4765:7:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16186,"name":"uint","nodeType":"ElementaryTypeName","src":"4765:4:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":16189,"indexed":false,"name":"eta","nodeType":"VariableDeclaration","scope":16191,"src":"4774:8:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16188,"name":"uint","nodeType":"ElementaryTypeName","src":"4774:4:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"4764:19:24"},"src":"4744:40:24"},{"anonymous":false,"documentation":"@notice An event emitted when a proposal has been executed in the Timelock","id":16195,"name":"ProposalExecuted","nodeType":"EventDefinition","parameters":{"id":16194,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16193,"indexed":false,"name":"id","nodeType":"VariableDeclaration","scope":16195,"src":"4896:7:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16192,"name":"uint","nodeType":"ElementaryTypeName","src":"4896:4:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"4895:9:24"},"src":"4873:32:24"},{"body":{"id":16220,"nodeType":"Block","src":"4983:123:24","statements":[{"expression":{"argumentTypes":null,"id":16208,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":16204,"name":"timelock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16072,"src":"4993:8:24","typeDescriptions":{"typeIdentifier":"t_contract$_TimelockInterface_$17258","typeString":"contract TimelockInterface"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":16206,"name":"timelock_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16197,"src":"5022:9:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":16205,"name":"TimelockInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17258,"src":"5004:17:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TimelockInterface_$17258_$","typeString":"type(contract TimelockInterface)"}},"id":16207,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5004:28:24","typeDescriptions":{"typeIdentifier":"t_contract$_TimelockInterface_$17258","typeString":"contract TimelockInterface"}},"src":"4993:39:24","typeDescriptions":{"typeIdentifier":"t_contract$_TimelockInterface_$17258","typeString":"contract TimelockInterface"}},"id":16209,"nodeType":"ExpressionStatement","src":"4993:39:24"},{"expression":{"argumentTypes":null,"id":16214,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":16210,"name":"comp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16074,"src":"5042:4:24","typeDescriptions":{"typeIdentifier":"t_contract$_CompInterface_$17268","typeString":"contract CompInterface"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":16212,"name":"comp_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16199,"src":"5063:5:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":16211,"name":"CompInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17268,"src":"5049:13:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CompInterface_$17268_$","typeString":"type(contract CompInterface)"}},"id":16213,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5049:20:24","typeDescriptions":{"typeIdentifier":"t_contract$_CompInterface_$17268","typeString":"contract CompInterface"}},"src":"5042:27:24","typeDescriptions":{"typeIdentifier":"t_contract$_CompInterface_$17268","typeString":"contract CompInterface"}},"id":16215,"nodeType":"ExpressionStatement","src":"5042:27:24"},{"expression":{"argumentTypes":null,"id":16218,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":16216,"name":"guardian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16076,"src":"5079:8:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":16217,"name":"guardian_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16201,"src":"5090:9:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5079:20:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":16219,"nodeType":"ExpressionStatement","src":"5079:20:24"}]},"documentation":null,"id":16221,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":16202,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16197,"name":"timelock_","nodeType":"VariableDeclaration","scope":16221,"src":"4923:17:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16196,"name":"address","nodeType":"ElementaryTypeName","src":"4923:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":16199,"name":"comp_","nodeType":"VariableDeclaration","scope":16221,"src":"4942:13:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16198,"name":"address","nodeType":"ElementaryTypeName","src":"4942:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":16201,"name":"guardian_","nodeType":"VariableDeclaration","scope":16221,"src":"4957:17:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16200,"name":"address","nodeType":"ElementaryTypeName","src":"4957:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"4922:53:24"},"returnParameters":{"id":16203,"nodeType":"ParameterList","parameters":[],"src":"4983:0:24"},"scope":17194,"src":"4911:195:24","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":16400,"nodeType":"Block","src":"5280:1966:24","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16253,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16243,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"5317:3:24","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":16244,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"5317:10:24","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16246,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22540,"src":"5336:5:24","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":16247,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"number","nodeType":"MemberAccess","referencedDeclaration":null,"src":"5336:12:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"31","id":16248,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5350:1:24","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":16245,"name":"sub256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17181,"src":"5329:6:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":16249,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5329:23:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":16241,"name":"comp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16074,"src":"5298:4:24","typeDescriptions":{"typeIdentifier":"t_contract$_CompInterface_$17268","typeString":"contract CompInterface"}},"id":16242,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getPriorVotes","nodeType":"MemberAccess","referencedDeclaration":17267,"src":"5298:18:24","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_uint256_$returns$_t_uint96_$","typeString":"function (address,uint256) view external returns (uint96)"}},"id":16250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5298:55:24","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":16251,"name":"proposalThreshold","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16046,"src":"5356:17:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_uint256_$","typeString":"function () pure returns (uint256)"}},"id":16252,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5356:19:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5298:77:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"476f7665726e6f72416c7068613a3a70726f706f73653a2070726f706f73657220766f7465732062656c6f772070726f706f73616c207468726573686f6c64","id":16254,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5377:65:24","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_bfd39a706899c667e0394e5691bba7fd459524eeb85474b380cee160c3526ad7","typeString":"literal_string \"GovernorAlpha::propose: proposer votes below proposal threshold\""},"value":"GovernorAlpha::propose: proposer votes below proposal threshold"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_bfd39a706899c667e0394e5691bba7fd459524eeb85474b380cee160c3526ad7","typeString":"literal_string \"GovernorAlpha::propose: proposer votes below proposal threshold\""}],"id":16240,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"5290:7:24","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":16255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5290:153:24","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16256,"nodeType":"ExpressionStatement","src":"5290:153:24"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":16274,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":16268,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16262,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16258,"name":"targets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16224,"src":"5461:7:24","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":16259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"5461:14:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16260,"name":"values","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16227,"src":"5479:6:24","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":16261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"5479:13:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5461:31:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16263,"name":"targets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16224,"src":"5496:7:24","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":16264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"5496:14:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16265,"name":"signatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16230,"src":"5514:10:24","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_$dyn_memory_ptr","typeString":"string memory[] memory"}},"id":16266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"5514:17:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5496:35:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5461:70:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16273,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16269,"name":"targets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16224,"src":"5535:7:24","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":16270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"5535:14:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16271,"name":"calldatas","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16233,"src":"5553:9:24","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"id":16272,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"5553:16:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5535:34:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5461:108:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"476f7665726e6f72416c7068613a3a70726f706f73653a2070726f706f73616c2066756e6374696f6e20696e666f726d6174696f6e206172697479206d69736d61746368","id":16275,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5571:70:24","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_8f65dd3b1b279a725bb780739a9eb5d267c38175f941e38ce802e63e3e8b6fea","typeString":"literal_string \"GovernorAlpha::propose: proposal function information arity mismatch\""},"value":"GovernorAlpha::propose: proposal function information arity mismatch"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8f65dd3b1b279a725bb780739a9eb5d267c38175f941e38ce802e63e3e8b6fea","typeString":"literal_string \"GovernorAlpha::propose: proposal function information arity mismatch\""}],"id":16257,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"5453:7:24","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":16276,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5453:189:24","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16277,"nodeType":"ExpressionStatement","src":"5453:189:24"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16282,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16279,"name":"targets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16224,"src":"5660:7:24","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":16280,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"5660:14:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"hexValue":"30","id":16281,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5678:1:24","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5660:19:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"476f7665726e6f72416c7068613a3a70726f706f73653a206d7573742070726f7669646520616374696f6e73","id":16283,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5681:46:24","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_ad28c98e0c3f5f095d64a889b8cb7fef3f5dce1da50271bc4d958131808bd4c3","typeString":"literal_string \"GovernorAlpha::propose: must provide actions\""},"value":"GovernorAlpha::propose: must provide actions"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ad28c98e0c3f5f095d64a889b8cb7fef3f5dce1da50271bc4d958131808bd4c3","typeString":"literal_string \"GovernorAlpha::propose: must provide actions\""}],"id":16278,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"5652:7:24","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":16284,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5652:76:24","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16285,"nodeType":"ExpressionStatement","src":"5652:76:24"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16291,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16287,"name":"targets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16224,"src":"5746:7:24","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":16288,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"5746:14:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":16289,"name":"proposalMaxOperations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16054,"src":"5764:21:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_uint256_$","typeString":"function () pure returns (uint256)"}},"id":16290,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5764:23:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5746:41:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"476f7665726e6f72416c7068613a3a70726f706f73653a20746f6f206d616e7920616374696f6e73","id":16292,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5789:42:24","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_7be08c0beae18091615fa69523ea231e3fec34367b86b38f90cf56bf50e90496","typeString":"literal_string \"GovernorAlpha::propose: too many actions\""},"value":"GovernorAlpha::propose: too many actions"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7be08c0beae18091615fa69523ea231e3fec34367b86b38f90cf56bf50e90496","typeString":"literal_string \"GovernorAlpha::propose: too many actions\""}],"id":16286,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"5738:7:24","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":16293,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5738:94:24","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16294,"nodeType":"ExpressionStatement","src":"5738:94:24"},{"assignments":[16296],"declarations":[{"constant":false,"id":16296,"name":"latestProposalId","nodeType":"VariableDeclaration","scope":16400,"src":"5843:21:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16295,"name":"uint","nodeType":"ElementaryTypeName","src":"5843:4:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":16301,"initialValue":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":16297,"name":"latestProposalIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16137,"src":"5867:17:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":16300,"indexExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16298,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"5885:3:24","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":16299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"5885:10:24","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5867:29:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5843:53:24"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":16302,"name":"latestProposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16296,"src":"5910:16:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"hexValue":"30","id":16303,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5930:1:24","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5910:21:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":16328,"nodeType":"IfStatement","src":"5906:450:24","trueBody":{"id":16327,"nodeType":"Block","src":"5933:423:24","statements":[{"assignments":[16306],"declarations":[{"constant":false,"id":16306,"name":"proposersLatestProposalState","nodeType":"VariableDeclaration","scope":16327,"src":"5945:42:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_ProposalState_$16129","typeString":"enum GovernorAlpha.ProposalState"},"typeName":{"contractScope":null,"id":16305,"name":"ProposalState","nodeType":"UserDefinedTypeName","referencedDeclaration":16129,"src":"5945:13:24","typeDescriptions":{"typeIdentifier":"t_enum$_ProposalState_$16129","typeString":"enum GovernorAlpha.ProposalState"}},"value":null,"visibility":"internal"}],"id":16310,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":16308,"name":"latestProposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16296,"src":"5996:16:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16307,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16845,"src":"5990:5:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_enum$_ProposalState_$16129_$","typeString":"function (uint256) view returns (enum GovernorAlpha.ProposalState)"}},"id":16309,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5990:23:24","typeDescriptions":{"typeIdentifier":"t_enum$_ProposalState_$16129","typeString":"enum GovernorAlpha.ProposalState"}},"nodeType":"VariableDeclarationStatement","src":"5945:68:24"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_enum$_ProposalState_$16129","typeString":"enum GovernorAlpha.ProposalState"},"id":16315,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":16312,"name":"proposersLatestProposalState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16306,"src":"6033:28:24","typeDescriptions":{"typeIdentifier":"t_enum$_ProposalState_$16129","typeString":"enum GovernorAlpha.ProposalState"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16313,"name":"ProposalState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16129,"src":"6065:13:24","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ProposalState_$16129_$","typeString":"type(enum GovernorAlpha.ProposalState)"}},"id":16314,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"Active","nodeType":"MemberAccess","referencedDeclaration":null,"src":"6065:20:24","typeDescriptions":{"typeIdentifier":"t_enum$_ProposalState_$16129","typeString":"enum GovernorAlpha.ProposalState"}},"src":"6033:52:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"476f7665726e6f72416c7068613a3a70726f706f73653a206f6e65206c6976652070726f706f73616c207065722070726f706f7365722c20666f756e6420616e20616c7265616479206163746976652070726f706f73616c","id":16316,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6087:90:24","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_d87f670040507c478977f847e6bd1f7a027d18f70440fe56056d87e43baea226","typeString":"literal_string \"GovernorAlpha::propose: one live proposal per proposer, found an already active proposal\""},"value":"GovernorAlpha::propose: one live proposal per proposer, found an already active proposal"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d87f670040507c478977f847e6bd1f7a027d18f70440fe56056d87e43baea226","typeString":"literal_string \"GovernorAlpha::propose: one live proposal per proposer, found an already active proposal\""}],"id":16311,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"6025:7:24","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":16317,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6025:153:24","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16318,"nodeType":"ExpressionStatement","src":"6025:153:24"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_enum$_ProposalState_$16129","typeString":"enum GovernorAlpha.ProposalState"},"id":16323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":16320,"name":"proposersLatestProposalState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16306,"src":"6198:28:24","typeDescriptions":{"typeIdentifier":"t_enum$_ProposalState_$16129","typeString":"enum GovernorAlpha.ProposalState"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16321,"name":"ProposalState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16129,"src":"6230:13:24","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ProposalState_$16129_$","typeString":"type(enum GovernorAlpha.ProposalState)"}},"id":16322,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"Pending","nodeType":"MemberAccess","referencedDeclaration":null,"src":"6230:21:24","typeDescriptions":{"typeIdentifier":"t_enum$_ProposalState_$16129","typeString":"enum GovernorAlpha.ProposalState"}},"src":"6198:53:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"476f7665726e6f72416c7068613a3a70726f706f73653a206f6e65206c6976652070726f706f73616c207065722070726f706f7365722c20666f756e6420616e20616c72656164792070656e64696e672070726f706f73616c","id":16324,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6253:91:24","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_6ba5b9d71ffd376990d8fe5d0e3e5e56e38371f2ae53f3613e7df4450ff470e6","typeString":"literal_string \"GovernorAlpha::propose: one live proposal per proposer, found an already pending proposal\""},"value":"GovernorAlpha::propose: one live proposal per proposer, found an already pending proposal"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6ba5b9d71ffd376990d8fe5d0e3e5e56e38371f2ae53f3613e7df4450ff470e6","typeString":"literal_string \"GovernorAlpha::propose: one live proposal per proposer, found an already pending proposal\""}],"id":16319,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"6190:7:24","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":16325,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6190:155:24","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16326,"nodeType":"ExpressionStatement","src":"6190:155:24"}]}},{"assignments":[16330],"declarations":[{"constant":false,"id":16330,"name":"startBlock","nodeType":"VariableDeclaration","scope":16400,"src":"6366:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16329,"name":"uint","nodeType":"ElementaryTypeName","src":"6366:4:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":16337,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16332,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22540,"src":"6391:5:24","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":16333,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"number","nodeType":"MemberAccess","referencedDeclaration":null,"src":"6391:12:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":16334,"name":"votingDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16062,"src":"6405:11:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_uint256_$","typeString":"function () pure returns (uint256)"}},"id":16335,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6405:13:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16331,"name":"add256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17160,"src":"6384:6:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":16336,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6384:35:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6366:53:24"},{"assignments":[16339],"declarations":[{"constant":false,"id":16339,"name":"endBlock","nodeType":"VariableDeclaration","scope":16400,"src":"6429:13:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16338,"name":"uint","nodeType":"ElementaryTypeName","src":"6429:4:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":16345,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":16341,"name":"startBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16330,"src":"6452:10:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":16342,"name":"votingPeriod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16070,"src":"6464:12:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_uint256_$","typeString":"function () pure returns (uint256)"}},"id":16343,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6464:14:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16340,"name":"add256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17160,"src":"6445:6:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":16344,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6445:34:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6429:50:24"},{"expression":{"argumentTypes":null,"id":16347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"6490:15:24","subExpression":{"argumentTypes":null,"id":16346,"name":"proposalCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16078,"src":"6490:13:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16348,"nodeType":"ExpressionStatement","src":"6490:15:24"},{"assignments":[16350],"declarations":[{"constant":false,"id":16350,"name":"newProposal","nodeType":"VariableDeclaration","scope":16400,"src":"6515:27:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$16113_memory_ptr","typeString":"struct GovernorAlpha.Proposal"},"typeName":{"contractScope":null,"id":16349,"name":"Proposal","nodeType":"UserDefinedTypeName","referencedDeclaration":16113,"src":"6515:8:24","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$16113_storage_ptr","typeString":"struct GovernorAlpha.Proposal"}},"value":null,"visibility":"internal"}],"id":16367,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":16352,"name":"proposalCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16078,"src":"6572:13:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16353,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"6609:3:24","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":16354,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"6609:10:24","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"hexValue":"30","id":16355,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6638:1:24","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"argumentTypes":null,"id":16356,"name":"targets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16224,"src":"6662:7:24","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},{"argumentTypes":null,"id":16357,"name":"values","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16227,"src":"6691:6:24","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"argumentTypes":null,"id":16358,"name":"signatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16230,"src":"6723:10:24","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_$dyn_memory_ptr","typeString":"string memory[] memory"}},{"argumentTypes":null,"id":16359,"name":"calldatas","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16233,"src":"6758:9:24","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},{"argumentTypes":null,"id":16360,"name":"startBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16330,"src":"6793:10:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":16361,"name":"endBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16339,"src":"6827:8:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"30","id":16362,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6859:1:24","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"argumentTypes":null,"hexValue":"30","id":16363,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6888:1:24","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"argumentTypes":null,"hexValue":"66616c7365","id":16364,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6913:5:24","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"argumentTypes":null,"hexValue":"66616c7365","id":16365,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6942:5:24","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_string_memory_$dyn_memory_ptr","typeString":"string memory[] memory"},{"typeIdentifier":"t_array$_t_bytes_memory_$dyn_memory_ptr","typeString":"bytes memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":16351,"name":"Proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16113,"src":"6545:8:24","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Proposal_$16113_storage_ptr_$","typeString":"type(struct GovernorAlpha.Proposal storage pointer)"}},"id":16366,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["id","proposer","eta","targets","values","signatures","calldatas","startBlock","endBlock","forVotes","againstVotes","canceled","executed"],"nodeType":"FunctionCall","src":"6545:413:24","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$16113_memory","typeString":"struct GovernorAlpha.Proposal memory"}},"nodeType":"VariableDeclarationStatement","src":"6515:443:24"},{"expression":{"argumentTypes":null,"id":16373,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":16368,"name":"proposals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16133,"src":"6969:9:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Proposal_$16113_storage_$","typeString":"mapping(uint256 => struct GovernorAlpha.Proposal storage ref)"}},"id":16371,"indexExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16369,"name":"newProposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16350,"src":"6979:11:24","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$16113_memory_ptr","typeString":"struct GovernorAlpha.Proposal memory"}},"id":16370,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"id","nodeType":"MemberAccess","referencedDeclaration":16080,"src":"6979:14:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6969:25:24","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$16113_storage","typeString":"struct GovernorAlpha.Proposal storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":16372,"name":"newProposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16350,"src":"6997:11:24","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$16113_memory_ptr","typeString":"struct GovernorAlpha.Proposal memory"}},"src":"6969:39:24","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$16113_storage","typeString":"struct GovernorAlpha.Proposal storage ref"}},"id":16374,"nodeType":"ExpressionStatement","src":"6969:39:24"},{"expression":{"argumentTypes":null,"id":16381,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":16375,"name":"latestProposalIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16137,"src":"7018:17:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":16378,"indexExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16376,"name":"newProposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16350,"src":"7036:11:24","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$16113_memory_ptr","typeString":"struct GovernorAlpha.Proposal memory"}},"id":16377,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"proposer","nodeType":"MemberAccess","referencedDeclaration":16082,"src":"7036:20:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7018:39:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16379,"name":"newProposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16350,"src":"7060:11:24","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$16113_memory_ptr","typeString":"struct GovernorAlpha.Proposal memory"}},"id":16380,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"id","nodeType":"MemberAccess","referencedDeclaration":16080,"src":"7060:14:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7018:56:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16382,"nodeType":"ExpressionStatement","src":"7018:56:24"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16384,"name":"newProposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16350,"src":"7106:11:24","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$16113_memory_ptr","typeString":"struct GovernorAlpha.Proposal memory"}},"id":16385,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"id","nodeType":"MemberAccess","referencedDeclaration":16080,"src":"7106:14:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16386,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"7122:3:24","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":16387,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"7122:10:24","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"id":16388,"name":"targets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16224,"src":"7134:7:24","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},{"argumentTypes":null,"id":16389,"name":"values","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16227,"src":"7143:6:24","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"argumentTypes":null,"id":16390,"name":"signatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16230,"src":"7151:10:24","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_$dyn_memory_ptr","typeString":"string memory[] memory"}},{"argumentTypes":null,"id":16391,"name":"calldatas","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16233,"src":"7163:9:24","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},{"argumentTypes":null,"id":16392,"name":"startBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16330,"src":"7174:10:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":16393,"name":"endBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16339,"src":"7186:8:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":16394,"name":"description","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16235,"src":"7196:11:24","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_string_memory_$dyn_memory_ptr","typeString":"string memory[] memory"},{"typeIdentifier":"t_array$_t_bytes_memory_$dyn_memory_ptr","typeString":"bytes memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":16383,"name":"ProposalCreated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16171,"src":"7090:15:24","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_address_$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_string_memory_$dyn_memory_ptr_$_t_array$_t_bytes_memory_$dyn_memory_ptr_$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$__$","typeString":"function (uint256,address,address[] memory,uint256[] memory,string memory[] memory,bytes memory[] memory,uint256,uint256,string memory)"}},"id":16395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7090:118:24","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16396,"nodeType":"EmitStatement","src":"7085:123:24"},{"expression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16397,"name":"newProposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16350,"src":"7225:11:24","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$16113_memory_ptr","typeString":"struct GovernorAlpha.Proposal memory"}},"id":16398,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"id","nodeType":"MemberAccess","referencedDeclaration":16080,"src":"7225:14:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":16239,"id":16399,"nodeType":"Return","src":"7218:21:24"}]},"documentation":null,"id":16401,"implemented":true,"kind":"function","modifiers":[],"name":"propose","nodeType":"FunctionDefinition","parameters":{"id":16236,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16224,"name":"targets","nodeType":"VariableDeclaration","scope":16401,"src":"5129:24:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":16222,"name":"address","nodeType":"ElementaryTypeName","src":"5129:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":16223,"length":null,"nodeType":"ArrayTypeName","src":"5129:9:24","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":16227,"name":"values","nodeType":"VariableDeclaration","scope":16401,"src":"5155:20:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":16225,"name":"uint","nodeType":"ElementaryTypeName","src":"5155:4:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16226,"length":null,"nodeType":"ArrayTypeName","src":"5155:6:24","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":16230,"name":"signatures","nodeType":"VariableDeclaration","scope":16401,"src":"5177:26:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_$dyn_memory_ptr","typeString":"string[]"},"typeName":{"baseType":{"id":16228,"name":"string","nodeType":"ElementaryTypeName","src":"5177:6:24","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":16229,"length":null,"nodeType":"ArrayTypeName","src":"5177:8:24","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":16233,"name":"calldatas","nodeType":"VariableDeclaration","scope":16401,"src":"5205:24:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":16231,"name":"bytes","nodeType":"ElementaryTypeName","src":"5205:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":16232,"length":null,"nodeType":"ArrayTypeName","src":"5205:7:24","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":16235,"name":"description","nodeType":"VariableDeclaration","scope":16401,"src":"5231:25:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":16234,"name":"string","nodeType":"ElementaryTypeName","src":"5231:6:24","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":null,"visibility":"internal"}],"src":"5128:129:24"},"returnParameters":{"id":16239,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16238,"name":"","nodeType":"VariableDeclaration","scope":16401,"src":"5274:4:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16237,"name":"uint","nodeType":"ElementaryTypeName","src":"5274:4:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"5273:6:24"},"scope":17194,"src":"5112:2134:24","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":16477,"nodeType":"Block","src":"7291:529:24","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_enum$_ProposalState_$16129","typeString":"enum GovernorAlpha.ProposalState"},"id":16412,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":16408,"name":"proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16403,"src":"7315:10:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16407,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16845,"src":"7309:5:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_enum$_ProposalState_$16129_$","typeString":"function (uint256) view returns (enum GovernorAlpha.ProposalState)"}},"id":16409,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7309:17:24","typeDescriptions":{"typeIdentifier":"t_enum$_ProposalState_$16129","typeString":"enum GovernorAlpha.ProposalState"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16410,"name":"ProposalState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16129,"src":"7330:13:24","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ProposalState_$16129_$","typeString":"type(enum GovernorAlpha.ProposalState)"}},"id":16411,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"Succeeded","nodeType":"MemberAccess","referencedDeclaration":null,"src":"7330:23:24","typeDescriptions":{"typeIdentifier":"t_enum$_ProposalState_$16129","typeString":"enum GovernorAlpha.ProposalState"}},"src":"7309:44:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"476f7665726e6f72416c7068613a3a71756575653a2070726f706f73616c2063616e206f6e6c792062652071756575656420696620697420697320737563636565646564","id":16413,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7355:70:24","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_1d9165de7b961db8df575169dadfdce4206cbf37571a45b735e6bcfda22b83b1","typeString":"literal_string \"GovernorAlpha::queue: proposal can only be queued if it is succeeded\""},"value":"GovernorAlpha::queue: proposal can only be queued if it is succeeded"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1d9165de7b961db8df575169dadfdce4206cbf37571a45b735e6bcfda22b83b1","typeString":"literal_string \"GovernorAlpha::queue: proposal can only be queued if it is succeeded\""}],"id":16406,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"7301:7:24","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":16414,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7301:125:24","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16415,"nodeType":"ExpressionStatement","src":"7301:125:24"},{"assignments":[16417],"declarations":[{"constant":false,"id":16417,"name":"proposal","nodeType":"VariableDeclaration","scope":16477,"src":"7436:25:24","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$16113_storage_ptr","typeString":"struct GovernorAlpha.Proposal"},"typeName":{"contractScope":null,"id":16416,"name":"Proposal","nodeType":"UserDefinedTypeName","referencedDeclaration":16113,"src":"7436:8:24","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$16113_storage_ptr","typeString":"struct GovernorAlpha.Proposal"}},"value":null,"visibility":"internal"}],"id":16421,"initialValue":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":16418,"name":"proposals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16133,"src":"7464:9:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Proposal_$16113_storage_$","typeString":"mapping(uint256 => struct GovernorAlpha.Proposal storage ref)"}},"id":16420,"indexExpression":{"argumentTypes":null,"id":16419,"name":"proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16403,"src":"7474:10:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7464:21:24","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$16113_storage","typeString":"struct GovernorAlpha.Proposal storage ref"}},"nodeType":"VariableDeclarationStatement","src":"7436:49:24"},{"assignments":[16423],"declarations":[{"constant":false,"id":16423,"name":"eta","nodeType":"VariableDeclaration","scope":16477,"src":"7495:8:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16422,"name":"uint","nodeType":"ElementaryTypeName","src":"7495:4:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":16431,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16425,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22540,"src":"7513:5:24","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":16426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":null,"src":"7513:15:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":16427,"name":"timelock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16072,"src":"7530:8:24","typeDescriptions":{"typeIdentifier":"t_contract$_TimelockInterface_$17258","typeString":"contract TimelockInterface"}},"id":16428,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"delay","nodeType":"MemberAccess","referencedDeclaration":17199,"src":"7530:14:24","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":16429,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7530:16:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16424,"name":"add256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17160,"src":"7506:6:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":16430,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7506:41:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7495:52:24"},{"body":{"id":16464,"nodeType":"Block","src":"7608:132:24","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16445,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16417,"src":"7637:8:24","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$16113_storage_ptr","typeString":"struct GovernorAlpha.Proposal storage pointer"}},"id":16446,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"targets","nodeType":"MemberAccess","referencedDeclaration":16087,"src":"7637:16:24","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":16448,"indexExpression":{"argumentTypes":null,"id":16447,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16433,"src":"7654:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7637:19:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16449,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16417,"src":"7658:8:24","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$16113_storage_ptr","typeString":"struct GovernorAlpha.Proposal storage pointer"}},"id":16450,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"values","nodeType":"MemberAccess","referencedDeclaration":16090,"src":"7658:15:24","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":16452,"indexExpression":{"argumentTypes":null,"id":16451,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16433,"src":"7674:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7658:18:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16453,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16417,"src":"7678:8:24","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$16113_storage_ptr","typeString":"struct GovernorAlpha.Proposal storage pointer"}},"id":16454,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"signatures","nodeType":"MemberAccess","referencedDeclaration":16093,"src":"7678:19:24","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage","typeString":"string storage ref[] storage ref"}},"id":16456,"indexExpression":{"argumentTypes":null,"id":16455,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16433,"src":"7698:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7678:22:24","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16457,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16417,"src":"7702:8:24","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$16113_storage_ptr","typeString":"struct GovernorAlpha.Proposal storage pointer"}},"id":16458,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"calldatas","nodeType":"MemberAccess","referencedDeclaration":16096,"src":"7702:18:24","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage","typeString":"bytes storage ref[] storage ref"}},"id":16460,"indexExpression":{"argumentTypes":null,"id":16459,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16433,"src":"7721:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7702:21:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}},{"argumentTypes":null,"id":16461,"name":"eta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16423,"src":"7725:3:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_storage","typeString":"string storage ref"},{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16444,"name":"_queueOrRevert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16520,"src":"7622:14:24","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_string_memory_ptr_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (address,uint256,string memory,bytes memory,uint256)"}},"id":16462,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7622:107:24","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16463,"nodeType":"ExpressionStatement","src":"7622:107:24"}]},"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":16436,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16433,"src":"7574:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16437,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16417,"src":"7578:8:24","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$16113_storage_ptr","typeString":"struct GovernorAlpha.Proposal storage pointer"}},"id":16438,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"targets","nodeType":"MemberAccess","referencedDeclaration":16087,"src":"7578:16:24","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":16439,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"7578:23:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7574:27:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16465,"initializationExpression":{"assignments":[16433],"declarations":[{"constant":false,"id":16433,"name":"i","nodeType":"VariableDeclaration","scope":16465,"src":"7562:6:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16432,"name":"uint","nodeType":"ElementaryTypeName","src":"7562:4:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":16435,"initialValue":{"argumentTypes":null,"hexValue":"30","id":16434,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7571:1:24","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"7562:10:24"},"loopExpression":{"expression":{"argumentTypes":null,"id":16442,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"7603:3:24","subExpression":{"argumentTypes":null,"id":16441,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16433,"src":"7603:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16443,"nodeType":"ExpressionStatement","src":"7603:3:24"},"nodeType":"ForStatement","src":"7557:183:24"},{"expression":{"argumentTypes":null,"id":16470,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16466,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16417,"src":"7749:8:24","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$16113_storage_ptr","typeString":"struct GovernorAlpha.Proposal storage pointer"}},"id":16468,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"eta","nodeType":"MemberAccess","referencedDeclaration":16084,"src":"7749:12:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":16469,"name":"eta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16423,"src":"7764:3:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7749:18:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16471,"nodeType":"ExpressionStatement","src":"7749:18:24"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":16473,"name":"proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16403,"src":"7797:10:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":16474,"name":"eta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16423,"src":"7809:3:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16472,"name":"ProposalQueued","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16191,"src":"7782:14:24","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":16475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7782:31:24","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16476,"nodeType":"EmitStatement","src":"7777:36:24"}]},"documentation":null,"id":16478,"implemented":true,"kind":"function","modifiers":[],"name":"queue","nodeType":"FunctionDefinition","parameters":{"id":16404,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16403,"name":"proposalId","nodeType":"VariableDeclaration","scope":16478,"src":"7267:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16402,"name":"uint","nodeType":"ElementaryTypeName","src":"7267:4:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"7266:17:24"},"returnParameters":{"id":16405,"nodeType":"ParameterList","parameters":[],"src":"7291:0:24"},"scope":17194,"src":"7252:568:24","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":16519,"nodeType":"Block","src":"7941:258:24","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":16505,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"7959:88:24","subExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":16497,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16480,"src":"8009:6:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":16498,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16482,"src":"8017:5:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":16499,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16484,"src":"8024:9:24","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"argumentTypes":null,"id":16500,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16486,"src":"8035:4:24","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"argumentTypes":null,"id":16501,"name":"eta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16488,"src":"8041:3:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":16495,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22537,"src":"7998:3:24","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":16496,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","referencedDeclaration":null,"src":"7998:10:24","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":16502,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7998:47:24","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":16494,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22544,"src":"7988:9:24","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":16503,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7988:58:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"argumentTypes":null,"id":16492,"name":"timelock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16072,"src":"7960:8:24","typeDescriptions":{"typeIdentifier":"t_contract$_TimelockInterface_$17258","typeString":"contract TimelockInterface"}},"id":16493,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"queuedTransactions","nodeType":"MemberAccess","referencedDeclaration":17214,"src":"7960:27:24","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$returns$_t_bool_$","typeString":"function (bytes32) view external returns (bool)"}},"id":16504,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7960:87:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"476f7665726e6f72416c7068613a3a5f71756575654f725265766572743a2070726f706f73616c20616374696f6e20616c72656164792071756575656420617420657461","id":16506,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8049:70:24","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_9f2f7c3bae6cb2a10b5b2bdd0f8af6cd89782d3f0c1e0795e81a133975b25c86","typeString":"literal_string \"GovernorAlpha::_queueOrRevert: proposal action already queued at eta\""},"value":"GovernorAlpha::_queueOrRevert: proposal action already queued at eta"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9f2f7c3bae6cb2a10b5b2bdd0f8af6cd89782d3f0c1e0795e81a133975b25c86","typeString":"literal_string \"GovernorAlpha::_queueOrRevert: proposal action already queued at eta\""}],"id":16491,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"7951:7:24","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":16507,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7951:169:24","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16508,"nodeType":"ExpressionStatement","src":"7951:169:24"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":16512,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16480,"src":"8156:6:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":16513,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16482,"src":"8164:5:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":16514,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16484,"src":"8171:9:24","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"argumentTypes":null,"id":16515,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16486,"src":"8182:4:24","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"argumentTypes":null,"id":16516,"name":"eta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16488,"src":"8188:3:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":16509,"name":"timelock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16072,"src":"8130:8:24","typeDescriptions":{"typeIdentifier":"t_contract$_TimelockInterface_$17258","typeString":"contract TimelockInterface"}},"id":16511,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"queueTransaction","nodeType":"MemberAccess","referencedDeclaration":17229,"src":"8130:25:24","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_string_memory_ptr_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (address,uint256,string memory,bytes memory,uint256) external returns (bytes32)"}},"id":16517,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8130:62:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":16518,"nodeType":"ExpressionStatement","src":"8130:62:24"}]},"documentation":null,"id":16520,"implemented":true,"kind":"function","modifiers":[],"name":"_queueOrRevert","nodeType":"FunctionDefinition","parameters":{"id":16489,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16480,"name":"target","nodeType":"VariableDeclaration","scope":16520,"src":"7850:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16479,"name":"address","nodeType":"ElementaryTypeName","src":"7850:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":16482,"name":"value","nodeType":"VariableDeclaration","scope":16520,"src":"7866:10:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16481,"name":"uint","nodeType":"ElementaryTypeName","src":"7866:4:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":16484,"name":"signature","nodeType":"VariableDeclaration","scope":16520,"src":"7878:23:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":16483,"name":"string","nodeType":"ElementaryTypeName","src":"7878:6:24","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":null,"visibility":"internal"},{"constant":false,"id":16486,"name":"data","nodeType":"VariableDeclaration","scope":16520,"src":"7903:17:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":16485,"name":"bytes","nodeType":"ElementaryTypeName","src":"7903:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"},{"constant":false,"id":16488,"name":"eta","nodeType":"VariableDeclaration","scope":16520,"src":"7922:8:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16487,"name":"uint","nodeType":"ElementaryTypeName","src":"7922:4:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"7849:82:24"},"returnParameters":{"id":16490,"nodeType":"ParameterList","parameters":[],"src":"7941:0:24"},"scope":17194,"src":"7826:373:24","stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},{"body":{"id":16595,"nodeType":"Block","src":"8254:516:24","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_enum$_ProposalState_$16129","typeString":"enum GovernorAlpha.ProposalState"},"id":16531,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":16527,"name":"proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16522,"src":"8278:10:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16526,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16845,"src":"8272:5:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_enum$_ProposalState_$16129_$","typeString":"function (uint256) view returns (enum GovernorAlpha.ProposalState)"}},"id":16528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8272:17:24","typeDescriptions":{"typeIdentifier":"t_enum$_ProposalState_$16129","typeString":"enum GovernorAlpha.ProposalState"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16529,"name":"ProposalState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16129,"src":"8293:13:24","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ProposalState_$16129_$","typeString":"type(enum GovernorAlpha.ProposalState)"}},"id":16530,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"Queued","nodeType":"MemberAccess","referencedDeclaration":null,"src":"8293:20:24","typeDescriptions":{"typeIdentifier":"t_enum$_ProposalState_$16129","typeString":"enum GovernorAlpha.ProposalState"}},"src":"8272:41:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"476f7665726e6f72416c7068613a3a657865637574653a2070726f706f73616c2063616e206f6e6c7920626520657865637574656420696620697420697320717565756564","id":16532,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8315:71:24","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_1e6b39f7a3cdaa9f8cd196650711f6f6106ff22624580132558c7d2885a2b40c","typeString":"literal_string \"GovernorAlpha::execute: proposal can only be executed if it is queued\""},"value":"GovernorAlpha::execute: proposal can only be executed if it is queued"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1e6b39f7a3cdaa9f8cd196650711f6f6106ff22624580132558c7d2885a2b40c","typeString":"literal_string \"GovernorAlpha::execute: proposal can only be executed if it is queued\""}],"id":16525,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"8264:7:24","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":16533,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8264:123:24","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16534,"nodeType":"ExpressionStatement","src":"8264:123:24"},{"assignments":[16536],"declarations":[{"constant":false,"id":16536,"name":"proposal","nodeType":"VariableDeclaration","scope":16595,"src":"8397:25:24","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$16113_storage_ptr","typeString":"struct GovernorAlpha.Proposal"},"typeName":{"contractScope":null,"id":16535,"name":"Proposal","nodeType":"UserDefinedTypeName","referencedDeclaration":16113,"src":"8397:8:24","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$16113_storage_ptr","typeString":"struct GovernorAlpha.Proposal"}},"value":null,"visibility":"internal"}],"id":16540,"initialValue":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":16537,"name":"proposals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16133,"src":"8425:9:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Proposal_$16113_storage_$","typeString":"mapping(uint256 => struct GovernorAlpha.Proposal storage ref)"}},"id":16539,"indexExpression":{"argumentTypes":null,"id":16538,"name":"proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16522,"src":"8435:10:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8425:21:24","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$16113_storage","typeString":"struct GovernorAlpha.Proposal storage ref"}},"nodeType":"VariableDeclarationStatement","src":"8397:49:24"},{"expression":{"argumentTypes":null,"id":16545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16541,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16536,"src":"8456:8:24","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$16113_storage_ptr","typeString":"struct GovernorAlpha.Proposal storage pointer"}},"id":16543,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"executed","nodeType":"MemberAccess","referencedDeclaration":16108,"src":"8456:17:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"hexValue":"74727565","id":16544,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8476:4:24","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"8456:24:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16546,"nodeType":"ExpressionStatement","src":"8456:24:24"},{"body":{"id":16589,"nodeType":"Block","src":"8541:180:24","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16569,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16536,"src":"8609:8:24","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$16113_storage_ptr","typeString":"struct GovernorAlpha.Proposal storage pointer"}},"id":16570,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"targets","nodeType":"MemberAccess","referencedDeclaration":16087,"src":"8609:16:24","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":16572,"indexExpression":{"argumentTypes":null,"id":16571,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16548,"src":"8626:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8609:19:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16573,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16536,"src":"8630:8:24","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$16113_storage_ptr","typeString":"struct GovernorAlpha.Proposal storage pointer"}},"id":16574,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"values","nodeType":"MemberAccess","referencedDeclaration":16090,"src":"8630:15:24","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":16576,"indexExpression":{"argumentTypes":null,"id":16575,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16548,"src":"8646:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8630:18:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16577,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16536,"src":"8650:8:24","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$16113_storage_ptr","typeString":"struct GovernorAlpha.Proposal storage pointer"}},"id":16578,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"signatures","nodeType":"MemberAccess","referencedDeclaration":16093,"src":"8650:19:24","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage","typeString":"string storage ref[] storage ref"}},"id":16580,"indexExpression":{"argumentTypes":null,"id":16579,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16548,"src":"8670:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8650:22:24","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16581,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16536,"src":"8674:8:24","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$16113_storage_ptr","typeString":"struct GovernorAlpha.Proposal storage pointer"}},"id":16582,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"calldatas","nodeType":"MemberAccess","referencedDeclaration":16096,"src":"8674:18:24","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage","typeString":"bytes storage ref[] storage ref"}},"id":16584,"indexExpression":{"argumentTypes":null,"id":16583,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16548,"src":"8693:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8674:21:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16585,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16536,"src":"8697:8:24","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$16113_storage_ptr","typeString":"struct GovernorAlpha.Proposal storage pointer"}},"id":16586,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"eta","nodeType":"MemberAccess","referencedDeclaration":16084,"src":"8697:12:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_storage","typeString":"string storage ref"},{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"arguments":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16564,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16536,"src":"8589:8:24","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$16113_storage_ptr","typeString":"struct GovernorAlpha.Proposal storage pointer"}},"id":16565,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"values","nodeType":"MemberAccess","referencedDeclaration":16090,"src":"8589:15:24","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":16567,"indexExpression":{"argumentTypes":null,"id":16566,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16548,"src":"8605:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8589:18:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16559,"name":"timelock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16072,"src":"8555:8:24","typeDescriptions":{"typeIdentifier":"t_contract$_TimelockInterface_$17258","typeString":"contract TimelockInterface"}},"id":16562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"executeTransaction","nodeType":"MemberAccess","referencedDeclaration":17257,"src":"8555:27:24","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_uint256_$_t_string_memory_ptr_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,uint256,string memory,bytes memory,uint256) payable external returns (bytes memory)"}},"id":16563,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","referencedDeclaration":null,"src":"8555:33:24","typeDescriptions":{"typeIdentifier":"t_function_setvalue_pure$_t_uint256_$returns$_t_function_external_payable$_t_address_$_t_uint256_$_t_string_memory_ptr_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes_memory_ptr_$value_$","typeString":"function (uint256) pure returns (function (address,uint256,string memory,bytes memory,uint256) payable external returns (bytes memory))"}},"id":16568,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8555:53:24","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_uint256_$_t_string_memory_ptr_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes_memory_ptr_$value","typeString":"function (address,uint256,string memory,bytes memory,uint256) payable external returns (bytes memory)"}},"id":16587,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8555:155:24","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":16588,"nodeType":"ExpressionStatement","src":"8555:155:24"}]},"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16555,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":16551,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16548,"src":"8507:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16552,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16536,"src":"8511:8:24","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$16113_storage_ptr","typeString":"struct GovernorAlpha.Proposal storage pointer"}},"id":16553,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"targets","nodeType":"MemberAccess","referencedDeclaration":16087,"src":"8511:16:24","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":16554,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"8511:23:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8507:27:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16590,"initializationExpression":{"assignments":[16548],"declarations":[{"constant":false,"id":16548,"name":"i","nodeType":"VariableDeclaration","scope":16590,"src":"8495:6:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16547,"name":"uint","nodeType":"ElementaryTypeName","src":"8495:4:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":16550,"initialValue":{"argumentTypes":null,"hexValue":"30","id":16549,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8504:1:24","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"8495:10:24"},"loopExpression":{"expression":{"argumentTypes":null,"id":16557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"8536:3:24","subExpression":{"argumentTypes":null,"id":16556,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16548,"src":"8536:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16558,"nodeType":"ExpressionStatement","src":"8536:3:24"},"nodeType":"ForStatement","src":"8490:231:24"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":16592,"name":"proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16522,"src":"8752:10:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16591,"name":"ProposalExecuted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16195,"src":"8735:16:24","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":16593,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8735:28:24","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16594,"nodeType":"EmitStatement","src":"8730:33:24"}]},"documentation":null,"id":16596,"implemented":true,"kind":"function","modifiers":[],"name":"execute","nodeType":"FunctionDefinition","parameters":{"id":16523,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16522,"name":"proposalId","nodeType":"VariableDeclaration","scope":16596,"src":"8222:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16521,"name":"uint","nodeType":"ElementaryTypeName","src":"8222:4:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"8221:17:24"},"returnParameters":{"id":16524,"nodeType":"ParameterList","parameters":[],"src":"8254:0:24"},"scope":17194,"src":"8205:565:24","stateMutability":"payable","superFunction":null,"visibility":"public"},{"body":{"id":16690,"nodeType":"Block","src":"8816:696:24","statements":[{"assignments":[16602],"declarations":[{"constant":false,"id":16602,"name":"state","nodeType":"VariableDeclaration","scope":16690,"src":"8826:19:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_ProposalState_$16129","typeString":"enum GovernorAlpha.ProposalState"},"typeName":{"contractScope":null,"id":16601,"name":"ProposalState","nodeType":"UserDefinedTypeName","referencedDeclaration":16129,"src":"8826:13:24","typeDescriptions":{"typeIdentifier":"t_enum$_ProposalState_$16129","typeString":"enum GovernorAlpha.ProposalState"}},"value":null,"visibility":"internal"}],"id":16606,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":16604,"name":"proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16598,"src":"8854:10:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16603,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16845,"src":"8848:5:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_enum$_ProposalState_$16129_$","typeString":"function (uint256) view returns (enum GovernorAlpha.ProposalState)"}},"id":16605,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8848:17:24","typeDescriptions":{"typeIdentifier":"t_enum$_ProposalState_$16129","typeString":"enum GovernorAlpha.ProposalState"}},"nodeType":"VariableDeclarationStatement","src":"8826:39:24"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_enum$_ProposalState_$16129","typeString":"enum GovernorAlpha.ProposalState"},"id":16611,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":16608,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16602,"src":"8883:5:24","typeDescriptions":{"typeIdentifier":"t_enum$_ProposalState_$16129","typeString":"enum GovernorAlpha.ProposalState"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16609,"name":"ProposalState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16129,"src":"8892:13:24","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ProposalState_$16129_$","typeString":"type(enum GovernorAlpha.ProposalState)"}},"id":16610,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"Executed","nodeType":"MemberAccess","referencedDeclaration":null,"src":"8892:22:24","typeDescriptions":{"typeIdentifier":"t_enum$_ProposalState_$16129","typeString":"enum GovernorAlpha.ProposalState"}},"src":"8883:31:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"476f7665726e6f72416c7068613a3a63616e63656c3a2063616e6e6f742063616e63656c2065786563757465642070726f706f73616c","id":16612,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8916:56:24","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_e9d477897cfec9b3c036d388c3168bf4ff9f6d4c49c58b845fd31f77ad2af11d","typeString":"literal_string \"GovernorAlpha::cancel: cannot cancel executed proposal\""},"value":"GovernorAlpha::cancel: cannot cancel executed proposal"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e9d477897cfec9b3c036d388c3168bf4ff9f6d4c49c58b845fd31f77ad2af11d","typeString":"literal_string \"GovernorAlpha::cancel: cannot cancel executed proposal\""}],"id":16607,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"8875:7:24","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":16613,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8875:98:24","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16614,"nodeType":"ExpressionStatement","src":"8875:98:24"},{"assignments":[16616],"declarations":[{"constant":false,"id":16616,"name":"proposal","nodeType":"VariableDeclaration","scope":16690,"src":"8984:25:24","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$16113_storage_ptr","typeString":"struct GovernorAlpha.Proposal"},"typeName":{"contractScope":null,"id":16615,"name":"Proposal","nodeType":"UserDefinedTypeName","referencedDeclaration":16113,"src":"8984:8:24","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$16113_storage_ptr","typeString":"struct GovernorAlpha.Proposal"}},"value":null,"visibility":"internal"}],"id":16620,"initialValue":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":16617,"name":"proposals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16133,"src":"9012:9:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Proposal_$16113_storage_$","typeString":"mapping(uint256 => struct GovernorAlpha.Proposal storage ref)"}},"id":16619,"indexExpression":{"argumentTypes":null,"id":16618,"name":"proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16598,"src":"9022:10:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9012:21:24","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$16113_storage","typeString":"struct GovernorAlpha.Proposal storage ref"}},"nodeType":"VariableDeclarationStatement","src":"8984:49:24"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":16639,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":16625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16622,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"9051:3:24","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":16623,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"9051:10:24","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":16624,"name":"guardian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16076,"src":"9065:8:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9051:22:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16628,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16616,"src":"9096:8:24","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$16113_storage_ptr","typeString":"struct GovernorAlpha.Proposal storage pointer"}},"id":16629,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"proposer","nodeType":"MemberAccess","referencedDeclaration":16082,"src":"9096:17:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16631,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22540,"src":"9122:5:24","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":16632,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"number","nodeType":"MemberAccess","referencedDeclaration":null,"src":"9122:12:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"31","id":16633,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9136:1:24","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":16630,"name":"sub256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17181,"src":"9115:6:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":16634,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9115:23:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":16626,"name":"comp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16074,"src":"9077:4:24","typeDescriptions":{"typeIdentifier":"t_contract$_CompInterface_$17268","typeString":"contract CompInterface"}},"id":16627,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getPriorVotes","nodeType":"MemberAccess","referencedDeclaration":17267,"src":"9077:18:24","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_uint256_$returns$_t_uint96_$","typeString":"function (address,uint256) view external returns (uint96)"}},"id":16635,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9077:62:24","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":16636,"name":"proposalThreshold","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16046,"src":"9142:17:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_uint256_$","typeString":"function () pure returns (uint256)"}},"id":16637,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9142:19:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9077:84:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"9051:110:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"476f7665726e6f72416c7068613a3a63616e63656c3a2070726f706f7365722061626f7665207468726573686f6c64","id":16640,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9163:49:24","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_955146449a8b4861230739fdd349c84a094c3689202256bb43330a0b0d63a0ae","typeString":"literal_string \"GovernorAlpha::cancel: proposer above threshold\""},"value":"GovernorAlpha::cancel: proposer above threshold"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_955146449a8b4861230739fdd349c84a094c3689202256bb43330a0b0d63a0ae","typeString":"literal_string \"GovernorAlpha::cancel: proposer above threshold\""}],"id":16621,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"9043:7:24","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":16641,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9043:170:24","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16642,"nodeType":"ExpressionStatement","src":"9043:170:24"},{"expression":{"argumentTypes":null,"id":16647,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16643,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16616,"src":"9224:8:24","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$16113_storage_ptr","typeString":"struct GovernorAlpha.Proposal storage pointer"}},"id":16645,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"canceled","nodeType":"MemberAccess","referencedDeclaration":16106,"src":"9224:17:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"hexValue":"74727565","id":16646,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9244:4:24","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"9224:24:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16648,"nodeType":"ExpressionStatement","src":"9224:24:24"},{"body":{"id":16684,"nodeType":"Block","src":"9309:153:24","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16664,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16616,"src":"9350:8:24","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$16113_storage_ptr","typeString":"struct GovernorAlpha.Proposal storage pointer"}},"id":16665,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"targets","nodeType":"MemberAccess","referencedDeclaration":16087,"src":"9350:16:24","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":16667,"indexExpression":{"argumentTypes":null,"id":16666,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16650,"src":"9367:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9350:19:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16668,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16616,"src":"9371:8:24","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$16113_storage_ptr","typeString":"struct GovernorAlpha.Proposal storage pointer"}},"id":16669,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"values","nodeType":"MemberAccess","referencedDeclaration":16090,"src":"9371:15:24","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":16671,"indexExpression":{"argumentTypes":null,"id":16670,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16650,"src":"9387:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9371:18:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16672,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16616,"src":"9391:8:24","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$16113_storage_ptr","typeString":"struct GovernorAlpha.Proposal storage pointer"}},"id":16673,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"signatures","nodeType":"MemberAccess","referencedDeclaration":16093,"src":"9391:19:24","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage","typeString":"string storage ref[] storage ref"}},"id":16675,"indexExpression":{"argumentTypes":null,"id":16674,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16650,"src":"9411:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9391:22:24","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16676,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16616,"src":"9415:8:24","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$16113_storage_ptr","typeString":"struct GovernorAlpha.Proposal storage pointer"}},"id":16677,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"calldatas","nodeType":"MemberAccess","referencedDeclaration":16096,"src":"9415:18:24","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage","typeString":"bytes storage ref[] storage ref"}},"id":16679,"indexExpression":{"argumentTypes":null,"id":16678,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16650,"src":"9434:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9415:21:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16680,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16616,"src":"9438:8:24","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$16113_storage_ptr","typeString":"struct GovernorAlpha.Proposal storage pointer"}},"id":16681,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"eta","nodeType":"MemberAccess","referencedDeclaration":16084,"src":"9438:12:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_storage","typeString":"string storage ref"},{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":16661,"name":"timelock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16072,"src":"9323:8:24","typeDescriptions":{"typeIdentifier":"t_contract$_TimelockInterface_$17258","typeString":"contract TimelockInterface"}},"id":16663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"cancelTransaction","nodeType":"MemberAccess","referencedDeclaration":17242,"src":"9323:26:24","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_string_memory_ptr_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (address,uint256,string memory,bytes memory,uint256) external"}},"id":16682,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9323:128:24","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16683,"nodeType":"ExpressionStatement","src":"9323:128:24"}]},"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16657,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":16653,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16650,"src":"9275:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16654,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16616,"src":"9279:8:24","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$16113_storage_ptr","typeString":"struct GovernorAlpha.Proposal storage pointer"}},"id":16655,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"targets","nodeType":"MemberAccess","referencedDeclaration":16087,"src":"9279:16:24","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":16656,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"9279:23:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9275:27:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16685,"initializationExpression":{"assignments":[16650],"declarations":[{"constant":false,"id":16650,"name":"i","nodeType":"VariableDeclaration","scope":16685,"src":"9263:6:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16649,"name":"uint","nodeType":"ElementaryTypeName","src":"9263:4:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":16652,"initialValue":{"argumentTypes":null,"hexValue":"30","id":16651,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9272:1:24","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"9263:10:24"},"loopExpression":{"expression":{"argumentTypes":null,"id":16659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"9304:3:24","subExpression":{"argumentTypes":null,"id":16658,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16650,"src":"9304:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16660,"nodeType":"ExpressionStatement","src":"9304:3:24"},"nodeType":"ForStatement","src":"9258:204:24"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":16687,"name":"proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16598,"src":"9494:10:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16686,"name":"ProposalCanceled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16185,"src":"9477:16:24","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":16688,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9477:28:24","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16689,"nodeType":"EmitStatement","src":"9472:33:24"}]},"documentation":null,"id":16691,"implemented":true,"kind":"function","modifiers":[],"name":"cancel","nodeType":"FunctionDefinition","parameters":{"id":16599,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16598,"name":"proposalId","nodeType":"VariableDeclaration","scope":16691,"src":"8792:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16597,"name":"uint","nodeType":"ElementaryTypeName","src":"8792:4:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"8791:17:24"},"returnParameters":{"id":16600,"nodeType":"ParameterList","parameters":[],"src":"8816:0:24"},"scope":17194,"src":"8776:736:24","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":16724,"nodeType":"Block","src":"9678:124:24","statements":[{"assignments":[16709],"declarations":[{"constant":false,"id":16709,"name":"p","nodeType":"VariableDeclaration","scope":16724,"src":"9688:18:24","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$16113_storage_ptr","typeString":"struct GovernorAlpha.Proposal"},"typeName":{"contractScope":null,"id":16708,"name":"Proposal","nodeType":"UserDefinedTypeName","referencedDeclaration":16113,"src":"9688:8:24","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$16113_storage_ptr","typeString":"struct GovernorAlpha.Proposal"}},"value":null,"visibility":"internal"}],"id":16713,"initialValue":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":16710,"name":"proposals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16133,"src":"9709:9:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Proposal_$16113_storage_$","typeString":"mapping(uint256 => struct GovernorAlpha.Proposal storage ref)"}},"id":16712,"indexExpression":{"argumentTypes":null,"id":16711,"name":"proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16693,"src":"9719:10:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9709:21:24","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$16113_storage","typeString":"struct GovernorAlpha.Proposal storage ref"}},"nodeType":"VariableDeclarationStatement","src":"9688:42:24"},{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16714,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16709,"src":"9748:1:24","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$16113_storage_ptr","typeString":"struct GovernorAlpha.Proposal storage pointer"}},"id":16715,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"targets","nodeType":"MemberAccess","referencedDeclaration":16087,"src":"9748:9:24","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16716,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16709,"src":"9759:1:24","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$16113_storage_ptr","typeString":"struct GovernorAlpha.Proposal storage pointer"}},"id":16717,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"values","nodeType":"MemberAccess","referencedDeclaration":16090,"src":"9759:8:24","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16718,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16709,"src":"9769:1:24","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$16113_storage_ptr","typeString":"struct GovernorAlpha.Proposal storage pointer"}},"id":16719,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"signatures","nodeType":"MemberAccess","referencedDeclaration":16093,"src":"9769:12:24","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage","typeString":"string storage ref[] storage ref"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16720,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16709,"src":"9783:1:24","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$16113_storage_ptr","typeString":"struct GovernorAlpha.Proposal storage pointer"}},"id":16721,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"calldatas","nodeType":"MemberAccess","referencedDeclaration":16096,"src":"9783:11:24","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage","typeString":"bytes storage ref[] storage ref"}}],"id":16722,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9747:48:24","typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_address_$dyn_storage_$_t_array$_t_uint256_$dyn_storage_$_t_array$_t_string_storage_$dyn_storage_$_t_array$_t_bytes_storage_$dyn_storage_$","typeString":"tuple(address[] storage ref,uint256[] storage ref,string storage ref[] storage ref,bytes storage ref[] storage ref)"}},"functionReturnParameters":16707,"id":16723,"nodeType":"Return","src":"9740:55:24"}]},"documentation":null,"id":16725,"implemented":true,"kind":"function","modifiers":[],"name":"getActions","nodeType":"FunctionDefinition","parameters":{"id":16694,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16693,"name":"proposalId","nodeType":"VariableDeclaration","scope":16725,"src":"9538:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16692,"name":"uint","nodeType":"ElementaryTypeName","src":"9538:4:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"9537:17:24"},"returnParameters":{"id":16707,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16697,"name":"targets","nodeType":"VariableDeclaration","scope":16725,"src":"9576:24:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":16695,"name":"address","nodeType":"ElementaryTypeName","src":"9576:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":16696,"length":null,"nodeType":"ArrayTypeName","src":"9576:9:24","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":16700,"name":"values","nodeType":"VariableDeclaration","scope":16725,"src":"9602:20:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":16698,"name":"uint","nodeType":"ElementaryTypeName","src":"9602:4:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16699,"length":null,"nodeType":"ArrayTypeName","src":"9602:6:24","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":16703,"name":"signatures","nodeType":"VariableDeclaration","scope":16725,"src":"9624:26:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_$dyn_memory_ptr","typeString":"string[]"},"typeName":{"baseType":{"id":16701,"name":"string","nodeType":"ElementaryTypeName","src":"9624:6:24","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":16702,"length":null,"nodeType":"ArrayTypeName","src":"9624:8:24","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":16706,"name":"calldatas","nodeType":"VariableDeclaration","scope":16725,"src":"9652:24:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":16704,"name":"bytes","nodeType":"ElementaryTypeName","src":"9652:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":16705,"length":null,"nodeType":"ArrayTypeName","src":"9652:7:24","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"value":null,"visibility":"internal"}],"src":"9575:102:24"},"scope":17194,"src":"9518:284:24","stateMutability":"view","superFunction":null,"visibility":"public"},{"body":{"id":16741,"nodeType":"Block","src":"9897:61:24","statements":[{"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":16734,"name":"proposals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16133,"src":"9914:9:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Proposal_$16113_storage_$","typeString":"mapping(uint256 => struct GovernorAlpha.Proposal storage ref)"}},"id":16736,"indexExpression":{"argumentTypes":null,"id":16735,"name":"proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16727,"src":"9924:10:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9914:21:24","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$16113_storage","typeString":"struct GovernorAlpha.Proposal storage ref"}},"id":16737,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"receipts","nodeType":"MemberAccess","referencedDeclaration":16112,"src":"9914:30:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Receipt_$16120_storage_$","typeString":"mapping(address => struct GovernorAlpha.Receipt storage ref)"}},"id":16739,"indexExpression":{"argumentTypes":null,"id":16738,"name":"voter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16729,"src":"9945:5:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9914:37:24","typeDescriptions":{"typeIdentifier":"t_struct$_Receipt_$16120_storage","typeString":"struct GovernorAlpha.Receipt storage ref"}},"functionReturnParameters":16733,"id":16740,"nodeType":"Return","src":"9907:44:24"}]},"documentation":null,"id":16742,"implemented":true,"kind":"function","modifiers":[],"name":"getReceipt","nodeType":"FunctionDefinition","parameters":{"id":16730,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16727,"name":"proposalId","nodeType":"VariableDeclaration","scope":16742,"src":"9828:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16726,"name":"uint","nodeType":"ElementaryTypeName","src":"9828:4:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":16729,"name":"voter","nodeType":"VariableDeclaration","scope":16742,"src":"9845:13:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16728,"name":"address","nodeType":"ElementaryTypeName","src":"9845:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"9827:32:24"},"returnParameters":{"id":16733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16732,"name":"","nodeType":"VariableDeclaration","scope":16742,"src":"9881:14:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Receipt_$16120_memory_ptr","typeString":"struct GovernorAlpha.Receipt"},"typeName":{"contractScope":null,"id":16731,"name":"Receipt","nodeType":"UserDefinedTypeName","referencedDeclaration":16120,"src":"9881:7:24","typeDescriptions":{"typeIdentifier":"t_struct$_Receipt_$16120_storage_ptr","typeString":"struct GovernorAlpha.Receipt"}},"value":null,"visibility":"internal"}],"src":"9880:16:24"},"scope":17194,"src":"9808:150:24","stateMutability":"view","superFunction":null,"visibility":"public"},{"body":{"id":16844,"nodeType":"Block","src":"10032:957:24","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":16756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16752,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":16750,"name":"proposalCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16078,"src":"10050:13:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"argumentTypes":null,"id":16751,"name":"proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16744,"src":"10067:10:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10050:27:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":16753,"name":"proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16744,"src":"10081:10:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"30","id":16754,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10094:1:24","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10081:14:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"10050:45:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"476f7665726e6f72416c7068613a3a73746174653a20696e76616c69642070726f706f73616c206964","id":16757,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10097:43:24","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_4e13bf7de4ba5f0690868b0ce8fbbb5874a1007783c383619a200c32a346f517","typeString":"literal_string \"GovernorAlpha::state: invalid proposal id\""},"value":"GovernorAlpha::state: invalid proposal id"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_4e13bf7de4ba5f0690868b0ce8fbbb5874a1007783c383619a200c32a346f517","typeString":"literal_string \"GovernorAlpha::state: invalid proposal id\""}],"id":16749,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"10042:7:24","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":16758,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10042:99:24","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16759,"nodeType":"ExpressionStatement","src":"10042:99:24"},{"assignments":[16761],"declarations":[{"constant":false,"id":16761,"name":"proposal","nodeType":"VariableDeclaration","scope":16844,"src":"10151:25:24","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$16113_storage_ptr","typeString":"struct GovernorAlpha.Proposal"},"typeName":{"contractScope":null,"id":16760,"name":"Proposal","nodeType":"UserDefinedTypeName","referencedDeclaration":16113,"src":"10151:8:24","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$16113_storage_ptr","typeString":"struct GovernorAlpha.Proposal"}},"value":null,"visibility":"internal"}],"id":16765,"initialValue":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":16762,"name":"proposals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16133,"src":"10179:9:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Proposal_$16113_storage_$","typeString":"mapping(uint256 => struct GovernorAlpha.Proposal storage ref)"}},"id":16764,"indexExpression":{"argumentTypes":null,"id":16763,"name":"proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16744,"src":"10189:10:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10179:21:24","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$16113_storage","typeString":"struct GovernorAlpha.Proposal storage ref"}},"nodeType":"VariableDeclarationStatement","src":"10151:49:24"},{"condition":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16766,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16761,"src":"10214:8:24","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$16113_storage_ptr","typeString":"struct GovernorAlpha.Proposal storage pointer"}},"id":16767,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"canceled","nodeType":"MemberAccess","referencedDeclaration":16106,"src":"10214:17:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16776,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16772,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22540,"src":"10297:5:24","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":16773,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"number","nodeType":"MemberAccess","referencedDeclaration":null,"src":"10297:12:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16774,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16761,"src":"10313:8:24","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$16113_storage_ptr","typeString":"struct GovernorAlpha.Proposal storage pointer"}},"id":16775,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"startBlock","nodeType":"MemberAccess","referencedDeclaration":16098,"src":"10313:19:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10297:35:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16785,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16781,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22540,"src":"10397:5:24","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":16782,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"number","nodeType":"MemberAccess","referencedDeclaration":null,"src":"10397:12:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16783,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16761,"src":"10413:8:24","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$16113_storage_ptr","typeString":"struct GovernorAlpha.Proposal storage pointer"}},"id":16784,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"endBlock","nodeType":"MemberAccess","referencedDeclaration":16100,"src":"10413:17:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10397:33:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":16800,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16794,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16790,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16761,"src":"10494:8:24","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$16113_storage_ptr","typeString":"struct GovernorAlpha.Proposal storage pointer"}},"id":16791,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"forVotes","nodeType":"MemberAccess","referencedDeclaration":16102,"src":"10494:17:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16792,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16761,"src":"10515:8:24","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$16113_storage_ptr","typeString":"struct GovernorAlpha.Proposal storage pointer"}},"id":16793,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"againstVotes","nodeType":"MemberAccess","referencedDeclaration":16104,"src":"10515:21:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10494:42:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16799,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16795,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16761,"src":"10540:8:24","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$16113_storage_ptr","typeString":"struct GovernorAlpha.Proposal storage pointer"}},"id":16796,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"forVotes","nodeType":"MemberAccess","referencedDeclaration":16102,"src":"10540:17:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":16797,"name":"quorumVotes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16038,"src":"10560:11:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_uint256_$","typeString":"function () pure returns (uint256)"}},"id":16798,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10560:13:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10540:33:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"10494:79:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16805,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16761,"src":"10639:8:24","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$16113_storage_ptr","typeString":"struct GovernorAlpha.Proposal storage pointer"}},"id":16806,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"eta","nodeType":"MemberAccess","referencedDeclaration":16084,"src":"10639:12:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":16807,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10655:1:24","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10639:17:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16813,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16761,"src":"10723:8:24","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$16113_storage_ptr","typeString":"struct GovernorAlpha.Proposal storage pointer"}},"id":16814,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"executed","nodeType":"MemberAccess","referencedDeclaration":16108,"src":"10723:17:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16819,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22540,"src":"10806:5:24","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":16820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":null,"src":"10806:15:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16822,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16761,"src":"10832:8:24","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$16113_storage_ptr","typeString":"struct GovernorAlpha.Proposal storage pointer"}},"id":16823,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"eta","nodeType":"MemberAccess","referencedDeclaration":16084,"src":"10832:12:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":16824,"name":"timelock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16072,"src":"10846:8:24","typeDescriptions":{"typeIdentifier":"t_contract$_TimelockInterface_$17258","typeString":"contract TimelockInterface"}},"id":16825,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"GRACE_PERIOD","nodeType":"MemberAccess","referencedDeclaration":17204,"src":"10846:21:24","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":16826,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10846:23:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16821,"name":"add256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17160,"src":"10825:6:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":16827,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10825:45:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10806:64:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":16836,"nodeType":"Block","src":"10931:52:24","statements":[{"expression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16833,"name":"ProposalState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16129,"src":"10952:13:24","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ProposalState_$16129_$","typeString":"type(enum GovernorAlpha.ProposalState)"}},"id":16834,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"Queued","nodeType":"MemberAccess","referencedDeclaration":null,"src":"10952:20:24","typeDescriptions":{"typeIdentifier":"t_enum$_ProposalState_$16129","typeString":"enum GovernorAlpha.ProposalState"}},"functionReturnParameters":16748,"id":16835,"nodeType":"Return","src":"10945:27:24"}]},"id":16837,"nodeType":"IfStatement","src":"10802:181:24","trueBody":{"id":16832,"nodeType":"Block","src":"10872:53:24","statements":[{"expression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16829,"name":"ProposalState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16129,"src":"10893:13:24","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ProposalState_$16129_$","typeString":"type(enum GovernorAlpha.ProposalState)"}},"id":16830,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"Expired","nodeType":"MemberAccess","referencedDeclaration":null,"src":"10893:21:24","typeDescriptions":{"typeIdentifier":"t_enum$_ProposalState_$16129","typeString":"enum GovernorAlpha.ProposalState"}},"functionReturnParameters":16748,"id":16831,"nodeType":"Return","src":"10886:28:24"}]}},"id":16838,"nodeType":"IfStatement","src":"10719:264:24","trueBody":{"id":16818,"nodeType":"Block","src":"10742:54:24","statements":[{"expression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16815,"name":"ProposalState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16129,"src":"10763:13:24","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ProposalState_$16129_$","typeString":"type(enum GovernorAlpha.ProposalState)"}},"id":16816,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"Executed","nodeType":"MemberAccess","referencedDeclaration":null,"src":"10763:22:24","typeDescriptions":{"typeIdentifier":"t_enum$_ProposalState_$16129","typeString":"enum GovernorAlpha.ProposalState"}},"functionReturnParameters":16748,"id":16817,"nodeType":"Return","src":"10756:29:24"}]}},"id":16839,"nodeType":"IfStatement","src":"10635:348:24","trueBody":{"id":16812,"nodeType":"Block","src":"10658:55:24","statements":[{"expression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16809,"name":"ProposalState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16129,"src":"10679:13:24","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ProposalState_$16129_$","typeString":"type(enum GovernorAlpha.ProposalState)"}},"id":16810,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"Succeeded","nodeType":"MemberAccess","referencedDeclaration":null,"src":"10679:23:24","typeDescriptions":{"typeIdentifier":"t_enum$_ProposalState_$16129","typeString":"enum GovernorAlpha.ProposalState"}},"functionReturnParameters":16748,"id":16811,"nodeType":"Return","src":"10672:30:24"}]}},"id":16840,"nodeType":"IfStatement","src":"10490:493:24","trueBody":{"id":16804,"nodeType":"Block","src":"10575:54:24","statements":[{"expression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16801,"name":"ProposalState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16129,"src":"10596:13:24","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ProposalState_$16129_$","typeString":"type(enum GovernorAlpha.ProposalState)"}},"id":16802,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"Defeated","nodeType":"MemberAccess","referencedDeclaration":null,"src":"10596:22:24","typeDescriptions":{"typeIdentifier":"t_enum$_ProposalState_$16129","typeString":"enum GovernorAlpha.ProposalState"}},"functionReturnParameters":16748,"id":16803,"nodeType":"Return","src":"10589:29:24"}]}},"id":16841,"nodeType":"IfStatement","src":"10393:590:24","trueBody":{"id":16789,"nodeType":"Block","src":"10432:52:24","statements":[{"expression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16786,"name":"ProposalState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16129,"src":"10453:13:24","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ProposalState_$16129_$","typeString":"type(enum GovernorAlpha.ProposalState)"}},"id":16787,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"Active","nodeType":"MemberAccess","referencedDeclaration":null,"src":"10453:20:24","typeDescriptions":{"typeIdentifier":"t_enum$_ProposalState_$16129","typeString":"enum GovernorAlpha.ProposalState"}},"functionReturnParameters":16748,"id":16788,"nodeType":"Return","src":"10446:27:24"}]}},"id":16842,"nodeType":"IfStatement","src":"10293:690:24","trueBody":{"id":16780,"nodeType":"Block","src":"10334:53:24","statements":[{"expression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16777,"name":"ProposalState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16129,"src":"10355:13:24","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ProposalState_$16129_$","typeString":"type(enum GovernorAlpha.ProposalState)"}},"id":16778,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"Pending","nodeType":"MemberAccess","referencedDeclaration":null,"src":"10355:21:24","typeDescriptions":{"typeIdentifier":"t_enum$_ProposalState_$16129","typeString":"enum GovernorAlpha.ProposalState"}},"functionReturnParameters":16748,"id":16779,"nodeType":"Return","src":"10348:28:24"}]}},"id":16843,"nodeType":"IfStatement","src":"10210:773:24","trueBody":{"id":16771,"nodeType":"Block","src":"10233:54:24","statements":[{"expression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16768,"name":"ProposalState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16129,"src":"10254:13:24","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ProposalState_$16129_$","typeString":"type(enum GovernorAlpha.ProposalState)"}},"id":16769,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"Canceled","nodeType":"MemberAccess","referencedDeclaration":null,"src":"10254:22:24","typeDescriptions":{"typeIdentifier":"t_enum$_ProposalState_$16129","typeString":"enum GovernorAlpha.ProposalState"}},"functionReturnParameters":16748,"id":16770,"nodeType":"Return","src":"10247:29:24"}]}}]},"documentation":null,"id":16845,"implemented":true,"kind":"function","modifiers":[],"name":"state","nodeType":"FunctionDefinition","parameters":{"id":16745,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16744,"name":"proposalId","nodeType":"VariableDeclaration","scope":16845,"src":"9979:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16743,"name":"uint","nodeType":"ElementaryTypeName","src":"9979:4:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"9978:17:24"},"returnParameters":{"id":16748,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16747,"name":"","nodeType":"VariableDeclaration","scope":16845,"src":"10017:13:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_ProposalState_$16129","typeString":"enum GovernorAlpha.ProposalState"},"typeName":{"contractScope":null,"id":16746,"name":"ProposalState","nodeType":"UserDefinedTypeName","referencedDeclaration":16129,"src":"10017:13:24","typeDescriptions":{"typeIdentifier":"t_enum$_ProposalState_$16129","typeString":"enum GovernorAlpha.ProposalState"}},"value":null,"visibility":"internal"}],"src":"10016:15:24"},"scope":17194,"src":"9964:1025:24","stateMutability":"view","superFunction":null,"visibility":"public"},{"body":{"id":16859,"nodeType":"Block","src":"11051:66:24","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16853,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"11078:3:24","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":16854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"11078:10:24","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"id":16855,"name":"proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16847,"src":"11090:10:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":16856,"name":"support","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16849,"src":"11102:7:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":16852,"name":"_castVote","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17038,"src":"11068:9:24","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bool_$returns$__$","typeString":"function (address,uint256,bool)"}},"id":16857,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11068:42:24","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"functionReturnParameters":16851,"id":16858,"nodeType":"Return","src":"11061:49:24"}]},"documentation":null,"id":16860,"implemented":true,"kind":"function","modifiers":[],"name":"castVote","nodeType":"FunctionDefinition","parameters":{"id":16850,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16847,"name":"proposalId","nodeType":"VariableDeclaration","scope":16860,"src":"11013:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16846,"name":"uint","nodeType":"ElementaryTypeName","src":"11013:4:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":16849,"name":"support","nodeType":"VariableDeclaration","scope":16860,"src":"11030:12:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":16848,"name":"bool","nodeType":"ElementaryTypeName","src":"11030:4:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"11012:31:24"},"returnParameters":{"id":16851,"nodeType":"ParameterList","parameters":[],"src":"11051:0:24"},"scope":17194,"src":"10995:122:24","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":16938,"nodeType":"Block","src":"11215:526:24","statements":[{"assignments":[16874],"declarations":[{"constant":false,"id":16874,"name":"domainSeparator","nodeType":"VariableDeclaration","scope":16938,"src":"11225:23:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16873,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11225:7:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"}],"id":16891,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":16878,"name":"DOMAIN_TYPEHASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16142,"src":"11272:15:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":16881,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16030,"src":"11305:4:24","typeDescriptions":{"typeIdentifier":"t_string_memory","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory","typeString":"string memory"}],"id":16880,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11299:5:24","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":"bytes"},"id":16882,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11299:11:24","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":16879,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22544,"src":"11289:9:24","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":16883,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11289:22:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":16884,"name":"getChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17193,"src":"11313:10:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_uint256_$","typeString":"function () pure returns (uint256)"}},"id":16885,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11313:12:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":16887,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22666,"src":"11335:4:24","typeDescriptions":{"typeIdentifier":"t_contract$_GovernorAlpha_$17194","typeString":"contract GovernorAlpha"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_GovernorAlpha_$17194","typeString":"contract GovernorAlpha"}],"id":16886,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11327:7:24","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":16888,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11327:13:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":16876,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22537,"src":"11261:3:24","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":16877,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","referencedDeclaration":null,"src":"11261:10:24","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":16889,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11261:80:24","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":16875,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22544,"src":"11251:9:24","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":16890,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11251:91:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"11225:117:24"},{"assignments":[16893],"declarations":[{"constant":false,"id":16893,"name":"structHash","nodeType":"VariableDeclaration","scope":16938,"src":"11352:18:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16892,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11352:7:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"}],"id":16902,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":16897,"name":"BALLOT_TYPEHASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16147,"src":"11394:15:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":16898,"name":"proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16862,"src":"11411:10:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":16899,"name":"support","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16864,"src":"11423:7:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"argumentTypes":null,"id":16895,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22537,"src":"11383:3:24","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":16896,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","referencedDeclaration":null,"src":"11383:10:24","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":16900,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11383:48:24","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":16894,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22544,"src":"11373:9:24","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":16901,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11373:59:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"11352:80:24"},{"assignments":[16904],"declarations":[{"constant":false,"id":16904,"name":"digest","nodeType":"VariableDeclaration","scope":16938,"src":"11442:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16903,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11442:7:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"}],"id":16913,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"1901","id":16908,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11486:10:24","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541","typeString":"literal_string \"\u0019\u0001\""},"value":"\u0019\u0001"},{"argumentTypes":null,"id":16909,"name":"domainSeparator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16874,"src":"11498:15:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":16910,"name":"structHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16893,"src":"11515:10:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541","typeString":"literal_string \"\u0019\u0001\""},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"argumentTypes":null,"id":16906,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22537,"src":"11469:3:24","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":16907,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","referencedDeclaration":null,"src":"11469:16:24","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":16911,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11469:57:24","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":16905,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22544,"src":"11459:9:24","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":16912,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11459:68:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"11442:85:24"},{"assignments":[16915],"declarations":[{"constant":false,"id":16915,"name":"signatory","nodeType":"VariableDeclaration","scope":16938,"src":"11537:17:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16914,"name":"address","nodeType":"ElementaryTypeName","src":"11537:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":16922,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":16917,"name":"digest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16904,"src":"11567:6:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":16918,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16866,"src":"11575:1:24","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"argumentTypes":null,"id":16919,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16868,"src":"11578:1:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":16920,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16870,"src":"11581:1:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":16916,"name":"ecrecover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22542,"src":"11557:9:24","typeDescriptions":{"typeIdentifier":"t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address)"}},"id":16921,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11557:26:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"11537:46:24"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":16928,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":16924,"name":"signatory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16915,"src":"11601:9:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":16926,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11622:1:24","subdenomination":null,"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":16925,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11614:7:24","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":16927,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11614:10:24","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"11601:23:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"476f7665726e6f72416c7068613a3a63617374566f746542795369673a20696e76616c6964207369676e6174757265","id":16929,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11626:49:24","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_c0985792d8cb800c80e50f8ecca736cc3e54b8c9588453e723506f4e50d429f9","typeString":"literal_string \"GovernorAlpha::castVoteBySig: invalid signature\""},"value":"GovernorAlpha::castVoteBySig: invalid signature"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c0985792d8cb800c80e50f8ecca736cc3e54b8c9588453e723506f4e50d429f9","typeString":"literal_string \"GovernorAlpha::castVoteBySig: invalid signature\""}],"id":16923,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"11593:7:24","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":16930,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11593:83:24","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16931,"nodeType":"ExpressionStatement","src":"11593:83:24"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":16933,"name":"signatory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16915,"src":"11703:9:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":16934,"name":"proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16862,"src":"11714:10:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":16935,"name":"support","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16864,"src":"11726:7:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":16932,"name":"_castVote","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17038,"src":"11693:9:24","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bool_$returns$__$","typeString":"function (address,uint256,bool)"}},"id":16936,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11693:41:24","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"functionReturnParameters":16872,"id":16937,"nodeType":"Return","src":"11686:48:24"}]},"documentation":null,"id":16939,"implemented":true,"kind":"function","modifiers":[],"name":"castVoteBySig","nodeType":"FunctionDefinition","parameters":{"id":16871,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16862,"name":"proposalId","nodeType":"VariableDeclaration","scope":16939,"src":"11146:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16861,"name":"uint","nodeType":"ElementaryTypeName","src":"11146:4:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":16864,"name":"support","nodeType":"VariableDeclaration","scope":16939,"src":"11163:12:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":16863,"name":"bool","nodeType":"ElementaryTypeName","src":"11163:4:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},{"constant":false,"id":16866,"name":"v","nodeType":"VariableDeclaration","scope":16939,"src":"11177:7:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":16865,"name":"uint8","nodeType":"ElementaryTypeName","src":"11177:5:24","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":null,"visibility":"internal"},{"constant":false,"id":16868,"name":"r","nodeType":"VariableDeclaration","scope":16939,"src":"11186:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16867,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11186:7:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"},{"constant":false,"id":16870,"name":"s","nodeType":"VariableDeclaration","scope":16939,"src":"11197:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16869,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11197:7:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"}],"src":"11145:62:24"},"returnParameters":{"id":16872,"nodeType":"ParameterList","parameters":[],"src":"11215:0:24"},"scope":17194,"src":"11123:618:24","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":17037,"nodeType":"Block","src":"11821:746:24","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_enum$_ProposalState_$16129","typeString":"enum GovernorAlpha.ProposalState"},"id":16954,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":16950,"name":"proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16943,"src":"11845:10:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16949,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16845,"src":"11839:5:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_enum$_ProposalState_$16129_$","typeString":"function (uint256) view returns (enum GovernorAlpha.ProposalState)"}},"id":16951,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11839:17:24","typeDescriptions":{"typeIdentifier":"t_enum$_ProposalState_$16129","typeString":"enum GovernorAlpha.ProposalState"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16952,"name":"ProposalState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16129,"src":"11860:13:24","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ProposalState_$16129_$","typeString":"type(enum GovernorAlpha.ProposalState)"}},"id":16953,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"Active","nodeType":"MemberAccess","referencedDeclaration":null,"src":"11860:20:24","typeDescriptions":{"typeIdentifier":"t_enum$_ProposalState_$16129","typeString":"enum GovernorAlpha.ProposalState"}},"src":"11839:41:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f74696e6720697320636c6f736564","id":16955,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11882:44:24","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_eede0aeb04f75d58f89f0b84608a4108da079ec9b462189375bbf8fd7e8edbaa","typeString":"literal_string \"GovernorAlpha::_castVote: voting is closed\""},"value":"GovernorAlpha::_castVote: voting is closed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_eede0aeb04f75d58f89f0b84608a4108da079ec9b462189375bbf8fd7e8edbaa","typeString":"literal_string \"GovernorAlpha::_castVote: voting is closed\""}],"id":16948,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"11831:7:24","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":16956,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11831:96:24","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16957,"nodeType":"ExpressionStatement","src":"11831:96:24"},{"assignments":[16959],"declarations":[{"constant":false,"id":16959,"name":"proposal","nodeType":"VariableDeclaration","scope":17037,"src":"11937:25:24","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$16113_storage_ptr","typeString":"struct GovernorAlpha.Proposal"},"typeName":{"contractScope":null,"id":16958,"name":"Proposal","nodeType":"UserDefinedTypeName","referencedDeclaration":16113,"src":"11937:8:24","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$16113_storage_ptr","typeString":"struct GovernorAlpha.Proposal"}},"value":null,"visibility":"internal"}],"id":16963,"initialValue":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":16960,"name":"proposals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16133,"src":"11965:9:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Proposal_$16113_storage_$","typeString":"mapping(uint256 => struct GovernorAlpha.Proposal storage ref)"}},"id":16962,"indexExpression":{"argumentTypes":null,"id":16961,"name":"proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16943,"src":"11975:10:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11965:21:24","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$16113_storage","typeString":"struct GovernorAlpha.Proposal storage ref"}},"nodeType":"VariableDeclarationStatement","src":"11937:49:24"},{"assignments":[16965],"declarations":[{"constant":false,"id":16965,"name":"receipt","nodeType":"VariableDeclaration","scope":17037,"src":"11996:23:24","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Receipt_$16120_storage_ptr","typeString":"struct GovernorAlpha.Receipt"},"typeName":{"contractScope":null,"id":16964,"name":"Receipt","nodeType":"UserDefinedTypeName","referencedDeclaration":16120,"src":"11996:7:24","typeDescriptions":{"typeIdentifier":"t_struct$_Receipt_$16120_storage_ptr","typeString":"struct GovernorAlpha.Receipt"}},"value":null,"visibility":"internal"}],"id":16970,"initialValue":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16966,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16959,"src":"12022:8:24","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$16113_storage_ptr","typeString":"struct GovernorAlpha.Proposal storage pointer"}},"id":16967,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"receipts","nodeType":"MemberAccess","referencedDeclaration":16112,"src":"12022:17:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Receipt_$16120_storage_$","typeString":"mapping(address => struct GovernorAlpha.Receipt storage ref)"}},"id":16969,"indexExpression":{"argumentTypes":null,"id":16968,"name":"voter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16941,"src":"12040:5:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12022:24:24","typeDescriptions":{"typeIdentifier":"t_struct$_Receipt_$16120_storage","typeString":"struct GovernorAlpha.Receipt storage ref"}},"nodeType":"VariableDeclarationStatement","src":"11996:50:24"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":16975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16972,"name":"receipt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16965,"src":"12064:7:24","typeDescriptions":{"typeIdentifier":"t_struct$_Receipt_$16120_storage_ptr","typeString":"struct GovernorAlpha.Receipt storage pointer"}},"id":16973,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"hasVoted","nodeType":"MemberAccess","referencedDeclaration":16115,"src":"12064:16:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"66616c7365","id":16974,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"12084:5:24","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"12064:25:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f74657220616c726561647920766f746564","id":16976,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12091:47:24","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_5b6e843e3ab725378b7b68db9a8698ac55194c56a0430edac6725cbe558ee624","typeString":"literal_string \"GovernorAlpha::_castVote: voter already voted\""},"value":"GovernorAlpha::_castVote: voter already voted"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5b6e843e3ab725378b7b68db9a8698ac55194c56a0430edac6725cbe558ee624","typeString":"literal_string \"GovernorAlpha::_castVote: voter already voted\""}],"id":16971,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"12056:7:24","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":16977,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12056:83:24","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16978,"nodeType":"ExpressionStatement","src":"12056:83:24"},{"assignments":[16980],"declarations":[{"constant":false,"id":16980,"name":"votes","nodeType":"VariableDeclaration","scope":17037,"src":"12149:12:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":16979,"name":"uint96","nodeType":"ElementaryTypeName","src":"12149:6:24","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"value":null,"visibility":"internal"}],"id":16987,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":16983,"name":"voter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16941,"src":"12183:5:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16984,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16959,"src":"12190:8:24","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$16113_storage_ptr","typeString":"struct GovernorAlpha.Proposal storage pointer"}},"id":16985,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"startBlock","nodeType":"MemberAccess","referencedDeclaration":16098,"src":"12190:19:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":16981,"name":"comp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16074,"src":"12164:4:24","typeDescriptions":{"typeIdentifier":"t_contract$_CompInterface_$17268","typeString":"contract CompInterface"}},"id":16982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getPriorVotes","nodeType":"MemberAccess","referencedDeclaration":17267,"src":"12164:18:24","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_uint256_$returns$_t_uint96_$","typeString":"function (address,uint256) view external returns (uint96)"}},"id":16986,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12164:46:24","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"VariableDeclarationStatement","src":"12149:61:24"},{"condition":{"argumentTypes":null,"id":16988,"name":"support","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16945,"src":"12225:7:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":17010,"nodeType":"Block","src":"12317:85:24","statements":[{"expression":{"argumentTypes":null,"id":17008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":17000,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16959,"src":"12331:8:24","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$16113_storage_ptr","typeString":"struct GovernorAlpha.Proposal storage pointer"}},"id":17002,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"againstVotes","nodeType":"MemberAccess","referencedDeclaration":16104,"src":"12331:21:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":17004,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16959,"src":"12362:8:24","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$16113_storage_ptr","typeString":"struct GovernorAlpha.Proposal storage pointer"}},"id":17005,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"againstVotes","nodeType":"MemberAccess","referencedDeclaration":16104,"src":"12362:21:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":17006,"name":"votes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16980,"src":"12385:5:24","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint96","typeString":"uint96"}],"id":17003,"name":"add256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17160,"src":"12355:6:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":17007,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12355:36:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12331:60:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17009,"nodeType":"ExpressionStatement","src":"12331:60:24"}]},"id":17011,"nodeType":"IfStatement","src":"12221:181:24","trueBody":{"id":16999,"nodeType":"Block","src":"12234:77:24","statements":[{"expression":{"argumentTypes":null,"id":16997,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16989,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16959,"src":"12248:8:24","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$16113_storage_ptr","typeString":"struct GovernorAlpha.Proposal storage pointer"}},"id":16991,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"forVotes","nodeType":"MemberAccess","referencedDeclaration":16102,"src":"12248:17:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":16993,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16959,"src":"12275:8:24","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$16113_storage_ptr","typeString":"struct GovernorAlpha.Proposal storage pointer"}},"id":16994,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"forVotes","nodeType":"MemberAccess","referencedDeclaration":16102,"src":"12275:17:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":16995,"name":"votes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16980,"src":"12294:5:24","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint96","typeString":"uint96"}],"id":16992,"name":"add256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17160,"src":"12268:6:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":16996,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12268:32:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12248:52:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16998,"nodeType":"ExpressionStatement","src":"12248:52:24"}]}},{"expression":{"argumentTypes":null,"id":17016,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":17012,"name":"receipt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16965,"src":"12412:7:24","typeDescriptions":{"typeIdentifier":"t_struct$_Receipt_$16120_storage_ptr","typeString":"struct GovernorAlpha.Receipt storage pointer"}},"id":17014,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"hasVoted","nodeType":"MemberAccess","referencedDeclaration":16115,"src":"12412:16:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"hexValue":"74727565","id":17015,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"12431:4:24","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"12412:23:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17017,"nodeType":"ExpressionStatement","src":"12412:23:24"},{"expression":{"argumentTypes":null,"id":17022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":17018,"name":"receipt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16965,"src":"12445:7:24","typeDescriptions":{"typeIdentifier":"t_struct$_Receipt_$16120_storage_ptr","typeString":"struct GovernorAlpha.Receipt storage pointer"}},"id":17020,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"support","nodeType":"MemberAccess","referencedDeclaration":16117,"src":"12445:15:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":17021,"name":"support","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16945,"src":"12463:7:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12445:25:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17023,"nodeType":"ExpressionStatement","src":"12445:25:24"},{"expression":{"argumentTypes":null,"id":17028,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":17024,"name":"receipt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16965,"src":"12480:7:24","typeDescriptions":{"typeIdentifier":"t_struct$_Receipt_$16120_storage_ptr","typeString":"struct GovernorAlpha.Receipt storage pointer"}},"id":17026,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"votes","nodeType":"MemberAccess","referencedDeclaration":16119,"src":"12480:13:24","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":17027,"name":"votes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16980,"src":"12496:5:24","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"12480:21:24","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"id":17029,"nodeType":"ExpressionStatement","src":"12480:21:24"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":17031,"name":"voter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16941,"src":"12526:5:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":17032,"name":"proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16943,"src":"12533:10:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":17033,"name":"support","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16945,"src":"12545:7:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"id":17034,"name":"votes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16980,"src":"12554:5:24","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint96","typeString":"uint96"}],"id":17030,"name":"VoteCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16181,"src":"12517:8:24","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_bool_$_t_uint256_$returns$__$","typeString":"function (address,uint256,bool,uint256)"}},"id":17035,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12517:43:24","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17036,"nodeType":"EmitStatement","src":"12512:48:24"}]},"documentation":null,"id":17038,"implemented":true,"kind":"function","modifiers":[],"name":"_castVote","nodeType":"FunctionDefinition","parameters":{"id":16946,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16941,"name":"voter","nodeType":"VariableDeclaration","scope":17038,"src":"11766:13:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16940,"name":"address","nodeType":"ElementaryTypeName","src":"11766:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":16943,"name":"proposalId","nodeType":"VariableDeclaration","scope":17038,"src":"11781:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16942,"name":"uint","nodeType":"ElementaryTypeName","src":"11781:4:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":16945,"name":"support","nodeType":"VariableDeclaration","scope":17038,"src":"11798:12:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":16944,"name":"bool","nodeType":"ElementaryTypeName","src":"11798:4:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"11765:46:24"},"returnParameters":{"id":16947,"nodeType":"ParameterList","parameters":[],"src":"11821:0:24"},"scope":17194,"src":"11747:820:24","stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},{"body":{"id":17054,"nodeType":"Block","src":"12605:141:24","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":17045,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":17042,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"12623:3:24","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":17043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"12623:10:24","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":17044,"name":"guardian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16076,"src":"12637:8:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12623:22:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"476f7665726e6f72416c7068613a3a5f5f61636365707441646d696e3a2073656e646572206d75737420626520676f7620677561726469616e","id":17046,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12647:59:24","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_016a9c33adb814217df364e9cf73255610a85b9a37c739ee6a963286d80bad8d","typeString":"literal_string \"GovernorAlpha::__acceptAdmin: sender must be gov guardian\""},"value":"GovernorAlpha::__acceptAdmin: sender must be gov guardian"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_016a9c33adb814217df364e9cf73255610a85b9a37c739ee6a963286d80bad8d","typeString":"literal_string \"GovernorAlpha::__acceptAdmin: sender must be gov guardian\""}],"id":17041,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"12615:7:24","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":17047,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12615:92:24","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17048,"nodeType":"ExpressionStatement","src":"12615:92:24"},{"expression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":17049,"name":"timelock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16072,"src":"12717:8:24","typeDescriptions":{"typeIdentifier":"t_contract$_TimelockInterface_$17258","typeString":"contract TimelockInterface"}},"id":17051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"acceptAdmin","nodeType":"MemberAccess","referencedDeclaration":17207,"src":"12717:20:24","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$__$","typeString":"function () external"}},"id":17052,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12717:22:24","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17053,"nodeType":"ExpressionStatement","src":"12717:22:24"}]},"documentation":null,"id":17055,"implemented":true,"kind":"function","modifiers":[],"name":"__acceptAdmin","nodeType":"FunctionDefinition","parameters":{"id":17039,"nodeType":"ParameterList","parameters":[],"src":"12595:2:24"},"returnParameters":{"id":17040,"nodeType":"ParameterList","parameters":[],"src":"12605:0:24"},"scope":17194,"src":"12573:173:24","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":17072,"nodeType":"Block","src":"12781:137:24","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":17062,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":17059,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"12799:3:24","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":17060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"12799:10:24","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":17061,"name":"guardian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16076,"src":"12813:8:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12799:22:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"476f7665726e6f72416c7068613a3a5f5f61626469636174653a2073656e646572206d75737420626520676f7620677561726469616e","id":17063,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12823:56:24","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_f49e8b1dd028b5b562eda6ed4c810daf6cab5676cccf064826e3309bfa24f25f","typeString":"literal_string \"GovernorAlpha::__abdicate: sender must be gov guardian\""},"value":"GovernorAlpha::__abdicate: sender must be gov guardian"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f49e8b1dd028b5b562eda6ed4c810daf6cab5676cccf064826e3309bfa24f25f","typeString":"literal_string \"GovernorAlpha::__abdicate: sender must be gov guardian\""}],"id":17058,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"12791:7:24","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":17064,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12791:89:24","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17065,"nodeType":"ExpressionStatement","src":"12791:89:24"},{"expression":{"argumentTypes":null,"id":17070,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":17066,"name":"guardian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16076,"src":"12890:8:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":17068,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12909:1:24","subdenomination":null,"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":17067,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12901:7:24","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":17069,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12901:10:24","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"12890:21:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":17071,"nodeType":"ExpressionStatement","src":"12890:21:24"}]},"documentation":null,"id":17073,"implemented":true,"kind":"function","modifiers":[],"name":"__abdicate","nodeType":"FunctionDefinition","parameters":{"id":17056,"nodeType":"ParameterList","parameters":[],"src":"12771:2:24"},"returnParameters":{"id":17057,"nodeType":"ParameterList","parameters":[],"src":"12781:0:24"},"scope":17194,"src":"12752:166:24","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":17103,"nodeType":"Block","src":"13006:245:24","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":17084,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":17081,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"13024:3:24","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":17082,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"13024:10:24","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":17083,"name":"guardian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16076,"src":"13038:8:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"13024:22:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"476f7665726e6f72416c7068613a3a5f5f717565756553657454696d656c6f636b50656e64696e6741646d696e3a2073656e646572206d75737420626520676f7620677561726469616e","id":17085,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13048:76:24","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_71f6b53ee5a3d54940ff41e9a266ac547055c56b1388a7e8abdebb7afb4a7b7e","typeString":"literal_string \"GovernorAlpha::__queueSetTimelockPendingAdmin: sender must be gov guardian\""},"value":"GovernorAlpha::__queueSetTimelockPendingAdmin: sender must be gov guardian"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_71f6b53ee5a3d54940ff41e9a266ac547055c56b1388a7e8abdebb7afb4a7b7e","typeString":"literal_string \"GovernorAlpha::__queueSetTimelockPendingAdmin: sender must be gov guardian\""}],"id":17080,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"13016:7:24","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":17086,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13016:109:24","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17087,"nodeType":"ExpressionStatement","src":"13016:109:24"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":17092,"name":"timelock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16072,"src":"13169:8:24","typeDescriptions":{"typeIdentifier":"t_contract$_TimelockInterface_$17258","typeString":"contract TimelockInterface"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_TimelockInterface_$17258","typeString":"contract TimelockInterface"}],"id":17091,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13161:7:24","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":17093,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13161:17:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"hexValue":"30","id":17094,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13180:1:24","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"argumentTypes":null,"hexValue":"73657450656e64696e6741646d696e286164647265737329","id":17095,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13183:26:24","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_4dd18bf55ce7f29dcfaf98cdd1107659d19d0be3b61dbef73e05ac221f0e8e28","typeString":"literal_string \"setPendingAdmin(address)\""},"value":"setPendingAdmin(address)"},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":17098,"name":"newPendingAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17075,"src":"13222:15:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":17096,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22537,"src":"13211:3:24","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":17097,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","referencedDeclaration":null,"src":"13211:10:24","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":17099,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13211:27:24","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"argumentTypes":null,"id":17100,"name":"eta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17077,"src":"13240:3:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_stringliteral_4dd18bf55ce7f29dcfaf98cdd1107659d19d0be3b61dbef73e05ac221f0e8e28","typeString":"literal_string \"setPendingAdmin(address)\""},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":17088,"name":"timelock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16072,"src":"13135:8:24","typeDescriptions":{"typeIdentifier":"t_contract$_TimelockInterface_$17258","typeString":"contract TimelockInterface"}},"id":17090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"queueTransaction","nodeType":"MemberAccess","referencedDeclaration":17229,"src":"13135:25:24","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_string_memory_ptr_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (address,uint256,string memory,bytes memory,uint256) external returns (bytes32)"}},"id":17101,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13135:109:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":17102,"nodeType":"ExpressionStatement","src":"13135:109:24"}]},"documentation":null,"id":17104,"implemented":true,"kind":"function","modifiers":[],"name":"__queueSetTimelockPendingAdmin","nodeType":"FunctionDefinition","parameters":{"id":17078,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17075,"name":"newPendingAdmin","nodeType":"VariableDeclaration","scope":17104,"src":"12964:23:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17074,"name":"address","nodeType":"ElementaryTypeName","src":"12964:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":17077,"name":"eta","nodeType":"VariableDeclaration","scope":17104,"src":"12989:8:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17076,"name":"uint","nodeType":"ElementaryTypeName","src":"12989:4:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"12963:35:24"},"returnParameters":{"id":17079,"nodeType":"ParameterList","parameters":[],"src":"13006:0:24"},"scope":17194,"src":"12924:327:24","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":17134,"nodeType":"Block","src":"13341:249:24","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":17115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":17112,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"13359:3:24","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":17113,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"13359:10:24","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":17114,"name":"guardian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16076,"src":"13373:8:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"13359:22:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"476f7665726e6f72416c7068613a3a5f5f6578656375746553657454696d656c6f636b50656e64696e6741646d696e3a2073656e646572206d75737420626520676f7620677561726469616e","id":17116,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13383:78:24","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_3875e14bb9041148a3cf495f55cd1888ac6ea09fddd60712f1ffe3da9b3d0cbf","typeString":"literal_string \"GovernorAlpha::__executeSetTimelockPendingAdmin: sender must be gov guardian\""},"value":"GovernorAlpha::__executeSetTimelockPendingAdmin: sender must be gov guardian"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3875e14bb9041148a3cf495f55cd1888ac6ea09fddd60712f1ffe3da9b3d0cbf","typeString":"literal_string \"GovernorAlpha::__executeSetTimelockPendingAdmin: sender must be gov guardian\""}],"id":17111,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"13351:7:24","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":17117,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13351:111:24","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17118,"nodeType":"ExpressionStatement","src":"13351:111:24"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":17123,"name":"timelock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16072,"src":"13508:8:24","typeDescriptions":{"typeIdentifier":"t_contract$_TimelockInterface_$17258","typeString":"contract TimelockInterface"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_TimelockInterface_$17258","typeString":"contract TimelockInterface"}],"id":17122,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13500:7:24","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":17124,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13500:17:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"hexValue":"30","id":17125,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13519:1:24","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"argumentTypes":null,"hexValue":"73657450656e64696e6741646d696e286164647265737329","id":17126,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13522:26:24","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_4dd18bf55ce7f29dcfaf98cdd1107659d19d0be3b61dbef73e05ac221f0e8e28","typeString":"literal_string \"setPendingAdmin(address)\""},"value":"setPendingAdmin(address)"},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":17129,"name":"newPendingAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17106,"src":"13561:15:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":17127,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22537,"src":"13550:3:24","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":17128,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","referencedDeclaration":null,"src":"13550:10:24","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":17130,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13550:27:24","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"argumentTypes":null,"id":17131,"name":"eta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17108,"src":"13579:3:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_stringliteral_4dd18bf55ce7f29dcfaf98cdd1107659d19d0be3b61dbef73e05ac221f0e8e28","typeString":"literal_string \"setPendingAdmin(address)\""},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":17119,"name":"timelock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16072,"src":"13472:8:24","typeDescriptions":{"typeIdentifier":"t_contract$_TimelockInterface_$17258","typeString":"contract TimelockInterface"}},"id":17121,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"executeTransaction","nodeType":"MemberAccess","referencedDeclaration":17257,"src":"13472:27:24","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_uint256_$_t_string_memory_ptr_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,uint256,string memory,bytes memory,uint256) payable external returns (bytes memory)"}},"id":17132,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13472:111:24","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":17133,"nodeType":"ExpressionStatement","src":"13472:111:24"}]},"documentation":null,"id":17135,"implemented":true,"kind":"function","modifiers":[],"name":"__executeSetTimelockPendingAdmin","nodeType":"FunctionDefinition","parameters":{"id":17109,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17106,"name":"newPendingAdmin","nodeType":"VariableDeclaration","scope":17135,"src":"13299:23:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17105,"name":"address","nodeType":"ElementaryTypeName","src":"13299:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":17108,"name":"eta","nodeType":"VariableDeclaration","scope":17135,"src":"13324:8:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17107,"name":"uint","nodeType":"ElementaryTypeName","src":"13324:4:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"13298:35:24"},"returnParameters":{"id":17110,"nodeType":"ParameterList","parameters":[],"src":"13341:0:24"},"scope":17194,"src":"13257:333:24","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":17159,"nodeType":"Block","src":"13663:95:24","statements":[{"assignments":[17145],"declarations":[{"constant":false,"id":17145,"name":"c","nodeType":"VariableDeclaration","scope":17159,"src":"13673:6:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17144,"name":"uint","nodeType":"ElementaryTypeName","src":"13673:4:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":17149,"initialValue":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":17146,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17137,"src":"13682:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"argumentTypes":null,"id":17147,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17139,"src":"13686:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13682:5:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13673:14:24"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":17151,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17145,"src":"13705:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"argumentTypes":null,"id":17152,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17137,"src":"13710:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13705:6:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"6164646974696f6e206f766572666c6f77","id":17154,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13713:19:24","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_8c0d96e929759368d857f737222dcb6a5217a09dbc29c3e61addc531fdea00f5","typeString":"literal_string \"addition overflow\""},"value":"addition overflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8c0d96e929759368d857f737222dcb6a5217a09dbc29c3e61addc531fdea00f5","typeString":"literal_string \"addition overflow\""}],"id":17150,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"13697:7:24","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":17155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13697:36:24","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17156,"nodeType":"ExpressionStatement","src":"13697:36:24"},{"expression":{"argumentTypes":null,"id":17157,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17145,"src":"13750:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":17143,"id":17158,"nodeType":"Return","src":"13743:8:24"}]},"documentation":null,"id":17160,"implemented":true,"kind":"function","modifiers":[],"name":"add256","nodeType":"FunctionDefinition","parameters":{"id":17140,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17137,"name":"a","nodeType":"VariableDeclaration","scope":17160,"src":"13612:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17136,"name":"uint256","nodeType":"ElementaryTypeName","src":"13612:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":17139,"name":"b","nodeType":"VariableDeclaration","scope":17160,"src":"13623:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17138,"name":"uint256","nodeType":"ElementaryTypeName","src":"13623:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"13611:22:24"},"returnParameters":{"id":17143,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17142,"name":"","nodeType":"VariableDeclaration","scope":17160,"src":"13657:4:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17141,"name":"uint","nodeType":"ElementaryTypeName","src":"13657:4:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"13656:6:24"},"scope":17194,"src":"13596:162:24","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":17180,"nodeType":"Block","src":"13831:79:24","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17172,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":17170,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17164,"src":"13849:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"argumentTypes":null,"id":17171,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17162,"src":"13854:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13849:6:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"7375627472616374696f6e20756e646572666c6f77","id":17173,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13857:23:24","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_f22f6b3017af2aff30fb71d5e8f8adc6cd3022431e6fc88c01d6d8b2adb30f31","typeString":"literal_string \"subtraction underflow\""},"value":"subtraction underflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f22f6b3017af2aff30fb71d5e8f8adc6cd3022431e6fc88c01d6d8b2adb30f31","typeString":"literal_string \"subtraction underflow\""}],"id":17169,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"13841:7:24","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":17174,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13841:40:24","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17175,"nodeType":"ExpressionStatement","src":"13841:40:24"},{"expression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17178,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":17176,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17162,"src":"13898:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"id":17177,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17164,"src":"13902:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13898:5:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":17168,"id":17179,"nodeType":"Return","src":"13891:12:24"}]},"documentation":null,"id":17181,"implemented":true,"kind":"function","modifiers":[],"name":"sub256","nodeType":"FunctionDefinition","parameters":{"id":17165,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17162,"name":"a","nodeType":"VariableDeclaration","scope":17181,"src":"13780:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17161,"name":"uint256","nodeType":"ElementaryTypeName","src":"13780:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":17164,"name":"b","nodeType":"VariableDeclaration","scope":17181,"src":"13791:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17163,"name":"uint256","nodeType":"ElementaryTypeName","src":"13791:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"13779:22:24"},"returnParameters":{"id":17168,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17167,"name":"","nodeType":"VariableDeclaration","scope":17181,"src":"13825:4:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17166,"name":"uint","nodeType":"ElementaryTypeName","src":"13825:4:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"13824:6:24"},"scope":17194,"src":"13764:146:24","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":17192,"nodeType":"Block","src":"13967:95:24","statements":[{"assignments":[17187],"declarations":[{"constant":false,"id":17187,"name":"chainId","nodeType":"VariableDeclaration","scope":17192,"src":"13977:12:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17186,"name":"uint","nodeType":"ElementaryTypeName","src":"13977:4:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":17188,"initialValue":null,"nodeType":"VariableDeclarationStatement","src":"13977:12:24"},{"externalReferences":[{"chainId":{"declaration":17187,"isOffset":false,"isSlot":false,"src":"14010:7:24","valueSize":1}}],"id":17189,"nodeType":"InlineAssembly","operations":"{ chainId := chainid() }","src":"13999:33:24"},{"expression":{"argumentTypes":null,"id":17190,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17187,"src":"14048:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":17185,"id":17191,"nodeType":"Return","src":"14041:14:24"}]},"documentation":null,"id":17193,"implemented":true,"kind":"function","modifiers":[],"name":"getChainId","nodeType":"FunctionDefinition","parameters":{"id":17182,"nodeType":"ParameterList","parameters":[],"src":"13935:2:24"},"returnParameters":{"id":17185,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17184,"name":"","nodeType":"VariableDeclaration","scope":17193,"src":"13961:4:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17183,"name":"uint","nodeType":"ElementaryTypeName","src":"13961:4:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"13960:6:24"},"scope":17194,"src":"13916:146:24","stateMutability":"pure","superFunction":null,"visibility":"internal"}],"scope":17269,"src":"59:14005:24"},{"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":null,"fullyImplemented":false,"id":17258,"linearizedBaseContracts":[17258],"name":"TimelockInterface","nodeType":"ContractDefinition","nodes":[{"body":null,"documentation":null,"id":17199,"implemented":false,"kind":"function","modifiers":[],"name":"delay","nodeType":"FunctionDefinition","parameters":{"id":17195,"nodeType":"ParameterList","parameters":[],"src":"14114:2:24"},"returnParameters":{"id":17198,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17197,"name":"","nodeType":"VariableDeclaration","scope":17199,"src":"14140:4:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17196,"name":"uint","nodeType":"ElementaryTypeName","src":"14140:4:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"14139:6:24"},"scope":17258,"src":"14100:46:24","stateMutability":"view","superFunction":null,"visibility":"external"},{"body":null,"documentation":null,"id":17204,"implemented":false,"kind":"function","modifiers":[],"name":"GRACE_PERIOD","nodeType":"FunctionDefinition","parameters":{"id":17200,"nodeType":"ParameterList","parameters":[],"src":"14172:2:24"},"returnParameters":{"id":17203,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17202,"name":"","nodeType":"VariableDeclaration","scope":17204,"src":"14198:4:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17201,"name":"uint","nodeType":"ElementaryTypeName","src":"14198:4:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"14197:6:24"},"scope":17258,"src":"14151:53:24","stateMutability":"view","superFunction":null,"visibility":"external"},{"body":null,"documentation":null,"id":17207,"implemented":false,"kind":"function","modifiers":[],"name":"acceptAdmin","nodeType":"FunctionDefinition","parameters":{"id":17205,"nodeType":"ParameterList","parameters":[],"src":"14229:2:24"},"returnParameters":{"id":17206,"nodeType":"ParameterList","parameters":[],"src":"14240:0:24"},"scope":17258,"src":"14209:32:24","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":null,"documentation":null,"id":17214,"implemented":false,"kind":"function","modifiers":[],"name":"queuedTransactions","nodeType":"FunctionDefinition","parameters":{"id":17210,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17209,"name":"hash","nodeType":"VariableDeclaration","scope":17214,"src":"14274:12:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":17208,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14274:7:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"}],"src":"14273:14:24"},"returnParameters":{"id":17213,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17212,"name":"","nodeType":"VariableDeclaration","scope":17214,"src":"14311:4:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":17211,"name":"bool","nodeType":"ElementaryTypeName","src":"14311:4:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"14310:6:24"},"scope":17258,"src":"14246:71:24","stateMutability":"view","superFunction":null,"visibility":"external"},{"body":null,"documentation":null,"id":17229,"implemented":false,"kind":"function","modifiers":[],"name":"queueTransaction","nodeType":"FunctionDefinition","parameters":{"id":17225,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17216,"name":"target","nodeType":"VariableDeclaration","scope":17229,"src":"14348:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17215,"name":"address","nodeType":"ElementaryTypeName","src":"14348:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":17218,"name":"value","nodeType":"VariableDeclaration","scope":17229,"src":"14364:10:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17217,"name":"uint","nodeType":"ElementaryTypeName","src":"14364:4:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":17220,"name":"signature","nodeType":"VariableDeclaration","scope":17229,"src":"14376:25:24","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":17219,"name":"string","nodeType":"ElementaryTypeName","src":"14376:6:24","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":null,"visibility":"internal"},{"constant":false,"id":17222,"name":"data","nodeType":"VariableDeclaration","scope":17229,"src":"14403:19:24","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":17221,"name":"bytes","nodeType":"ElementaryTypeName","src":"14403:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"},{"constant":false,"id":17224,"name":"eta","nodeType":"VariableDeclaration","scope":17229,"src":"14424:8:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17223,"name":"uint","nodeType":"ElementaryTypeName","src":"14424:4:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"14347:86:24"},"returnParameters":{"id":17228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17227,"name":"","nodeType":"VariableDeclaration","scope":17229,"src":"14452:7:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":17226,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14452:7:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"}],"src":"14451:9:24"},"scope":17258,"src":"14322:139:24","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":null,"documentation":null,"id":17242,"implemented":false,"kind":"function","modifiers":[],"name":"cancelTransaction","nodeType":"FunctionDefinition","parameters":{"id":17240,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17231,"name":"target","nodeType":"VariableDeclaration","scope":17242,"src":"14493:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17230,"name":"address","nodeType":"ElementaryTypeName","src":"14493:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":17233,"name":"value","nodeType":"VariableDeclaration","scope":17242,"src":"14509:10:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17232,"name":"uint","nodeType":"ElementaryTypeName","src":"14509:4:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":17235,"name":"signature","nodeType":"VariableDeclaration","scope":17242,"src":"14521:25:24","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":17234,"name":"string","nodeType":"ElementaryTypeName","src":"14521:6:24","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":null,"visibility":"internal"},{"constant":false,"id":17237,"name":"data","nodeType":"VariableDeclaration","scope":17242,"src":"14548:19:24","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":17236,"name":"bytes","nodeType":"ElementaryTypeName","src":"14548:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"},{"constant":false,"id":17239,"name":"eta","nodeType":"VariableDeclaration","scope":17242,"src":"14569:8:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17238,"name":"uint","nodeType":"ElementaryTypeName","src":"14569:4:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"14492:86:24"},"returnParameters":{"id":17241,"nodeType":"ParameterList","parameters":[],"src":"14587:0:24"},"scope":17258,"src":"14466:122:24","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":null,"documentation":null,"id":17257,"implemented":false,"kind":"function","modifiers":[],"name":"executeTransaction","nodeType":"FunctionDefinition","parameters":{"id":17253,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17244,"name":"target","nodeType":"VariableDeclaration","scope":17257,"src":"14621:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17243,"name":"address","nodeType":"ElementaryTypeName","src":"14621:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":17246,"name":"value","nodeType":"VariableDeclaration","scope":17257,"src":"14637:10:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17245,"name":"uint","nodeType":"ElementaryTypeName","src":"14637:4:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":17248,"name":"signature","nodeType":"VariableDeclaration","scope":17257,"src":"14649:25:24","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":17247,"name":"string","nodeType":"ElementaryTypeName","src":"14649:6:24","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":null,"visibility":"internal"},{"constant":false,"id":17250,"name":"data","nodeType":"VariableDeclaration","scope":17257,"src":"14676:19:24","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":17249,"name":"bytes","nodeType":"ElementaryTypeName","src":"14676:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"},{"constant":false,"id":17252,"name":"eta","nodeType":"VariableDeclaration","scope":17257,"src":"14697:8:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17251,"name":"uint","nodeType":"ElementaryTypeName","src":"14697:4:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"14620:86:24"},"returnParameters":{"id":17256,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17255,"name":"","nodeType":"VariableDeclaration","scope":17257,"src":"14733:12:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":17254,"name":"bytes","nodeType":"ElementaryTypeName","src":"14733:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"}],"src":"14732:14:24"},"scope":17258,"src":"14593:154:24","stateMutability":"payable","superFunction":null,"visibility":"external"}],"scope":17269,"src":"14066:683:24"},{"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":null,"fullyImplemented":false,"id":17268,"linearizedBaseContracts":[17268],"name":"CompInterface","nodeType":"ContractDefinition","nodes":[{"body":null,"documentation":null,"id":17267,"implemented":false,"kind":"function","modifiers":[],"name":"getPriorVotes","nodeType":"FunctionDefinition","parameters":{"id":17263,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17260,"name":"account","nodeType":"VariableDeclaration","scope":17267,"src":"14804:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17259,"name":"address","nodeType":"ElementaryTypeName","src":"14804:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":17262,"name":"blockNumber","nodeType":"VariableDeclaration","scope":17267,"src":"14821:16:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17261,"name":"uint","nodeType":"ElementaryTypeName","src":"14821:4:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"14803:35:24"},"returnParameters":{"id":17266,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17265,"name":"","nodeType":"VariableDeclaration","scope":17267,"src":"14862:6:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":17264,"name":"uint96","nodeType":"ElementaryTypeName","src":"14862:6:24","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"value":null,"visibility":"internal"}],"src":"14861:8:24"},"scope":17268,"src":"14781:89:24","stateMutability":"view","superFunction":null,"visibility":"external"}],"scope":17269,"src":"14751:121:24"}],"src":"0:14873:24"},"id":24},"contracts/IFuseFeeDistributor.sol":{"ast":{"absolutePath":"contracts/IFuseFeeDistributor.sol","exportedSymbols":{"IFuseFeeDistributor":[17368]},"id":17369,"nodeType":"SourceUnit","nodes":[{"id":17270,"literals":["solidity","0.5",".17"],"nodeType":"PragmaDirective","src":"0:23:25"},{"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":null,"fullyImplemented":false,"id":17368,"linearizedBaseContracts":[17368],"name":"IFuseFeeDistributor","nodeType":"ContractDefinition","nodes":[{"body":null,"documentation":null,"id":17275,"implemented":false,"kind":"function","modifiers":[],"name":"minBorrowEth","nodeType":"FunctionDefinition","parameters":{"id":17271,"nodeType":"ParameterList","parameters":[],"src":"82:2:25"},"returnParameters":{"id":17274,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17273,"name":"","nodeType":"VariableDeclaration","scope":17275,"src":"108:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17272,"name":"uint256","nodeType":"ElementaryTypeName","src":"108:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"107:9:25"},"scope":17368,"src":"61:56:25","stateMutability":"view","superFunction":null,"visibility":"external"},{"body":null,"documentation":null,"id":17280,"implemented":false,"kind":"function","modifiers":[],"name":"maxSupplyEth","nodeType":"FunctionDefinition","parameters":{"id":17276,"nodeType":"ParameterList","parameters":[],"src":"143:2:25"},"returnParameters":{"id":17279,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17278,"name":"","nodeType":"VariableDeclaration","scope":17280,"src":"169:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17277,"name":"uint256","nodeType":"ElementaryTypeName","src":"169:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"168:9:25"},"scope":17368,"src":"122:56:25","stateMutability":"view","superFunction":null,"visibility":"external"},{"body":null,"documentation":null,"id":17285,"implemented":false,"kind":"function","modifiers":[],"name":"maxUtilizationRate","nodeType":"FunctionDefinition","parameters":{"id":17281,"nodeType":"ParameterList","parameters":[],"src":"210:2:25"},"returnParameters":{"id":17284,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17283,"name":"","nodeType":"VariableDeclaration","scope":17285,"src":"236:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17282,"name":"uint256","nodeType":"ElementaryTypeName","src":"236:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"235:9:25"},"scope":17368,"src":"183:62:25","stateMutability":"view","superFunction":null,"visibility":"external"},{"body":null,"documentation":null,"id":17290,"implemented":false,"kind":"function","modifiers":[],"name":"interestFeeRate","nodeType":"FunctionDefinition","parameters":{"id":17286,"nodeType":"ParameterList","parameters":[],"src":"274:2:25"},"returnParameters":{"id":17289,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17288,"name":"","nodeType":"VariableDeclaration","scope":17290,"src":"300:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17287,"name":"uint256","nodeType":"ElementaryTypeName","src":"300:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"299:9:25"},"scope":17368,"src":"250:59:25","stateMutability":"view","superFunction":null,"visibility":"external"},{"body":null,"documentation":null,"id":17299,"implemented":false,"kind":"function","modifiers":[],"name":"comptrollerImplementationWhitelist","nodeType":"FunctionDefinition","parameters":{"id":17295,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17292,"name":"oldImplementation","nodeType":"VariableDeclaration","scope":17299,"src":"358:25:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17291,"name":"address","nodeType":"ElementaryTypeName","src":"358:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":17294,"name":"newImplementation","nodeType":"VariableDeclaration","scope":17299,"src":"385:25:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17293,"name":"address","nodeType":"ElementaryTypeName","src":"385:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"357:54:25"},"returnParameters":{"id":17298,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17297,"name":"","nodeType":"VariableDeclaration","scope":17299,"src":"435:4:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":17296,"name":"bool","nodeType":"ElementaryTypeName","src":"435:4:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"434:6:25"},"scope":17368,"src":"314:127:25","stateMutability":"view","superFunction":null,"visibility":"external"},{"body":null,"documentation":null,"id":17310,"implemented":false,"kind":"function","modifiers":[],"name":"cErc20DelegateWhitelist","nodeType":"FunctionDefinition","parameters":{"id":17306,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17301,"name":"oldImplementation","nodeType":"VariableDeclaration","scope":17310,"src":"479:25:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17300,"name":"address","nodeType":"ElementaryTypeName","src":"479:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":17303,"name":"newImplementation","nodeType":"VariableDeclaration","scope":17310,"src":"506:25:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17302,"name":"address","nodeType":"ElementaryTypeName","src":"506:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":17305,"name":"allowResign","nodeType":"VariableDeclaration","scope":17310,"src":"533:16:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":17304,"name":"bool","nodeType":"ElementaryTypeName","src":"533:4:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"478:72:25"},"returnParameters":{"id":17309,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17308,"name":"","nodeType":"VariableDeclaration","scope":17310,"src":"574:4:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":17307,"name":"bool","nodeType":"ElementaryTypeName","src":"574:4:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"573:6:25"},"scope":17368,"src":"446:134:25","stateMutability":"view","superFunction":null,"visibility":"external"},{"body":null,"documentation":null,"id":17321,"implemented":false,"kind":"function","modifiers":[],"name":"cEtherDelegateWhitelist","nodeType":"FunctionDefinition","parameters":{"id":17317,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17312,"name":"oldImplementation","nodeType":"VariableDeclaration","scope":17321,"src":"618:25:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17311,"name":"address","nodeType":"ElementaryTypeName","src":"618:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":17314,"name":"newImplementation","nodeType":"VariableDeclaration","scope":17321,"src":"645:25:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17313,"name":"address","nodeType":"ElementaryTypeName","src":"645:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":17316,"name":"allowResign","nodeType":"VariableDeclaration","scope":17321,"src":"672:16:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":17315,"name":"bool","nodeType":"ElementaryTypeName","src":"672:4:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"617:72:25"},"returnParameters":{"id":17320,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17319,"name":"","nodeType":"VariableDeclaration","scope":17321,"src":"713:4:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":17318,"name":"bool","nodeType":"ElementaryTypeName","src":"713:4:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"712:6:25"},"scope":17368,"src":"585:134:25","stateMutability":"view","superFunction":null,"visibility":"external"},{"body":null,"documentation":null,"id":17328,"implemented":false,"kind":"function","modifiers":[],"name":"latestComptrollerImplementation","nodeType":"FunctionDefinition","parameters":{"id":17324,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17323,"name":"oldImplementation","nodeType":"VariableDeclaration","scope":17328,"src":"765:25:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17322,"name":"address","nodeType":"ElementaryTypeName","src":"765:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"764:27:25"},"returnParameters":{"id":17327,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17326,"name":"","nodeType":"VariableDeclaration","scope":17328,"src":"815:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17325,"name":"address","nodeType":"ElementaryTypeName","src":"815:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"814:9:25"},"scope":17368,"src":"724:100:25","stateMutability":"view","superFunction":null,"visibility":"external"},{"body":null,"documentation":null,"id":17339,"implemented":false,"kind":"function","modifiers":[],"name":"latestCErc20Delegate","nodeType":"FunctionDefinition","parameters":{"id":17331,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17330,"name":"oldImplementation","nodeType":"VariableDeclaration","scope":17339,"src":"859:25:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17329,"name":"address","nodeType":"ElementaryTypeName","src":"859:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"858:27:25"},"returnParameters":{"id":17338,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17333,"name":"cErc20Delegate","nodeType":"VariableDeclaration","scope":17339,"src":"909:22:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17332,"name":"address","nodeType":"ElementaryTypeName","src":"909:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":17335,"name":"allowResign","nodeType":"VariableDeclaration","scope":17339,"src":"933:16:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":17334,"name":"bool","nodeType":"ElementaryTypeName","src":"933:4:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},{"constant":false,"id":17337,"name":"becomeImplementationData","nodeType":"VariableDeclaration","scope":17339,"src":"951:37:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":17336,"name":"bytes","nodeType":"ElementaryTypeName","src":"951:5:25","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"}],"src":"908:81:25"},"scope":17368,"src":"829:161:25","stateMutability":"view","superFunction":null,"visibility":"external"},{"body":null,"documentation":null,"id":17350,"implemented":false,"kind":"function","modifiers":[],"name":"latestCEtherDelegate","nodeType":"FunctionDefinition","parameters":{"id":17342,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17341,"name":"oldImplementation","nodeType":"VariableDeclaration","scope":17350,"src":"1025:25:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17340,"name":"address","nodeType":"ElementaryTypeName","src":"1025:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"1024:27:25"},"returnParameters":{"id":17349,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17344,"name":"cEtherDelegate","nodeType":"VariableDeclaration","scope":17350,"src":"1075:22:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17343,"name":"address","nodeType":"ElementaryTypeName","src":"1075:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":17346,"name":"allowResign","nodeType":"VariableDeclaration","scope":17350,"src":"1099:16:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":17345,"name":"bool","nodeType":"ElementaryTypeName","src":"1099:4:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},{"constant":false,"id":17348,"name":"becomeImplementationData","nodeType":"VariableDeclaration","scope":17350,"src":"1117:37:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":17347,"name":"bytes","nodeType":"ElementaryTypeName","src":"1117:5:25","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"}],"src":"1074:81:25"},"scope":17368,"src":"995:161:25","stateMutability":"view","superFunction":null,"visibility":"external"},{"body":null,"documentation":null,"id":17357,"implemented":false,"kind":"function","modifiers":[],"name":"deployCEther","nodeType":"FunctionDefinition","parameters":{"id":17353,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17352,"name":"constructorData","nodeType":"VariableDeclaration","scope":17357,"src":"1183:30:25","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":17351,"name":"bytes","nodeType":"ElementaryTypeName","src":"1183:5:25","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"}],"src":"1182:32:25"},"returnParameters":{"id":17356,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17355,"name":"","nodeType":"VariableDeclaration","scope":17357,"src":"1233:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17354,"name":"address","nodeType":"ElementaryTypeName","src":"1233:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"1232:9:25"},"scope":17368,"src":"1161:81:25","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":null,"documentation":null,"id":17364,"implemented":false,"kind":"function","modifiers":[],"name":"deployCErc20","nodeType":"FunctionDefinition","parameters":{"id":17360,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17359,"name":"constructorData","nodeType":"VariableDeclaration","scope":17364,"src":"1269:30:25","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":17358,"name":"bytes","nodeType":"ElementaryTypeName","src":"1269:5:25","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"}],"src":"1268:32:25"},"returnParameters":{"id":17363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17362,"name":"","nodeType":"VariableDeclaration","scope":17364,"src":"1319:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17361,"name":"address","nodeType":"ElementaryTypeName","src":"1319:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"1318:9:25"},"scope":17368,"src":"1247:81:25","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":null,"documentation":null,"id":17367,"implemented":false,"kind":"fallback","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":17365,"nodeType":"ParameterList","parameters":[],"src":"1342:2:25"},"returnParameters":{"id":17366,"nodeType":"ParameterList","parameters":[],"src":"1361:0:25"},"scope":17368,"src":"1333:29:25","stateMutability":"payable","superFunction":null,"visibility":"external"}],"scope":17369,"src":"25:1339:25"}],"src":"0:1365:25"},"id":25},"contracts/InterestRateModel.sol":{"ast":{"absolutePath":"contracts/InterestRateModel.sol","exportedSymbols":{"InterestRateModel":[17398]},"id":17399,"nodeType":"SourceUnit","nodes":[{"id":17370,"literals":["solidity","0.5",".17"],"nodeType":"PragmaDirective","src":"0:23:26"},{"baseContracts":[],"contractDependencies":[],"contractKind":"contract","documentation":"@title Compound's InterestRateModel Interface\n@author Compound","fullyImplemented":false,"id":17398,"linearizedBaseContracts":[17398],"name":"InterestRateModel","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":17373,"name":"isInterestRateModel","nodeType":"VariableDeclaration","scope":17398,"src":"224:47:26","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":17371,"name":"bool","nodeType":"ElementaryTypeName","src":"224:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":{"argumentTypes":null,"hexValue":"74727565","id":17372,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"267:4:26","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"visibility":"public"},{"body":null,"documentation":"@notice Calculates the current borrow interest rate per block\n@param cash The total amount of cash the market has\n@param borrows The total amount of borrows the market has outstanding\n@param reserves The total amount of reserves the market has\n@return The borrow rate per block (as a percentage, and scaled by 1e18)","id":17384,"implemented":false,"kind":"function","modifiers":[],"name":"getBorrowRate","nodeType":"FunctionDefinition","parameters":{"id":17380,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17375,"name":"cash","nodeType":"VariableDeclaration","scope":17384,"src":"674:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17374,"name":"uint","nodeType":"ElementaryTypeName","src":"674:4:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":17377,"name":"borrows","nodeType":"VariableDeclaration","scope":17384,"src":"685:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17376,"name":"uint","nodeType":"ElementaryTypeName","src":"685:4:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":17379,"name":"reserves","nodeType":"VariableDeclaration","scope":17384,"src":"699:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17378,"name":"uint","nodeType":"ElementaryTypeName","src":"699:4:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"673:40:26"},"returnParameters":{"id":17383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17382,"name":"","nodeType":"VariableDeclaration","scope":17384,"src":"737:4:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17381,"name":"uint","nodeType":"ElementaryTypeName","src":"737:4:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"736:6:26"},"scope":17398,"src":"651:92:26","stateMutability":"view","superFunction":null,"visibility":"external"},{"body":null,"documentation":"@notice Calculates the current supply interest rate per block\n@param cash The total amount of cash the market has\n@param borrows The total amount of borrows the market has outstanding\n@param reserves The total amount of reserves the market has\n@param reserveFactorMantissa The current reserve factor the market has\n@return The supply rate per block (as a percentage, and scaled by 1e18)","id":17397,"implemented":false,"kind":"function","modifiers":[],"name":"getSupplyRate","nodeType":"FunctionDefinition","parameters":{"id":17393,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17386,"name":"cash","nodeType":"VariableDeclaration","scope":17397,"src":"1224:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17385,"name":"uint","nodeType":"ElementaryTypeName","src":"1224:4:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":17388,"name":"borrows","nodeType":"VariableDeclaration","scope":17397,"src":"1235:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17387,"name":"uint","nodeType":"ElementaryTypeName","src":"1235:4:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":17390,"name":"reserves","nodeType":"VariableDeclaration","scope":17397,"src":"1249:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17389,"name":"uint","nodeType":"ElementaryTypeName","src":"1249:4:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":17392,"name":"reserveFactorMantissa","nodeType":"VariableDeclaration","scope":17397,"src":"1264:26:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17391,"name":"uint","nodeType":"ElementaryTypeName","src":"1264:4:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1223:68:26"},"returnParameters":{"id":17396,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17395,"name":"","nodeType":"VariableDeclaration","scope":17397,"src":"1315:4:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17394,"name":"uint","nodeType":"ElementaryTypeName","src":"1315:4:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1314:6:26"},"scope":17398,"src":"1201:120:26","stateMutability":"view","superFunction":null,"visibility":"external"}],"scope":17399,"src":"105:1219:26"}],"src":"0:1325:26"},"id":26},"contracts/JumpRateModel.sol":{"ast":{"absolutePath":"contracts/JumpRateModel.sol","exportedSymbols":{"JumpRateModel":[17627]},"id":17628,"nodeType":"SourceUnit","nodes":[{"id":17400,"literals":["solidity","0.5",".17"],"nodeType":"PragmaDirective","src":"0:23:27"},{"absolutePath":"contracts/InterestRateModel.sol","file":"./InterestRateModel.sol","id":17401,"nodeType":"ImportDirective","scope":17628,"sourceUnit":17399,"src":"25:33:27","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/SafeMath.sol","file":"./SafeMath.sol","id":17402,"nodeType":"ImportDirective","scope":17628,"sourceUnit":21346,"src":"59:24:27","symbolAliases":[],"unitAlias":""},{"baseContracts":[{"arguments":null,"baseName":{"contractScope":null,"id":17403,"name":"InterestRateModel","nodeType":"UserDefinedTypeName","referencedDeclaration":17398,"src":"186:17:27","typeDescriptions":{"typeIdentifier":"t_contract$_InterestRateModel_$17398","typeString":"contract InterestRateModel"}},"id":17404,"nodeType":"InheritanceSpecifier","src":"186:17:27"}],"contractDependencies":[17398],"contractKind":"contract","documentation":"@title Compound's JumpRateModel Contract\n@author Compound","fullyImplemented":true,"id":17627,"linearizedBaseContracts":[17627,17398],"name":"JumpRateModel","nodeType":"ContractDefinition","nodes":[{"id":17407,"libraryName":{"contractScope":null,"id":17405,"name":"SafeMath","nodeType":"UserDefinedTypeName","referencedDeclaration":21345,"src":"216:8:27","typeDescriptions":{"typeIdentifier":"t_contract$_SafeMath_$21345","typeString":"library SafeMath"}},"nodeType":"UsingForDirective","src":"210:24:27","typeName":{"id":17406,"name":"uint","nodeType":"ElementaryTypeName","src":"229:4:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"anonymous":false,"documentation":null,"id":17417,"name":"NewInterestParams","nodeType":"EventDefinition","parameters":{"id":17416,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17409,"indexed":false,"name":"baseRatePerBlock","nodeType":"VariableDeclaration","scope":17417,"src":"264:21:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17408,"name":"uint","nodeType":"ElementaryTypeName","src":"264:4:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":17411,"indexed":false,"name":"multiplierPerBlock","nodeType":"VariableDeclaration","scope":17417,"src":"287:23:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17410,"name":"uint","nodeType":"ElementaryTypeName","src":"287:4:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":17413,"indexed":false,"name":"jumpMultiplierPerBlock","nodeType":"VariableDeclaration","scope":17417,"src":"312:27:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17412,"name":"uint","nodeType":"ElementaryTypeName","src":"312:4:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":17415,"indexed":false,"name":"kink","nodeType":"VariableDeclaration","scope":17417,"src":"341:9:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17414,"name":"uint","nodeType":"ElementaryTypeName","src":"341:4:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"263:88:27"},"src":"240:112:27"},{"constant":true,"id":17420,"name":"blocksPerYear","nodeType":"VariableDeclaration","scope":17627,"src":"474:44:27","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17418,"name":"uint","nodeType":"ElementaryTypeName","src":"474:4:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"argumentTypes":null,"hexValue":"32333732353030","id":17419,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"511:7:27","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_2372500_by_1","typeString":"int_const 2372500"},"value":"2372500"},"visibility":"public"},{"constant":false,"id":17422,"name":"multiplierPerBlock","nodeType":"VariableDeclaration","scope":17627,"src":"668:30:27","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17421,"name":"uint","nodeType":"ElementaryTypeName","src":"668:4:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"public"},{"constant":false,"id":17424,"name":"baseRatePerBlock","nodeType":"VariableDeclaration","scope":17627,"src":"811:28:27","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17423,"name":"uint","nodeType":"ElementaryTypeName","src":"811:4:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"public"},{"constant":false,"id":17426,"name":"jumpMultiplierPerBlock","nodeType":"VariableDeclaration","scope":17627,"src":"944:34:27","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17425,"name":"uint","nodeType":"ElementaryTypeName","src":"944:4:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"public"},{"constant":false,"id":17428,"name":"kink","nodeType":"VariableDeclaration","scope":17627,"src":"1078:16:27","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17427,"name":"uint","nodeType":"ElementaryTypeName","src":"1078:4:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"public"},{"body":{"id":17471,"nodeType":"Block","src":"1652:335:27","statements":[{"expression":{"argumentTypes":null,"id":17444,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":17439,"name":"baseRatePerBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17424,"src":"1662:16:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":17442,"name":"blocksPerYear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17420,"src":"1701:13:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":17440,"name":"baseRatePerYear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17430,"src":"1681:15:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"div","nodeType":"MemberAccess","referencedDeclaration":21278,"src":"1681:19:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":17443,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1681:34:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1662:53:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17445,"nodeType":"ExpressionStatement","src":"1662:53:27"},{"expression":{"argumentTypes":null,"id":17451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":17446,"name":"multiplierPerBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17422,"src":"1725:18:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":17449,"name":"blocksPerYear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17420,"src":"1768:13:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":17447,"name":"multiplierPerYear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17432,"src":"1746:17:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17448,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"div","nodeType":"MemberAccess","referencedDeclaration":21278,"src":"1746:21:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":17450,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1746:36:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1725:57:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17452,"nodeType":"ExpressionStatement","src":"1725:57:27"},{"expression":{"argumentTypes":null,"id":17458,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":17453,"name":"jumpMultiplierPerBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17426,"src":"1792:22:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":17456,"name":"blocksPerYear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17420,"src":"1843:13:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":17454,"name":"jumpMultiplierPerYear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17434,"src":"1817:21:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17455,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"div","nodeType":"MemberAccess","referencedDeclaration":21278,"src":"1817:25:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":17457,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1817:40:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1792:65:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17459,"nodeType":"ExpressionStatement","src":"1792:65:27"},{"expression":{"argumentTypes":null,"id":17462,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":17460,"name":"kink","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17428,"src":"1867:4:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":17461,"name":"kink_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17436,"src":"1874:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1867:12:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17463,"nodeType":"ExpressionStatement","src":"1867:12:27"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":17465,"name":"baseRatePerBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17424,"src":"1913:16:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":17466,"name":"multiplierPerBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17422,"src":"1931:18:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":17467,"name":"jumpMultiplierPerBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17426,"src":"1951:22:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":17468,"name":"kink","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17428,"src":"1975:4:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":17464,"name":"NewInterestParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17417,"src":"1895:17:27","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,uint256,uint256)"}},"id":17469,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1895:85:27","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17470,"nodeType":"EmitStatement","src":"1890:90:27"}]},"documentation":"@notice Construct an interest rate model\n@param baseRatePerYear The approximate target base APR, as a mantissa (scaled by 1e18)\n@param multiplierPerYear The rate of increase in interest rate wrt utilization (scaled by 1e18)\n@param jumpMultiplierPerYear The multiplierPerBlock after hitting a specified utilization point\n@param kink_ The utilization point at which the jump multiplier is applied","id":17472,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":17437,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17430,"name":"baseRatePerYear","nodeType":"VariableDeclaration","scope":17472,"src":"1559:20:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17429,"name":"uint","nodeType":"ElementaryTypeName","src":"1559:4:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":17432,"name":"multiplierPerYear","nodeType":"VariableDeclaration","scope":17472,"src":"1581:22:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17431,"name":"uint","nodeType":"ElementaryTypeName","src":"1581:4:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":17434,"name":"jumpMultiplierPerYear","nodeType":"VariableDeclaration","scope":17472,"src":"1605:26:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17433,"name":"uint","nodeType":"ElementaryTypeName","src":"1605:4:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":17436,"name":"kink_","nodeType":"VariableDeclaration","scope":17472,"src":"1633:10:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17435,"name":"uint","nodeType":"ElementaryTypeName","src":"1633:4:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1558:86:27"},"returnParameters":{"id":17438,"nodeType":"ParameterList","parameters":[],"src":"1652:0:27"},"scope":17627,"src":"1547:440:27","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":17504,"nodeType":"Block","src":"2460:198:27","statements":[{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17485,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":17483,"name":"borrows","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17476,"src":"2533:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":17484,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2544:1:27","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2533:12:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":17489,"nodeType":"IfStatement","src":"2529:51:27","trueBody":{"id":17488,"nodeType":"Block","src":"2547:33:27","statements":[{"expression":{"argumentTypes":null,"hexValue":"30","id":17486,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2568:1:27","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":17482,"id":17487,"nodeType":"Return","src":"2561:8:27"}]}},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":17500,"name":"reserves","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17478,"src":"2641:8:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":17497,"name":"borrows","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17476,"src":"2628:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":17495,"name":"cash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17474,"src":"2619:4:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17496,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":21122,"src":"2619:8:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":17498,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2619:17:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17499,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":21165,"src":"2619:21:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":17501,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2619:31:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"31653138","id":17492,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2609:4:27","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"}],"expression":{"argumentTypes":null,"id":17490,"name":"borrows","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17476,"src":"2597:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17491,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":21226,"src":"2597:11:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":17493,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2597:17:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17494,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"div","nodeType":"MemberAccess","referencedDeclaration":21278,"src":"2597:21:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":17502,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2597:54:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":17482,"id":17503,"nodeType":"Return","src":"2590:61:27"}]},"documentation":"@notice Calculates the utilization rate of the market: `borrows / (cash + borrows - reserves)`\n@param cash The amount of cash in the market\n@param borrows The amount of borrows in the market\n@param reserves The amount of reserves in the market (currently unused)\n@return The utilization rate as a mantissa between [0, 1e18]","id":17505,"implemented":true,"kind":"function","modifiers":[],"name":"utilizationRate","nodeType":"FunctionDefinition","parameters":{"id":17479,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17474,"name":"cash","nodeType":"VariableDeclaration","scope":17505,"src":"2393:9:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17473,"name":"uint","nodeType":"ElementaryTypeName","src":"2393:4:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":17476,"name":"borrows","nodeType":"VariableDeclaration","scope":17505,"src":"2404:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17475,"name":"uint","nodeType":"ElementaryTypeName","src":"2404:4:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":17478,"name":"reserves","nodeType":"VariableDeclaration","scope":17505,"src":"2418:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17477,"name":"uint","nodeType":"ElementaryTypeName","src":"2418:4:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2392:40:27"},"returnParameters":{"id":17482,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17481,"name":"","nodeType":"VariableDeclaration","scope":17505,"src":"2454:4:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17480,"name":"uint","nodeType":"ElementaryTypeName","src":"2454:4:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2453:6:27"},"scope":17627,"src":"2368:290:27","stateMutability":"pure","superFunction":null,"visibility":"public"},{"body":{"id":17572,"nodeType":"Block","src":"3127:429:27","statements":[{"assignments":[17517],"declarations":[{"constant":false,"id":17517,"name":"util","nodeType":"VariableDeclaration","scope":17572,"src":"3137:9:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17516,"name":"uint","nodeType":"ElementaryTypeName","src":"3137:4:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":17523,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":17519,"name":"cash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17507,"src":"3165:4:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":17520,"name":"borrows","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17509,"src":"3171:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":17521,"name":"reserves","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17511,"src":"3180:8:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":17518,"name":"utilizationRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17505,"src":"3149:15:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":17522,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3149:40:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3137:52:27"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":17524,"name":"util","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17517,"src":"3204:4:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"argumentTypes":null,"id":17525,"name":"kink","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17428,"src":"3212:4:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3204:12:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":17570,"nodeType":"Block","src":"3316:234:27","statements":[{"assignments":[17540],"declarations":[{"constant":false,"id":17540,"name":"normalRate","nodeType":"VariableDeclaration","scope":17570,"src":"3330:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17539,"name":"uint","nodeType":"ElementaryTypeName","src":"3330:4:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":17551,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":17549,"name":"baseRatePerBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17424,"src":"3391:16:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"31653138","id":17546,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3381:4:27","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":17543,"name":"multiplierPerBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17422,"src":"3357:18:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":17541,"name":"kink","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17428,"src":"3348:4:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17542,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":21226,"src":"3348:8:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":17544,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3348:28:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"div","nodeType":"MemberAccess","referencedDeclaration":21278,"src":"3348:32:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":17547,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3348:38:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17548,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":21122,"src":"3348:42:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":17550,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3348:60:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3330:78:27"},{"assignments":[17553],"declarations":[{"constant":false,"id":17553,"name":"excessUtil","nodeType":"VariableDeclaration","scope":17570,"src":"3422:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17552,"name":"uint","nodeType":"ElementaryTypeName","src":"3422:4:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":17558,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":17556,"name":"kink","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17428,"src":"3449:4:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":17554,"name":"util","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17517,"src":"3440:4:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17555,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":21165,"src":"3440:8:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":17557,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3440:14:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3422:32:27"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":17567,"name":"normalRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17540,"src":"3528:10:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"31653138","id":17564,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3518:4:27","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":17561,"name":"jumpMultiplierPerBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17426,"src":"3490:22:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":17559,"name":"excessUtil","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17553,"src":"3475:10:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":21226,"src":"3475:14:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":17562,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3475:38:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17563,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"div","nodeType":"MemberAccess","referencedDeclaration":21278,"src":"3475:42:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":17565,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3475:48:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17566,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":21122,"src":"3475:52:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":17568,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3475:64:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":17515,"id":17569,"nodeType":"Return","src":"3468:71:27"}]},"id":17571,"nodeType":"IfStatement","src":"3200:350:27","trueBody":{"id":17538,"nodeType":"Block","src":"3218:92:27","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":17535,"name":"baseRatePerBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17424,"src":"3282:16:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"31653138","id":17532,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3272:4:27","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":17529,"name":"multiplierPerBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17422,"src":"3248:18:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":17527,"name":"util","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17517,"src":"3239:4:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":21226,"src":"3239:8:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":17530,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3239:28:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17531,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"div","nodeType":"MemberAccess","referencedDeclaration":21278,"src":"3239:32:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":17533,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3239:38:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":21122,"src":"3239:42:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":17536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3239:60:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":17515,"id":17537,"nodeType":"Return","src":"3232:67:27"}]}}]},"documentation":"@notice Calculates the current borrow rate per block, with the error code expected by the market\n@param cash The amount of cash in the market\n@param borrows The amount of borrows in the market\n@param reserves The amount of reserves in the market\n@return The borrow rate percentage per block as a mantissa (scaled by 1e18)","id":17573,"implemented":true,"kind":"function","modifiers":[],"name":"getBorrowRate","nodeType":"FunctionDefinition","parameters":{"id":17512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17507,"name":"cash","nodeType":"VariableDeclaration","scope":17573,"src":"3060:9:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17506,"name":"uint","nodeType":"ElementaryTypeName","src":"3060:4:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":17509,"name":"borrows","nodeType":"VariableDeclaration","scope":17573,"src":"3071:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17508,"name":"uint","nodeType":"ElementaryTypeName","src":"3071:4:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":17511,"name":"reserves","nodeType":"VariableDeclaration","scope":17573,"src":"3085:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17510,"name":"uint","nodeType":"ElementaryTypeName","src":"3085:4:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"3059:40:27"},"returnParameters":{"id":17515,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17514,"name":"","nodeType":"VariableDeclaration","scope":17573,"src":"3121:4:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17513,"name":"uint","nodeType":"ElementaryTypeName","src":"3121:4:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"3120:6:27"},"scope":17627,"src":"3037:519:27","stateMutability":"view","superFunction":17384,"visibility":"public"},{"body":{"id":17625,"nodeType":"Block","src":"4087:307:27","statements":[{"assignments":[17587],"declarations":[{"constant":false,"id":17587,"name":"oneMinusReserveFactor","nodeType":"VariableDeclaration","scope":17625,"src":"4097:26:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17586,"name":"uint","nodeType":"ElementaryTypeName","src":"4097:4:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":17594,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":17592,"name":"reserveFactorMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17581,"src":"4141:21:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"31653138","id":17589,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4131:4:27","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"}],"id":17588,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4126:4:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":17590,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4126:10:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":21165,"src":"4126:14:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":17593,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4126:37:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4097:66:27"},{"assignments":[17596],"declarations":[{"constant":false,"id":17596,"name":"borrowRate","nodeType":"VariableDeclaration","scope":17625,"src":"4173:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17595,"name":"uint","nodeType":"ElementaryTypeName","src":"4173:4:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":17602,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":17598,"name":"cash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17575,"src":"4205:4:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":17599,"name":"borrows","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17577,"src":"4211:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":17600,"name":"reserves","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17579,"src":"4220:8:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":17597,"name":"getBorrowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17573,"src":"4191:13:27","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) view returns (uint256)"}},"id":17601,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4191:38:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4173:56:27"},{"assignments":[17604],"declarations":[{"constant":false,"id":17604,"name":"rateToPool","nodeType":"VariableDeclaration","scope":17625,"src":"4239:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17603,"name":"uint","nodeType":"ElementaryTypeName","src":"4239:4:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":17612,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"31653138","id":17610,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4299:4:27","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":17607,"name":"oneMinusReserveFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17587,"src":"4272:21:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":17605,"name":"borrowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17596,"src":"4257:10:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":21226,"src":"4257:14:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":17608,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4257:37:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17609,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"div","nodeType":"MemberAccess","referencedDeclaration":21278,"src":"4257:41:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":17611,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4257:47:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4239:65:27"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"31653138","id":17622,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4382:4:27","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":17619,"name":"rateToPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17604,"src":"4366:10:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":17614,"name":"cash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17575,"src":"4337:4:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":17615,"name":"borrows","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17577,"src":"4343:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":17616,"name":"reserves","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17579,"src":"4352:8:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":17613,"name":"utilizationRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17505,"src":"4321:15:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":17617,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4321:40:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17618,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":21226,"src":"4321:44:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":17620,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4321:56:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"div","nodeType":"MemberAccess","referencedDeclaration":21278,"src":"4321:60:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":17623,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4321:66:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":17585,"id":17624,"nodeType":"Return","src":"4314:73:27"}]},"documentation":"@notice Calculates the current supply rate per block\n@param cash The amount of cash in the market\n@param borrows The amount of borrows in the market\n@param reserves The amount of reserves in the market\n@param reserveFactorMantissa The current reserve factor for the market\n@return The supply rate percentage per block as a mantissa (scaled by 1e18)","id":17626,"implemented":true,"kind":"function","modifiers":[],"name":"getSupplyRate","nodeType":"FunctionDefinition","parameters":{"id":17582,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17575,"name":"cash","nodeType":"VariableDeclaration","scope":17626,"src":"3992:9:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17574,"name":"uint","nodeType":"ElementaryTypeName","src":"3992:4:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":17577,"name":"borrows","nodeType":"VariableDeclaration","scope":17626,"src":"4003:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17576,"name":"uint","nodeType":"ElementaryTypeName","src":"4003:4:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":17579,"name":"reserves","nodeType":"VariableDeclaration","scope":17626,"src":"4017:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17578,"name":"uint","nodeType":"ElementaryTypeName","src":"4017:4:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":17581,"name":"reserveFactorMantissa","nodeType":"VariableDeclaration","scope":17626,"src":"4032:26:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17580,"name":"uint","nodeType":"ElementaryTypeName","src":"4032:4:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"3991:68:27"},"returnParameters":{"id":17585,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17584,"name":"","nodeType":"VariableDeclaration","scope":17626,"src":"4081:4:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17583,"name":"uint","nodeType":"ElementaryTypeName","src":"4081:4:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"4080:6:27"},"scope":17627,"src":"3969:425:27","stateMutability":"view","superFunction":17397,"visibility":"public"}],"scope":17628,"src":"160:4236:27"}],"src":"0:4397:27"},"id":27},"contracts/JumpRateModelV2.sol":{"ast":{"absolutePath":"contracts/JumpRateModelV2.sol","exportedSymbols":{"JumpRateModelV2":[17675]},"id":17676,"nodeType":"SourceUnit","nodes":[{"id":17629,"literals":["solidity","0.5",".17"],"nodeType":"PragmaDirective","src":"0:23:28"},{"absolutePath":"contracts/BaseJumpRateModelV2.sol","file":"./BaseJumpRateModelV2.sol","id":17630,"nodeType":"ImportDirective","scope":17676,"sourceUnit":287,"src":"25:35:28","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/InterestRateModel.sol","file":"./InterestRateModel.sol","id":17631,"nodeType":"ImportDirective","scope":17676,"sourceUnit":17399,"src":"61:33:28","symbolAliases":[],"unitAlias":""},{"baseContracts":[{"arguments":null,"baseName":{"contractScope":null,"id":17632,"name":"InterestRateModel","nodeType":"UserDefinedTypeName","referencedDeclaration":17398,"src":"256:17:28","typeDescriptions":{"typeIdentifier":"t_contract$_InterestRateModel_$17398","typeString":"contract InterestRateModel"}},"id":17633,"nodeType":"InheritanceSpecifier","src":"256:17:28"},{"arguments":null,"baseName":{"contractScope":null,"id":17634,"name":"BaseJumpRateModelV2","nodeType":"UserDefinedTypeName","referencedDeclaration":286,"src":"275:19:28","typeDescriptions":{"typeIdentifier":"t_contract$_BaseJumpRateModelV2_$286","typeString":"contract BaseJumpRateModelV2"}},"id":17635,"nodeType":"InheritanceSpecifier","src":"275:19:28"}],"contractDependencies":[286,17398],"contractKind":"contract","documentation":"@title Compound's JumpRateModel Contract V2 for V2 cTokens\n@author Arr00\n@notice Supports only for V2 cTokens","fullyImplemented":true,"id":17675,"linearizedBaseContracts":[17675,286,17398],"name":"JumpRateModelV2","nodeType":"ContractDefinition","nodes":[{"body":{"id":17652,"nodeType":"Block","src":"721:70:28","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":17647,"name":"cash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17637,"src":"760:4:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":17648,"name":"borrows","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17639,"src":"766:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":17649,"name":"reserves","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17641,"src":"775:8:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":17646,"name":"getBorrowRateInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":181,"src":"738:21:28","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) view returns (uint256)"}},"id":17650,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"738:46:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":17645,"id":17651,"nodeType":"Return","src":"731:53:28"}]},"documentation":"@notice Calculates the current borrow rate per block\n@param cash The amount of cash in the market\n@param borrows The amount of borrows in the market\n@param reserves The amount of reserves in the market\n@return The borrow rate percentage per block as a mantissa (scaled by 1e18)","id":17653,"implemented":true,"kind":"function","modifiers":[],"name":"getBorrowRate","nodeType":"FunctionDefinition","parameters":{"id":17642,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17637,"name":"cash","nodeType":"VariableDeclaration","scope":17653,"src":"652:9:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17636,"name":"uint","nodeType":"ElementaryTypeName","src":"652:4:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":17639,"name":"borrows","nodeType":"VariableDeclaration","scope":17653,"src":"663:12:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17638,"name":"uint","nodeType":"ElementaryTypeName","src":"663:4:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":17641,"name":"reserves","nodeType":"VariableDeclaration","scope":17653,"src":"677:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17640,"name":"uint","nodeType":"ElementaryTypeName","src":"677:4:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"651:40:28"},"returnParameters":{"id":17645,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17644,"name":"","nodeType":"VariableDeclaration","scope":17653,"src":"715:4:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17643,"name":"uint","nodeType":"ElementaryTypeName","src":"715:4:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"714:6:28"},"scope":17675,"src":"629:162:28","stateMutability":"view","superFunction":17384,"visibility":"external"},{"body":{"id":17673,"nodeType":"Block","src":"1014:2:28","statements":[]},"documentation":null,"id":17674,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"argumentTypes":null,"id":17666,"name":"baseRatePerYear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17655,"src":"937:15:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":17667,"name":"multiplierPerYear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17657,"src":"953:17:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":17668,"name":"jumpMultiplierPerYear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17659,"src":"971:21:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":17669,"name":"kink_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17661,"src":"993:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":17670,"name":"owner_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17663,"src":"999:6:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":17671,"modifierName":{"argumentTypes":null,"id":17665,"name":"BaseJumpRateModelV2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":286,"src":"917:19:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BaseJumpRateModelV2_$286_$","typeString":"type(contract BaseJumpRateModelV2)"}},"nodeType":"ModifierInvocation","src":"917:89:28"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":17664,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17655,"name":"baseRatePerYear","nodeType":"VariableDeclaration","scope":17674,"src":"809:20:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17654,"name":"uint","nodeType":"ElementaryTypeName","src":"809:4:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":17657,"name":"multiplierPerYear","nodeType":"VariableDeclaration","scope":17674,"src":"831:22:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17656,"name":"uint","nodeType":"ElementaryTypeName","src":"831:4:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":17659,"name":"jumpMultiplierPerYear","nodeType":"VariableDeclaration","scope":17674,"src":"855:26:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17658,"name":"uint","nodeType":"ElementaryTypeName","src":"855:4:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":17661,"name":"kink_","nodeType":"VariableDeclaration","scope":17674,"src":"883:10:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17660,"name":"uint","nodeType":"ElementaryTypeName","src":"883:4:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":17663,"name":"owner_","nodeType":"VariableDeclaration","scope":17674,"src":"895:14:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17662,"name":"address","nodeType":"ElementaryTypeName","src":"895:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"808:102:28"},"returnParameters":{"id":17672,"nodeType":"ParameterList","parameters":[],"src":"1014:0:28"},"scope":17675,"src":"797:219:28","stateMutability":"nonpayable","superFunction":null,"visibility":"public"}],"scope":17676,"src":"228:790:28"}],"src":"0:1019:28"},"id":28},"contracts/Lens/CompoundLens.sol":{"ast":{"absolutePath":"contracts/Lens/CompoundLens.sol","exportedSymbols":{"CompoundLens":[18592]},"id":18593,"nodeType":"SourceUnit","nodes":[{"id":17677,"literals":["solidity","0.5",".17"],"nodeType":"PragmaDirective","src":"0:23:29"},{"id":17678,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"24:33:29"},{"absolutePath":"contracts/CErc20.sol","file":"../CErc20.sol","id":17679,"nodeType":"ImportDirective","scope":18593,"sourceUnit":1144,"src":"59:23:29","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/CToken.sol","file":"../CToken.sol","id":17680,"nodeType":"ImportDirective","scope":18593,"sourceUnit":6187,"src":"83:23:29","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/Comptroller.sol","file":"../Comptroller.sol","id":17681,"nodeType":"ImportDirective","scope":18593,"sourceUnit":10532,"src":"107:28:29","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/EIP20Interface.sol","file":"../EIP20Interface.sol","id":17682,"nodeType":"ImportDirective","scope":18593,"sourceUnit":13485,"src":"136:31:29","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/Governance/GovernorAlpha.sol","file":"../Governance/GovernorAlpha.sol","id":17683,"nodeType":"ImportDirective","scope":18593,"sourceUnit":17269,"src":"168:41:29","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/Governance/Comp.sol","file":"../Governance/Comp.sol","id":17684,"nodeType":"ImportDirective","scope":18593,"sourceUnit":16025,"src":"210:32:29","symbolAliases":[],"unitAlias":""},{"baseContracts":[],"contractDependencies":[],"contractKind":"contract","documentation":null,"fullyImplemented":true,"id":18592,"linearizedBaseContracts":[18592],"name":"CompoundLens","nodeType":"ContractDefinition","nodes":[{"canonicalName":"CompoundLens.CTokenMetadata","id":17713,"members":[{"constant":false,"id":17686,"name":"cToken","nodeType":"VariableDeclaration","scope":17713,"src":"304:14:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17685,"name":"address","nodeType":"ElementaryTypeName","src":"304:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":17688,"name":"exchangeRateCurrent","nodeType":"VariableDeclaration","scope":17713,"src":"328:24:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17687,"name":"uint","nodeType":"ElementaryTypeName","src":"328:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":17690,"name":"supplyRatePerBlock","nodeType":"VariableDeclaration","scope":17713,"src":"362:23:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17689,"name":"uint","nodeType":"ElementaryTypeName","src":"362:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":17692,"name":"borrowRatePerBlock","nodeType":"VariableDeclaration","scope":17713,"src":"395:23:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17691,"name":"uint","nodeType":"ElementaryTypeName","src":"395:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":17694,"name":"reserveFactorMantissa","nodeType":"VariableDeclaration","scope":17713,"src":"428:26:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17693,"name":"uint","nodeType":"ElementaryTypeName","src":"428:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":17696,"name":"totalBorrows","nodeType":"VariableDeclaration","scope":17713,"src":"464:17:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17695,"name":"uint","nodeType":"ElementaryTypeName","src":"464:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":17698,"name":"totalReserves","nodeType":"VariableDeclaration","scope":17713,"src":"491:18:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17697,"name":"uint","nodeType":"ElementaryTypeName","src":"491:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":17700,"name":"totalSupply","nodeType":"VariableDeclaration","scope":17713,"src":"519:16:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17699,"name":"uint","nodeType":"ElementaryTypeName","src":"519:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":17702,"name":"totalCash","nodeType":"VariableDeclaration","scope":17713,"src":"545:14:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17701,"name":"uint","nodeType":"ElementaryTypeName","src":"545:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":17704,"name":"isListed","nodeType":"VariableDeclaration","scope":17713,"src":"569:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":17703,"name":"bool","nodeType":"ElementaryTypeName","src":"569:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},{"constant":false,"id":17706,"name":"collateralFactorMantissa","nodeType":"VariableDeclaration","scope":17713,"src":"592:29:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17705,"name":"uint","nodeType":"ElementaryTypeName","src":"592:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":17708,"name":"underlyingAssetAddress","nodeType":"VariableDeclaration","scope":17713,"src":"631:30:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17707,"name":"address","nodeType":"ElementaryTypeName","src":"631:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":17710,"name":"cTokenDecimals","nodeType":"VariableDeclaration","scope":17713,"src":"671:19:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17709,"name":"uint","nodeType":"ElementaryTypeName","src":"671:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":17712,"name":"underlyingDecimals","nodeType":"VariableDeclaration","scope":17713,"src":"700:23:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17711,"name":"uint","nodeType":"ElementaryTypeName","src":"700:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"name":"CTokenMetadata","nodeType":"StructDefinition","scope":18592,"src":"272:458:29","visibility":"public"},{"body":{"id":17831,"nodeType":"Block","src":"814:1446:29","statements":[{"assignments":[17721],"declarations":[{"constant":false,"id":17721,"name":"exchangeRateCurrent","nodeType":"VariableDeclaration","scope":17831,"src":"824:24:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17720,"name":"uint","nodeType":"ElementaryTypeName","src":"824:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":17725,"initialValue":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":17722,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17715,"src":"851:6:29","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":17723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"exchangeRateCurrent","nodeType":"MemberAccess","referencedDeclaration":3135,"src":"851:26:29","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$_t_uint256_$","typeString":"function () external returns (uint256)"}},"id":17724,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"851:28:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"824:55:29"},{"assignments":[17727],"declarations":[{"constant":false,"id":17727,"name":"comptroller","nodeType":"VariableDeclaration","scope":17831,"src":"889:23:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_Comptroller_$10531","typeString":"contract Comptroller"},"typeName":{"contractScope":null,"id":17726,"name":"Comptroller","nodeType":"UserDefinedTypeName","referencedDeclaration":10531,"src":"889:11:29","typeDescriptions":{"typeIdentifier":"t_contract$_Comptroller_$10531","typeString":"contract Comptroller"}},"value":null,"visibility":"internal"}],"id":17735,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":17730,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17715,"src":"935:6:29","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":17731,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"comptroller","nodeType":"MemberAccess","referencedDeclaration":6224,"src":"935:18:29","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_ComptrollerInterface_$12980_$","typeString":"function () view external returns (contract ComptrollerInterface)"}},"id":17732,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"935:20:29","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerInterface_$12980","typeString":"contract ComptrollerInterface"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ComptrollerInterface_$12980","typeString":"contract ComptrollerInterface"}],"id":17729,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"927:7:29","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":17733,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"927:29:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":17728,"name":"Comptroller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10531,"src":"915:11:29","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Comptroller_$10531_$","typeString":"type(contract Comptroller)"}},"id":17734,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"915:42:29","typeDescriptions":{"typeIdentifier":"t_contract$_Comptroller_$10531","typeString":"contract Comptroller"}},"nodeType":"VariableDeclarationStatement","src":"889:68:29"},{"assignments":[17737,17739],"declarations":[{"constant":false,"id":17737,"name":"isListed","nodeType":"VariableDeclaration","scope":17831,"src":"968:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":17736,"name":"bool","nodeType":"ElementaryTypeName","src":"968:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},{"constant":false,"id":17739,"name":"collateralFactorMantissa","nodeType":"VariableDeclaration","scope":17831,"src":"983:29:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17738,"name":"uint","nodeType":"ElementaryTypeName","src":"983:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":17746,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":17743,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17715,"src":"1044:6:29","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":17742,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1036:7:29","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":17744,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1036:15:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":17740,"name":"comptroller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17727,"src":"1016:11:29","typeDescriptions":{"typeIdentifier":"t_contract$_Comptroller_$10531","typeString":"contract Comptroller"}},"id":17741,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"markets","nodeType":"MemberAccess","referencedDeclaration":13060,"src":"1016:19:29","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_bool_$_t_uint256_$","typeString":"function (address) view external returns (bool,uint256)"}},"id":17745,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1016:36:29","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"967:85:29"},{"assignments":[17748],"declarations":[{"constant":false,"id":17748,"name":"underlyingAssetAddress","nodeType":"VariableDeclaration","scope":17831,"src":"1062:30:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17747,"name":"address","nodeType":"ElementaryTypeName","src":"1062:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":17749,"initialValue":null,"nodeType":"VariableDeclarationStatement","src":"1062:30:29"},{"assignments":[17751],"declarations":[{"constant":false,"id":17751,"name":"underlyingDecimals","nodeType":"VariableDeclaration","scope":17831,"src":"1102:23:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17750,"name":"uint","nodeType":"ElementaryTypeName","src":"1102:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":17752,"initialValue":null,"nodeType":"VariableDeclarationStatement","src":"1102:23:29"},{"condition":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":17754,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17715,"src":"1155:6:29","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":17755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"symbol","nodeType":"MemberAccess","referencedDeclaration":6212,"src":"1155:13:29","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_string_memory_$","typeString":"function () view external returns (string memory)"}},"id":17756,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1155:15:29","typeDescriptions":{"typeIdentifier":"t_string_memory","typeString":"string memory"}},{"argumentTypes":null,"hexValue":"63455448","id":17757,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1172:6:29","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_b3c46c78043b5ff6963757142af6c297cddb5a0d3d823357472228eb35c8e890","typeString":"literal_string \"cETH\""},"value":"cETH"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_b3c46c78043b5ff6963757142af6c297cddb5a0d3d823357472228eb35c8e890","typeString":"literal_string \"cETH\""}],"id":17753,"name":"compareStrings","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18591,"src":"1140:14:29","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_bool_$","typeString":"function (string memory,string memory) pure returns (bool)"}},"id":17758,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1140:39:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":17794,"nodeType":"Block","src":"1284:203:29","statements":[{"assignments":[17771],"declarations":[{"constant":false,"id":17771,"name":"cErc20","nodeType":"VariableDeclaration","scope":17794,"src":"1298:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_CErc20_$1143","typeString":"contract CErc20"},"typeName":{"contractScope":null,"id":17770,"name":"CErc20","nodeType":"UserDefinedTypeName","referencedDeclaration":1143,"src":"1298:6:29","typeDescriptions":{"typeIdentifier":"t_contract$_CErc20_$1143","typeString":"contract CErc20"}},"value":null,"visibility":"internal"}],"id":17777,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":17774,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17715,"src":"1329:6:29","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":17773,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1321:7:29","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":17775,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1321:15:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":17772,"name":"CErc20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1143,"src":"1314:6:29","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CErc20_$1143_$","typeString":"type(contract CErc20)"}},"id":17776,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1314:23:29","typeDescriptions":{"typeIdentifier":"t_contract$_CErc20_$1143","typeString":"contract CErc20"}},"nodeType":"VariableDeclarationStatement","src":"1298:39:29"},{"expression":{"argumentTypes":null,"id":17782,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":17778,"name":"underlyingAssetAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17748,"src":"1351:22:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":17779,"name":"cErc20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17771,"src":"1376:6:29","typeDescriptions":{"typeIdentifier":"t_contract$_CErc20_$1143","typeString":"contract CErc20"}},"id":17780,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"underlying","nodeType":"MemberAccess","referencedDeclaration":6558,"src":"1376:17:29","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":17781,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1376:19:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1351:44:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":17783,"nodeType":"ExpressionStatement","src":"1351:44:29"},{"expression":{"argumentTypes":null,"id":17792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":17784,"name":"underlyingDecimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17751,"src":"1409:18:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":17786,"name":"cErc20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17771,"src":"1445:6:29","typeDescriptions":{"typeIdentifier":"t_contract$_CErc20_$1143","typeString":"contract CErc20"}},"id":17787,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"underlying","nodeType":"MemberAccess","referencedDeclaration":6558,"src":"1445:17:29","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":17788,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1445:19:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":17785,"name":"EIP20Interface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13484,"src":"1430:14:29","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_EIP20Interface_$13484_$","typeString":"type(contract EIP20Interface)"}},"id":17789,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1430:35:29","typeDescriptions":{"typeIdentifier":"t_contract$_EIP20Interface_$13484","typeString":"contract EIP20Interface"}},"id":17790,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":13417,"src":"1430:44:29","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":17791,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1430:46:29","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"1409:67:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17793,"nodeType":"ExpressionStatement","src":"1409:67:29"}]},"id":17795,"nodeType":"IfStatement","src":"1136:351:29","trueBody":{"id":17769,"nodeType":"Block","src":"1181:97:29","statements":[{"expression":{"argumentTypes":null,"id":17763,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":17759,"name":"underlyingAssetAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17748,"src":"1195:22:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":17761,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1228:1:29","subdenomination":null,"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":17760,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1220:7:29","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":17762,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1220:10:29","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"1195:35:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":17764,"nodeType":"ExpressionStatement","src":"1195:35:29"},{"expression":{"argumentTypes":null,"id":17767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":17765,"name":"underlyingDecimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17751,"src":"1244:18:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"hexValue":"3138","id":17766,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1265:2:29","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"src":"1244:23:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17768,"nodeType":"ExpressionStatement","src":"1244:23:29"}]}},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":17798,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17715,"src":"1549:6:29","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":17797,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1541:7:29","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":17799,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1541:15:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":17800,"name":"exchangeRateCurrent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17721,"src":"1591:19:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":17801,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17715,"src":"1644:6:29","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":17802,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"supplyRatePerBlock","nodeType":"MemberAccess","referencedDeclaration":2957,"src":"1644:25:29","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":17803,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1644:27:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":17804,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17715,"src":"1705:6:29","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":17805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"borrowRatePerBlock","nodeType":"MemberAccess","referencedDeclaration":2932,"src":"1705:25:29","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":17806,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1705:27:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":17807,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17715,"src":"1769:6:29","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":17808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"reserveFactorMantissa","nodeType":"MemberAccess","referencedDeclaration":6234,"src":"1769:28:29","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":17809,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1769:30:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":17810,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17715,"src":"1827:6:29","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":17811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"totalBorrows","nodeType":"MemberAccess","referencedDeclaration":6240,"src":"1827:19:29","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":17812,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1827:21:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":17813,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17715,"src":"1877:6:29","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":17814,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"totalReserves","nodeType":"MemberAccess","referencedDeclaration":6242,"src":"1877:20:29","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":17815,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1877:22:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":17816,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17715,"src":"1926:6:29","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":17817,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"totalSupply","nodeType":"MemberAccess","referencedDeclaration":6248,"src":"1926:18:29","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":17818,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1926:20:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":17819,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17715,"src":"1971:6:29","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":17820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getCash","nodeType":"MemberAccess","referencedDeclaration":3255,"src":"1971:14:29","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":17821,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1971:16:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":17822,"name":"isListed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17737,"src":"2011:8:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"id":17823,"name":"collateralFactorMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17739,"src":"2059:24:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":17824,"name":"underlyingAssetAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17748,"src":"2121:22:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":17825,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17715,"src":"2173:6:29","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":17826,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":6214,"src":"2173:15:29","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":17827,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2173:17:29","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"argumentTypes":null,"id":17828,"name":"underlyingDecimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17751,"src":"2224:18:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":17796,"name":"CTokenMetadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17713,"src":"1504:14:29","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_CTokenMetadata_$17713_storage_ptr_$","typeString":"type(struct CompoundLens.CTokenMetadata storage pointer)"}},"id":17829,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["cToken","exchangeRateCurrent","supplyRatePerBlock","borrowRatePerBlock","reserveFactorMantissa","totalBorrows","totalReserves","totalSupply","totalCash","isListed","collateralFactorMantissa","underlyingAssetAddress","cTokenDecimals","underlyingDecimals"],"nodeType":"FunctionCall","src":"1504:749:29","typeDescriptions":{"typeIdentifier":"t_struct$_CTokenMetadata_$17713_memory","typeString":"struct CompoundLens.CTokenMetadata memory"}},"functionReturnParameters":17719,"id":17830,"nodeType":"Return","src":"1497:756:29"}]},"documentation":null,"id":17832,"implemented":true,"kind":"function","modifiers":[],"name":"cTokenMetadata","nodeType":"FunctionDefinition","parameters":{"id":17716,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17715,"name":"cToken","nodeType":"VariableDeclaration","scope":17832,"src":"760:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},"typeName":{"contractScope":null,"id":17714,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"760:6:29","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"value":null,"visibility":"internal"}],"src":"759:15:29"},"returnParameters":{"id":17719,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17718,"name":"","nodeType":"VariableDeclaration","scope":17832,"src":"791:21:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_CTokenMetadata_$17713_memory_ptr","typeString":"struct CompoundLens.CTokenMetadata"},"typeName":{"contractScope":null,"id":17717,"name":"CTokenMetadata","nodeType":"UserDefinedTypeName","referencedDeclaration":17713,"src":"791:14:29","typeDescriptions":{"typeIdentifier":"t_struct$_CTokenMetadata_$17713_storage_ptr","typeString":"struct CompoundLens.CTokenMetadata"}},"value":null,"visibility":"internal"}],"src":"790:23:29"},"scope":18592,"src":"736:1524:29","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":17880,"nodeType":"Block","src":"2363:251:29","statements":[{"assignments":[17842],"declarations":[{"constant":false,"id":17842,"name":"cTokenCount","nodeType":"VariableDeclaration","scope":17880,"src":"2373:16:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17841,"name":"uint","nodeType":"ElementaryTypeName","src":"2373:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":17845,"initialValue":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":17843,"name":"cTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17835,"src":"2392:7:29","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_calldata_ptr","typeString":"contract CToken[] calldata"}},"id":17844,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2392:14:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2373:33:29"},{"assignments":[17849],"declarations":[{"constant":false,"id":17849,"name":"res","nodeType":"VariableDeclaration","scope":17880,"src":"2416:27:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CTokenMetadata_$17713_memory_$dyn_memory_ptr","typeString":"struct CompoundLens.CTokenMetadata[]"},"typeName":{"baseType":{"contractScope":null,"id":17847,"name":"CTokenMetadata","nodeType":"UserDefinedTypeName","referencedDeclaration":17713,"src":"2416:14:29","typeDescriptions":{"typeIdentifier":"t_struct$_CTokenMetadata_$17713_storage_ptr","typeString":"struct CompoundLens.CTokenMetadata"}},"id":17848,"length":null,"nodeType":"ArrayTypeName","src":"2416:16:29","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CTokenMetadata_$17713_storage_$dyn_storage_ptr","typeString":"struct CompoundLens.CTokenMetadata[]"}},"value":null,"visibility":"internal"}],"id":17855,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":17853,"name":"cTokenCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17842,"src":"2467:11:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":17852,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2446:20:29","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_CTokenMetadata_$17713_memory_$dyn_memory_$","typeString":"function (uint256) pure returns (struct CompoundLens.CTokenMetadata memory[] memory)"},"typeName":{"baseType":{"contractScope":null,"id":17850,"name":"CTokenMetadata","nodeType":"UserDefinedTypeName","referencedDeclaration":17713,"src":"2450:14:29","typeDescriptions":{"typeIdentifier":"t_struct$_CTokenMetadata_$17713_storage_ptr","typeString":"struct CompoundLens.CTokenMetadata"}},"id":17851,"length":null,"nodeType":"ArrayTypeName","src":"2450:16:29","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CTokenMetadata_$17713_storage_$dyn_storage_ptr","typeString":"struct CompoundLens.CTokenMetadata[]"}}},"id":17854,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2446:33:29","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CTokenMetadata_$17713_memory_$dyn_memory","typeString":"struct CompoundLens.CTokenMetadata memory[] memory"}},"nodeType":"VariableDeclarationStatement","src":"2416:63:29"},{"body":{"id":17876,"nodeType":"Block","src":"2528:60:29","statements":[{"expression":{"argumentTypes":null,"id":17874,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":17866,"name":"res","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17849,"src":"2542:3:29","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CTokenMetadata_$17713_memory_$dyn_memory_ptr","typeString":"struct CompoundLens.CTokenMetadata memory[] memory"}},"id":17868,"indexExpression":{"argumentTypes":null,"id":17867,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17857,"src":"2546:1:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2542:6:29","typeDescriptions":{"typeIdentifier":"t_struct$_CTokenMetadata_$17713_memory","typeString":"struct CompoundLens.CTokenMetadata memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":17870,"name":"cTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17835,"src":"2566:7:29","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_calldata_ptr","typeString":"contract CToken[] calldata"}},"id":17872,"indexExpression":{"argumentTypes":null,"id":17871,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17857,"src":"2574:1:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2566:10:29","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":17869,"name":"cTokenMetadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17832,"src":"2551:14:29","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_CToken_$6186_$returns$_t_struct$_CTokenMetadata_$17713_memory_ptr_$","typeString":"function (contract CToken) returns (struct CompoundLens.CTokenMetadata memory)"}},"id":17873,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2551:26:29","typeDescriptions":{"typeIdentifier":"t_struct$_CTokenMetadata_$17713_memory_ptr","typeString":"struct CompoundLens.CTokenMetadata memory"}},"src":"2542:35:29","typeDescriptions":{"typeIdentifier":"t_struct$_CTokenMetadata_$17713_memory","typeString":"struct CompoundLens.CTokenMetadata memory"}},"id":17875,"nodeType":"ExpressionStatement","src":"2542:35:29"}]},"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17862,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":17860,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17857,"src":"2506:1:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"id":17861,"name":"cTokenCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17842,"src":"2510:11:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2506:15:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17877,"initializationExpression":{"assignments":[17857],"declarations":[{"constant":false,"id":17857,"name":"i","nodeType":"VariableDeclaration","scope":17877,"src":"2494:6:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17856,"name":"uint","nodeType":"ElementaryTypeName","src":"2494:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":17859,"initialValue":{"argumentTypes":null,"hexValue":"30","id":17858,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2503:1:29","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2494:10:29"},"loopExpression":{"expression":{"argumentTypes":null,"id":17864,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2523:3:29","subExpression":{"argumentTypes":null,"id":17863,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17857,"src":"2523:1:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17865,"nodeType":"ExpressionStatement","src":"2523:3:29"},"nodeType":"ForStatement","src":"2489:99:29"},{"expression":{"argumentTypes":null,"id":17878,"name":"res","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17849,"src":"2604:3:29","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CTokenMetadata_$17713_memory_$dyn_memory_ptr","typeString":"struct CompoundLens.CTokenMetadata memory[] memory"}},"functionReturnParameters":17840,"id":17879,"nodeType":"Return","src":"2597:10:29"}]},"documentation":null,"id":17881,"implemented":true,"kind":"function","modifiers":[],"name":"cTokenMetadataAll","nodeType":"FunctionDefinition","parameters":{"id":17836,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17835,"name":"cTokens","nodeType":"VariableDeclaration","scope":17881,"src":"2293:25:29","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_calldata_ptr","typeString":"contract CToken[]"},"typeName":{"baseType":{"contractScope":null,"id":17833,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"2293:6:29","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":17834,"length":null,"nodeType":"ArrayTypeName","src":"2293:8:29","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_storage_ptr","typeString":"contract CToken[]"}},"value":null,"visibility":"internal"}],"src":"2292:27:29"},"returnParameters":{"id":17840,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17839,"name":"","nodeType":"VariableDeclaration","scope":17881,"src":"2338:23:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CTokenMetadata_$17713_memory_$dyn_memory_ptr","typeString":"struct CompoundLens.CTokenMetadata[]"},"typeName":{"baseType":{"contractScope":null,"id":17837,"name":"CTokenMetadata","nodeType":"UserDefinedTypeName","referencedDeclaration":17713,"src":"2338:14:29","typeDescriptions":{"typeIdentifier":"t_struct$_CTokenMetadata_$17713_storage_ptr","typeString":"struct CompoundLens.CTokenMetadata"}},"id":17838,"length":null,"nodeType":"ArrayTypeName","src":"2338:16:29","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CTokenMetadata_$17713_storage_$dyn_storage_ptr","typeString":"struct CompoundLens.CTokenMetadata[]"}},"value":null,"visibility":"internal"}],"src":"2337:25:29"},"scope":18592,"src":"2266:348:29","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"canonicalName":"CompoundLens.CTokenBalances","id":17894,"members":[{"constant":false,"id":17883,"name":"cToken","nodeType":"VariableDeclaration","scope":17894,"src":"2652:14:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17882,"name":"address","nodeType":"ElementaryTypeName","src":"2652:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":17885,"name":"balanceOf","nodeType":"VariableDeclaration","scope":17894,"src":"2676:14:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17884,"name":"uint","nodeType":"ElementaryTypeName","src":"2676:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":17887,"name":"borrowBalanceCurrent","nodeType":"VariableDeclaration","scope":17894,"src":"2700:25:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17886,"name":"uint","nodeType":"ElementaryTypeName","src":"2700:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":17889,"name":"balanceOfUnderlying","nodeType":"VariableDeclaration","scope":17894,"src":"2735:24:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17888,"name":"uint","nodeType":"ElementaryTypeName","src":"2735:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":17891,"name":"tokenBalance","nodeType":"VariableDeclaration","scope":17894,"src":"2769:17:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17890,"name":"uint","nodeType":"ElementaryTypeName","src":"2769:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":17893,"name":"tokenAllowance","nodeType":"VariableDeclaration","scope":17894,"src":"2796:19:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17892,"name":"uint","nodeType":"ElementaryTypeName","src":"2796:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"name":"CTokenBalances","nodeType":"StructDefinition","scope":18592,"src":"2620:202:29","visibility":"public"},{"body":{"id":17993,"nodeType":"Block","src":"2931:1008:29","statements":[{"assignments":[17904],"declarations":[{"constant":false,"id":17904,"name":"balanceOf","nodeType":"VariableDeclaration","scope":17993,"src":"2941:14:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17903,"name":"uint","nodeType":"ElementaryTypeName","src":"2941:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":17909,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":17907,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17898,"src":"2975:7:29","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"argumentTypes":null,"id":17905,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17896,"src":"2958:6:29","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":17906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2784,"src":"2958:16:29","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":17908,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2958:25:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2941:42:29"},{"assignments":[17911],"declarations":[{"constant":false,"id":17911,"name":"borrowBalanceCurrent","nodeType":"VariableDeclaration","scope":17993,"src":"2993:25:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17910,"name":"uint","nodeType":"ElementaryTypeName","src":"2993:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":17916,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":17914,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17898,"src":"3049:7:29","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"argumentTypes":null,"id":17912,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17896,"src":"3021:6:29","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":17913,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"borrowBalanceCurrent","nodeType":"MemberAccess","referencedDeclaration":3005,"src":"3021:27:29","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$_t_uint256_$","typeString":"function (address) external returns (uint256)"}},"id":17915,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3021:36:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2993:64:29"},{"assignments":[17918],"declarations":[{"constant":false,"id":17918,"name":"balanceOfUnderlying","nodeType":"VariableDeclaration","scope":17993,"src":"3067:24:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17917,"name":"uint","nodeType":"ElementaryTypeName","src":"3067:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":17923,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":17921,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17898,"src":"3121:7:29","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"argumentTypes":null,"id":17919,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17896,"src":"3094:6:29","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":17920,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOfUnderlying","nodeType":"MemberAccess","referencedDeclaration":2820,"src":"3094:26:29","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$_t_uint256_$","typeString":"function (address) external returns (uint256)"}},"id":17922,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3094:35:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3067:62:29"},{"assignments":[17925],"declarations":[{"constant":false,"id":17925,"name":"tokenBalance","nodeType":"VariableDeclaration","scope":17993,"src":"3139:17:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17924,"name":"uint","nodeType":"ElementaryTypeName","src":"3139:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":17926,"initialValue":null,"nodeType":"VariableDeclarationStatement","src":"3139:17:29"},{"assignments":[17928],"declarations":[{"constant":false,"id":17928,"name":"tokenAllowance","nodeType":"VariableDeclaration","scope":17993,"src":"3166:19:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17927,"name":"uint","nodeType":"ElementaryTypeName","src":"3166:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":17929,"initialValue":null,"nodeType":"VariableDeclarationStatement","src":"3166:19:29"},{"condition":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":17931,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17896,"src":"3215:6:29","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":17932,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"symbol","nodeType":"MemberAccess","referencedDeclaration":6212,"src":"3215:13:29","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_string_memory_$","typeString":"function () view external returns (string memory)"}},"id":17933,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3215:15:29","typeDescriptions":{"typeIdentifier":"t_string_memory","typeString":"string memory"}},{"argumentTypes":null,"hexValue":"63455448","id":17934,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3232:6:29","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_b3c46c78043b5ff6963757142af6c297cddb5a0d3d823357472228eb35c8e890","typeString":"literal_string \"cETH\""},"value":"cETH"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_b3c46c78043b5ff6963757142af6c297cddb5a0d3d823357472228eb35c8e890","typeString":"literal_string \"cETH\""}],"id":17930,"name":"compareStrings","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18591,"src":"3200:14:29","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_bool_$","typeString":"function (string memory,string memory) pure returns (bool)"}},"id":17935,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3200:39:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":17980,"nodeType":"Block","src":"3348:276:29","statements":[{"assignments":[17948],"declarations":[{"constant":false,"id":17948,"name":"cErc20","nodeType":"VariableDeclaration","scope":17980,"src":"3362:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_CErc20_$1143","typeString":"contract CErc20"},"typeName":{"contractScope":null,"id":17947,"name":"CErc20","nodeType":"UserDefinedTypeName","referencedDeclaration":1143,"src":"3362:6:29","typeDescriptions":{"typeIdentifier":"t_contract$_CErc20_$1143","typeString":"contract CErc20"}},"value":null,"visibility":"internal"}],"id":17954,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":17951,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17896,"src":"3393:6:29","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":17950,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3385:7:29","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":17952,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3385:15:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":17949,"name":"CErc20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1143,"src":"3378:6:29","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CErc20_$1143_$","typeString":"type(contract CErc20)"}},"id":17953,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3378:23:29","typeDescriptions":{"typeIdentifier":"t_contract$_CErc20_$1143","typeString":"contract CErc20"}},"nodeType":"VariableDeclarationStatement","src":"3362:39:29"},{"assignments":[17956],"declarations":[{"constant":false,"id":17956,"name":"underlying","nodeType":"VariableDeclaration","scope":17980,"src":"3415:25:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_EIP20Interface_$13484","typeString":"contract EIP20Interface"},"typeName":{"contractScope":null,"id":17955,"name":"EIP20Interface","nodeType":"UserDefinedTypeName","referencedDeclaration":13484,"src":"3415:14:29","typeDescriptions":{"typeIdentifier":"t_contract$_EIP20Interface_$13484","typeString":"contract EIP20Interface"}},"value":null,"visibility":"internal"}],"id":17962,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":17958,"name":"cErc20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17948,"src":"3458:6:29","typeDescriptions":{"typeIdentifier":"t_contract$_CErc20_$1143","typeString":"contract CErc20"}},"id":17959,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"underlying","nodeType":"MemberAccess","referencedDeclaration":6558,"src":"3458:17:29","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":17960,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3458:19:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":17957,"name":"EIP20Interface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13484,"src":"3443:14:29","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_EIP20Interface_$13484_$","typeString":"type(contract EIP20Interface)"}},"id":17961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3443:35:29","typeDescriptions":{"typeIdentifier":"t_contract$_EIP20Interface_$13484","typeString":"contract EIP20Interface"}},"nodeType":"VariableDeclarationStatement","src":"3415:63:29"},{"expression":{"argumentTypes":null,"id":17968,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":17963,"name":"tokenBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17925,"src":"3492:12:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":17966,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17898,"src":"3528:7:29","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"argumentTypes":null,"id":17964,"name":"underlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17956,"src":"3507:10:29","typeDescriptions":{"typeIdentifier":"t_contract$_EIP20Interface_$13484","typeString":"contract EIP20Interface"}},"id":17965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":13429,"src":"3507:20:29","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":17967,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3507:29:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3492:44:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17969,"nodeType":"ExpressionStatement","src":"3492:44:29"},{"expression":{"argumentTypes":null,"id":17978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":17970,"name":"tokenAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17928,"src":"3550:14:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":17973,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17898,"src":"3588:7:29","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":17975,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17896,"src":"3605:6:29","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":17974,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3597:7:29","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":17976,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3597:15:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":17971,"name":"underlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17956,"src":"3567:10:29","typeDescriptions":{"typeIdentifier":"t_contract$_EIP20Interface_$13484","typeString":"contract EIP20Interface"}},"id":17972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":13467,"src":"3567:20:29","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":17977,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3567:46:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3550:63:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17979,"nodeType":"ExpressionStatement","src":"3550:63:29"}]},"id":17981,"nodeType":"IfStatement","src":"3196:428:29","trueBody":{"id":17946,"nodeType":"Block","src":"3241:101:29","statements":[{"expression":{"argumentTypes":null,"id":17939,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":17936,"name":"tokenBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17925,"src":"3255:12:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":17937,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17898,"src":"3270:7:29","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":17938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balance","nodeType":"MemberAccess","referencedDeclaration":null,"src":"3270:15:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3255:30:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17940,"nodeType":"ExpressionStatement","src":"3255:30:29"},{"expression":{"argumentTypes":null,"id":17944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":17941,"name":"tokenAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17928,"src":"3299:14:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":17942,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17898,"src":"3316:7:29","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":17943,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balance","nodeType":"MemberAccess","referencedDeclaration":null,"src":"3316:15:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3299:32:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17945,"nodeType":"ExpressionStatement","src":"3299:32:29"}]}},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":17984,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17896,"src":"3686:6:29","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":17983,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3678:7:29","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":17985,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3678:15:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":17986,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17904,"src":"3718:9:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":17987,"name":"borrowBalanceCurrent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17911,"src":"3763:20:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":17988,"name":"balanceOfUnderlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17918,"src":"3818:19:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":17989,"name":"tokenBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17925,"src":"3865:12:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":17990,"name":"tokenAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17928,"src":"3907:14:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":17982,"name":"CTokenBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17894,"src":"3641:14:29","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_CTokenBalances_$17894_storage_ptr_$","typeString":"type(struct CompoundLens.CTokenBalances storage pointer)"}},"id":17991,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["cToken","balanceOf","borrowBalanceCurrent","balanceOfUnderlying","tokenBalance","tokenAllowance"],"nodeType":"FunctionCall","src":"3641:291:29","typeDescriptions":{"typeIdentifier":"t_struct$_CTokenBalances_$17894_memory","typeString":"struct CompoundLens.CTokenBalances memory"}},"functionReturnParameters":17902,"id":17992,"nodeType":"Return","src":"3634:298:29"}]},"documentation":null,"id":17994,"implemented":true,"kind":"function","modifiers":[],"name":"cTokenBalances","nodeType":"FunctionDefinition","parameters":{"id":17899,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17896,"name":"cToken","nodeType":"VariableDeclaration","scope":17994,"src":"2852:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},"typeName":{"contractScope":null,"id":17895,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"2852:6:29","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"value":null,"visibility":"internal"},{"constant":false,"id":17898,"name":"account","nodeType":"VariableDeclaration","scope":17994,"src":"2867:23:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":17897,"name":"address","nodeType":"ElementaryTypeName","src":"2867:15:29","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"value":null,"visibility":"internal"}],"src":"2851:40:29"},"returnParameters":{"id":17902,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17901,"name":"","nodeType":"VariableDeclaration","scope":17994,"src":"2908:21:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_CTokenBalances_$17894_memory_ptr","typeString":"struct CompoundLens.CTokenBalances"},"typeName":{"contractScope":null,"id":17900,"name":"CTokenBalances","nodeType":"UserDefinedTypeName","referencedDeclaration":17894,"src":"2908:14:29","typeDescriptions":{"typeIdentifier":"t_struct$_CTokenBalances_$17894_storage_ptr","typeString":"struct CompoundLens.CTokenBalances"}},"value":null,"visibility":"internal"}],"src":"2907:23:29"},"scope":18592,"src":"2828:1111:29","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":18045,"nodeType":"Block","src":"4067:260:29","statements":[{"assignments":[18006],"declarations":[{"constant":false,"id":18006,"name":"cTokenCount","nodeType":"VariableDeclaration","scope":18045,"src":"4077:16:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18005,"name":"uint","nodeType":"ElementaryTypeName","src":"4077:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":18009,"initialValue":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":18007,"name":"cTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17997,"src":"4096:7:29","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_calldata_ptr","typeString":"contract CToken[] calldata"}},"id":18008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"4096:14:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4077:33:29"},{"assignments":[18013],"declarations":[{"constant":false,"id":18013,"name":"res","nodeType":"VariableDeclaration","scope":18045,"src":"4120:27:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CTokenBalances_$17894_memory_$dyn_memory_ptr","typeString":"struct CompoundLens.CTokenBalances[]"},"typeName":{"baseType":{"contractScope":null,"id":18011,"name":"CTokenBalances","nodeType":"UserDefinedTypeName","referencedDeclaration":17894,"src":"4120:14:29","typeDescriptions":{"typeIdentifier":"t_struct$_CTokenBalances_$17894_storage_ptr","typeString":"struct CompoundLens.CTokenBalances"}},"id":18012,"length":null,"nodeType":"ArrayTypeName","src":"4120:16:29","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CTokenBalances_$17894_storage_$dyn_storage_ptr","typeString":"struct CompoundLens.CTokenBalances[]"}},"value":null,"visibility":"internal"}],"id":18019,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":18017,"name":"cTokenCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18006,"src":"4171:11:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":18016,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"4150:20:29","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_CTokenBalances_$17894_memory_$dyn_memory_$","typeString":"function (uint256) pure returns (struct CompoundLens.CTokenBalances memory[] memory)"},"typeName":{"baseType":{"contractScope":null,"id":18014,"name":"CTokenBalances","nodeType":"UserDefinedTypeName","referencedDeclaration":17894,"src":"4154:14:29","typeDescriptions":{"typeIdentifier":"t_struct$_CTokenBalances_$17894_storage_ptr","typeString":"struct CompoundLens.CTokenBalances"}},"id":18015,"length":null,"nodeType":"ArrayTypeName","src":"4154:16:29","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CTokenBalances_$17894_storage_$dyn_storage_ptr","typeString":"struct CompoundLens.CTokenBalances[]"}}},"id":18018,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4150:33:29","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CTokenBalances_$17894_memory_$dyn_memory","typeString":"struct CompoundLens.CTokenBalances memory[] memory"}},"nodeType":"VariableDeclarationStatement","src":"4120:63:29"},{"body":{"id":18041,"nodeType":"Block","src":"4232:69:29","statements":[{"expression":{"argumentTypes":null,"id":18039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":18030,"name":"res","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18013,"src":"4246:3:29","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CTokenBalances_$17894_memory_$dyn_memory_ptr","typeString":"struct CompoundLens.CTokenBalances memory[] memory"}},"id":18032,"indexExpression":{"argumentTypes":null,"id":18031,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18021,"src":"4250:1:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4246:6:29","typeDescriptions":{"typeIdentifier":"t_struct$_CTokenBalances_$17894_memory","typeString":"struct CompoundLens.CTokenBalances memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":18034,"name":"cTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17997,"src":"4270:7:29","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_calldata_ptr","typeString":"contract CToken[] calldata"}},"id":18036,"indexExpression":{"argumentTypes":null,"id":18035,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18021,"src":"4278:1:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4270:10:29","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},{"argumentTypes":null,"id":18037,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17999,"src":"4282:7:29","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":18033,"name":"cTokenBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17994,"src":"4255:14:29","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_CToken_$6186_$_t_address_payable_$returns$_t_struct$_CTokenBalances_$17894_memory_ptr_$","typeString":"function (contract CToken,address payable) returns (struct CompoundLens.CTokenBalances memory)"}},"id":18038,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4255:35:29","typeDescriptions":{"typeIdentifier":"t_struct$_CTokenBalances_$17894_memory_ptr","typeString":"struct CompoundLens.CTokenBalances memory"}},"src":"4246:44:29","typeDescriptions":{"typeIdentifier":"t_struct$_CTokenBalances_$17894_memory","typeString":"struct CompoundLens.CTokenBalances memory"}},"id":18040,"nodeType":"ExpressionStatement","src":"4246:44:29"}]},"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":18024,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18021,"src":"4210:1:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"id":18025,"name":"cTokenCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18006,"src":"4214:11:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4210:15:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":18042,"initializationExpression":{"assignments":[18021],"declarations":[{"constant":false,"id":18021,"name":"i","nodeType":"VariableDeclaration","scope":18042,"src":"4198:6:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18020,"name":"uint","nodeType":"ElementaryTypeName","src":"4198:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":18023,"initialValue":{"argumentTypes":null,"hexValue":"30","id":18022,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4207:1:29","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"4198:10:29"},"loopExpression":{"expression":{"argumentTypes":null,"id":18028,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"4227:3:29","subExpression":{"argumentTypes":null,"id":18027,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18021,"src":"4227:1:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18029,"nodeType":"ExpressionStatement","src":"4227:3:29"},"nodeType":"ForStatement","src":"4193:108:29"},{"expression":{"argumentTypes":null,"id":18043,"name":"res","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18013,"src":"4317:3:29","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CTokenBalances_$17894_memory_$dyn_memory_ptr","typeString":"struct CompoundLens.CTokenBalances memory[] memory"}},"functionReturnParameters":18004,"id":18044,"nodeType":"Return","src":"4310:10:29"}]},"documentation":null,"id":18046,"implemented":true,"kind":"function","modifiers":[],"name":"cTokenBalancesAll","nodeType":"FunctionDefinition","parameters":{"id":18000,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17997,"name":"cTokens","nodeType":"VariableDeclaration","scope":18046,"src":"3972:25:29","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_calldata_ptr","typeString":"contract CToken[]"},"typeName":{"baseType":{"contractScope":null,"id":17995,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"3972:6:29","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":17996,"length":null,"nodeType":"ArrayTypeName","src":"3972:8:29","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_storage_ptr","typeString":"contract CToken[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":17999,"name":"account","nodeType":"VariableDeclaration","scope":18046,"src":"3999:23:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":17998,"name":"address","nodeType":"ElementaryTypeName","src":"3999:15:29","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"value":null,"visibility":"internal"}],"src":"3971:52:29"},"returnParameters":{"id":18004,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18003,"name":"","nodeType":"VariableDeclaration","scope":18046,"src":"4042:23:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CTokenBalances_$17894_memory_$dyn_memory_ptr","typeString":"struct CompoundLens.CTokenBalances[]"},"typeName":{"baseType":{"contractScope":null,"id":18001,"name":"CTokenBalances","nodeType":"UserDefinedTypeName","referencedDeclaration":17894,"src":"4042:14:29","typeDescriptions":{"typeIdentifier":"t_struct$_CTokenBalances_$17894_storage_ptr","typeString":"struct CompoundLens.CTokenBalances"}},"id":18002,"length":null,"nodeType":"ArrayTypeName","src":"4042:16:29","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CTokenBalances_$17894_storage_$dyn_storage_ptr","typeString":"struct CompoundLens.CTokenBalances[]"}},"value":null,"visibility":"internal"}],"src":"4041:25:29"},"scope":18592,"src":"3945:382:29","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"canonicalName":"CompoundLens.CTokenUnderlyingPrice","id":18051,"members":[{"constant":false,"id":18048,"name":"cToken","nodeType":"VariableDeclaration","scope":18051,"src":"4372:14:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18047,"name":"address","nodeType":"ElementaryTypeName","src":"4372:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":18050,"name":"underlyingPrice","nodeType":"VariableDeclaration","scope":18051,"src":"4396:20:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18049,"name":"uint","nodeType":"ElementaryTypeName","src":"4396:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"name":"CTokenUnderlyingPrice","nodeType":"StructDefinition","scope":18592,"src":"4333:90:29","visibility":"public"},{"body":{"id":18084,"nodeType":"Block","src":"4521:298:29","statements":[{"assignments":[18059],"declarations":[{"constant":false,"id":18059,"name":"comptroller","nodeType":"VariableDeclaration","scope":18084,"src":"4531:23:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_Comptroller_$10531","typeString":"contract Comptroller"},"typeName":{"contractScope":null,"id":18058,"name":"Comptroller","nodeType":"UserDefinedTypeName","referencedDeclaration":10531,"src":"4531:11:29","typeDescriptions":{"typeIdentifier":"t_contract$_Comptroller_$10531","typeString":"contract Comptroller"}},"value":null,"visibility":"internal"}],"id":18067,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":18062,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18053,"src":"4577:6:29","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":18063,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"comptroller","nodeType":"MemberAccess","referencedDeclaration":6224,"src":"4577:18:29","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_ComptrollerInterface_$12980_$","typeString":"function () view external returns (contract ComptrollerInterface)"}},"id":18064,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4577:20:29","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerInterface_$12980","typeString":"contract ComptrollerInterface"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ComptrollerInterface_$12980","typeString":"contract ComptrollerInterface"}],"id":18061,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4569:7:29","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":18065,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4569:29:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":18060,"name":"Comptroller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10531,"src":"4557:11:29","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Comptroller_$10531_$","typeString":"type(contract Comptroller)"}},"id":18066,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4557:42:29","typeDescriptions":{"typeIdentifier":"t_contract$_Comptroller_$10531","typeString":"contract Comptroller"}},"nodeType":"VariableDeclarationStatement","src":"4531:68:29"},{"assignments":[18069],"declarations":[{"constant":false,"id":18069,"name":"priceOracle","nodeType":"VariableDeclaration","scope":18084,"src":"4609:23:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_PriceOracle_$18689","typeString":"contract PriceOracle"},"typeName":{"contractScope":null,"id":18068,"name":"PriceOracle","nodeType":"UserDefinedTypeName","referencedDeclaration":18689,"src":"4609:11:29","typeDescriptions":{"typeIdentifier":"t_contract$_PriceOracle_$18689","typeString":"contract PriceOracle"}},"value":null,"visibility":"internal"}],"id":18073,"initialValue":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":18070,"name":"comptroller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18059,"src":"4635:11:29","typeDescriptions":{"typeIdentifier":"t_contract$_Comptroller_$10531","typeString":"contract Comptroller"}},"id":18071,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"oracle","nodeType":"MemberAccess","referencedDeclaration":13033,"src":"4635:18:29","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_PriceOracle_$18689_$","typeString":"function () view external returns (contract PriceOracle)"}},"id":18072,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4635:20:29","typeDescriptions":{"typeIdentifier":"t_contract$_PriceOracle_$18689","typeString":"contract PriceOracle"}},"nodeType":"VariableDeclarationStatement","src":"4609:46:29"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":18076,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18053,"src":"4725:6:29","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":18075,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4717:7:29","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":18077,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4717:15:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":18080,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18053,"src":"4794:6:29","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"expression":{"argumentTypes":null,"id":18078,"name":"priceOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18069,"src":"4763:11:29","typeDescriptions":{"typeIdentifier":"t_contract$_PriceOracle_$18689","typeString":"contract PriceOracle"}},"id":18079,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getUnderlyingPrice","nodeType":"MemberAccess","referencedDeclaration":18688,"src":"4763:30:29","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_contract$_CToken_$6186_$returns$_t_uint256_$","typeString":"function (contract CToken) view external returns (uint256)"}},"id":18081,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4763:38:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":18074,"name":"CTokenUnderlyingPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18051,"src":"4673:21:29","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_CTokenUnderlyingPrice_$18051_storage_ptr_$","typeString":"type(struct CompoundLens.CTokenUnderlyingPrice storage pointer)"}},"id":18082,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["cToken","underlyingPrice"],"nodeType":"FunctionCall","src":"4673:139:29","typeDescriptions":{"typeIdentifier":"t_struct$_CTokenUnderlyingPrice_$18051_memory","typeString":"struct CompoundLens.CTokenUnderlyingPrice memory"}},"functionReturnParameters":18057,"id":18083,"nodeType":"Return","src":"4666:146:29"}]},"documentation":null,"id":18085,"implemented":true,"kind":"function","modifiers":[],"name":"cTokenUnderlyingPrice","nodeType":"FunctionDefinition","parameters":{"id":18054,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18053,"name":"cToken","nodeType":"VariableDeclaration","scope":18085,"src":"4460:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},"typeName":{"contractScope":null,"id":18052,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"4460:6:29","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"value":null,"visibility":"internal"}],"src":"4459:15:29"},"returnParameters":{"id":18057,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18056,"name":"","nodeType":"VariableDeclaration","scope":18085,"src":"4491:28:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_CTokenUnderlyingPrice_$18051_memory_ptr","typeString":"struct CompoundLens.CTokenUnderlyingPrice"},"typeName":{"contractScope":null,"id":18055,"name":"CTokenUnderlyingPrice","nodeType":"UserDefinedTypeName","referencedDeclaration":18051,"src":"4491:21:29","typeDescriptions":{"typeIdentifier":"t_struct$_CTokenUnderlyingPrice_$18051_storage_ptr","typeString":"struct CompoundLens.CTokenUnderlyingPrice"}},"value":null,"visibility":"internal"}],"src":"4490:30:29"},"scope":18592,"src":"4429:390:29","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":18133,"nodeType":"Block","src":"4936:272:29","statements":[{"assignments":[18095],"declarations":[{"constant":false,"id":18095,"name":"cTokenCount","nodeType":"VariableDeclaration","scope":18133,"src":"4946:16:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18094,"name":"uint","nodeType":"ElementaryTypeName","src":"4946:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":18098,"initialValue":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":18096,"name":"cTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18088,"src":"4965:7:29","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_calldata_ptr","typeString":"contract CToken[] calldata"}},"id":18097,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"4965:14:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4946:33:29"},{"assignments":[18102],"declarations":[{"constant":false,"id":18102,"name":"res","nodeType":"VariableDeclaration","scope":18133,"src":"4989:34:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CTokenUnderlyingPrice_$18051_memory_$dyn_memory_ptr","typeString":"struct CompoundLens.CTokenUnderlyingPrice[]"},"typeName":{"baseType":{"contractScope":null,"id":18100,"name":"CTokenUnderlyingPrice","nodeType":"UserDefinedTypeName","referencedDeclaration":18051,"src":"4989:21:29","typeDescriptions":{"typeIdentifier":"t_struct$_CTokenUnderlyingPrice_$18051_storage_ptr","typeString":"struct CompoundLens.CTokenUnderlyingPrice"}},"id":18101,"length":null,"nodeType":"ArrayTypeName","src":"4989:23:29","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CTokenUnderlyingPrice_$18051_storage_$dyn_storage_ptr","typeString":"struct CompoundLens.CTokenUnderlyingPrice[]"}},"value":null,"visibility":"internal"}],"id":18108,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":18106,"name":"cTokenCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18095,"src":"5054:11:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":18105,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"5026:27:29","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_CTokenUnderlyingPrice_$18051_memory_$dyn_memory_$","typeString":"function (uint256) pure returns (struct CompoundLens.CTokenUnderlyingPrice memory[] memory)"},"typeName":{"baseType":{"contractScope":null,"id":18103,"name":"CTokenUnderlyingPrice","nodeType":"UserDefinedTypeName","referencedDeclaration":18051,"src":"5030:21:29","typeDescriptions":{"typeIdentifier":"t_struct$_CTokenUnderlyingPrice_$18051_storage_ptr","typeString":"struct CompoundLens.CTokenUnderlyingPrice"}},"id":18104,"length":null,"nodeType":"ArrayTypeName","src":"5030:23:29","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CTokenUnderlyingPrice_$18051_storage_$dyn_storage_ptr","typeString":"struct CompoundLens.CTokenUnderlyingPrice[]"}}},"id":18107,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5026:40:29","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CTokenUnderlyingPrice_$18051_memory_$dyn_memory","typeString":"struct CompoundLens.CTokenUnderlyingPrice memory[] memory"}},"nodeType":"VariableDeclarationStatement","src":"4989:77:29"},{"body":{"id":18129,"nodeType":"Block","src":"5115:67:29","statements":[{"expression":{"argumentTypes":null,"id":18127,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":18119,"name":"res","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18102,"src":"5129:3:29","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CTokenUnderlyingPrice_$18051_memory_$dyn_memory_ptr","typeString":"struct CompoundLens.CTokenUnderlyingPrice memory[] memory"}},"id":18121,"indexExpression":{"argumentTypes":null,"id":18120,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18110,"src":"5133:1:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5129:6:29","typeDescriptions":{"typeIdentifier":"t_struct$_CTokenUnderlyingPrice_$18051_memory","typeString":"struct CompoundLens.CTokenUnderlyingPrice memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":18123,"name":"cTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18088,"src":"5160:7:29","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_calldata_ptr","typeString":"contract CToken[] calldata"}},"id":18125,"indexExpression":{"argumentTypes":null,"id":18124,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18110,"src":"5168:1:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5160:10:29","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":18122,"name":"cTokenUnderlyingPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18085,"src":"5138:21:29","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_CToken_$6186_$returns$_t_struct$_CTokenUnderlyingPrice_$18051_memory_ptr_$","typeString":"function (contract CToken) returns (struct CompoundLens.CTokenUnderlyingPrice memory)"}},"id":18126,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5138:33:29","typeDescriptions":{"typeIdentifier":"t_struct$_CTokenUnderlyingPrice_$18051_memory_ptr","typeString":"struct CompoundLens.CTokenUnderlyingPrice memory"}},"src":"5129:42:29","typeDescriptions":{"typeIdentifier":"t_struct$_CTokenUnderlyingPrice_$18051_memory","typeString":"struct CompoundLens.CTokenUnderlyingPrice memory"}},"id":18128,"nodeType":"ExpressionStatement","src":"5129:42:29"}]},"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":18113,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18110,"src":"5093:1:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"id":18114,"name":"cTokenCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18095,"src":"5097:11:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5093:15:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":18130,"initializationExpression":{"assignments":[18110],"declarations":[{"constant":false,"id":18110,"name":"i","nodeType":"VariableDeclaration","scope":18130,"src":"5081:6:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18109,"name":"uint","nodeType":"ElementaryTypeName","src":"5081:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":18112,"initialValue":{"argumentTypes":null,"hexValue":"30","id":18111,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5090:1:29","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"5081:10:29"},"loopExpression":{"expression":{"argumentTypes":null,"id":18117,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"5110:3:29","subExpression":{"argumentTypes":null,"id":18116,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18110,"src":"5110:1:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18118,"nodeType":"ExpressionStatement","src":"5110:3:29"},"nodeType":"ForStatement","src":"5076:106:29"},{"expression":{"argumentTypes":null,"id":18131,"name":"res","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18102,"src":"5198:3:29","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CTokenUnderlyingPrice_$18051_memory_$dyn_memory_ptr","typeString":"struct CompoundLens.CTokenUnderlyingPrice memory[] memory"}},"functionReturnParameters":18093,"id":18132,"nodeType":"Return","src":"5191:10:29"}]},"documentation":null,"id":18134,"implemented":true,"kind":"function","modifiers":[],"name":"cTokenUnderlyingPriceAll","nodeType":"FunctionDefinition","parameters":{"id":18089,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18088,"name":"cTokens","nodeType":"VariableDeclaration","scope":18134,"src":"4859:25:29","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_calldata_ptr","typeString":"contract CToken[]"},"typeName":{"baseType":{"contractScope":null,"id":18086,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"4859:6:29","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":18087,"length":null,"nodeType":"ArrayTypeName","src":"4859:8:29","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_storage_ptr","typeString":"contract CToken[]"}},"value":null,"visibility":"internal"}],"src":"4858:27:29"},"returnParameters":{"id":18093,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18092,"name":"","nodeType":"VariableDeclaration","scope":18134,"src":"4904:30:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CTokenUnderlyingPrice_$18051_memory_$dyn_memory_ptr","typeString":"struct CompoundLens.CTokenUnderlyingPrice[]"},"typeName":{"baseType":{"contractScope":null,"id":18090,"name":"CTokenUnderlyingPrice","nodeType":"UserDefinedTypeName","referencedDeclaration":18051,"src":"4904:21:29","typeDescriptions":{"typeIdentifier":"t_struct$_CTokenUnderlyingPrice_$18051_storage_ptr","typeString":"struct CompoundLens.CTokenUnderlyingPrice"}},"id":18091,"length":null,"nodeType":"ArrayTypeName","src":"4904:23:29","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CTokenUnderlyingPrice_$18051_storage_$dyn_storage_ptr","typeString":"struct CompoundLens.CTokenUnderlyingPrice[]"}},"value":null,"visibility":"internal"}],"src":"4903:32:29"},"scope":18592,"src":"4825:383:29","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"canonicalName":"CompoundLens.AccountLimits","id":18142,"members":[{"constant":false,"id":18137,"name":"markets","nodeType":"VariableDeclaration","scope":18142,"src":"5245:16:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_storage_ptr","typeString":"contract CToken[]"},"typeName":{"baseType":{"contractScope":null,"id":18135,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"5245:6:29","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":18136,"length":null,"nodeType":"ArrayTypeName","src":"5245:8:29","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_storage_ptr","typeString":"contract CToken[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":18139,"name":"liquidity","nodeType":"VariableDeclaration","scope":18142,"src":"5271:14:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18138,"name":"uint","nodeType":"ElementaryTypeName","src":"5271:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":18141,"name":"shortfall","nodeType":"VariableDeclaration","scope":18142,"src":"5295:14:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18140,"name":"uint","nodeType":"ElementaryTypeName","src":"5295:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"name":"AccountLimits","nodeType":"StructDefinition","scope":18592,"src":"5214:102:29","visibility":"public"},{"body":{"id":18177,"nodeType":"Block","src":"5428:307:29","statements":[{"assignments":[18152,18154,18156],"declarations":[{"constant":false,"id":18152,"name":"errorCode","nodeType":"VariableDeclaration","scope":18177,"src":"5439:14:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18151,"name":"uint","nodeType":"ElementaryTypeName","src":"5439:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":18154,"name":"liquidity","nodeType":"VariableDeclaration","scope":18177,"src":"5455:14:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18153,"name":"uint","nodeType":"ElementaryTypeName","src":"5455:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":18156,"name":"shortfall","nodeType":"VariableDeclaration","scope":18177,"src":"5471:14:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18155,"name":"uint","nodeType":"ElementaryTypeName","src":"5471:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":18161,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":18159,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18146,"src":"5521:7:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":18157,"name":"comptroller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18144,"src":"5489:11:29","typeDescriptions":{"typeIdentifier":"t_contract$_Comptroller_$10531","typeString":"contract Comptroller"}},"id":18158,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAccountLiquidity","nodeType":"MemberAccess","referencedDeclaration":8594,"src":"5489:31:29","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"function (address) view external returns (uint256,uint256,uint256)"}},"id":18160,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5489:40:29","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"5438:91:29"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":18163,"name":"errorCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18152,"src":"5547:9:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":18164,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5560:1:29","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5547:14:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":18162,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22553,"src":"5539:7:29","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":18166,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5539:23:29","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18167,"nodeType":"ExpressionStatement","src":"5539:23:29"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":18171,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18146,"src":"5641:7:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":18169,"name":"comptroller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18144,"src":"5617:11:29","typeDescriptions":{"typeIdentifier":"t_contract$_Comptroller_$10531","typeString":"contract Comptroller"}},"id":18170,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAssetsIn","nodeType":"MemberAccess","referencedDeclaration":6986,"src":"5617:23:29","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_array$_t_contract$_CToken_$6186_$dyn_memory_ptr_$","typeString":"function (address) view external returns (contract CToken[] memory)"}},"id":18172,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5617:32:29","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_memory_ptr","typeString":"contract CToken[] memory"}},{"argumentTypes":null,"id":18173,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18154,"src":"5674:9:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":18174,"name":"shortfall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18156,"src":"5708:9:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_memory_ptr","typeString":"contract CToken[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":18168,"name":"AccountLimits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18142,"src":"5580:13:29","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_AccountLimits_$18142_storage_ptr_$","typeString":"type(struct CompoundLens.AccountLimits storage pointer)"}},"id":18175,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["markets","liquidity","shortfall"],"nodeType":"FunctionCall","src":"5580:148:29","typeDescriptions":{"typeIdentifier":"t_struct$_AccountLimits_$18142_memory","typeString":"struct CompoundLens.AccountLimits memory"}},"functionReturnParameters":18150,"id":18176,"nodeType":"Return","src":"5573:155:29"}]},"documentation":null,"id":18178,"implemented":true,"kind":"function","modifiers":[],"name":"getAccountLimits","nodeType":"FunctionDefinition","parameters":{"id":18147,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18144,"name":"comptroller","nodeType":"VariableDeclaration","scope":18178,"src":"5348:23:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_Comptroller_$10531","typeString":"contract Comptroller"},"typeName":{"contractScope":null,"id":18143,"name":"Comptroller","nodeType":"UserDefinedTypeName","referencedDeclaration":10531,"src":"5348:11:29","typeDescriptions":{"typeIdentifier":"t_contract$_Comptroller_$10531","typeString":"contract Comptroller"}},"value":null,"visibility":"internal"},{"constant":false,"id":18146,"name":"account","nodeType":"VariableDeclaration","scope":18178,"src":"5373:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18145,"name":"address","nodeType":"ElementaryTypeName","src":"5373:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"5347:42:29"},"returnParameters":{"id":18150,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18149,"name":"","nodeType":"VariableDeclaration","scope":18178,"src":"5406:20:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_AccountLimits_$18142_memory_ptr","typeString":"struct CompoundLens.AccountLimits"},"typeName":{"contractScope":null,"id":18148,"name":"AccountLimits","nodeType":"UserDefinedTypeName","referencedDeclaration":18142,"src":"5406:13:29","typeDescriptions":{"typeIdentifier":"t_struct$_AccountLimits_$18142_storage_ptr","typeString":"struct CompoundLens.AccountLimits"}},"value":null,"visibility":"internal"}],"src":"5405:22:29"},"scope":18592,"src":"5322:413:29","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"canonicalName":"CompoundLens.GovReceipt","id":18187,"members":[{"constant":false,"id":18180,"name":"proposalId","nodeType":"VariableDeclaration","scope":18187,"src":"5769:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18179,"name":"uint","nodeType":"ElementaryTypeName","src":"5769:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":18182,"name":"hasVoted","nodeType":"VariableDeclaration","scope":18187,"src":"5794:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":18181,"name":"bool","nodeType":"ElementaryTypeName","src":"5794:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},{"constant":false,"id":18184,"name":"support","nodeType":"VariableDeclaration","scope":18187,"src":"5817:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":18183,"name":"bool","nodeType":"ElementaryTypeName","src":"5817:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},{"constant":false,"id":18186,"name":"votes","nodeType":"VariableDeclaration","scope":18187,"src":"5839:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":18185,"name":"uint96","nodeType":"ElementaryTypeName","src":"5839:6:29","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"value":null,"visibility":"internal"}],"name":"GovReceipt","nodeType":"StructDefinition","scope":18592,"src":"5741:117:29","visibility":"public"},{"body":{"id":18257,"nodeType":"Block","src":"5996:516:29","statements":[{"assignments":[18201],"declarations":[{"constant":false,"id":18201,"name":"proposalCount","nodeType":"VariableDeclaration","scope":18257,"src":"6006:18:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18200,"name":"uint","nodeType":"ElementaryTypeName","src":"6006:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":18204,"initialValue":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":18202,"name":"proposalIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18194,"src":"6027:11:29","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":18203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"6027:18:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6006:39:29"},{"assignments":[18208],"declarations":[{"constant":false,"id":18208,"name":"res","nodeType":"VariableDeclaration","scope":18257,"src":"6055:23:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_GovReceipt_$18187_memory_$dyn_memory_ptr","typeString":"struct CompoundLens.GovReceipt[]"},"typeName":{"baseType":{"contractScope":null,"id":18206,"name":"GovReceipt","nodeType":"UserDefinedTypeName","referencedDeclaration":18187,"src":"6055:10:29","typeDescriptions":{"typeIdentifier":"t_struct$_GovReceipt_$18187_storage_ptr","typeString":"struct CompoundLens.GovReceipt"}},"id":18207,"length":null,"nodeType":"ArrayTypeName","src":"6055:12:29","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_GovReceipt_$18187_storage_$dyn_storage_ptr","typeString":"struct CompoundLens.GovReceipt[]"}},"value":null,"visibility":"internal"}],"id":18214,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":18212,"name":"proposalCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18201,"src":"6098:13:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":18211,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"6081:16:29","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_GovReceipt_$18187_memory_$dyn_memory_$","typeString":"function (uint256) pure returns (struct CompoundLens.GovReceipt memory[] memory)"},"typeName":{"baseType":{"contractScope":null,"id":18209,"name":"GovReceipt","nodeType":"UserDefinedTypeName","referencedDeclaration":18187,"src":"6085:10:29","typeDescriptions":{"typeIdentifier":"t_struct$_GovReceipt_$18187_storage_ptr","typeString":"struct CompoundLens.GovReceipt"}},"id":18210,"length":null,"nodeType":"ArrayTypeName","src":"6085:12:29","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_GovReceipt_$18187_storage_$dyn_storage_ptr","typeString":"struct CompoundLens.GovReceipt[]"}}},"id":18213,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6081:31:29","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_GovReceipt_$18187_memory_$dyn_memory","typeString":"struct CompoundLens.GovReceipt memory[] memory"}},"nodeType":"VariableDeclarationStatement","src":"6055:57:29"},{"body":{"id":18253,"nodeType":"Block","src":"6163:323:29","statements":[{"assignments":[18228],"declarations":[{"constant":false,"id":18228,"name":"receipt","nodeType":"VariableDeclaration","scope":18253,"src":"6177:36:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Receipt_$16120_memory_ptr","typeString":"struct GovernorAlpha.Receipt"},"typeName":{"contractScope":null,"id":18227,"name":"GovernorAlpha.Receipt","nodeType":"UserDefinedTypeName","referencedDeclaration":16120,"src":"6177:21:29","typeDescriptions":{"typeIdentifier":"t_struct$_Receipt_$16120_storage_ptr","typeString":"struct GovernorAlpha.Receipt"}},"value":null,"visibility":"internal"}],"id":18236,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":18231,"name":"proposalIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18194,"src":"6236:11:29","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":18233,"indexExpression":{"argumentTypes":null,"id":18232,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18216,"src":"6248:1:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6236:14:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":18234,"name":"voter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18191,"src":"6252:5:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":18229,"name":"governor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18189,"src":"6216:8:29","typeDescriptions":{"typeIdentifier":"t_contract$_GovernorAlpha_$17194","typeString":"contract GovernorAlpha"}},"id":18230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getReceipt","nodeType":"MemberAccess","referencedDeclaration":16742,"src":"6216:19:29","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$_t_address_$returns$_t_struct$_Receipt_$16120_memory_ptr_$","typeString":"function (uint256,address) view external returns (struct GovernorAlpha.Receipt memory)"}},"id":18235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6216:42:29","typeDescriptions":{"typeIdentifier":"t_struct$_Receipt_$16120_memory_ptr","typeString":"struct GovernorAlpha.Receipt memory"}},"nodeType":"VariableDeclarationStatement","src":"6177:81:29"},{"expression":{"argumentTypes":null,"id":18251,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":18237,"name":"res","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18208,"src":"6272:3:29","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_GovReceipt_$18187_memory_$dyn_memory_ptr","typeString":"struct CompoundLens.GovReceipt memory[] memory"}},"id":18239,"indexExpression":{"argumentTypes":null,"id":18238,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18216,"src":"6276:1:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6272:6:29","typeDescriptions":{"typeIdentifier":"t_struct$_GovReceipt_$18187_memory","typeString":"struct CompoundLens.GovReceipt memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":18241,"name":"proposalIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18194,"src":"6322:11:29","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":18243,"indexExpression":{"argumentTypes":null,"id":18242,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18216,"src":"6334:1:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6322:14:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":18244,"name":"receipt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18228,"src":"6364:7:29","typeDescriptions":{"typeIdentifier":"t_struct$_Receipt_$16120_memory_ptr","typeString":"struct GovernorAlpha.Receipt memory"}},"id":18245,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"hasVoted","nodeType":"MemberAccess","referencedDeclaration":16115,"src":"6364:16:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":18246,"name":"receipt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18228,"src":"6407:7:29","typeDescriptions":{"typeIdentifier":"t_struct$_Receipt_$16120_memory_ptr","typeString":"struct GovernorAlpha.Receipt memory"}},"id":18247,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"support","nodeType":"MemberAccess","referencedDeclaration":16117,"src":"6407:15:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":18248,"name":"receipt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18228,"src":"6447:7:29","typeDescriptions":{"typeIdentifier":"t_struct$_Receipt_$16120_memory_ptr","typeString":"struct GovernorAlpha.Receipt memory"}},"id":18249,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"votes","nodeType":"MemberAccess","referencedDeclaration":16119,"src":"6447:13:29","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint96","typeString":"uint96"}],"id":18240,"name":"GovReceipt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18187,"src":"6281:10:29","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_GovReceipt_$18187_storage_ptr_$","typeString":"type(struct CompoundLens.GovReceipt storage pointer)"}},"id":18250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["proposalId","hasVoted","support","votes"],"nodeType":"FunctionCall","src":"6281:194:29","typeDescriptions":{"typeIdentifier":"t_struct$_GovReceipt_$18187_memory","typeString":"struct CompoundLens.GovReceipt memory"}},"src":"6272:203:29","typeDescriptions":{"typeIdentifier":"t_struct$_GovReceipt_$18187_memory","typeString":"struct CompoundLens.GovReceipt memory"}},"id":18252,"nodeType":"ExpressionStatement","src":"6272:203:29"}]},"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18221,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":18219,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18216,"src":"6139:1:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"id":18220,"name":"proposalCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18201,"src":"6143:13:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6139:17:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":18254,"initializationExpression":{"assignments":[18216],"declarations":[{"constant":false,"id":18216,"name":"i","nodeType":"VariableDeclaration","scope":18254,"src":"6127:6:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18215,"name":"uint","nodeType":"ElementaryTypeName","src":"6127:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":18218,"initialValue":{"argumentTypes":null,"hexValue":"30","id":18217,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6136:1:29","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"6127:10:29"},"loopExpression":{"expression":{"argumentTypes":null,"id":18223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"6158:3:29","subExpression":{"argumentTypes":null,"id":18222,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18216,"src":"6158:1:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18224,"nodeType":"ExpressionStatement","src":"6158:3:29"},"nodeType":"ForStatement","src":"6122:364:29"},{"expression":{"argumentTypes":null,"id":18255,"name":"res","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18208,"src":"6502:3:29","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_GovReceipt_$18187_memory_$dyn_memory_ptr","typeString":"struct CompoundLens.GovReceipt memory[] memory"}},"functionReturnParameters":18199,"id":18256,"nodeType":"Return","src":"6495:10:29"}]},"documentation":null,"id":18258,"implemented":true,"kind":"function","modifiers":[],"name":"getGovReceipts","nodeType":"FunctionDefinition","parameters":{"id":18195,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18189,"name":"governor","nodeType":"VariableDeclaration","scope":18258,"src":"5888:22:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_GovernorAlpha_$17194","typeString":"contract GovernorAlpha"},"typeName":{"contractScope":null,"id":18188,"name":"GovernorAlpha","nodeType":"UserDefinedTypeName","referencedDeclaration":17194,"src":"5888:13:29","typeDescriptions":{"typeIdentifier":"t_contract$_GovernorAlpha_$17194","typeString":"contract GovernorAlpha"}},"value":null,"visibility":"internal"},{"constant":false,"id":18191,"name":"voter","nodeType":"VariableDeclaration","scope":18258,"src":"5912:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18190,"name":"address","nodeType":"ElementaryTypeName","src":"5912:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":18194,"name":"proposalIds","nodeType":"VariableDeclaration","scope":18258,"src":"5927:25:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":18192,"name":"uint","nodeType":"ElementaryTypeName","src":"5927:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18193,"length":null,"nodeType":"ArrayTypeName","src":"5927:6:29","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"value":null,"visibility":"internal"}],"src":"5887:66:29"},"returnParameters":{"id":18199,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18198,"name":"","nodeType":"VariableDeclaration","scope":18258,"src":"5975:19:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_GovReceipt_$18187_memory_$dyn_memory_ptr","typeString":"struct CompoundLens.GovReceipt[]"},"typeName":{"baseType":{"contractScope":null,"id":18196,"name":"GovReceipt","nodeType":"UserDefinedTypeName","referencedDeclaration":18187,"src":"5975:10:29","typeDescriptions":{"typeIdentifier":"t_struct$_GovReceipt_$18187_storage_ptr","typeString":"struct CompoundLens.GovReceipt"}},"id":18197,"length":null,"nodeType":"ArrayTypeName","src":"5975:12:29","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_GovReceipt_$18187_storage_$dyn_storage_ptr","typeString":"struct CompoundLens.GovReceipt[]"}},"value":null,"visibility":"internal"}],"src":"5974:21:29"},"scope":18592,"src":"5864:648:29","stateMutability":"view","superFunction":null,"visibility":"public"},{"canonicalName":"CompoundLens.GovProposal","id":18289,"members":[{"constant":false,"id":18260,"name":"proposalId","nodeType":"VariableDeclaration","scope":18289,"src":"6547:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18259,"name":"uint","nodeType":"ElementaryTypeName","src":"6547:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":18262,"name":"proposer","nodeType":"VariableDeclaration","scope":18289,"src":"6572:16:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18261,"name":"address","nodeType":"ElementaryTypeName","src":"6572:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":18264,"name":"eta","nodeType":"VariableDeclaration","scope":18289,"src":"6598:8:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18263,"name":"uint","nodeType":"ElementaryTypeName","src":"6598:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":18267,"name":"targets","nodeType":"VariableDeclaration","scope":18289,"src":"6616:17:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":18265,"name":"address","nodeType":"ElementaryTypeName","src":"6616:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":18266,"length":null,"nodeType":"ArrayTypeName","src":"6616:9:29","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":18270,"name":"values","nodeType":"VariableDeclaration","scope":18289,"src":"6643:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":18268,"name":"uint","nodeType":"ElementaryTypeName","src":"6643:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18269,"length":null,"nodeType":"ArrayTypeName","src":"6643:6:29","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":18273,"name":"signatures","nodeType":"VariableDeclaration","scope":18289,"src":"6666:19:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"},"typeName":{"baseType":{"id":18271,"name":"string","nodeType":"ElementaryTypeName","src":"6666:6:29","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":18272,"length":null,"nodeType":"ArrayTypeName","src":"6666:8:29","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":18276,"name":"calldatas","nodeType":"VariableDeclaration","scope":18289,"src":"6695:17:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":18274,"name":"bytes","nodeType":"ElementaryTypeName","src":"6695:5:29","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":18275,"length":null,"nodeType":"ArrayTypeName","src":"6695:7:29","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":18278,"name":"startBlock","nodeType":"VariableDeclaration","scope":18289,"src":"6722:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18277,"name":"uint","nodeType":"ElementaryTypeName","src":"6722:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":18280,"name":"endBlock","nodeType":"VariableDeclaration","scope":18289,"src":"6747:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18279,"name":"uint","nodeType":"ElementaryTypeName","src":"6747:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":18282,"name":"forVotes","nodeType":"VariableDeclaration","scope":18289,"src":"6770:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18281,"name":"uint","nodeType":"ElementaryTypeName","src":"6770:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":18284,"name":"againstVotes","nodeType":"VariableDeclaration","scope":18289,"src":"6793:17:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18283,"name":"uint","nodeType":"ElementaryTypeName","src":"6793:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":18286,"name":"canceled","nodeType":"VariableDeclaration","scope":18289,"src":"6820:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":18285,"name":"bool","nodeType":"ElementaryTypeName","src":"6820:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},{"constant":false,"id":18288,"name":"executed","nodeType":"VariableDeclaration","scope":18289,"src":"6843:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":18287,"name":"bool","nodeType":"ElementaryTypeName","src":"6843:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"name":"GovProposal","nodeType":"StructDefinition","scope":18592,"src":"6518:345:29","visibility":"public"},{"body":{"id":18373,"nodeType":"Block","src":"6969:597:29","statements":[{"assignments":[null,18299,18301,18303,18305,18307,18309,18311,18313],"declarations":[null,{"constant":false,"id":18299,"name":"proposer","nodeType":"VariableDeclaration","scope":18373,"src":"7007:16:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18298,"name":"address","nodeType":"ElementaryTypeName","src":"7007:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":18301,"name":"eta","nodeType":"VariableDeclaration","scope":18373,"src":"7037:8:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18300,"name":"uint","nodeType":"ElementaryTypeName","src":"7037:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":18303,"name":"startBlock","nodeType":"VariableDeclaration","scope":18373,"src":"7059:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18302,"name":"uint","nodeType":"ElementaryTypeName","src":"7059:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":18305,"name":"endBlock","nodeType":"VariableDeclaration","scope":18373,"src":"7088:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18304,"name":"uint","nodeType":"ElementaryTypeName","src":"7088:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":18307,"name":"forVotes","nodeType":"VariableDeclaration","scope":18373,"src":"7115:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18306,"name":"uint","nodeType":"ElementaryTypeName","src":"7115:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":18309,"name":"againstVotes","nodeType":"VariableDeclaration","scope":18373,"src":"7142:17:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18308,"name":"uint","nodeType":"ElementaryTypeName","src":"7142:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":18311,"name":"canceled","nodeType":"VariableDeclaration","scope":18373,"src":"7173:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":18310,"name":"bool","nodeType":"ElementaryTypeName","src":"7173:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},{"constant":false,"id":18313,"name":"executed","nodeType":"VariableDeclaration","scope":18373,"src":"7200:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":18312,"name":"bool","nodeType":"ElementaryTypeName","src":"7200:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"id":18318,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":18316,"name":"proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18295,"src":"7245:10:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":18314,"name":"governor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18293,"src":"7226:8:29","typeDescriptions":{"typeIdentifier":"t_contract$_GovernorAlpha_$17194","typeString":"contract GovernorAlpha"}},"id":18315,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"proposals","nodeType":"MemberAccess","referencedDeclaration":16133,"src":"7226:18:29","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint256_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$_t_bool_$","typeString":"function (uint256) view external returns (uint256,address,uint256,uint256,uint256,uint256,uint256,bool,bool)"}},"id":18317,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7226:30:29","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$_t_bool_$","typeString":"tuple(uint256,address,uint256,uint256,uint256,uint256,uint256,bool,bool)"}},"nodeType":"VariableDeclarationStatement","src":"6979:277:29"},{"expression":{"argumentTypes":null,"id":18323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":18319,"name":"res","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18291,"src":"7266:3:29","typeDescriptions":{"typeIdentifier":"t_struct$_GovProposal_$18289_memory_ptr","typeString":"struct CompoundLens.GovProposal memory"}},"id":18321,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"proposalId","nodeType":"MemberAccess","referencedDeclaration":18260,"src":"7266:14:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":18322,"name":"proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18295,"src":"7283:10:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7266:27:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18324,"nodeType":"ExpressionStatement","src":"7266:27:29"},{"expression":{"argumentTypes":null,"id":18329,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":18325,"name":"res","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18291,"src":"7303:3:29","typeDescriptions":{"typeIdentifier":"t_struct$_GovProposal_$18289_memory_ptr","typeString":"struct CompoundLens.GovProposal memory"}},"id":18327,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"proposer","nodeType":"MemberAccess","referencedDeclaration":18262,"src":"7303:12:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":18328,"name":"proposer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18299,"src":"7318:8:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7303:23:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":18330,"nodeType":"ExpressionStatement","src":"7303:23:29"},{"expression":{"argumentTypes":null,"id":18335,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":18331,"name":"res","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18291,"src":"7336:3:29","typeDescriptions":{"typeIdentifier":"t_struct$_GovProposal_$18289_memory_ptr","typeString":"struct CompoundLens.GovProposal memory"}},"id":18333,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"eta","nodeType":"MemberAccess","referencedDeclaration":18264,"src":"7336:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":18334,"name":"eta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18301,"src":"7346:3:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7336:13:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18336,"nodeType":"ExpressionStatement","src":"7336:13:29"},{"expression":{"argumentTypes":null,"id":18341,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":18337,"name":"res","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18291,"src":"7359:3:29","typeDescriptions":{"typeIdentifier":"t_struct$_GovProposal_$18289_memory_ptr","typeString":"struct CompoundLens.GovProposal memory"}},"id":18339,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"startBlock","nodeType":"MemberAccess","referencedDeclaration":18278,"src":"7359:14:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":18340,"name":"startBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18303,"src":"7376:10:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7359:27:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18342,"nodeType":"ExpressionStatement","src":"7359:27:29"},{"expression":{"argumentTypes":null,"id":18347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":18343,"name":"res","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18291,"src":"7396:3:29","typeDescriptions":{"typeIdentifier":"t_struct$_GovProposal_$18289_memory_ptr","typeString":"struct CompoundLens.GovProposal memory"}},"id":18345,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"endBlock","nodeType":"MemberAccess","referencedDeclaration":18280,"src":"7396:12:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":18346,"name":"endBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18305,"src":"7411:8:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7396:23:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18348,"nodeType":"ExpressionStatement","src":"7396:23:29"},{"expression":{"argumentTypes":null,"id":18353,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":18349,"name":"res","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18291,"src":"7429:3:29","typeDescriptions":{"typeIdentifier":"t_struct$_GovProposal_$18289_memory_ptr","typeString":"struct CompoundLens.GovProposal memory"}},"id":18351,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"forVotes","nodeType":"MemberAccess","referencedDeclaration":18282,"src":"7429:12:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":18352,"name":"forVotes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18307,"src":"7444:8:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7429:23:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18354,"nodeType":"ExpressionStatement","src":"7429:23:29"},{"expression":{"argumentTypes":null,"id":18359,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":18355,"name":"res","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18291,"src":"7462:3:29","typeDescriptions":{"typeIdentifier":"t_struct$_GovProposal_$18289_memory_ptr","typeString":"struct CompoundLens.GovProposal memory"}},"id":18357,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"againstVotes","nodeType":"MemberAccess","referencedDeclaration":18284,"src":"7462:16:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":18358,"name":"againstVotes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18309,"src":"7481:12:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7462:31:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18360,"nodeType":"ExpressionStatement","src":"7462:31:29"},{"expression":{"argumentTypes":null,"id":18365,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":18361,"name":"res","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18291,"src":"7503:3:29","typeDescriptions":{"typeIdentifier":"t_struct$_GovProposal_$18289_memory_ptr","typeString":"struct CompoundLens.GovProposal memory"}},"id":18363,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"canceled","nodeType":"MemberAccess","referencedDeclaration":18286,"src":"7503:12:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":18364,"name":"canceled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18311,"src":"7518:8:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7503:23:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":18366,"nodeType":"ExpressionStatement","src":"7503:23:29"},{"expression":{"argumentTypes":null,"id":18371,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":18367,"name":"res","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18291,"src":"7536:3:29","typeDescriptions":{"typeIdentifier":"t_struct$_GovProposal_$18289_memory_ptr","typeString":"struct CompoundLens.GovProposal memory"}},"id":18369,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"executed","nodeType":"MemberAccess","referencedDeclaration":18288,"src":"7536:12:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":18370,"name":"executed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18313,"src":"7551:8:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7536:23:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":18372,"nodeType":"ExpressionStatement","src":"7536:23:29"}]},"documentation":null,"id":18374,"implemented":true,"kind":"function","modifiers":[],"name":"setProposal","nodeType":"FunctionDefinition","parameters":{"id":18296,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18291,"name":"res","nodeType":"VariableDeclaration","scope":18374,"src":"6890:22:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_GovProposal_$18289_memory_ptr","typeString":"struct CompoundLens.GovProposal"},"typeName":{"contractScope":null,"id":18290,"name":"GovProposal","nodeType":"UserDefinedTypeName","referencedDeclaration":18289,"src":"6890:11:29","typeDescriptions":{"typeIdentifier":"t_struct$_GovProposal_$18289_storage_ptr","typeString":"struct CompoundLens.GovProposal"}},"value":null,"visibility":"internal"},{"constant":false,"id":18293,"name":"governor","nodeType":"VariableDeclaration","scope":18374,"src":"6914:22:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_GovernorAlpha_$17194","typeString":"contract GovernorAlpha"},"typeName":{"contractScope":null,"id":18292,"name":"GovernorAlpha","nodeType":"UserDefinedTypeName","referencedDeclaration":17194,"src":"6914:13:29","typeDescriptions":{"typeIdentifier":"t_contract$_GovernorAlpha_$17194","typeString":"contract GovernorAlpha"}},"value":null,"visibility":"internal"},{"constant":false,"id":18295,"name":"proposalId","nodeType":"VariableDeclaration","scope":18374,"src":"6938:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18294,"name":"uint","nodeType":"ElementaryTypeName","src":"6938:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"6889:65:29"},"returnParameters":{"id":18297,"nodeType":"ParameterList","parameters":[],"src":"6969:0:29"},"scope":18592,"src":"6869:697:29","stateMutability":"view","superFunction":null,"visibility":"internal"},{"body":{"id":18463,"nodeType":"Block","src":"7695:933:29","statements":[{"assignments":[18388],"declarations":[{"constant":false,"id":18388,"name":"res","nodeType":"VariableDeclaration","scope":18463,"src":"7705:24:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_GovProposal_$18289_memory_$dyn_memory_ptr","typeString":"struct CompoundLens.GovProposal[]"},"typeName":{"baseType":{"contractScope":null,"id":18386,"name":"GovProposal","nodeType":"UserDefinedTypeName","referencedDeclaration":18289,"src":"7705:11:29","typeDescriptions":{"typeIdentifier":"t_struct$_GovProposal_$18289_storage_ptr","typeString":"struct CompoundLens.GovProposal"}},"id":18387,"length":null,"nodeType":"ArrayTypeName","src":"7705:13:29","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_GovProposal_$18289_storage_$dyn_storage_ptr","typeString":"struct CompoundLens.GovProposal[]"}},"value":null,"visibility":"internal"}],"id":18395,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":18392,"name":"proposalIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18379,"src":"7750:11:29","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":18393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"7750:18:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":18391,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"7732:17:29","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_GovProposal_$18289_memory_$dyn_memory_$","typeString":"function (uint256) pure returns (struct CompoundLens.GovProposal memory[] memory)"},"typeName":{"baseType":{"contractScope":null,"id":18389,"name":"GovProposal","nodeType":"UserDefinedTypeName","referencedDeclaration":18289,"src":"7736:11:29","typeDescriptions":{"typeIdentifier":"t_struct$_GovProposal_$18289_storage_ptr","typeString":"struct CompoundLens.GovProposal"}},"id":18390,"length":null,"nodeType":"ArrayTypeName","src":"7736:13:29","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_GovProposal_$18289_storage_$dyn_storage_ptr","typeString":"struct CompoundLens.GovProposal[]"}}},"id":18394,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7732:37:29","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_GovProposal_$18289_memory_$dyn_memory","typeString":"struct CompoundLens.GovProposal memory[] memory"}},"nodeType":"VariableDeclarationStatement","src":"7705:64:29"},{"body":{"id":18459,"nodeType":"Block","src":"7825:777:29","statements":[{"assignments":[18410,18413,18416,18419],"declarations":[{"constant":false,"id":18410,"name":"targets","nodeType":"VariableDeclaration","scope":18459,"src":"7857:24:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":18408,"name":"address","nodeType":"ElementaryTypeName","src":"7857:7:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":18409,"length":null,"nodeType":"ArrayTypeName","src":"7857:9:29","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":18413,"name":"values","nodeType":"VariableDeclaration","scope":18459,"src":"7899:20:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":18411,"name":"uint","nodeType":"ElementaryTypeName","src":"7899:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18412,"length":null,"nodeType":"ArrayTypeName","src":"7899:6:29","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":18416,"name":"signatures","nodeType":"VariableDeclaration","scope":18459,"src":"7937:26:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_$dyn_memory_ptr","typeString":"string[]"},"typeName":{"baseType":{"id":18414,"name":"string","nodeType":"ElementaryTypeName","src":"7937:6:29","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":18415,"length":null,"nodeType":"ArrayTypeName","src":"7937:8:29","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":18419,"name":"calldatas","nodeType":"VariableDeclaration","scope":18459,"src":"7981:24:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":18417,"name":"bytes","nodeType":"ElementaryTypeName","src":"7981:5:29","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":18418,"length":null,"nodeType":"ArrayTypeName","src":"7981:7:29","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"value":null,"visibility":"internal"}],"id":18426,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":18422,"name":"proposalIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18379,"src":"8042:11:29","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":18424,"indexExpression":{"argumentTypes":null,"id":18423,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18397,"src":"8054:1:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8042:14:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":18420,"name":"governor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18376,"src":"8022:8:29","typeDescriptions":{"typeIdentifier":"t_contract$_GovernorAlpha_$17194","typeString":"contract GovernorAlpha"}},"id":18421,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getActions","nodeType":"MemberAccess","referencedDeclaration":16725,"src":"8022:19:29","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_string_memory_$dyn_memory_ptr_$_t_array$_t_bytes_memory_$dyn_memory_ptr_$","typeString":"function (uint256) view external returns (address[] memory,uint256[] memory,string memory[] memory,bytes memory[] memory)"}},"id":18425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8022:35:29","typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_string_memory_$dyn_memory_ptr_$_t_array$_t_bytes_memory_$dyn_memory_ptr_$","typeString":"tuple(address[] memory,uint256[] memory,string memory[] memory,bytes memory[] memory)"}},"nodeType":"VariableDeclarationStatement","src":"7839:218:29"},{"expression":{"argumentTypes":null,"id":18447,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":18427,"name":"res","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18388,"src":"8071:3:29","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_GovProposal_$18289_memory_$dyn_memory_ptr","typeString":"struct CompoundLens.GovProposal memory[] memory"}},"id":18429,"indexExpression":{"argumentTypes":null,"id":18428,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18397,"src":"8075:1:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8071:6:29","typeDescriptions":{"typeIdentifier":"t_struct$_GovProposal_$18289_memory","typeString":"struct CompoundLens.GovProposal memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":18431,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8122:1:29","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":18433,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8159:1:29","subdenomination":null,"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":18432,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8151:7:29","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":18434,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8151:10:29","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"hexValue":"30","id":18435,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8184:1:29","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"argumentTypes":null,"id":18436,"name":"targets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18410,"src":"8212:7:29","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},{"argumentTypes":null,"id":18437,"name":"values","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18413,"src":"8245:6:29","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"argumentTypes":null,"id":18438,"name":"signatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18416,"src":"8281:10:29","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_$dyn_memory_ptr","typeString":"string memory[] memory"}},{"argumentTypes":null,"id":18439,"name":"calldatas","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18419,"src":"8320:9:29","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},{"argumentTypes":null,"hexValue":"30","id":18440,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8359:1:29","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"argumentTypes":null,"hexValue":"30","id":18441,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8388:1:29","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"argumentTypes":null,"hexValue":"30","id":18442,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8417:1:29","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"argumentTypes":null,"hexValue":"30","id":18443,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8450:1:29","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"argumentTypes":null,"hexValue":"66616c7365","id":18444,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8479:5:29","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"argumentTypes":null,"hexValue":"66616c7365","id":18445,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8512:5:29","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_string_memory_$dyn_memory_ptr","typeString":"string memory[] memory"},{"typeIdentifier":"t_array$_t_bytes_memory_$dyn_memory_ptr","typeString":"bytes memory[] memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":18430,"name":"GovProposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18289,"src":"8080:11:29","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_GovProposal_$18289_storage_ptr_$","typeString":"type(struct CompoundLens.GovProposal storage pointer)"}},"id":18446,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["proposalId","proposer","eta","targets","values","signatures","calldatas","startBlock","endBlock","forVotes","againstVotes","canceled","executed"],"nodeType":"FunctionCall","src":"8080:452:29","typeDescriptions":{"typeIdentifier":"t_struct$_GovProposal_$18289_memory","typeString":"struct CompoundLens.GovProposal memory"}},"src":"8071:461:29","typeDescriptions":{"typeIdentifier":"t_struct$_GovProposal_$18289_memory","typeString":"struct CompoundLens.GovProposal memory"}},"id":18448,"nodeType":"ExpressionStatement","src":"8071:461:29"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":18450,"name":"res","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18388,"src":"8558:3:29","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_GovProposal_$18289_memory_$dyn_memory_ptr","typeString":"struct CompoundLens.GovProposal memory[] memory"}},"id":18452,"indexExpression":{"argumentTypes":null,"id":18451,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18397,"src":"8562:1:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8558:6:29","typeDescriptions":{"typeIdentifier":"t_struct$_GovProposal_$18289_memory","typeString":"struct CompoundLens.GovProposal memory"}},{"argumentTypes":null,"id":18453,"name":"governor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18376,"src":"8566:8:29","typeDescriptions":{"typeIdentifier":"t_contract$_GovernorAlpha_$17194","typeString":"contract GovernorAlpha"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":18454,"name":"proposalIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18379,"src":"8576:11:29","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":18456,"indexExpression":{"argumentTypes":null,"id":18455,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18397,"src":"8588:1:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8576:14:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_GovProposal_$18289_memory","typeString":"struct CompoundLens.GovProposal memory"},{"typeIdentifier":"t_contract$_GovernorAlpha_$17194","typeString":"contract GovernorAlpha"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":18449,"name":"setProposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18374,"src":"8546:11:29","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_GovProposal_$18289_memory_ptr_$_t_contract$_GovernorAlpha_$17194_$_t_uint256_$returns$__$","typeString":"function (struct CompoundLens.GovProposal memory,contract GovernorAlpha,uint256) view"}},"id":18457,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8546:45:29","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18458,"nodeType":"ExpressionStatement","src":"8546:45:29"}]},"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":18400,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18397,"src":"7796:1:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":18401,"name":"proposalIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18379,"src":"7800:11:29","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":18402,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"7800:18:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7796:22:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":18460,"initializationExpression":{"assignments":[18397],"declarations":[{"constant":false,"id":18397,"name":"i","nodeType":"VariableDeclaration","scope":18460,"src":"7784:6:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18396,"name":"uint","nodeType":"ElementaryTypeName","src":"7784:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":18399,"initialValue":{"argumentTypes":null,"hexValue":"30","id":18398,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7793:1:29","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"7784:10:29"},"loopExpression":{"expression":{"argumentTypes":null,"id":18405,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"7820:3:29","subExpression":{"argumentTypes":null,"id":18404,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18397,"src":"7820:1:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18406,"nodeType":"ExpressionStatement","src":"7820:3:29"},"nodeType":"ForStatement","src":"7779:823:29"},{"expression":{"argumentTypes":null,"id":18461,"name":"res","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18388,"src":"8618:3:29","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_GovProposal_$18289_memory_$dyn_memory_ptr","typeString":"struct CompoundLens.GovProposal memory[] memory"}},"functionReturnParameters":18384,"id":18462,"nodeType":"Return","src":"8611:10:29"}]},"documentation":null,"id":18464,"implemented":true,"kind":"function","modifiers":[],"name":"getGovProposals","nodeType":"FunctionDefinition","parameters":{"id":18380,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18376,"name":"governor","nodeType":"VariableDeclaration","scope":18464,"src":"7597:22:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_GovernorAlpha_$17194","typeString":"contract GovernorAlpha"},"typeName":{"contractScope":null,"id":18375,"name":"GovernorAlpha","nodeType":"UserDefinedTypeName","referencedDeclaration":17194,"src":"7597:13:29","typeDescriptions":{"typeIdentifier":"t_contract$_GovernorAlpha_$17194","typeString":"contract GovernorAlpha"}},"value":null,"visibility":"internal"},{"constant":false,"id":18379,"name":"proposalIds","nodeType":"VariableDeclaration","scope":18464,"src":"7621:27:29","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":18377,"name":"uint","nodeType":"ElementaryTypeName","src":"7621:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18378,"length":null,"nodeType":"ArrayTypeName","src":"7621:6:29","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"value":null,"visibility":"internal"}],"src":"7596:53:29"},"returnParameters":{"id":18384,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18383,"name":"","nodeType":"VariableDeclaration","scope":18464,"src":"7673:20:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_GovProposal_$18289_memory_$dyn_memory_ptr","typeString":"struct CompoundLens.GovProposal[]"},"typeName":{"baseType":{"contractScope":null,"id":18381,"name":"GovProposal","nodeType":"UserDefinedTypeName","referencedDeclaration":18289,"src":"7673:11:29","typeDescriptions":{"typeIdentifier":"t_struct$_GovProposal_$18289_storage_ptr","typeString":"struct CompoundLens.GovProposal"}},"id":18382,"length":null,"nodeType":"ArrayTypeName","src":"7673:13:29","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_GovProposal_$18289_storage_$dyn_storage_ptr","typeString":"struct CompoundLens.GovProposal[]"}},"value":null,"visibility":"internal"}],"src":"7672:22:29"},"scope":18592,"src":"7572:1056:29","stateMutability":"view","superFunction":null,"visibility":"external"},{"canonicalName":"CompoundLens.CompBalanceMetadata","id":18471,"members":[{"constant":false,"id":18466,"name":"balance","nodeType":"VariableDeclaration","scope":18471,"src":"8671:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18465,"name":"uint","nodeType":"ElementaryTypeName","src":"8671:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":18468,"name":"votes","nodeType":"VariableDeclaration","scope":18471,"src":"8693:10:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18467,"name":"uint","nodeType":"ElementaryTypeName","src":"8693:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":18470,"name":"delegate","nodeType":"VariableDeclaration","scope":18471,"src":"8713:16:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18469,"name":"address","nodeType":"ElementaryTypeName","src":"8713:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"name":"CompBalanceMetadata","nodeType":"StructDefinition","scope":18592,"src":"8634:102:29","visibility":"public"},{"body":{"id":18497,"nodeType":"Block","src":"8853:207:29","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":18483,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18475,"src":"8928:7:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":18481,"name":"comp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18473,"src":"8913:4:29","typeDescriptions":{"typeIdentifier":"t_contract$_Comp_$16024","typeString":"contract Comp"}},"id":18482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":15260,"src":"8913:14:29","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":18484,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8913:23:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":18488,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18475,"src":"8986:7:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":18486,"name":"comp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18473,"src":"8965:4:29","typeDescriptions":{"typeIdentifier":"t_contract$_Comp_$16024","typeString":"contract Comp"}},"id":18487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getCurrentVotes","nodeType":"MemberAccess","referencedDeclaration":15498,"src":"8965:20:29","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint96_$","typeString":"function (address) view external returns (uint96)"}},"id":18489,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8965:29:29","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint96","typeString":"uint96"}],"id":18485,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8957:7:29","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint256"},"id":18490,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8957:38:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":18493,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18475,"src":"9034:7:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":18491,"name":"comp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18473,"src":"9019:4:29","typeDescriptions":{"typeIdentifier":"t_contract$_Comp_$16024","typeString":"contract Comp"}},"id":18492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"delegates","nodeType":"MemberAccess","referencedDeclaration":15095,"src":"9019:14:29","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_address_$","typeString":"function (address) view external returns (address)"}},"id":18494,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9019:23:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":18480,"name":"CompBalanceMetadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18471,"src":"8870:19:29","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_CompBalanceMetadata_$18471_storage_ptr_$","typeString":"type(struct CompoundLens.CompBalanceMetadata storage pointer)"}},"id":18495,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["balance","votes","delegate"],"nodeType":"FunctionCall","src":"8870:183:29","typeDescriptions":{"typeIdentifier":"t_struct$_CompBalanceMetadata_$18471_memory","typeString":"struct CompoundLens.CompBalanceMetadata memory"}},"functionReturnParameters":18479,"id":18496,"nodeType":"Return","src":"8863:190:29"}]},"documentation":null,"id":18498,"implemented":true,"kind":"function","modifiers":[],"name":"getCompBalanceMetadata","nodeType":"FunctionDefinition","parameters":{"id":18476,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18473,"name":"comp","nodeType":"VariableDeclaration","scope":18498,"src":"8774:9:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_Comp_$16024","typeString":"contract Comp"},"typeName":{"contractScope":null,"id":18472,"name":"Comp","nodeType":"UserDefinedTypeName","referencedDeclaration":16024,"src":"8774:4:29","typeDescriptions":{"typeIdentifier":"t_contract$_Comp_$16024","typeString":"contract Comp"}},"value":null,"visibility":"internal"},{"constant":false,"id":18475,"name":"account","nodeType":"VariableDeclaration","scope":18498,"src":"8785:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18474,"name":"address","nodeType":"ElementaryTypeName","src":"8785:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"8773:28:29"},"returnParameters":{"id":18479,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18478,"name":"","nodeType":"VariableDeclaration","scope":18498,"src":"8825:26:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_CompBalanceMetadata_$18471_memory_ptr","typeString":"struct CompoundLens.CompBalanceMetadata"},"typeName":{"contractScope":null,"id":18477,"name":"CompBalanceMetadata","nodeType":"UserDefinedTypeName","referencedDeclaration":18471,"src":"8825:19:29","typeDescriptions":{"typeIdentifier":"t_struct$_CompBalanceMetadata_$18471_storage_ptr","typeString":"struct CompoundLens.CompBalanceMetadata"}},"value":null,"visibility":"internal"}],"src":"8824:28:29"},"scope":18592,"src":"8742:318:29","stateMutability":"view","superFunction":null,"visibility":"external"},{"canonicalName":"CompoundLens.CompVotes","id":18503,"members":[{"constant":false,"id":18500,"name":"blockNumber","nodeType":"VariableDeclaration","scope":18503,"src":"9093:16:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18499,"name":"uint","nodeType":"ElementaryTypeName","src":"9093:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":18502,"name":"votes","nodeType":"VariableDeclaration","scope":18503,"src":"9119:10:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18501,"name":"uint","nodeType":"ElementaryTypeName","src":"9119:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"name":"CompVotes","nodeType":"StructDefinition","scope":18592,"src":"9066:70:29","visibility":"public"},{"body":{"id":18563,"nodeType":"Block","src":"9267:346:29","statements":[{"assignments":[18519],"declarations":[{"constant":false,"id":18519,"name":"res","nodeType":"VariableDeclaration","scope":18563,"src":"9277:22:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CompVotes_$18503_memory_$dyn_memory_ptr","typeString":"struct CompoundLens.CompVotes[]"},"typeName":{"baseType":{"contractScope":null,"id":18517,"name":"CompVotes","nodeType":"UserDefinedTypeName","referencedDeclaration":18503,"src":"9277:9:29","typeDescriptions":{"typeIdentifier":"t_struct$_CompVotes_$18503_storage_ptr","typeString":"struct CompoundLens.CompVotes"}},"id":18518,"length":null,"nodeType":"ArrayTypeName","src":"9277:11:29","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CompVotes_$18503_storage_$dyn_storage_ptr","typeString":"struct CompoundLens.CompVotes[]"}},"value":null,"visibility":"internal"}],"id":18526,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":18523,"name":"blockNumbers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18510,"src":"9318:12:29","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_calldata_ptr","typeString":"uint32[] calldata"}},"id":18524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"9318:19:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":18522,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"9302:15:29","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_CompVotes_$18503_memory_$dyn_memory_$","typeString":"function (uint256) pure returns (struct CompoundLens.CompVotes memory[] memory)"},"typeName":{"baseType":{"contractScope":null,"id":18520,"name":"CompVotes","nodeType":"UserDefinedTypeName","referencedDeclaration":18503,"src":"9306:9:29","typeDescriptions":{"typeIdentifier":"t_struct$_CompVotes_$18503_storage_ptr","typeString":"struct CompoundLens.CompVotes"}},"id":18521,"length":null,"nodeType":"ArrayTypeName","src":"9306:11:29","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CompVotes_$18503_storage_$dyn_storage_ptr","typeString":"struct CompoundLens.CompVotes[]"}}},"id":18525,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9302:36:29","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CompVotes_$18503_memory_$dyn_memory","typeString":"struct CompoundLens.CompVotes memory[] memory"}},"nodeType":"VariableDeclarationStatement","src":"9277:61:29"},{"body":{"id":18559,"nodeType":"Block","src":"9395:192:29","statements":[{"expression":{"argumentTypes":null,"id":18557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":18538,"name":"res","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18519,"src":"9409:3:29","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CompVotes_$18503_memory_$dyn_memory_ptr","typeString":"struct CompoundLens.CompVotes memory[] memory"}},"id":18540,"indexExpression":{"argumentTypes":null,"id":18539,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18528,"src":"9413:1:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9409:6:29","typeDescriptions":{"typeIdentifier":"t_struct$_CompVotes_$18503_memory","typeString":"struct CompoundLens.CompVotes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":18543,"name":"blockNumbers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18510,"src":"9467:12:29","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_calldata_ptr","typeString":"uint32[] calldata"}},"id":18545,"indexExpression":{"argumentTypes":null,"id":18544,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18528,"src":"9480:1:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9467:15:29","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":18542,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9459:7:29","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint256"},"id":18546,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9459:24:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":18550,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18507,"src":"9535:7:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":18551,"name":"blockNumbers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18510,"src":"9544:12:29","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_calldata_ptr","typeString":"uint32[] calldata"}},"id":18553,"indexExpression":{"argumentTypes":null,"id":18552,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18528,"src":"9557:1:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9544:15:29","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint32","typeString":"uint32"}],"expression":{"argumentTypes":null,"id":18548,"name":"comp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18505,"src":"9516:4:29","typeDescriptions":{"typeIdentifier":"t_contract$_Comp_$16024","typeString":"contract Comp"}},"id":18549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getPriorVotes","nodeType":"MemberAccess","referencedDeclaration":15629,"src":"9516:18:29","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_uint256_$returns$_t_uint96_$","typeString":"function (address,uint256) view external returns (uint96)"}},"id":18554,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9516:44:29","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint96","typeString":"uint96"}],"id":18547,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9508:7:29","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint256"},"id":18555,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9508:53:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":18541,"name":"CompVotes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18503,"src":"9418:9:29","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_CompVotes_$18503_storage_ptr_$","typeString":"type(struct CompoundLens.CompVotes storage pointer)"}},"id":18556,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["blockNumber","votes"],"nodeType":"FunctionCall","src":"9418:158:29","typeDescriptions":{"typeIdentifier":"t_struct$_CompVotes_$18503_memory","typeString":"struct CompoundLens.CompVotes memory"}},"src":"9409:167:29","typeDescriptions":{"typeIdentifier":"t_struct$_CompVotes_$18503_memory","typeString":"struct CompoundLens.CompVotes memory"}},"id":18558,"nodeType":"ExpressionStatement","src":"9409:167:29"}]},"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":18531,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18528,"src":"9365:1:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":18532,"name":"blockNumbers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18510,"src":"9369:12:29","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_calldata_ptr","typeString":"uint32[] calldata"}},"id":18533,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"9369:19:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9365:23:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":18560,"initializationExpression":{"assignments":[18528],"declarations":[{"constant":false,"id":18528,"name":"i","nodeType":"VariableDeclaration","scope":18560,"src":"9353:6:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18527,"name":"uint","nodeType":"ElementaryTypeName","src":"9353:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":18530,"initialValue":{"argumentTypes":null,"hexValue":"30","id":18529,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9362:1:29","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"9353:10:29"},"loopExpression":{"expression":{"argumentTypes":null,"id":18536,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"9390:3:29","subExpression":{"argumentTypes":null,"id":18535,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18528,"src":"9390:1:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18537,"nodeType":"ExpressionStatement","src":"9390:3:29"},"nodeType":"ForStatement","src":"9348:239:29"},{"expression":{"argumentTypes":null,"id":18561,"name":"res","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18519,"src":"9603:3:29","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CompVotes_$18503_memory_$dyn_memory_ptr","typeString":"struct CompoundLens.CompVotes memory[] memory"}},"functionReturnParameters":18515,"id":18562,"nodeType":"Return","src":"9596:10:29"}]},"documentation":null,"id":18564,"implemented":true,"kind":"function","modifiers":[],"name":"getCompVotes","nodeType":"FunctionDefinition","parameters":{"id":18511,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18505,"name":"comp","nodeType":"VariableDeclaration","scope":18564,"src":"9164:9:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_Comp_$16024","typeString":"contract Comp"},"typeName":{"contractScope":null,"id":18504,"name":"Comp","nodeType":"UserDefinedTypeName","referencedDeclaration":16024,"src":"9164:4:29","typeDescriptions":{"typeIdentifier":"t_contract$_Comp_$16024","typeString":"contract Comp"}},"value":null,"visibility":"internal"},{"constant":false,"id":18507,"name":"account","nodeType":"VariableDeclaration","scope":18564,"src":"9175:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18506,"name":"address","nodeType":"ElementaryTypeName","src":"9175:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":18510,"name":"blockNumbers","nodeType":"VariableDeclaration","scope":18564,"src":"9192:30:29","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_calldata_ptr","typeString":"uint32[]"},"typeName":{"baseType":{"id":18508,"name":"uint32","nodeType":"ElementaryTypeName","src":"9192:6:29","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":18509,"length":null,"nodeType":"ArrayTypeName","src":"9192:8:29","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_storage_ptr","typeString":"uint32[]"}},"value":null,"visibility":"internal"}],"src":"9163:60:29"},"returnParameters":{"id":18515,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18514,"name":"","nodeType":"VariableDeclaration","scope":18564,"src":"9247:18:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CompVotes_$18503_memory_$dyn_memory_ptr","typeString":"struct CompoundLens.CompVotes[]"},"typeName":{"baseType":{"contractScope":null,"id":18512,"name":"CompVotes","nodeType":"UserDefinedTypeName","referencedDeclaration":18503,"src":"9247:9:29","typeDescriptions":{"typeIdentifier":"t_struct$_CompVotes_$18503_storage_ptr","typeString":"struct CompoundLens.CompVotes"}},"id":18513,"length":null,"nodeType":"ArrayTypeName","src":"9247:11:29","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CompVotes_$18503_storage_$dyn_storage_ptr","typeString":"struct CompoundLens.CompVotes[]"}},"value":null,"visibility":"internal"}],"src":"9246:20:29"},"scope":18592,"src":"9142:471:29","stateMutability":"view","superFunction":null,"visibility":"external"},{"body":{"id":18590,"nodeType":"Block","src":"9706:94:29","statements":[{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":18587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"components":[{"argumentTypes":null,"id":18576,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18566,"src":"9752:1:29","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":18577,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9751:3:29","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"argumentTypes":null,"id":18574,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22537,"src":"9734:3:29","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":18575,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","referencedDeclaration":null,"src":"9734:16:29","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":18578,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9734:21:29","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":18573,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22544,"src":"9724:9:29","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":18579,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9724:32:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"components":[{"argumentTypes":null,"id":18583,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18568,"src":"9788:1:29","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":18584,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9787:3:29","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"argumentTypes":null,"id":18581,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22537,"src":"9770:3:29","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":18582,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","referencedDeclaration":null,"src":"9770:16:29","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":18585,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9770:21:29","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":18580,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22544,"src":"9760:9:29","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":18586,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9760:32:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"9724:68:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":18588,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9723:70:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":18572,"id":18589,"nodeType":"Return","src":"9716:77:29"}]},"documentation":null,"id":18591,"implemented":true,"kind":"function","modifiers":[],"name":"compareStrings","nodeType":"FunctionDefinition","parameters":{"id":18569,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18566,"name":"a","nodeType":"VariableDeclaration","scope":18591,"src":"9643:15:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18565,"name":"string","nodeType":"ElementaryTypeName","src":"9643:6:29","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":null,"visibility":"internal"},{"constant":false,"id":18568,"name":"b","nodeType":"VariableDeclaration","scope":18591,"src":"9660:15:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18567,"name":"string","nodeType":"ElementaryTypeName","src":"9660:6:29","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":null,"visibility":"internal"}],"src":"9642:34:29"},"returnParameters":{"id":18572,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18571,"name":"","nodeType":"VariableDeclaration","scope":18591,"src":"9700:4:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":18570,"name":"bool","nodeType":"ElementaryTypeName","src":"9700:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"9699:6:29"},"scope":18592,"src":"9619:181:29","stateMutability":"pure","superFunction":null,"visibility":"internal"}],"scope":18593,"src":"244:9558:29"}],"src":"0:9803:29"},"id":29},"contracts/Maximillion.sol":{"ast":{"absolutePath":"contracts/Maximillion.sol","exportedSymbols":{"Maximillion":[18675]},"id":18676,"nodeType":"SourceUnit","nodes":[{"id":18594,"literals":["solidity","0.5",".17"],"nodeType":"PragmaDirective","src":"0:23:30"},{"absolutePath":"contracts/CEther.sol","file":"./CEther.sol","id":18595,"nodeType":"ImportDirective","scope":18676,"sourceUnit":1993,"src":"25:22:30","symbolAliases":[],"unitAlias":""},{"baseContracts":[],"contractDependencies":[],"contractKind":"contract","documentation":"@title Compound's Maximillion Contract\n@author Compound","fullyImplemented":true,"id":18675,"linearizedBaseContracts":[18675],"name":"Maximillion","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":18597,"name":"cEther","nodeType":"VariableDeclaration","scope":18675,"src":"215:20:30","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_CEther_$1992","typeString":"contract CEther"},"typeName":{"contractScope":null,"id":18596,"name":"CEther","nodeType":"UserDefinedTypeName","referencedDeclaration":1992,"src":"215:6:30","typeDescriptions":{"typeIdentifier":"t_contract$_CEther_$1992","typeString":"contract CEther"}},"value":null,"visibility":"public"},{"body":{"id":18606,"nodeType":"Block","src":"364:33:30","statements":[{"expression":{"argumentTypes":null,"id":18604,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":18602,"name":"cEther","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18597,"src":"374:6:30","typeDescriptions":{"typeIdentifier":"t_contract$_CEther_$1992","typeString":"contract CEther"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":18603,"name":"cEther_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18599,"src":"383:7:30","typeDescriptions":{"typeIdentifier":"t_contract$_CEther_$1992","typeString":"contract CEther"}},"src":"374:16:30","typeDescriptions":{"typeIdentifier":"t_contract$_CEther_$1992","typeString":"contract CEther"}},"id":18605,"nodeType":"ExpressionStatement","src":"374:16:30"}]},"documentation":"@notice Construct a Maximillion to repay max in a CEther market","id":18607,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":18600,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18599,"name":"cEther_","nodeType":"VariableDeclaration","scope":18607,"src":"341:14:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_CEther_$1992","typeString":"contract CEther"},"typeName":{"contractScope":null,"id":18598,"name":"CEther","nodeType":"UserDefinedTypeName","referencedDeclaration":1992,"src":"341:6:30","typeDescriptions":{"typeIdentifier":"t_contract$_CEther_$1992","typeString":"contract CEther"}},"value":null,"visibility":"internal"}],"src":"340:16:30"},"returnParameters":{"id":18601,"nodeType":"ParameterList","parameters":[],"src":"364:0:30"},"scope":18675,"src":"329:68:30","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":18617,"nodeType":"Block","src":"735:54:30","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":18613,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18609,"src":"765:8:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":18614,"name":"cEther","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18597,"src":"775:6:30","typeDescriptions":{"typeIdentifier":"t_contract$_CEther_$1992","typeString":"contract CEther"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_CEther_$1992","typeString":"contract CEther"}],"id":18612,"name":"repayBehalfExplicit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18674,"src":"745:19:30","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_contract$_CEther_$1992_$returns$__$","typeString":"function (address,contract CEther)"}},"id":18615,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"745:37:30","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18616,"nodeType":"ExpressionStatement","src":"745:37:30"}]},"documentation":"@notice msg.sender sends Ether to repay an account's borrow in the cEther market\n@dev The provided Ether is applied towards the borrow balance, any excess is refunded\n@param borrower The address of the borrower account to repay on behalf of","id":18618,"implemented":true,"kind":"function","modifiers":[],"name":"repayBehalf","nodeType":"FunctionDefinition","parameters":{"id":18610,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18609,"name":"borrower","nodeType":"VariableDeclaration","scope":18618,"src":"702:16:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18608,"name":"address","nodeType":"ElementaryTypeName","src":"702:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"701:18:30"},"returnParameters":{"id":18611,"nodeType":"ParameterList","parameters":[],"src":"735:0:30"},"scope":18675,"src":"681:108:30","stateMutability":"payable","superFunction":null,"visibility":"public"},{"body":{"id":18673,"nodeType":"Block","src":"1218:348:30","statements":[{"assignments":[18626],"declarations":[{"constant":false,"id":18626,"name":"received","nodeType":"VariableDeclaration","scope":18673,"src":"1228:13:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18625,"name":"uint","nodeType":"ElementaryTypeName","src":"1228:4:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":18629,"initialValue":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":18627,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"1244:3:30","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":18628,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","referencedDeclaration":null,"src":"1244:9:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1228:25:30"},{"assignments":[18631],"declarations":[{"constant":false,"id":18631,"name":"borrows","nodeType":"VariableDeclaration","scope":18673,"src":"1263:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18630,"name":"uint","nodeType":"ElementaryTypeName","src":"1263:4:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":18636,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":18634,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18620,"src":"1307:8:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":18632,"name":"cEther_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18622,"src":"1278:7:30","typeDescriptions":{"typeIdentifier":"t_contract$_CEther_$1992","typeString":"contract CEther"}},"id":18633,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"borrowBalanceCurrent","nodeType":"MemberAccess","referencedDeclaration":3005,"src":"1278:28:30","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$_t_uint256_$","typeString":"function (address) external returns (uint256)"}},"id":18635,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1278:38:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1263:53:30"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18639,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":18637,"name":"received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18626,"src":"1330:8:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"id":18638,"name":"borrows","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18631,"src":"1341:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1330:18:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":18671,"nodeType":"Block","src":"1484:76:30","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":18668,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18620,"src":"1540:8:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"arguments":[{"argumentTypes":null,"id":18666,"name":"received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18626,"src":"1530:8:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":18661,"name":"cEther_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18622,"src":"1498:7:30","typeDescriptions":{"typeIdentifier":"t_contract$_CEther_$1992","typeString":"contract CEther"}},"id":18664,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"repayBorrowBehalf","nodeType":"MemberAccess","referencedDeclaration":1706,"src":"1498:25:30","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$returns$__$","typeString":"function (address) payable external"}},"id":18665,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","referencedDeclaration":null,"src":"1498:31:30","typeDescriptions":{"typeIdentifier":"t_function_setvalue_pure$_t_uint256_$returns$_t_function_external_payable$_t_address_$returns$__$value_$","typeString":"function (uint256) pure returns (function (address) payable external)"}},"id":18667,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1498:41:30","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$returns$__$value","typeString":"function (address) payable external"}},"id":18669,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1498:51:30","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18670,"nodeType":"ExpressionStatement","src":"1498:51:30"}]},"id":18672,"nodeType":"IfStatement","src":"1326:234:30","trueBody":{"id":18660,"nodeType":"Block","src":"1350:128:30","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":18647,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18620,"src":"1405:8:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"arguments":[{"argumentTypes":null,"id":18645,"name":"borrows","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18631,"src":"1396:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":18640,"name":"cEther_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18622,"src":"1364:7:30","typeDescriptions":{"typeIdentifier":"t_contract$_CEther_$1992","typeString":"contract CEther"}},"id":18643,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"repayBorrowBehalf","nodeType":"MemberAccess","referencedDeclaration":1706,"src":"1364:25:30","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$returns$__$","typeString":"function (address) payable external"}},"id":18644,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","referencedDeclaration":null,"src":"1364:31:30","typeDescriptions":{"typeIdentifier":"t_function_setvalue_pure$_t_uint256_$returns$_t_function_external_payable$_t_address_$returns$__$value_$","typeString":"function (uint256) pure returns (function (address) payable external)"}},"id":18646,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1364:40:30","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$returns$__$value","typeString":"function (address) payable external"}},"id":18648,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1364:50:30","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18649,"nodeType":"ExpressionStatement","src":"1364:50:30"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18657,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":18655,"name":"received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18626,"src":"1448:8:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"id":18656,"name":"borrows","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18631,"src":"1459:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1448:18:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":18650,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"1428:3:30","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":18653,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"1428:10:30","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":18654,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":null,"src":"1428:19:30","typeDescriptions":{"typeIdentifier":"t_function_transfer_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":18658,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1428:39:30","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18659,"nodeType":"ExpressionStatement","src":"1428:39:30"}]}}]},"documentation":"@notice msg.sender sends Ether to repay an account's borrow in a cEther market\n@dev The provided Ether is applied towards the borrow balance, any excess is refunded\n@param borrower The address of the borrower account to repay on behalf of\n@param cEther_ The address of the cEther contract to repay in","id":18674,"implemented":true,"kind":"function","modifiers":[],"name":"repayBehalfExplicit","nodeType":"FunctionDefinition","parameters":{"id":18623,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18620,"name":"borrower","nodeType":"VariableDeclaration","scope":18674,"src":"1169:16:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18619,"name":"address","nodeType":"ElementaryTypeName","src":"1169:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":18622,"name":"cEther_","nodeType":"VariableDeclaration","scope":18674,"src":"1187:14:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_CEther_$1992","typeString":"contract CEther"},"typeName":{"contractScope":null,"id":18621,"name":"CEther","nodeType":"UserDefinedTypeName","referencedDeclaration":1992,"src":"1187:6:30","typeDescriptions":{"typeIdentifier":"t_contract$_CEther_$1992","typeString":"contract CEther"}},"value":null,"visibility":"internal"}],"src":"1168:34:30"},"returnParameters":{"id":18624,"nodeType":"ParameterList","parameters":[],"src":"1218:0:30"},"scope":18675,"src":"1140:426:30","stateMutability":"payable","superFunction":null,"visibility":"public"}],"scope":18676,"src":"119:1449:30"}],"src":"0:1569:30"},"id":30},"contracts/PriceOracle.sol":{"ast":{"absolutePath":"contracts/PriceOracle.sol","exportedSymbols":{"PriceOracle":[18689]},"id":18690,"nodeType":"SourceUnit","nodes":[{"id":18677,"literals":["solidity","0.5",".17"],"nodeType":"PragmaDirective","src":"0:23:31"},{"absolutePath":"contracts/CToken.sol","file":"./CToken.sol","id":18678,"nodeType":"ImportDirective","scope":18690,"sourceUnit":6187,"src":"25:22:31","symbolAliases":[],"unitAlias":""},{"baseContracts":[],"contractDependencies":[],"contractKind":"contract","documentation":null,"fullyImplemented":false,"id":18689,"linearizedBaseContracts":[18689],"name":"PriceOracle","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":18681,"name":"isPriceOracle","nodeType":"VariableDeclaration","scope":18689,"src":"155:41:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":18679,"name":"bool","nodeType":"ElementaryTypeName","src":"155:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":{"argumentTypes":null,"hexValue":"74727565","id":18680,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"192:4:31","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"visibility":"public"},{"body":null,"documentation":"@notice Get the underlying price of a cToken asset\n@param cToken The cToken to get the underlying price of\n@return The underlying asset price mantissa (scaled by 1e18).\n Zero means the price is unavailable.","id":18688,"implemented":false,"kind":"function","modifiers":[],"name":"getUnderlyingPrice","nodeType":"FunctionDefinition","parameters":{"id":18684,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18683,"name":"cToken","nodeType":"VariableDeclaration","scope":18688,"src":"487:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},"typeName":{"contractScope":null,"id":18682,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"487:6:31","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"value":null,"visibility":"internal"}],"src":"486:15:31"},"returnParameters":{"id":18687,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18686,"name":"","nodeType":"VariableDeclaration","scope":18688,"src":"525:4:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18685,"name":"uint","nodeType":"ElementaryTypeName","src":"525:4:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"524:6:31"},"scope":18689,"src":"459:72:31","stateMutability":"view","superFunction":null,"visibility":"external"}],"scope":18690,"src":"49:484:31"}],"src":"0:534:31"},"id":31},"contracts/ReactiveJumpRateModelV2.sol":{"ast":{"absolutePath":"contracts/ReactiveJumpRateModelV2.sol","exportedSymbols":{"ReactiveJumpRateModelV2":[19101]},"id":19102,"nodeType":"SourceUnit","nodes":[{"id":18691,"literals":["solidity","0.5",".17"],"nodeType":"PragmaDirective","src":"0:23:32"},{"absolutePath":"contracts/BaseJumpRateModelV2.sol","file":"./BaseJumpRateModelV2.sol","id":18692,"nodeType":"ImportDirective","scope":19102,"sourceUnit":287,"src":"25:35:32","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/InterestRateModel.sol","file":"./InterestRateModel.sol","id":18693,"nodeType":"ImportDirective","scope":19102,"sourceUnit":17399,"src":"61:33:32","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/CToken.sol","file":"./CToken.sol","id":18694,"nodeType":"ImportDirective","scope":19102,"sourceUnit":6187,"src":"95:22:32","symbolAliases":[],"unitAlias":""},{"baseContracts":[{"arguments":null,"baseName":{"contractScope":null,"id":18695,"name":"InterestRateModel","nodeType":"UserDefinedTypeName","referencedDeclaration":17398,"src":"287:17:32","typeDescriptions":{"typeIdentifier":"t_contract$_InterestRateModel_$17398","typeString":"contract InterestRateModel"}},"id":18696,"nodeType":"InheritanceSpecifier","src":"287:17:32"},{"arguments":null,"baseName":{"contractScope":null,"id":18697,"name":"BaseJumpRateModelV2","nodeType":"UserDefinedTypeName","referencedDeclaration":286,"src":"306:19:32","typeDescriptions":{"typeIdentifier":"t_contract$_BaseJumpRateModelV2_$286","typeString":"contract BaseJumpRateModelV2"}},"id":18698,"nodeType":"InheritanceSpecifier","src":"306:19:32"}],"contractDependencies":[286,17398],"contractKind":"contract","documentation":"@title Compound's JumpRateModel Contract V2 for V2 cTokens\n@author Arr00\n@notice Supports only for V2 cTokens","fullyImplemented":true,"id":19101,"linearizedBaseContracts":[19101,286,17398],"name":"ReactiveJumpRateModelV2","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":18700,"name":"cToken","nodeType":"VariableDeclaration","scope":19101,"src":"382:20:32","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},"typeName":{"contractScope":null,"id":18699,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"382:6:32","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"value":null,"visibility":"public"},{"constant":true,"id":18703,"name":"INTEREST_CHECKPOINT_BUFFER","nodeType":"VariableDeclaration","scope":19101,"src":"476:54:32","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18701,"name":"uint","nodeType":"ElementaryTypeName","src":"476:4:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"argumentTypes":null,"hexValue":"3136","id":18702,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"528:2:32","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"visibility":"internal"},{"constant":false,"id":18705,"name":"interestCheckpointCount","nodeType":"VariableDeclaration","scope":19101,"src":"603:37:32","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18704,"name":"uint","nodeType":"ElementaryTypeName","src":"603:4:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"canonicalName":"ReactiveJumpRateModelV2.InterestCheckpoint","id":18712,"members":[{"constant":false,"id":18707,"name":"blockNumber","nodeType":"VariableDeclaration","scope":18712,"src":"746:16:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18706,"name":"uint","nodeType":"ElementaryTypeName","src":"746:4:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":18709,"name":"borrowIndex","nodeType":"VariableDeclaration","scope":18712,"src":"772:16:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18708,"name":"uint","nodeType":"ElementaryTypeName","src":"772:4:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":18711,"name":"borrowRateMantissa","nodeType":"VariableDeclaration","scope":18712,"src":"798:23:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18710,"name":"uint","nodeType":"ElementaryTypeName","src":"798:4:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"name":"InterestCheckpoint","nodeType":"StructDefinition","scope":19101,"src":"710:118:32","visibility":"public"},{"constant":false,"id":18715,"name":"interestCheckpoints","nodeType":"VariableDeclaration","scope":19101,"src":"895:49:32","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_InterestCheckpoint_$18712_storage_$dyn_storage","typeString":"struct ReactiveJumpRateModelV2.InterestCheckpoint[]"},"typeName":{"baseType":{"contractScope":null,"id":18713,"name":"InterestCheckpoint","nodeType":"UserDefinedTypeName","referencedDeclaration":18712,"src":"895:18:32","typeDescriptions":{"typeIdentifier":"t_struct$_InterestCheckpoint_$18712_storage_ptr","typeString":"struct ReactiveJumpRateModelV2.InterestCheckpoint"}},"id":18714,"length":null,"nodeType":"ArrayTypeName","src":"895:20:32","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_InterestCheckpoint_$18712_storage_$dyn_storage_ptr","typeString":"struct ReactiveJumpRateModelV2.InterestCheckpoint[]"}},"value":null,"visibility":"internal"},{"body":{"id":18732,"nodeType":"Block","src":"1372:70:32","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":18727,"name":"cash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18717,"src":"1411:4:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":18728,"name":"borrows","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18719,"src":"1417:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":18729,"name":"reserves","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18721,"src":"1426:8:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":18726,"name":"getBorrowRateInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":181,"src":"1389:21:32","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) view returns (uint256)"}},"id":18730,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1389:46:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":18725,"id":18731,"nodeType":"Return","src":"1382:53:32"}]},"documentation":"@notice Calculates the current borrow rate per block\n@param cash The amount of cash in the market\n@param borrows The amount of borrows in the market\n@param reserves The amount of reserves in the market\n@return The borrow rate percentage per block as a mantissa (scaled by 1e18)","id":18733,"implemented":true,"kind":"function","modifiers":[],"name":"getBorrowRate","nodeType":"FunctionDefinition","parameters":{"id":18722,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18717,"name":"cash","nodeType":"VariableDeclaration","scope":18733,"src":"1303:9:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18716,"name":"uint","nodeType":"ElementaryTypeName","src":"1303:4:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":18719,"name":"borrows","nodeType":"VariableDeclaration","scope":18733,"src":"1314:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18718,"name":"uint","nodeType":"ElementaryTypeName","src":"1314:4:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":18721,"name":"reserves","nodeType":"VariableDeclaration","scope":18733,"src":"1328:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18720,"name":"uint","nodeType":"ElementaryTypeName","src":"1328:4:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1302:40:32"},"returnParameters":{"id":18725,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18724,"name":"","nodeType":"VariableDeclaration","scope":18733,"src":"1366:4:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18723,"name":"uint","nodeType":"ElementaryTypeName","src":"1366:4:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1365:6:32"},"scope":19101,"src":"1280:162:32","stateMutability":"view","superFunction":17384,"visibility":"external"},{"body":{"id":18761,"nodeType":"Block","src":"1690:41:32","statements":[{"expression":{"argumentTypes":null,"id":18759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":18755,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18700,"src":"1700:6:32","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":18757,"name":"cToken_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18745,"src":"1716:7:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":18756,"name":"CToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6186,"src":"1709:6:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CToken_$6186_$","typeString":"type(contract CToken)"}},"id":18758,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1709:15:32","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"src":"1700:24:32","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":18760,"nodeType":"ExpressionStatement","src":"1700:24:32"}]},"documentation":null,"id":18762,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"argumentTypes":null,"id":18748,"name":"baseRatePerYear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18735,"src":"1609:15:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":18749,"name":"multiplierPerYear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18737,"src":"1626:17:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":18750,"name":"jumpMultiplierPerYear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18739,"src":"1645:21:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":18751,"name":"kink_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18741,"src":"1668:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":18752,"name":"owner_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18743,"src":"1675:6:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":18753,"modifierName":{"argumentTypes":null,"id":18747,"name":"BaseJumpRateModelV2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":286,"src":"1589:19:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BaseJumpRateModelV2_$286_$","typeString":"type(contract BaseJumpRateModelV2)"}},"nodeType":"ModifierInvocation","src":"1589:93:32"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":18746,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18735,"name":"baseRatePerYear","nodeType":"VariableDeclaration","scope":18762,"src":"1461:20:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18734,"name":"uint","nodeType":"ElementaryTypeName","src":"1461:4:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":18737,"name":"multiplierPerYear","nodeType":"VariableDeclaration","scope":18762,"src":"1483:22:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18736,"name":"uint","nodeType":"ElementaryTypeName","src":"1483:4:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":18739,"name":"jumpMultiplierPerYear","nodeType":"VariableDeclaration","scope":18762,"src":"1507:26:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18738,"name":"uint","nodeType":"ElementaryTypeName","src":"1507:4:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":18741,"name":"kink_","nodeType":"VariableDeclaration","scope":18762,"src":"1535:10:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18740,"name":"uint","nodeType":"ElementaryTypeName","src":"1535:4:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":18743,"name":"owner_","nodeType":"VariableDeclaration","scope":18762,"src":"1547:14:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18742,"name":"address","nodeType":"ElementaryTypeName","src":"1547:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":18745,"name":"cToken_","nodeType":"VariableDeclaration","scope":18762,"src":"1563:15:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18744,"name":"address","nodeType":"ElementaryTypeName","src":"1563:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"1460:119:32"},"returnParameters":{"id":18754,"nodeType":"ParameterList","parameters":[],"src":"1690:0:32"},"scope":19101,"src":"1448:283:32","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":18771,"nodeType":"Block","src":"1931:64:32","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":18766,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18700,"src":"1960:6:32","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":18767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"borrowRatePerBlock","nodeType":"MemberAccess","referencedDeclaration":2932,"src":"1960:25:32","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":18768,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1960:27:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":18765,"name":"checkpointInterest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19083,"src":"1941:18:32","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":18769,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1941:47:32","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18770,"nodeType":"ExpressionStatement","src":"1941:47:32"}]},"documentation":"@dev Checkpoints the current borrow index and adjusts parameters based on the average borrow rate calculated from past checkpoints.","id":18772,"implemented":true,"kind":"function","modifiers":[],"name":"checkpointInterest","nodeType":"FunctionDefinition","parameters":{"id":18763,"nodeType":"ParameterList","parameters":[],"src":"1919:2:32"},"returnParameters":{"id":18764,"nodeType":"ParameterList","parameters":[],"src":"1931:0:32"},"scope":19101,"src":"1892:103:32","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":{"id":19082,"nodeType":"Block","src":"2216:4619:32","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":18783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":18778,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"2280:3:32","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":18779,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2280:10:32","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":18781,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18700,"src":"2302:6:32","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":18780,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2294:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":18782,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2294:15:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2280:29:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":18777,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22553,"src":"2272:7:32","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":18784,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2272:38:32","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18785,"nodeType":"ExpressionStatement","src":"2272:38:32"},{"assignments":[18787],"declarations":[{"constant":false,"id":18787,"name":"accrualBlockNumber","nodeType":"VariableDeclaration","scope":19082,"src":"2353:23:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18786,"name":"uint","nodeType":"ElementaryTypeName","src":"2353:4:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":18791,"initialValue":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":18788,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18700,"src":"2379:6:32","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":18789,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"accrualBlockNumber","nodeType":"MemberAccess","referencedDeclaration":6236,"src":"2379:25:32","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":18790,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2379:27:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2353:53:32"},{"assignments":[18793],"declarations":[{"constant":false,"id":18793,"name":"borrowIndex","nodeType":"VariableDeclaration","scope":19082,"src":"2416:16:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18792,"name":"uint","nodeType":"ElementaryTypeName","src":"2416:4:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":18797,"initialValue":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":18794,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18700,"src":"2435:6:32","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":18795,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"borrowIndex","nodeType":"MemberAccess","referencedDeclaration":6238,"src":"2435:18:32","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":18796,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2435:20:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2416:39:32"},{"assignments":[18799],"declarations":[{"constant":false,"id":18799,"name":"checkpointNow","nodeType":"VariableDeclaration","scope":19082,"src":"2508:39:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_InterestCheckpoint_$18712_memory_ptr","typeString":"struct ReactiveJumpRateModelV2.InterestCheckpoint"},"typeName":{"contractScope":null,"id":18798,"name":"InterestCheckpoint","nodeType":"UserDefinedTypeName","referencedDeclaration":18712,"src":"2508:18:32","typeDescriptions":{"typeIdentifier":"t_struct$_InterestCheckpoint_$18712_storage_ptr","typeString":"struct ReactiveJumpRateModelV2.InterestCheckpoint"}},"value":null,"visibility":"internal"}],"id":18805,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":18801,"name":"accrualBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18787,"src":"2569:18:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":18802,"name":"borrowIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18793,"src":"2589:11:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":18803,"name":"borrowRateMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18774,"src":"2602:18:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":18800,"name":"InterestCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18712,"src":"2550:18:32","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_InterestCheckpoint_$18712_storage_ptr_$","typeString":"type(struct ReactiveJumpRateModelV2.InterestCheckpoint storage pointer)"}},"id":18804,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2550:71:32","typeDescriptions":{"typeIdentifier":"t_struct$_InterestCheckpoint_$18712_memory","typeString":"struct ReactiveJumpRateModelV2.InterestCheckpoint memory"}},"nodeType":"VariableDeclarationStatement","src":"2508:113:32"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":18823,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":18806,"name":"interestCheckpointCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18705,"src":"2708:23:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"argumentTypes":null,"hexValue":"32","id":18807,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2735:1:32","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"2708:28:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18822,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":18809,"name":"interestCheckpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18715,"src":"2740:19:32","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_InterestCheckpoint_$18712_storage_$dyn_storage","typeString":"struct ReactiveJumpRateModelV2.InterestCheckpoint storage ref[] storage ref"}},"id":18816,"indexExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18815,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"components":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18812,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":18810,"name":"interestCheckpointCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18705,"src":"2761:23:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"hexValue":"32","id":18811,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2787:1:32","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"2761:27:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":18813,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2760:29:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"argumentTypes":null,"id":18814,"name":"INTEREST_CHECKPOINT_BUFFER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18703,"src":"2792:26:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2760:58:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2740:79:32","typeDescriptions":{"typeIdentifier":"t_struct$_InterestCheckpoint_$18712_storage","typeString":"struct ReactiveJumpRateModelV2.InterestCheckpoint storage ref"}},"id":18817,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"blockNumber","nodeType":"MemberAccess","referencedDeclaration":18707,"src":"2740:91:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"36353030","id":18820,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2858:4:32","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_6500_by_1","typeString":"int_const 6500"},"value":"6500"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_6500_by_1","typeString":"int_const 6500"}],"expression":{"argumentTypes":null,"id":18818,"name":"accrualBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18787,"src":"2835:18:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":21165,"src":"2835:22:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":18821,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2835:28:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2740:123:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2708:155:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":19080,"nodeType":"Block","src":"3044:3785:32","statements":[{"expression":{"argumentTypes":null,"id":18842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":18836,"name":"interestCheckpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18715,"src":"3104:19:32","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_InterestCheckpoint_$18712_storage_$dyn_storage","typeString":"struct ReactiveJumpRateModelV2.InterestCheckpoint storage ref[] storage ref"}},"id":18840,"indexExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":18837,"name":"interestCheckpointCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18705,"src":"3124:23:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"argumentTypes":null,"id":18838,"name":"INTEREST_CHECKPOINT_BUFFER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18703,"src":"3150:26:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3124:52:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3104:73:32","typeDescriptions":{"typeIdentifier":"t_struct$_InterestCheckpoint_$18712_storage","typeString":"struct ReactiveJumpRateModelV2.InterestCheckpoint storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":18841,"name":"checkpointNow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18799,"src":"3180:13:32","typeDescriptions":{"typeIdentifier":"t_struct$_InterestCheckpoint_$18712_memory_ptr","typeString":"struct ReactiveJumpRateModelV2.InterestCheckpoint memory"}},"src":"3104:89:32","typeDescriptions":{"typeIdentifier":"t_struct$_InterestCheckpoint_$18712_storage","typeString":"struct ReactiveJumpRateModelV2.InterestCheckpoint storage ref"}},"id":18843,"nodeType":"ExpressionStatement","src":"3104:89:32"},{"expression":{"argumentTypes":null,"id":18845,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"3207:25:32","subExpression":{"argumentTypes":null,"id":18844,"name":"interestCheckpointCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18705,"src":"3207:23:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18846,"nodeType":"ExpressionStatement","src":"3207:25:32"},{"assignments":[18848],"declarations":[{"constant":false,"id":18848,"name":"blockNumberSixDaysAgo","nodeType":"VariableDeclaration","scope":19080,"src":"3315:29:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18847,"name":"uint256","nodeType":"ElementaryTypeName","src":"3315:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":18855,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_39000_by_1","typeString":"int_const 39000"},"id":18853,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"hexValue":"36353030","id":18851,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3370:4:32","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_6500_by_1","typeString":"int_const 6500"},"value":"6500"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"argumentTypes":null,"hexValue":"36","id":18852,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3377:1:32","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_6_by_1","typeString":"int_const 6"},"value":"6"},"src":"3370:8:32","typeDescriptions":{"typeIdentifier":"t_rational_39000_by_1","typeString":"int_const 39000"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_39000_by_1","typeString":"int_const 39000"}],"expression":{"argumentTypes":null,"id":18849,"name":"accrualBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18787,"src":"3347:18:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18850,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":21165,"src":"3347:22:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":18854,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3347:32:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3315:64:32"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18868,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":18856,"name":"interestCheckpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18715,"src":"3397:19:32","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_InterestCheckpoint_$18712_storage_$dyn_storage","typeString":"struct ReactiveJumpRateModelV2.InterestCheckpoint storage ref[] storage ref"}},"id":18865,"indexExpression":{"argumentTypes":null,"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18859,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":18857,"name":"interestCheckpointCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18705,"src":"3417:23:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"id":18858,"name":"INTEREST_CHECKPOINT_BUFFER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18703,"src":"3443:26:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3417:52:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"argumentTypes":null,"hexValue":"30","id":18863,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3527:1:32","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":18864,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"3417:111:32","trueExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18862,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":18860,"name":"interestCheckpointCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18705,"src":"3472:23:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"argumentTypes":null,"id":18861,"name":"INTEREST_CHECKPOINT_BUFFER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18703,"src":"3498:26:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3472:52:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3397:132:32","typeDescriptions":{"typeIdentifier":"t_struct$_InterestCheckpoint_$18712_storage","typeString":"struct ReactiveJumpRateModelV2.InterestCheckpoint storage ref"}},"id":18866,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"blockNumber","nodeType":"MemberAccess","referencedDeclaration":18707,"src":"3397:144:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"id":18867,"name":"blockNumberSixDaysAgo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18848,"src":"3544:21:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3397:168:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":18870,"nodeType":"IfStatement","src":"3393:181:32","trueBody":{"expression":null,"functionReturnParameters":18776,"id":18869,"nodeType":"Return","src":"3567:7:32"}},{"assignments":[18872],"declarations":[{"constant":false,"id":18872,"name":"interestCheckpoint","nodeType":"VariableDeclaration","scope":19080,"src":"3684:44:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_InterestCheckpoint_$18712_memory_ptr","typeString":"struct ReactiveJumpRateModelV2.InterestCheckpoint"},"typeName":{"contractScope":null,"id":18871,"name":"InterestCheckpoint","nodeType":"UserDefinedTypeName","referencedDeclaration":18712,"src":"3684:18:32","typeDescriptions":{"typeIdentifier":"t_struct$_InterestCheckpoint_$18712_storage_ptr","typeString":"struct ReactiveJumpRateModelV2.InterestCheckpoint"}},"value":null,"visibility":"internal"}],"id":18873,"initialValue":null,"nodeType":"VariableDeclarationStatement","src":"3684:44:32"},{"assignments":[18875],"declarations":[{"constant":false,"id":18875,"name":"checkpointNotOld","nodeType":"VariableDeclaration","scope":19080,"src":"3742:21:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":18874,"name":"bool","nodeType":"ElementaryTypeName","src":"3742:4:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"id":18877,"initialValue":{"argumentTypes":null,"hexValue":"66616c7365","id":18876,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3766:5:32","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"nodeType":"VariableDeclarationStatement","src":"3742:29:32"},{"assignments":[18879],"declarations":[{"constant":false,"id":18879,"name":"i","nodeType":"VariableDeclaration","scope":19080,"src":"3785:9:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18878,"name":"uint256","nodeType":"ElementaryTypeName","src":"3785:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":18880,"initialValue":null,"nodeType":"VariableDeclarationStatement","src":"3785:9:32"},{"body":{"id":18933,"nodeType":"Block","src":"4021:651:32","statements":[{"expression":{"argumentTypes":null,"id":18904,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":18898,"name":"interestCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18872,"src":"4039:18:32","typeDescriptions":{"typeIdentifier":"t_struct$_InterestCheckpoint_$18712_memory_ptr","typeString":"struct ReactiveJumpRateModelV2.InterestCheckpoint memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":18899,"name":"interestCheckpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18715,"src":"4060:19:32","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_InterestCheckpoint_$18712_storage_$dyn_storage","typeString":"struct ReactiveJumpRateModelV2.InterestCheckpoint storage ref[] storage ref"}},"id":18903,"indexExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18902,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":18900,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18879,"src":"4080:1:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"argumentTypes":null,"id":18901,"name":"INTEREST_CHECKPOINT_BUFFER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18703,"src":"4084:26:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4080:30:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4060:51:32","typeDescriptions":{"typeIdentifier":"t_struct$_InterestCheckpoint_$18712_storage","typeString":"struct ReactiveJumpRateModelV2.InterestCheckpoint storage ref"}},"src":"4039:72:32","typeDescriptions":{"typeIdentifier":"t_struct$_InterestCheckpoint_$18712_memory_ptr","typeString":"struct ReactiveJumpRateModelV2.InterestCheckpoint memory"}},"id":18905,"nodeType":"ExpressionStatement","src":"4039:72:32"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":18919,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18914,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":18906,"name":"interestCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18872,"src":"4240:18:32","typeDescriptions":{"typeIdentifier":"t_struct$_InterestCheckpoint_$18712_memory_ptr","typeString":"struct ReactiveJumpRateModelV2.InterestCheckpoint memory"}},"id":18907,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"blockNumber","nodeType":"MemberAccess","referencedDeclaration":18707,"src":"4240:30:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_52000_by_1","typeString":"int_const 52000"},"id":18912,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"hexValue":"36353030","id":18910,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4297:4:32","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_6500_by_1","typeString":"int_const 6500"},"value":"6500"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"argumentTypes":null,"hexValue":"38","id":18911,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4304:1:32","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"4297:8:32","typeDescriptions":{"typeIdentifier":"t_rational_52000_by_1","typeString":"int_const 52000"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_52000_by_1","typeString":"int_const 52000"}],"expression":{"argumentTypes":null,"id":18908,"name":"accrualBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18787,"src":"4274:18:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18909,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":21165,"src":"4274:22:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":18913,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4274:32:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4240:66:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18918,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":18915,"name":"interestCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18872,"src":"4310:18:32","typeDescriptions":{"typeIdentifier":"t_struct$_InterestCheckpoint_$18712_memory_ptr","typeString":"struct ReactiveJumpRateModelV2.InterestCheckpoint memory"}},"id":18916,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"blockNumber","nodeType":"MemberAccess","referencedDeclaration":18707,"src":"4310:30:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"argumentTypes":null,"id":18917,"name":"blockNumberSixDaysAgo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18848,"src":"4344:21:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4310:55:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4240:125:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":18926,"nodeType":"IfStatement","src":"4236:222:32","trueBody":{"id":18925,"nodeType":"Block","src":"4367:91:32","statements":[{"expression":{"argumentTypes":null,"id":18922,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":18920,"name":"checkpointNotOld","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18875,"src":"4389:16:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"hexValue":"74727565","id":18921,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4408:4:32","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"4389:23:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":18923,"nodeType":"ExpressionStatement","src":"4389:23:32"},{"id":18924,"nodeType":"Break","src":"4434:5:32"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":18927,"name":"interestCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18872,"src":"4596:18:32","typeDescriptions":{"typeIdentifier":"t_struct$_InterestCheckpoint_$18712_memory_ptr","typeString":"struct ReactiveJumpRateModelV2.InterestCheckpoint memory"}},"id":18928,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"blockNumber","nodeType":"MemberAccess","referencedDeclaration":18707,"src":"4596:30:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"id":18929,"name":"blockNumberSixDaysAgo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18848,"src":"4629:21:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4596:54:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":18932,"nodeType":"IfStatement","src":"4592:65:32","trueBody":{"id":18931,"nodeType":"Break","src":"4652:5:32"}}]},"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18894,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":18892,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18879,"src":"3987:1:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"id":18893,"name":"interestCheckpointCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18705,"src":"3991:23:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3987:27:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":18934,"initializationExpression":{"expression":{"argumentTypes":null,"id":18890,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":18881,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18879,"src":"3870:1:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18884,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":18882,"name":"interestCheckpointCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18705,"src":"3874:23:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"id":18883,"name":"INTEREST_CHECKPOINT_BUFFER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18703,"src":"3900:26:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3874:52:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"argumentTypes":null,"hexValue":"30","id":18888,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3984:1:32","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":18889,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"3874:111:32","trueExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":18885,"name":"interestCheckpointCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18705,"src":"3929:23:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"id":18886,"name":"INTEREST_CHECKPOINT_BUFFER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18703,"src":"3955:26:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3929:52:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3870:115:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18891,"nodeType":"ExpressionStatement","src":"3870:115:32"},"loopExpression":{"expression":{"argumentTypes":null,"id":18896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"4016:3:32","subExpression":{"argumentTypes":null,"id":18895,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18879,"src":"4016:1:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18897,"nodeType":"ExpressionStatement","src":"4016:3:32"},"nodeType":"ForStatement","src":"3865:807:32"},{"condition":{"argumentTypes":null,"id":18936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4916:17:32","subExpression":{"argumentTypes":null,"id":18935,"name":"checkpointNotOld","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18875,"src":"4917:16:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":18992,"nodeType":"IfStatement","src":"4912:590:32","trueBody":{"id":18991,"nodeType":"Block","src":"4935:567:32","statements":[{"expression":{"argumentTypes":null,"id":18946,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":18937,"name":"interestCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18872,"src":"4953:18:32","typeDescriptions":{"typeIdentifier":"t_struct$_InterestCheckpoint_$18712_memory_ptr","typeString":"struct ReactiveJumpRateModelV2.InterestCheckpoint memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":18938,"name":"interestCheckpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18715,"src":"4974:19:32","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_InterestCheckpoint_$18712_storage_$dyn_storage","typeString":"struct ReactiveJumpRateModelV2.InterestCheckpoint storage ref[] storage ref"}},"id":18945,"indexExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"components":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":18939,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18879,"src":"4995:1:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"hexValue":"31","id":18940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4999:1:32","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4995:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":18942,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4994:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"argumentTypes":null,"id":18943,"name":"INTEREST_CHECKPOINT_BUFFER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18703,"src":"5004:26:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4994:36:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4974:57:32","typeDescriptions":{"typeIdentifier":"t_struct$_InterestCheckpoint_$18712_storage","typeString":"struct ReactiveJumpRateModelV2.InterestCheckpoint storage ref"}},"src":"4953:78:32","typeDescriptions":{"typeIdentifier":"t_struct$_InterestCheckpoint_$18712_memory_ptr","typeString":"struct ReactiveJumpRateModelV2.InterestCheckpoint memory"}},"id":18947,"nodeType":"ExpressionStatement","src":"4953:78:32"},{"assignments":[18949],"declarations":[{"constant":false,"id":18949,"name":"blockNumberOneWeekAgo","nodeType":"VariableDeclaration","scope":18991,"src":"5049:26:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18948,"name":"uint","nodeType":"ElementaryTypeName","src":"5049:4:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":18956,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_45500_by_1","typeString":"int_const 45500"},"id":18954,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"hexValue":"36353030","id":18952,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5101:4:32","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_6500_by_1","typeString":"int_const 6500"},"value":"6500"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"argumentTypes":null,"hexValue":"37","id":18953,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5108:1:32","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"},"value":"7"},"src":"5101:8:32","typeDescriptions":{"typeIdentifier":"t_rational_45500_by_1","typeString":"int_const 45500"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_45500_by_1","typeString":"int_const 45500"}],"expression":{"argumentTypes":null,"id":18950,"name":"accrualBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18787,"src":"5078:18:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18951,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":21165,"src":"5078:22:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":18955,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5078:32:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5049:61:32"},{"assignments":[18958],"declarations":[{"constant":false,"id":18958,"name":"blockDelta","nodeType":"VariableDeclaration","scope":18991,"src":"5128:15:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18957,"name":"uint","nodeType":"ElementaryTypeName","src":"5128:4:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":18964,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":18961,"name":"interestCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18872,"src":"5172:18:32","typeDescriptions":{"typeIdentifier":"t_struct$_InterestCheckpoint_$18712_memory_ptr","typeString":"struct ReactiveJumpRateModelV2.InterestCheckpoint memory"}},"id":18962,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"blockNumber","nodeType":"MemberAccess","referencedDeclaration":18707,"src":"5172:30:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":18959,"name":"blockNumberOneWeekAgo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18949,"src":"5146:21:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18960,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":21165,"src":"5146:25:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":18963,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5146:57:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5128:75:32"},{"assignments":[18966],"declarations":[{"constant":false,"id":18966,"name":"simpleInterestFactor","nodeType":"VariableDeclaration","scope":18991,"src":"5221:25:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18965,"name":"uint","nodeType":"ElementaryTypeName","src":"5221:4:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":18972,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":18970,"name":"blockDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18958,"src":"5291:10:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":18967,"name":"interestCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18872,"src":"5249:18:32","typeDescriptions":{"typeIdentifier":"t_struct$_InterestCheckpoint_$18712_memory_ptr","typeString":"struct ReactiveJumpRateModelV2.InterestCheckpoint memory"}},"id":18968,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"borrowRateMantissa","nodeType":"MemberAccess","referencedDeclaration":18711,"src":"5249:37:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18969,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":21226,"src":"5249:41:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":18971,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5249:53:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5221:81:32"},{"expression":{"argumentTypes":null,"id":18989,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":18973,"name":"interestCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18872,"src":"5320:18:32","typeDescriptions":{"typeIdentifier":"t_struct$_InterestCheckpoint_$18712_memory_ptr","typeString":"struct ReactiveJumpRateModelV2.InterestCheckpoint memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":18975,"name":"blockNumberOneWeekAgo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18949,"src":"5360:21:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"31653138","id":18983,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5441:4:32","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":18980,"name":"simpleInterestFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18966,"src":"5415:20:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":18978,"name":"borrowIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18793,"src":"5399:11:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18979,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":21226,"src":"5399:15:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":18981,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5399:37:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"div","nodeType":"MemberAccess","referencedDeclaration":21278,"src":"5399:41:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":18984,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5399:47:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":18976,"name":"borrowIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18793,"src":"5383:11:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18977,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":21122,"src":"5383:15:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":18985,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5383:64:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":18986,"name":"interestCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18872,"src":"5449:18:32","typeDescriptions":{"typeIdentifier":"t_struct$_InterestCheckpoint_$18712_memory_ptr","typeString":"struct ReactiveJumpRateModelV2.InterestCheckpoint memory"}},"id":18987,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"borrowRateMantissa","nodeType":"MemberAccess","referencedDeclaration":18711,"src":"5449:37:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":18974,"name":"InterestCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18712,"src":"5341:18:32","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_InterestCheckpoint_$18712_storage_ptr_$","typeString":"type(struct ReactiveJumpRateModelV2.InterestCheckpoint storage pointer)"}},"id":18988,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5341:146:32","typeDescriptions":{"typeIdentifier":"t_struct$_InterestCheckpoint_$18712_memory","typeString":"struct ReactiveJumpRateModelV2.InterestCheckpoint memory"}},"src":"5320:167:32","typeDescriptions":{"typeIdentifier":"t_struct$_InterestCheckpoint_$18712_memory_ptr","typeString":"struct ReactiveJumpRateModelV2.InterestCheckpoint memory"}},"id":18990,"nodeType":"ExpressionStatement","src":"5320:167:32"}]}},{"assignments":[18994],"declarations":[{"constant":false,"id":18994,"name":"avgBorrowRateLastWeek","nodeType":"VariableDeclaration","scope":19080,"src":"5598:26:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18993,"name":"uint","nodeType":"ElementaryTypeName","src":"5598:4:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":19006,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"31653138","id":19004,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5689:4:32","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":19000,"name":"interestCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18872,"src":"5653:18:32","typeDescriptions":{"typeIdentifier":"t_struct$_InterestCheckpoint_$18712_memory_ptr","typeString":"struct ReactiveJumpRateModelV2.InterestCheckpoint memory"}},"id":19001,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"borrowIndex","nodeType":"MemberAccess","referencedDeclaration":18709,"src":"5653:30:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"31653138","id":18997,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5643:4:32","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"}],"expression":{"argumentTypes":null,"id":18995,"name":"borrowIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18793,"src":"5627:11:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18996,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":21226,"src":"5627:15:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":18998,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5627:21:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18999,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"div","nodeType":"MemberAccess","referencedDeclaration":21278,"src":"5627:25:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":19002,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5627:57:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19003,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":21165,"src":"5627:61:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":19005,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5627:67:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5598:96:32"},{"assignments":[19008],"declarations":[{"constant":false,"id":19008,"name":"avgBorrowRatePerBlock","nodeType":"VariableDeclaration","scope":19080,"src":"5708:26:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19007,"name":"uint","nodeType":"ElementaryTypeName","src":"5708:4:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":19017,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":19013,"name":"interestCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18872,"src":"5786:18:32","typeDescriptions":{"typeIdentifier":"t_struct$_InterestCheckpoint_$18712_memory_ptr","typeString":"struct ReactiveJumpRateModelV2.InterestCheckpoint memory"}},"id":19014,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"blockNumber","nodeType":"MemberAccess","referencedDeclaration":18707,"src":"5786:30:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":19011,"name":"accrualBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18787,"src":"5763:18:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19012,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":21165,"src":"5763:22:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":19015,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5763:54:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":19009,"name":"avgBorrowRateLastWeek","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18994,"src":"5737:21:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19010,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"div","nodeType":"MemberAccess","referencedDeclaration":21278,"src":"5737:25:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":19016,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5737:81:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5708:110:32"},{"assignments":[19019],"declarations":[{"constant":false,"id":19019,"name":"idealMultiplierPerBlock","nodeType":"VariableDeclaration","scope":19080,"src":"5897:28:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19018,"name":"uint","nodeType":"ElementaryTypeName","src":"5897:4:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":19038,"initialValue":{"argumentTypes":null,"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":19020,"name":"avgBorrowRatePerBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19008,"src":"5928:21:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"id":19021,"name":"baseRatePerBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24,"src":"5952:16:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5928:40:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"302e3035653138","id":19034,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6042:7:32","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_50000000000000000_by_1","typeString":"int_const 50000000000000000"},"value":"0.05e18"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_50000000000000000_by_1","typeString":"int_const 50000000000000000"}],"expression":{"argumentTypes":null,"id":19032,"name":"kink","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28,"src":"6033:4:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19033,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":21165,"src":"6033:8:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":19035,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6033:17:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"31653138","id":19029,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6023:4:32","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":19026,"name":"baseRatePerBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24,"src":"6001:16:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":19024,"name":"avgBorrowRatePerBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19008,"src":"5975:21:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19025,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":21165,"src":"5975:25:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":19027,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5975:43:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19028,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":21226,"src":"5975:47:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":19030,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5975:53:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19031,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"div","nodeType":"MemberAccess","referencedDeclaration":21278,"src":"5975:57:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":19036,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5975:76:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19037,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"5928:123:32","trueExpression":{"argumentTypes":null,"hexValue":"30","id":19023,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5971:1:32","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5897:154:32"},{"assignments":[19040],"declarations":[{"constant":false,"id":19040,"name":"ratio","nodeType":"VariableDeclaration","scope":19080,"src":"6174:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19039,"name":"uint256","nodeType":"ElementaryTypeName","src":"6174:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":19048,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":19046,"name":"multiplierPerBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22,"src":"6228:18:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"31653138","id":19043,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6218:4:32","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"}],"expression":{"argumentTypes":null,"id":19041,"name":"idealMultiplierPerBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19019,"src":"6190:23:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19042,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":21226,"src":"6190:27:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":19044,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6190:33:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19045,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"div","nodeType":"MemberAccess","referencedDeclaration":21278,"src":"6190:37:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":19047,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6190:57:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6174:73:32"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":19055,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":19049,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19040,"src":"6266:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"argumentTypes":null,"hexValue":"302e3935653138","id":19050,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6275:7:32","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_950000000000000000_by_1","typeString":"int_const 950000000000000000"},"value":"0.95e18"},"src":"6266:16:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19054,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":19052,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19040,"src":"6286:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"argumentTypes":null,"hexValue":"312e3035653138","id":19053,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6295:7:32","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1050000000000000000_by_1","typeString":"int_const 1050000000000000000"},"value":"1.05e18"},"src":"6286:16:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6266:36:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":19079,"nodeType":"IfStatement","src":"6262:557:32","trueBody":{"id":19078,"nodeType":"Block","src":"6304:515:32","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":19059,"name":"blocksPerYear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20,"src":"6481:13:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":19057,"name":"baseRatePerBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24,"src":"6460:16:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19058,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":21226,"src":"6460:20:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":19060,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6460:35:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"31653138","id":19069,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6574:4:32","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":19065,"name":"kink","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28,"src":"6563:4:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":19063,"name":"blocksPerYear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20,"src":"6545:13:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19064,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":21226,"src":"6545:17:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":19066,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6545:23:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":19061,"name":"idealMultiplierPerBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19019,"src":"6517:23:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19062,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":21226,"src":"6517:27:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":19067,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6517:52:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"div","nodeType":"MemberAccess","referencedDeclaration":21278,"src":"6517:56:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":19070,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6517:62:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":19073,"name":"blocksPerYear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20,"src":"6746:13:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":19071,"name":"jumpMultiplierPerBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26,"src":"6719:22:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19072,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":21226,"src":"6719:26:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":19074,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6719:41:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":19075,"name":"kink","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28,"src":"6782:4:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":19056,"name":"updateJumpRateModelInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":285,"src":"6411:27:32","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,uint256,uint256)"}},"id":19076,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6411:393:32","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19077,"nodeType":"ExpressionStatement","src":"6411:393:32"}]}}]},"id":19081,"nodeType":"IfStatement","src":"2704:4125:32","trueBody":{"id":18835,"nodeType":"Block","src":"2865:173:32","statements":[{"expression":{"argumentTypes":null,"id":18833,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":18824,"name":"interestCheckpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18715,"src":"2932:19:32","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_InterestCheckpoint_$18712_storage_$dyn_storage","typeString":"struct ReactiveJumpRateModelV2.InterestCheckpoint storage ref[] storage ref"}},"id":18831,"indexExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"components":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18827,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":18825,"name":"interestCheckpointCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18705,"src":"2953:23:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"hexValue":"31","id":18826,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2979:1:32","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2953:27:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":18828,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2952:29:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"argumentTypes":null,"id":18829,"name":"INTEREST_CHECKPOINT_BUFFER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18703,"src":"2984:26:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2952:58:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2932:79:32","typeDescriptions":{"typeIdentifier":"t_struct$_InterestCheckpoint_$18712_storage","typeString":"struct ReactiveJumpRateModelV2.InterestCheckpoint storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":18832,"name":"checkpointNow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18799,"src":"3014:13:32","typeDescriptions":{"typeIdentifier":"t_struct$_InterestCheckpoint_$18712_memory_ptr","typeString":"struct ReactiveJumpRateModelV2.InterestCheckpoint memory"}},"src":"2932:95:32","typeDescriptions":{"typeIdentifier":"t_struct$_InterestCheckpoint_$18712_storage","typeString":"struct ReactiveJumpRateModelV2.InterestCheckpoint storage ref"}},"id":18834,"nodeType":"ExpressionStatement","src":"2932:95:32"}]}}]},"documentation":"@dev Checkpoints the current borrow index and adjusts parameters based on the average borrow rate calculated from past checkpoints.","id":19083,"implemented":true,"kind":"function","modifiers":[],"name":"checkpointInterest","nodeType":"FunctionDefinition","parameters":{"id":18775,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18774,"name":"borrowRateMantissa","nodeType":"VariableDeclaration","scope":19083,"src":"2184:23:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18773,"name":"uint","nodeType":"ElementaryTypeName","src":"2184:4:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2183:25:32"},"returnParameters":{"id":18776,"nodeType":"ParameterList","parameters":[],"src":"2216:0:32"},"scope":19101,"src":"2156:4679:32","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":19099,"nodeType":"Block","src":"6957:178:32","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":19092,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":19087,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"7021:3:32","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":19088,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"7021:10:32","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":19090,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18700,"src":"7043:6:32","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":19089,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7035:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":19091,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7035:15:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7021:29:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":19086,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22553,"src":"7013:7:32","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":19093,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7013:38:32","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19094,"nodeType":"ExpressionStatement","src":"7013:38:32"},{"expression":{"argumentTypes":null,"id":19097,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":19095,"name":"interestCheckpointCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18705,"src":"7101:23:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"hexValue":"30","id":19096,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7127:1:32","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7101:27:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19098,"nodeType":"ExpressionStatement","src":"7101:27:32"}]},"documentation":"@dev Resets the interest checkpoint count to 0.","id":19100,"implemented":true,"kind":"function","modifiers":[],"name":"resetInterestCheckpoints","nodeType":"FunctionDefinition","parameters":{"id":19084,"nodeType":"ParameterList","parameters":[],"src":"6945:2:32"},"returnParameters":{"id":19085,"nodeType":"ParameterList","parameters":[],"src":"6957:0:32"},"scope":19101,"src":"6912:223:32","stateMutability":"nonpayable","superFunction":null,"visibility":"external"}],"scope":19102,"src":"251:6886:32"}],"src":"0:7138:32"},"id":32},"contracts/Reservoir.sol":{"ast":{"absolutePath":"contracts/Reservoir.sol","exportedSymbols":{"Reservoir":[19368]},"id":19370,"nodeType":"SourceUnit","nodes":[{"id":19103,"literals":["solidity","0.5",".17"],"nodeType":"PragmaDirective","src":"0:23:33"},{"baseContracts":[],"contractDependencies":[],"contractKind":"contract","documentation":"@title Reservoir Contract\n@notice Distributes a token to a different contract at a fixed rate.\n@dev This contract must be poked via the `drip()` function every so often.\n@author Compound","fullyImplemented":true,"id":19368,"linearizedBaseContracts":[19368],"name":"Reservoir","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":19105,"name":"dripStart","nodeType":"VariableDeclaration","scope":19368,"src":"326:21:33","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19104,"name":"uint","nodeType":"ElementaryTypeName","src":"326:4:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"public"},{"constant":false,"id":19107,"name":"dripRate","nodeType":"VariableDeclaration","scope":19368,"src":"418:20:33","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19106,"name":"uint","nodeType":"ElementaryTypeName","src":"418:4:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"public"},{"constant":false,"id":19109,"name":"token","nodeType":"VariableDeclaration","scope":19368,"src":"496:27:33","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_EIP20Interface_$13484","typeString":"contract EIP20Interface"},"typeName":{"contractScope":null,"id":19108,"name":"EIP20Interface","nodeType":"UserDefinedTypeName","referencedDeclaration":13484,"src":"496:14:33","typeDescriptions":{"typeIdentifier":"t_contract$_EIP20Interface_$13484","typeString":"contract EIP20Interface"}},"value":null,"visibility":"public"},{"constant":false,"id":19111,"name":"target","nodeType":"VariableDeclaration","scope":19368,"src":"587:21:33","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19110,"name":"address","nodeType":"ElementaryTypeName","src":"587:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"public"},{"constant":false,"id":19113,"name":"dripped","nodeType":"VariableDeclaration","scope":19368,"src":"664:19:33","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19112,"name":"uint","nodeType":"ElementaryTypeName","src":"664:4:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"public"},{"body":{"id":19170,"nodeType":"Block","src":"961:322:33","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19125,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":19123,"name":"dripRate_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19115,"src":"975:9:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"30","id":19124,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"987:1:33","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"975:13:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"4472697020726174652073686f756c642062652067726561746572207468616e20302e","id":19126,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"990:37:33","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_9d45522daaf6ba666788d9818fae04c8a45d585b0ddc0293419d11ba8235cbcd","typeString":"literal_string \"Drip rate should be greater than 0.\""},"value":"Drip rate should be greater than 0."}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9d45522daaf6ba666788d9818fae04c8a45d585b0ddc0293419d11ba8235cbcd","typeString":"literal_string \"Drip rate should be greater than 0.\""}],"id":19122,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"967:7:33","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":19127,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"967:61:33","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19128,"nodeType":"ExpressionStatement","src":"967:61:33"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":19136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":19131,"name":"token_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19117,"src":"1050:6:33","typeDescriptions":{"typeIdentifier":"t_contract$_EIP20Interface_$13484","typeString":"contract EIP20Interface"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_EIP20Interface_$13484","typeString":"contract EIP20Interface"}],"id":19130,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1042:7:33","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":19132,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1042:15:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":19134,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1069:1:33","subdenomination":null,"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":19133,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1061:7:33","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":19135,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1061:10:33","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"1042:29:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"4472697020746f6b656e206e6f7420646566696e65642e","id":19137,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1073:25:33","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_d856297836a4259a14160fb538e51802188788f4627d3772eee66fb679d20dec","typeString":"literal_string \"Drip token not defined.\""},"value":"Drip token not defined."}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d856297836a4259a14160fb538e51802188788f4627d3772eee66fb679d20dec","typeString":"literal_string \"Drip token not defined.\""}],"id":19129,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"1034:7:33","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":19138,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1034:65:33","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19139,"nodeType":"ExpressionStatement","src":"1034:65:33"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":19145,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":19141,"name":"target_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19119,"src":"1113:7:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":19143,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1132:1:33","subdenomination":null,"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":19142,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1124:7:33","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":19144,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1124:10:33","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"1113:21:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"4472697020746172676574206e6f7420646566696e65642e","id":19146,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1136:26:33","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_c136c8e681a71f3e694f554c338af76ef3d800e064f7165d644f3ebf97d5e8ec","typeString":"literal_string \"Drip target not defined.\""},"value":"Drip target not defined."}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c136c8e681a71f3e694f554c338af76ef3d800e064f7165d644f3ebf97d5e8ec","typeString":"literal_string \"Drip target not defined.\""}],"id":19140,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"1105:7:33","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":19147,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1105:58:33","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19148,"nodeType":"ExpressionStatement","src":"1105:58:33"},{"expression":{"argumentTypes":null,"id":19152,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":19149,"name":"dripStart","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19105,"src":"1169:9:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":19150,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22540,"src":"1181:5:33","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":19151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"number","nodeType":"MemberAccess","referencedDeclaration":null,"src":"1181:12:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1169:24:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19153,"nodeType":"ExpressionStatement","src":"1169:24:33"},{"expression":{"argumentTypes":null,"id":19156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":19154,"name":"dripRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19107,"src":"1199:8:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":19155,"name":"dripRate_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19115,"src":"1210:9:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1199:20:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19157,"nodeType":"ExpressionStatement","src":"1199:20:33"},{"expression":{"argumentTypes":null,"id":19160,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":19158,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19109,"src":"1225:5:33","typeDescriptions":{"typeIdentifier":"t_contract$_EIP20Interface_$13484","typeString":"contract EIP20Interface"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":19159,"name":"token_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19117,"src":"1233:6:33","typeDescriptions":{"typeIdentifier":"t_contract$_EIP20Interface_$13484","typeString":"contract EIP20Interface"}},"src":"1225:14:33","typeDescriptions":{"typeIdentifier":"t_contract$_EIP20Interface_$13484","typeString":"contract EIP20Interface"}},"id":19161,"nodeType":"ExpressionStatement","src":"1225:14:33"},{"expression":{"argumentTypes":null,"id":19164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":19162,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19111,"src":"1245:6:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":19163,"name":"target_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19119,"src":"1254:7:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1245:16:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":19165,"nodeType":"ExpressionStatement","src":"1245:16:33"},{"expression":{"argumentTypes":null,"id":19168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":19166,"name":"dripped","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19113,"src":"1267:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"hexValue":"30","id":19167,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1277:1:33","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1267:11:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19169,"nodeType":"ExpressionStatement","src":"1267:11:33"}]},"documentation":"@notice Constructs a Reservoir\n@param dripRate_ Numer of tokens per block to drip\n@param token_ The token to drip\n@param target_ The recipient of dripped tokens","id":19171,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":19120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19115,"name":"dripRate_","nodeType":"VariableDeclaration","scope":19171,"src":"898:14:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19114,"name":"uint","nodeType":"ElementaryTypeName","src":"898:4:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":19117,"name":"token_","nodeType":"VariableDeclaration","scope":19171,"src":"914:21:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_EIP20Interface_$13484","typeString":"contract EIP20Interface"},"typeName":{"contractScope":null,"id":19116,"name":"EIP20Interface","nodeType":"UserDefinedTypeName","referencedDeclaration":13484,"src":"914:14:33","typeDescriptions":{"typeIdentifier":"t_contract$_EIP20Interface_$13484","typeString":"contract EIP20Interface"}},"value":null,"visibility":"internal"},{"constant":false,"id":19119,"name":"target_","nodeType":"VariableDeclaration","scope":19171,"src":"937:15:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19118,"name":"address","nodeType":"ElementaryTypeName","src":"937:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"897:56:33"},"returnParameters":{"id":19121,"nodeType":"ParameterList","parameters":[],"src":"961:0:33"},"scope":19368,"src":"886:397:33","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":19256,"nodeType":"Block","src":"1557:823:33","statements":[{"assignments":[19177],"declarations":[{"constant":false,"id":19177,"name":"token_","nodeType":"VariableDeclaration","scope":19256,"src":"1602:21:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_EIP20Interface_$13484","typeString":"contract EIP20Interface"},"typeName":{"contractScope":null,"id":19176,"name":"EIP20Interface","nodeType":"UserDefinedTypeName","referencedDeclaration":13484,"src":"1602:14:33","typeDescriptions":{"typeIdentifier":"t_contract$_EIP20Interface_$13484","typeString":"contract EIP20Interface"}},"value":null,"visibility":"internal"}],"id":19179,"initialValue":{"argumentTypes":null,"id":19178,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19109,"src":"1626:5:33","typeDescriptions":{"typeIdentifier":"t_contract$_EIP20Interface_$13484","typeString":"contract EIP20Interface"}},"nodeType":"VariableDeclarationStatement","src":"1602:29:33"},{"assignments":[19181],"declarations":[{"constant":false,"id":19181,"name":"reservoirBalance_","nodeType":"VariableDeclaration","scope":19256,"src":"1637:22:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19180,"name":"uint","nodeType":"ElementaryTypeName","src":"1637:4:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":19188,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":19185,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22680,"src":"1687:4:33","typeDescriptions":{"typeIdentifier":"t_contract$_Reservoir_$19368","typeString":"contract Reservoir"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Reservoir_$19368","typeString":"contract Reservoir"}],"id":19184,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1679:7:33","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":19186,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1679:13:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":19182,"name":"token_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19177,"src":"1662:6:33","typeDescriptions":{"typeIdentifier":"t_contract$_EIP20Interface_$13484","typeString":"contract EIP20Interface"}},"id":19183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":13429,"src":"1662:16:33","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":19187,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1662:31:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1637:56:33"},{"assignments":[19190],"declarations":[{"constant":false,"id":19190,"name":"dripRate_","nodeType":"VariableDeclaration","scope":19256,"src":"1737:14:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19189,"name":"uint","nodeType":"ElementaryTypeName","src":"1737:4:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":19192,"initialValue":{"argumentTypes":null,"id":19191,"name":"dripRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19107,"src":"1754:8:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1737:25:33"},{"assignments":[19194],"declarations":[{"constant":false,"id":19194,"name":"dripStart_","nodeType":"VariableDeclaration","scope":19256,"src":"1768:15:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19193,"name":"uint","nodeType":"ElementaryTypeName","src":"1768:4:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":19196,"initialValue":{"argumentTypes":null,"id":19195,"name":"dripStart","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19105,"src":"1786:9:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1768:27:33"},{"assignments":[19198],"declarations":[{"constant":false,"id":19198,"name":"dripped_","nodeType":"VariableDeclaration","scope":19256,"src":"1801:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19197,"name":"uint","nodeType":"ElementaryTypeName","src":"1801:4:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":19200,"initialValue":{"argumentTypes":null,"id":19199,"name":"dripped","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19113,"src":"1817:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1801:23:33"},{"assignments":[19202],"declarations":[{"constant":false,"id":19202,"name":"target_","nodeType":"VariableDeclaration","scope":19256,"src":"1830:15:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19201,"name":"address","nodeType":"ElementaryTypeName","src":"1830:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":19204,"initialValue":{"argumentTypes":null,"id":19203,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19111,"src":"1848:6:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"1830:24:33"},{"assignments":[19206],"declarations":[{"constant":false,"id":19206,"name":"blockNumber_","nodeType":"VariableDeclaration","scope":19256,"src":"1860:17:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19205,"name":"uint","nodeType":"ElementaryTypeName","src":"1860:4:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":19209,"initialValue":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":19207,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22540,"src":"1880:5:33","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":19208,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"number","nodeType":"MemberAccess","referencedDeclaration":null,"src":"1880:12:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1860:32:33"},{"assignments":[19211],"declarations":[{"constant":false,"id":19211,"name":"dripTotal_","nodeType":"VariableDeclaration","scope":19256,"src":"1942:15:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19210,"name":"uint","nodeType":"ElementaryTypeName","src":"1942:4:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":19219,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":19213,"name":"dripRate_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19190,"src":"1964:9:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":19214,"name":"blockNumber_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19206,"src":"1975:12:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"id":19215,"name":"dripStart_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19194,"src":"1990:10:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1975:25:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"64726970546f74616c206f766572666c6f77","id":19217,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2002:20:33","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_eeb86bb609ce1edf1e4d00e7ec673c09199969676cd8eac785a150ccc5a5a15f","typeString":"literal_string \"dripTotal overflow\""},"value":"dripTotal overflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_eeb86bb609ce1edf1e4d00e7ec673c09199969676cd8eac785a150ccc5a5a15f","typeString":"literal_string \"dripTotal overflow\""}],"id":19212,"name":"mul","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19347,"src":"1960:3:33","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$","typeString":"function (uint256,uint256,string memory) pure returns (uint256)"}},"id":19218,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1960:63:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1942:81:33"},{"assignments":[19221],"declarations":[{"constant":false,"id":19221,"name":"deltaDrip_","nodeType":"VariableDeclaration","scope":19256,"src":"2029:15:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19220,"name":"uint","nodeType":"ElementaryTypeName","src":"2029:4:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":19227,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":19223,"name":"dripTotal_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19211,"src":"2051:10:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":19224,"name":"dripped_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19198,"src":"2063:8:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"64656c74614472697020756e646572666c6f77","id":19225,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2073:21:33","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_3737edc0437abae74a77d841a1afd326cb978594133e9ea36fd8c94c60c6f197","typeString":"literal_string \"deltaDrip underflow\""},"value":"deltaDrip underflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_3737edc0437abae74a77d841a1afd326cb978594133e9ea36fd8c94c60c6f197","typeString":"literal_string \"deltaDrip underflow\""}],"id":19222,"name":"sub","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19311,"src":"2047:3:33","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$","typeString":"function (uint256,uint256,string memory) pure returns (uint256)"}},"id":19226,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2047:48:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2029:66:33"},{"assignments":[19229],"declarations":[{"constant":false,"id":19229,"name":"toDrip_","nodeType":"VariableDeclaration","scope":19256,"src":"2101:12:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19228,"name":"uint","nodeType":"ElementaryTypeName","src":"2101:4:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":19234,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":19231,"name":"reservoirBalance_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19181,"src":"2120:17:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":19232,"name":"deltaDrip_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19221,"src":"2139:10:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":19230,"name":"min","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19367,"src":"2116:3:33","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":19233,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2116:34:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2101:49:33"},{"assignments":[19236],"declarations":[{"constant":false,"id":19236,"name":"drippedNext_","nodeType":"VariableDeclaration","scope":19256,"src":"2156:17:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19235,"name":"uint","nodeType":"ElementaryTypeName","src":"2156:4:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":19242,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":19238,"name":"dripped_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19198,"src":"2180:8:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":19239,"name":"toDrip_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19229,"src":"2190:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"746175746f6c6f676963616c","id":19240,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2199:14:33","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_f126400dca092f338e9063a2a93b00cb0604402014b7a76ca382ef80a8b98426","typeString":"literal_string \"tautological\""},"value":"tautological"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_f126400dca092f338e9063a2a93b00cb0604402014b7a76ca382ef80a8b98426","typeString":"literal_string \"tautological\""}],"id":19237,"name":"add","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19284,"src":"2176:3:33","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$","typeString":"function (uint256,uint256,string memory) pure returns (uint256)"}},"id":19241,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2176:38:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2156:58:33"},{"expression":{"argumentTypes":null,"id":19245,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":19243,"name":"dripped","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19113,"src":"2293:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":19244,"name":"drippedNext_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19236,"src":"2303:12:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2293:22:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19246,"nodeType":"ExpressionStatement","src":"2293:22:33"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":19250,"name":"target_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19202,"src":"2337:7:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":19251,"name":"toDrip_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19229,"src":"2346:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":19247,"name":"token_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19177,"src":"2321:6:33","typeDescriptions":{"typeIdentifier":"t_contract$_EIP20Interface_$13484","typeString":"contract EIP20Interface"}},"id":19249,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":13438,"src":"2321:15:33","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":19252,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2321:33:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":19253,"nodeType":"ExpressionStatement","src":"2321:33:33"},{"expression":{"argumentTypes":null,"id":19254,"name":"toDrip_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19229,"src":"2368:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":19175,"id":19255,"nodeType":"Return","src":"2361:14:33"}]},"documentation":"@notice Drips the maximum amount of tokens to match the drip rate since inception\n@dev Note: this will only drip up to the amount of tokens available.\n@return The amount of tokens dripped in this call","id":19257,"implemented":true,"kind":"function","modifiers":[],"name":"drip","nodeType":"FunctionDefinition","parameters":{"id":19172,"nodeType":"ParameterList","parameters":[],"src":"1532:2:33"},"returnParameters":{"id":19175,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19174,"name":"","nodeType":"VariableDeclaration","scope":19257,"src":"1551:4:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19173,"name":"uint","nodeType":"ElementaryTypeName","src":"1551:4:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1550:6:33"},"scope":19368,"src":"1519:861:33","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":19283,"nodeType":"Block","src":"2519:74:33","statements":[{"assignments":[19269],"declarations":[{"constant":false,"id":19269,"name":"c","nodeType":"VariableDeclaration","scope":19283,"src":"2525:6:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19268,"name":"uint","nodeType":"ElementaryTypeName","src":"2525:4:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":19273,"initialValue":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19272,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":19270,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19259,"src":"2534:1:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"argumentTypes":null,"id":19271,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19261,"src":"2538:1:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2534:5:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2525:14:33"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19277,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":19275,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19269,"src":"2553:1:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"argumentTypes":null,"id":19276,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19259,"src":"2558:1:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2553:6:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"id":19278,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19263,"src":"2561:12:33","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":19274,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"2545:7:33","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":19279,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2545:29:33","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19280,"nodeType":"ExpressionStatement","src":"2545:29:33"},{"expression":{"argumentTypes":null,"id":19281,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19269,"src":"2587:1:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":19267,"id":19282,"nodeType":"Return","src":"2580:8:33"}]},"documentation":null,"id":19284,"implemented":true,"kind":"function","modifiers":[],"name":"add","nodeType":"FunctionDefinition","parameters":{"id":19264,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19259,"name":"a","nodeType":"VariableDeclaration","scope":19284,"src":"2446:6:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19258,"name":"uint","nodeType":"ElementaryTypeName","src":"2446:4:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":19261,"name":"b","nodeType":"VariableDeclaration","scope":19284,"src":"2454:6:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19260,"name":"uint","nodeType":"ElementaryTypeName","src":"2454:4:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":19263,"name":"errorMessage","nodeType":"VariableDeclaration","scope":19284,"src":"2462:26:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19262,"name":"string","nodeType":"ElementaryTypeName","src":"2462:6:33","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":null,"visibility":"internal"}],"src":"2445:44:33"},"returnParameters":{"id":19267,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19266,"name":"","nodeType":"VariableDeclaration","scope":19284,"src":"2513:4:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19265,"name":"uint","nodeType":"ElementaryTypeName","src":"2513:4:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2512:6:33"},"scope":19368,"src":"2433:160:33","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":19310,"nodeType":"Block","src":"2683:74:33","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19298,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":19296,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19288,"src":"2697:1:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"argumentTypes":null,"id":19297,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19286,"src":"2702:1:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2697:6:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"id":19299,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19290,"src":"2705:12:33","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":19295,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"2689:7:33","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":19300,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2689:29:33","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19301,"nodeType":"ExpressionStatement","src":"2689:29:33"},{"assignments":[19303],"declarations":[{"constant":false,"id":19303,"name":"c","nodeType":"VariableDeclaration","scope":19310,"src":"2724:6:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19302,"name":"uint","nodeType":"ElementaryTypeName","src":"2724:4:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":19307,"initialValue":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19306,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":19304,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19286,"src":"2733:1:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"id":19305,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19288,"src":"2737:1:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2733:5:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2724:14:33"},{"expression":{"argumentTypes":null,"id":19308,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19303,"src":"2751:1:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":19294,"id":19309,"nodeType":"Return","src":"2744:8:33"}]},"documentation":null,"id":19311,"implemented":true,"kind":"function","modifiers":[],"name":"sub","nodeType":"FunctionDefinition","parameters":{"id":19291,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19286,"name":"a","nodeType":"VariableDeclaration","scope":19311,"src":"2610:6:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19285,"name":"uint","nodeType":"ElementaryTypeName","src":"2610:4:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":19288,"name":"b","nodeType":"VariableDeclaration","scope":19311,"src":"2618:6:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19287,"name":"uint","nodeType":"ElementaryTypeName","src":"2618:4:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":19290,"name":"errorMessage","nodeType":"VariableDeclaration","scope":19311,"src":"2626:26:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19289,"name":"string","nodeType":"ElementaryTypeName","src":"2626:6:33","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":null,"visibility":"internal"}],"src":"2609:44:33"},"returnParameters":{"id":19294,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19293,"name":"","nodeType":"VariableDeclaration","scope":19311,"src":"2677:4:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19292,"name":"uint","nodeType":"ElementaryTypeName","src":"2677:4:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2676:6:33"},"scope":19368,"src":"2597:160:33","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":19346,"nodeType":"Block","src":"2847:118:33","statements":[{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":19322,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19313,"src":"2857:1:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":19323,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2862:1:33","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2857:6:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":19328,"nodeType":"IfStatement","src":"2853:35:33","trueBody":{"id":19327,"nodeType":"Block","src":"2865:23:33","statements":[{"expression":{"argumentTypes":null,"hexValue":"30","id":19325,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2880:1:33","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":19321,"id":19326,"nodeType":"Return","src":"2873:8:33"}]}},{"assignments":[19330],"declarations":[{"constant":false,"id":19330,"name":"c","nodeType":"VariableDeclaration","scope":19346,"src":"2893:6:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19329,"name":"uint","nodeType":"ElementaryTypeName","src":"2893:4:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":19334,"initialValue":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19333,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":19331,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19313,"src":"2902:1:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"argumentTypes":null,"id":19332,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19315,"src":"2906:1:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2902:5:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2893:14:33"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":19336,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19330,"src":"2921:1:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"argumentTypes":null,"id":19337,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19313,"src":"2925:1:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2921:5:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":19339,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19315,"src":"2930:1:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2921:10:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"id":19341,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19317,"src":"2933:12:33","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":19335,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"2913:7:33","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":19342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2913:33:33","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19343,"nodeType":"ExpressionStatement","src":"2913:33:33"},{"expression":{"argumentTypes":null,"id":19344,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19330,"src":"2959:1:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":19321,"id":19345,"nodeType":"Return","src":"2952:8:33"}]},"documentation":null,"id":19347,"implemented":true,"kind":"function","modifiers":[],"name":"mul","nodeType":"FunctionDefinition","parameters":{"id":19318,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19313,"name":"a","nodeType":"VariableDeclaration","scope":19347,"src":"2774:6:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19312,"name":"uint","nodeType":"ElementaryTypeName","src":"2774:4:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":19315,"name":"b","nodeType":"VariableDeclaration","scope":19347,"src":"2782:6:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19314,"name":"uint","nodeType":"ElementaryTypeName","src":"2782:4:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":19317,"name":"errorMessage","nodeType":"VariableDeclaration","scope":19347,"src":"2790:26:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19316,"name":"string","nodeType":"ElementaryTypeName","src":"2790:6:33","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":null,"visibility":"internal"}],"src":"2773:44:33"},"returnParameters":{"id":19321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19320,"name":"","nodeType":"VariableDeclaration","scope":19347,"src":"2841:4:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19319,"name":"uint","nodeType":"ElementaryTypeName","src":"2841:4:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2840:6:33"},"scope":19368,"src":"2761:204:33","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":19366,"nodeType":"Block","src":"3027:74:33","statements":[{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19358,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":19356,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19349,"src":"3037:1:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"argumentTypes":null,"id":19357,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19351,"src":"3042:1:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3037:6:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":19364,"nodeType":"Block","src":"3074:23:33","statements":[{"expression":{"argumentTypes":null,"id":19362,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19351,"src":"3089:1:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":19355,"id":19363,"nodeType":"Return","src":"3082:8:33"}]},"id":19365,"nodeType":"IfStatement","src":"3033:64:33","trueBody":{"id":19361,"nodeType":"Block","src":"3045:23:33","statements":[{"expression":{"argumentTypes":null,"id":19359,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19349,"src":"3060:1:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":19355,"id":19360,"nodeType":"Return","src":"3053:8:33"}]}}]},"documentation":null,"id":19367,"implemented":true,"kind":"function","modifiers":[],"name":"min","nodeType":"FunctionDefinition","parameters":{"id":19352,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19349,"name":"a","nodeType":"VariableDeclaration","scope":19367,"src":"2982:6:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19348,"name":"uint","nodeType":"ElementaryTypeName","src":"2982:4:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":19351,"name":"b","nodeType":"VariableDeclaration","scope":19367,"src":"2990:6:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19350,"name":"uint","nodeType":"ElementaryTypeName","src":"2990:4:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2981:16:33"},"returnParameters":{"id":19355,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19354,"name":"","nodeType":"VariableDeclaration","scope":19367,"src":"3021:4:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19353,"name":"uint","nodeType":"ElementaryTypeName","src":"3021:4:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"3020:6:33"},"scope":19368,"src":"2969:132:33","stateMutability":"pure","superFunction":null,"visibility":"internal"}],"scope":19370,"src":"232:2871:33"},{"absolutePath":"contracts/EIP20Interface.sol","file":"./EIP20Interface.sol","id":19369,"nodeType":"ImportDirective","scope":19370,"sourceUnit":13485,"src":"3105:30:33","symbolAliases":[],"unitAlias":""}],"src":"0:3136:33"},"id":33},"contracts/RewardsDistributorDelegate.sol":{"ast":{"absolutePath":"contracts/RewardsDistributorDelegate.sol","exportedSymbols":{"RewardsDistributorDelegate":[20921]},"id":20922,"nodeType":"SourceUnit","nodes":[{"id":19371,"literals":["solidity","0.5",".17"],"nodeType":"PragmaDirective","src":"0:23:34"},{"absolutePath":"contracts/CToken.sol","file":"./CToken.sol","id":19372,"nodeType":"ImportDirective","scope":20922,"sourceUnit":6187,"src":"25:22:34","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/ExponentialNoError.sol","file":"./ExponentialNoError.sol","id":19373,"nodeType":"ImportDirective","scope":20922,"sourceUnit":15067,"src":"48:34:34","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/Comptroller.sol","file":"./Comptroller.sol","id":19374,"nodeType":"ImportDirective","scope":20922,"sourceUnit":10532,"src":"83:27:34","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/RewardsDistributorStorage.sol","file":"./RewardsDistributorStorage.sol","id":19375,"nodeType":"ImportDirective","scope":20922,"sourceUnit":21096,"src":"111:41:34","symbolAliases":[],"unitAlias":""},{"baseContracts":[{"arguments":null,"baseName":{"contractScope":null,"id":19376,"name":"RewardsDistributorDelegateStorageV1","nodeType":"UserDefinedTypeName","referencedDeclaration":21095,"src":"313:35:34","typeDescriptions":{"typeIdentifier":"t_contract$_RewardsDistributorDelegateStorageV1_$21095","typeString":"contract RewardsDistributorDelegateStorageV1"}},"id":19377,"nodeType":"InheritanceSpecifier","src":"313:35:34"},{"arguments":null,"baseName":{"contractScope":null,"id":19378,"name":"ExponentialNoError","nodeType":"UserDefinedTypeName","referencedDeclaration":15066,"src":"350:18:34","typeDescriptions":{"typeIdentifier":"t_contract$_ExponentialNoError_$15066","typeString":"contract ExponentialNoError"}},"id":19379,"nodeType":"InheritanceSpecifier","src":"350:18:34"}],"contractDependencies":[15066,21042,21095],"contractKind":"contract","documentation":"@title RewardsDistributorDelegate (COMP distribution logic extracted from `Comptroller`)\n@author Compound","fullyImplemented":true,"id":20921,"linearizedBaseContracts":[20921,15066,21095,21042],"name":"RewardsDistributorDelegate","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":19382,"name":"isRewardsDistributor","nodeType":"VariableDeclaration","scope":20921,"src":"438:48:34","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":19380,"name":"bool","nodeType":"ElementaryTypeName","src":"438:4:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":{"argumentTypes":null,"hexValue":"74727565","id":19381,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"482:4:34","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"visibility":"public"},{"anonymous":false,"documentation":"@notice Emitted when pendingAdmin is changed","id":19388,"name":"NewPendingAdmin","nodeType":"EventDefinition","parameters":{"id":19387,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19384,"indexed":false,"name":"oldPendingAdmin","nodeType":"VariableDeclaration","scope":19388,"src":"568:23:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19383,"name":"address","nodeType":"ElementaryTypeName","src":"568:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":19386,"indexed":false,"name":"newPendingAdmin","nodeType":"VariableDeclaration","scope":19388,"src":"593:23:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19385,"name":"address","nodeType":"ElementaryTypeName","src":"593:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"567:50:34"},"src":"546:72:34"},{"anonymous":false,"documentation":"@notice Emitted when pendingAdmin is accepted, which means admin is updated","id":19394,"name":"NewAdmin","nodeType":"EventDefinition","parameters":{"id":19393,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19390,"indexed":false,"name":"oldAdmin","nodeType":"VariableDeclaration","scope":19394,"src":"723:16:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19389,"name":"address","nodeType":"ElementaryTypeName","src":"723:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":19392,"indexed":false,"name":"newAdmin","nodeType":"VariableDeclaration","scope":19394,"src":"741:16:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19391,"name":"address","nodeType":"ElementaryTypeName","src":"741:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"722:36:34"},"src":"708:51:34"},{"anonymous":false,"documentation":"@notice Emitted when a new COMP speed is calculated for a market","id":19400,"name":"CompSupplySpeedUpdated","nodeType":"EventDefinition","parameters":{"id":19399,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19396,"indexed":true,"name":"cToken","nodeType":"VariableDeclaration","scope":19400,"src":"867:21:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},"typeName":{"contractScope":null,"id":19395,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"867:6:34","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"value":null,"visibility":"internal"},{"constant":false,"id":19398,"indexed":false,"name":"newSpeed","nodeType":"VariableDeclaration","scope":19400,"src":"890:13:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19397,"name":"uint","nodeType":"ElementaryTypeName","src":"890:4:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"866:38:34"},"src":"838:67:34"},{"anonymous":false,"documentation":"@notice Emitted when a new COMP speed is calculated for a market","id":19406,"name":"CompBorrowSpeedUpdated","nodeType":"EventDefinition","parameters":{"id":19405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19402,"indexed":true,"name":"cToken","nodeType":"VariableDeclaration","scope":19406,"src":"1013:21:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},"typeName":{"contractScope":null,"id":19401,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"1013:6:34","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"value":null,"visibility":"internal"},{"constant":false,"id":19404,"indexed":false,"name":"newSpeed","nodeType":"VariableDeclaration","scope":19406,"src":"1036:13:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19403,"name":"uint","nodeType":"ElementaryTypeName","src":"1036:4:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1012:38:34"},"src":"984:67:34"},{"anonymous":false,"documentation":"@notice Emitted when a new COMP speed is set for a contributor","id":19412,"name":"ContributorCompSpeedUpdated","nodeType":"EventDefinition","parameters":{"id":19411,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19408,"indexed":true,"name":"contributor","nodeType":"VariableDeclaration","scope":19412,"src":"1162:27:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19407,"name":"address","nodeType":"ElementaryTypeName","src":"1162:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":19410,"indexed":false,"name":"newSpeed","nodeType":"VariableDeclaration","scope":19412,"src":"1191:13:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19409,"name":"uint","nodeType":"ElementaryTypeName","src":"1191:4:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1161:44:34"},"src":"1128:78:34"},{"anonymous":false,"documentation":"@notice Emitted when COMP is distributed to a supplier","id":19422,"name":"DistributedSupplierComp","nodeType":"EventDefinition","parameters":{"id":19421,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19414,"indexed":true,"name":"cToken","nodeType":"VariableDeclaration","scope":19422,"src":"1305:21:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},"typeName":{"contractScope":null,"id":19413,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"1305:6:34","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"value":null,"visibility":"internal"},{"constant":false,"id":19416,"indexed":true,"name":"supplier","nodeType":"VariableDeclaration","scope":19422,"src":"1328:24:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19415,"name":"address","nodeType":"ElementaryTypeName","src":"1328:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":19418,"indexed":false,"name":"compDelta","nodeType":"VariableDeclaration","scope":19422,"src":"1354:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19417,"name":"uint","nodeType":"ElementaryTypeName","src":"1354:4:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":19420,"indexed":false,"name":"compSupplyIndex","nodeType":"VariableDeclaration","scope":19422,"src":"1370:20:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19419,"name":"uint","nodeType":"ElementaryTypeName","src":"1370:4:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1304:87:34"},"src":"1275:117:34"},{"anonymous":false,"documentation":"@notice Emitted when COMP is distributed to a borrower","id":19432,"name":"DistributedBorrowerComp","nodeType":"EventDefinition","parameters":{"id":19431,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19424,"indexed":true,"name":"cToken","nodeType":"VariableDeclaration","scope":19432,"src":"1491:21:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},"typeName":{"contractScope":null,"id":19423,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"1491:6:34","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"value":null,"visibility":"internal"},{"constant":false,"id":19426,"indexed":true,"name":"borrower","nodeType":"VariableDeclaration","scope":19432,"src":"1514:24:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19425,"name":"address","nodeType":"ElementaryTypeName","src":"1514:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":19428,"indexed":false,"name":"compDelta","nodeType":"VariableDeclaration","scope":19432,"src":"1540:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19427,"name":"uint","nodeType":"ElementaryTypeName","src":"1540:4:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":19430,"indexed":false,"name":"compBorrowIndex","nodeType":"VariableDeclaration","scope":19432,"src":"1556:20:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19429,"name":"uint","nodeType":"ElementaryTypeName","src":"1556:4:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1490:87:34"},"src":"1461:117:34"},{"anonymous":false,"documentation":"@notice Emitted when COMP is granted by admin","id":19438,"name":"CompGranted","nodeType":"EventDefinition","parameters":{"id":19437,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19434,"indexed":false,"name":"recipient","nodeType":"VariableDeclaration","scope":19438,"src":"1656:17:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19433,"name":"address","nodeType":"ElementaryTypeName","src":"1656:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":19436,"indexed":false,"name":"amount","nodeType":"VariableDeclaration","scope":19438,"src":"1675:11:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19435,"name":"uint","nodeType":"ElementaryTypeName","src":"1675:4:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1655:32:34"},"src":"1638:50:34"},{"constant":true,"id":19441,"name":"compInitialIndex","nodeType":"VariableDeclaration","scope":20921,"src":"1746:47:34","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":19439,"name":"uint224","nodeType":"ElementaryTypeName","src":"1746:7:34","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"value":{"argumentTypes":null,"hexValue":"31653336","id":19440,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1789:4:34","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(29 digits omitted)...0000"},"value":"1e36"},"visibility":"public"},{"body":{"id":19476,"nodeType":"Block","src":"1921:279:34","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":19450,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":19447,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"1939:3:34","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":19448,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"1939:10:34","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":19449,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21037,"src":"1953:5:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1939:19:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"4f6e6c792061646d696e2063616e20696e697469616c697a652e","id":19451,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1960:28:34","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_f35d1cb9fab3a69fbbe357ad5294969625541c1fec58270d4d2a07b161abaf24","typeString":"literal_string \"Only admin can initialize.\""},"value":"Only admin can initialize."}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f35d1cb9fab3a69fbbe357ad5294969625541c1fec58270d4d2a07b161abaf24","typeString":"literal_string \"Only admin can initialize.\""}],"id":19446,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"1931:7:34","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":19452,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1931:58:34","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19453,"nodeType":"ExpressionStatement","src":"1931:58:34"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":19459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":19455,"name":"rewardToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21046,"src":"2007:11:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":19457,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2030:1:34","subdenomination":null,"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":19456,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2022:7:34","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":19458,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2022:10:34","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"2007:25:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"416c726561647920696e697469616c697a65642e","id":19460,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2034:22:34","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_66c8c7088bcb7bdc5c99ac22cb75a134a8e0d8cc46ca1751e1f157b34ab8510f","typeString":"literal_string \"Already initialized.\""},"value":"Already initialized."}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_66c8c7088bcb7bdc5c99ac22cb75a134a8e0d8cc46ca1751e1f157b34ab8510f","typeString":"literal_string \"Already initialized.\""}],"id":19454,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"1999:7:34","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":19461,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1999:58:34","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19462,"nodeType":"ExpressionStatement","src":"1999:58:34"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":19468,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":19464,"name":"_rewardToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19443,"src":"2075:12:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":19466,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2099:1:34","subdenomination":null,"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":19465,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2091:7:34","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":19467,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2091:10:34","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"2075:26:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"43616e6e6f7420696e697469616c697a652072657761726420746f6b656e20746f20746865207a65726f20616464726573732e","id":19469,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2103:53:34","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_61c09156d144ccd83b68603c5886a099e8313b0e7f070405cc9ecc75293bd2a8","typeString":"literal_string \"Cannot initialize reward token to the zero address.\""},"value":"Cannot initialize reward token to the zero address."}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_61c09156d144ccd83b68603c5886a099e8313b0e7f070405cc9ecc75293bd2a8","typeString":"literal_string \"Cannot initialize reward token to the zero address.\""}],"id":19463,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"2067:7:34","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":19470,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2067:90:34","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19471,"nodeType":"ExpressionStatement","src":"2067:90:34"},{"expression":{"argumentTypes":null,"id":19474,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":19472,"name":"rewardToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21046,"src":"2167:11:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":19473,"name":"_rewardToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19443,"src":"2181:12:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2167:26:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":19475,"nodeType":"ExpressionStatement","src":"2167:26:34"}]},"documentation":"@dev Intitializer to set admin to caller and set reward token","id":19477,"implemented":true,"kind":"function","modifiers":[],"name":"initialize","nodeType":"FunctionDefinition","parameters":{"id":19444,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19443,"name":"_rewardToken","nodeType":"VariableDeclaration","scope":19477,"src":"1890:20:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19442,"name":"address","nodeType":"ElementaryTypeName","src":"1890:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"1889:22:34"},"returnParameters":{"id":19445,"nodeType":"ParameterList","parameters":[],"src":"1921:0:34"},"scope":20921,"src":"1870:330:34","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":{"id":19503,"nodeType":"Block","src":"2603:466:34","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":19486,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":19483,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"2653:3:34","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":19484,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2653:10:34","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":19485,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21037,"src":"2667:5:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2653:19:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"526577617264734469737472696275746f723a5f73657450656e64696e6741646d696e3a2061646d696e206f6e6c79","id":19487,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2674:49:34","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_067b20ce4a5c4434cd32218c01e718a8b256f1d12cfa27c63359b106deb500f7","typeString":"literal_string \"RewardsDistributor:_setPendingAdmin: admin only\""},"value":"RewardsDistributor:_setPendingAdmin: admin only"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_067b20ce4a5c4434cd32218c01e718a8b256f1d12cfa27c63359b106deb500f7","typeString":"literal_string \"RewardsDistributor:_setPendingAdmin: admin only\""}],"id":19482,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"2645:7:34","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":19488,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2645:79:34","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19489,"nodeType":"ExpressionStatement","src":"2645:79:34"},{"assignments":[19491],"declarations":[{"constant":false,"id":19491,"name":"oldPendingAdmin","nodeType":"VariableDeclaration","scope":19503,"src":"2795:23:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19490,"name":"address","nodeType":"ElementaryTypeName","src":"2795:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":19493,"initialValue":{"argumentTypes":null,"id":19492,"name":"pendingAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21039,"src":"2821:12:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2795:38:34"},{"expression":{"argumentTypes":null,"id":19496,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":19494,"name":"pendingAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21039,"src":"2901:12:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":19495,"name":"newPendingAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19479,"src":"2916:15:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2901:30:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":19497,"nodeType":"ExpressionStatement","src":"2901:30:34"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":19499,"name":"oldPendingAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19491,"src":"3029:15:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":19500,"name":"newPendingAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19479,"src":"3046:15:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":19498,"name":"NewPendingAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19388,"src":"3013:15:34","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":19501,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3013:49:34","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19502,"nodeType":"EmitStatement","src":"3008:54:34"}]},"documentation":"@notice Begins transfer of admin rights. The newPendingAdmin must call `_acceptAdmin` to finalize the transfer.\n@dev Admin function to begin change of admin. The newPendingAdmin must call `_acceptAdmin` to finalize the transfer.\n@param newPendingAdmin New pending admin.","id":19504,"implemented":true,"kind":"function","modifiers":[],"name":"_setPendingAdmin","nodeType":"FunctionDefinition","parameters":{"id":19480,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19479,"name":"newPendingAdmin","nodeType":"VariableDeclaration","scope":19504,"src":"2569:23:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19478,"name":"address","nodeType":"ElementaryTypeName","src":"2569:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"2568:25:34"},"returnParameters":{"id":19481,"nodeType":"ParameterList","parameters":[],"src":"2603:0:34"},"scope":20921,"src":"2543:526:34","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":{"id":19550,"nodeType":"Block","src":"3285:593:34","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":19518,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":19511,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":19508,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"3375:3:34","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":19509,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"3375:10:34","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":19510,"name":"pendingAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21039,"src":"3389:12:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3375:26:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"id":19517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":19512,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"3405:3:34","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":19513,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"3405:10:34","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":19515,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3427:1:34","subdenomination":null,"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":19514,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3419:7:34","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":19516,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3419:10:34","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"3405:24:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3375:54:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"526577617264734469737472696275746f723a5f61636365707441646d696e3a2070656e64696e672061646d696e206f6e6c79","id":19519,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3431:53:34","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_0f7e64217fab7ce618b9b18de4c4693d263824d42c4f21206e04cec6fefd4ff2","typeString":"literal_string \"RewardsDistributor:_acceptAdmin: pending admin only\""},"value":"RewardsDistributor:_acceptAdmin: pending admin only"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_0f7e64217fab7ce618b9b18de4c4693d263824d42c4f21206e04cec6fefd4ff2","typeString":"literal_string \"RewardsDistributor:_acceptAdmin: pending admin only\""}],"id":19507,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"3367:7:34","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":19520,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3367:118:34","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19521,"nodeType":"ExpressionStatement","src":"3367:118:34"},{"assignments":[19523],"declarations":[{"constant":false,"id":19523,"name":"oldAdmin","nodeType":"VariableDeclaration","scope":19550,"src":"3548:16:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19522,"name":"address","nodeType":"ElementaryTypeName","src":"3548:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":19525,"initialValue":{"argumentTypes":null,"id":19524,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21037,"src":"3567:5:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3548:24:34"},{"assignments":[19527],"declarations":[{"constant":false,"id":19527,"name":"oldPendingAdmin","nodeType":"VariableDeclaration","scope":19550,"src":"3582:23:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19526,"name":"address","nodeType":"ElementaryTypeName","src":"3582:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":19529,"initialValue":{"argumentTypes":null,"id":19528,"name":"pendingAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21039,"src":"3608:12:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3582:38:34"},{"expression":{"argumentTypes":null,"id":19532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":19530,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21037,"src":"3678:5:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":19531,"name":"pendingAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21039,"src":"3686:12:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3678:20:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":19533,"nodeType":"ExpressionStatement","src":"3678:20:34"},{"expression":{"argumentTypes":null,"id":19538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":19534,"name":"pendingAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21039,"src":"3744:12:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":19536,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3767:1:34","subdenomination":null,"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":19535,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3759:7:34","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":19537,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3759:10:34","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"3744:25:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":19539,"nodeType":"ExpressionStatement","src":"3744:25:34"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":19541,"name":"oldAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19523,"src":"3794:8:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":19542,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21037,"src":"3804:5:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":19540,"name":"NewAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19394,"src":"3785:8:34","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":19543,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3785:25:34","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19544,"nodeType":"EmitStatement","src":"3780:30:34"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":19546,"name":"oldPendingAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19527,"src":"3841:15:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":19547,"name":"pendingAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21039,"src":"3858:12:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":19545,"name":"NewPendingAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19388,"src":"3825:15:34","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":19548,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3825:46:34","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19549,"nodeType":"EmitStatement","src":"3820:51:34"}]},"documentation":"@notice Accepts transfer of admin rights. msg.sender must be pendingAdmin\n@dev Admin function for pending admin to accept role and update admin","id":19551,"implemented":true,"kind":"function","modifiers":[],"name":"_acceptAdmin","nodeType":"FunctionDefinition","parameters":{"id":19505,"nodeType":"ParameterList","parameters":[],"src":"3273:2:34"},"returnParameters":{"id":19506,"nodeType":"ParameterList","parameters":[],"src":"3285:0:34"},"scope":20921,"src":"3252:626:34","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":{"id":19625,"nodeType":"Block","src":"4068:603:34","statements":[{"assignments":[19557],"declarations":[{"constant":false,"id":19557,"name":"comptroller","nodeType":"VariableDeclaration","scope":19625,"src":"4116:23:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_Comptroller_$10531","typeString":"contract Comptroller"},"typeName":{"contractScope":null,"id":19556,"name":"Comptroller","nodeType":"UserDefinedTypeName","referencedDeclaration":10531,"src":"4116:11:34","typeDescriptions":{"typeIdentifier":"t_contract$_Comptroller_$10531","typeString":"contract Comptroller"}},"value":null,"visibility":"internal"}],"id":19565,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":19560,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19553,"src":"4162:6:34","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":19561,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"comptroller","nodeType":"MemberAccess","referencedDeclaration":6224,"src":"4162:18:34","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_ComptrollerInterface_$12980_$","typeString":"function () view external returns (contract ComptrollerInterface)"}},"id":19562,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4162:20:34","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerInterface_$12980","typeString":"contract ComptrollerInterface"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ComptrollerInterface_$12980","typeString":"contract ComptrollerInterface"}],"id":19559,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4154:7:34","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":19563,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4154:29:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":19558,"name":"Comptroller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10531,"src":"4142:11:34","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Comptroller_$10531_$","typeString":"type(contract Comptroller)"}},"id":19564,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4142:42:34","typeDescriptions":{"typeIdentifier":"t_contract$_Comptroller_$10531","typeString":"contract Comptroller"}},"nodeType":"VariableDeclarationStatement","src":"4116:68:34"},{"assignments":[19567,null],"declarations":[{"constant":false,"id":19567,"name":"isListed","nodeType":"VariableDeclaration","scope":19625,"src":"4195:13:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":19566,"name":"bool","nodeType":"ElementaryTypeName","src":"4195:4:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},null],"id":19574,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":19571,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19553,"src":"4242:6:34","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":19570,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4234:7:34","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":19572,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4234:15:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":19568,"name":"comptroller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19557,"src":"4214:11:34","typeDescriptions":{"typeIdentifier":"t_contract$_Comptroller_$10531","typeString":"contract Comptroller"}},"id":19569,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"markets","nodeType":"MemberAccess","referencedDeclaration":13060,"src":"4214:19:34","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_bool_$_t_uint256_$","typeString":"function (address) view external returns (bool,uint256)"}},"id":19573,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4214:36:34","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"4194:56:34"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":19578,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":19576,"name":"isListed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19567,"src":"4268:8:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"74727565","id":19577,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4280:4:34","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"4268:16:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"636f6d70206d61726b6574206973206e6f74206c6973746564","id":19579,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4286:27:34","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_962b660cbcb880f6102dd453b9e05ad769208d8fab60a49ef9470833083768b4","typeString":"literal_string \"comp market is not listed\""},"value":"comp market is not listed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_962b660cbcb880f6102dd453b9e05ad769208d8fab60a49ef9470833083768b4","typeString":"literal_string \"comp market is not listed\""}],"id":19575,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"4260:7:34","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":19580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4260:54:34","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19581,"nodeType":"ExpressionStatement","src":"4260:54:34"},{"assignments":[19583],"declarations":[{"constant":false,"id":19583,"name":"distributorAdded","nodeType":"VariableDeclaration","scope":19625,"src":"4367:21:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":19582,"name":"bool","nodeType":"ElementaryTypeName","src":"4367:4:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"id":19585,"initialValue":{"argumentTypes":null,"hexValue":"66616c7365","id":19584,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4391:5:34","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"nodeType":"VariableDeclarationStatement","src":"4367:29:34"},{"assignments":[19589],"declarations":[{"constant":false,"id":19589,"name":"distributors","nodeType":"VariableDeclaration","scope":19625,"src":"4406:29:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":19587,"name":"address","nodeType":"ElementaryTypeName","src":"4406:7:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":19588,"length":null,"nodeType":"ArrayTypeName","src":"4406:9:34","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"value":null,"visibility":"internal"}],"id":19593,"initialValue":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":19590,"name":"comptroller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19557,"src":"4438:11:34","typeDescriptions":{"typeIdentifier":"t_contract$_Comptroller_$10531","typeString":"contract Comptroller"}},"id":19591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getRewardsDistributors","nodeType":"MemberAccess","referencedDeclaration":10450,"src":"4438:34:34","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function () view external returns (address[] memory)"}},"id":19592,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4438:36:34","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"VariableDeclarationStatement","src":"4406:68:34"},{"body":{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":19611,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":19605,"name":"distributors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19589,"src":"4538:12:34","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":19607,"indexExpression":{"argumentTypes":null,"id":19606,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19595,"src":"4551:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4538:15:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":19609,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22650,"src":"4565:4:34","typeDescriptions":{"typeIdentifier":"t_contract$_RewardsDistributorDelegate_$20921","typeString":"contract RewardsDistributorDelegate"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_RewardsDistributorDelegate_$20921","typeString":"contract RewardsDistributorDelegate"}],"id":19608,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4557:7:34","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":19610,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4557:13:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4538:32:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":19616,"nodeType":"IfStatement","src":"4534:61:34","trueBody":{"expression":{"argumentTypes":null,"id":19614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":19612,"name":"distributorAdded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19583,"src":"4572:16:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"hexValue":"74727565","id":19613,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4591:4:34","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"4572:23:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":19615,"nodeType":"ExpressionStatement","src":"4572:23:34"}},"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19601,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":19598,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19595,"src":"4504:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":19599,"name":"distributors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19589,"src":"4508:12:34","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":19600,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"4508:19:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4504:23:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":19617,"initializationExpression":{"assignments":[19595],"declarations":[{"constant":false,"id":19595,"name":"i","nodeType":"VariableDeclaration","scope":19617,"src":"4489:9:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19594,"name":"uint256","nodeType":"ElementaryTypeName","src":"4489:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":19597,"initialValue":{"argumentTypes":null,"hexValue":"30","id":19596,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4501:1:34","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"4489:13:34"},"loopExpression":{"expression":{"argumentTypes":null,"id":19603,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"4529:3:34","subExpression":{"argumentTypes":null,"id":19602,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19595,"src":"4529:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19604,"nodeType":"ExpressionStatement","src":"4529:3:34"},"nodeType":"ForStatement","src":"4484:111:34"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":19621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":19619,"name":"distributorAdded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19583,"src":"4614:16:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"74727565","id":19620,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4634:4:34","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"4614:24:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"6469737472696275746f72206e6f74206164646564","id":19622,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4640:23:34","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_24dca4079b18f25561bf733403c111965e7f275447adf506b3decd05821e5426","typeString":"literal_string \"distributor not added\""},"value":"distributor not added"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_24dca4079b18f25561bf733403c111965e7f275447adf506b3decd05821e5426","typeString":"literal_string \"distributor not added\""}],"id":19618,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"4606:7:34","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":19623,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4606:58:34","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19624,"nodeType":"ExpressionStatement","src":"4606:58:34"}]},"documentation":"@notice Check the cToken before adding\n@param cToken The market to add","id":19626,"implemented":true,"kind":"function","modifiers":[],"name":"checkCToken","nodeType":"FunctionDefinition","parameters":{"id":19554,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19553,"name":"cToken","nodeType":"VariableDeclaration","scope":19626,"src":"4039:13:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},"typeName":{"contractScope":null,"id":19552,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"4039:6:34","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"value":null,"visibility":"internal"}],"src":"4038:15:34"},"returnParameters":{"id":19555,"nodeType":"ParameterList","parameters":[],"src":"4068:0:34"},"scope":20921,"src":"4018:653:34","stateMutability":"view","superFunction":null,"visibility":"internal"},{"body":{"id":19734,"nodeType":"Block","src":"4928:1343:34","statements":[{"assignments":[19634],"declarations":[{"constant":false,"id":19634,"name":"currentCompSpeed","nodeType":"VariableDeclaration","scope":19734,"src":"4938:21:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19633,"name":"uint","nodeType":"ElementaryTypeName","src":"4938:4:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":19640,"initialValue":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":19635,"name":"compSupplySpeeds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21058,"src":"4962:16:34","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":19639,"indexExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":19637,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19628,"src":"4987:6:34","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":19636,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4979:7:34","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":19638,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4979:15:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4962:33:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4938:57:34"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19643,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":19641,"name":"currentCompSpeed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19634,"src":"5009:16:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"hexValue":"30","id":19642,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5029:1:34","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5009:21:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19653,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":19651,"name":"compSpeed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19630,"src":"5198:9:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"hexValue":"30","id":19652,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5211:1:34","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5198:14:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":19714,"nodeType":"IfStatement","src":"5194:896:34","trueBody":{"id":19713,"nodeType":"Block","src":"5214:876:34","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":19655,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19628,"src":"5307:6:34","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":19654,"name":"checkCToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19626,"src":"5295:11:34","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_CToken_$6186_$returns$__$","typeString":"function (contract CToken) view"}},"id":19656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5295:19:34","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19657,"nodeType":"ExpressionStatement","src":"5295:19:34"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint224","typeString":"uint224"},"id":19665,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":19658,"name":"compSupplyState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21066,"src":"5368:15:34","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_CompMarketState_$21051_storage_$","typeString":"mapping(address => struct RewardsDistributorDelegateStorageV1.CompMarketState storage ref)"}},"id":19662,"indexExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":19660,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19628,"src":"5392:6:34","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":19659,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5384:7:34","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":19661,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5384:15:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5368:32:34","typeDescriptions":{"typeIdentifier":"t_struct$_CompMarketState_$21051_storage","typeString":"struct RewardsDistributorDelegateStorageV1.CompMarketState storage ref"}},"id":19663,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"index","nodeType":"MemberAccess","referencedDeclaration":21048,"src":"5368:38:34","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":19664,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5410:1:34","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5368:43:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":19711,"nodeType":"Block","src":"5847:233:34","statements":[{"expression":{"argumentTypes":null,"id":19709,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":19698,"name":"compSupplyState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21066,"src":"5968:15:34","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_CompMarketState_$21051_storage_$","typeString":"mapping(address => struct RewardsDistributorDelegateStorageV1.CompMarketState storage ref)"}},"id":19702,"indexExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":19700,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19628,"src":"5992:6:34","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":19699,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5984:7:34","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":19701,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5984:15:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5968:32:34","typeDescriptions":{"typeIdentifier":"t_struct$_CompMarketState_$21051_storage","typeString":"struct RewardsDistributorDelegateStorageV1.CompMarketState storage ref"}},"id":19703,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"block","nodeType":"MemberAccess","referencedDeclaration":21050,"src":"5968:38:34","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":19705,"name":"getBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20911,"src":"6016:14:34","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":19706,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6016:16:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"626c6f636b206e756d62657220657863656564732033322062697473","id":19707,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6034:30:34","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_ff90a699fb9d013b04dce39b46a2e2edfd2bcf181b8611876e2c7b99f8929a06","typeString":"literal_string \"block number exceeds 32 bits\""},"value":"block number exceeds 32 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_ff90a699fb9d013b04dce39b46a2e2edfd2bcf181b8611876e2c7b99f8929a06","typeString":"literal_string \"block number exceeds 32 bits\""}],"id":19704,"name":"safe32","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14560,"src":"6009:6:34","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint32_$","typeString":"function (uint256,string memory) pure returns (uint32)"}},"id":19708,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6009:56:34","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"5968:97:34","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":19710,"nodeType":"ExpressionStatement","src":"5968:97:34"}]},"id":19712,"nodeType":"IfStatement","src":"5364:716:34","trueBody":{"id":19697,"nodeType":"Block","src":"5413:428:34","statements":[{"expression":{"argumentTypes":null,"id":19679,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":19666,"name":"compSupplyState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21066,"src":"5431:15:34","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_CompMarketState_$21051_storage_$","typeString":"mapping(address => struct RewardsDistributorDelegateStorageV1.CompMarketState storage ref)"}},"id":19670,"indexExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":19668,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19628,"src":"5455:6:34","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":19667,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5447:7:34","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":19669,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5447:15:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5431:32:34","typeDescriptions":{"typeIdentifier":"t_struct$_CompMarketState_$21051_storage","typeString":"struct RewardsDistributorDelegateStorageV1.CompMarketState storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":19672,"name":"compInitialIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19441,"src":"5511:16:34","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":19674,"name":"getBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20911,"src":"5563:14:34","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":19675,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5563:16:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"626c6f636b206e756d62657220657863656564732033322062697473","id":19676,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5581:30:34","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_ff90a699fb9d013b04dce39b46a2e2edfd2bcf181b8611876e2c7b99f8929a06","typeString":"literal_string \"block number exceeds 32 bits\""},"value":"block number exceeds 32 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_ff90a699fb9d013b04dce39b46a2e2edfd2bcf181b8611876e2c7b99f8929a06","typeString":"literal_string \"block number exceeds 32 bits\""}],"id":19673,"name":"safe32","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14560,"src":"5556:6:34","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint32_$","typeString":"function (uint256,string memory) pure returns (uint32)"}},"id":19677,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5556:56:34","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint224","typeString":"uint224"},{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":19671,"name":"CompMarketState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21051,"src":"5466:15:34","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_CompMarketState_$21051_storage_ptr_$","typeString":"type(struct RewardsDistributorDelegateStorageV1.CompMarketState storage pointer)"}},"id":19678,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["index","block"],"nodeType":"FunctionCall","src":"5466:165:34","typeDescriptions":{"typeIdentifier":"t_struct$_CompMarketState_$21051_memory","typeString":"struct RewardsDistributorDelegateStorageV1.CompMarketState memory"}},"src":"5431:200:34","typeDescriptions":{"typeIdentifier":"t_struct$_CompMarketState_$21051_storage","typeString":"struct RewardsDistributorDelegateStorageV1.CompMarketState storage ref"}},"id":19680,"nodeType":"ExpressionStatement","src":"5431:200:34"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint224","typeString":"uint224"},"id":19688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":19681,"name":"compBorrowState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21070,"src":"5718:15:34","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_CompMarketState_$21051_storage_$","typeString":"mapping(address => struct RewardsDistributorDelegateStorageV1.CompMarketState storage ref)"}},"id":19685,"indexExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":19683,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19628,"src":"5742:6:34","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":19682,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5734:7:34","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":19684,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5734:15:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5718:32:34","typeDescriptions":{"typeIdentifier":"t_struct$_CompMarketState_$21051_storage","typeString":"struct RewardsDistributorDelegateStorageV1.CompMarketState storage ref"}},"id":19686,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"index","nodeType":"MemberAccess","referencedDeclaration":21048,"src":"5718:38:34","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":19687,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5760:1:34","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5718:43:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":19696,"nodeType":"IfStatement","src":"5714:113:34","trueBody":{"id":19695,"nodeType":"Block","src":"5763:64:34","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":19692,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19628,"src":"5801:6:34","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"expression":{"argumentTypes":null,"id":19689,"name":"allMarkets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21054,"src":"5785:10:34","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_storage","typeString":"contract CToken[] storage ref"}},"id":19691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"push","nodeType":"MemberAccess","referencedDeclaration":null,"src":"5785:15:34","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_contract$_CToken_$6186_$returns$_t_uint256_$","typeString":"function (contract CToken) returns (uint256)"}},"id":19693,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5785:23:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19694,"nodeType":"ExpressionStatement","src":"5785:23:34"}]}}]}}]}},"id":19715,"nodeType":"IfStatement","src":"5005:1085:34","trueBody":{"id":19650,"nodeType":"Block","src":"5032:156:34","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":19646,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19628,"src":"5169:6:34","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":19645,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5161:7:34","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":19647,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5161:15:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":19644,"name":"updateCompSupplyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19969,"src":"5139:21:34","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":19648,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5139:38:34","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19649,"nodeType":"ExpressionStatement","src":"5139:38:34"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19718,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":19716,"name":"currentCompSpeed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19634,"src":"6104:16:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"id":19717,"name":"compSpeed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19630,"src":"6124:9:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6104:29:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":19733,"nodeType":"IfStatement","src":"6100:165:34","trueBody":{"id":19732,"nodeType":"Block","src":"6135:130:34","statements":[{"expression":{"argumentTypes":null,"id":19725,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":19719,"name":"compSupplySpeeds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21058,"src":"6149:16:34","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":19723,"indexExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":19721,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19628,"src":"6174:6:34","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":19720,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6166:7:34","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":19722,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6166:15:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6149:33:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":19724,"name":"compSpeed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19630,"src":"6185:9:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6149:45:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19726,"nodeType":"ExpressionStatement","src":"6149:45:34"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":19728,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19628,"src":"6236:6:34","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},{"argumentTypes":null,"id":19729,"name":"compSpeed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19630,"src":"6244:9:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":19727,"name":"CompSupplySpeedUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19400,"src":"6213:22:34","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_contract$_CToken_$6186_$_t_uint256_$returns$__$","typeString":"function (contract CToken,uint256)"}},"id":19730,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6213:41:34","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19731,"nodeType":"EmitStatement","src":"6208:46:34"}]}}]},"documentation":"@notice Set COMP speed for a single market\n@param cToken The market whose COMP speed to update\n@param compSpeed New COMP speed for market","id":19735,"implemented":true,"kind":"function","modifiers":[],"name":"setCompSupplySpeedInternal","nodeType":"FunctionDefinition","parameters":{"id":19631,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19628,"name":"cToken","nodeType":"VariableDeclaration","scope":19735,"src":"4888:13:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},"typeName":{"contractScope":null,"id":19627,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"4888:6:34","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"value":null,"visibility":"internal"},{"constant":false,"id":19630,"name":"compSpeed","nodeType":"VariableDeclaration","scope":19735,"src":"4903:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19629,"name":"uint","nodeType":"ElementaryTypeName","src":"4903:4:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"4887:31:34"},"returnParameters":{"id":19632,"nodeType":"ParameterList","parameters":[],"src":"4928:0:34"},"scope":20921,"src":"4852:1419:34","stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},{"body":{"id":19852,"nodeType":"Block","src":"6528:1432:34","statements":[{"assignments":[19743],"declarations":[{"constant":false,"id":19743,"name":"currentCompSpeed","nodeType":"VariableDeclaration","scope":19852,"src":"6538:21:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19742,"name":"uint","nodeType":"ElementaryTypeName","src":"6538:4:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":19749,"initialValue":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":19744,"name":"compBorrowSpeeds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21062,"src":"6562:16:34","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":19748,"indexExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":19746,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19737,"src":"6587:6:34","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":19745,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6579:7:34","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":19747,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6579:15:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6562:33:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6538:57:34"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19752,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":19750,"name":"currentCompSpeed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19743,"src":"6609:16:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"hexValue":"30","id":19751,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6629:1:34","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6609:21:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":19769,"name":"compSpeed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19739,"src":"6887:9:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"hexValue":"30","id":19770,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6900:1:34","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6887:14:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":19832,"nodeType":"IfStatement","src":"6883:896:34","trueBody":{"id":19831,"nodeType":"Block","src":"6903:876:34","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":19773,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19737,"src":"6996:6:34","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":19772,"name":"checkCToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19626,"src":"6984:11:34","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_CToken_$6186_$returns$__$","typeString":"function (contract CToken) view"}},"id":19774,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6984:19:34","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19775,"nodeType":"ExpressionStatement","src":"6984:19:34"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint224","typeString":"uint224"},"id":19783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":19776,"name":"compBorrowState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21070,"src":"7057:15:34","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_CompMarketState_$21051_storage_$","typeString":"mapping(address => struct RewardsDistributorDelegateStorageV1.CompMarketState storage ref)"}},"id":19780,"indexExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":19778,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19737,"src":"7081:6:34","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":19777,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7073:7:34","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":19779,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7073:15:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7057:32:34","typeDescriptions":{"typeIdentifier":"t_struct$_CompMarketState_$21051_storage","typeString":"struct RewardsDistributorDelegateStorageV1.CompMarketState storage ref"}},"id":19781,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"index","nodeType":"MemberAccess","referencedDeclaration":21048,"src":"7057:38:34","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":19782,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7099:1:34","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7057:43:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":19829,"nodeType":"Block","src":"7536:233:34","statements":[{"expression":{"argumentTypes":null,"id":19827,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":19816,"name":"compBorrowState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21070,"src":"7657:15:34","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_CompMarketState_$21051_storage_$","typeString":"mapping(address => struct RewardsDistributorDelegateStorageV1.CompMarketState storage ref)"}},"id":19820,"indexExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":19818,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19737,"src":"7681:6:34","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":19817,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7673:7:34","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":19819,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7673:15:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7657:32:34","typeDescriptions":{"typeIdentifier":"t_struct$_CompMarketState_$21051_storage","typeString":"struct RewardsDistributorDelegateStorageV1.CompMarketState storage ref"}},"id":19821,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"block","nodeType":"MemberAccess","referencedDeclaration":21050,"src":"7657:38:34","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":19823,"name":"getBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20911,"src":"7705:14:34","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":19824,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7705:16:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"626c6f636b206e756d62657220657863656564732033322062697473","id":19825,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7723:30:34","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_ff90a699fb9d013b04dce39b46a2e2edfd2bcf181b8611876e2c7b99f8929a06","typeString":"literal_string \"block number exceeds 32 bits\""},"value":"block number exceeds 32 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_ff90a699fb9d013b04dce39b46a2e2edfd2bcf181b8611876e2c7b99f8929a06","typeString":"literal_string \"block number exceeds 32 bits\""}],"id":19822,"name":"safe32","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14560,"src":"7698:6:34","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint32_$","typeString":"function (uint256,string memory) pure returns (uint32)"}},"id":19826,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7698:56:34","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"7657:97:34","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":19828,"nodeType":"ExpressionStatement","src":"7657:97:34"}]},"id":19830,"nodeType":"IfStatement","src":"7053:716:34","trueBody":{"id":19815,"nodeType":"Block","src":"7102:428:34","statements":[{"expression":{"argumentTypes":null,"id":19797,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":19784,"name":"compBorrowState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21070,"src":"7120:15:34","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_CompMarketState_$21051_storage_$","typeString":"mapping(address => struct RewardsDistributorDelegateStorageV1.CompMarketState storage ref)"}},"id":19788,"indexExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":19786,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19737,"src":"7144:6:34","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":19785,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7136:7:34","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":19787,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7136:15:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7120:32:34","typeDescriptions":{"typeIdentifier":"t_struct$_CompMarketState_$21051_storage","typeString":"struct RewardsDistributorDelegateStorageV1.CompMarketState storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":19790,"name":"compInitialIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19441,"src":"7200:16:34","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":19792,"name":"getBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20911,"src":"7252:14:34","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":19793,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7252:16:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"626c6f636b206e756d62657220657863656564732033322062697473","id":19794,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7270:30:34","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_ff90a699fb9d013b04dce39b46a2e2edfd2bcf181b8611876e2c7b99f8929a06","typeString":"literal_string \"block number exceeds 32 bits\""},"value":"block number exceeds 32 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_ff90a699fb9d013b04dce39b46a2e2edfd2bcf181b8611876e2c7b99f8929a06","typeString":"literal_string \"block number exceeds 32 bits\""}],"id":19791,"name":"safe32","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14560,"src":"7245:6:34","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint32_$","typeString":"function (uint256,string memory) pure returns (uint32)"}},"id":19795,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7245:56:34","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint224","typeString":"uint224"},{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":19789,"name":"CompMarketState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21051,"src":"7155:15:34","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_CompMarketState_$21051_storage_ptr_$","typeString":"type(struct RewardsDistributorDelegateStorageV1.CompMarketState storage pointer)"}},"id":19796,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["index","block"],"nodeType":"FunctionCall","src":"7155:165:34","typeDescriptions":{"typeIdentifier":"t_struct$_CompMarketState_$21051_memory","typeString":"struct RewardsDistributorDelegateStorageV1.CompMarketState memory"}},"src":"7120:200:34","typeDescriptions":{"typeIdentifier":"t_struct$_CompMarketState_$21051_storage","typeString":"struct RewardsDistributorDelegateStorageV1.CompMarketState storage ref"}},"id":19798,"nodeType":"ExpressionStatement","src":"7120:200:34"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint224","typeString":"uint224"},"id":19806,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":19799,"name":"compSupplyState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21066,"src":"7407:15:34","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_CompMarketState_$21051_storage_$","typeString":"mapping(address => struct RewardsDistributorDelegateStorageV1.CompMarketState storage ref)"}},"id":19803,"indexExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":19801,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19737,"src":"7431:6:34","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":19800,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7423:7:34","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":19802,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7423:15:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7407:32:34","typeDescriptions":{"typeIdentifier":"t_struct$_CompMarketState_$21051_storage","typeString":"struct RewardsDistributorDelegateStorageV1.CompMarketState storage ref"}},"id":19804,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"index","nodeType":"MemberAccess","referencedDeclaration":21048,"src":"7407:38:34","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":19805,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7449:1:34","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7407:43:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":19814,"nodeType":"IfStatement","src":"7403:113:34","trueBody":{"id":19813,"nodeType":"Block","src":"7452:64:34","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":19810,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19737,"src":"7490:6:34","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"expression":{"argumentTypes":null,"id":19807,"name":"allMarkets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21054,"src":"7474:10:34","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_storage","typeString":"contract CToken[] storage ref"}},"id":19809,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"push","nodeType":"MemberAccess","referencedDeclaration":null,"src":"7474:15:34","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_contract$_CToken_$6186_$returns$_t_uint256_$","typeString":"function (contract CToken) returns (uint256)"}},"id":19811,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7474:23:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19812,"nodeType":"ExpressionStatement","src":"7474:23:34"}]}}]}}]}},"id":19833,"nodeType":"IfStatement","src":"6605:1174:34","trueBody":{"id":19768,"nodeType":"Block","src":"6632:245:34","statements":[{"assignments":[19754],"declarations":[{"constant":false,"id":19754,"name":"borrowIndex","nodeType":"VariableDeclaration","scope":19768,"src":"6739:22:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":19753,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"6739:3:34","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"}],"id":19760,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":19756,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19737,"src":"6779:6:34","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":19757,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"borrowIndex","nodeType":"MemberAccess","referencedDeclaration":6238,"src":"6779:18:34","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":19758,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6779:20:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":19755,"name":"Exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14390,"src":"6764:3:34","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Exp_$14390_storage_ptr_$","typeString":"type(struct ExponentialNoError.Exp storage pointer)"}},"id":19759,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"6764:37:34","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}},"nodeType":"VariableDeclarationStatement","src":"6739:62:34"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":19763,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19737,"src":"6845:6:34","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":19762,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6837:7:34","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":19764,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6837:15:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":19765,"name":"borrowIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19754,"src":"6854:11:34","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}],"id":19761,"name":"updateCompBorrowIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20090,"src":"6815:21:34","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_struct$_Exp_$14390_memory_ptr_$returns$__$","typeString":"function (address,struct ExponentialNoError.Exp memory)"}},"id":19766,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6815:51:34","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19767,"nodeType":"ExpressionStatement","src":"6815:51:34"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":19834,"name":"currentCompSpeed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19743,"src":"7793:16:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"id":19835,"name":"compSpeed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19739,"src":"7813:9:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7793:29:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":19851,"nodeType":"IfStatement","src":"7789:165:34","trueBody":{"id":19850,"nodeType":"Block","src":"7824:130:34","statements":[{"expression":{"argumentTypes":null,"id":19843,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":19837,"name":"compBorrowSpeeds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21062,"src":"7838:16:34","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":19841,"indexExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":19839,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19737,"src":"7863:6:34","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":19838,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7855:7:34","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":19840,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7855:15:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7838:33:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":19842,"name":"compSpeed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19739,"src":"7874:9:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7838:45:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19844,"nodeType":"ExpressionStatement","src":"7838:45:34"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":19846,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19737,"src":"7925:6:34","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},{"argumentTypes":null,"id":19847,"name":"compSpeed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19739,"src":"7933:9:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":19845,"name":"CompBorrowSpeedUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19406,"src":"7902:22:34","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_contract$_CToken_$6186_$_t_uint256_$returns$__$","typeString":"function (contract CToken,uint256)"}},"id":19848,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7902:41:34","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19849,"nodeType":"EmitStatement","src":"7897:46:34"}]}}]},"documentation":"@notice Set COMP speed for a single market\n@param cToken The market whose COMP speed to update\n@param compSpeed New COMP speed for market","id":19853,"implemented":true,"kind":"function","modifiers":[],"name":"setCompBorrowSpeedInternal","nodeType":"FunctionDefinition","parameters":{"id":19740,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19737,"name":"cToken","nodeType":"VariableDeclaration","scope":19853,"src":"6488:13:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},"typeName":{"contractScope":null,"id":19736,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"6488:6:34","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"value":null,"visibility":"internal"},{"constant":false,"id":19739,"name":"compSpeed","nodeType":"VariableDeclaration","scope":19853,"src":"6503:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19738,"name":"uint","nodeType":"ElementaryTypeName","src":"6503:4:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"6487:31:34"},"returnParameters":{"id":19741,"nodeType":"ParameterList","parameters":[],"src":"6528:0:34"},"scope":20921,"src":"6452:1508:34","stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},{"body":{"id":19968,"nodeType":"Block","src":"8169:1007:34","statements":[{"assignments":[19859],"declarations":[{"constant":false,"id":19859,"name":"supplyState","nodeType":"VariableDeclaration","scope":19968,"src":"8179:35:34","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_CompMarketState_$21051_storage_ptr","typeString":"struct RewardsDistributorDelegateStorageV1.CompMarketState"},"typeName":{"contractScope":null,"id":19858,"name":"CompMarketState","nodeType":"UserDefinedTypeName","referencedDeclaration":21051,"src":"8179:15:34","typeDescriptions":{"typeIdentifier":"t_struct$_CompMarketState_$21051_storage_ptr","typeString":"struct RewardsDistributorDelegateStorageV1.CompMarketState"}},"value":null,"visibility":"internal"}],"id":19863,"initialValue":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":19860,"name":"compSupplyState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21066,"src":"8217:15:34","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_CompMarketState_$21051_storage_$","typeString":"mapping(address => struct RewardsDistributorDelegateStorageV1.CompMarketState storage ref)"}},"id":19862,"indexExpression":{"argumentTypes":null,"id":19861,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19855,"src":"8233:6:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8217:23:34","typeDescriptions":{"typeIdentifier":"t_struct$_CompMarketState_$21051_storage","typeString":"struct RewardsDistributorDelegateStorageV1.CompMarketState storage ref"}},"nodeType":"VariableDeclarationStatement","src":"8179:61:34"},{"assignments":[19865],"declarations":[{"constant":false,"id":19865,"name":"supplySpeed","nodeType":"VariableDeclaration","scope":19968,"src":"8250:16:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19864,"name":"uint","nodeType":"ElementaryTypeName","src":"8250:4:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":19869,"initialValue":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":19866,"name":"compSupplySpeeds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21058,"src":"8269:16:34","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":19868,"indexExpression":{"argumentTypes":null,"id":19867,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19855,"src":"8286:6:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8269:24:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8250:43:34"},{"assignments":[19871],"declarations":[{"constant":false,"id":19871,"name":"blockNumber","nodeType":"VariableDeclaration","scope":19968,"src":"8303:16:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19870,"name":"uint","nodeType":"ElementaryTypeName","src":"8303:4:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":19874,"initialValue":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":19872,"name":"getBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20911,"src":"8322:14:34","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":19873,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8322:16:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8303:35:34"},{"assignments":[19876],"declarations":[{"constant":false,"id":19876,"name":"deltaBlocks","nodeType":"VariableDeclaration","scope":19968,"src":"8348:16:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19875,"name":"uint","nodeType":"ElementaryTypeName","src":"8348:4:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":19884,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":19878,"name":"blockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19871,"src":"8372:11:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":19880,"name":"supplyState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19859,"src":"8390:11:34","typeDescriptions":{"typeIdentifier":"t_struct$_CompMarketState_$21051_storage_ptr","typeString":"struct RewardsDistributorDelegateStorageV1.CompMarketState storage pointer"}},"id":19881,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"block","nodeType":"MemberAccess","referencedDeclaration":21050,"src":"8390:17:34","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":19879,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8385:4:34","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":19882,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8385:23:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":19877,"name":"sub_","nodeType":"Identifier","overloadedDeclarations":[14660,14679,14695,14718],"referencedDeclaration":14695,"src":"8367:4:34","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":19883,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8367:42:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8348:61:34"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":19891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":19885,"name":"deltaBlocks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19876,"src":"8423:11:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"30","id":19886,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8437:1:34","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8423:15:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19890,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":19888,"name":"supplySpeed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19865,"src":"8442:11:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"30","id":19889,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8456:1:34","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8442:15:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"8423:34:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":19955,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19950,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":19948,"name":"deltaBlocks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19876,"src":"9032:11:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"30","id":19949,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9046:1:34","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9032:15:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint224","typeString":"uint224"},"id":19954,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":19951,"name":"supplyState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19859,"src":"9051:11:34","typeDescriptions":{"typeIdentifier":"t_struct$_CompMarketState_$21051_storage_ptr","typeString":"struct RewardsDistributorDelegateStorageV1.CompMarketState storage pointer"}},"id":19952,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"index","nodeType":"MemberAccess","referencedDeclaration":21048,"src":"9051:17:34","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"30","id":19953,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9071:1:34","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9051:21:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"9032:40:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":19966,"nodeType":"IfStatement","src":"9028:142:34","trueBody":{"id":19965,"nodeType":"Block","src":"9074:96:34","statements":[{"expression":{"argumentTypes":null,"id":19963,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":19956,"name":"supplyState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19859,"src":"9088:11:34","typeDescriptions":{"typeIdentifier":"t_struct$_CompMarketState_$21051_storage_ptr","typeString":"struct RewardsDistributorDelegateStorageV1.CompMarketState storage pointer"}},"id":19958,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"block","nodeType":"MemberAccess","referencedDeclaration":21050,"src":"9088:17:34","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":19960,"name":"blockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19871,"src":"9115:11:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"626c6f636b206e756d62657220657863656564732033322062697473","id":19961,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9128:30:34","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_ff90a699fb9d013b04dce39b46a2e2edfd2bcf181b8611876e2c7b99f8929a06","typeString":"literal_string \"block number exceeds 32 bits\""},"value":"block number exceeds 32 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_ff90a699fb9d013b04dce39b46a2e2edfd2bcf181b8611876e2c7b99f8929a06","typeString":"literal_string \"block number exceeds 32 bits\""}],"id":19959,"name":"safe32","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14560,"src":"9108:6:34","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint32_$","typeString":"function (uint256,string memory) pure returns (uint32)"}},"id":19962,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9108:51:34","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"9088:71:34","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":19964,"nodeType":"ExpressionStatement","src":"9088:71:34"}]}},"id":19967,"nodeType":"IfStatement","src":"8419:751:34","trueBody":{"id":19947,"nodeType":"Block","src":"8459:563:34","statements":[{"assignments":[19893],"declarations":[{"constant":false,"id":19893,"name":"supplyTokens","nodeType":"VariableDeclaration","scope":19947,"src":"8473:17:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19892,"name":"uint","nodeType":"ElementaryTypeName","src":"8473:4:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":19899,"initialValue":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":19895,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19855,"src":"8500:6:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":19894,"name":"CToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6186,"src":"8493:6:34","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CToken_$6186_$","typeString":"type(contract CToken)"}},"id":19896,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8493:14:34","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":19897,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"totalSupply","nodeType":"MemberAccess","referencedDeclaration":6248,"src":"8493:26:34","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":19898,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8493:28:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8473:48:34"},{"assignments":[19901],"declarations":[{"constant":false,"id":19901,"name":"compAccrued_","nodeType":"VariableDeclaration","scope":19947,"src":"8535:17:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19900,"name":"uint","nodeType":"ElementaryTypeName","src":"8535:4:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":19906,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":19903,"name":"deltaBlocks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19876,"src":"8560:11:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":19904,"name":"supplySpeed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19865,"src":"8573:11:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":19902,"name":"mul_","nodeType":"Identifier","overloadedDeclarations":[14739,14757,14775,14796,14814,14832,14848,14888],"referencedDeclaration":14848,"src":"8555:4:34","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":19905,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8555:30:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8535:50:34"},{"assignments":[19908],"declarations":[{"constant":false,"id":19908,"name":"ratio","nodeType":"VariableDeclaration","scope":19947,"src":"8599:19:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double"},"typeName":{"contractScope":null,"id":19907,"name":"Double","nodeType":"UserDefinedTypeName","referencedDeclaration":14393,"src":"8599:6:34","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_storage_ptr","typeString":"struct ExponentialNoError.Double"}},"value":null,"visibility":"internal"}],"id":19920,"initialValue":{"argumentTypes":null,"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":19909,"name":"supplyTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19893,"src":"8621:12:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"30","id":19910,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8636:1:34","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8621:16:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":19917,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8697:1:34","subdenomination":null,"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":19916,"name":"Double","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14393,"src":"8679:6:34","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Double_$14393_storage_ptr_$","typeString":"type(struct ExponentialNoError.Double storage pointer)"}},"id":19918,"isConstant":false,"isLValue":false,"isPure":true,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"8679:21:34","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory","typeString":"struct ExponentialNoError.Double memory"}},"id":19919,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"8621:79:34","trueExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":19913,"name":"compAccrued_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19901,"src":"8649:12:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":19914,"name":"supplyTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19893,"src":"8663:12:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":19912,"name":"fraction","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15065,"src":"8640:8:34","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_struct$_Double_$14393_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (struct ExponentialNoError.Double memory)"}},"id":19915,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8640:36:34","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double memory"}},"typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double memory"}},"nodeType":"VariableDeclarationStatement","src":"8599:101:34"},{"assignments":[19922],"declarations":[{"constant":false,"id":19922,"name":"index","nodeType":"VariableDeclaration","scope":19947,"src":"8714:19:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double"},"typeName":{"contractScope":null,"id":19921,"name":"Double","nodeType":"UserDefinedTypeName","referencedDeclaration":14393,"src":"8714:6:34","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_storage_ptr","typeString":"struct ExponentialNoError.Double"}},"value":null,"visibility":"internal"}],"id":19930,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":19925,"name":"supplyState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19859,"src":"8759:11:34","typeDescriptions":{"typeIdentifier":"t_struct$_CompMarketState_$21051_storage_ptr","typeString":"struct RewardsDistributorDelegateStorageV1.CompMarketState storage pointer"}},"id":19926,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"index","nodeType":"MemberAccess","referencedDeclaration":21048,"src":"8759:17:34","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint224","typeString":"uint224"}],"id":19924,"name":"Double","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14393,"src":"8741:6:34","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Double_$14393_storage_ptr_$","typeString":"type(struct ExponentialNoError.Double storage pointer)"}},"id":19927,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"8741:37:34","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory","typeString":"struct ExponentialNoError.Double memory"}},{"argumentTypes":null,"id":19928,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19908,"src":"8780:5:34","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Double_$14393_memory","typeString":"struct ExponentialNoError.Double memory"},{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double memory"}],"id":19923,"name":"add_","nodeType":"Identifier","overloadedDeclarations":[14579,14598,14614,14641],"referencedDeclaration":14598,"src":"8736:4:34","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Double_$14393_memory_ptr_$_t_struct$_Double_$14393_memory_ptr_$returns$_t_struct$_Double_$14393_memory_ptr_$","typeString":"function (struct ExponentialNoError.Double memory,struct ExponentialNoError.Double memory) pure returns (struct ExponentialNoError.Double memory)"}},"id":19929,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8736:50:34","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double memory"}},"nodeType":"VariableDeclarationStatement","src":"8714:72:34"},{"expression":{"argumentTypes":null,"id":19945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":19931,"name":"compSupplyState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21066,"src":"8800:15:34","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_CompMarketState_$21051_storage_$","typeString":"mapping(address => struct RewardsDistributorDelegateStorageV1.CompMarketState storage ref)"}},"id":19933,"indexExpression":{"argumentTypes":null,"id":19932,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19855,"src":"8816:6:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8800:23:34","typeDescriptions":{"typeIdentifier":"t_struct$_CompMarketState_$21051_storage","typeString":"struct RewardsDistributorDelegateStorageV1.CompMarketState storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":19936,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19922,"src":"8875:5:34","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double memory"}},"id":19937,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mantissa","nodeType":"MemberAccess","referencedDeclaration":14392,"src":"8875:14:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"6e657720696e6465782065786365656473203232342062697473","id":19938,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8891:28:34","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_efd912b0a596e6cfa5000021474b053b5acc660c9390ed127f3bb8b2308059db","typeString":"literal_string \"new index exceeds 224 bits\""},"value":"new index exceeds 224 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_efd912b0a596e6cfa5000021474b053b5acc660c9390ed127f3bb8b2308059db","typeString":"literal_string \"new index exceeds 224 bits\""}],"id":19935,"name":"safe224","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14537,"src":"8867:7:34","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint224_$","typeString":"function (uint256,string memory) pure returns (uint224)"}},"id":19939,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8867:53:34","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":19941,"name":"blockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19871,"src":"8952:11:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"626c6f636b206e756d62657220657863656564732033322062697473","id":19942,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8965:30:34","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_ff90a699fb9d013b04dce39b46a2e2edfd2bcf181b8611876e2c7b99f8929a06","typeString":"literal_string \"block number exceeds 32 bits\""},"value":"block number exceeds 32 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_ff90a699fb9d013b04dce39b46a2e2edfd2bcf181b8611876e2c7b99f8929a06","typeString":"literal_string \"block number exceeds 32 bits\""}],"id":19940,"name":"safe32","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14560,"src":"8945:6:34","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint32_$","typeString":"function (uint256,string memory) pure returns (uint32)"}},"id":19943,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8945:51:34","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint224","typeString":"uint224"},{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":19934,"name":"CompMarketState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21051,"src":"8826:15:34","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_CompMarketState_$21051_storage_ptr_$","typeString":"type(struct RewardsDistributorDelegateStorageV1.CompMarketState storage pointer)"}},"id":19944,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["index","block"],"nodeType":"FunctionCall","src":"8826:185:34","typeDescriptions":{"typeIdentifier":"t_struct$_CompMarketState_$21051_memory","typeString":"struct RewardsDistributorDelegateStorageV1.CompMarketState memory"}},"src":"8800:211:34","typeDescriptions":{"typeIdentifier":"t_struct$_CompMarketState_$21051_storage","typeString":"struct RewardsDistributorDelegateStorageV1.CompMarketState storage ref"}},"id":19946,"nodeType":"ExpressionStatement","src":"8800:211:34"}]}}]},"documentation":"@notice Accrue COMP to the market by updating the supply index\n@param cToken The market whose supply index to update","id":19969,"implemented":true,"kind":"function","modifiers":[],"name":"updateCompSupplyIndex","nodeType":"FunctionDefinition","parameters":{"id":19856,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19855,"name":"cToken","nodeType":"VariableDeclaration","scope":19969,"src":"8144:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19854,"name":"address","nodeType":"ElementaryTypeName","src":"8144:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"8143:16:34"},"returnParameters":{"id":19857,"nodeType":"ParameterList","parameters":[],"src":"8169:0:34"},"scope":20921,"src":"8113:1063:34","stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},{"body":{"id":20089,"nodeType":"Block","src":"9415:1033:34","statements":[{"assignments":[19977],"declarations":[{"constant":false,"id":19977,"name":"borrowState","nodeType":"VariableDeclaration","scope":20089,"src":"9425:35:34","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_CompMarketState_$21051_storage_ptr","typeString":"struct RewardsDistributorDelegateStorageV1.CompMarketState"},"typeName":{"contractScope":null,"id":19976,"name":"CompMarketState","nodeType":"UserDefinedTypeName","referencedDeclaration":21051,"src":"9425:15:34","typeDescriptions":{"typeIdentifier":"t_struct$_CompMarketState_$21051_storage_ptr","typeString":"struct RewardsDistributorDelegateStorageV1.CompMarketState"}},"value":null,"visibility":"internal"}],"id":19981,"initialValue":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":19978,"name":"compBorrowState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21070,"src":"9463:15:34","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_CompMarketState_$21051_storage_$","typeString":"mapping(address => struct RewardsDistributorDelegateStorageV1.CompMarketState storage ref)"}},"id":19980,"indexExpression":{"argumentTypes":null,"id":19979,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19971,"src":"9479:6:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9463:23:34","typeDescriptions":{"typeIdentifier":"t_struct$_CompMarketState_$21051_storage","typeString":"struct RewardsDistributorDelegateStorageV1.CompMarketState storage ref"}},"nodeType":"VariableDeclarationStatement","src":"9425:61:34"},{"assignments":[19983],"declarations":[{"constant":false,"id":19983,"name":"borrowSpeed","nodeType":"VariableDeclaration","scope":20089,"src":"9496:16:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19982,"name":"uint","nodeType":"ElementaryTypeName","src":"9496:4:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":19987,"initialValue":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":19984,"name":"compBorrowSpeeds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21062,"src":"9515:16:34","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":19986,"indexExpression":{"argumentTypes":null,"id":19985,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19971,"src":"9532:6:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9515:24:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9496:43:34"},{"assignments":[19989],"declarations":[{"constant":false,"id":19989,"name":"blockNumber","nodeType":"VariableDeclaration","scope":20089,"src":"9549:16:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19988,"name":"uint","nodeType":"ElementaryTypeName","src":"9549:4:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":19992,"initialValue":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":19990,"name":"getBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20911,"src":"9568:14:34","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":19991,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9568:16:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9549:35:34"},{"assignments":[19994],"declarations":[{"constant":false,"id":19994,"name":"deltaBlocks","nodeType":"VariableDeclaration","scope":20089,"src":"9594:16:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19993,"name":"uint","nodeType":"ElementaryTypeName","src":"9594:4:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":20002,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":19996,"name":"blockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19989,"src":"9618:11:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":19998,"name":"borrowState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19977,"src":"9636:11:34","typeDescriptions":{"typeIdentifier":"t_struct$_CompMarketState_$21051_storage_ptr","typeString":"struct RewardsDistributorDelegateStorageV1.CompMarketState storage pointer"}},"id":19999,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"block","nodeType":"MemberAccess","referencedDeclaration":21050,"src":"9636:17:34","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":19997,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9631:4:34","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":20000,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9631:23:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":19995,"name":"sub_","nodeType":"Identifier","overloadedDeclarations":[14660,14679,14695,14718],"referencedDeclaration":14695,"src":"9613:4:34","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":20001,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9613:42:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9594:61:34"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":20009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":20003,"name":"deltaBlocks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19994,"src":"9669:11:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"30","id":20004,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9683:1:34","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9669:15:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":20006,"name":"borrowSpeed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19983,"src":"9688:11:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"30","id":20007,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9702:1:34","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9688:15:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"9669:34:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":20076,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20071,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":20069,"name":"deltaBlocks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19994,"src":"10304:11:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"30","id":20070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10318:1:34","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10304:15:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint224","typeString":"uint224"},"id":20075,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":20072,"name":"borrowState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19977,"src":"10323:11:34","typeDescriptions":{"typeIdentifier":"t_struct$_CompMarketState_$21051_storage_ptr","typeString":"struct RewardsDistributorDelegateStorageV1.CompMarketState storage pointer"}},"id":20073,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"index","nodeType":"MemberAccess","referencedDeclaration":21048,"src":"10323:17:34","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"30","id":20074,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10343:1:34","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10323:21:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"10304:40:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":20087,"nodeType":"IfStatement","src":"10300:142:34","trueBody":{"id":20086,"nodeType":"Block","src":"10346:96:34","statements":[{"expression":{"argumentTypes":null,"id":20084,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":20077,"name":"borrowState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19977,"src":"10360:11:34","typeDescriptions":{"typeIdentifier":"t_struct$_CompMarketState_$21051_storage_ptr","typeString":"struct RewardsDistributorDelegateStorageV1.CompMarketState storage pointer"}},"id":20079,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"block","nodeType":"MemberAccess","referencedDeclaration":21050,"src":"10360:17:34","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":20081,"name":"blockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19989,"src":"10387:11:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"626c6f636b206e756d62657220657863656564732033322062697473","id":20082,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10400:30:34","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_ff90a699fb9d013b04dce39b46a2e2edfd2bcf181b8611876e2c7b99f8929a06","typeString":"literal_string \"block number exceeds 32 bits\""},"value":"block number exceeds 32 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_ff90a699fb9d013b04dce39b46a2e2edfd2bcf181b8611876e2c7b99f8929a06","typeString":"literal_string \"block number exceeds 32 bits\""}],"id":20080,"name":"safe32","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14560,"src":"10380:6:34","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint32_$","typeString":"function (uint256,string memory) pure returns (uint32)"}},"id":20083,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10380:51:34","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"10360:71:34","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":20085,"nodeType":"ExpressionStatement","src":"10360:71:34"}]}},"id":20088,"nodeType":"IfStatement","src":"9665:777:34","trueBody":{"id":20068,"nodeType":"Block","src":"9705:589:34","statements":[{"assignments":[20011],"declarations":[{"constant":false,"id":20011,"name":"borrowAmount","nodeType":"VariableDeclaration","scope":20068,"src":"9719:17:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20010,"name":"uint","nodeType":"ElementaryTypeName","src":"9719:4:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":20020,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":20014,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19971,"src":"9751:6:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":20013,"name":"CToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6186,"src":"9744:6:34","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CToken_$6186_$","typeString":"type(contract CToken)"}},"id":20015,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9744:14:34","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":20016,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"totalBorrows","nodeType":"MemberAccess","referencedDeclaration":6240,"src":"9744:27:34","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":20017,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9744:29:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":20018,"name":"marketBorrowIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19973,"src":"9775:17:34","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}],"id":20012,"name":"div_","nodeType":"Identifier","overloadedDeclarations":[14910,14928,14947,14969,14987,15006,15022,15045],"referencedDeclaration":14947,"src":"9739:4:34","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_struct$_Exp_$14390_memory_ptr_$returns$_t_uint256_$","typeString":"function (uint256,struct ExponentialNoError.Exp memory) pure returns (uint256)"}},"id":20019,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9739:54:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9719:74:34"},{"assignments":[20022],"declarations":[{"constant":false,"id":20022,"name":"compAccrued_","nodeType":"VariableDeclaration","scope":20068,"src":"9807:17:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20021,"name":"uint","nodeType":"ElementaryTypeName","src":"9807:4:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":20027,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":20024,"name":"deltaBlocks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19994,"src":"9832:11:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":20025,"name":"borrowSpeed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19983,"src":"9845:11:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20023,"name":"mul_","nodeType":"Identifier","overloadedDeclarations":[14739,14757,14775,14796,14814,14832,14848,14888],"referencedDeclaration":14848,"src":"9827:4:34","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":20026,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9827:30:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9807:50:34"},{"assignments":[20029],"declarations":[{"constant":false,"id":20029,"name":"ratio","nodeType":"VariableDeclaration","scope":20068,"src":"9871:19:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double"},"typeName":{"contractScope":null,"id":20028,"name":"Double","nodeType":"UserDefinedTypeName","referencedDeclaration":14393,"src":"9871:6:34","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_storage_ptr","typeString":"struct ExponentialNoError.Double"}},"value":null,"visibility":"internal"}],"id":20041,"initialValue":{"argumentTypes":null,"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20032,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":20030,"name":"borrowAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20011,"src":"9893:12:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"30","id":20031,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9908:1:34","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9893:16:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":20038,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9969:1:34","subdenomination":null,"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":20037,"name":"Double","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14393,"src":"9951:6:34","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Double_$14393_storage_ptr_$","typeString":"type(struct ExponentialNoError.Double storage pointer)"}},"id":20039,"isConstant":false,"isLValue":false,"isPure":true,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"9951:21:34","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory","typeString":"struct ExponentialNoError.Double memory"}},"id":20040,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"9893:79:34","trueExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":20034,"name":"compAccrued_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20022,"src":"9921:12:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":20035,"name":"borrowAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20011,"src":"9935:12:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20033,"name":"fraction","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15065,"src":"9912:8:34","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_struct$_Double_$14393_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (struct ExponentialNoError.Double memory)"}},"id":20036,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9912:36:34","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double memory"}},"typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double memory"}},"nodeType":"VariableDeclarationStatement","src":"9871:101:34"},{"assignments":[20043],"declarations":[{"constant":false,"id":20043,"name":"index","nodeType":"VariableDeclaration","scope":20068,"src":"9986:19:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double"},"typeName":{"contractScope":null,"id":20042,"name":"Double","nodeType":"UserDefinedTypeName","referencedDeclaration":14393,"src":"9986:6:34","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_storage_ptr","typeString":"struct ExponentialNoError.Double"}},"value":null,"visibility":"internal"}],"id":20051,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":20046,"name":"borrowState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19977,"src":"10031:11:34","typeDescriptions":{"typeIdentifier":"t_struct$_CompMarketState_$21051_storage_ptr","typeString":"struct RewardsDistributorDelegateStorageV1.CompMarketState storage pointer"}},"id":20047,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"index","nodeType":"MemberAccess","referencedDeclaration":21048,"src":"10031:17:34","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint224","typeString":"uint224"}],"id":20045,"name":"Double","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14393,"src":"10013:6:34","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Double_$14393_storage_ptr_$","typeString":"type(struct ExponentialNoError.Double storage pointer)"}},"id":20048,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"10013:37:34","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory","typeString":"struct ExponentialNoError.Double memory"}},{"argumentTypes":null,"id":20049,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20029,"src":"10052:5:34","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Double_$14393_memory","typeString":"struct ExponentialNoError.Double memory"},{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double memory"}],"id":20044,"name":"add_","nodeType":"Identifier","overloadedDeclarations":[14579,14598,14614,14641],"referencedDeclaration":14598,"src":"10008:4:34","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Double_$14393_memory_ptr_$_t_struct$_Double_$14393_memory_ptr_$returns$_t_struct$_Double_$14393_memory_ptr_$","typeString":"function (struct ExponentialNoError.Double memory,struct ExponentialNoError.Double memory) pure returns (struct ExponentialNoError.Double memory)"}},"id":20050,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10008:50:34","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double memory"}},"nodeType":"VariableDeclarationStatement","src":"9986:72:34"},{"expression":{"argumentTypes":null,"id":20066,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":20052,"name":"compBorrowState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21070,"src":"10072:15:34","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_CompMarketState_$21051_storage_$","typeString":"mapping(address => struct RewardsDistributorDelegateStorageV1.CompMarketState storage ref)"}},"id":20054,"indexExpression":{"argumentTypes":null,"id":20053,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19971,"src":"10088:6:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10072:23:34","typeDescriptions":{"typeIdentifier":"t_struct$_CompMarketState_$21051_storage","typeString":"struct RewardsDistributorDelegateStorageV1.CompMarketState storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":20057,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20043,"src":"10147:5:34","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double memory"}},"id":20058,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mantissa","nodeType":"MemberAccess","referencedDeclaration":14392,"src":"10147:14:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"6e657720696e6465782065786365656473203232342062697473","id":20059,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10163:28:34","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_efd912b0a596e6cfa5000021474b053b5acc660c9390ed127f3bb8b2308059db","typeString":"literal_string \"new index exceeds 224 bits\""},"value":"new index exceeds 224 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_efd912b0a596e6cfa5000021474b053b5acc660c9390ed127f3bb8b2308059db","typeString":"literal_string \"new index exceeds 224 bits\""}],"id":20056,"name":"safe224","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14537,"src":"10139:7:34","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint224_$","typeString":"function (uint256,string memory) pure returns (uint224)"}},"id":20060,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10139:53:34","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":20062,"name":"blockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19989,"src":"10224:11:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"626c6f636b206e756d62657220657863656564732033322062697473","id":20063,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10237:30:34","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_ff90a699fb9d013b04dce39b46a2e2edfd2bcf181b8611876e2c7b99f8929a06","typeString":"literal_string \"block number exceeds 32 bits\""},"value":"block number exceeds 32 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_ff90a699fb9d013b04dce39b46a2e2edfd2bcf181b8611876e2c7b99f8929a06","typeString":"literal_string \"block number exceeds 32 bits\""}],"id":20061,"name":"safe32","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14560,"src":"10217:6:34","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint32_$","typeString":"function (uint256,string memory) pure returns (uint32)"}},"id":20064,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10217:51:34","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint224","typeString":"uint224"},{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":20055,"name":"CompMarketState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21051,"src":"10098:15:34","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_CompMarketState_$21051_storage_ptr_$","typeString":"type(struct RewardsDistributorDelegateStorageV1.CompMarketState storage pointer)"}},"id":20065,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["index","block"],"nodeType":"FunctionCall","src":"10098:185:34","typeDescriptions":{"typeIdentifier":"t_struct$_CompMarketState_$21051_memory","typeString":"struct RewardsDistributorDelegateStorageV1.CompMarketState memory"}},"src":"10072:211:34","typeDescriptions":{"typeIdentifier":"t_struct$_CompMarketState_$21051_storage","typeString":"struct RewardsDistributorDelegateStorageV1.CompMarketState storage ref"}},"id":20067,"nodeType":"ExpressionStatement","src":"10072:211:34"}]}}]},"documentation":"@notice Accrue COMP to the market by updating the borrow index\n@param cToken The market whose borrow index to update","id":20090,"implemented":true,"kind":"function","modifiers":[],"name":"updateCompBorrowIndex","nodeType":"FunctionDefinition","parameters":{"id":19974,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19971,"name":"cToken","nodeType":"VariableDeclaration","scope":20090,"src":"9360:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19970,"name":"address","nodeType":"ElementaryTypeName","src":"9360:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":19973,"name":"marketBorrowIndex","nodeType":"VariableDeclaration","scope":20090,"src":"9376:28:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":19972,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"9376:3:34","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"}],"src":"9359:46:34"},"returnParameters":{"id":19975,"nodeType":"ParameterList","parameters":[],"src":"9415:0:34"},"scope":20921,"src":"9329:1119:34","stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},{"body":{"id":20194,"nodeType":"Block","src":"10772:1200:34","statements":[{"assignments":[20098],"declarations":[{"constant":false,"id":20098,"name":"supplyState","nodeType":"VariableDeclaration","scope":20194,"src":"10782:35:34","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_CompMarketState_$21051_storage_ptr","typeString":"struct RewardsDistributorDelegateStorageV1.CompMarketState"},"typeName":{"contractScope":null,"id":20097,"name":"CompMarketState","nodeType":"UserDefinedTypeName","referencedDeclaration":21051,"src":"10782:15:34","typeDescriptions":{"typeIdentifier":"t_struct$_CompMarketState_$21051_storage_ptr","typeString":"struct RewardsDistributorDelegateStorageV1.CompMarketState"}},"value":null,"visibility":"internal"}],"id":20102,"initialValue":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":20099,"name":"compSupplyState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21066,"src":"10820:15:34","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_CompMarketState_$21051_storage_$","typeString":"mapping(address => struct RewardsDistributorDelegateStorageV1.CompMarketState storage ref)"}},"id":20101,"indexExpression":{"argumentTypes":null,"id":20100,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20092,"src":"10836:6:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10820:23:34","typeDescriptions":{"typeIdentifier":"t_struct$_CompMarketState_$21051_storage","typeString":"struct RewardsDistributorDelegateStorageV1.CompMarketState storage ref"}},"nodeType":"VariableDeclarationStatement","src":"10782:61:34"},{"assignments":[20104],"declarations":[{"constant":false,"id":20104,"name":"supplyIndex","nodeType":"VariableDeclaration","scope":20194,"src":"10853:25:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double"},"typeName":{"contractScope":null,"id":20103,"name":"Double","nodeType":"UserDefinedTypeName","referencedDeclaration":14393,"src":"10853:6:34","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_storage_ptr","typeString":"struct ExponentialNoError.Double"}},"value":null,"visibility":"internal"}],"id":20109,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":20106,"name":"supplyState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20098,"src":"10899:11:34","typeDescriptions":{"typeIdentifier":"t_struct$_CompMarketState_$21051_storage_ptr","typeString":"struct RewardsDistributorDelegateStorageV1.CompMarketState storage pointer"}},"id":20107,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"index","nodeType":"MemberAccess","referencedDeclaration":21048,"src":"10899:17:34","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint224","typeString":"uint224"}],"id":20105,"name":"Double","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14393,"src":"10881:6:34","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Double_$14393_storage_ptr_$","typeString":"type(struct ExponentialNoError.Double storage pointer)"}},"id":20108,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"10881:37:34","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory","typeString":"struct ExponentialNoError.Double memory"}},"nodeType":"VariableDeclarationStatement","src":"10853:65:34"},{"assignments":[20111],"declarations":[{"constant":false,"id":20111,"name":"supplierIndex","nodeType":"VariableDeclaration","scope":20194,"src":"10928:27:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double"},"typeName":{"contractScope":null,"id":20110,"name":"Double","nodeType":"UserDefinedTypeName","referencedDeclaration":14393,"src":"10928:6:34","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_storage_ptr","typeString":"struct ExponentialNoError.Double"}},"value":null,"visibility":"internal"}],"id":20119,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":20113,"name":"compSupplierIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21076,"src":"10976:17:34","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":20115,"indexExpression":{"argumentTypes":null,"id":20114,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20092,"src":"10994:6:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10976:25:34","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":20117,"indexExpression":{"argumentTypes":null,"id":20116,"name":"supplier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20094,"src":"11002:8:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10976:35:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20112,"name":"Double","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14393,"src":"10958:6:34","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Double_$14393_storage_ptr_$","typeString":"type(struct ExponentialNoError.Double storage pointer)"}},"id":20118,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"10958:55:34","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory","typeString":"struct ExponentialNoError.Double memory"}},"nodeType":"VariableDeclarationStatement","src":"10928:85:34"},{"expression":{"argumentTypes":null,"id":20127,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":20120,"name":"compSupplierIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21076,"src":"11023:17:34","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":20123,"indexExpression":{"argumentTypes":null,"id":20121,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20092,"src":"11041:6:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11023:25:34","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":20124,"indexExpression":{"argumentTypes":null,"id":20122,"name":"supplier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20094,"src":"11049:8:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11023:35:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":20125,"name":"supplyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20104,"src":"11061:11:34","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double memory"}},"id":20126,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mantissa","nodeType":"MemberAccess","referencedDeclaration":14392,"src":"11061:20:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11023:58:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20128,"nodeType":"ExpressionStatement","src":"11023:58:34"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":20137,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20132,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":20129,"name":"supplierIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20111,"src":"11096:13:34","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double memory"}},"id":20130,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mantissa","nodeType":"MemberAccess","referencedDeclaration":14392,"src":"11096:22:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":20131,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11122:1:34","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11096:27:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":20133,"name":"supplyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20104,"src":"11127:11:34","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double memory"}},"id":20134,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mantissa","nodeType":"MemberAccess","referencedDeclaration":14392,"src":"11127:20:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"30","id":20135,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11150:1:34","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11127:24:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"11096:55:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":20145,"nodeType":"IfStatement","src":"11092:450:34","trueBody":{"id":20144,"nodeType":"Block","src":"11153:389:34","statements":[{"expression":{"argumentTypes":null,"id":20142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":20138,"name":"supplierIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20111,"src":"11490:13:34","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double memory"}},"id":20140,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"mantissa","nodeType":"MemberAccess","referencedDeclaration":14392,"src":"11490:22:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":20141,"name":"compInitialIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19441,"src":"11515:16:34","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"src":"11490:41:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20143,"nodeType":"ExpressionStatement","src":"11490:41:34"}]}},{"assignments":[20147],"declarations":[{"constant":false,"id":20147,"name":"deltaIndex","nodeType":"VariableDeclaration","scope":20194,"src":"11552:24:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double"},"typeName":{"contractScope":null,"id":20146,"name":"Double","nodeType":"UserDefinedTypeName","referencedDeclaration":14393,"src":"11552:6:34","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_storage_ptr","typeString":"struct ExponentialNoError.Double"}},"value":null,"visibility":"internal"}],"id":20152,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":20149,"name":"supplyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20104,"src":"11584:11:34","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double memory"}},{"argumentTypes":null,"id":20150,"name":"supplierIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20111,"src":"11597:13:34","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double memory"},{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double memory"}],"id":20148,"name":"sub_","nodeType":"Identifier","overloadedDeclarations":[14660,14679,14695,14718],"referencedDeclaration":14679,"src":"11579:4:34","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Double_$14393_memory_ptr_$_t_struct$_Double_$14393_memory_ptr_$returns$_t_struct$_Double_$14393_memory_ptr_$","typeString":"function (struct ExponentialNoError.Double memory,struct ExponentialNoError.Double memory) pure returns (struct ExponentialNoError.Double memory)"}},"id":20151,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11579:32:34","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double memory"}},"nodeType":"VariableDeclarationStatement","src":"11552:59:34"},{"assignments":[20154],"declarations":[{"constant":false,"id":20154,"name":"supplierTokens","nodeType":"VariableDeclaration","scope":20194,"src":"11621:19:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20153,"name":"uint","nodeType":"ElementaryTypeName","src":"11621:4:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":20161,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":20159,"name":"supplier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20094,"src":"11668:8:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":20156,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20092,"src":"11650:6:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":20155,"name":"CToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6186,"src":"11643:6:34","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CToken_$6186_$","typeString":"type(contract CToken)"}},"id":20157,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11643:14:34","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":20158,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2784,"src":"11643:24:34","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":20160,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11643:34:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11621:56:34"},{"assignments":[20163],"declarations":[{"constant":false,"id":20163,"name":"supplierDelta","nodeType":"VariableDeclaration","scope":20194,"src":"11687:18:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20162,"name":"uint","nodeType":"ElementaryTypeName","src":"11687:4:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":20168,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":20165,"name":"supplierTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20154,"src":"11713:14:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":20166,"name":"deltaIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20147,"src":"11729:10:34","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double memory"}],"id":20164,"name":"mul_","nodeType":"Identifier","overloadedDeclarations":[14739,14757,14775,14796,14814,14832,14848,14888],"referencedDeclaration":14832,"src":"11708:4:34","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_struct$_Double_$14393_memory_ptr_$returns$_t_uint256_$","typeString":"function (uint256,struct ExponentialNoError.Double memory) pure returns (uint256)"}},"id":20167,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11708:32:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11687:53:34"},{"assignments":[20170],"declarations":[{"constant":false,"id":20170,"name":"supplierAccrued","nodeType":"VariableDeclaration","scope":20194,"src":"11750:20:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20169,"name":"uint","nodeType":"ElementaryTypeName","src":"11750:4:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":20177,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":20172,"name":"compAccrued","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21086,"src":"11778:11:34","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":20174,"indexExpression":{"argumentTypes":null,"id":20173,"name":"supplier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20094,"src":"11790:8:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11778:21:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":20175,"name":"supplierDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20163,"src":"11801:13:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20171,"name":"add_","nodeType":"Identifier","overloadedDeclarations":[14579,14598,14614,14641],"referencedDeclaration":14614,"src":"11773:4:34","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":20176,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11773:42:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11750:65:34"},{"expression":{"argumentTypes":null,"id":20182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":20178,"name":"compAccrued","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21086,"src":"11825:11:34","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":20180,"indexExpression":{"argumentTypes":null,"id":20179,"name":"supplier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20094,"src":"11837:8:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11825:21:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":20181,"name":"supplierAccrued","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20170,"src":"11849:15:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11825:39:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20183,"nodeType":"ExpressionStatement","src":"11825:39:34"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":20186,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20092,"src":"11910:6:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":20185,"name":"CToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6186,"src":"11903:6:34","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CToken_$6186_$","typeString":"type(contract CToken)"}},"id":20187,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11903:14:34","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},{"argumentTypes":null,"id":20188,"name":"supplier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20094,"src":"11919:8:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":20189,"name":"supplierDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20163,"src":"11929:13:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":20190,"name":"supplyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20104,"src":"11944:11:34","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double memory"}},"id":20191,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mantissa","nodeType":"MemberAccess","referencedDeclaration":14392,"src":"11944:20:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20184,"name":"DistributedSupplierComp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19422,"src":"11879:23:34","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_contract$_CToken_$6186_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (contract CToken,address,uint256,uint256)"}},"id":20192,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11879:86:34","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20193,"nodeType":"EmitStatement","src":"11874:91:34"}]},"documentation":"@notice Calculate COMP accrued by a supplier and possibly transfer it to them\n@param cToken The market in which the supplier is interacting\n@param supplier The address of the supplier to distribute COMP to","id":20195,"implemented":true,"kind":"function","modifiers":[],"name":"distributeSupplierComp","nodeType":"FunctionDefinition","parameters":{"id":20095,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20092,"name":"cToken","nodeType":"VariableDeclaration","scope":20195,"src":"10729:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20091,"name":"address","nodeType":"ElementaryTypeName","src":"10729:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":20094,"name":"supplier","nodeType":"VariableDeclaration","scope":20195,"src":"10745:16:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20093,"name":"address","nodeType":"ElementaryTypeName","src":"10745:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"10728:34:34"},"returnParameters":{"id":20096,"nodeType":"ParameterList","parameters":[],"src":"10772:0:34"},"scope":20921,"src":"10697:1275:34","stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},{"body":{"id":20304,"nodeType":"Block","src":"12326:1387:34","statements":[{"assignments":[20205],"declarations":[{"constant":false,"id":20205,"name":"borrowState","nodeType":"VariableDeclaration","scope":20304,"src":"12336:35:34","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_CompMarketState_$21051_storage_ptr","typeString":"struct RewardsDistributorDelegateStorageV1.CompMarketState"},"typeName":{"contractScope":null,"id":20204,"name":"CompMarketState","nodeType":"UserDefinedTypeName","referencedDeclaration":21051,"src":"12336:15:34","typeDescriptions":{"typeIdentifier":"t_struct$_CompMarketState_$21051_storage_ptr","typeString":"struct RewardsDistributorDelegateStorageV1.CompMarketState"}},"value":null,"visibility":"internal"}],"id":20209,"initialValue":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":20206,"name":"compBorrowState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21070,"src":"12374:15:34","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_CompMarketState_$21051_storage_$","typeString":"mapping(address => struct RewardsDistributorDelegateStorageV1.CompMarketState storage ref)"}},"id":20208,"indexExpression":{"argumentTypes":null,"id":20207,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20197,"src":"12390:6:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12374:23:34","typeDescriptions":{"typeIdentifier":"t_struct$_CompMarketState_$21051_storage","typeString":"struct RewardsDistributorDelegateStorageV1.CompMarketState storage ref"}},"nodeType":"VariableDeclarationStatement","src":"12336:61:34"},{"assignments":[20211],"declarations":[{"constant":false,"id":20211,"name":"borrowIndex","nodeType":"VariableDeclaration","scope":20304,"src":"12407:25:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double"},"typeName":{"contractScope":null,"id":20210,"name":"Double","nodeType":"UserDefinedTypeName","referencedDeclaration":14393,"src":"12407:6:34","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_storage_ptr","typeString":"struct ExponentialNoError.Double"}},"value":null,"visibility":"internal"}],"id":20216,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":20213,"name":"borrowState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20205,"src":"12453:11:34","typeDescriptions":{"typeIdentifier":"t_struct$_CompMarketState_$21051_storage_ptr","typeString":"struct RewardsDistributorDelegateStorageV1.CompMarketState storage pointer"}},"id":20214,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"index","nodeType":"MemberAccess","referencedDeclaration":21048,"src":"12453:17:34","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint224","typeString":"uint224"}],"id":20212,"name":"Double","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14393,"src":"12435:6:34","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Double_$14393_storage_ptr_$","typeString":"type(struct ExponentialNoError.Double storage pointer)"}},"id":20215,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"12435:37:34","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory","typeString":"struct ExponentialNoError.Double memory"}},"nodeType":"VariableDeclarationStatement","src":"12407:65:34"},{"assignments":[20218],"declarations":[{"constant":false,"id":20218,"name":"borrowerIndex","nodeType":"VariableDeclaration","scope":20304,"src":"12482:27:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double"},"typeName":{"contractScope":null,"id":20217,"name":"Double","nodeType":"UserDefinedTypeName","referencedDeclaration":14393,"src":"12482:6:34","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_storage_ptr","typeString":"struct ExponentialNoError.Double"}},"value":null,"visibility":"internal"}],"id":20226,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":20220,"name":"compBorrowerIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21082,"src":"12530:17:34","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":20222,"indexExpression":{"argumentTypes":null,"id":20221,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20197,"src":"12548:6:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12530:25:34","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":20224,"indexExpression":{"argumentTypes":null,"id":20223,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20199,"src":"12556:8:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12530:35:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20219,"name":"Double","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14393,"src":"12512:6:34","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Double_$14393_storage_ptr_$","typeString":"type(struct ExponentialNoError.Double storage pointer)"}},"id":20225,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"12512:55:34","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory","typeString":"struct ExponentialNoError.Double memory"}},"nodeType":"VariableDeclarationStatement","src":"12482:85:34"},{"expression":{"argumentTypes":null,"id":20234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":20227,"name":"compBorrowerIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21082,"src":"12577:17:34","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":20230,"indexExpression":{"argumentTypes":null,"id":20228,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20197,"src":"12595:6:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12577:25:34","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":20231,"indexExpression":{"argumentTypes":null,"id":20229,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20199,"src":"12603:8:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"12577:35:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":20232,"name":"borrowIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20211,"src":"12615:11:34","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double memory"}},"id":20233,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mantissa","nodeType":"MemberAccess","referencedDeclaration":14392,"src":"12615:20:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12577:58:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20235,"nodeType":"ExpressionStatement","src":"12577:58:34"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":20244,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20239,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":20236,"name":"borrowerIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20218,"src":"12650:13:34","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double memory"}},"id":20237,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mantissa","nodeType":"MemberAccess","referencedDeclaration":14392,"src":"12650:22:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":20238,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12676:1:34","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12650:27:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":20240,"name":"borrowIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20211,"src":"12681:11:34","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double memory"}},"id":20241,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mantissa","nodeType":"MemberAccess","referencedDeclaration":14392,"src":"12681:20:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"30","id":20242,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12704:1:34","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12681:24:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12650:55:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":20252,"nodeType":"IfStatement","src":"12646:602:34","trueBody":{"id":20251,"nodeType":"Block","src":"12707:541:34","statements":[{"expression":{"argumentTypes":null,"id":20249,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":20245,"name":"borrowerIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20218,"src":"13196:13:34","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double memory"}},"id":20247,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"mantissa","nodeType":"MemberAccess","referencedDeclaration":14392,"src":"13196:22:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":20248,"name":"compInitialIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19441,"src":"13221:16:34","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"src":"13196:41:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20250,"nodeType":"ExpressionStatement","src":"13196:41:34"}]}},{"assignments":[20254],"declarations":[{"constant":false,"id":20254,"name":"deltaIndex","nodeType":"VariableDeclaration","scope":20304,"src":"13258:24:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double"},"typeName":{"contractScope":null,"id":20253,"name":"Double","nodeType":"UserDefinedTypeName","referencedDeclaration":14393,"src":"13258:6:34","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_storage_ptr","typeString":"struct ExponentialNoError.Double"}},"value":null,"visibility":"internal"}],"id":20259,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":20256,"name":"borrowIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20211,"src":"13290:11:34","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double memory"}},{"argumentTypes":null,"id":20257,"name":"borrowerIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20218,"src":"13303:13:34","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double memory"},{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double memory"}],"id":20255,"name":"sub_","nodeType":"Identifier","overloadedDeclarations":[14660,14679,14695,14718],"referencedDeclaration":14679,"src":"13285:4:34","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Double_$14393_memory_ptr_$_t_struct$_Double_$14393_memory_ptr_$returns$_t_struct$_Double_$14393_memory_ptr_$","typeString":"function (struct ExponentialNoError.Double memory,struct ExponentialNoError.Double memory) pure returns (struct ExponentialNoError.Double memory)"}},"id":20258,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13285:32:34","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double memory"}},"nodeType":"VariableDeclarationStatement","src":"13258:59:34"},{"assignments":[20261],"declarations":[{"constant":false,"id":20261,"name":"borrowerAmount","nodeType":"VariableDeclaration","scope":20304,"src":"13327:19:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20260,"name":"uint","nodeType":"ElementaryTypeName","src":"13327:4:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":20271,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":20267,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20199,"src":"13389:8:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":20264,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20197,"src":"13361:6:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":20263,"name":"CToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6186,"src":"13354:6:34","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CToken_$6186_$","typeString":"type(contract CToken)"}},"id":20265,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13354:14:34","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":20266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"borrowBalanceStored","nodeType":"MemberAccess","referencedDeclaration":3031,"src":"13354:34:34","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":20268,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13354:44:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":20269,"name":"marketBorrowIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20201,"src":"13400:17:34","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}],"id":20262,"name":"div_","nodeType":"Identifier","overloadedDeclarations":[14910,14928,14947,14969,14987,15006,15022,15045],"referencedDeclaration":14947,"src":"13349:4:34","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_struct$_Exp_$14390_memory_ptr_$returns$_t_uint256_$","typeString":"function (uint256,struct ExponentialNoError.Exp memory) pure returns (uint256)"}},"id":20270,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13349:69:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13327:91:34"},{"assignments":[20273],"declarations":[{"constant":false,"id":20273,"name":"borrowerDelta","nodeType":"VariableDeclaration","scope":20304,"src":"13428:18:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20272,"name":"uint","nodeType":"ElementaryTypeName","src":"13428:4:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":20278,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":20275,"name":"borrowerAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20261,"src":"13454:14:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":20276,"name":"deltaIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20254,"src":"13470:10:34","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double memory"}],"id":20274,"name":"mul_","nodeType":"Identifier","overloadedDeclarations":[14739,14757,14775,14796,14814,14832,14848,14888],"referencedDeclaration":14832,"src":"13449:4:34","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_struct$_Double_$14393_memory_ptr_$returns$_t_uint256_$","typeString":"function (uint256,struct ExponentialNoError.Double memory) pure returns (uint256)"}},"id":20277,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13449:32:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13428:53:34"},{"assignments":[20280],"declarations":[{"constant":false,"id":20280,"name":"borrowerAccrued","nodeType":"VariableDeclaration","scope":20304,"src":"13491:20:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20279,"name":"uint","nodeType":"ElementaryTypeName","src":"13491:4:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":20287,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":20282,"name":"compAccrued","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21086,"src":"13519:11:34","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":20284,"indexExpression":{"argumentTypes":null,"id":20283,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20199,"src":"13531:8:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13519:21:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":20285,"name":"borrowerDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20273,"src":"13542:13:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20281,"name":"add_","nodeType":"Identifier","overloadedDeclarations":[14579,14598,14614,14641],"referencedDeclaration":14614,"src":"13514:4:34","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":20286,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13514:42:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13491:65:34"},{"expression":{"argumentTypes":null,"id":20292,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":20288,"name":"compAccrued","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21086,"src":"13566:11:34","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":20290,"indexExpression":{"argumentTypes":null,"id":20289,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20199,"src":"13578:8:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"13566:21:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":20291,"name":"borrowerAccrued","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20280,"src":"13590:15:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13566:39:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20293,"nodeType":"ExpressionStatement","src":"13566:39:34"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":20296,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20197,"src":"13651:6:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":20295,"name":"CToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6186,"src":"13644:6:34","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CToken_$6186_$","typeString":"type(contract CToken)"}},"id":20297,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13644:14:34","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},{"argumentTypes":null,"id":20298,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20199,"src":"13660:8:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":20299,"name":"borrowerDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20273,"src":"13670:13:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":20300,"name":"borrowIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20211,"src":"13685:11:34","typeDescriptions":{"typeIdentifier":"t_struct$_Double_$14393_memory_ptr","typeString":"struct ExponentialNoError.Double memory"}},"id":20301,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mantissa","nodeType":"MemberAccess","referencedDeclaration":14392,"src":"13685:20:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20294,"name":"DistributedBorrowerComp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19432,"src":"13620:23:34","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_contract$_CToken_$6186_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (contract CToken,address,uint256,uint256)"}},"id":20302,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13620:86:34","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20303,"nodeType":"EmitStatement","src":"13615:91:34"}]},"documentation":"@notice Calculate COMP accrued by a borrower and possibly transfer it to them\n@param cToken The market in which the borrower is interacting\n@param borrower The address of the borrower to distribute COMP to","id":20305,"implemented":true,"kind":"function","modifiers":[],"name":"distributeBorrowerComp","nodeType":"FunctionDefinition","parameters":{"id":20202,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20197,"name":"cToken","nodeType":"VariableDeclaration","scope":20305,"src":"12253:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20196,"name":"address","nodeType":"ElementaryTypeName","src":"12253:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":20199,"name":"borrower","nodeType":"VariableDeclaration","scope":20305,"src":"12269:16:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20198,"name":"address","nodeType":"ElementaryTypeName","src":"12269:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":20201,"name":"marketBorrowIndex","nodeType":"VariableDeclaration","scope":20305,"src":"12287:28:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":20200,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"12287:3:34","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"}],"src":"12252:64:34"},"returnParameters":{"id":20203,"nodeType":"ParameterList","parameters":[],"src":"12326:0:34"},"scope":20921,"src":"12221:1492:34","stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},{"body":{"id":20329,"nodeType":"Block","src":"14000:163:34","statements":[{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint224","typeString":"uint224"},"id":20317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":20312,"name":"compSupplyState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21066,"src":"14014:15:34","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_CompMarketState_$21051_storage_$","typeString":"mapping(address => struct RewardsDistributorDelegateStorageV1.CompMarketState storage ref)"}},"id":20314,"indexExpression":{"argumentTypes":null,"id":20313,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20307,"src":"14030:6:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14014:23:34","typeDescriptions":{"typeIdentifier":"t_struct$_CompMarketState_$21051_storage","typeString":"struct RewardsDistributorDelegateStorageV1.CompMarketState storage ref"}},"id":20315,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"index","nodeType":"MemberAccess","referencedDeclaration":21048,"src":"14014:29:34","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"30","id":20316,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14046:1:34","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14014:33:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":20328,"nodeType":"IfStatement","src":"14010:147:34","trueBody":{"id":20327,"nodeType":"Block","src":"14049:108:34","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":20319,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20307,"src":"14085:6:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":20318,"name":"updateCompSupplyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19969,"src":"14063:21:34","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":20320,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14063:29:34","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20321,"nodeType":"ExpressionStatement","src":"14063:29:34"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":20323,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20307,"src":"14129:6:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":20324,"name":"supplier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20309,"src":"14137:8:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":20322,"name":"distributeSupplierComp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20195,"src":"14106:22:34","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":20325,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14106:40:34","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20326,"nodeType":"ExpressionStatement","src":"14106:40:34"}]}}]},"documentation":"@notice Keeps the flywheel moving pre-mint and pre-redeem\n@dev Called by the Comptroller\n@param cToken The relevant market\n@param supplier The minter/redeemer","id":20330,"implemented":true,"kind":"function","modifiers":[],"name":"flywheelPreSupplierAction","nodeType":"FunctionDefinition","parameters":{"id":20310,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20307,"name":"cToken","nodeType":"VariableDeclaration","scope":20330,"src":"13957:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20306,"name":"address","nodeType":"ElementaryTypeName","src":"13957:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":20309,"name":"supplier","nodeType":"VariableDeclaration","scope":20330,"src":"13973:16:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20308,"name":"address","nodeType":"ElementaryTypeName","src":"13973:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"13956:34:34"},"returnParameters":{"id":20311,"nodeType":"ParameterList","parameters":[],"src":"14000:0:34"},"scope":20921,"src":"13922:241:34","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":{"id":20366,"nodeType":"Block","src":"14444:273:34","statements":[{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint224","typeString":"uint224"},"id":20342,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":20337,"name":"compBorrowState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21070,"src":"14458:15:34","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_CompMarketState_$21051_storage_$","typeString":"mapping(address => struct RewardsDistributorDelegateStorageV1.CompMarketState storage ref)"}},"id":20339,"indexExpression":{"argumentTypes":null,"id":20338,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20332,"src":"14474:6:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14458:23:34","typeDescriptions":{"typeIdentifier":"t_struct$_CompMarketState_$21051_storage","typeString":"struct RewardsDistributorDelegateStorageV1.CompMarketState storage ref"}},"id":20340,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"index","nodeType":"MemberAccess","referencedDeclaration":21048,"src":"14458:29:34","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"30","id":20341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14490:1:34","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14458:33:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":20365,"nodeType":"IfStatement","src":"14454:257:34","trueBody":{"id":20364,"nodeType":"Block","src":"14493:218:34","statements":[{"assignments":[20344],"declarations":[{"constant":false,"id":20344,"name":"borrowIndex","nodeType":"VariableDeclaration","scope":20364,"src":"14507:22:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":20343,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"14507:3:34","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"}],"id":20352,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":20347,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20332,"src":"14554:6:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":20346,"name":"CToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6186,"src":"14547:6:34","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CToken_$6186_$","typeString":"type(contract CToken)"}},"id":20348,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14547:14:34","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":20349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"borrowIndex","nodeType":"MemberAccess","referencedDeclaration":6238,"src":"14547:26:34","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":20350,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14547:28:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20345,"name":"Exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14390,"src":"14532:3:34","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Exp_$14390_storage_ptr_$","typeString":"type(struct ExponentialNoError.Exp storage pointer)"}},"id":20351,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"14532:45:34","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}},"nodeType":"VariableDeclarationStatement","src":"14507:70:34"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":20354,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20332,"src":"14613:6:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":20355,"name":"borrowIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20344,"src":"14621:11:34","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}],"id":20353,"name":"updateCompBorrowIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20090,"src":"14591:21:34","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_struct$_Exp_$14390_memory_ptr_$returns$__$","typeString":"function (address,struct ExponentialNoError.Exp memory)"}},"id":20356,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14591:42:34","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20357,"nodeType":"ExpressionStatement","src":"14591:42:34"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":20359,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20332,"src":"14670:6:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":20360,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20334,"src":"14678:8:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":20361,"name":"borrowIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20344,"src":"14688:11:34","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}],"id":20358,"name":"distributeBorrowerComp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20305,"src":"14647:22:34","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_struct$_Exp_$14390_memory_ptr_$returns$__$","typeString":"function (address,address,struct ExponentialNoError.Exp memory)"}},"id":20362,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14647:53:34","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20363,"nodeType":"ExpressionStatement","src":"14647:53:34"}]}}]},"documentation":"@notice Keeps the flywheel moving pre-borrow and pre-repay\n@dev Called by the Comptroller\n@param cToken The relevant market\n@param borrower The borrower","id":20367,"implemented":true,"kind":"function","modifiers":[],"name":"flywheelPreBorrowerAction","nodeType":"FunctionDefinition","parameters":{"id":20335,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20332,"name":"cToken","nodeType":"VariableDeclaration","scope":20367,"src":"14401:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20331,"name":"address","nodeType":"ElementaryTypeName","src":"14401:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":20334,"name":"borrower","nodeType":"VariableDeclaration","scope":20367,"src":"14417:16:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20333,"name":"address","nodeType":"ElementaryTypeName","src":"14417:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"14400:34:34"},"returnParameters":{"id":20336,"nodeType":"ParameterList","parameters":[],"src":"14444:0:34"},"scope":20921,"src":"14366:351:34","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":{"id":20398,"nodeType":"Block","src":"15083:207:34","statements":[{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint224","typeString":"uint224"},"id":20381,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":20376,"name":"compSupplyState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21066,"src":"15097:15:34","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_CompMarketState_$21051_storage_$","typeString":"mapping(address => struct RewardsDistributorDelegateStorageV1.CompMarketState storage ref)"}},"id":20378,"indexExpression":{"argumentTypes":null,"id":20377,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20369,"src":"15113:6:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15097:23:34","typeDescriptions":{"typeIdentifier":"t_struct$_CompMarketState_$21051_storage","typeString":"struct RewardsDistributorDelegateStorageV1.CompMarketState storage ref"}},"id":20379,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"index","nodeType":"MemberAccess","referencedDeclaration":21048,"src":"15097:29:34","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"30","id":20380,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15129:1:34","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"15097:33:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":20397,"nodeType":"IfStatement","src":"15093:191:34","trueBody":{"id":20396,"nodeType":"Block","src":"15132:152:34","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":20383,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20369,"src":"15168:6:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":20382,"name":"updateCompSupplyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19969,"src":"15146:21:34","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":20384,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15146:29:34","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20385,"nodeType":"ExpressionStatement","src":"15146:29:34"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":20387,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20369,"src":"15212:6:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":20388,"name":"src","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20371,"src":"15220:3:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":20386,"name":"distributeSupplierComp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20195,"src":"15189:22:34","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":20389,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15189:35:34","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20390,"nodeType":"ExpressionStatement","src":"15189:35:34"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":20392,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20369,"src":"15261:6:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":20393,"name":"dst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20373,"src":"15269:3:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":20391,"name":"distributeSupplierComp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20195,"src":"15238:22:34","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":20394,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15238:35:34","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20395,"nodeType":"ExpressionStatement","src":"15238:35:34"}]}}]},"documentation":"@notice Keeps the flywheel moving pre-transfer and pre-seize\n@dev Called by the Comptroller\n@param cToken The relevant market\n@param src The account which sources the tokens\n@param dst The account which receives the tokens","id":20399,"implemented":true,"kind":"function","modifiers":[],"name":"flywheelPreTransferAction","nodeType":"FunctionDefinition","parameters":{"id":20374,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20369,"name":"cToken","nodeType":"VariableDeclaration","scope":20399,"src":"15032:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20368,"name":"address","nodeType":"ElementaryTypeName","src":"15032:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":20371,"name":"src","nodeType":"VariableDeclaration","scope":20399,"src":"15048:11:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20370,"name":"address","nodeType":"ElementaryTypeName","src":"15048:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":20373,"name":"dst","nodeType":"VariableDeclaration","scope":20399,"src":"15061:11:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20372,"name":"address","nodeType":"ElementaryTypeName","src":"15061:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"15031:42:34"},"returnParameters":{"id":20375,"nodeType":"ParameterList","parameters":[],"src":"15083:0:34"},"scope":20921,"src":"14997:293:34","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":{"id":20461,"nodeType":"Block","src":"15535:515:34","statements":[{"assignments":[20405],"declarations":[{"constant":false,"id":20405,"name":"compSpeed","nodeType":"VariableDeclaration","scope":20461,"src":"15545:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20404,"name":"uint","nodeType":"ElementaryTypeName","src":"15545:4:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":20409,"initialValue":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":20406,"name":"compContributorSpeeds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21090,"src":"15562:21:34","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":20408,"indexExpression":{"argumentTypes":null,"id":20407,"name":"contributor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20401,"src":"15584:11:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15562:34:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"15545:51:34"},{"assignments":[20411],"declarations":[{"constant":false,"id":20411,"name":"blockNumber","nodeType":"VariableDeclaration","scope":20461,"src":"15606:16:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20410,"name":"uint","nodeType":"ElementaryTypeName","src":"15606:4:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":20414,"initialValue":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":20412,"name":"getBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20911,"src":"15625:14:34","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":20413,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15625:16:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"15606:35:34"},{"assignments":[20416],"declarations":[{"constant":false,"id":20416,"name":"deltaBlocks","nodeType":"VariableDeclaration","scope":20461,"src":"15651:16:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20415,"name":"uint","nodeType":"ElementaryTypeName","src":"15651:4:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":20423,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":20418,"name":"blockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20411,"src":"15675:11:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":20419,"name":"lastContributorBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21094,"src":"15688:20:34","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":20421,"indexExpression":{"argumentTypes":null,"id":20420,"name":"contributor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20401,"src":"15709:11:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15688:33:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20417,"name":"sub_","nodeType":"Identifier","overloadedDeclarations":[14660,14679,14695,14718],"referencedDeclaration":14695,"src":"15670:4:34","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":20422,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15670:52:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"15651:71:34"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":20430,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":20424,"name":"deltaBlocks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20416,"src":"15736:11:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"30","id":20425,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15750:1:34","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"15736:15:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20429,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":20427,"name":"compSpeed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20405,"src":"15755:9:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"30","id":20428,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15767:1:34","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"15755:13:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"15736:32:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":20460,"nodeType":"IfStatement","src":"15732:312:34","trueBody":{"id":20459,"nodeType":"Block","src":"15770:274:34","statements":[{"assignments":[20432],"declarations":[{"constant":false,"id":20432,"name":"newAccrued","nodeType":"VariableDeclaration","scope":20459,"src":"15784:15:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20431,"name":"uint","nodeType":"ElementaryTypeName","src":"15784:4:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":20437,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":20434,"name":"deltaBlocks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20416,"src":"15807:11:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":20435,"name":"compSpeed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20405,"src":"15820:9:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20433,"name":"mul_","nodeType":"Identifier","overloadedDeclarations":[14739,14757,14775,14796,14814,14832,14848,14888],"referencedDeclaration":14848,"src":"15802:4:34","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":20436,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15802:28:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"15784:46:34"},{"assignments":[20439],"declarations":[{"constant":false,"id":20439,"name":"contributorAccrued","nodeType":"VariableDeclaration","scope":20459,"src":"15844:23:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20438,"name":"uint","nodeType":"ElementaryTypeName","src":"15844:4:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":20446,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":20441,"name":"compAccrued","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21086,"src":"15875:11:34","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":20443,"indexExpression":{"argumentTypes":null,"id":20442,"name":"contributor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20401,"src":"15887:11:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15875:24:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":20444,"name":"newAccrued","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20432,"src":"15901:10:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20440,"name":"add_","nodeType":"Identifier","overloadedDeclarations":[14579,14598,14614,14641],"referencedDeclaration":14614,"src":"15870:4:34","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":20445,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15870:42:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"15844:68:34"},{"expression":{"argumentTypes":null,"id":20451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":20447,"name":"compAccrued","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21086,"src":"15927:11:34","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":20449,"indexExpression":{"argumentTypes":null,"id":20448,"name":"contributor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20401,"src":"15939:11:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"15927:24:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":20450,"name":"contributorAccrued","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20439,"src":"15954:18:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15927:45:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20452,"nodeType":"ExpressionStatement","src":"15927:45:34"},{"expression":{"argumentTypes":null,"id":20457,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":20453,"name":"lastContributorBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21094,"src":"15986:20:34","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":20455,"indexExpression":{"argumentTypes":null,"id":20454,"name":"contributor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20401,"src":"16007:11:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"15986:33:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":20456,"name":"blockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20411,"src":"16022:11:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15986:47:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20458,"nodeType":"ExpressionStatement","src":"15986:47:34"}]}}]},"documentation":"@notice Calculate additional accrued COMP for a contributor since last accrual\n@param contributor The address to calculate contributor rewards for","id":20462,"implemented":true,"kind":"function","modifiers":[],"name":"updateContributorRewards","nodeType":"FunctionDefinition","parameters":{"id":20402,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20401,"name":"contributor","nodeType":"VariableDeclaration","scope":20462,"src":"15507:19:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20400,"name":"address","nodeType":"ElementaryTypeName","src":"15507:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"15506:21:34"},"returnParameters":{"id":20403,"nodeType":"ParameterList","parameters":[],"src":"15535:0:34"},"scope":20921,"src":"15473:577:34","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":20472,"nodeType":"Block","src":"16235:56:34","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":20468,"name":"holder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20464,"src":"16265:6:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":20469,"name":"allMarkets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21054,"src":"16273:10:34","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_storage","typeString":"contract CToken[] storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_storage","typeString":"contract CToken[] storage ref"}],"id":20467,"name":"claimRewards","nodeType":"Identifier","overloadedDeclarations":[20473,20505,20662],"referencedDeclaration":20505,"src":"16252:12:34","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_array$_t_contract$_CToken_$6186_$dyn_memory_ptr_$returns$__$","typeString":"function (address,contract CToken[] memory)"}},"id":20470,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16252:32:34","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"functionReturnParameters":20466,"id":20471,"nodeType":"Return","src":"16245:39:34"}]},"documentation":"@notice Claim all the comp accrued by holder in all markets\n@param holder The address to claim COMP for","id":20473,"implemented":true,"kind":"function","modifiers":[],"name":"claimRewards","nodeType":"FunctionDefinition","parameters":{"id":20465,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20464,"name":"holder","nodeType":"VariableDeclaration","scope":20473,"src":"16212:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20463,"name":"address","nodeType":"ElementaryTypeName","src":"16212:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"16211:16:34"},"returnParameters":{"id":20466,"nodeType":"ParameterList","parameters":[],"src":"16235:0:34"},"scope":20921,"src":"16190:101:34","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":20504,"nodeType":"Block","src":"16570:141:34","statements":[{"assignments":[20484],"declarations":[{"constant":false,"id":20484,"name":"holders","nodeType":"VariableDeclaration","scope":20504,"src":"16580:24:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":20482,"name":"address","nodeType":"ElementaryTypeName","src":"16580:7:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":20483,"length":null,"nodeType":"ArrayTypeName","src":"16580:9:34","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"value":null,"visibility":"internal"}],"id":20490,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"31","id":20488,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16621:1:34","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":20487,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"16607:13:34","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_$","typeString":"function (uint256) pure returns (address[] memory)"},"typeName":{"baseType":{"id":20485,"name":"address","nodeType":"ElementaryTypeName","src":"16611:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":20486,"length":null,"nodeType":"ArrayTypeName","src":"16611:9:34","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}}},"id":20489,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16607:16:34","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory","typeString":"address[] memory"}},"nodeType":"VariableDeclarationStatement","src":"16580:43:34"},{"expression":{"argumentTypes":null,"id":20495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":20491,"name":"holders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20484,"src":"16633:7:34","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":20493,"indexExpression":{"argumentTypes":null,"hexValue":"30","id":20492,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16641:1:34","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"16633:10:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":20494,"name":"holder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20475,"src":"16646:6:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"16633:19:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":20496,"nodeType":"ExpressionStatement","src":"16633:19:34"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":20498,"name":"holders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20484,"src":"16675:7:34","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},{"argumentTypes":null,"id":20499,"name":"cTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20478,"src":"16684:7:34","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_memory_ptr","typeString":"contract CToken[] memory"}},{"argumentTypes":null,"hexValue":"74727565","id":20500,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"16693:4:34","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"argumentTypes":null,"hexValue":"74727565","id":20501,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"16699:4:34","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"},{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_memory_ptr","typeString":"contract CToken[] memory"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":20497,"name":"claimRewards","nodeType":"Identifier","overloadedDeclarations":[20473,20505,20662],"referencedDeclaration":20662,"src":"16662:12:34","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_contract$_CToken_$6186_$dyn_memory_ptr_$_t_bool_$_t_bool_$returns$__$","typeString":"function (address[] memory,contract CToken[] memory,bool,bool)"}},"id":20502,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16662:42:34","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20503,"nodeType":"ExpressionStatement","src":"16662:42:34"}]},"documentation":"@notice Claim all the comp accrued by holder in the specified markets\n@param holder The address to claim COMP for\n@param cTokens The list of markets to claim COMP in","id":20505,"implemented":true,"kind":"function","modifiers":[],"name":"claimRewards","nodeType":"FunctionDefinition","parameters":{"id":20479,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20475,"name":"holder","nodeType":"VariableDeclaration","scope":20505,"src":"16522:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20474,"name":"address","nodeType":"ElementaryTypeName","src":"16522:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":20478,"name":"cTokens","nodeType":"VariableDeclaration","scope":20505,"src":"16538:23:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_memory_ptr","typeString":"contract CToken[]"},"typeName":{"baseType":{"contractScope":null,"id":20476,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"16538:6:34","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":20477,"length":null,"nodeType":"ArrayTypeName","src":"16538:8:34","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_storage_ptr","typeString":"contract CToken[]"}},"value":null,"visibility":"internal"}],"src":"16521:41:34"},"returnParameters":{"id":20480,"nodeType":"ParameterList","parameters":[],"src":"16570:0:34"},"scope":20921,"src":"16500:211:34","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":20661,"nodeType":"Block","src":"17157:979:34","statements":[{"body":{"id":20629,"nodeType":"Block","src":"17209:765:34","statements":[{"assignments":[20530],"declarations":[{"constant":false,"id":20530,"name":"cToken","nodeType":"VariableDeclaration","scope":20629,"src":"17223:13:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},"typeName":{"contractScope":null,"id":20529,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"17223:6:34","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"value":null,"visibility":"internal"}],"id":20534,"initialValue":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":20531,"name":"cTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20511,"src":"17239:7:34","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_memory_ptr","typeString":"contract CToken[] memory"}},"id":20533,"indexExpression":{"argumentTypes":null,"id":20532,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20519,"src":"17247:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17239:10:34","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"nodeType":"VariableDeclarationStatement","src":"17223:26:34"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":20546,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":20537,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":20535,"name":"borrowers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20513,"src":"17267:9:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"74727565","id":20536,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"17280:4:34","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"17267:17:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint224","typeString":"uint224"},"id":20545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":20538,"name":"compBorrowState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21070,"src":"17288:15:34","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_CompMarketState_$21051_storage_$","typeString":"mapping(address => struct RewardsDistributorDelegateStorageV1.CompMarketState storage ref)"}},"id":20542,"indexExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":20540,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20530,"src":"17312:6:34","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":20539,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17304:7:34","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":20541,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17304:15:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17288:32:34","typeDescriptions":{"typeIdentifier":"t_struct$_CompMarketState_$21051_storage","typeString":"struct RewardsDistributorDelegateStorageV1.CompMarketState storage ref"}},"id":20543,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"index","nodeType":"MemberAccess","referencedDeclaration":21048,"src":"17288:38:34","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"30","id":20544,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17329:1:34","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17288:42:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"17267:63:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":20586,"nodeType":"IfStatement","src":"17263:397:34","trueBody":{"id":20585,"nodeType":"Block","src":"17332:328:34","statements":[{"assignments":[20548],"declarations":[{"constant":false,"id":20548,"name":"borrowIndex","nodeType":"VariableDeclaration","scope":20585,"src":"17350:22:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp"},"typeName":{"contractScope":null,"id":20547,"name":"Exp","nodeType":"UserDefinedTypeName","referencedDeclaration":14390,"src":"17350:3:34","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_storage_ptr","typeString":"struct ExponentialNoError.Exp"}},"value":null,"visibility":"internal"}],"id":20554,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":20550,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20530,"src":"17390:6:34","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":20551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"borrowIndex","nodeType":"MemberAccess","referencedDeclaration":6238,"src":"17390:18:34","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":20552,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17390:20:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20549,"name":"Exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14390,"src":"17375:3:34","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Exp_$14390_storage_ptr_$","typeString":"type(struct ExponentialNoError.Exp storage pointer)"}},"id":20553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["mantissa"],"nodeType":"FunctionCall","src":"17375:37:34","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory","typeString":"struct ExponentialNoError.Exp memory"}},"nodeType":"VariableDeclarationStatement","src":"17350:62:34"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":20557,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20530,"src":"17460:6:34","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":20556,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17452:7:34","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":20558,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17452:15:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":20559,"name":"borrowIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20548,"src":"17469:11:34","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}],"id":20555,"name":"updateCompBorrowIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20090,"src":"17430:21:34","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_struct$_Exp_$14390_memory_ptr_$returns$__$","typeString":"function (address,struct ExponentialNoError.Exp memory)"}},"id":20560,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17430:51:34","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20561,"nodeType":"ExpressionStatement","src":"17430:51:34"},{"body":{"id":20583,"nodeType":"Block","src":"17541:105:34","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":20575,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20530,"src":"17594:6:34","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":20574,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17586:7:34","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":20576,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17586:15:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":20577,"name":"holders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20508,"src":"17603:7:34","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":20579,"indexExpression":{"argumentTypes":null,"id":20578,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20563,"src":"17611:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17603:10:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":20580,"name":"borrowIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20548,"src":"17615:11:34","typeDescriptions":{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_Exp_$14390_memory_ptr","typeString":"struct ExponentialNoError.Exp memory"}],"id":20573,"name":"distributeBorrowerComp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20305,"src":"17563:22:34","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_struct$_Exp_$14390_memory_ptr_$returns$__$","typeString":"function (address,address,struct ExponentialNoError.Exp memory)"}},"id":20581,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17563:64:34","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20582,"nodeType":"ExpressionStatement","src":"17563:64:34"}]},"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20569,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":20566,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20563,"src":"17516:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":20567,"name":"holders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20508,"src":"17520:7:34","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":20568,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"17520:14:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17516:18:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":20584,"initializationExpression":{"assignments":[20563],"declarations":[{"constant":false,"id":20563,"name":"j","nodeType":"VariableDeclaration","scope":20584,"src":"17504:6:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20562,"name":"uint","nodeType":"ElementaryTypeName","src":"17504:4:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":20565,"initialValue":{"argumentTypes":null,"hexValue":"30","id":20564,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17513:1:34","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"17504:10:34"},"loopExpression":{"expression":{"argumentTypes":null,"id":20571,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"17536:3:34","subExpression":{"argumentTypes":null,"id":20570,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20563,"src":"17536:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20572,"nodeType":"ExpressionStatement","src":"17536:3:34"},"nodeType":"ForStatement","src":"17499:147:34"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":20598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":20589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":20587,"name":"suppliers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20515,"src":"17677:9:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"74727565","id":20588,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"17690:4:34","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"17677:17:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint224","typeString":"uint224"},"id":20597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":20590,"name":"compSupplyState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21066,"src":"17698:15:34","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_CompMarketState_$21051_storage_$","typeString":"mapping(address => struct RewardsDistributorDelegateStorageV1.CompMarketState storage ref)"}},"id":20594,"indexExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":20592,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20530,"src":"17722:6:34","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":20591,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17714:7:34","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":20593,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17714:15:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17698:32:34","typeDescriptions":{"typeIdentifier":"t_struct$_CompMarketState_$21051_storage","typeString":"struct RewardsDistributorDelegateStorageV1.CompMarketState storage ref"}},"id":20595,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"index","nodeType":"MemberAccess","referencedDeclaration":21048,"src":"17698:38:34","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"30","id":20596,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17739:1:34","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17698:42:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"17677:63:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":20628,"nodeType":"IfStatement","src":"17673:291:34","trueBody":{"id":20627,"nodeType":"Block","src":"17742:222:34","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":20601,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20530,"src":"17790:6:34","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":20600,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17782:7:34","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":20602,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17782:15:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":20599,"name":"updateCompSupplyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19969,"src":"17760:21:34","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":20603,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17760:38:34","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20604,"nodeType":"ExpressionStatement","src":"17760:38:34"},{"body":{"id":20625,"nodeType":"Block","src":"17858:92:34","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":20618,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20530,"src":"17911:6:34","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":20617,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17903:7:34","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":20619,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17903:15:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":20620,"name":"holders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20508,"src":"17920:7:34","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":20622,"indexExpression":{"argumentTypes":null,"id":20621,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20606,"src":"17928:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17920:10:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":20616,"name":"distributeSupplierComp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20195,"src":"17880:22:34","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":20623,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17880:51:34","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20624,"nodeType":"ExpressionStatement","src":"17880:51:34"}]},"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":20609,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20606,"src":"17833:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":20610,"name":"holders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20508,"src":"17837:7:34","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":20611,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"17837:14:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17833:18:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":20626,"initializationExpression":{"assignments":[20606],"declarations":[{"constant":false,"id":20606,"name":"j","nodeType":"VariableDeclaration","scope":20626,"src":"17821:6:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20605,"name":"uint","nodeType":"ElementaryTypeName","src":"17821:4:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":20608,"initialValue":{"argumentTypes":null,"hexValue":"30","id":20607,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17830:1:34","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"17821:10:34"},"loopExpression":{"expression":{"argumentTypes":null,"id":20614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"17853:3:34","subExpression":{"argumentTypes":null,"id":20613,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20606,"src":"17853:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20615,"nodeType":"ExpressionStatement","src":"17853:3:34"},"nodeType":"ForStatement","src":"17816:134:34"}]}}]},"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":20522,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20519,"src":"17184:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":20523,"name":"cTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20511,"src":"17188:7:34","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_memory_ptr","typeString":"contract CToken[] memory"}},"id":20524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"17188:14:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17184:18:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":20630,"initializationExpression":{"assignments":[20519],"declarations":[{"constant":false,"id":20519,"name":"i","nodeType":"VariableDeclaration","scope":20630,"src":"17172:6:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20518,"name":"uint","nodeType":"ElementaryTypeName","src":"17172:4:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":20521,"initialValue":{"argumentTypes":null,"hexValue":"30","id":20520,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17181:1:34","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"17172:10:34"},"loopExpression":{"expression":{"argumentTypes":null,"id":20527,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"17204:3:34","subExpression":{"argumentTypes":null,"id":20526,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20519,"src":"17204:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20528,"nodeType":"ExpressionStatement","src":"17204:3:34"},"nodeType":"ForStatement","src":"17167:807:34"},{"body":{"id":20659,"nodeType":"Block","src":"18025:105:34","statements":[{"expression":{"argumentTypes":null,"id":20657,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":20642,"name":"compAccrued","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21086,"src":"18039:11:34","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":20646,"indexExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":20643,"name":"holders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20508,"src":"18051:7:34","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":20645,"indexExpression":{"argumentTypes":null,"id":20644,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20632,"src":"18059:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18051:10:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"18039:23:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":20648,"name":"holders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20508,"src":"18083:7:34","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":20650,"indexExpression":{"argumentTypes":null,"id":20649,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20632,"src":"18091:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18083:10:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":20651,"name":"compAccrued","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21086,"src":"18095:11:34","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":20655,"indexExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":20652,"name":"holders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20508,"src":"18107:7:34","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":20654,"indexExpression":{"argumentTypes":null,"id":20653,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20632,"src":"18115:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18107:10:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18095:23:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20647,"name":"grantCompInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20707,"src":"18065:17:34","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,uint256) returns (uint256)"}},"id":20656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18065:54:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18039:80:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20658,"nodeType":"ExpressionStatement","src":"18039:80:34"}]},"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":20635,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20632,"src":"18000:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":20636,"name":"holders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20508,"src":"18004:7:34","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":20637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"18004:14:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18000:18:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":20660,"initializationExpression":{"assignments":[20632],"declarations":[{"constant":false,"id":20632,"name":"j","nodeType":"VariableDeclaration","scope":20660,"src":"17988:6:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20631,"name":"uint","nodeType":"ElementaryTypeName","src":"17988:4:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":20634,"initialValue":{"argumentTypes":null,"hexValue":"30","id":20633,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17997:1:34","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"17988:10:34"},"loopExpression":{"expression":{"argumentTypes":null,"id":20640,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"18020:3:34","subExpression":{"argumentTypes":null,"id":20639,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20632,"src":"18020:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20641,"nodeType":"ExpressionStatement","src":"18020:3:34"},"nodeType":"ForStatement","src":"17983:147:34"}]},"documentation":"@notice Claim all comp accrued by the holders\n@param holders The addresses to claim COMP for\n@param cTokens The list of markets to claim COMP in\n@param borrowers Whether or not to claim COMP earned by borrowing\n@param suppliers Whether or not to claim COMP earned by supplying","id":20662,"implemented":true,"kind":"function","modifiers":[],"name":"claimRewards","nodeType":"FunctionDefinition","parameters":{"id":20516,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20508,"name":"holders","nodeType":"VariableDeclaration","scope":20662,"src":"17067:24:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":20506,"name":"address","nodeType":"ElementaryTypeName","src":"17067:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":20507,"length":null,"nodeType":"ArrayTypeName","src":"17067:9:34","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":20511,"name":"cTokens","nodeType":"VariableDeclaration","scope":20662,"src":"17093:23:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_memory_ptr","typeString":"contract CToken[]"},"typeName":{"baseType":{"contractScope":null,"id":20509,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"17093:6:34","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":20510,"length":null,"nodeType":"ArrayTypeName","src":"17093:8:34","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_storage_ptr","typeString":"contract CToken[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":20513,"name":"borrowers","nodeType":"VariableDeclaration","scope":20662,"src":"17118:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":20512,"name":"bool","nodeType":"ElementaryTypeName","src":"17118:4:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},{"constant":false,"id":20515,"name":"suppliers","nodeType":"VariableDeclaration","scope":20662,"src":"17134:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":20514,"name":"bool","nodeType":"ElementaryTypeName","src":"17134:4:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"17066:83:34"},"returnParameters":{"id":20517,"nodeType":"ParameterList","parameters":[],"src":"17157:0:34"},"scope":20921,"src":"17045:1091:34","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":20706,"nodeType":"Block","src":"18558:297:34","statements":[{"assignments":[20672],"declarations":[{"constant":false,"id":20672,"name":"comp","nodeType":"VariableDeclaration","scope":20706,"src":"18568:30:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_EIP20NonStandardInterface_$13549","typeString":"contract EIP20NonStandardInterface"},"typeName":{"contractScope":null,"id":20671,"name":"EIP20NonStandardInterface","nodeType":"UserDefinedTypeName","referencedDeclaration":13549,"src":"18568:25:34","typeDescriptions":{"typeIdentifier":"t_contract$_EIP20NonStandardInterface_$13549","typeString":"contract EIP20NonStandardInterface"}},"value":null,"visibility":"internal"}],"id":20676,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":20674,"name":"rewardToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21046,"src":"18627:11:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":20673,"name":"EIP20NonStandardInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13549,"src":"18601:25:34","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_EIP20NonStandardInterface_$13549_$","typeString":"type(contract EIP20NonStandardInterface)"}},"id":20675,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18601:38:34","typeDescriptions":{"typeIdentifier":"t_contract$_EIP20NonStandardInterface_$13549","typeString":"contract EIP20NonStandardInterface"}},"nodeType":"VariableDeclarationStatement","src":"18568:71:34"},{"assignments":[20678],"declarations":[{"constant":false,"id":20678,"name":"compRemaining","nodeType":"VariableDeclaration","scope":20706,"src":"18649:18:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20677,"name":"uint","nodeType":"ElementaryTypeName","src":"18649:4:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":20685,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":20682,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22650,"src":"18693:4:34","typeDescriptions":{"typeIdentifier":"t_contract$_RewardsDistributorDelegate_$20921","typeString":"contract RewardsDistributorDelegate"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_RewardsDistributorDelegate_$20921","typeString":"contract RewardsDistributorDelegate"}],"id":20681,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18685:7:34","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":20683,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18685:13:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":20679,"name":"comp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20672,"src":"18670:4:34","typeDescriptions":{"typeIdentifier":"t_contract$_EIP20NonStandardInterface_$13549","typeString":"contract EIP20NonStandardInterface"}},"id":20680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":13498,"src":"18670:14:34","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":20684,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18670:29:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18649:50:34"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":20692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":20686,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20666,"src":"18713:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"30","id":20687,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18722:1:34","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18713:10:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":20689,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20666,"src":"18727:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"argumentTypes":null,"id":20690,"name":"compRemaining","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20678,"src":"18737:13:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18727:23:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"18713:37:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":20703,"nodeType":"IfStatement","src":"18709:117:34","trueBody":{"id":20702,"nodeType":"Block","src":"18752:74:34","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":20696,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20664,"src":"18780:4:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":20697,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20666,"src":"18786:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":20693,"name":"comp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20672,"src":"18766:4:34","typeDescriptions":{"typeIdentifier":"t_contract$_EIP20NonStandardInterface_$13549","typeString":"contract EIP20NonStandardInterface"}},"id":20695,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":13505,"src":"18766:13:34","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) external"}},"id":20698,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18766:27:34","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20699,"nodeType":"ExpressionStatement","src":"18766:27:34"},{"expression":{"argumentTypes":null,"hexValue":"30","id":20700,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18814:1:34","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":20670,"id":20701,"nodeType":"Return","src":"18807:8:34"}]}},{"expression":{"argumentTypes":null,"id":20704,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20666,"src":"18842:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":20670,"id":20705,"nodeType":"Return","src":"18835:13:34"}]},"documentation":"@notice Transfer COMP to the user\n@dev Note: If there is not enough COMP, we do not perform the transfer all.\n@param user The address of the user to transfer COMP to\n@param amount The amount of COMP to (possibly) transfer\n@return The amount of COMP which was NOT transferred to the user","id":20707,"implemented":true,"kind":"function","modifiers":[],"name":"grantCompInternal","nodeType":"FunctionDefinition","parameters":{"id":20667,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20664,"name":"user","nodeType":"VariableDeclaration","scope":20707,"src":"18507:12:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20663,"name":"address","nodeType":"ElementaryTypeName","src":"18507:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":20666,"name":"amount","nodeType":"VariableDeclaration","scope":20707,"src":"18521:11:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20665,"name":"uint","nodeType":"ElementaryTypeName","src":"18521:4:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"18506:27:34"},"returnParameters":{"id":20670,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20669,"name":"","nodeType":"VariableDeclaration","scope":20707,"src":"18552:4:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20668,"name":"uint","nodeType":"ElementaryTypeName","src":"18552:4:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"18551:6:34"},"scope":20921,"src":"18480:375:34","stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},{"body":{"id":20741,"nodeType":"Block","src":"19240:248:34","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":20718,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":20715,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"19258:3:34","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":20716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"19258:10:34","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":20717,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21037,"src":"19272:5:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"19258:19:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"6f6e6c792061646d696e2063616e206772616e7420636f6d70","id":20719,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"19279:27:34","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_12faf5080ce59fc31f3d1b49f65e37cdb40fe1bc12300993fda1dbcdc1c5e5b8","typeString":"literal_string \"only admin can grant comp\""},"value":"only admin can grant comp"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_12faf5080ce59fc31f3d1b49f65e37cdb40fe1bc12300993fda1dbcdc1c5e5b8","typeString":"literal_string \"only admin can grant comp\""}],"id":20714,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"19250:7:34","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":20720,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19250:57:34","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20721,"nodeType":"ExpressionStatement","src":"19250:57:34"},{"assignments":[20723],"declarations":[{"constant":false,"id":20723,"name":"amountLeft","nodeType":"VariableDeclaration","scope":20741,"src":"19317:15:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20722,"name":"uint","nodeType":"ElementaryTypeName","src":"19317:4:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":20728,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":20725,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20709,"src":"19353:9:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":20726,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20711,"src":"19364:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20724,"name":"grantCompInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20707,"src":"19335:17:34","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,uint256) returns (uint256)"}},"id":20727,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19335:36:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19317:54:34"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20732,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":20730,"name":"amountLeft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20723,"src":"19389:10:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":20731,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19403:1:34","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19389:15:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"696e73756666696369656e7420636f6d7020666f72206772616e74","id":20733,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"19406:29:34","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_1153443ce7acf202edc12781ed442b4efe9c7648578aa749102e5c0ef009032b","typeString":"literal_string \"insufficient comp for grant\""},"value":"insufficient comp for grant"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1153443ce7acf202edc12781ed442b4efe9c7648578aa749102e5c0ef009032b","typeString":"literal_string \"insufficient comp for grant\""}],"id":20729,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"19381:7:34","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":20734,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19381:55:34","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20735,"nodeType":"ExpressionStatement","src":"19381:55:34"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":20737,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20709,"src":"19463:9:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":20738,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20711,"src":"19474:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20736,"name":"CompGranted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19438,"src":"19451:11:34","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":20739,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19451:30:34","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20740,"nodeType":"EmitStatement","src":"19446:35:34"}]},"documentation":"@notice Transfer COMP to the recipient\n@dev Note: If there is not enough COMP, we do not perform the transfer all.\n@param recipient The address of the recipient to transfer COMP to\n@param amount The amount of COMP to (possibly) transfer","id":20742,"implemented":true,"kind":"function","modifiers":[],"name":"_grantComp","nodeType":"FunctionDefinition","parameters":{"id":20712,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20709,"name":"recipient","nodeType":"VariableDeclaration","scope":20742,"src":"19201:17:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20708,"name":"address","nodeType":"ElementaryTypeName","src":"19201:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":20711,"name":"amount","nodeType":"VariableDeclaration","scope":20742,"src":"19220:11:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20710,"name":"uint","nodeType":"ElementaryTypeName","src":"19220:4:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"19200:32:34"},"returnParameters":{"id":20713,"nodeType":"ParameterList","parameters":[],"src":"19240:0:34"},"scope":20921,"src":"19181:307:34","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":20762,"nodeType":"Block","src":"19736:133:34","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":20753,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":20750,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"19754:3:34","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":20751,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"19754:10:34","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":20752,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21037,"src":"19768:5:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"19754:19:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"6f6e6c792061646d696e2063616e2073657420636f6d70207370656564","id":20754,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"19775:31:34","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_3cb11c44fa0b681787fda7f5b18da4e2e82460f13e09d5b06117c0b4fde4eb12","typeString":"literal_string \"only admin can set comp speed\""},"value":"only admin can set comp speed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3cb11c44fa0b681787fda7f5b18da4e2e82460f13e09d5b06117c0b4fde4eb12","typeString":"literal_string \"only admin can set comp speed\""}],"id":20749,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"19746:7:34","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":20755,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19746:61:34","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20756,"nodeType":"ExpressionStatement","src":"19746:61:34"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":20758,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20744,"src":"19844:6:34","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},{"argumentTypes":null,"id":20759,"name":"compSpeed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20746,"src":"19852:9:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20757,"name":"setCompSupplySpeedInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19735,"src":"19817:26:34","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_CToken_$6186_$_t_uint256_$returns$__$","typeString":"function (contract CToken,uint256)"}},"id":20760,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19817:45:34","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20761,"nodeType":"ExpressionStatement","src":"19817:45:34"}]},"documentation":"@notice Set COMP speed for a single market\n@param cToken The market whose COMP speed to update\n@param compSpeed New COMP speed for market","id":20763,"implemented":true,"kind":"function","modifiers":[],"name":"_setCompSupplySpeed","nodeType":"FunctionDefinition","parameters":{"id":20747,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20744,"name":"cToken","nodeType":"VariableDeclaration","scope":20763,"src":"19698:13:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},"typeName":{"contractScope":null,"id":20743,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"19698:6:34","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"value":null,"visibility":"internal"},{"constant":false,"id":20746,"name":"compSpeed","nodeType":"VariableDeclaration","scope":20763,"src":"19713:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20745,"name":"uint","nodeType":"ElementaryTypeName","src":"19713:4:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"19697:31:34"},"returnParameters":{"id":20748,"nodeType":"ParameterList","parameters":[],"src":"19736:0:34"},"scope":20921,"src":"19669:200:34","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":20783,"nodeType":"Block","src":"20117:133:34","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":20774,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":20771,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"20135:3:34","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":20772,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"20135:10:34","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":20773,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21037,"src":"20149:5:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"20135:19:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"6f6e6c792061646d696e2063616e2073657420636f6d70207370656564","id":20775,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"20156:31:34","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_3cb11c44fa0b681787fda7f5b18da4e2e82460f13e09d5b06117c0b4fde4eb12","typeString":"literal_string \"only admin can set comp speed\""},"value":"only admin can set comp speed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3cb11c44fa0b681787fda7f5b18da4e2e82460f13e09d5b06117c0b4fde4eb12","typeString":"literal_string \"only admin can set comp speed\""}],"id":20770,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"20127:7:34","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":20776,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20127:61:34","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20777,"nodeType":"ExpressionStatement","src":"20127:61:34"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":20779,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20765,"src":"20225:6:34","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},{"argumentTypes":null,"id":20780,"name":"compSpeed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20767,"src":"20233:9:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20778,"name":"setCompBorrowSpeedInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19853,"src":"20198:26:34","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_CToken_$6186_$_t_uint256_$returns$__$","typeString":"function (contract CToken,uint256)"}},"id":20781,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20198:45:34","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20782,"nodeType":"ExpressionStatement","src":"20198:45:34"}]},"documentation":"@notice Set COMP speed for a single market\n@param cToken The market whose COMP speed to update\n@param compSpeed New COMP speed for market","id":20784,"implemented":true,"kind":"function","modifiers":[],"name":"_setCompBorrowSpeed","nodeType":"FunctionDefinition","parameters":{"id":20768,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20765,"name":"cToken","nodeType":"VariableDeclaration","scope":20784,"src":"20079:13:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},"typeName":{"contractScope":null,"id":20764,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"20079:6:34","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"value":null,"visibility":"internal"},{"constant":false,"id":20767,"name":"compSpeed","nodeType":"VariableDeclaration","scope":20784,"src":"20094:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20766,"name":"uint","nodeType":"ElementaryTypeName","src":"20094:4:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"20078:31:34"},"returnParameters":{"id":20769,"nodeType":"ParameterList","parameters":[],"src":"20117:0:34"},"scope":20921,"src":"20050:200:34","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":20852,"nodeType":"Block","src":"20690:455:34","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":20800,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":20797,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"20708:3:34","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":20798,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"20708:10:34","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":20799,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21037,"src":"20722:5:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"20708:19:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"6f6e6c792061646d696e2063616e2073657420636f6d70207370656564","id":20801,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"20729:31:34","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_3cb11c44fa0b681787fda7f5b18da4e2e82460f13e09d5b06117c0b4fde4eb12","typeString":"literal_string \"only admin can set comp speed\""},"value":"only admin can set comp speed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3cb11c44fa0b681787fda7f5b18da4e2e82460f13e09d5b06117c0b4fde4eb12","typeString":"literal_string \"only admin can set comp speed\""}],"id":20796,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"20700:7:34","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":20802,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20700:61:34","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20803,"nodeType":"ExpressionStatement","src":"20700:61:34"},{"assignments":[20805],"declarations":[{"constant":false,"id":20805,"name":"numTokens","nodeType":"VariableDeclaration","scope":20852,"src":"20772:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20804,"name":"uint","nodeType":"ElementaryTypeName","src":"20772:4:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":20808,"initialValue":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":20806,"name":"cTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20787,"src":"20789:7:34","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_memory_ptr","typeString":"contract CToken[] memory"}},"id":20807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"20789:14:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"20772:31:34"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":20818,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":20810,"name":"numTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20805,"src":"20821:9:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":20811,"name":"supplySpeeds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20790,"src":"20834:12:34","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":20812,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"20834:19:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20821:32:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20817,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":20814,"name":"numTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20805,"src":"20857:9:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":20815,"name":"borrowSpeeds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20793,"src":"20870:12:34","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":20816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"20870:19:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20857:32:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"20821:68:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"526577617264734469737472696275746f723a3a5f736574436f6d7053706565647320696e76616c696420696e707574","id":20819,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"20891:50:34","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_ae85b97eee06b533d0b7b74b2eaadaa8d5b7476b5d7aec03421fd0f559e49a36","typeString":"literal_string \"RewardsDistributor::_setCompSpeeds invalid input\""},"value":"RewardsDistributor::_setCompSpeeds invalid input"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ae85b97eee06b533d0b7b74b2eaadaa8d5b7476b5d7aec03421fd0f559e49a36","typeString":"literal_string \"RewardsDistributor::_setCompSpeeds invalid input\""}],"id":20809,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"20813:7:34","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":20820,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20813:129:34","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20821,"nodeType":"ExpressionStatement","src":"20813:129:34"},{"body":{"id":20850,"nodeType":"Block","src":"20990:149:34","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":20833,"name":"cTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20787,"src":"21031:7:34","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_memory_ptr","typeString":"contract CToken[] memory"}},"id":20835,"indexExpression":{"argumentTypes":null,"id":20834,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20823,"src":"21039:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"21031:10:34","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":20836,"name":"supplySpeeds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20790,"src":"21043:12:34","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":20838,"indexExpression":{"argumentTypes":null,"id":20837,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20823,"src":"21056:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"21043:15:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20832,"name":"setCompSupplySpeedInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19735,"src":"21004:26:34","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_CToken_$6186_$_t_uint256_$returns$__$","typeString":"function (contract CToken,uint256)"}},"id":20839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21004:55:34","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20840,"nodeType":"ExpressionStatement","src":"21004:55:34"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":20842,"name":"cTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20787,"src":"21100:7:34","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_memory_ptr","typeString":"contract CToken[] memory"}},"id":20844,"indexExpression":{"argumentTypes":null,"id":20843,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20823,"src":"21108:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"21100:10:34","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":20845,"name":"borrowSpeeds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20793,"src":"21112:12:34","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":20847,"indexExpression":{"argumentTypes":null,"id":20846,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20823,"src":"21125:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"21112:15:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20841,"name":"setCompBorrowSpeedInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19853,"src":"21073:26:34","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_CToken_$6186_$_t_uint256_$returns$__$","typeString":"function (contract CToken,uint256)"}},"id":20848,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21073:55:34","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20849,"nodeType":"ExpressionStatement","src":"21073:55:34"}]},"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":20826,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20823,"src":"20970:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"id":20827,"name":"numTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20805,"src":"20974:9:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20970:13:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":20851,"initializationExpression":{"assignments":[20823],"declarations":[{"constant":false,"id":20823,"name":"i","nodeType":"VariableDeclaration","scope":20851,"src":"20958:6:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20822,"name":"uint","nodeType":"ElementaryTypeName","src":"20958:4:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":20825,"initialValue":{"argumentTypes":null,"hexValue":"30","id":20824,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20967:1:34","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"20958:10:34"},"loopExpression":{"expression":{"argumentTypes":null,"id":20830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"20985:3:34","subExpression":{"argumentTypes":null,"id":20829,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20823,"src":"20987:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20831,"nodeType":"ExpressionStatement","src":"20985:3:34"},"nodeType":"ForStatement","src":"20953:186:34"}]},"documentation":"@notice Set COMP borrow and supply speeds for the specified markets.\n@param cTokens The markets whose COMP speed to update.\n@param supplySpeeds New supply-side COMP speed for the corresponding market.\n@param borrowSpeeds New borrow-side COMP speed for the corresponding market.","id":20853,"implemented":true,"kind":"function","modifiers":[],"name":"_setCompSpeeds","nodeType":"FunctionDefinition","parameters":{"id":20794,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20787,"name":"cTokens","nodeType":"VariableDeclaration","scope":20853,"src":"20602:23:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_memory_ptr","typeString":"contract CToken[]"},"typeName":{"baseType":{"contractScope":null,"id":20785,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"20602:6:34","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":20786,"length":null,"nodeType":"ArrayTypeName","src":"20602:8:34","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_storage_ptr","typeString":"contract CToken[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":20790,"name":"supplySpeeds","nodeType":"VariableDeclaration","scope":20853,"src":"20627:26:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":20788,"name":"uint","nodeType":"ElementaryTypeName","src":"20627:4:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20789,"length":null,"nodeType":"ArrayTypeName","src":"20627:6:34","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":20793,"name":"borrowSpeeds","nodeType":"VariableDeclaration","scope":20853,"src":"20655:26:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":20791,"name":"uint","nodeType":"ElementaryTypeName","src":"20655:4:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20792,"length":null,"nodeType":"ArrayTypeName","src":"20655:6:34","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"value":null,"visibility":"internal"}],"src":"20601:81:34"},"returnParameters":{"id":20795,"nodeType":"ParameterList","parameters":[],"src":"20690:0:34"},"scope":20921,"src":"20578:567:34","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":20901,"nodeType":"Block","src":"21424:551:34","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":20864,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":20861,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"21442:3:34","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":20862,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"21442:10:34","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":20863,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21037,"src":"21456:5:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"21442:19:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"6f6e6c792061646d696e2063616e2073657420636f6d70207370656564","id":20865,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"21463:31:34","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_3cb11c44fa0b681787fda7f5b18da4e2e82460f13e09d5b06117c0b4fde4eb12","typeString":"literal_string \"only admin can set comp speed\""},"value":"only admin can set comp speed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3cb11c44fa0b681787fda7f5b18da4e2e82460f13e09d5b06117c0b4fde4eb12","typeString":"literal_string \"only admin can set comp speed\""}],"id":20860,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"21434:7:34","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":20866,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21434:61:34","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20867,"nodeType":"ExpressionStatement","src":"21434:61:34"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":20869,"name":"contributor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20855,"src":"21625:11:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":20868,"name":"updateContributorRewards","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20462,"src":"21600:24:34","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":20870,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21600:37:34","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20871,"nodeType":"ExpressionStatement","src":"21600:37:34"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20874,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":20872,"name":"compSpeed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20857,"src":"21651:9:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":20873,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21664:1:34","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21651:14:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":20888,"nodeType":"Block","src":"21769:77:34","statements":[{"expression":{"argumentTypes":null,"id":20886,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":20881,"name":"lastContributorBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21094,"src":"21783:20:34","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":20883,"indexExpression":{"argumentTypes":null,"id":20882,"name":"contributor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20855,"src":"21804:11:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"21783:33:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":20884,"name":"getBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20911,"src":"21819:14:34","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":20885,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21819:16:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21783:52:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20887,"nodeType":"ExpressionStatement","src":"21783:52:34"}]},"id":20889,"nodeType":"IfStatement","src":"21647:199:34","trueBody":{"id":20880,"nodeType":"Block","src":"21667:96:34","statements":[{"expression":{"argumentTypes":null,"id":20878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"21712:40:34","subExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":20875,"name":"lastContributorBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21094,"src":"21719:20:34","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":20877,"indexExpression":{"argumentTypes":null,"id":20876,"name":"contributor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20855,"src":"21740:11:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"21719:33:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20879,"nodeType":"ExpressionStatement","src":"21712:40:34"}]}},{"expression":{"argumentTypes":null,"id":20894,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":20890,"name":"compContributorSpeeds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21090,"src":"21855:21:34","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":20892,"indexExpression":{"argumentTypes":null,"id":20891,"name":"contributor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20855,"src":"21877:11:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"21855:34:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":20893,"name":"compSpeed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20857,"src":"21892:9:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21855:46:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20895,"nodeType":"ExpressionStatement","src":"21855:46:34"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":20897,"name":"contributor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20855,"src":"21945:11:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":20898,"name":"compSpeed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20857,"src":"21958:9:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20896,"name":"ContributorCompSpeedUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19412,"src":"21917:27:34","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":20899,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21917:51:34","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20900,"nodeType":"EmitStatement","src":"21912:56:34"}]},"documentation":"@notice Set COMP speed for a single contributor\n@param contributor The contributor whose COMP speed to update\n@param compSpeed New COMP speed for contributor","id":20902,"implemented":true,"kind":"function","modifiers":[],"name":"_setContributorCompSpeed","nodeType":"FunctionDefinition","parameters":{"id":20858,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20855,"name":"contributor","nodeType":"VariableDeclaration","scope":20902,"src":"21380:19:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20854,"name":"address","nodeType":"ElementaryTypeName","src":"21380:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":20857,"name":"compSpeed","nodeType":"VariableDeclaration","scope":20902,"src":"21401:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20856,"name":"uint","nodeType":"ElementaryTypeName","src":"21401:4:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"21379:37:34"},"returnParameters":{"id":20859,"nodeType":"ParameterList","parameters":[],"src":"21424:0:34"},"scope":20921,"src":"21346:629:34","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":20910,"nodeType":"Block","src":"22064:36:34","statements":[{"expression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":20907,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22540,"src":"22081:5:34","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":20908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"number","nodeType":"MemberAccess","referencedDeclaration":null,"src":"22081:12:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":20906,"id":20909,"nodeType":"Return","src":"22074:19:34"}]},"documentation":"* Helper Functions ","id":20911,"implemented":true,"kind":"function","modifiers":[],"name":"getBlockNumber","nodeType":"FunctionDefinition","parameters":{"id":20903,"nodeType":"ParameterList","parameters":[],"src":"22034:2:34"},"returnParameters":{"id":20906,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20905,"name":"","nodeType":"VariableDeclaration","scope":20911,"src":"22058:4:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20904,"name":"uint","nodeType":"ElementaryTypeName","src":"22058:4:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"22057:6:34"},"scope":20921,"src":"22011:89:34","stateMutability":"view","superFunction":null,"visibility":"public"},{"body":{"id":20919,"nodeType":"Block","src":"22235:34:34","statements":[{"expression":{"argumentTypes":null,"id":20917,"name":"allMarkets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21054,"src":"22252:10:34","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_storage","typeString":"contract CToken[] storage ref"}},"functionReturnParameters":20916,"id":20918,"nodeType":"Return","src":"22245:17:34"}]},"documentation":"@notice Returns an array of all markets.","id":20920,"implemented":true,"kind":"function","modifiers":[],"name":"getAllMarkets","nodeType":"FunctionDefinition","parameters":{"id":20912,"nodeType":"ParameterList","parameters":[],"src":"22192:2:34"},"returnParameters":{"id":20916,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20915,"name":"","nodeType":"VariableDeclaration","scope":20920,"src":"22218:15:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_memory_ptr","typeString":"contract CToken[]"},"typeName":{"baseType":{"contractScope":null,"id":20913,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"22218:6:34","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":20914,"length":null,"nodeType":"ArrayTypeName","src":"22218:8:34","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_storage_ptr","typeString":"contract CToken[]"}},"value":null,"visibility":"internal"}],"src":"22217:17:34"},"scope":20921,"src":"22170:99:34","stateMutability":"view","superFunction":null,"visibility":"external"}],"scope":20922,"src":"274:21997:34"}],"src":"0:22272:34"},"id":34},"contracts/RewardsDistributorDelegator.sol":{"ast":{"absolutePath":"contracts/RewardsDistributorDelegator.sol","exportedSymbols":{"RewardsDistributorDelegator":[21032]},"id":21033,"nodeType":"SourceUnit","nodes":[{"id":20923,"literals":["solidity","0.5",".17"],"nodeType":"PragmaDirective","src":"0:23:35"},{"absolutePath":"contracts/RewardsDistributorStorage.sol","file":"./RewardsDistributorStorage.sol","id":20924,"nodeType":"ImportDirective","scope":21033,"sourceUnit":21096,"src":"25:41:35","symbolAliases":[],"unitAlias":""},{"baseContracts":[{"arguments":null,"baseName":{"contractScope":null,"id":20925,"name":"RewardsDistributorDelegatorStorage","nodeType":"UserDefinedTypeName","referencedDeclaration":21042,"src":"108:34:35","typeDescriptions":{"typeIdentifier":"t_contract$_RewardsDistributorDelegatorStorage_$21042","typeString":"contract RewardsDistributorDelegatorStorage"}},"id":20926,"nodeType":"InheritanceSpecifier","src":"108:34:35"}],"contractDependencies":[21042],"contractKind":"contract","documentation":null,"fullyImplemented":true,"id":21032,"linearizedBaseContracts":[21032,21042],"name":"RewardsDistributorDelegator","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":"@notice Emitted when implementation is changed","id":20932,"name":"NewImplementation","nodeType":"EventDefinition","parameters":{"id":20931,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20928,"indexed":false,"name":"oldImplementation","nodeType":"VariableDeclaration","scope":20932,"src":"228:25:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20927,"name":"address","nodeType":"ElementaryTypeName","src":"228:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":20930,"indexed":false,"name":"newImplementation","nodeType":"VariableDeclaration","scope":20932,"src":"255:25:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20929,"name":"address","nodeType":"ElementaryTypeName","src":"255:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"227:54:35"},"src":"204:78:35"},{"body":{"id":20963,"nodeType":"Block","src":"383:258:35","statements":[{"expression":{"argumentTypes":null,"id":20944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":20941,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21037,"src":"448:5:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":20942,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"456:3:35","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":20943,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"456:10:35","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"448:18:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":20945,"nodeType":"ExpressionStatement","src":"448:18:35"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":20947,"name":"implementation_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20938,"src":"488:15:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"696e697469616c697a65286164647265737329","id":20950,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"529:21:35","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_c4d66de8473e8f74cb05df264ee8262da16b56717ef1f05d73bfdcea3adc85e5","typeString":"literal_string \"initialize(address)\""},"value":"initialize(address)"},{"argumentTypes":null,"id":20951,"name":"rewardToken_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20936,"src":"552:12:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c4d66de8473e8f74cb05df264ee8262da16b56717ef1f05d73bfdcea3adc85e5","typeString":"literal_string \"initialize(address)\""},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":20948,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22537,"src":"505:3:35","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":20949,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSignature","nodeType":"MemberAccess","referencedDeclaration":null,"src":"505:23:35","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (string memory) pure returns (bytes memory)"}},"id":20952,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"505:60:35","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":20946,"name":"delegateTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21018,"src":"477:10:35","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory)"}},"id":20953,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"477:89:35","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20954,"nodeType":"ExpressionStatement","src":"477:89:35"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":20956,"name":"implementation_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20938,"src":"596:15:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":20955,"name":"_setImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21000,"src":"577:18:35","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":20957,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"577:35:35","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20958,"nodeType":"ExpressionStatement","src":"577:35:35"},{"expression":{"argumentTypes":null,"id":20961,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":20959,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21037,"src":"623:5:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":20960,"name":"admin_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20934,"src":"631:6:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"623:14:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":20962,"nodeType":"ExpressionStatement","src":"623:14:35"}]},"documentation":null,"id":20964,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":20939,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20934,"name":"admin_","nodeType":"VariableDeclaration","scope":20964,"src":"301:14:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20933,"name":"address","nodeType":"ElementaryTypeName","src":"301:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":20936,"name":"rewardToken_","nodeType":"VariableDeclaration","scope":20964,"src":"320:20:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20935,"name":"address","nodeType":"ElementaryTypeName","src":"320:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":20938,"name":"implementation_","nodeType":"VariableDeclaration","scope":20964,"src":"351:23:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20937,"name":"address","nodeType":"ElementaryTypeName","src":"351:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"296:79:35"},"returnParameters":{"id":20940,"nodeType":"ParameterList","parameters":[],"src":"383:0:35"},"scope":21032,"src":"285:356:35","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":20999,"nodeType":"Block","src":"885:402:35","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":20973,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":20970,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"903:3:35","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":20971,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"903:10:35","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":20972,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21037,"src":"917:5:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"903:19:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"526577617264734469737472696275746f7244656c656761746f723a3a5f736574496d706c656d656e746174696f6e3a2061646d696e206f6e6c79","id":20974,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"924:61:35","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_174146a3aab18a1750979486008c35082d6e17faf36ecf1098c00f2d1df249f1","typeString":"literal_string \"RewardsDistributorDelegator::_setImplementation: admin only\""},"value":"RewardsDistributorDelegator::_setImplementation: admin only"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_174146a3aab18a1750979486008c35082d6e17faf36ecf1098c00f2d1df249f1","typeString":"literal_string \"RewardsDistributorDelegator::_setImplementation: admin only\""}],"id":20969,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"895:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":20975,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"895:91:35","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20976,"nodeType":"ExpressionStatement","src":"895:91:35"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":20982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":20978,"name":"implementation_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20966,"src":"1004:15:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":20980,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1031:1:35","subdenomination":null,"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":20979,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1023:7:35","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":20981,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1023:10:35","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"1004:29:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"526577617264734469737472696275746f7244656c656761746f723a3a5f736574496d706c656d656e746174696f6e3a20696e76616c696420696d706c656d656e746174696f6e2061646472657373","id":20983,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1035:81:35","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_7d594f5c69a270c2e612ba8cd9b1c0756970ef0a8558329f90abd89e5eaf8b91","typeString":"literal_string \"RewardsDistributorDelegator::_setImplementation: invalid implementation address\""},"value":"RewardsDistributorDelegator::_setImplementation: invalid implementation address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7d594f5c69a270c2e612ba8cd9b1c0756970ef0a8558329f90abd89e5eaf8b91","typeString":"literal_string \"RewardsDistributorDelegator::_setImplementation: invalid implementation address\""}],"id":20977,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"996:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":20984,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"996:121:35","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20985,"nodeType":"ExpressionStatement","src":"996:121:35"},{"assignments":[20987],"declarations":[{"constant":false,"id":20987,"name":"oldImplementation","nodeType":"VariableDeclaration","scope":20999,"src":"1128:25:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20986,"name":"address","nodeType":"ElementaryTypeName","src":"1128:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":20989,"initialValue":{"argumentTypes":null,"id":20988,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21041,"src":"1156:14:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"1128:42:35"},{"expression":{"argumentTypes":null,"id":20992,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":20990,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21041,"src":"1180:14:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":20991,"name":"implementation_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20966,"src":"1197:15:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1180:32:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":20993,"nodeType":"ExpressionStatement","src":"1180:32:35"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":20995,"name":"oldImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20987,"src":"1246:17:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":20996,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21041,"src":"1265:14:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":20994,"name":"NewImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20932,"src":"1228:17:35","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":20997,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1228:52:35","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20998,"nodeType":"EmitStatement","src":"1223:57:35"}]},"documentation":"@notice Called by the admin to update the implementation of the delegator\n@param implementation_ The address of the new implementation for delegation","id":21000,"implemented":true,"kind":"function","modifiers":[],"name":"_setImplementation","nodeType":"FunctionDefinition","parameters":{"id":20967,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20966,"name":"implementation_","nodeType":"VariableDeclaration","scope":21000,"src":"853:23:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20965,"name":"address","nodeType":"ElementaryTypeName","src":"853:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"852:25:35"},"returnParameters":{"id":20968,"nodeType":"ParameterList","parameters":[],"src":"885:0:35"},"scope":21032,"src":"825:462:35","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":21017,"nodeType":"Block","src":"1646:221:35","statements":[{"assignments":[21008,21010],"declarations":[{"constant":false,"id":21008,"name":"success","nodeType":"VariableDeclaration","scope":21017,"src":"1657:12:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":21007,"name":"bool","nodeType":"ElementaryTypeName","src":"1657:4:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},{"constant":false,"id":21010,"name":"returnData","nodeType":"VariableDeclaration","scope":21017,"src":"1671:23:35","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":21009,"name":"bytes","nodeType":"ElementaryTypeName","src":"1671:5:35","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"}],"id":21015,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":21013,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21004,"src":"1718:4:35","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":null,"id":21011,"name":"callee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21002,"src":"1698:6:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":21012,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"delegatecall","nodeType":"MemberAccess","referencedDeclaration":null,"src":"1698:19:35","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":21014,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1698:25:35","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"1656:67:35"},{"externalReferences":[{"success":{"declaration":21008,"isOffset":false,"isSlot":false,"src":"1762:7:35","valueSize":1}},{"returnData":{"declaration":21010,"isOffset":false,"isSlot":false,"src":"1803:10:35","valueSize":1}}],"id":21016,"nodeType":"InlineAssembly","operations":"{\n if eq(success, 0)\n {\n revert(add(returnData, 0x20), returndatasize())\n }\n}","src":"1733:128:35"}]},"documentation":"@notice Internal method to delegate execution to another contract\n@dev It returns to the external caller whatever the implementation returns or forwards reverts\n@param callee The contract to delegatecall\n@param data The raw data to delegatecall","id":21018,"implemented":true,"kind":"function","modifiers":[],"name":"delegateTo","nodeType":"FunctionDefinition","parameters":{"id":21005,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21002,"name":"callee","nodeType":"VariableDeclaration","scope":21018,"src":"1602:14:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21001,"name":"address","nodeType":"ElementaryTypeName","src":"1602:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":21004,"name":"data","nodeType":"VariableDeclaration","scope":21018,"src":"1618:17:35","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":21003,"name":"bytes","nodeType":"ElementaryTypeName","src":"1618:5:35","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"}],"src":"1601:35:35"},"returnParameters":{"id":21006,"nodeType":"ParameterList","parameters":[],"src":"1646:0:35"},"scope":21032,"src":"1582:285:35","stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},{"body":{"id":21030,"nodeType":"Block","src":"2083:432:35","statements":[{"assignments":[21022,null],"declarations":[{"constant":false,"id":21022,"name":"success","nodeType":"VariableDeclaration","scope":21030,"src":"2160:12:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":21021,"name":"bool","nodeType":"ElementaryTypeName","src":"2160:4:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},null],"id":21028,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":21025,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"2206:3:35","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":21026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"data","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2206:8:35","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"argumentTypes":null,"id":21023,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21041,"src":"2178:14:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":21024,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"delegatecall","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2178:27:35","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":21027,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2178:37:35","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2159:56:35"},{"externalReferences":[{"success":{"declaration":21022,"isOffset":false,"isSlot":false,"src":"2367:7:35","valueSize":1}}],"id":21029,"nodeType":"InlineAssembly","operations":"{\n let free_mem_ptr := mload(0x40)\n returndatacopy(free_mem_ptr, 0, returndatasize())\n switch success\n case 0 {\n revert(free_mem_ptr, returndatasize())\n }\n default {\n return(free_mem_ptr, returndatasize())\n }\n}","src":"2226:283:35"}]},"documentation":"@dev Delegates execution to an implementation contract.\nIt returns to the external caller whatever the implementation returns\nor forwards reverts.","id":21031,"implemented":true,"kind":"fallback","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":21019,"nodeType":"ParameterList","parameters":[],"src":"2063:2:35"},"returnParameters":{"id":21020,"nodeType":"ParameterList","parameters":[],"src":"2083:0:35"},"scope":21032,"src":"2054:461:35","stateMutability":"payable","superFunction":null,"visibility":"external"}],"scope":21033,"src":"68:2449:35"}],"src":"0:2518:35"},"id":35},"contracts/RewardsDistributorStorage.sol":{"ast":{"absolutePath":"contracts/RewardsDistributorStorage.sol","exportedSymbols":{"RewardsDistributorDelegateStorageV1":[21095],"RewardsDistributorDelegatorStorage":[21042]},"id":21096,"nodeType":"SourceUnit","nodes":[{"id":21034,"literals":["solidity","0.5",".17"],"nodeType":"PragmaDirective","src":"0:23:36"},{"absolutePath":"contracts/CToken.sol","file":"./CToken.sol","id":21035,"nodeType":"ImportDirective","scope":21096,"sourceUnit":6187,"src":"25:22:36","symbolAliases":[],"unitAlias":""},{"baseContracts":[],"contractDependencies":[],"contractKind":"contract","documentation":null,"fullyImplemented":true,"id":21042,"linearizedBaseContracts":[21042],"name":"RewardsDistributorDelegatorStorage","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":21037,"name":"admin","nodeType":"VariableDeclaration","scope":21042,"src":"147:20:36","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21036,"name":"address","nodeType":"ElementaryTypeName","src":"147:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"public"},{"constant":false,"id":21039,"name":"pendingAdmin","nodeType":"VariableDeclaration","scope":21042,"src":"230:27:36","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21038,"name":"address","nodeType":"ElementaryTypeName","src":"230:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"public"},{"constant":false,"id":21041,"name":"implementation","nodeType":"VariableDeclaration","scope":21042,"src":"316:29:36","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21040,"name":"address","nodeType":"ElementaryTypeName","src":"316:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"public"}],"scope":21096,"src":"49:299:36"},{"baseContracts":[{"arguments":null,"baseName":{"contractScope":null,"id":21043,"name":"RewardsDistributorDelegatorStorage","nodeType":"UserDefinedTypeName","referencedDeclaration":21042,"src":"692:34:36","typeDescriptions":{"typeIdentifier":"t_contract$_RewardsDistributorDelegatorStorage_$21042","typeString":"contract RewardsDistributorDelegatorStorage"}},"id":21044,"nodeType":"InheritanceSpecifier","src":"692:34:36"}],"contractDependencies":[21042],"contractKind":"contract","documentation":"@title Storage for RewardsDistributorDelegate\n@notice For future upgrades, do not change RewardsDistributorDelegateStorageV1. Create a new\ncontract which implements RewardsDistributorDelegateStorageV1 and following the naming convention\nRewardsDistributorDelegateStorageVX.","fullyImplemented":true,"id":21095,"linearizedBaseContracts":[21095,21042],"name":"RewardsDistributorDelegateStorageV1","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":21046,"name":"rewardToken","nodeType":"VariableDeclaration","scope":21095,"src":"779:26:36","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21045,"name":"address","nodeType":"ElementaryTypeName","src":"779:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"public"},{"canonicalName":"RewardsDistributorDelegateStorageV1.CompMarketState","id":21051,"members":[{"constant":false,"id":21048,"name":"index","nodeType":"VariableDeclaration","scope":21051,"src":"926:13:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":21047,"name":"uint224","nodeType":"ElementaryTypeName","src":"926:7:36","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"value":null,"visibility":"internal"},{"constant":false,"id":21050,"name":"block","nodeType":"VariableDeclaration","scope":21051,"src":"1017:12:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":21049,"name":"uint32","nodeType":"ElementaryTypeName","src":"1017:6:36","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"value":null,"visibility":"internal"}],"name":"CompMarketState","nodeType":"StructDefinition","scope":21095,"src":"812:224:36","visibility":"public"},{"constant":false,"id":21054,"name":"allMarkets","nodeType":"VariableDeclaration","scope":21095,"src":"1080:26:36","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_storage","typeString":"contract CToken[]"},"typeName":{"baseType":{"contractScope":null,"id":21052,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"1080:6:36","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":21053,"length":null,"nodeType":"ArrayTypeName","src":"1080:8:36","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_CToken_$6186_$dyn_storage_ptr","typeString":"contract CToken[]"}},"value":null,"visibility":"public"},{"constant":false,"id":21058,"name":"compSupplySpeeds","nodeType":"VariableDeclaration","scope":21095,"src":"1183:48:36","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":21057,"keyType":{"id":21055,"name":"address","nodeType":"ElementaryTypeName","src":"1191:7:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1183:24:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":21056,"name":"uint","nodeType":"ElementaryTypeName","src":"1202:4:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"value":null,"visibility":"public"},{"constant":false,"id":21062,"name":"compBorrowSpeeds","nodeType":"VariableDeclaration","scope":21095,"src":"1308:48:36","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":21061,"keyType":{"id":21059,"name":"address","nodeType":"ElementaryTypeName","src":"1316:7:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1308:24:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":21060,"name":"uint","nodeType":"ElementaryTypeName","src":"1327:4:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"value":null,"visibility":"public"},{"constant":false,"id":21066,"name":"compSupplyState","nodeType":"VariableDeclaration","scope":21095,"src":"1424:58:36","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_CompMarketState_$21051_storage_$","typeString":"mapping(address => struct RewardsDistributorDelegateStorageV1.CompMarketState)"},"typeName":{"id":21065,"keyType":{"id":21063,"name":"address","nodeType":"ElementaryTypeName","src":"1432:7:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1424:35:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_CompMarketState_$21051_storage_$","typeString":"mapping(address => struct RewardsDistributorDelegateStorageV1.CompMarketState)"},"valueType":{"contractScope":null,"id":21064,"name":"CompMarketState","nodeType":"UserDefinedTypeName","referencedDeclaration":21051,"src":"1443:15:36","typeDescriptions":{"typeIdentifier":"t_struct$_CompMarketState_$21051_storage_ptr","typeString":"struct RewardsDistributorDelegateStorageV1.CompMarketState"}}},"value":null,"visibility":"public"},{"constant":false,"id":21070,"name":"compBorrowState","nodeType":"VariableDeclaration","scope":21095,"src":"1550:58:36","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_CompMarketState_$21051_storage_$","typeString":"mapping(address => struct RewardsDistributorDelegateStorageV1.CompMarketState)"},"typeName":{"id":21069,"keyType":{"id":21067,"name":"address","nodeType":"ElementaryTypeName","src":"1558:7:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1550:35:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_CompMarketState_$21051_storage_$","typeString":"mapping(address => struct RewardsDistributorDelegateStorageV1.CompMarketState)"},"valueType":{"contractScope":null,"id":21068,"name":"CompMarketState","nodeType":"UserDefinedTypeName","referencedDeclaration":21051,"src":"1569:15:36","typeDescriptions":{"typeIdentifier":"t_struct$_CompMarketState_$21051_storage_ptr","typeString":"struct RewardsDistributorDelegateStorageV1.CompMarketState"}}},"value":null,"visibility":"public"},{"constant":false,"id":21076,"name":"compSupplierIndex","nodeType":"VariableDeclaration","scope":21095,"src":"1725:69:36","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":21075,"keyType":{"id":21071,"name":"address","nodeType":"ElementaryTypeName","src":"1733:7:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1725:44:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"valueType":{"id":21074,"keyType":{"id":21072,"name":"address","nodeType":"ElementaryTypeName","src":"1752:7:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1744:24:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":21073,"name":"uint","nodeType":"ElementaryTypeName","src":"1763:4:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"value":null,"visibility":"public"},{"constant":false,"id":21082,"name":"compBorrowerIndex","nodeType":"VariableDeclaration","scope":21095,"src":"1911:69:36","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":21081,"keyType":{"id":21077,"name":"address","nodeType":"ElementaryTypeName","src":"1919:7:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1911:44:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"valueType":{"id":21080,"keyType":{"id":21078,"name":"address","nodeType":"ElementaryTypeName","src":"1938:7:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1930:24:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":21079,"name":"uint","nodeType":"ElementaryTypeName","src":"1949:4:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"value":null,"visibility":"public"},{"constant":false,"id":21086,"name":"compAccrued","nodeType":"VariableDeclaration","scope":21095,"src":"2057:43:36","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":21085,"keyType":{"id":21083,"name":"address","nodeType":"ElementaryTypeName","src":"2065:7:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2057:24:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":21084,"name":"uint","nodeType":"ElementaryTypeName","src":"2076:4:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"value":null,"visibility":"public"},{"constant":false,"id":21090,"name":"compContributorSpeeds","nodeType":"VariableDeclaration","scope":21095,"src":"2184:53:36","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":21089,"keyType":{"id":21087,"name":"address","nodeType":"ElementaryTypeName","src":"2192:7:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2184:24:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":21088,"name":"uint","nodeType":"ElementaryTypeName","src":"2203:4:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"value":null,"visibility":"public"},{"constant":false,"id":21094,"name":"lastContributorBlock","nodeType":"VariableDeclaration","scope":21095,"src":"2329:52:36","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":21093,"keyType":{"id":21091,"name":"address","nodeType":"ElementaryTypeName","src":"2337:7:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2329:24:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":21092,"name":"uint","nodeType":"ElementaryTypeName","src":"2348:4:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"value":null,"visibility":"public"}],"scope":21096,"src":"644:1740:36"}],"src":"0:2385:36"},"id":36},"contracts/SafeMath.sol":{"ast":{"absolutePath":"contracts/SafeMath.sol","exportedSymbols":{"SafeMath":[21345]},"id":21346,"nodeType":"SourceUnit","nodes":[{"id":21097,"literals":["solidity","0.5",".17"],"nodeType":"PragmaDirective","src":"0:23:37"},{"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":"@dev Wrappers over Solidity's arithmetic operations with added overflow\nchecks.\n * Arithmetic operations in Solidity wrap on overflow. This can easily result\nin bugs, because programmers usually assume that an overflow raises an\nerror, which is the standard behavior in high level programming languages.\n`SafeMath` restores this intuition by reverting the transaction when an\noperation overflows.\n * Using this library instead of the unchecked operations eliminates an entire\nclass of bugs, so it's recommended to use it always.","fullyImplemented":true,"id":21345,"linearizedBaseContracts":[21345],"name":"SafeMath","nodeType":"ContractDefinition","nodes":[{"body":{"id":21121,"nodeType":"Block","src":"1025:109:37","statements":[{"assignments":[21107],"declarations":[{"constant":false,"id":21107,"name":"c","nodeType":"VariableDeclaration","scope":21121,"src":"1035:9:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21106,"name":"uint256","nodeType":"ElementaryTypeName","src":"1035:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":21111,"initialValue":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21110,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":21108,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21099,"src":"1047:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"argumentTypes":null,"id":21109,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21101,"src":"1051:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1047:5:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1035:17:37"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":21113,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21107,"src":"1070:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"argumentTypes":null,"id":21114,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21099,"src":"1075:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1070:6:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"536166654d6174683a206164646974696f6e206f766572666c6f77","id":21116,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1078:29:37","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a","typeString":"literal_string \"SafeMath: addition overflow\""},"value":"SafeMath: addition overflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a","typeString":"literal_string \"SafeMath: addition overflow\""}],"id":21112,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"1062:7:37","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":21117,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1062:46:37","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21118,"nodeType":"ExpressionStatement","src":"1062:46:37"},{"expression":{"argumentTypes":null,"id":21119,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21107,"src":"1126:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":21105,"id":21120,"nodeType":"Return","src":"1119:8:37"}]},"documentation":"@dev Returns the addition of two unsigned integers, reverting on overflow.\n * Counterpart to Solidity's `+` operator.\n * Requirements:\n- Addition cannot overflow.","id":21122,"implemented":true,"kind":"function","modifiers":[],"name":"add","nodeType":"FunctionDefinition","parameters":{"id":21102,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21099,"name":"a","nodeType":"VariableDeclaration","scope":21122,"src":"971:9:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21098,"name":"uint256","nodeType":"ElementaryTypeName","src":"971:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":21101,"name":"b","nodeType":"VariableDeclaration","scope":21122,"src":"982:9:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21100,"name":"uint256","nodeType":"ElementaryTypeName","src":"982:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"970:22:37"},"returnParameters":{"id":21105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21104,"name":"","nodeType":"VariableDeclaration","scope":21122,"src":"1016:7:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21103,"name":"uint256","nodeType":"ElementaryTypeName","src":"1016:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1015:9:37"},"scope":21345,"src":"958:176:37","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":21148,"nodeType":"Block","src":"1470:92:37","statements":[{"assignments":[21134],"declarations":[{"constant":false,"id":21134,"name":"c","nodeType":"VariableDeclaration","scope":21148,"src":"1480:9:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21133,"name":"uint256","nodeType":"ElementaryTypeName","src":"1480:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":21138,"initialValue":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21137,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":21135,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21124,"src":"1492:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"argumentTypes":null,"id":21136,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21126,"src":"1496:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1492:5:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1480:17:37"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":21140,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21134,"src":"1515:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"argumentTypes":null,"id":21141,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21124,"src":"1520:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1515:6:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"id":21143,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21128,"src":"1523:12:37","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":21139,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"1507:7:37","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":21144,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1507:29:37","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21145,"nodeType":"ExpressionStatement","src":"1507:29:37"},{"expression":{"argumentTypes":null,"id":21146,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21134,"src":"1554:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":21132,"id":21147,"nodeType":"Return","src":"1547:8:37"}]},"documentation":"@dev Returns the addition of two unsigned integers, reverting with custom message on overflow.\n * Counterpart to Solidity's `+` operator.\n * Requirements:\n- Addition cannot overflow.","id":21149,"implemented":true,"kind":"function","modifiers":[],"name":"add","nodeType":"FunctionDefinition","parameters":{"id":21129,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21124,"name":"a","nodeType":"VariableDeclaration","scope":21149,"src":"1388:9:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21123,"name":"uint256","nodeType":"ElementaryTypeName","src":"1388:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":21126,"name":"b","nodeType":"VariableDeclaration","scope":21149,"src":"1399:9:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21125,"name":"uint256","nodeType":"ElementaryTypeName","src":"1399:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":21128,"name":"errorMessage","nodeType":"VariableDeclaration","scope":21149,"src":"1410:26:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":21127,"name":"string","nodeType":"ElementaryTypeName","src":"1410:6:37","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":null,"visibility":"internal"}],"src":"1387:50:37"},"returnParameters":{"id":21132,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21131,"name":"","nodeType":"VariableDeclaration","scope":21149,"src":"1461:7:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21130,"name":"uint256","nodeType":"ElementaryTypeName","src":"1461:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1460:9:37"},"scope":21345,"src":"1375:187:37","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":21164,"nodeType":"Block","src":"1888:68:37","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":21159,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21151,"src":"1909:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":21160,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21153,"src":"1912:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"536166654d6174683a207375627472616374696f6e20756e646572666c6f77","id":21161,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1915:33:37","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_1caebeb8fec78d96e2107fd22e0abe38fcab72034848d9a80a8de2a86ac41d40","typeString":"literal_string \"SafeMath: subtraction underflow\""},"value":"SafeMath: subtraction underflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_1caebeb8fec78d96e2107fd22e0abe38fcab72034848d9a80a8de2a86ac41d40","typeString":"literal_string \"SafeMath: subtraction underflow\""}],"id":21158,"name":"sub","nodeType":"Identifier","overloadedDeclarations":[21165,21192],"referencedDeclaration":21192,"src":"1905:3:37","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$","typeString":"function (uint256,uint256,string memory) pure returns (uint256)"}},"id":21162,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1905:44:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":21157,"id":21163,"nodeType":"Return","src":"1898:51:37"}]},"documentation":"@dev Returns the subtraction of two unsigned integers, reverting on underflow (when the result is negative).\n * Counterpart to Solidity's `-` operator.\n * Requirements:\n- Subtraction cannot underflow.","id":21165,"implemented":true,"kind":"function","modifiers":[],"name":"sub","nodeType":"FunctionDefinition","parameters":{"id":21154,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21151,"name":"a","nodeType":"VariableDeclaration","scope":21165,"src":"1834:9:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21150,"name":"uint256","nodeType":"ElementaryTypeName","src":"1834:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":21153,"name":"b","nodeType":"VariableDeclaration","scope":21165,"src":"1845:9:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21152,"name":"uint256","nodeType":"ElementaryTypeName","src":"1845:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1833:22:37"},"returnParameters":{"id":21157,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21156,"name":"","nodeType":"VariableDeclaration","scope":21165,"src":"1879:7:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21155,"name":"uint256","nodeType":"ElementaryTypeName","src":"1879:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1878:9:37"},"scope":21345,"src":"1821:135:37","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":21191,"nodeType":"Block","src":"2330:92:37","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":21177,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21169,"src":"2348:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"argumentTypes":null,"id":21178,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21167,"src":"2353:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2348:6:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"id":21180,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21171,"src":"2356:12:37","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":21176,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"2340:7:37","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":21181,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2340:29:37","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21182,"nodeType":"ExpressionStatement","src":"2340:29:37"},{"assignments":[21184],"declarations":[{"constant":false,"id":21184,"name":"c","nodeType":"VariableDeclaration","scope":21191,"src":"2379:9:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21183,"name":"uint256","nodeType":"ElementaryTypeName","src":"2379:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":21188,"initialValue":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21187,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":21185,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21167,"src":"2391:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"id":21186,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21169,"src":"2395:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2391:5:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2379:17:37"},{"expression":{"argumentTypes":null,"id":21189,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21184,"src":"2414:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":21175,"id":21190,"nodeType":"Return","src":"2407:8:37"}]},"documentation":"@dev Returns the subtraction of two unsigned integers, reverting with custom message on underflow (when the result is negative).\n * Counterpart to Solidity's `-` operator.\n * Requirements:\n- Subtraction cannot underflow.","id":21192,"implemented":true,"kind":"function","modifiers":[],"name":"sub","nodeType":"FunctionDefinition","parameters":{"id":21172,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21167,"name":"a","nodeType":"VariableDeclaration","scope":21192,"src":"2248:9:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21166,"name":"uint256","nodeType":"ElementaryTypeName","src":"2248:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":21169,"name":"b","nodeType":"VariableDeclaration","scope":21192,"src":"2259:9:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21168,"name":"uint256","nodeType":"ElementaryTypeName","src":"2259:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":21171,"name":"errorMessage","nodeType":"VariableDeclaration","scope":21192,"src":"2270:26:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":21170,"name":"string","nodeType":"ElementaryTypeName","src":"2270:6:37","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":null,"visibility":"internal"}],"src":"2247:50:37"},"returnParameters":{"id":21175,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21174,"name":"","nodeType":"VariableDeclaration","scope":21192,"src":"2321:7:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21173,"name":"uint256","nodeType":"ElementaryTypeName","src":"2321:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2320:9:37"},"scope":21345,"src":"2235:187:37","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":21225,"nodeType":"Block","src":"2722:392:37","statements":[{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":21201,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21194,"src":"2954:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":21202,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2959:1:37","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2954:6:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":21207,"nodeType":"IfStatement","src":"2950:45:37","trueBody":{"id":21206,"nodeType":"Block","src":"2962:33:37","statements":[{"expression":{"argumentTypes":null,"hexValue":"30","id":21204,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2983:1:37","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":21200,"id":21205,"nodeType":"Return","src":"2976:8:37"}]}},{"assignments":[21209],"declarations":[{"constant":false,"id":21209,"name":"c","nodeType":"VariableDeclaration","scope":21225,"src":"3005:9:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21208,"name":"uint256","nodeType":"ElementaryTypeName","src":"3005:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":21213,"initialValue":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":21210,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21194,"src":"3017:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"argumentTypes":null,"id":21211,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21196,"src":"3021:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3017:5:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3005:17:37"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21219,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21217,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":21215,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21209,"src":"3040:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"argumentTypes":null,"id":21216,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21194,"src":"3044:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3040:5:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":21218,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21196,"src":"3049:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3040:10:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77","id":21220,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3052:35:37","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3","typeString":"literal_string \"SafeMath: multiplication overflow\""},"value":"SafeMath: multiplication overflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3","typeString":"literal_string \"SafeMath: multiplication overflow\""}],"id":21214,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"3032:7:37","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":21221,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3032:56:37","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21222,"nodeType":"ExpressionStatement","src":"3032:56:37"},{"expression":{"argumentTypes":null,"id":21223,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21209,"src":"3106:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":21200,"id":21224,"nodeType":"Return","src":"3099:8:37"}]},"documentation":"@dev Returns the multiplication of two unsigned integers, reverting on overflow.\n * Counterpart to Solidity's `*` operator.\n * Requirements:\n- Multiplication cannot overflow.","id":21226,"implemented":true,"kind":"function","modifiers":[],"name":"mul","nodeType":"FunctionDefinition","parameters":{"id":21197,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21194,"name":"a","nodeType":"VariableDeclaration","scope":21226,"src":"2668:9:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21193,"name":"uint256","nodeType":"ElementaryTypeName","src":"2668:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":21196,"name":"b","nodeType":"VariableDeclaration","scope":21226,"src":"2679:9:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21195,"name":"uint256","nodeType":"ElementaryTypeName","src":"2679:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2667:22:37"},"returnParameters":{"id":21200,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21199,"name":"","nodeType":"VariableDeclaration","scope":21226,"src":"2713:7:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21198,"name":"uint256","nodeType":"ElementaryTypeName","src":"2713:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2712:9:37"},"scope":21345,"src":"2655:459:37","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":21261,"nodeType":"Block","src":"3442:369:37","statements":[{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21239,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":21237,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21228,"src":"3674:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":21238,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3679:1:37","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3674:6:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":21243,"nodeType":"IfStatement","src":"3670:45:37","trueBody":{"id":21242,"nodeType":"Block","src":"3682:33:37","statements":[{"expression":{"argumentTypes":null,"hexValue":"30","id":21240,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3703:1:37","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":21236,"id":21241,"nodeType":"Return","src":"3696:8:37"}]}},{"assignments":[21245],"declarations":[{"constant":false,"id":21245,"name":"c","nodeType":"VariableDeclaration","scope":21261,"src":"3725:9:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21244,"name":"uint256","nodeType":"ElementaryTypeName","src":"3725:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":21249,"initialValue":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21248,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":21246,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21228,"src":"3737:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"argumentTypes":null,"id":21247,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21230,"src":"3741:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3737:5:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3725:17:37"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21255,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21253,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":21251,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21245,"src":"3760:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"argumentTypes":null,"id":21252,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21228,"src":"3764:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3760:5:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":21254,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21230,"src":"3769:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3760:10:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"id":21256,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21232,"src":"3772:12:37","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":21250,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"3752:7:37","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":21257,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3752:33:37","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21258,"nodeType":"ExpressionStatement","src":"3752:33:37"},{"expression":{"argumentTypes":null,"id":21259,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21245,"src":"3803:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":21236,"id":21260,"nodeType":"Return","src":"3796:8:37"}]},"documentation":"@dev Returns the multiplication of two unsigned integers, reverting on overflow.\n * Counterpart to Solidity's `*` operator.\n * Requirements:\n- Multiplication cannot overflow.","id":21262,"implemented":true,"kind":"function","modifiers":[],"name":"mul","nodeType":"FunctionDefinition","parameters":{"id":21233,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21228,"name":"a","nodeType":"VariableDeclaration","scope":21262,"src":"3360:9:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21227,"name":"uint256","nodeType":"ElementaryTypeName","src":"3360:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":21230,"name":"b","nodeType":"VariableDeclaration","scope":21262,"src":"3371:9:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21229,"name":"uint256","nodeType":"ElementaryTypeName","src":"3371:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":21232,"name":"errorMessage","nodeType":"VariableDeclaration","scope":21262,"src":"3382:26:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":21231,"name":"string","nodeType":"ElementaryTypeName","src":"3382:6:37","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":null,"visibility":"internal"}],"src":"3359:50:37"},"returnParameters":{"id":21236,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21235,"name":"","nodeType":"VariableDeclaration","scope":21262,"src":"3433:7:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21234,"name":"uint256","nodeType":"ElementaryTypeName","src":"3433:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"3432:9:37"},"scope":21345,"src":"3347:464:37","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":21277,"nodeType":"Block","src":"4333:63:37","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":21272,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21264,"src":"4354:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":21273,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21266,"src":"4357:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"536166654d6174683a206469766973696f6e206279207a65726f","id":21274,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4360:28:37","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_5b7cc70dda4dc2143e5adb63bd5d1f349504f461dbdfd9bc76fac1f8ca6d019f","typeString":"literal_string \"SafeMath: division by zero\""},"value":"SafeMath: division by zero"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_5b7cc70dda4dc2143e5adb63bd5d1f349504f461dbdfd9bc76fac1f8ca6d019f","typeString":"literal_string \"SafeMath: division by zero\""}],"id":21271,"name":"div","nodeType":"Identifier","overloadedDeclarations":[21278,21305],"referencedDeclaration":21305,"src":"4350:3:37","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$","typeString":"function (uint256,uint256,string memory) pure returns (uint256)"}},"id":21275,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4350:39:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":21270,"id":21276,"nodeType":"Return","src":"4343:46:37"}]},"documentation":"@dev Returns the integer division of two unsigned integers.\nReverts on division by zero. The result is rounded towards zero.\n * Counterpart to Solidity's `/` operator. Note: this function uses a\n`revert` opcode (which leaves remaining gas untouched) while Solidity\nuses an invalid opcode to revert (consuming all remaining gas).\n * Requirements:\n- The divisor cannot be zero.","id":21278,"implemented":true,"kind":"function","modifiers":[],"name":"div","nodeType":"FunctionDefinition","parameters":{"id":21267,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21264,"name":"a","nodeType":"VariableDeclaration","scope":21278,"src":"4279:9:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21263,"name":"uint256","nodeType":"ElementaryTypeName","src":"4279:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":21266,"name":"b","nodeType":"VariableDeclaration","scope":21278,"src":"4290:9:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21265,"name":"uint256","nodeType":"ElementaryTypeName","src":"4290:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"4278:22:37"},"returnParameters":{"id":21270,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21269,"name":"","nodeType":"VariableDeclaration","scope":21278,"src":"4324:7:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21268,"name":"uint256","nodeType":"ElementaryTypeName","src":"4324:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"4323:9:37"},"scope":21345,"src":"4266:130:37","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":21304,"nodeType":"Block","src":"4966:243:37","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21292,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":21290,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21282,"src":"5050:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"30","id":21291,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5054:1:37","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5050:5:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"id":21293,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21284,"src":"5057:12:37","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":21289,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"5042:7:37","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":21294,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5042:28:37","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21295,"nodeType":"ExpressionStatement","src":"5042:28:37"},{"assignments":[21297],"declarations":[{"constant":false,"id":21297,"name":"c","nodeType":"VariableDeclaration","scope":21304,"src":"5080:9:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21296,"name":"uint256","nodeType":"ElementaryTypeName","src":"5080:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":21301,"initialValue":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21300,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":21298,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21280,"src":"5092:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"argumentTypes":null,"id":21299,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21282,"src":"5096:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5092:5:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5080:17:37"},{"expression":{"argumentTypes":null,"id":21302,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21297,"src":"5201:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":21288,"id":21303,"nodeType":"Return","src":"5194:8:37"}]},"documentation":"@dev Returns the integer division of two unsigned integers.\nReverts with custom message on division by zero. The result is rounded towards zero.\n * Counterpart to Solidity's `/` operator. Note: this function uses a\n`revert` opcode (which leaves remaining gas untouched) while Solidity\nuses an invalid opcode to revert (consuming all remaining gas).\n * Requirements:\n- The divisor cannot be zero.","id":21305,"implemented":true,"kind":"function","modifiers":[],"name":"div","nodeType":"FunctionDefinition","parameters":{"id":21285,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21280,"name":"a","nodeType":"VariableDeclaration","scope":21305,"src":"4884:9:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21279,"name":"uint256","nodeType":"ElementaryTypeName","src":"4884:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":21282,"name":"b","nodeType":"VariableDeclaration","scope":21305,"src":"4895:9:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21281,"name":"uint256","nodeType":"ElementaryTypeName","src":"4895:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":21284,"name":"errorMessage","nodeType":"VariableDeclaration","scope":21305,"src":"4906:26:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":21283,"name":"string","nodeType":"ElementaryTypeName","src":"4906:6:37","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":null,"visibility":"internal"}],"src":"4883:50:37"},"returnParameters":{"id":21288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21287,"name":"","nodeType":"VariableDeclaration","scope":21305,"src":"4957:7:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21286,"name":"uint256","nodeType":"ElementaryTypeName","src":"4957:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"4956:9:37"},"scope":21345,"src":"4871:338:37","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":21320,"nodeType":"Block","src":"5720:61:37","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":21315,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21307,"src":"5741:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":21316,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21309,"src":"5744:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"536166654d6174683a206d6f64756c6f206279207a65726f","id":21317,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5747:26:37","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_726e51f7b81fce0a68f5f214f445e275313b20b1633f08ce954ee39abf8d7832","typeString":"literal_string \"SafeMath: modulo by zero\""},"value":"SafeMath: modulo by zero"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_726e51f7b81fce0a68f5f214f445e275313b20b1633f08ce954ee39abf8d7832","typeString":"literal_string \"SafeMath: modulo by zero\""}],"id":21314,"name":"mod","nodeType":"Identifier","overloadedDeclarations":[21321,21344],"referencedDeclaration":21344,"src":"5737:3:37","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$","typeString":"function (uint256,uint256,string memory) pure returns (uint256)"}},"id":21318,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5737:37:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":21313,"id":21319,"nodeType":"Return","src":"5730:44:37"}]},"documentation":"@dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\nReverts when dividing by zero.\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\nopcode (which leaves remaining gas untouched) while Solidity uses an\ninvalid opcode to revert (consuming all remaining gas).\n * Requirements:\n- The divisor cannot be zero.","id":21321,"implemented":true,"kind":"function","modifiers":[],"name":"mod","nodeType":"FunctionDefinition","parameters":{"id":21310,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21307,"name":"a","nodeType":"VariableDeclaration","scope":21321,"src":"5666:9:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21306,"name":"uint256","nodeType":"ElementaryTypeName","src":"5666:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":21309,"name":"b","nodeType":"VariableDeclaration","scope":21321,"src":"5677:9:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21308,"name":"uint256","nodeType":"ElementaryTypeName","src":"5677:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"5665:22:37"},"returnParameters":{"id":21313,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21312,"name":"","nodeType":"VariableDeclaration","scope":21321,"src":"5711:7:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21311,"name":"uint256","nodeType":"ElementaryTypeName","src":"5711:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"5710:9:37"},"scope":21345,"src":"5653:128:37","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":21343,"nodeType":"Block","src":"6340:68:37","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21335,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":21333,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21325,"src":"6358:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"hexValue":"30","id":21334,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6363:1:37","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6358:6:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"id":21336,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21327,"src":"6366:12:37","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":21332,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"6350:7:37","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":21337,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6350:29:37","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21338,"nodeType":"ExpressionStatement","src":"6350:29:37"},{"expression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21341,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":21339,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21323,"src":"6396:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"argumentTypes":null,"id":21340,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21325,"src":"6400:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6396:5:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":21331,"id":21342,"nodeType":"Return","src":"6389:12:37"}]},"documentation":"@dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\nReverts with custom message when dividing by zero.\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\nopcode (which leaves remaining gas untouched) while Solidity uses an\ninvalid opcode to revert (consuming all remaining gas).\n * Requirements:\n- The divisor cannot be zero.","id":21344,"implemented":true,"kind":"function","modifiers":[],"name":"mod","nodeType":"FunctionDefinition","parameters":{"id":21328,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21323,"name":"a","nodeType":"VariableDeclaration","scope":21344,"src":"6258:9:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21322,"name":"uint256","nodeType":"ElementaryTypeName","src":"6258:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":21325,"name":"b","nodeType":"VariableDeclaration","scope":21344,"src":"6269:9:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21324,"name":"uint256","nodeType":"ElementaryTypeName","src":"6269:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":21327,"name":"errorMessage","nodeType":"VariableDeclaration","scope":21344,"src":"6280:26:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":21326,"name":"string","nodeType":"ElementaryTypeName","src":"6280:6:37","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":null,"visibility":"internal"}],"src":"6257:50:37"},"returnParameters":{"id":21331,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21330,"name":"","nodeType":"VariableDeclaration","scope":21344,"src":"6331:7:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21329,"name":"uint256","nodeType":"ElementaryTypeName","src":"6331:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"6330:9:37"},"scope":21345,"src":"6245:163:37","stateMutability":"pure","superFunction":null,"visibility":"internal"}],"scope":21346,"src":"720:5690:37"}],"src":"0:6411:37"},"id":37},"contracts/SimplePriceOracle.sol":{"ast":{"absolutePath":"contracts/SimplePriceOracle.sol","exportedSymbols":{"SimplePriceOracle":[21494]},"id":21495,"nodeType":"SourceUnit","nodes":[{"id":21347,"literals":["solidity","0.5",".17"],"nodeType":"PragmaDirective","src":"0:23:38"},{"absolutePath":"contracts/PriceOracle.sol","file":"./PriceOracle.sol","id":21348,"nodeType":"ImportDirective","scope":21495,"sourceUnit":18690,"src":"25:27:38","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/CErc20.sol","file":"./CErc20.sol","id":21349,"nodeType":"ImportDirective","scope":21495,"sourceUnit":1144,"src":"53:22:38","symbolAliases":[],"unitAlias":""},{"baseContracts":[{"arguments":null,"baseName":{"contractScope":null,"id":21350,"name":"PriceOracle","nodeType":"UserDefinedTypeName","referencedDeclaration":18689,"src":"107:11:38","typeDescriptions":{"typeIdentifier":"t_contract$_PriceOracle_$18689","typeString":"contract PriceOracle"}},"id":21351,"nodeType":"InheritanceSpecifier","src":"107:11:38"}],"contractDependencies":[18689],"contractKind":"contract","documentation":null,"fullyImplemented":true,"id":21494,"linearizedBaseContracts":[21494,18689],"name":"SimplePriceOracle","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":21355,"name":"prices","nodeType":"VariableDeclaration","scope":21494,"src":"125:31:38","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":21354,"keyType":{"id":21352,"name":"address","nodeType":"ElementaryTypeName","src":"133:7:38","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"125:24:38","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":21353,"name":"uint","nodeType":"ElementaryTypeName","src":"144:4:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"value":null,"visibility":"internal"},{"anonymous":false,"documentation":null,"id":21365,"name":"PricePosted","nodeType":"EventDefinition","parameters":{"id":21364,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21357,"indexed":false,"name":"asset","nodeType":"VariableDeclaration","scope":21365,"src":"180:13:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21356,"name":"address","nodeType":"ElementaryTypeName","src":"180:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":21359,"indexed":false,"name":"previousPriceMantissa","nodeType":"VariableDeclaration","scope":21365,"src":"195:26:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21358,"name":"uint","nodeType":"ElementaryTypeName","src":"195:4:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":21361,"indexed":false,"name":"requestedPriceMantissa","nodeType":"VariableDeclaration","scope":21365,"src":"223:27:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21360,"name":"uint","nodeType":"ElementaryTypeName","src":"223:4:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":21363,"indexed":false,"name":"newPriceMantissa","nodeType":"VariableDeclaration","scope":21365,"src":"252:21:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21362,"name":"uint","nodeType":"ElementaryTypeName","src":"252:4:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"179:95:38"},"src":"162:113:38"},{"body":{"id":21395,"nodeType":"Block","src":"351:188:38","statements":[{"condition":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":21373,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21367,"src":"380:6:38","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"id":21374,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"symbol","nodeType":"MemberAccess","referencedDeclaration":6212,"src":"380:13:38","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_string_memory_$","typeString":"function () view external returns (string memory)"}},"id":21375,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"380:15:38","typeDescriptions":{"typeIdentifier":"t_string_memory","typeString":"string memory"}},{"argumentTypes":null,"hexValue":"63455448","id":21376,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"397:6:38","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_b3c46c78043b5ff6963757142af6c297cddb5a0d3d823357472228eb35c8e890","typeString":"literal_string \"cETH\""},"value":"cETH"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_b3c46c78043b5ff6963757142af6c297cddb5a0d3d823357472228eb35c8e890","typeString":"literal_string \"cETH\""}],"id":21372,"name":"compareStrings","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21493,"src":"365:14:38","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_bool_$","typeString":"function (string memory,string memory) pure returns (bool)"}},"id":21377,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"365:39:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":21393,"nodeType":"Block","src":"448:85:38","statements":[{"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":21381,"name":"prices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21355,"src":"469:6:38","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":21391,"indexExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":21385,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21367,"src":"499:6:38","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":21384,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"491:7:38","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":21386,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"491:15:38","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":21383,"name":"CErc20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1143,"src":"484:6:38","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CErc20_$1143_$","typeString":"type(contract CErc20)"}},"id":21387,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"484:23:38","typeDescriptions":{"typeIdentifier":"t_contract$_CErc20_$1143","typeString":"contract CErc20"}},"id":21388,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"underlying","nodeType":"MemberAccess","referencedDeclaration":6558,"src":"484:34:38","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":21389,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"484:36:38","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":21382,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"476:7:38","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":21390,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"476:45:38","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"469:53:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":21371,"id":21392,"nodeType":"Return","src":"462:60:38"}]},"id":21394,"nodeType":"IfStatement","src":"361:172:38","trueBody":{"id":21380,"nodeType":"Block","src":"406:36:38","statements":[{"expression":{"argumentTypes":null,"hexValue":"31653138","id":21378,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"427:4:38","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"functionReturnParameters":21371,"id":21379,"nodeType":"Return","src":"420:11:38"}]}}]},"documentation":null,"id":21396,"implemented":true,"kind":"function","modifiers":[],"name":"getUnderlyingPrice","nodeType":"FunctionDefinition","parameters":{"id":21368,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21367,"name":"cToken","nodeType":"VariableDeclaration","scope":21396,"src":"309:13:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},"typeName":{"contractScope":null,"id":21366,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"309:6:38","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"value":null,"visibility":"internal"}],"src":"308:15:38"},"returnParameters":{"id":21371,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21370,"name":"","nodeType":"VariableDeclaration","scope":21396,"src":"345:4:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21369,"name":"uint","nodeType":"ElementaryTypeName","src":"345:4:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"344:6:38"},"scope":21494,"src":"281:258:38","stateMutability":"view","superFunction":18688,"visibility":"public"},{"body":{"id":21430,"nodeType":"Block","src":"625:225:38","statements":[{"assignments":[21404],"declarations":[{"constant":false,"id":21404,"name":"asset","nodeType":"VariableDeclaration","scope":21430,"src":"635:13:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21403,"name":"address","nodeType":"ElementaryTypeName","src":"635:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":21414,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":21408,"name":"cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21398,"src":"674:6:38","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}],"id":21407,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"666:7:38","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":21409,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"666:15:38","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":21406,"name":"CErc20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1143,"src":"659:6:38","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CErc20_$1143_$","typeString":"type(contract CErc20)"}},"id":21410,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"659:23:38","typeDescriptions":{"typeIdentifier":"t_contract$_CErc20_$1143","typeString":"contract CErc20"}},"id":21411,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"underlying","nodeType":"MemberAccess","referencedDeclaration":6558,"src":"659:34:38","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":21412,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"659:36:38","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":21405,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"651:7:38","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":21413,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"651:45:38","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"635:61:38"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":21416,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21404,"src":"723:5:38","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":21417,"name":"prices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21355,"src":"730:6:38","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":21419,"indexExpression":{"argumentTypes":null,"id":21418,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21404,"src":"737:5:38","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"730:13:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":21420,"name":"underlyingPriceMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21400,"src":"745:23:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":21421,"name":"underlyingPriceMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21400,"src":"770:23:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21415,"name":"PricePosted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21365,"src":"711:11:38","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256,uint256)"}},"id":21422,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"711:83:38","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21423,"nodeType":"EmitStatement","src":"706:88:38"},{"expression":{"argumentTypes":null,"id":21428,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":21424,"name":"prices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21355,"src":"804:6:38","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":21426,"indexExpression":{"argumentTypes":null,"id":21425,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21404,"src":"811:5:38","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"804:13:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":21427,"name":"underlyingPriceMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21400,"src":"820:23:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"804:39:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21429,"nodeType":"ExpressionStatement","src":"804:39:38"}]},"documentation":null,"id":21431,"implemented":true,"kind":"function","modifiers":[],"name":"setUnderlyingPrice","nodeType":"FunctionDefinition","parameters":{"id":21401,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21398,"name":"cToken","nodeType":"VariableDeclaration","scope":21431,"src":"573:13:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"},"typeName":{"contractScope":null,"id":21397,"name":"CToken","nodeType":"UserDefinedTypeName","referencedDeclaration":6186,"src":"573:6:38","typeDescriptions":{"typeIdentifier":"t_contract$_CToken_$6186","typeString":"contract CToken"}},"value":null,"visibility":"internal"},{"constant":false,"id":21400,"name":"underlyingPriceMantissa","nodeType":"VariableDeclaration","scope":21431,"src":"588:28:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21399,"name":"uint","nodeType":"ElementaryTypeName","src":"588:4:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"572:45:38"},"returnParameters":{"id":21402,"nodeType":"ParameterList","parameters":[],"src":"625:0:38"},"scope":21494,"src":"545:305:38","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":21453,"nodeType":"Block","src":"914:100:38","statements":[{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":21439,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21433,"src":"941:5:38","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":21440,"name":"prices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21355,"src":"948:6:38","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":21442,"indexExpression":{"argumentTypes":null,"id":21441,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21433,"src":"955:5:38","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"948:13:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":21443,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21435,"src":"963:5:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":21444,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21435,"src":"970:5:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21438,"name":"PricePosted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21365,"src":"929:11:38","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256,uint256)"}},"id":21445,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"929:47:38","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21446,"nodeType":"EmitStatement","src":"924:52:38"},{"expression":{"argumentTypes":null,"id":21451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":21447,"name":"prices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21355,"src":"986:6:38","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":21449,"indexExpression":{"argumentTypes":null,"id":21448,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21433,"src":"993:5:38","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"986:13:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":21450,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21435,"src":"1002:5:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"986:21:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21452,"nodeType":"ExpressionStatement","src":"986:21:38"}]},"documentation":null,"id":21454,"implemented":true,"kind":"function","modifiers":[],"name":"setDirectPrice","nodeType":"FunctionDefinition","parameters":{"id":21436,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21433,"name":"asset","nodeType":"VariableDeclaration","scope":21454,"src":"880:13:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21432,"name":"address","nodeType":"ElementaryTypeName","src":"880:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":21435,"name":"price","nodeType":"VariableDeclaration","scope":21454,"src":"895:10:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21434,"name":"uint","nodeType":"ElementaryTypeName","src":"895:4:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"879:27:38"},"returnParameters":{"id":21437,"nodeType":"ParameterList","parameters":[],"src":"914:0:38"},"scope":21494,"src":"856:158:38","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":21465,"nodeType":"Block","src":"1146:37:38","statements":[{"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":21461,"name":"prices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21355,"src":"1163:6:38","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":21463,"indexExpression":{"argumentTypes":null,"id":21462,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21456,"src":"1170:5:38","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1163:13:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":21460,"id":21464,"nodeType":"Return","src":"1156:20:38"}]},"documentation":null,"id":21466,"implemented":true,"kind":"function","modifiers":[],"name":"assetPrices","nodeType":"FunctionDefinition","parameters":{"id":21457,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21456,"name":"asset","nodeType":"VariableDeclaration","scope":21466,"src":"1102:13:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21455,"name":"address","nodeType":"ElementaryTypeName","src":"1102:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"1101:15:38"},"returnParameters":{"id":21460,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21459,"name":"","nodeType":"VariableDeclaration","scope":21466,"src":"1140:4:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21458,"name":"uint","nodeType":"ElementaryTypeName","src":"1140:4:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1139:6:38"},"scope":21494,"src":"1081:102:38","stateMutability":"view","superFunction":null,"visibility":"external"},{"body":{"id":21492,"nodeType":"Block","src":"1276:94:38","statements":[{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":21489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"components":[{"argumentTypes":null,"id":21478,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21468,"src":"1322:1:38","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":21479,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1321:3:38","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"argumentTypes":null,"id":21476,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22537,"src":"1304:3:38","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":21477,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","referencedDeclaration":null,"src":"1304:16:38","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":21480,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1304:21:38","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":21475,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22544,"src":"1294:9:38","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":21481,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1294:32:38","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"components":[{"argumentTypes":null,"id":21485,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21470,"src":"1358:1:38","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":21486,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1357:3:38","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"argumentTypes":null,"id":21483,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22537,"src":"1340:3:38","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":21484,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","referencedDeclaration":null,"src":"1340:16:38","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":21487,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1340:21:38","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":21482,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22544,"src":"1330:9:38","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":21488,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1330:32:38","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"1294:68:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":21490,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1293:70:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":21474,"id":21491,"nodeType":"Return","src":"1286:77:38"}]},"documentation":null,"id":21493,"implemented":true,"kind":"function","modifiers":[],"name":"compareStrings","nodeType":"FunctionDefinition","parameters":{"id":21471,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21468,"name":"a","nodeType":"VariableDeclaration","scope":21493,"src":"1213:15:38","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":21467,"name":"string","nodeType":"ElementaryTypeName","src":"1213:6:38","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":null,"visibility":"internal"},{"constant":false,"id":21470,"name":"b","nodeType":"VariableDeclaration","scope":21493,"src":"1230:15:38","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":21469,"name":"string","nodeType":"ElementaryTypeName","src":"1230:6:38","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":null,"visibility":"internal"}],"src":"1212:34:38"},"returnParameters":{"id":21474,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21473,"name":"","nodeType":"VariableDeclaration","scope":21493,"src":"1270:4:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":21472,"name":"bool","nodeType":"ElementaryTypeName","src":"1270:4:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"1269:6:38"},"scope":21494,"src":"1189:181:38","stateMutability":"pure","superFunction":null,"visibility":"internal"}],"scope":21495,"src":"77:1295:38"}],"src":"0:1373:38"},"id":38},"contracts/Timelock.sol":{"ast":{"absolutePath":"contracts/Timelock.sol","exportedSymbols":{"Timelock":[21948]},"id":21949,"nodeType":"SourceUnit","nodes":[{"id":21496,"literals":["solidity","0.5",".17"],"nodeType":"PragmaDirective","src":"0:23:39"},{"absolutePath":"contracts/SafeMath.sol","file":"./SafeMath.sol","id":21497,"nodeType":"ImportDirective","scope":21949,"sourceUnit":21346,"src":"25:24:39","symbolAliases":[],"unitAlias":""},{"baseContracts":[],"contractDependencies":[],"contractKind":"contract","documentation":null,"fullyImplemented":true,"id":21948,"linearizedBaseContracts":[21948],"name":"Timelock","nodeType":"ContractDefinition","nodes":[{"id":21500,"libraryName":{"contractScope":null,"id":21498,"name":"SafeMath","nodeType":"UserDefinedTypeName","referencedDeclaration":21345,"src":"81:8:39","typeDescriptions":{"typeIdentifier":"t_contract$_SafeMath_$21345","typeString":"library SafeMath"}},"nodeType":"UsingForDirective","src":"75:24:39","typeName":{"id":21499,"name":"uint","nodeType":"ElementaryTypeName","src":"94:4:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"anonymous":false,"documentation":null,"id":21504,"name":"NewAdmin","nodeType":"EventDefinition","parameters":{"id":21503,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21502,"indexed":true,"name":"newAdmin","nodeType":"VariableDeclaration","scope":21504,"src":"120:24:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21501,"name":"address","nodeType":"ElementaryTypeName","src":"120:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"119:26:39"},"src":"105:41:39"},{"anonymous":false,"documentation":null,"id":21508,"name":"NewPendingAdmin","nodeType":"EventDefinition","parameters":{"id":21507,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21506,"indexed":true,"name":"newPendingAdmin","nodeType":"VariableDeclaration","scope":21508,"src":"173:31:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21505,"name":"address","nodeType":"ElementaryTypeName","src":"173:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"172:33:39"},"src":"151:55:39"},{"anonymous":false,"documentation":null,"id":21512,"name":"NewDelay","nodeType":"EventDefinition","parameters":{"id":21511,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21510,"indexed":true,"name":"newDelay","nodeType":"VariableDeclaration","scope":21512,"src":"226:21:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21509,"name":"uint","nodeType":"ElementaryTypeName","src":"226:4:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"225:23:39"},"src":"211:38:39"},{"anonymous":false,"documentation":null,"id":21526,"name":"CancelTransaction","nodeType":"EventDefinition","parameters":{"id":21525,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21514,"indexed":true,"name":"txHash","nodeType":"VariableDeclaration","scope":21526,"src":"278:22:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":21513,"name":"bytes32","nodeType":"ElementaryTypeName","src":"278:7:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"},{"constant":false,"id":21516,"indexed":true,"name":"target","nodeType":"VariableDeclaration","scope":21526,"src":"302:22:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21515,"name":"address","nodeType":"ElementaryTypeName","src":"302:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":21518,"indexed":false,"name":"value","nodeType":"VariableDeclaration","scope":21526,"src":"326:10:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21517,"name":"uint","nodeType":"ElementaryTypeName","src":"326:4:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":21520,"indexed":false,"name":"signature","nodeType":"VariableDeclaration","scope":21526,"src":"338:16:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":21519,"name":"string","nodeType":"ElementaryTypeName","src":"338:6:39","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":null,"visibility":"internal"},{"constant":false,"id":21522,"indexed":false,"name":"data","nodeType":"VariableDeclaration","scope":21526,"src":"357:10:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":21521,"name":"bytes","nodeType":"ElementaryTypeName","src":"357:5:39","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"},{"constant":false,"id":21524,"indexed":false,"name":"eta","nodeType":"VariableDeclaration","scope":21526,"src":"369:8:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21523,"name":"uint","nodeType":"ElementaryTypeName","src":"369:4:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"277:101:39"},"src":"254:125:39"},{"anonymous":false,"documentation":null,"id":21540,"name":"ExecuteTransaction","nodeType":"EventDefinition","parameters":{"id":21539,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21528,"indexed":true,"name":"txHash","nodeType":"VariableDeclaration","scope":21540,"src":"409:22:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":21527,"name":"bytes32","nodeType":"ElementaryTypeName","src":"409:7:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"},{"constant":false,"id":21530,"indexed":true,"name":"target","nodeType":"VariableDeclaration","scope":21540,"src":"433:22:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21529,"name":"address","nodeType":"ElementaryTypeName","src":"433:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":21532,"indexed":false,"name":"value","nodeType":"VariableDeclaration","scope":21540,"src":"457:10:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21531,"name":"uint","nodeType":"ElementaryTypeName","src":"457:4:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":21534,"indexed":false,"name":"signature","nodeType":"VariableDeclaration","scope":21540,"src":"469:16:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":21533,"name":"string","nodeType":"ElementaryTypeName","src":"469:6:39","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":null,"visibility":"internal"},{"constant":false,"id":21536,"indexed":false,"name":"data","nodeType":"VariableDeclaration","scope":21540,"src":"488:10:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":21535,"name":"bytes","nodeType":"ElementaryTypeName","src":"488:5:39","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"},{"constant":false,"id":21538,"indexed":false,"name":"eta","nodeType":"VariableDeclaration","scope":21540,"src":"500:8:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21537,"name":"uint","nodeType":"ElementaryTypeName","src":"500:4:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"408:101:39"},"src":"384:126:39"},{"anonymous":false,"documentation":null,"id":21554,"name":"QueueTransaction","nodeType":"EventDefinition","parameters":{"id":21553,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21542,"indexed":true,"name":"txHash","nodeType":"VariableDeclaration","scope":21554,"src":"538:22:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":21541,"name":"bytes32","nodeType":"ElementaryTypeName","src":"538:7:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"},{"constant":false,"id":21544,"indexed":true,"name":"target","nodeType":"VariableDeclaration","scope":21554,"src":"562:22:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21543,"name":"address","nodeType":"ElementaryTypeName","src":"562:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":21546,"indexed":false,"name":"value","nodeType":"VariableDeclaration","scope":21554,"src":"586:10:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21545,"name":"uint","nodeType":"ElementaryTypeName","src":"586:4:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":21548,"indexed":false,"name":"signature","nodeType":"VariableDeclaration","scope":21554,"src":"598:16:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":21547,"name":"string","nodeType":"ElementaryTypeName","src":"598:6:39","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":null,"visibility":"internal"},{"constant":false,"id":21550,"indexed":false,"name":"data","nodeType":"VariableDeclaration","scope":21554,"src":"616:10:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":21549,"name":"bytes","nodeType":"ElementaryTypeName","src":"616:5:39","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"},{"constant":false,"id":21552,"indexed":false,"name":"eta","nodeType":"VariableDeclaration","scope":21554,"src":"628:8:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21551,"name":"uint","nodeType":"ElementaryTypeName","src":"628:4:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"537:100:39"},"src":"515:123:39"},{"constant":true,"id":21557,"name":"GRACE_PERIOD","nodeType":"VariableDeclaration","scope":21948,"src":"644:43:39","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21555,"name":"uint","nodeType":"ElementaryTypeName","src":"644:4:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"argumentTypes":null,"hexValue":"3134","id":21556,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"680:7:39","subdenomination":"days","typeDescriptions":{"typeIdentifier":"t_rational_1209600_by_1","typeString":"int_const 1209600"},"value":"14"},"visibility":"public"},{"constant":true,"id":21560,"name":"MINIMUM_DELAY","nodeType":"VariableDeclaration","scope":21948,"src":"693:43:39","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21558,"name":"uint","nodeType":"ElementaryTypeName","src":"693:4:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"argumentTypes":null,"hexValue":"32","id":21559,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"730:6:39","subdenomination":"days","typeDescriptions":{"typeIdentifier":"t_rational_172800_by_1","typeString":"int_const 172800"},"value":"2"},"visibility":"public"},{"constant":true,"id":21563,"name":"MAXIMUM_DELAY","nodeType":"VariableDeclaration","scope":21948,"src":"742:44:39","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21561,"name":"uint","nodeType":"ElementaryTypeName","src":"742:4:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"argumentTypes":null,"hexValue":"3330","id":21562,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"779:7:39","subdenomination":"days","typeDescriptions":{"typeIdentifier":"t_rational_2592000_by_1","typeString":"int_const 2592000"},"value":"30"},"visibility":"public"},{"constant":false,"id":21565,"name":"admin","nodeType":"VariableDeclaration","scope":21948,"src":"793:20:39","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21564,"name":"address","nodeType":"ElementaryTypeName","src":"793:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"public"},{"constant":false,"id":21567,"name":"pendingAdmin","nodeType":"VariableDeclaration","scope":21948,"src":"819:27:39","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21566,"name":"address","nodeType":"ElementaryTypeName","src":"819:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"public"},{"constant":false,"id":21569,"name":"delay","nodeType":"VariableDeclaration","scope":21948,"src":"852:17:39","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21568,"name":"uint","nodeType":"ElementaryTypeName","src":"852:4:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"public"},{"constant":false,"id":21573,"name":"queuedTransactions","nodeType":"VariableDeclaration","scope":21948,"src":"876:51:39","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_bool_$","typeString":"mapping(bytes32 => bool)"},"typeName":{"id":21572,"keyType":{"id":21570,"name":"bytes32","nodeType":"ElementaryTypeName","src":"885:7:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"876:25:39","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_bool_$","typeString":"mapping(bytes32 => bool)"},"valueType":{"id":21571,"name":"bool","nodeType":"ElementaryTypeName","src":"896:4:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"value":null,"visibility":"public"},{"body":{"id":21602,"nodeType":"Block","src":"983:259:39","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":21581,"name":"delay_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21577,"src":"1001:6:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"argumentTypes":null,"id":21582,"name":"MINIMUM_DELAY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21560,"src":"1011:13:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1001:23:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"54696d656c6f636b3a3a636f6e7374727563746f723a2044656c6179206d75737420657863656564206d696e696d756d2064656c61792e","id":21584,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1026:57:39","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_22e01fcea901594c01d464b6c5f076874d475b75affb5ba136b9bcf9c2e8cf2f","typeString":"literal_string \"Timelock::constructor: Delay must exceed minimum delay.\""},"value":"Timelock::constructor: Delay must exceed minimum delay."}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_22e01fcea901594c01d464b6c5f076874d475b75affb5ba136b9bcf9c2e8cf2f","typeString":"literal_string \"Timelock::constructor: Delay must exceed minimum delay.\""}],"id":21580,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"993:7:39","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":21585,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"993:91:39","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21586,"nodeType":"ExpressionStatement","src":"993:91:39"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":21588,"name":"delay_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21577,"src":"1102:6:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"argumentTypes":null,"id":21589,"name":"MAXIMUM_DELAY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21563,"src":"1112:13:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1102:23:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"54696d656c6f636b3a3a73657444656c61793a2044656c6179206d757374206e6f7420657863656564206d6178696d756d2064656c61792e","id":21591,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1127:58:39","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_762218313af08cfa6c9b8eda00385502eefaa529f9945044fd2dee54ff5cefe0","typeString":"literal_string \"Timelock::setDelay: Delay must not exceed maximum delay.\""},"value":"Timelock::setDelay: Delay must not exceed maximum delay."}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_762218313af08cfa6c9b8eda00385502eefaa529f9945044fd2dee54ff5cefe0","typeString":"literal_string \"Timelock::setDelay: Delay must not exceed maximum delay.\""}],"id":21587,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"1094:7:39","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":21592,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1094:92:39","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21593,"nodeType":"ExpressionStatement","src":"1094:92:39"},{"expression":{"argumentTypes":null,"id":21596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":21594,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21565,"src":"1197:5:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":21595,"name":"admin_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21575,"src":"1205:6:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1197:14:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":21597,"nodeType":"ExpressionStatement","src":"1197:14:39"},{"expression":{"argumentTypes":null,"id":21600,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":21598,"name":"delay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21569,"src":"1221:5:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":21599,"name":"delay_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21577,"src":"1229:6:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1221:14:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21601,"nodeType":"ExpressionStatement","src":"1221:14:39"}]},"documentation":null,"id":21603,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":21578,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21575,"name":"admin_","nodeType":"VariableDeclaration","scope":21603,"src":"947:14:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21574,"name":"address","nodeType":"ElementaryTypeName","src":"947:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":21577,"name":"delay_","nodeType":"VariableDeclaration","scope":21603,"src":"963:11:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21576,"name":"uint","nodeType":"ElementaryTypeName","src":"963:4:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"946:29:39"},"returnParameters":{"id":21579,"nodeType":"ParameterList","parameters":[],"src":"983:0:39"},"scope":21948,"src":"935:307:39","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":21606,"nodeType":"Block","src":"1276:3:39","statements":[]},"documentation":null,"id":21607,"implemented":true,"kind":"fallback","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":21604,"nodeType":"ParameterList","parameters":[],"src":"1256:2:39"},"returnParameters":{"id":21605,"nodeType":"ParameterList","parameters":[],"src":"1276:0:39"},"scope":21948,"src":"1248:31:39","stateMutability":"payable","superFunction":null,"visibility":"external"},{"body":{"id":21644,"nodeType":"Block","src":"1323:361:39","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"id":21618,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":21613,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"1341:3:39","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":21614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"1341:10:39","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":21616,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22686,"src":"1363:4:39","typeDescriptions":{"typeIdentifier":"t_contract$_Timelock_$21948","typeString":"contract Timelock"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Timelock_$21948","typeString":"contract Timelock"}],"id":21615,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1355:7:39","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":21617,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1355:13:39","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"1341:27:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"54696d656c6f636b3a3a73657444656c61793a2043616c6c206d75737420636f6d652066726f6d2054696d656c6f636b2e","id":21619,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1370:51:39","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_e810dcfb9ec7662fa74f0c58d14b8ca36ebffcb4d6cdf3e54d58e4096597d95d","typeString":"literal_string \"Timelock::setDelay: Call must come from Timelock.\""},"value":"Timelock::setDelay: Call must come from Timelock."}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e810dcfb9ec7662fa74f0c58d14b8ca36ebffcb4d6cdf3e54d58e4096597d95d","typeString":"literal_string \"Timelock::setDelay: Call must come from Timelock.\""}],"id":21612,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"1333:7:39","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":21620,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1333:89:39","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21621,"nodeType":"ExpressionStatement","src":"1333:89:39"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":21623,"name":"delay_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21609,"src":"1440:6:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"argumentTypes":null,"id":21624,"name":"MINIMUM_DELAY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21560,"src":"1450:13:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1440:23:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"54696d656c6f636b3a3a73657444656c61793a2044656c6179206d75737420657863656564206d696e696d756d2064656c61792e","id":21626,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1465:54:39","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_4198c63548ffd3e47f06dc876a374eb662a4ea6ff5509a211e07dd2b49998b1d","typeString":"literal_string \"Timelock::setDelay: Delay must exceed minimum delay.\""},"value":"Timelock::setDelay: Delay must exceed minimum delay."}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_4198c63548ffd3e47f06dc876a374eb662a4ea6ff5509a211e07dd2b49998b1d","typeString":"literal_string \"Timelock::setDelay: Delay must exceed minimum delay.\""}],"id":21622,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"1432:7:39","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":21627,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1432:88:39","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21628,"nodeType":"ExpressionStatement","src":"1432:88:39"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21632,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":21630,"name":"delay_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21609,"src":"1538:6:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"argumentTypes":null,"id":21631,"name":"MAXIMUM_DELAY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21563,"src":"1548:13:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1538:23:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"54696d656c6f636b3a3a73657444656c61793a2044656c6179206d757374206e6f7420657863656564206d6178696d756d2064656c61792e","id":21633,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1563:58:39","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_762218313af08cfa6c9b8eda00385502eefaa529f9945044fd2dee54ff5cefe0","typeString":"literal_string \"Timelock::setDelay: Delay must not exceed maximum delay.\""},"value":"Timelock::setDelay: Delay must not exceed maximum delay."}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_762218313af08cfa6c9b8eda00385502eefaa529f9945044fd2dee54ff5cefe0","typeString":"literal_string \"Timelock::setDelay: Delay must not exceed maximum delay.\""}],"id":21629,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"1530:7:39","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":21634,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1530:92:39","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21635,"nodeType":"ExpressionStatement","src":"1530:92:39"},{"expression":{"argumentTypes":null,"id":21638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":21636,"name":"delay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21569,"src":"1632:5:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":21637,"name":"delay_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21609,"src":"1640:6:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1632:14:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21639,"nodeType":"ExpressionStatement","src":"1632:14:39"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":21641,"name":"delay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21569,"src":"1671:5:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21640,"name":"NewDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21512,"src":"1662:8:39","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":21642,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1662:15:39","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21643,"nodeType":"EmitStatement","src":"1657:20:39"}]},"documentation":null,"id":21645,"implemented":true,"kind":"function","modifiers":[],"name":"setDelay","nodeType":"FunctionDefinition","parameters":{"id":21610,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21609,"name":"delay_","nodeType":"VariableDeclaration","scope":21645,"src":"1303:11:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21608,"name":"uint","nodeType":"ElementaryTypeName","src":"1303:4:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1302:13:39"},"returnParameters":{"id":21611,"nodeType":"ParameterList","parameters":[],"src":"1323:0:39"},"scope":21948,"src":"1285:399:39","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":21671,"nodeType":"Block","src":"1720:206:39","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":21652,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":21649,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"1738:3:39","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":21650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"1738:10:39","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":21651,"name":"pendingAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21567,"src":"1752:12:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1738:26:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"54696d656c6f636b3a3a61636365707441646d696e3a2043616c6c206d75737420636f6d652066726f6d2070656e64696e6741646d696e2e","id":21653,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1766:58:39","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_a6d22532620e2c2df8ce400b3f4754629da5ed6321258d3add10ae5aba9450b3","typeString":"literal_string \"Timelock::acceptAdmin: Call must come from pendingAdmin.\""},"value":"Timelock::acceptAdmin: Call must come from pendingAdmin."}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a6d22532620e2c2df8ce400b3f4754629da5ed6321258d3add10ae5aba9450b3","typeString":"literal_string \"Timelock::acceptAdmin: Call must come from pendingAdmin.\""}],"id":21648,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"1730:7:39","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":21654,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1730:95:39","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21655,"nodeType":"ExpressionStatement","src":"1730:95:39"},{"expression":{"argumentTypes":null,"id":21659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":21656,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21565,"src":"1835:5:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":21657,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"1843:3:39","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":21658,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"1843:10:39","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"1835:18:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":21660,"nodeType":"ExpressionStatement","src":"1835:18:39"},{"expression":{"argumentTypes":null,"id":21665,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":21661,"name":"pendingAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21567,"src":"1863:12:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":21663,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1886:1:39","subdenomination":null,"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":21662,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1878:7:39","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":21664,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1878:10:39","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"1863:25:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":21666,"nodeType":"ExpressionStatement","src":"1863:25:39"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":21668,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21565,"src":"1913:5:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":21667,"name":"NewAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21504,"src":"1904:8:39","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":21669,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1904:15:39","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21670,"nodeType":"EmitStatement","src":"1899:20:39"}]},"documentation":null,"id":21672,"implemented":true,"kind":"function","modifiers":[],"name":"acceptAdmin","nodeType":"FunctionDefinition","parameters":{"id":21646,"nodeType":"ParameterList","parameters":[],"src":"1710:2:39"},"returnParameters":{"id":21647,"nodeType":"ParameterList","parameters":[],"src":"1720:0:39"},"scope":21948,"src":"1690:236:39","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":21695,"nodeType":"Block","src":"1987:196:39","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"id":21683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":21678,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"2005:3:39","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":21679,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2005:10:39","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":21681,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22686,"src":"2027:4:39","typeDescriptions":{"typeIdentifier":"t_contract$_Timelock_$21948","typeString":"contract Timelock"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Timelock_$21948","typeString":"contract Timelock"}],"id":21680,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2019:7:39","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":21682,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2019:13:39","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"2005:27:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"54696d656c6f636b3a3a73657450656e64696e6741646d696e3a2043616c6c206d75737420636f6d652066726f6d2054696d656c6f636b2e","id":21684,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2034:58:39","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_b7a0aaea4203d5a5318b76c13dcb2afd3f7e9e71cd6f5f022040411bd080d815","typeString":"literal_string \"Timelock::setPendingAdmin: Call must come from Timelock.\""},"value":"Timelock::setPendingAdmin: Call must come from Timelock."}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b7a0aaea4203d5a5318b76c13dcb2afd3f7e9e71cd6f5f022040411bd080d815","typeString":"literal_string \"Timelock::setPendingAdmin: Call must come from Timelock.\""}],"id":21677,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"1997:7:39","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":21685,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1997:96:39","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21686,"nodeType":"ExpressionStatement","src":"1997:96:39"},{"expression":{"argumentTypes":null,"id":21689,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":21687,"name":"pendingAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21567,"src":"2103:12:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":21688,"name":"pendingAdmin_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21674,"src":"2118:13:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2103:28:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":21690,"nodeType":"ExpressionStatement","src":"2103:28:39"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":21692,"name":"pendingAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21567,"src":"2163:12:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":21691,"name":"NewPendingAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21508,"src":"2147:15:39","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":21693,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2147:29:39","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21694,"nodeType":"EmitStatement","src":"2142:34:39"}]},"documentation":null,"id":21696,"implemented":true,"kind":"function","modifiers":[],"name":"setPendingAdmin","nodeType":"FunctionDefinition","parameters":{"id":21675,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21674,"name":"pendingAdmin_","nodeType":"VariableDeclaration","scope":21696,"src":"1957:21:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21673,"name":"address","nodeType":"ElementaryTypeName","src":"1957:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"1956:23:39"},"returnParameters":{"id":21676,"nodeType":"ParameterList","parameters":[],"src":"1987:0:39"},"scope":21948,"src":"1932:251:39","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":21760,"nodeType":"Block","src":"2322:465:39","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":21715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":21712,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"2340:3:39","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":21713,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2340:10:39","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":21714,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21565,"src":"2354:5:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2340:19:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"54696d656c6f636b3a3a71756575655472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e","id":21716,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2361:56:39","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_b9bd2ade56c0bd4d6738b7a39a90e136f8901e8e7945a3d237050075ad6fd749","typeString":"literal_string \"Timelock::queueTransaction: Call must come from admin.\""},"value":"Timelock::queueTransaction: Call must come from admin."}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b9bd2ade56c0bd4d6738b7a39a90e136f8901e8e7945a3d237050075ad6fd749","typeString":"literal_string \"Timelock::queueTransaction: Call must come from admin.\""}],"id":21711,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"2332:7:39","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":21717,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2332:86:39","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21718,"nodeType":"ExpressionStatement","src":"2332:86:39"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":21720,"name":"eta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21706,"src":"2436:3:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":21724,"name":"delay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21569,"src":"2467:5:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":21721,"name":"getBlockTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21947,"src":"2443:17:39","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":21722,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2443:19:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":21122,"src":"2443:23:39","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":21725,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2443:30:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2436:37:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"54696d656c6f636b3a3a71756575655472616e73616374696f6e3a20457374696d6174656420657865637574696f6e20626c6f636b206d75737420736174697366792064656c61792e","id":21727,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2475:75:39","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_d8f8e6fa46b62e55e6ef89f0d71d2a706a902748f37198aeb3e192bf7bca348c","typeString":"literal_string \"Timelock::queueTransaction: Estimated execution block must satisfy delay.\""},"value":"Timelock::queueTransaction: Estimated execution block must satisfy delay."}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d8f8e6fa46b62e55e6ef89f0d71d2a706a902748f37198aeb3e192bf7bca348c","typeString":"literal_string \"Timelock::queueTransaction: Estimated execution block must satisfy delay.\""}],"id":21719,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"2428:7:39","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":21728,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2428:123:39","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21729,"nodeType":"ExpressionStatement","src":"2428:123:39"},{"assignments":[21731],"declarations":[{"constant":false,"id":21731,"name":"txHash","nodeType":"VariableDeclaration","scope":21760,"src":"2562:14:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":21730,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2562:7:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"}],"id":21742,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":21735,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21698,"src":"2600:6:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":21736,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21700,"src":"2608:5:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":21737,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21702,"src":"2615:9:39","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"argumentTypes":null,"id":21738,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21704,"src":"2626:4:39","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"argumentTypes":null,"id":21739,"name":"eta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21706,"src":"2632:3:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":21733,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22537,"src":"2589:3:39","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":21734,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2589:10:39","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":21740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2589:47:39","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":21732,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22544,"src":"2579:9:39","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":21741,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2579:58:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"2562:75:39"},{"expression":{"argumentTypes":null,"id":21747,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":21743,"name":"queuedTransactions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21573,"src":"2647:18:39","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_bool_$","typeString":"mapping(bytes32 => bool)"}},"id":21745,"indexExpression":{"argumentTypes":null,"id":21744,"name":"txHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21731,"src":"2666:6:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2647:26:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"hexValue":"74727565","id":21746,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2676:4:39","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"2647:33:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21748,"nodeType":"ExpressionStatement","src":"2647:33:39"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":21750,"name":"txHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21731,"src":"2713:6:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":21751,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21698,"src":"2721:6:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":21752,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21700,"src":"2729:5:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":21753,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21702,"src":"2736:9:39","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"argumentTypes":null,"id":21754,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21704,"src":"2747:4:39","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"argumentTypes":null,"id":21755,"name":"eta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21706,"src":"2753:3:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21749,"name":"QueueTransaction","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21554,"src":"2696:16:39","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$_t_string_memory_ptr_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (bytes32,address,uint256,string memory,bytes memory,uint256)"}},"id":21756,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2696:61:39","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21757,"nodeType":"EmitStatement","src":"2691:66:39"},{"expression":{"argumentTypes":null,"id":21758,"name":"txHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21731,"src":"2774:6:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":21710,"id":21759,"nodeType":"Return","src":"2767:13:39"}]},"documentation":null,"id":21761,"implemented":true,"kind":"function","modifiers":[],"name":"queueTransaction","nodeType":"FunctionDefinition","parameters":{"id":21707,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21698,"name":"target","nodeType":"VariableDeclaration","scope":21761,"src":"2215:14:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21697,"name":"address","nodeType":"ElementaryTypeName","src":"2215:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":21700,"name":"value","nodeType":"VariableDeclaration","scope":21761,"src":"2231:10:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21699,"name":"uint","nodeType":"ElementaryTypeName","src":"2231:4:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":21702,"name":"signature","nodeType":"VariableDeclaration","scope":21761,"src":"2243:23:39","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":21701,"name":"string","nodeType":"ElementaryTypeName","src":"2243:6:39","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":null,"visibility":"internal"},{"constant":false,"id":21704,"name":"data","nodeType":"VariableDeclaration","scope":21761,"src":"2268:17:39","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":21703,"name":"bytes","nodeType":"ElementaryTypeName","src":"2268:5:39","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"},{"constant":false,"id":21706,"name":"eta","nodeType":"VariableDeclaration","scope":21761,"src":"2287:8:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21705,"name":"uint","nodeType":"ElementaryTypeName","src":"2287:4:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2214:82:39"},"returnParameters":{"id":21710,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21709,"name":"","nodeType":"VariableDeclaration","scope":21761,"src":"2313:7:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":21708,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2313:7:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"}],"src":"2312:9:39"},"scope":21948,"src":"2189:598:39","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":21810,"nodeType":"Block","src":"2909:312:39","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":21778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":21775,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"2927:3:39","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":21776,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2927:10:39","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":21777,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21565,"src":"2941:5:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2927:19:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"54696d656c6f636b3a3a63616e63656c5472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e","id":21779,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2948:57:39","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_135e413b08c779b9b925daaaf6178471ba60ebd33d413d809c76a0d4e8beaf3d","typeString":"literal_string \"Timelock::cancelTransaction: Call must come from admin.\""},"value":"Timelock::cancelTransaction: Call must come from admin."}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_135e413b08c779b9b925daaaf6178471ba60ebd33d413d809c76a0d4e8beaf3d","typeString":"literal_string \"Timelock::cancelTransaction: Call must come from admin.\""}],"id":21774,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"2919:7:39","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":21780,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2919:87:39","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21781,"nodeType":"ExpressionStatement","src":"2919:87:39"},{"assignments":[21783],"declarations":[{"constant":false,"id":21783,"name":"txHash","nodeType":"VariableDeclaration","scope":21810,"src":"3017:14:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":21782,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3017:7:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"}],"id":21794,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":21787,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21763,"src":"3055:6:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":21788,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21765,"src":"3063:5:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":21789,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21767,"src":"3070:9:39","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"argumentTypes":null,"id":21790,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21769,"src":"3081:4:39","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"argumentTypes":null,"id":21791,"name":"eta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21771,"src":"3087:3:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":21785,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22537,"src":"3044:3:39","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":21786,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","referencedDeclaration":null,"src":"3044:10:39","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":21792,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3044:47:39","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":21784,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22544,"src":"3034:9:39","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":21793,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3034:58:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"3017:75:39"},{"expression":{"argumentTypes":null,"id":21799,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":21795,"name":"queuedTransactions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21573,"src":"3102:18:39","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_bool_$","typeString":"mapping(bytes32 => bool)"}},"id":21797,"indexExpression":{"argumentTypes":null,"id":21796,"name":"txHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21783,"src":"3121:6:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3102:26:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"hexValue":"66616c7365","id":21798,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3131:5:39","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"3102:34:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21800,"nodeType":"ExpressionStatement","src":"3102:34:39"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":21802,"name":"txHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21783,"src":"3170:6:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":21803,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21763,"src":"3178:6:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":21804,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21765,"src":"3186:5:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":21805,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21767,"src":"3193:9:39","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"argumentTypes":null,"id":21806,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21769,"src":"3204:4:39","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"argumentTypes":null,"id":21807,"name":"eta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21771,"src":"3210:3:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21801,"name":"CancelTransaction","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21526,"src":"3152:17:39","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$_t_string_memory_ptr_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (bytes32,address,uint256,string memory,bytes memory,uint256)"}},"id":21808,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3152:62:39","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21809,"nodeType":"EmitStatement","src":"3147:67:39"}]},"documentation":null,"id":21811,"implemented":true,"kind":"function","modifiers":[],"name":"cancelTransaction","nodeType":"FunctionDefinition","parameters":{"id":21772,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21763,"name":"target","nodeType":"VariableDeclaration","scope":21811,"src":"2820:14:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21762,"name":"address","nodeType":"ElementaryTypeName","src":"2820:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":21765,"name":"value","nodeType":"VariableDeclaration","scope":21811,"src":"2836:10:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21764,"name":"uint","nodeType":"ElementaryTypeName","src":"2836:4:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":21767,"name":"signature","nodeType":"VariableDeclaration","scope":21811,"src":"2848:23:39","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":21766,"name":"string","nodeType":"ElementaryTypeName","src":"2848:6:39","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":null,"visibility":"internal"},{"constant":false,"id":21769,"name":"data","nodeType":"VariableDeclaration","scope":21811,"src":"2873:17:39","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":21768,"name":"bytes","nodeType":"ElementaryTypeName","src":"2873:5:39","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"},{"constant":false,"id":21771,"name":"eta","nodeType":"VariableDeclaration","scope":21811,"src":"2892:8:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21770,"name":"uint","nodeType":"ElementaryTypeName","src":"2892:4:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2819:82:39"},"returnParameters":{"id":21773,"nodeType":"ParameterList","parameters":[],"src":"2909:0:39"},"scope":21948,"src":"2793:428:39","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":21937,"nodeType":"Block","src":"3375:1143:39","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":21830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":21827,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"3393:3:39","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":21828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"3393:10:39","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":21829,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21565,"src":"3407:5:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3393:19:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e","id":21831,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3414:58:39","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_0cbc65ac44dc8b90b8bc4c38c9c6ad704bfeb2c8170538058496c0e805dfa947","typeString":"literal_string \"Timelock::executeTransaction: Call must come from admin.\""},"value":"Timelock::executeTransaction: Call must come from admin."}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_0cbc65ac44dc8b90b8bc4c38c9c6ad704bfeb2c8170538058496c0e805dfa947","typeString":"literal_string \"Timelock::executeTransaction: Call must come from admin.\""}],"id":21826,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"3385:7:39","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":21832,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3385:88:39","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21833,"nodeType":"ExpressionStatement","src":"3385:88:39"},{"assignments":[21835],"declarations":[{"constant":false,"id":21835,"name":"txHash","nodeType":"VariableDeclaration","scope":21937,"src":"3484:14:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":21834,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3484:7:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"}],"id":21846,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":21839,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21813,"src":"3522:6:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":21840,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21815,"src":"3530:5:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":21841,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21817,"src":"3537:9:39","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"argumentTypes":null,"id":21842,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21819,"src":"3548:4:39","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"argumentTypes":null,"id":21843,"name":"eta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21821,"src":"3554:3:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":21837,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22537,"src":"3511:3:39","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":21838,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","referencedDeclaration":null,"src":"3511:10:39","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":21844,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3511:47:39","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":21836,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22544,"src":"3501:9:39","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":21845,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3501:58:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"3484:75:39"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":21848,"name":"queuedTransactions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21573,"src":"3577:18:39","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_bool_$","typeString":"mapping(bytes32 => bool)"}},"id":21850,"indexExpression":{"argumentTypes":null,"id":21849,"name":"txHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21835,"src":"3596:6:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3577:26:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206861736e2774206265656e207175657565642e","id":21851,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3605:63:39","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_7e3bf24eec453753018af1214443c72d8abb3050b249b2b3b9bb2adb04310650","typeString":"literal_string \"Timelock::executeTransaction: Transaction hasn't been queued.\""},"value":"Timelock::executeTransaction: Transaction hasn't been queued."}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7e3bf24eec453753018af1214443c72d8abb3050b249b2b3b9bb2adb04310650","typeString":"literal_string \"Timelock::executeTransaction: Transaction hasn't been queued.\""}],"id":21847,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"3569:7:39","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":21852,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3569:100:39","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21853,"nodeType":"ExpressionStatement","src":"3569:100:39"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":21855,"name":"getBlockTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21947,"src":"3687:17:39","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":21856,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3687:19:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"argumentTypes":null,"id":21857,"name":"eta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21821,"src":"3710:3:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3687:26:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206861736e2774207375727061737365642074696d65206c6f636b2e","id":21859,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3715:71:39","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_381d72a875dbcf282eb0ce43951c66b6c4d7dadc6fdeb9294add773d09cd1687","typeString":"literal_string \"Timelock::executeTransaction: Transaction hasn't surpassed time lock.\""},"value":"Timelock::executeTransaction: Transaction hasn't surpassed time lock."}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_381d72a875dbcf282eb0ce43951c66b6c4d7dadc6fdeb9294add773d09cd1687","typeString":"literal_string \"Timelock::executeTransaction: Transaction hasn't surpassed time lock.\""}],"id":21854,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"3679:7:39","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":21860,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3679:108:39","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21861,"nodeType":"ExpressionStatement","src":"3679:108:39"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21869,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":21863,"name":"getBlockTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21947,"src":"3805:17:39","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":21864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3805:19:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":21867,"name":"GRACE_PERIOD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21557,"src":"3836:12:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":21865,"name":"eta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21821,"src":"3828:3:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":21122,"src":"3828:7:39","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":21868,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3828:21:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3805:44:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206973207374616c652e","id":21870,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3851:53:39","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_2c4a83afbdcff2c4ba869dacfa7dabb27b12f774a0707feae827e36773b8166c","typeString":"literal_string \"Timelock::executeTransaction: Transaction is stale.\""},"value":"Timelock::executeTransaction: Transaction is stale."}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2c4a83afbdcff2c4ba869dacfa7dabb27b12f774a0707feae827e36773b8166c","typeString":"literal_string \"Timelock::executeTransaction: Transaction is stale.\""}],"id":21862,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"3797:7:39","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":21871,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3797:108:39","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21872,"nodeType":"ExpressionStatement","src":"3797:108:39"},{"expression":{"argumentTypes":null,"id":21877,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":21873,"name":"queuedTransactions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21573,"src":"3916:18:39","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_bool_$","typeString":"mapping(bytes32 => bool)"}},"id":21875,"indexExpression":{"argumentTypes":null,"id":21874,"name":"txHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21835,"src":"3935:6:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3916:26:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"hexValue":"66616c7365","id":21876,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3945:5:39","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"3916:34:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21878,"nodeType":"ExpressionStatement","src":"3916:34:39"},{"assignments":[21880],"declarations":[{"constant":false,"id":21880,"name":"callData","nodeType":"VariableDeclaration","scope":21937,"src":"3961:21:39","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":21879,"name":"bytes","nodeType":"ElementaryTypeName","src":"3961:5:39","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"}],"id":21881,"initialValue":null,"nodeType":"VariableDeclarationStatement","src":"3961:21:39"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":21883,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21817,"src":"4003:9:39","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":21882,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3997:5:39","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":"bytes"},"id":21884,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3997:16:39","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":21885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"3997:23:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":21886,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4024:1:39","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3997:28:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":21907,"nodeType":"Block","src":"4073:95:39","statements":[{"expression":{"argumentTypes":null,"id":21905,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":21893,"name":"callData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21880,"src":"4087:8:39","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":21899,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21817,"src":"4138:9:39","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":21898,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4132:5:39","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":"bytes"},"id":21900,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4132:16:39","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":21897,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22544,"src":"4122:9:39","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":21901,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4122:27:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":21896,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4115:6:39","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes4_$","typeString":"type(bytes4)"},"typeName":"bytes4"},"id":21902,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4115:35:39","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"argumentTypes":null,"id":21903,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21819,"src":"4152:4:39","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":null,"id":21894,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22537,"src":"4098:3:39","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":21895,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","referencedDeclaration":null,"src":"4098:16:39","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":21904,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4098:59:39","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"4087:70:39","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":21906,"nodeType":"ExpressionStatement","src":"4087:70:39"}]},"id":21908,"nodeType":"IfStatement","src":"3993:175:39","trueBody":{"id":21892,"nodeType":"Block","src":"4027:40:39","statements":[{"expression":{"argumentTypes":null,"id":21890,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":21888,"name":"callData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21880,"src":"4041:8:39","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":21889,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21819,"src":"4052:4:39","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"4041:15:39","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":21891,"nodeType":"ExpressionStatement","src":"4041:15:39"}]}},{"assignments":[21910,21912],"declarations":[{"constant":false,"id":21910,"name":"success","nodeType":"VariableDeclaration","scope":21937,"src":"4238:12:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":21909,"name":"bool","nodeType":"ElementaryTypeName","src":"4238:4:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},{"constant":false,"id":21912,"name":"returnData","nodeType":"VariableDeclaration","scope":21937,"src":"4252:23:39","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":21911,"name":"bytes","nodeType":"ElementaryTypeName","src":"4252:5:39","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"}],"id":21920,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":21918,"name":"callData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21880,"src":"4304:8:39","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"arguments":[{"argumentTypes":null,"id":21916,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21815,"src":"4297:5:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":21913,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21813,"src":"4279:6:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":21914,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","referencedDeclaration":null,"src":"4279:11:39","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":21915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","referencedDeclaration":null,"src":"4279:17:39","typeDescriptions":{"typeIdentifier":"t_function_setvalue_pure$_t_uint256_$returns$_t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value_$","typeString":"function (uint256) pure returns (function (bytes memory) payable returns (bool,bytes memory))"}},"id":21917,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4279:24:39","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":21919,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4279:34:39","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"4237:76:39"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":21922,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21910,"src":"4331:7:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e20657865637574696f6e2072657665727465642e","id":21923,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4340:63:39","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_c8cfef133518ef6ab39ac5f19562a74f4f875e9130c8117d51f88a557b6e72c9","typeString":"literal_string \"Timelock::executeTransaction: Transaction execution reverted.\""},"value":"Timelock::executeTransaction: Transaction execution reverted."}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c8cfef133518ef6ab39ac5f19562a74f4f875e9130c8117d51f88a557b6e72c9","typeString":"literal_string \"Timelock::executeTransaction: Transaction execution reverted.\""}],"id":21921,"name":"require","nodeType":"Identifier","overloadedDeclarations":[22553,22554],"referencedDeclaration":22554,"src":"4323:7:39","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":21924,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4323:81:39","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21925,"nodeType":"ExpressionStatement","src":"4323:81:39"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":21927,"name":"txHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21835,"src":"4439:6:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":21928,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21813,"src":"4447:6:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":21929,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21815,"src":"4455:5:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":21930,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21817,"src":"4462:9:39","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"argumentTypes":null,"id":21931,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21819,"src":"4473:4:39","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"argumentTypes":null,"id":21932,"name":"eta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21821,"src":"4479:3:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21926,"name":"ExecuteTransaction","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21540,"src":"4420:18:39","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$_t_string_memory_ptr_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (bytes32,address,uint256,string memory,bytes memory,uint256)"}},"id":21933,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4420:63:39","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21934,"nodeType":"EmitStatement","src":"4415:68:39"},{"expression":{"argumentTypes":null,"id":21935,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21912,"src":"4501:10:39","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":21825,"id":21936,"nodeType":"Return","src":"4494:17:39"}]},"documentation":null,"id":21938,"implemented":true,"kind":"function","modifiers":[],"name":"executeTransaction","nodeType":"FunctionDefinition","parameters":{"id":21822,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21813,"name":"target","nodeType":"VariableDeclaration","scope":21938,"src":"3255:14:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21812,"name":"address","nodeType":"ElementaryTypeName","src":"3255:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":21815,"name":"value","nodeType":"VariableDeclaration","scope":21938,"src":"3271:10:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21814,"name":"uint","nodeType":"ElementaryTypeName","src":"3271:4:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":21817,"name":"signature","nodeType":"VariableDeclaration","scope":21938,"src":"3283:23:39","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":21816,"name":"string","nodeType":"ElementaryTypeName","src":"3283:6:39","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":null,"visibility":"internal"},{"constant":false,"id":21819,"name":"data","nodeType":"VariableDeclaration","scope":21938,"src":"3308:17:39","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":21818,"name":"bytes","nodeType":"ElementaryTypeName","src":"3308:5:39","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"},{"constant":false,"id":21821,"name":"eta","nodeType":"VariableDeclaration","scope":21938,"src":"3327:8:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21820,"name":"uint","nodeType":"ElementaryTypeName","src":"3327:4:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"3254:82:39"},"returnParameters":{"id":21825,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21824,"name":"","nodeType":"VariableDeclaration","scope":21938,"src":"3361:12:39","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":21823,"name":"bytes","nodeType":"ElementaryTypeName","src":"3361:5:39","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"}],"src":"3360:14:39"},"scope":21948,"src":"3227:1291:39","stateMutability":"payable","superFunction":null,"visibility":"public"},{"body":{"id":21946,"nodeType":"Block","src":"4582:101:39","statements":[{"expression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":21943,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22540,"src":"4661:5:39","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":21944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":null,"src":"4661:15:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":21942,"id":21945,"nodeType":"Return","src":"4654:22:39"}]},"documentation":null,"id":21947,"implemented":true,"kind":"function","modifiers":[],"name":"getBlockTimestamp","nodeType":"FunctionDefinition","parameters":{"id":21939,"nodeType":"ParameterList","parameters":[],"src":"4550:2:39"},"returnParameters":{"id":21942,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21941,"name":"","nodeType":"VariableDeclaration","scope":21947,"src":"4576:4:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21940,"name":"uint","nodeType":"ElementaryTypeName","src":"4576:4:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"4575:6:39"},"scope":21948,"src":"4524:159:39","stateMutability":"view","superFunction":null,"visibility":"internal"}],"scope":21949,"src":"51:4634:39"}],"src":"0:4685:39"},"id":39},"contracts/Unitroller.sol":{"ast":{"absolutePath":"contracts/Unitroller.sol","exportedSymbols":{"Unitroller":[22368]},"id":22369,"nodeType":"SourceUnit","nodes":[{"id":21950,"literals":["solidity","0.5",".17"],"nodeType":"PragmaDirective","src":"0:23:40"},{"absolutePath":"contracts/ErrorReporter.sol","file":"./ErrorReporter.sol","id":21951,"nodeType":"ImportDirective","scope":22369,"sourceUnit":13850,"src":"25:29:40","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/ComptrollerStorage.sol","file":"./ComptrollerStorage.sol","id":21952,"nodeType":"ImportDirective","scope":22369,"sourceUnit":13137,"src":"55:34:40","symbolAliases":[],"unitAlias":""},{"baseContracts":[{"arguments":null,"baseName":{"contractScope":null,"id":21953,"name":"UnitrollerAdminStorage","nodeType":"UserDefinedTypeName","referencedDeclaration":13029,"src":"328:22:40","typeDescriptions":{"typeIdentifier":"t_contract$_UnitrollerAdminStorage_$13029","typeString":"contract UnitrollerAdminStorage"}},"id":21954,"nodeType":"InheritanceSpecifier","src":"328:22:40"},{"arguments":null,"baseName":{"contractScope":null,"id":21955,"name":"ComptrollerErrorReporter","nodeType":"UserDefinedTypeName","referencedDeclaration":13662,"src":"352:24:40","typeDescriptions":{"typeIdentifier":"t_contract$_ComptrollerErrorReporter_$13662","typeString":"contract ComptrollerErrorReporter"}},"id":21956,"nodeType":"InheritanceSpecifier","src":"352:24:40"}],"contractDependencies":[13029,13662],"contractKind":"contract","documentation":"@title Unitroller\n@dev Storage for the comptroller is at this address, while execution is delegated to the `comptrollerImplementation`.\nCTokens should reference this contract as their comptroller.","fullyImplemented":true,"id":22368,"linearizedBaseContracts":[22368,13662,13029],"name":"Unitroller","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":"@notice Emitted when pendingComptrollerImplementation is changed","id":21962,"name":"NewPendingImplementation","nodeType":"EventDefinition","parameters":{"id":21961,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21958,"indexed":false,"name":"oldPendingImplementation","nodeType":"VariableDeclaration","scope":21962,"src":"504:32:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21957,"name":"address","nodeType":"ElementaryTypeName","src":"504:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":21960,"indexed":false,"name":"newPendingImplementation","nodeType":"VariableDeclaration","scope":21962,"src":"538:32:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21959,"name":"address","nodeType":"ElementaryTypeName","src":"538:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"503:68:40"},"src":"473:99:40"},{"anonymous":false,"documentation":"@notice Emitted when pendingComptrollerImplementation is accepted, which means comptroller implementation is updated","id":21968,"name":"NewImplementation","nodeType":"EventDefinition","parameters":{"id":21967,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21964,"indexed":false,"name":"oldImplementation","nodeType":"VariableDeclaration","scope":21968,"src":"744:25:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21963,"name":"address","nodeType":"ElementaryTypeName","src":"744:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":21966,"indexed":false,"name":"newImplementation","nodeType":"VariableDeclaration","scope":21968,"src":"771:25:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21965,"name":"address","nodeType":"ElementaryTypeName","src":"771:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"743:54:40"},"src":"720:78:40"},{"anonymous":false,"documentation":"@notice Event emitted when the Fuse admin rights are changed","id":21972,"name":"FuseAdminRightsToggled","nodeType":"EventDefinition","parameters":{"id":21971,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21970,"indexed":false,"name":"hasRights","nodeType":"VariableDeclaration","scope":21972,"src":"919:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":21969,"name":"bool","nodeType":"ElementaryTypeName","src":"919:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"918:16:40"},"src":"890:45:40"},{"anonymous":false,"documentation":"@notice Event emitted when the admin rights are changed","id":21976,"name":"AdminRightsToggled","nodeType":"EventDefinition","parameters":{"id":21975,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21974,"indexed":false,"name":"hasRights","nodeType":"VariableDeclaration","scope":21976,"src":"1047:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":21973,"name":"bool","nodeType":"ElementaryTypeName","src":"1047:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"1046:16:40"},"src":"1022:41:40"},{"anonymous":false,"documentation":"@notice Emitted when pendingAdmin is changed","id":21982,"name":"NewPendingAdmin","nodeType":"EventDefinition","parameters":{"id":21981,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21978,"indexed":false,"name":"oldPendingAdmin","nodeType":"VariableDeclaration","scope":21982,"src":"1161:23:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21977,"name":"address","nodeType":"ElementaryTypeName","src":"1161:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":21980,"indexed":false,"name":"newPendingAdmin","nodeType":"VariableDeclaration","scope":21982,"src":"1186:23:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21979,"name":"address","nodeType":"ElementaryTypeName","src":"1186:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"1160:50:40"},"src":"1139:72:40"},{"anonymous":false,"documentation":"@notice Emitted when pendingAdmin is accepted, which means admin is updated","id":21988,"name":"NewAdmin","nodeType":"EventDefinition","parameters":{"id":21987,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21984,"indexed":false,"name":"oldAdmin","nodeType":"VariableDeclaration","scope":21988,"src":"1333:16:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21983,"name":"address","nodeType":"ElementaryTypeName","src":"1333:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":21986,"indexed":false,"name":"newAdmin","nodeType":"VariableDeclaration","scope":21988,"src":"1351:16:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21985,"name":"address","nodeType":"ElementaryTypeName","src":"1351:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"1332:36:40"},"src":"1318:51:40"},{"body":{"id":21996,"nodeType":"Block","src":"1396:66:40","statements":[{"expression":{"argumentTypes":null,"id":21994,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":21991,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12992,"src":"1437:5:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":21992,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"1445:3:40","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":21993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"1445:10:40","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"1437:18:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":21995,"nodeType":"ExpressionStatement","src":"1437:18:40"}]},"documentation":null,"id":21997,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":21989,"nodeType":"ParameterList","parameters":[],"src":"1386:2:40"},"returnParameters":{"id":21990,"nodeType":"ParameterList","parameters":[],"src":"1396:0:40"},"scope":22368,"src":"1375:87:40","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":22049,"nodeType":"Block","src":"1590:658:40","statements":[{"condition":{"argumentTypes":null,"id":22006,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1604:17:40","subExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":22004,"name":"hasAdminRights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13024,"src":"1605:14:40","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":22005,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1605:16:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":22015,"nodeType":"IfStatement","src":"1600:131:40","trueBody":{"id":22014,"nodeType":"Block","src":"1623:108:40","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":22008,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"1649:5:40","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":22009,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"UNAUTHORIZED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"1649:18:40","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":22010,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13603,"src":"1669:11:40","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13603_$","typeString":"type(enum ComptrollerErrorReporter.FailureInfo)"}},"id":22011,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"SET_PENDING_IMPLEMENTATION_OWNER_CHECK","nodeType":"MemberAccess","referencedDeclaration":null,"src":"1669:50:40","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}],"id":22007,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13635,"src":"1644:4:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13574_$_t_enum$_FailureInfo_$13603_$returns$_t_uint256_$","typeString":"function (enum ComptrollerErrorReporter.Error,enum ComptrollerErrorReporter.FailureInfo) returns (uint256)"}},"id":22012,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1644:76:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":22003,"id":22013,"nodeType":"Return","src":"1637:83:40"}]}},{"condition":{"argumentTypes":null,"id":22021,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1745:98:40","subExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":22018,"name":"comptrollerImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13026,"src":"1791:25:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":22019,"name":"newPendingImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21999,"src":"1818:24:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":22016,"name":"fuseAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12990,"src":"1746:9:40","typeDescriptions":{"typeIdentifier":"t_contract$_IFuseFeeDistributor_$17368","typeString":"contract IFuseFeeDistributor"}},"id":22017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"comptrollerImplementationWhitelist","nodeType":"MemberAccess","referencedDeclaration":17299,"src":"1746:44:40","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view external returns (bool)"}},"id":22020,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1746:97:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":22030,"nodeType":"IfStatement","src":"1741:215:40","trueBody":{"id":22029,"nodeType":"Block","src":"1845:111:40","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":22023,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"1871:5:40","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":22024,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"UNAUTHORIZED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"1871:18:40","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":22025,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13603,"src":"1891:11:40","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13603_$","typeString":"type(enum ComptrollerErrorReporter.FailureInfo)"}},"id":22026,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"SET_PENDING_IMPLEMENTATION_CONTRACT_CHECK","nodeType":"MemberAccess","referencedDeclaration":null,"src":"1891:53:40","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}],"id":22022,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13635,"src":"1866:4:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13574_$_t_enum$_FailureInfo_$13603_$returns$_t_uint256_$","typeString":"function (enum ComptrollerErrorReporter.Error,enum ComptrollerErrorReporter.FailureInfo) returns (uint256)"}},"id":22027,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1866:79:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":22003,"id":22028,"nodeType":"Return","src":"1859:86:40"}]}},{"assignments":[22032],"declarations":[{"constant":false,"id":22032,"name":"oldPendingImplementation","nodeType":"VariableDeclaration","scope":22049,"src":"1966:32:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22031,"name":"address","nodeType":"ElementaryTypeName","src":"1966:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":22034,"initialValue":{"argumentTypes":null,"id":22033,"name":"pendingComptrollerImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13028,"src":"2001:32:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"1966:67:40"},{"expression":{"argumentTypes":null,"id":22037,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":22035,"name":"pendingComptrollerImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13028,"src":"2044:32:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":22036,"name":"newPendingImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21999,"src":"2079:24:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2044:59:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":22038,"nodeType":"ExpressionStatement","src":"2044:59:40"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":22040,"name":"oldPendingImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22032,"src":"2144:24:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":22041,"name":"pendingComptrollerImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13028,"src":"2170:32:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":22039,"name":"NewPendingImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21962,"src":"2119:24:40","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":22042,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2119:84:40","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22043,"nodeType":"EmitStatement","src":"2114:89:40"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":22045,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"2226:5:40","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":22046,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2226:14:40","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":22044,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2221:4:40","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":22047,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2221:20:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":22003,"id":22048,"nodeType":"Return","src":"2214:27:40"}]},"documentation":"* Admin Functions **","id":22050,"implemented":true,"kind":"function","modifiers":[],"name":"_setPendingImplementation","nodeType":"FunctionDefinition","parameters":{"id":22000,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21999,"name":"newPendingImplementation","nodeType":"VariableDeclaration","scope":22050,"src":"1534:32:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21998,"name":"address","nodeType":"ElementaryTypeName","src":"1534:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"1533:34:40"},"returnParameters":{"id":22003,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22002,"name":"","nodeType":"VariableDeclaration","scope":22050,"src":"1584:4:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22001,"name":"uint","nodeType":"ElementaryTypeName","src":"1584:4:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1583:6:40"},"scope":22368,"src":"1499:749:40","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":22107,"nodeType":"Block","src":"2595:857:40","statements":[{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":22064,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":22058,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":22055,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"2699:3:40","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":22056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2699:10:40","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"id":22057,"name":"pendingComptrollerImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13028,"src":"2713:32:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2699:46:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":22063,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":22059,"name":"pendingComptrollerImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13028,"src":"2749:32:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":22061,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2793:1:40","subdenomination":null,"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":22060,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2785:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":22062,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2785:10:40","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"2749:46:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2699:96:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":22073,"nodeType":"IfStatement","src":"2695:215:40","trueBody":{"id":22072,"nodeType":"Block","src":"2797:113:40","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":22066,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"2823:5:40","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":22067,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"UNAUTHORIZED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2823:18:40","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":22068,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13603,"src":"2843:11:40","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13603_$","typeString":"type(enum ComptrollerErrorReporter.FailureInfo)"}},"id":22069,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"ACCEPT_PENDING_IMPLEMENTATION_ADDRESS_CHECK","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2843:55:40","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}],"id":22065,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13635,"src":"2818:4:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13574_$_t_enum$_FailureInfo_$13603_$returns$_t_uint256_$","typeString":"function (enum ComptrollerErrorReporter.Error,enum ComptrollerErrorReporter.FailureInfo) returns (uint256)"}},"id":22070,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2818:81:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":22054,"id":22071,"nodeType":"Return","src":"2811:88:40"}]}},{"assignments":[22075],"declarations":[{"constant":false,"id":22075,"name":"oldImplementation","nodeType":"VariableDeclaration","scope":22107,"src":"2972:25:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22074,"name":"address","nodeType":"ElementaryTypeName","src":"2972:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":22077,"initialValue":{"argumentTypes":null,"id":22076,"name":"comptrollerImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13026,"src":"3000:25:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2972:53:40"},{"assignments":[22079],"declarations":[{"constant":false,"id":22079,"name":"oldPendingImplementation","nodeType":"VariableDeclaration","scope":22107,"src":"3035:32:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22078,"name":"address","nodeType":"ElementaryTypeName","src":"3035:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":22081,"initialValue":{"argumentTypes":null,"id":22080,"name":"pendingComptrollerImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13028,"src":"3070:32:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3035:67:40"},{"expression":{"argumentTypes":null,"id":22084,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":22082,"name":"comptrollerImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13026,"src":"3113:25:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":22083,"name":"pendingComptrollerImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13028,"src":"3141:32:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3113:60:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":22085,"nodeType":"ExpressionStatement","src":"3113:60:40"},{"expression":{"argumentTypes":null,"id":22090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":22086,"name":"pendingComptrollerImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13028,"src":"3184:32:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":22088,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3227:1:40","subdenomination":null,"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":22087,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3219:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":22089,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3219:10:40","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"3184:45:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":22091,"nodeType":"ExpressionStatement","src":"3184:45:40"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":22093,"name":"oldImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22075,"src":"3263:17:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":22094,"name":"comptrollerImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13026,"src":"3282:25:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":22092,"name":"NewImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21968,"src":"3245:17:40","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":22095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3245:63:40","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22096,"nodeType":"EmitStatement","src":"3240:68:40"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":22098,"name":"oldPendingImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22079,"src":"3348:24:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":22099,"name":"pendingComptrollerImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13028,"src":"3374:32:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":22097,"name":"NewPendingImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21962,"src":"3323:24:40","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":22100,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3323:84:40","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22101,"nodeType":"EmitStatement","src":"3318:89:40"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":22103,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"3430:5:40","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":22104,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"3430:14:40","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":22102,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3425:4:40","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":22105,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3425:20:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":22054,"id":22106,"nodeType":"Return","src":"3418:27:40"}]},"documentation":"@notice Accepts new implementation of comptroller. msg.sender must be pendingImplementation\n@dev Admin function for new implementation to accept it's role as implementation\n@return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)","id":22108,"implemented":true,"kind":"function","modifiers":[],"name":"_acceptImplementation","nodeType":"FunctionDefinition","parameters":{"id":22051,"nodeType":"ParameterList","parameters":[],"src":"2570:2:40"},"returnParameters":{"id":22054,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22053,"name":"","nodeType":"VariableDeclaration","scope":22108,"src":"2589:4:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22052,"name":"uint","nodeType":"ElementaryTypeName","src":"2589:4:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2588:6:40"},"scope":22368,"src":"2540:912:40","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":22149,"nodeType":"Block","src":"3759:535:40","statements":[{"condition":{"argumentTypes":null,"id":22117,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3805:17:40","subExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":22115,"name":"hasAdminRights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13024,"src":"3806:14:40","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":22116,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3806:16:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":22126,"nodeType":"IfStatement","src":"3801:124:40","trueBody":{"id":22125,"nodeType":"Block","src":"3824:101:40","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":22119,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"3850:5:40","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":22120,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"UNAUTHORIZED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"3850:18:40","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":22121,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13603,"src":"3870:11:40","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13603_$","typeString":"type(enum ComptrollerErrorReporter.FailureInfo)"}},"id":22122,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"TOGGLE_ADMIN_RIGHTS_OWNER_CHECK","nodeType":"MemberAccess","referencedDeclaration":null,"src":"3870:43:40","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}],"id":22118,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13635,"src":"3845:4:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13574_$_t_enum$_FailureInfo_$13603_$returns$_t_uint256_$","typeString":"function (enum ComptrollerErrorReporter.Error,enum ComptrollerErrorReporter.FailureInfo) returns (uint256)"}},"id":22123,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3845:69:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":22114,"id":22124,"nodeType":"Return","src":"3838:76:40"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":22129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":22127,"name":"fuseAdminHasRights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12997,"src":"4015:18:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":22128,"name":"hasRights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22110,"src":"4037:9:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4015:31:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":22135,"nodeType":"IfStatement","src":"4011:64:40","trueBody":{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":22131,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"4060:5:40","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":22132,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"4060:14:40","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":22130,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4055:4:40","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":22133,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4055:20:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":22114,"id":22134,"nodeType":"Return","src":"4048:27:40"}},{"expression":{"argumentTypes":null,"id":22138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":22136,"name":"fuseAdminHasRights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12997,"src":"4120:18:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":22137,"name":"hasRights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22110,"src":"4141:9:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4120:30:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":22139,"nodeType":"ExpressionStatement","src":"4120:30:40"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":22141,"name":"fuseAdminHasRights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12997,"src":"4230:18:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":22140,"name":"FuseAdminRightsToggled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21972,"src":"4207:22:40","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bool_$returns$__$","typeString":"function (bool)"}},"id":22142,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4207:42:40","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22143,"nodeType":"EmitStatement","src":"4202:47:40"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":22145,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"4272:5:40","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":22146,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"4272:14:40","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":22144,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4267:4:40","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":22147,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4267:20:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":22114,"id":22148,"nodeType":"Return","src":"4260:27:40"}]},"documentation":"@notice Toggles Fuse admin rights.\n@param hasRights Boolean indicating if the Fuse admin is to have rights.\n@return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)","id":22150,"implemented":true,"kind":"function","modifiers":[],"name":"_toggleFuseAdminRights","nodeType":"FunctionDefinition","parameters":{"id":22111,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22110,"name":"hasRights","nodeType":"VariableDeclaration","scope":22150,"src":"3719:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":22109,"name":"bool","nodeType":"ElementaryTypeName","src":"3719:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"3718:16:40"},"returnParameters":{"id":22114,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22113,"name":"","nodeType":"VariableDeclaration","scope":22150,"src":"3753:4:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22112,"name":"uint","nodeType":"ElementaryTypeName","src":"3753:4:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"3752:6:40"},"scope":22368,"src":"3687:607:40","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":{"id":22191,"nodeType":"Block","src":"4587:506:40","statements":[{"condition":{"argumentTypes":null,"id":22159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4633:17:40","subExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":22157,"name":"hasAdminRights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13024,"src":"4634:14:40","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":22158,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4634:16:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":22168,"nodeType":"IfStatement","src":"4629:124:40","trueBody":{"id":22167,"nodeType":"Block","src":"4652:101:40","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":22161,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"4678:5:40","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":22162,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"UNAUTHORIZED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"4678:18:40","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":22163,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13603,"src":"4698:11:40","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13603_$","typeString":"type(enum ComptrollerErrorReporter.FailureInfo)"}},"id":22164,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"TOGGLE_ADMIN_RIGHTS_OWNER_CHECK","nodeType":"MemberAccess","referencedDeclaration":null,"src":"4698:43:40","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}],"id":22160,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13635,"src":"4673:4:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13574_$_t_enum$_FailureInfo_$13603_$returns$_t_uint256_$","typeString":"function (enum ComptrollerErrorReporter.Error,enum ComptrollerErrorReporter.FailureInfo) returns (uint256)"}},"id":22165,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4673:69:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":22156,"id":22166,"nodeType":"Return","src":"4666:76:40"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":22171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":22169,"name":"adminHasRights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13000,"src":"4843:14:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":22170,"name":"hasRights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22152,"src":"4861:9:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4843:27:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":22177,"nodeType":"IfStatement","src":"4839:60:40","trueBody":{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":22173,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"4884:5:40","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":22174,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"4884:14:40","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":22172,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4879:4:40","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":22175,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4879:20:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":22156,"id":22176,"nodeType":"Return","src":"4872:27:40"}},{"expression":{"argumentTypes":null,"id":22180,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":22178,"name":"adminHasRights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13000,"src":"4940:14:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":22179,"name":"hasRights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22152,"src":"4957:9:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4940:26:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":22181,"nodeType":"ExpressionStatement","src":"4940:26:40"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":22183,"name":"hasRights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22152,"src":"5038:9:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":22182,"name":"AdminRightsToggled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21976,"src":"5019:18:40","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bool_$returns$__$","typeString":"function (bool)"}},"id":22184,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5019:29:40","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22185,"nodeType":"EmitStatement","src":"5014:34:40"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":22187,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"5071:5:40","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":22188,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"5071:14:40","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":22186,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5066:4:40","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":22189,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5066:20:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":22156,"id":22190,"nodeType":"Return","src":"5059:27:40"}]},"documentation":"@notice Toggles admin rights.\n@param hasRights Boolean indicating if the admin is to have rights.\n@return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)","id":22192,"implemented":true,"kind":"function","modifiers":[],"name":"_toggleAdminRights","nodeType":"FunctionDefinition","parameters":{"id":22153,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22152,"name":"hasRights","nodeType":"VariableDeclaration","scope":22192,"src":"4547:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":22151,"name":"bool","nodeType":"ElementaryTypeName","src":"4547:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"4546:16:40"},"returnParameters":{"id":22156,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22155,"name":"","nodeType":"VariableDeclaration","scope":22192,"src":"4581:4:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22154,"name":"uint","nodeType":"ElementaryTypeName","src":"4581:4:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"4580:6:40"},"scope":22368,"src":"4519:574:40","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":{"id":22229,"nodeType":"Block","src":"5572:546:40","statements":[{"condition":{"argumentTypes":null,"id":22201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"5618:17:40","subExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":22199,"name":"hasAdminRights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13024,"src":"5619:14:40","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":22200,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5619:16:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":22210,"nodeType":"IfStatement","src":"5614:122:40","trueBody":{"id":22209,"nodeType":"Block","src":"5637:99:40","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":22203,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"5663:5:40","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":22204,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"UNAUTHORIZED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"5663:18:40","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":22205,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13603,"src":"5683:11:40","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13603_$","typeString":"type(enum ComptrollerErrorReporter.FailureInfo)"}},"id":22206,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"SET_PENDING_ADMIN_OWNER_CHECK","nodeType":"MemberAccess","referencedDeclaration":null,"src":"5683:41:40","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}],"id":22202,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13635,"src":"5658:4:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13574_$_t_enum$_FailureInfo_$13603_$returns$_t_uint256_$","typeString":"function (enum ComptrollerErrorReporter.Error,enum ComptrollerErrorReporter.FailureInfo) returns (uint256)"}},"id":22207,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5658:67:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":22198,"id":22208,"nodeType":"Return","src":"5651:74:40"}]}},{"assignments":[22212],"declarations":[{"constant":false,"id":22212,"name":"oldPendingAdmin","nodeType":"VariableDeclaration","scope":22229,"src":"5806:23:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22211,"name":"address","nodeType":"ElementaryTypeName","src":"5806:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":22214,"initialValue":{"argumentTypes":null,"id":22213,"name":"pendingAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12994,"src":"5832:12:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"5806:38:40"},{"expression":{"argumentTypes":null,"id":22217,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":22215,"name":"pendingAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12994,"src":"5912:12:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":22216,"name":"newPendingAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22194,"src":"5927:15:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5912:30:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":22218,"nodeType":"ExpressionStatement","src":"5912:30:40"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":22220,"name":"oldPendingAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22212,"src":"6040:15:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":22221,"name":"newPendingAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22194,"src":"6057:15:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":22219,"name":"NewPendingAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21982,"src":"6024:15:40","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":22222,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6024:49:40","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22223,"nodeType":"EmitStatement","src":"6019:54:40"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":22225,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"6096:5:40","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":22226,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"6096:14:40","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":22224,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6091:4:40","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":22227,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6091:20:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":22198,"id":22228,"nodeType":"Return","src":"6084:27:40"}]},"documentation":"@notice Begins transfer of admin rights. The newPendingAdmin must call `_acceptAdmin` to finalize the transfer.\n@dev Admin function to begin change of admin. The newPendingAdmin must call `_acceptAdmin` to finalize the transfer.\n@param newPendingAdmin New pending admin.\n@return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)","id":22230,"implemented":true,"kind":"function","modifiers":[],"name":"_setPendingAdmin","nodeType":"FunctionDefinition","parameters":{"id":22195,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22194,"name":"newPendingAdmin","nodeType":"VariableDeclaration","scope":22230,"src":"5525:23:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22193,"name":"address","nodeType":"ElementaryTypeName","src":"5525:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"5524:25:40"},"returnParameters":{"id":22198,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22197,"name":"","nodeType":"VariableDeclaration","scope":22230,"src":"5566:4:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22196,"name":"uint","nodeType":"ElementaryTypeName","src":"5566:4:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"5565:6:40"},"scope":22368,"src":"5499:619:40","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":22288,"nodeType":"Block","src":"6435:674:40","statements":[{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":22245,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":22238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":22235,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"6521:3:40","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":22236,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"6521:10:40","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"id":22237,"name":"pendingAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12994,"src":"6535:12:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6521:26:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"id":22244,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":22239,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"6551:3:40","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":22240,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"6551:10:40","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":22242,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6573:1:40","subdenomination":null,"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":22241,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6565:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":22243,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6565:10:40","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"6551:24:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6521:54:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":22254,"nodeType":"IfStatement","src":"6517:162:40","trueBody":{"id":22253,"nodeType":"Block","src":"6577:102:40","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":22247,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"6603:5:40","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":22248,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"UNAUTHORIZED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"6603:18:40","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":22249,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13603,"src":"6623:11:40","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$13603_$","typeString":"type(enum ComptrollerErrorReporter.FailureInfo)"}},"id":22250,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"ACCEPT_ADMIN_PENDING_ADMIN_CHECK","nodeType":"MemberAccess","referencedDeclaration":null,"src":"6623:44:40","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$13603","typeString":"enum ComptrollerErrorReporter.FailureInfo"}],"id":22246,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13635,"src":"6598:4:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$13574_$_t_enum$_FailureInfo_$13603_$returns$_t_uint256_$","typeString":"function (enum ComptrollerErrorReporter.Error,enum ComptrollerErrorReporter.FailureInfo) returns (uint256)"}},"id":22251,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6598:70:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":22234,"id":22252,"nodeType":"Return","src":"6591:77:40"}]}},{"assignments":[22256],"declarations":[{"constant":false,"id":22256,"name":"oldAdmin","nodeType":"VariableDeclaration","scope":22288,"src":"6741:16:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22255,"name":"address","nodeType":"ElementaryTypeName","src":"6741:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":22258,"initialValue":{"argumentTypes":null,"id":22257,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12992,"src":"6760:5:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6741:24:40"},{"assignments":[22260],"declarations":[{"constant":false,"id":22260,"name":"oldPendingAdmin","nodeType":"VariableDeclaration","scope":22288,"src":"6775:23:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22259,"name":"address","nodeType":"ElementaryTypeName","src":"6775:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":22262,"initialValue":{"argumentTypes":null,"id":22261,"name":"pendingAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12994,"src":"6801:12:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6775:38:40"},{"expression":{"argumentTypes":null,"id":22265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":22263,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12992,"src":"6871:5:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":22264,"name":"pendingAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12994,"src":"6879:12:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6871:20:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":22266,"nodeType":"ExpressionStatement","src":"6871:20:40"},{"expression":{"argumentTypes":null,"id":22271,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":22267,"name":"pendingAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12994,"src":"6937:12:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":22269,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6960:1:40","subdenomination":null,"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":22268,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6952:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":22270,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6952:10:40","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"6937:25:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":22272,"nodeType":"ExpressionStatement","src":"6937:25:40"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":22274,"name":"oldAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22256,"src":"6987:8:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":22275,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12992,"src":"6997:5:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":22273,"name":"NewAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21988,"src":"6978:8:40","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":22276,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6978:25:40","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22277,"nodeType":"EmitStatement","src":"6973:30:40"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":22279,"name":"oldPendingAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22260,"src":"7034:15:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":22280,"name":"pendingAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12994,"src":"7051:12:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":22278,"name":"NewPendingAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21982,"src":"7018:15:40","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":22281,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7018:46:40","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22282,"nodeType":"EmitStatement","src":"7013:51:40"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":22284,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"7087:5:40","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$13574_$","typeString":"type(enum ComptrollerErrorReporter.Error)"}},"id":22285,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"7087:14:40","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$13574","typeString":"enum ComptrollerErrorReporter.Error"}],"id":22283,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7082:4:40","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":22286,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7082:20:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":22234,"id":22287,"nodeType":"Return","src":"7075:27:40"}]},"documentation":"@notice Accepts transfer of admin rights. msg.sender must be pendingAdmin\n@dev Admin function for pending admin to accept role and update admin\n@return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)","id":22289,"implemented":true,"kind":"function","modifiers":[],"name":"_acceptAdmin","nodeType":"FunctionDefinition","parameters":{"id":22231,"nodeType":"ParameterList","parameters":[],"src":"6410:2:40"},"returnParameters":{"id":22234,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22233,"name":"","nodeType":"VariableDeclaration","scope":22289,"src":"6429:4:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22232,"name":"uint","nodeType":"ElementaryTypeName","src":"6429:4:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"6428:6:40"},"scope":22368,"src":"6389:720:40","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":22366,"nodeType":"Block","src":"7328:1358:40","statements":[{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"id":22297,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":22292,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"7388:3:40","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":22293,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"7388:10:40","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":22295,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22644,"src":"7410:4:40","typeDescriptions":{"typeIdentifier":"t_contract$_Unitroller_$22368","typeString":"contract Unitroller"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Unitroller_$22368","typeString":"contract Unitroller"}],"id":22294,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7402:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":22296,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7402:13:40","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"7388:27:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":22356,"nodeType":"IfStatement","src":"7384:859:40","trueBody":{"id":22355,"nodeType":"Block","src":"7417:826:40","statements":[{"assignments":[22299,22301],"declarations":[{"constant":false,"id":22299,"name":"callSuccess","nodeType":"VariableDeclaration","scope":22355,"src":"7432:16:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":22298,"name":"bool","nodeType":"ElementaryTypeName","src":"7432:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},{"constant":false,"id":22301,"name":"data","nodeType":"VariableDeclaration","scope":22355,"src":"7450:17:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":22300,"name":"bytes","nodeType":"ElementaryTypeName","src":"7450:5:40","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"}],"id":22311,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"6175746f496d706c656d656e746174696f6e2829","id":22308,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7520:22:40","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_dd5cd22c3b106997719bad8aa3ce6f652f70424f68f2392ff8ebb49fd0469f09","typeString":"literal_string \"autoImplementation()\""},"value":"autoImplementation()"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_dd5cd22c3b106997719bad8aa3ce6f652f70424f68f2392ff8ebb49fd0469f09","typeString":"literal_string \"autoImplementation()\""}],"expression":{"argumentTypes":null,"id":22306,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22537,"src":"7496:3:40","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":22307,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSignature","nodeType":"MemberAccess","referencedDeclaration":null,"src":"7496:23:40","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (string memory) pure returns (bytes memory)"}},"id":22309,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7496:47:40","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":22303,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22644,"src":"7479:4:40","typeDescriptions":{"typeIdentifier":"t_contract$_Unitroller_$22368","typeString":"contract Unitroller"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Unitroller_$22368","typeString":"contract Unitroller"}],"id":22302,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7471:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":22304,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7471:13:40","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":22305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"staticcall","nodeType":"MemberAccess","referencedDeclaration":null,"src":"7471:24:40","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":22310,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7471:73:40","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"7431:113:40"},{"assignments":[22313],"declarations":[{"constant":false,"id":22313,"name":"autoImplementation","nodeType":"VariableDeclaration","scope":22355,"src":"7558:23:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":22312,"name":"bool","nodeType":"ElementaryTypeName","src":"7558:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"id":22314,"initialValue":null,"nodeType":"VariableDeclarationStatement","src":"7558:23:40"},{"condition":{"argumentTypes":null,"id":22315,"name":"callSuccess","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22299,"src":"7599:11:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":22326,"nodeType":"IfStatement","src":"7595:64:40","trueBody":{"expression":{"argumentTypes":null,"id":22324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":22316,"name":"autoImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22313,"src":"7613:18:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":22317,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"7612:20:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":22320,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22301,"src":"7646:4:40","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"argumentTypes":null,"components":[{"argumentTypes":null,"id":22321,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7653:4:40","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"},"typeName":"bool"}],"id":22322,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"7652:6:40","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":{"argumentTypes":null,"id":22318,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22537,"src":"7635:3:40","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":22319,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","referencedDeclaration":null,"src":"7635:10:40","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":22323,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7635:24:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7612:47:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":22325,"nodeType":"ExpressionStatement","src":"7612:47:40"}},{"condition":{"argumentTypes":null,"id":22327,"name":"autoImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22313,"src":"7678:18:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":22354,"nodeType":"IfStatement","src":"7674:559:40","trueBody":{"id":22353,"nodeType":"Block","src":"7698:535:40","statements":[{"assignments":[22329],"declarations":[{"constant":false,"id":22329,"name":"latestComptrollerImplementation","nodeType":"VariableDeclaration","scope":22353,"src":"7716:39:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22328,"name":"address","nodeType":"ElementaryTypeName","src":"7716:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":22334,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":22332,"name":"comptrollerImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13026,"src":"7800:25:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":22330,"name":"fuseAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12990,"src":"7758:9:40","typeDescriptions":{"typeIdentifier":"t_contract$_IFuseFeeDistributor_$17368","typeString":"contract IFuseFeeDistributor"}},"id":22331,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"latestComptrollerImplementation","nodeType":"MemberAccess","referencedDeclaration":17328,"src":"7758:41:40","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_address_$","typeString":"function (address) view external returns (address)"}},"id":22333,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7758:68:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"7716:110:40"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":22337,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":22335,"name":"comptrollerImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13026,"src":"7849:25:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"id":22336,"name":"latestComptrollerImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22329,"src":"7878:31:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7849:60:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":22352,"nodeType":"IfStatement","src":"7845:374:40","trueBody":{"id":22351,"nodeType":"Block","src":"7911:308:40","statements":[{"assignments":[22339],"declarations":[{"constant":false,"id":22339,"name":"oldImplementation","nodeType":"VariableDeclaration","scope":22351,"src":"7933:25:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22338,"name":"address","nodeType":"ElementaryTypeName","src":"7933:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":22341,"initialValue":{"argumentTypes":null,"id":22340,"name":"comptrollerImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13026,"src":"7961:25:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"7933:53:40"},{"expression":{"argumentTypes":null,"id":22344,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":22342,"name":"comptrollerImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13026,"src":"8051:25:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":22343,"name":"latestComptrollerImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22329,"src":"8079:31:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8051:59:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":22345,"nodeType":"ExpressionStatement","src":"8051:59:40"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":22347,"name":"oldImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22339,"src":"8155:17:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":22348,"name":"comptrollerImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13026,"src":"8174:25:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":22346,"name":"NewImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21968,"src":"8137:17:40","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":22349,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8137:63:40","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22350,"nodeType":"EmitStatement","src":"8132:68:40"}]}}]}}]}},{"assignments":[22358,null],"declarations":[{"constant":false,"id":22358,"name":"success","nodeType":"VariableDeclaration","scope":22366,"src":"8320:12:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":22357,"name":"bool","nodeType":"ElementaryTypeName","src":"8320:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},null],"id":22364,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":22361,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22550,"src":"8377:3:40","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":22362,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"data","nodeType":"MemberAccess","referencedDeclaration":null,"src":"8377:8:40","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"argumentTypes":null,"id":22359,"name":"comptrollerImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13026,"src":"8338:25:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":22360,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"delegatecall","nodeType":"MemberAccess","referencedDeclaration":null,"src":"8338:38:40","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":22363,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8338:48:40","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"8319:67:40"},{"externalReferences":[{"success":{"declaration":22358,"isOffset":false,"isSlot":false,"src":"8538:7:40","valueSize":1}}],"id":22365,"nodeType":"InlineAssembly","operations":"{\n let free_mem_ptr := mload(0x40)\n returndatacopy(free_mem_ptr, 0, returndatasize())\n switch success\n case 0 {\n revert(free_mem_ptr, returndatasize())\n }\n default {\n return(free_mem_ptr, returndatasize())\n }\n}","src":"8397:283:40"}]},"documentation":"@dev Delegates execution to an implementation contract.\nIt returns to the external caller whatever the implementation returns\nor forwards reverts.","id":22367,"implemented":true,"kind":"fallback","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":22290,"nodeType":"ParameterList","parameters":[],"src":"7308:2:40"},"returnParameters":{"id":22291,"nodeType":"ParameterList","parameters":[],"src":"7328:0:40"},"scope":22368,"src":"7299:1387:40","stateMutability":"payable","superFunction":null,"visibility":"external"}],"scope":22369,"src":"305:8383:40"}],"src":"0:8689:40"},"id":40},"contracts/WhitePaperInterestRateModel.sol":{"ast":{"absolutePath":"contracts/WhitePaperInterestRateModel.sol","exportedSymbols":{"WhitePaperInterestRateModel":[22535]},"id":22536,"nodeType":"SourceUnit","nodes":[{"id":22370,"literals":["solidity","0.5",".17"],"nodeType":"PragmaDirective","src":"0:23:41"},{"absolutePath":"contracts/InterestRateModel.sol","file":"./InterestRateModel.sol","id":22371,"nodeType":"ImportDirective","scope":22536,"sourceUnit":17399,"src":"25:33:41","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/SafeMath.sol","file":"./SafeMath.sol","id":22372,"nodeType":"ImportDirective","scope":22536,"sourceUnit":21346,"src":"59:24:41","symbolAliases":[],"unitAlias":""},{"baseContracts":[{"arguments":null,"baseName":{"contractScope":null,"id":22373,"name":"InterestRateModel","nodeType":"UserDefinedTypeName","referencedDeclaration":17398,"src":"320:17:41","typeDescriptions":{"typeIdentifier":"t_contract$_InterestRateModel_$17398","typeString":"contract InterestRateModel"}},"id":22374,"nodeType":"InheritanceSpecifier","src":"320:17:41"}],"contractDependencies":[17398],"contractKind":"contract","documentation":"@title Compound's WhitePaperInterestRateModel Contract\n@author Compound\n@notice The parameterized model described in section 2.4 of the original Compound Protocol whitepaper","fullyImplemented":true,"id":22535,"linearizedBaseContracts":[22535,17398],"name":"WhitePaperInterestRateModel","nodeType":"ContractDefinition","nodes":[{"id":22377,"libraryName":{"contractScope":null,"id":22375,"name":"SafeMath","nodeType":"UserDefinedTypeName","referencedDeclaration":21345,"src":"350:8:41","typeDescriptions":{"typeIdentifier":"t_contract$_SafeMath_$21345","typeString":"library SafeMath"}},"nodeType":"UsingForDirective","src":"344:24:41","typeName":{"id":22376,"name":"uint","nodeType":"ElementaryTypeName","src":"363:4:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"anonymous":false,"documentation":null,"id":22383,"name":"NewInterestParams","nodeType":"EventDefinition","parameters":{"id":22382,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22379,"indexed":false,"name":"baseRatePerBlock","nodeType":"VariableDeclaration","scope":22383,"src":"398:21:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22378,"name":"uint","nodeType":"ElementaryTypeName","src":"398:4:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":22381,"indexed":false,"name":"multiplierPerBlock","nodeType":"VariableDeclaration","scope":22383,"src":"421:23:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22380,"name":"uint","nodeType":"ElementaryTypeName","src":"421:4:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"397:48:41"},"src":"374:72:41"},{"constant":true,"id":22386,"name":"blocksPerYear","nodeType":"VariableDeclaration","scope":22535,"src":"568:44:41","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22384,"name":"uint","nodeType":"ElementaryTypeName","src":"568:4:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"argumentTypes":null,"hexValue":"32333732353030","id":22385,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"605:7:41","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_2372500_by_1","typeString":"int_const 2372500"},"value":"2372500"},"visibility":"public"},{"constant":false,"id":22388,"name":"multiplierPerBlock","nodeType":"VariableDeclaration","scope":22535,"src":"762:30:41","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22387,"name":"uint","nodeType":"ElementaryTypeName","src":"762:4:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"public"},{"constant":false,"id":22390,"name":"baseRatePerBlock","nodeType":"VariableDeclaration","scope":22535,"src":"905:28:41","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22389,"name":"uint","nodeType":"ElementaryTypeName","src":"905:4:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"public"},{"body":{"id":22416,"nodeType":"Block","src":"1266:208:41","statements":[{"expression":{"argumentTypes":null,"id":22402,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":22397,"name":"baseRatePerBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22390,"src":"1276:16:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":22400,"name":"blocksPerYear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22386,"src":"1315:13:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":22398,"name":"baseRatePerYear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22392,"src":"1295:15:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":22399,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"div","nodeType":"MemberAccess","referencedDeclaration":21278,"src":"1295:19:41","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":22401,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1295:34:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1276:53:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":22403,"nodeType":"ExpressionStatement","src":"1276:53:41"},{"expression":{"argumentTypes":null,"id":22409,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":22404,"name":"multiplierPerBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22388,"src":"1339:18:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":22407,"name":"blocksPerYear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22386,"src":"1382:13:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":22405,"name":"multiplierPerYear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22394,"src":"1360:17:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":22406,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"div","nodeType":"MemberAccess","referencedDeclaration":21278,"src":"1360:21:41","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":22408,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1360:36:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1339:57:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":22410,"nodeType":"ExpressionStatement","src":"1339:57:41"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":22412,"name":"baseRatePerBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22390,"src":"1430:16:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":22413,"name":"multiplierPerBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22388,"src":"1448:18:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":22411,"name":"NewInterestParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22383,"src":"1412:17:41","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":22414,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1412:55:41","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22415,"nodeType":"EmitStatement","src":"1407:60:41"}]},"documentation":"@notice Construct an interest rate model\n@param baseRatePerYear The approximate target base APR, as a mantissa (scaled by 1e18)\n@param multiplierPerYear The rate of increase in interest rate wrt utilization (scaled by 1e18)","id":22417,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":22395,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22392,"name":"baseRatePerYear","nodeType":"VariableDeclaration","scope":22417,"src":"1213:20:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22391,"name":"uint","nodeType":"ElementaryTypeName","src":"1213:4:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":22394,"name":"multiplierPerYear","nodeType":"VariableDeclaration","scope":22417,"src":"1235:22:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22393,"name":"uint","nodeType":"ElementaryTypeName","src":"1235:4:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1212:46:41"},"returnParameters":{"id":22396,"nodeType":"ParameterList","parameters":[],"src":"1266:0:41"},"scope":22535,"src":"1201:273:41","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":22449,"nodeType":"Block","src":"1947:198:41","statements":[{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22430,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":22428,"name":"borrows","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22421,"src":"2020:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":22429,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2031:1:41","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2020:12:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":22434,"nodeType":"IfStatement","src":"2016:51:41","trueBody":{"id":22433,"nodeType":"Block","src":"2034:33:41","statements":[{"expression":{"argumentTypes":null,"hexValue":"30","id":22431,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2055:1:41","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":22427,"id":22432,"nodeType":"Return","src":"2048:8:41"}]}},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":22445,"name":"reserves","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22423,"src":"2128:8:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":22442,"name":"borrows","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22421,"src":"2115:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":22440,"name":"cash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22419,"src":"2106:4:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":22441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":21122,"src":"2106:8:41","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":22443,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2106:17:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":22444,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":21165,"src":"2106:21:41","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":22446,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2106:31:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"31653138","id":22437,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2096:4:41","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"}],"expression":{"argumentTypes":null,"id":22435,"name":"borrows","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22421,"src":"2084:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":22436,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":21226,"src":"2084:11:41","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":22438,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2084:17:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":22439,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"div","nodeType":"MemberAccess","referencedDeclaration":21278,"src":"2084:21:41","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":22447,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2084:54:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":22427,"id":22448,"nodeType":"Return","src":"2077:61:41"}]},"documentation":"@notice Calculates the utilization rate of the market: `borrows / (cash + borrows - reserves)`\n@param cash The amount of cash in the market\n@param borrows The amount of borrows in the market\n@param reserves The amount of reserves in the market (currently unused)\n@return The utilization rate as a mantissa between [0, 1e18]","id":22450,"implemented":true,"kind":"function","modifiers":[],"name":"utilizationRate","nodeType":"FunctionDefinition","parameters":{"id":22424,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22419,"name":"cash","nodeType":"VariableDeclaration","scope":22450,"src":"1880:9:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22418,"name":"uint","nodeType":"ElementaryTypeName","src":"1880:4:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":22421,"name":"borrows","nodeType":"VariableDeclaration","scope":22450,"src":"1891:12:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22420,"name":"uint","nodeType":"ElementaryTypeName","src":"1891:4:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":22423,"name":"reserves","nodeType":"VariableDeclaration","scope":22450,"src":"1905:13:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22422,"name":"uint","nodeType":"ElementaryTypeName","src":"1905:4:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1879:40:41"},"returnParameters":{"id":22427,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22426,"name":"","nodeType":"VariableDeclaration","scope":22450,"src":"1941:4:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22425,"name":"uint","nodeType":"ElementaryTypeName","src":"1941:4:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1940:6:41"},"scope":22535,"src":"1855:290:41","stateMutability":"pure","superFunction":null,"visibility":"public"},{"body":{"id":22480,"nodeType":"Block","src":"2614:142:41","statements":[{"assignments":[22462],"declarations":[{"constant":false,"id":22462,"name":"ur","nodeType":"VariableDeclaration","scope":22480,"src":"2624:7:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22461,"name":"uint","nodeType":"ElementaryTypeName","src":"2624:4:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":22468,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":22464,"name":"cash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22452,"src":"2650:4:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":22465,"name":"borrows","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22454,"src":"2656:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":22466,"name":"reserves","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22456,"src":"2665:8:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":22463,"name":"utilizationRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22450,"src":"2634:15:41","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":22467,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2634:40:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2624:50:41"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":22477,"name":"baseRatePerBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22390,"src":"2732:16:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"31653138","id":22474,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2722:4:41","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":22471,"name":"multiplierPerBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22388,"src":"2698:18:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":22469,"name":"ur","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22462,"src":"2691:2:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":22470,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":21226,"src":"2691:6:41","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":22472,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2691:26:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":22473,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"div","nodeType":"MemberAccess","referencedDeclaration":21278,"src":"2691:30:41","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":22475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2691:36:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":22476,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":21122,"src":"2691:40:41","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":22478,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2691:58:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":22460,"id":22479,"nodeType":"Return","src":"2684:65:41"}]},"documentation":"@notice Calculates the current borrow rate per block, with the error code expected by the market\n@param cash The amount of cash in the market\n@param borrows The amount of borrows in the market\n@param reserves The amount of reserves in the market\n@return The borrow rate percentage per block as a mantissa (scaled by 1e18)","id":22481,"implemented":true,"kind":"function","modifiers":[],"name":"getBorrowRate","nodeType":"FunctionDefinition","parameters":{"id":22457,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22452,"name":"cash","nodeType":"VariableDeclaration","scope":22481,"src":"2547:9:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22451,"name":"uint","nodeType":"ElementaryTypeName","src":"2547:4:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":22454,"name":"borrows","nodeType":"VariableDeclaration","scope":22481,"src":"2558:12:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22453,"name":"uint","nodeType":"ElementaryTypeName","src":"2558:4:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":22456,"name":"reserves","nodeType":"VariableDeclaration","scope":22481,"src":"2572:13:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22455,"name":"uint","nodeType":"ElementaryTypeName","src":"2572:4:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2546:40:41"},"returnParameters":{"id":22460,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22459,"name":"","nodeType":"VariableDeclaration","scope":22481,"src":"2608:4:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22458,"name":"uint","nodeType":"ElementaryTypeName","src":"2608:4:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2607:6:41"},"scope":22535,"src":"2524:232:41","stateMutability":"view","superFunction":17384,"visibility":"public"},{"body":{"id":22533,"nodeType":"Block","src":"3287:307:41","statements":[{"assignments":[22495],"declarations":[{"constant":false,"id":22495,"name":"oneMinusReserveFactor","nodeType":"VariableDeclaration","scope":22533,"src":"3297:26:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22494,"name":"uint","nodeType":"ElementaryTypeName","src":"3297:4:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":22502,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":22500,"name":"reserveFactorMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22489,"src":"3341:21:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"31653138","id":22497,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3331:4:41","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"}],"id":22496,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3326:4:41","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":22498,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3326:10:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":22499,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":21165,"src":"3326:14:41","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":22501,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3326:37:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3297:66:41"},{"assignments":[22504],"declarations":[{"constant":false,"id":22504,"name":"borrowRate","nodeType":"VariableDeclaration","scope":22533,"src":"3373:15:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22503,"name":"uint","nodeType":"ElementaryTypeName","src":"3373:4:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":22510,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":22506,"name":"cash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22483,"src":"3405:4:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":22507,"name":"borrows","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22485,"src":"3411:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":22508,"name":"reserves","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22487,"src":"3420:8:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":22505,"name":"getBorrowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22481,"src":"3391:13:41","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) view returns (uint256)"}},"id":22509,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3391:38:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3373:56:41"},{"assignments":[22512],"declarations":[{"constant":false,"id":22512,"name":"rateToPool","nodeType":"VariableDeclaration","scope":22533,"src":"3439:15:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22511,"name":"uint","nodeType":"ElementaryTypeName","src":"3439:4:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":22520,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"31653138","id":22518,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3499:4:41","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":22515,"name":"oneMinusReserveFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22495,"src":"3472:21:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":22513,"name":"borrowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22504,"src":"3457:10:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":22514,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":21226,"src":"3457:14:41","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":22516,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3457:37:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":22517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"div","nodeType":"MemberAccess","referencedDeclaration":21278,"src":"3457:41:41","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":22519,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3457:47:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3439:65:41"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"31653138","id":22530,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3582:4:41","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":22527,"name":"rateToPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22512,"src":"3566:10:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":22522,"name":"cash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22483,"src":"3537:4:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":22523,"name":"borrows","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22485,"src":"3543:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":22524,"name":"reserves","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22487,"src":"3552:8:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":22521,"name":"utilizationRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22450,"src":"3521:15:41","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":22525,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3521:40:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":22526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":21226,"src":"3521:44:41","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":22528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3521:56:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":22529,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"div","nodeType":"MemberAccess","referencedDeclaration":21278,"src":"3521:60:41","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":22531,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3521:66:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":22493,"id":22532,"nodeType":"Return","src":"3514:73:41"}]},"documentation":"@notice Calculates the current supply rate per block\n@param cash The amount of cash in the market\n@param borrows The amount of borrows in the market\n@param reserves The amount of reserves in the market\n@param reserveFactorMantissa The current reserve factor for the market\n@return The supply rate percentage per block as a mantissa (scaled by 1e18)","id":22534,"implemented":true,"kind":"function","modifiers":[],"name":"getSupplyRate","nodeType":"FunctionDefinition","parameters":{"id":22490,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22483,"name":"cash","nodeType":"VariableDeclaration","scope":22534,"src":"3192:9:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22482,"name":"uint","nodeType":"ElementaryTypeName","src":"3192:4:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":22485,"name":"borrows","nodeType":"VariableDeclaration","scope":22534,"src":"3203:12:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22484,"name":"uint","nodeType":"ElementaryTypeName","src":"3203:4:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":22487,"name":"reserves","nodeType":"VariableDeclaration","scope":22534,"src":"3217:13:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22486,"name":"uint","nodeType":"ElementaryTypeName","src":"3217:4:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":22489,"name":"reserveFactorMantissa","nodeType":"VariableDeclaration","scope":22534,"src":"3232:26:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22488,"name":"uint","nodeType":"ElementaryTypeName","src":"3232:4:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"3191:68:41"},"returnParameters":{"id":22493,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22492,"name":"","nodeType":"VariableDeclaration","scope":22534,"src":"3281:4:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22491,"name":"uint","nodeType":"ElementaryTypeName","src":"3281:4:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"3280:6:41"},"scope":22535,"src":"3169:425:41","stateMutability":"view","superFunction":17397,"visibility":"public"}],"scope":22536,"src":"280:3316:41"}],"src":"0:3597:41"},"id":41}},"contracts":{"contracts/BaseJumpRateModelV2.sol":{"BaseJumpRateModelV2":{"abi":[{"inputs":[{"internalType":"uint256","name":"baseRatePerYear","type":"uint256"},{"internalType":"uint256","name":"multiplierPerYear","type":"uint256"},{"internalType":"uint256","name":"jumpMultiplierPerYear","type":"uint256"},{"internalType":"uint256","name":"kink_","type":"uint256"},{"internalType":"address","name":"owner_","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"baseRatePerBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"multiplierPerBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"jumpMultiplierPerBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"kink","type":"uint256"}],"name":"NewInterestParams","type":"event"},{"constant":true,"inputs":[],"name":"baseRatePerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"blocksPerYear","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"cash","type":"uint256"},{"internalType":"uint256","name":"borrows","type":"uint256"},{"internalType":"uint256","name":"reserves","type":"uint256"},{"internalType":"uint256","name":"reserveFactorMantissa","type":"uint256"}],"name":"getSupplyRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"jumpMultiplierPerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"kink","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"multiplierPerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"baseRatePerYear","type":"uint256"},{"internalType":"uint256","name":"multiplierPerYear","type":"uint256"},{"internalType":"uint256","name":"jumpMultiplierPerYear","type":"uint256"},{"internalType":"uint256","name":"kink_","type":"uint256"}],"name":"updateJumpRateModel","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"cash","type":"uint256"},{"internalType":"uint256","name":"borrows","type":"uint256"},{"internalType":"uint256","name":"reserves","type":"uint256"}],"name":"utilizationRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"baseRatePerBlock()":"f14039de","blocksPerYear()":"a385fb96","getSupplyRate(uint256,uint256,uint256,uint256)":"b8168816","jumpMultiplierPerBlock()":"b9f9850a","kink()":"fd2da339","multiplierPerBlock()":"8726bb89","owner()":"8da5cb5b","updateJumpRateModel(uint256,uint256,uint256,uint256)":"2037f3e7","utilizationRate(uint256,uint256,uint256)":"6e71e2d8"}},"metadata":"{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"baseRatePerYear\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"multiplierPerYear\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"jumpMultiplierPerYear\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"kink_\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner_\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"baseRatePerBlock\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"multiplierPerBlock\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"jumpMultiplierPerBlock\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"kink\",\"type\":\"uint256\"}],\"name\":\"NewInterestParams\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"baseRatePerBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"blocksPerYear\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"cash\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"borrows\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserves\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveFactorMantissa\",\"type\":\"uint256\"}],\"name\":\"getSupplyRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"jumpMultiplierPerBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"kink\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"multiplierPerBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"baseRatePerYear\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"multiplierPerYear\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"jumpMultiplierPerYear\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"kink_\",\"type\":\"uint256\"}],\"name\":\"updateJumpRateModel\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"cash\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"borrows\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserves\",\"type\":\"uint256\"}],\"name\":\"utilizationRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Compound (modified by Dharma Labs, refactored by Arr00)\",\"methods\":{\"constructor\":{\"params\":{\"baseRatePerYear\":\"The approximate target base APR, as a mantissa (scaled by 1e18)\",\"jumpMultiplierPerYear\":\"The multiplierPerBlock after hitting a specified utilization point\",\"kink_\":\"The utilization point at which the jump multiplier is applied\",\"multiplierPerYear\":\"The rate of increase in interest rate wrt utilization (scaled by 1e18)\",\"owner_\":\"The address of the owner, i.e. the Timelock contract (which has the ability to update parameters directly)\"}},\"getSupplyRate(uint256,uint256,uint256,uint256)\":{\"params\":{\"borrows\":\"The amount of borrows in the market\",\"cash\":\"The amount of cash in the market\",\"reserveFactorMantissa\":\"The current reserve factor for the market\",\"reserves\":\"The amount of reserves in the market\"},\"return\":\"The supply rate percentage per block as a mantissa (scaled by 1e18)\"},\"updateJumpRateModel(uint256,uint256,uint256,uint256)\":{\"params\":{\"baseRatePerYear\":\"The approximate target base APR, as a mantissa (scaled by 1e18)\",\"jumpMultiplierPerYear\":\"The multiplierPerBlock after hitting a specified utilization point\",\"kink_\":\"The utilization point at which the jump multiplier is applied\",\"multiplierPerYear\":\"The rate of increase in interest rate wrt utilization (scaled by 1e18)\"}},\"utilizationRate(uint256,uint256,uint256)\":{\"params\":{\"borrows\":\"The amount of borrows in the market\",\"cash\":\"The amount of cash in the market\",\"reserves\":\"The amount of reserves in the market (currently unused)\"},\"return\":\"The utilization rate as a mantissa between [0, 1e18]\"}},\"title\":\"Logic for Compound's JumpRateModel Contract V2.\"},\"userdoc\":{\"methods\":{\"constructor\":\"Construct an interest rate model\",\"getSupplyRate(uint256,uint256,uint256,uint256)\":{\"notice\":\"Calculates the current supply rate per block\"},\"updateJumpRateModel(uint256,uint256,uint256,uint256)\":{\"notice\":\"Update the parameters of the interest rate model (only callable by owner, i.e. Timelock)\"},\"utilizationRate(uint256,uint256,uint256)\":{\"notice\":\"Calculates the utilization rate of the market: `borrows / (cash + borrows - reserves)`\"}},\"notice\":\"Version 2 modifies Version 1 by enabling updateable parameters.\"}},\"settings\":{\"compilationTarget\":{\"contracts/BaseJumpRateModelV2.sol\":\"BaseJumpRateModelV2\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/BaseJumpRateModelV2.sol\":{\"keccak256\":\"0xe7c1422988672e4dce8e015e5830c7fe28dc19063a520ecd9b4a50502f65d3d8\",\"urls\":[\"bzz-raw://96d9b19e0b2f3539af60ef24c37f3422b9d10526a76331663846572b430422bb\",\"dweb:/ipfs/Qmdan3L59NXjMpyxhQLtAxCEGKUVb9u95Yuqs4HdGyx7YA\"]},\"contracts/SafeMath.sol\":{\"keccak256\":\"0x675b1178c34633ecc37124c254349c1d3fe239c7bd74a649eb55f54adafd2dee\",\"urls\":[\"bzz-raw://c55f6f93d24b0976189d8fcf4df706b04439041d43a1e4d289db440251f9bc2a\",\"dweb:/ipfs/QmUAsuvRZMJ4hvsxKF3ud5g93DBEbnaXnt7waJzziurC2S\"]}},\"version\":1}"}},"contracts/CDaiDelegate.sol":{"CDaiDelegate":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"cashPrior","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"interestAccumulated","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"borrowIndex","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalBorrows","type":"uint256"}],"name":"AccrueInterest","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"borrower","type":"address"},{"indexed":false,"internalType":"uint256","name":"borrowAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"accountBorrows","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalBorrows","type":"uint256"}],"name":"Borrow","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"error","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"info","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"detail","type":"uint256"}],"name":"Failure","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"liquidator","type":"address"},{"indexed":false,"internalType":"address","name":"borrower","type":"address"},{"indexed":false,"internalType":"uint256","name":"repayAmount","type":"uint256"},{"indexed":false,"internalType":"address","name":"cTokenCollateral","type":"address"},{"indexed":false,"internalType":"uint256","name":"seizeTokens","type":"uint256"}],"name":"LiquidateBorrow","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"minter","type":"address"},{"indexed":false,"internalType":"uint256","name":"mintAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"mintTokens","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldAdminFeeMantissa","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newAdminFeeMantissa","type":"uint256"}],"name":"NewAdminFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract ComptrollerInterface","name":"oldComptroller","type":"address"},{"indexed":false,"internalType":"contract ComptrollerInterface","name":"newComptroller","type":"address"}],"name":"NewComptroller","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldFuseFeeMantissa","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newFuseFeeMantissa","type":"uint256"}],"name":"NewFuseFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldImplementation","type":"address"},{"indexed":false,"internalType":"address","name":"newImplementation","type":"address"}],"name":"NewImplementation","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract InterestRateModel","name":"oldInterestRateModel","type":"address"},{"indexed":false,"internalType":"contract InterestRateModel","name":"newInterestRateModel","type":"address"}],"name":"NewMarketInterestRateModel","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldReserveFactorMantissa","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newReserveFactorMantissa","type":"uint256"}],"name":"NewReserveFactor","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"redeemer","type":"address"},{"indexed":false,"internalType":"uint256","name":"redeemAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"redeemTokens","type":"uint256"}],"name":"Redeem","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"payer","type":"address"},{"indexed":false,"internalType":"address","name":"borrower","type":"address"},{"indexed":false,"internalType":"uint256","name":"repayAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"accountBorrows","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalBorrows","type":"uint256"}],"name":"RepayBorrow","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"benefactor","type":"address"},{"indexed":false,"internalType":"uint256","name":"addAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newTotalReserves","type":"uint256"}],"name":"ReservesAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"admin","type":"address"},{"indexed":false,"internalType":"uint256","name":"reduceAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newTotalReserves","type":"uint256"}],"name":"ReservesReduced","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":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"constant":false,"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"name":"_becomeImplementation","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"compLikeDelegatee","type":"address"}],"name":"_delegateCompLikeTo","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"_prepare","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"reduceAmount","type":"uint256"}],"name":"_reduceReserves","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"newAdminFeeMantissa","type":"uint256"}],"name":"_setAdminFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"implementation_","type":"address"},{"internalType":"bool","name":"allowResign","type":"bool"},{"internalType":"bytes","name":"becomeImplementationData","type":"bytes"}],"name":"_setImplementationSafe","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"contract InterestRateModel","name":"newInterestRateModel","type":"address"}],"name":"_setInterestRateModel","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"}],"name":"_setNameAndSymbol","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"newReserveFactorMantissa","type":"uint256"}],"name":"_setReserveFactor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"withdrawAmount","type":"uint256"}],"name":"_withdrawAdminFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"withdrawAmount","type":"uint256"}],"name":"_withdrawFuseFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"accrualBlockNumber","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"accrueInterest","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"adminFeeMantissa","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOfUnderlying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"borrowAmount","type":"uint256"}],"name":"borrow","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"borrowBalanceCurrent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"borrowBalanceStored","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"borrowIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"borrowRatePerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"comptroller","outputs":[{"internalType":"contract ComptrollerInterface","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"daiJoinAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"exchangeRateCurrent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"exchangeRateStored","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"fuseFeeMantissa","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getAccountSnapshot","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getCash","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"contract ComptrollerInterface","name":"comptroller_","type":"address"},{"internalType":"contract InterestRateModel","name":"interestRateModel_","type":"address"},{"internalType":"uint256","name":"initialExchangeRateMantissa_","type":"uint256"},{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"uint8","name":"decimals_","type":"uint8"},{"internalType":"uint256","name":"reserveFactorMantissa_","type":"uint256"},{"internalType":"uint256","name":"adminFeeMantissa_","type":"uint256"}],"name":"initialize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"underlying_","type":"address"},{"internalType":"contract ComptrollerInterface","name":"comptroller_","type":"address"},{"internalType":"contract InterestRateModel","name":"interestRateModel_","type":"address"},{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"uint256","name":"reserveFactorMantissa_","type":"uint256"},{"internalType":"uint256","name":"adminFeeMantissa_","type":"uint256"}],"name":"initialize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"interestRateModel","outputs":[{"internalType":"contract InterestRateModel","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isCEther","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isCToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"borrower","type":"address"},{"internalType":"uint256","name":"repayAmount","type":"uint256"},{"internalType":"contract CTokenInterface","name":"cTokenCollateral","type":"address"}],"name":"liquidateBorrow","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"mintAmount","type":"uint256"}],"name":"mint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"potAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"protocolSeizeShareMantissa","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"redeemTokens","type":"uint256"}],"name":"redeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"redeemAmount","type":"uint256"}],"name":"redeemUnderlying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"repayAmount","type":"uint256"}],"name":"repayBorrow","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"borrower","type":"address"},{"internalType":"uint256","name":"repayAmount","type":"uint256"}],"name":"repayBorrowBehalf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"reserveFactorMantissa","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"liquidator","type":"address"},{"internalType":"address","name":"borrower","type":"address"},{"internalType":"uint256","name":"seizeTokens","type":"uint256"}],"name":"seize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"supplyRatePerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalAdminFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalBorrows","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"totalBorrowsCurrent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalFuseFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalReserves","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"src","type":"address"},{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"underlying","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"vatAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"6080604052616a1a806100136000396000f3fe6080604052600436106103975760003560e01c80638a8df2e6116101dc578063ae9d70b011610102578063dc028ab1116100a0578063f5e3c4621161006f578063f5e3c46214610fc9578063f8f9da281461100c578063fca7820b14611021578063fe9c44ae1461104b57610397565b8063dc028ab114610f31578063dd62ed3e14610f46578063f2b3abbd14610f81578063f3fdb15a14610fb457610397565b8063c37f68e2116100dc578063c37f68e214610e6f578063c5ebeaec14610ec8578063db006a7514610ef2578063dbfe7c1914610f1c57610397565b8063ae9d70b014610e02578063b2a02ff114610e17578063bd6d894d14610e5a57610397565b8063a03dce8d1161017a578063a7b820df11610149578063a7b820df14610d75578063a9059cbb14610d9f578063aa5af0fd14610dd8578063ac784ddc14610ded57610397565b8063a03dce8d14610bb0578063a0712d6814610bda578063a0b0d28914610c04578063a6afed9514610d6057610397565b80638f840ddd116101b65780638f840ddd14610b2957806391dd36c614610b3e57806395d89b4114610b6857806395dd919314610b7d57610397565b80638a8df2e614610aea5780638d02d9a114610aff5780638d925ccd14610b1457610397565b806347bd3718116102c157806366ced6021161025f57806370a082311161022e57806370a0823114610a4557806373acee9814610a785780637f1e06be14610a8d578063852a12e314610ac057610397565b806366ced602146109f15780636752e70214610a065780636c540baf14610a1b5780636f307dc314610a3057610397565b80635c60da1b1161029b5780635c60da1b1461096c5780635fe3b5671461099d578063601a0bf1146109b257806361feacff146109dc57610397565b806347bd37181461084a57806350d85b731461085f57806356e67728146108f157610397565b8063182df0f511610339578063313ce56711610308578063313ce5671461070c57806334154d4c146107375780633af9e669146108025780633b1d21a21461083557610397565b8063182df0f5146106735780631db789441461068857806323b872dd146106905780632608f818146106d357610397565b80630f8855e8116103755780630f8855e8146104af578063173b99041461061657806317bfdfbc1461062b57806318160ddd1461065e57610397565b806306fdde031461039c578063095ea7b3146104265780630e75270214610473575b600080fd5b3480156103a857600080fd5b506103b1611060565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103eb5781810151838201526020016103d3565b50505050905090810190601f1680156104185780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561043257600080fd5b5061045f6004803603604081101561044957600080fd5b506001600160a01b0381351690602001356110eb565b604080519115158252519081900360200190f35b34801561047f57600080fd5b5061049d6004803603602081101561049657600080fd5b5035611158565b60408051918252519081900360200190f35b3480156104bb57600080fd5b5061061460048036036101008110156104d357600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b81111561050d57600080fd5b82018360208201111561051f57600080fd5b803590602001918460018302840111600160201b8311171561054057600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561059257600080fd5b8201836020820111156105a457600080fd5b803590602001918460018302840111600160201b831117156105c557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505060ff833516935050506020810135906040013561116e565b005b34801561062257600080fd5b5061049d61141c565b34801561063757600080fd5b5061049d6004803603602081101561064e57600080fd5b50356001600160a01b0316611422565b34801561066a57600080fd5b5061049d61149e565b34801561067f57600080fd5b5061049d6114a4565b610614611507565b34801561069c57600080fd5b5061045f600480360360608110156106b357600080fd5b506001600160a01b03813581169160208101359091169060400135611718565b3480156106df57600080fd5b5061049d600480360360408110156106f657600080fd5b506001600160a01b038135169060200135611746565b34801561071857600080fd5b5061072161175c565b6040805160ff9092168252519081900360200190f35b34801561074357600080fd5b506106146004803603604081101561075a57600080fd5b810190602081018135600160201b81111561077457600080fd5b82018360208201111561078657600080fd5b803590602001918460018302840111600160201b831117156107a757600080fd5b919390929091602081019035600160201b8111156107c457600080fd5b8201836020820111156107d657600080fd5b803590602001918460018302840111600160201b831117156107f757600080fd5b509092509050611765565b34801561080e57600080fd5b5061049d6004803603602081101561082557600080fd5b50356001600160a01b03166117d1565b34801561084157600080fd5b5061049d611887565b34801561085657600080fd5b5061049d611896565b34801561086b57600080fd5b506106146004803603606081101561088257600080fd5b6001600160a01b03823516916020810135151591810190606081016040820135600160201b8111156108b357600080fd5b8201836020820111156108c557600080fd5b803590602001918460018302840111600160201b831117156108e657600080fd5b50909250905061189c565b3480156108fd57600080fd5b506106146004803603602081101561091457600080fd5b810190602081018135600160201b81111561092e57600080fd5b82018360208201111561094057600080fd5b803590602001918460018302840111600160201b8311171561096157600080fd5b509092509050611925565b34801561097857600080fd5b506109816119a6565b604080516001600160a01b039092168252519081900360200190f35b3480156109a957600080fd5b506109816119b5565b3480156109be57600080fd5b5061049d600480360360208110156109d557600080fd5b50356119c4565b3480156109e857600080fd5b5061049d611a15565b3480156109fd57600080fd5b50610981611a1b565b348015610a1257600080fd5b5061049d611a2a565b348015610a2757600080fd5b5061049d611a35565b348015610a3c57600080fd5b50610981611a3b565b348015610a5157600080fd5b5061049d60048036036020811015610a6857600080fd5b50356001600160a01b0316611a4a565b348015610a8457600080fd5b5061049d611a65565b348015610a9957600080fd5b5061061460048036036020811015610ab057600080fd5b50356001600160a01b0316611ad8565b348015610acc57600080fd5b5061049d60048036036020811015610ae357600080fd5b5035611b7d565b348015610af657600080fd5b50610981611b88565b348015610b0b57600080fd5b5061049d611b97565b348015610b2057600080fd5b50610981611b9d565b348015610b3557600080fd5b5061049d611bac565b348015610b4a57600080fd5b5061049d60048036036020811015610b6157600080fd5b5035611bb2565b348015610b7457600080fd5b506103b1611bef565b348015610b8957600080fd5b5061049d60048036036020811015610ba057600080fd5b50356001600160a01b0316611c4a565b348015610bbc57600080fd5b5061049d60048036036020811015610bd357600080fd5b5035611cae565b348015610be657600080fd5b5061049d60048036036020811015610bfd57600080fd5b5035611ceb565b348015610c1057600080fd5b50610614600480360360e0811015610c2757600080fd5b6001600160a01b0382358116926020810135821692604082013590921691810190608081016060820135600160201b811115610c6257600080fd5b820183602082011115610c7457600080fd5b803590602001918460018302840111600160201b83111715610c9557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115610ce757600080fd5b820183602082011115610cf957600080fd5b803590602001918460018302840111600160201b83111715610d1a57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505082359350505060200135611cf7565b348015610d6c57600080fd5b5061049d611e10565b348015610d8157600080fd5b5061049d60048036036020811015610d9857600080fd5b5035611e8b565b348015610dab57600080fd5b5061045f60048036036040811015610dc257600080fd5b506001600160a01b038135169060200135611ec8565b348015610de457600080fd5b5061049d611ef5565b348015610df957600080fd5b5061045f611efb565b348015610e0e57600080fd5b5061049d611f00565b348015610e2357600080fd5b5061049d60048036036060811015610e3a57600080fd5b506001600160a01b03813581169160208101359091169060400135611fbd565b348015610e6657600080fd5b5061049d611fe1565b348015610e7b57600080fd5b50610ea260048036036020811015610e9257600080fd5b50356001600160a01b0316612055565b604080519485526020850193909352838301919091526060830152519081900360800190f35b348015610ed457600080fd5b5061049d60048036036020811015610eeb57600080fd5b50356120ea565b348015610efe57600080fd5b5061049d60048036036020811015610f1557600080fd5b50356120f5565b348015610f2857600080fd5b5061049d612100565b348015610f3d57600080fd5b5061049d612106565b348015610f5257600080fd5b5061049d60048036036040811015610f6957600080fd5b506001600160a01b038135811691602001351661210c565b348015610f8d57600080fd5b5061049d60048036036020811015610fa457600080fd5b50356001600160a01b0316612137565b348015610fc057600080fd5b50610981612171565b348015610fd557600080fd5b5061049d60048036036060811015610fec57600080fd5b506001600160a01b03813581169160208101359160409091013516612180565b34801561101857600080fd5b5061049d612198565b34801561102d57600080fd5b5061049d6004803603602081101561104457600080fd5b503561220d565b34801561105757600080fd5b5061045f61224a565b6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156110e35780601f106110b8576101008083540402835291602001916110e3565b820191906000526020600020905b8154815290600101906020018083116110c657829003601f168201915b505050505081565b3360008181526013602090815260408083206001600160a01b03871680855290835281842086905581518681529151939493909284927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a360019150505b92915050565b6000806111648361224f565b509150505b919050565b3373a731585ab05fc9f83555cf9bff8f58ee94e18f85146111c05760405162461bcd60e51b81526004018080602001828103825260298152602001806168ac6029913960400191505060405180910390fd5b600b541580156111d05750600c54155b61120b5760405162461bcd60e51b81526004018080602001828103825260238152602001806167466023913960400191505060405180910390fd5b60078690558561124c5760405162461bcd60e51b815260040180806020018281038252603081526020018061679a6030913960400191505060405180910390fd5b6000611257896122b2565b905080156112ac576040805162461bcd60e51b815260206004820152601a60248201527f73657474696e6720636f6d7074726f6c6c6572206661696c6564000000000000604482015290519081900360640190fd5b6112b46123e5565b600b55670de0b6b3a7640000600c556112cc886123e9565b9050801561130b5760405162461bcd60e51b81526004018080602001828103825260228152602001806167f76022913960400191505060405180910390fd5b855161131e906002906020890190616536565b508451611332906003906020880190616536565b506004805460ff191660ff861617905561134b836126ef565b905080156113a0576040805162461bcd60e51b815260206004820152601d60248201527f73657474696e67207265736572766520666163746f72206661696c6564000000604482015290519081900360640190fd5b6113a9826127a8565b905080156113fe576040805162461bcd60e51b815260206004820152601860248201527f73657474696e672061646d696e20666565206661696c65640000000000000000604482015290519081900360640190fd5b50506001805460ff60b01b1916600160b01b17905550505050505050565b600a5481565b60008061142e816128cd565b6000611438611e10565b14611483576040805162461bcd60e51b81526020600482015260166024820152751858d8dc9d59481a5b9d195c995cdd0819985a5b195960521b604482015290519081900360640190fd5b61148c83611c4a565b91505b61149881612996565b50919050565b60115481565b60008060006114b1612a01565b909250905060008260038111156114c457fe5b146115005760405162461bcd60e51b815260040180806020018281038252603581526020018061697d6035913960400191505060405180910390fd5b9150505b90565b33301480159061158d5750600560009054906101000a90046001600160a01b03166001600160a01b031663dd5cd22c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561156057600080fd5b505afa158015611574573d6000803e3d6000fd5b505050506040513d602081101561158a57600080fd5b50515b156117165760008054604080516345cc970560e01b81526001600160a01b03909216600483015251829160609173a731585ab05fc9f83555cf9bff8f58ee94e18f85916345cc97059160248083019287929190829003018186803b1580156115f457600080fd5b505afa158015611608573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052606081101561163157600080fd5b81516020830151604080850180519151939592948301929184600160201b82111561165b57600080fd5b90830190602082018581111561167057600080fd5b8251600160201b81118282018810171561168957600080fd5b82525081516020918201929091019080838360005b838110156116b657818101518382015260200161169e565b50505050905090810190601f1680156116e35780820380516001836020036101000a031916815260200191505b5060405250506000549396509194509250506001600160a01b0380851691161461171257611712838383612ac1565b5050505b565b600080611724816128cd565b600061173233878787612cdd565b14915061173e81612996565b509392505050565b6000806117538484612f69565b50949350505050565b60045460ff1681565b61176d612fce565b6117b1576040805162461bcd60e51b815260206004820152601060248201526f31b0b63632b9103737ba1030b236b4b760811b604482015290519081900360640190fd5b6117bd600285856165b0565b506117ca600383836165b0565b5050505050565b60006117db61661e565b60405180602001604052806117ee611fe1565b90526001600160a01b03841660009081526012602052604081205491925090819061181a908490613149565b9092509050600082600381111561182d57fe5b1461187f576040805162461bcd60e51b815260206004820152601f60248201527f62616c616e636520636f756c64206e6f742062652063616c63756c6174656400604482015290519081900360640190fd5b949350505050565b600061189161319d565b905090565b600d5481565b6118a4612fce565b6118de576040805162461bcd60e51b815260206004820152600660248201526510b0b236b4b760d11b604482015290519081900360640190fd5b61191f848484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612ac192505050565b50505050565b333014806119365750611936612fce565b6119715760405162461bcd60e51b81526004018080602001828103825260318152602001806167696031913960400191505060405180910390fd5b6000808383604081101561198457600080fd5b506001600160a01b0381358116935060209091013516905061191f82826132af565b6000546001600160a01b031681565b6005546001600160a01b031681565b6000806119d0816128cd565b60006119da611e10565b90508015611a00576119f88160118111156119f157fe5b603b6135ca565b92505061148f565b611a0984613630565b92505061149881612996565b600f5481565b6017546001600160a01b031681565b666379da05b6000081565b600b5481565b6015546001600160a01b031681565b6001600160a01b031660009081526012602052604090205490565b600080611a71816128cd565b6000611a7b611e10565b14611ac6576040805162461bcd60e51b81526020600482015260166024820152751858d8dc9d59481a5b9d195c995cdd0819985a5b195960521b604482015290519081900360640190fd5b600d549150611ad481612996565b5090565b611ae0612fce565b611b1b5760405162461bcd60e51b815260040180806020018281038252602d8152602001806167ca602d913960400191505060405180910390fd5b601554604080516317066a5760e21b81526001600160a01b03848116600483015291519190921691635c19a95c91602480830192600092919082900301818387803b158015611b6957600080fd5b505af11580156117ca573d6000803e3d6000fd5b6000611152826136fc565b6016546001600160a01b031681565b60085481565b6018546001600160a01b031681565b600e5481565b600080611bbe816128cd565b6000611bc8611e10565b90508015611be6576119f8816011811115611bdf57fe5b60526135ca565b611a09846127a8565b6003805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156110e35780601f106110b8576101008083540402835291602001916110e3565b6000806000611c588461373c565b90925090506000826003811115611c6b57fe5b14611ca75760405162461bcd60e51b81526004018080602001828103825260378152602001806168196037913960400191505060405180910390fd5b9392505050565b600080611cba816128cd565b6000611cc4611e10565b90508015611ce2576119f8816011811115611cdb57fe5b60336135ca565b611a09846137f0565b60008061116483613871565b60006702c68af0bb14000090506000886001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015611d3f57600080fd5b505afa158015611d53573d6000803e3d6000fd5b505050506040513d6020811015611d6957600080fd5b50519050611d7d8888848989868a8a61116e565b601580546001600160a01b0319166001600160a01b038b81169190911791829055604080516318160ddd60e01b8152905192909116916318160ddd91600480820192602092909190829003018186803b158015611dd957600080fd5b505afa158015611ded573d6000803e3d6000fd5b505050506040513d6020811015611e0357600080fd5b5050505050505050505050565b60175460408051634fb3c66560e11b815290516000926001600160a01b031691639f678cca91600480830192602092919082900301818787803b158015611e5657600080fd5b505af1158015611e6a573d6000803e3d6000fd5b505050506040513d6020811015611e8057600080fd5b5061189190506138b1565b600080611e97816128cd565b6000611ea1611e10565b90508015611ebf576119f8816011811115611eb857fe5b60376135ca565b611a0984613a71565b600080611ed4816128cd565b6000611ee233338787612cdd565b149150611eee81612996565b5092915050565b600c5481565b600081565b6006546000906001600160a01b031663b8168816611f1c61319d565b600d54611f38600e54611f33600f54601054613b59565b613b59565b600854600954600a5401016040518563ffffffff1660e01b81526004018085815260200184815260200183815260200182815260200194505050505060206040518083038186803b158015611f8c57600080fd5b505afa158015611fa0573d6000803e3d6000fd5b505050506040513d6020811015611fb657600080fd5b5051905090565b60006001611fca816128cd565b611fd633868686613b8f565b915061173e81612996565b600080611fed816128cd565b6000611ff7611e10565b14612042576040805162461bcd60e51b81526020600482015260166024820152751858d8dc9d59481a5b9d195c995cdd0819985a5b195960521b604482015290519081900360640190fd5b61204a6114a4565b9150611ad481612996565b6001600160a01b0381166000908152601260205260408120548190819081908180806120808961373c565b93509050600081600381111561209257fe5b146120b05760095b9750600096508695508594506120e39350505050565b6120b8612a01565b9250905060008160038111156120ca57fe5b146120d657600961209a565b5060009650919450925090505b9193509193565b600061115282613f6e565b600061115282613fac565b60095481565b60105481565b6001600160a01b03918216600090815260136020908152604080832093909416825291909152205490565b600080612142611e10565b905080156121685761216081601181111561215957fe5b604b6135ca565b915050611169565b611ca7836123e9565b6006546001600160a01b031681565b60008061218e858585613fe5565b5095945050505050565b6006546000906001600160a01b03166315f240536121b461319d565b600d546121cb600e54611f33600f54601054613b59565b6040518463ffffffff1660e01b815260040180848152602001838152602001828152602001935050505060206040518083038186803b158015611f8c57600080fd5b600080612219816128cd565b6000612223611e10565b90508015612241576119f881601181111561223a57fe5b60596135ca565b611a09846126ef565b600181565b600080600061225d816128cd565b6000612267611e10565b905080156122925761228581601181111561227e57fe5b60416135ca565b9350600092506122a39050565b61229d3333876140d1565b93509350505b6122ac81612996565b50915091565b600080600560009054906101000a90046001600160a01b03169050826001600160a01b0316627e3dd26040518163ffffffff1660e01b815260040160206040518083038186803b15801561230557600080fd5b505afa158015612319573d6000803e3d6000fd5b505050506040513d602081101561232f57600080fd5b5051612382576040805162461bcd60e51b815260206004820152601c60248201527f6d61726b6572206d6574686f642072657475726e65642066616c736500000000604482015290519081900360640190fd5b600580546001600160a01b0319166001600160a01b03858116918217909255604080519284168352602083019190915280517f7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d9281900390910190a16000611ca7565b4390565b6000806123f4612fce565b612404576121606001604d6135ca565b61240c6123e5565b600b541461242057612160600a604c6135ca565b600660009054906101000a90046001600160a01b03169050826001600160a01b0316632191f92a6040518163ffffffff1660e01b815260040160206040518083038186803b15801561247157600080fd5b505afa158015612485573d6000803e3d6000fd5b505050506040513d602081101561249b57600080fd5b50516124ee576040805162461bcd60e51b815260206004820152601c60248201527f6d61726b6572206d6574686f642072657475726e65642066616c736500000000604482015290519081900360640190fd5b600680546001600160a01b0319166001600160a01b03858116918217909255604080519284168352602083019190915280517fedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f9269281900390910190a16001600160a01b038116156126205760408051600481526024810182526020810180516001600160e01b0316636cc1140b60e11b178152915181516001600160a01b0385169382918083835b602083106125b55780518252601f199092019160209182019101612596565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612617576040519150601f19603f3d011682016040523d82523d6000602084013e61261c565b606091505b5050505b60408051600481526024810182526020810180516001600160e01b031663742a137b60e11b178152915181516001600160a01b0387169382918083835b6020831061267c5780518252601f19909201916020918201910161265d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146126de576040519150601f19603f3d011682016040523d82523d6000602084013e6126e3565b606091505b5060009150611ca79050565b60006126f9612fce565b612710576127096001605a6135ca565b9050611169565b6127186123e5565b600b541461272c57612709600a605b6135ca565b670de0b6b3a764000061274c61274484600854613b59565b600954613b59565b111561275e576127096002605c6135ca565b600a805490839055604080518281526020810185905281517faaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460929181900390910190a16000611ca7565b60006127b26123e5565b600b54146127c657612709600a60546135ca565b6000198214156127d65760085491505b60006127e0614421565b9050670de0b6b3a76400006128006127fa600a5486613b59565b83613b59565b111561281257612160600260556135ca565b826008541461287857612823612fce565b61283357612160600160536135ca565b6008805490849055604080518281526020810186905281517fcdd0b588250e1398549f79cfdb8217c186688822905d6715b0834ea1c865594a929181900390910190a1505b80600954146128c6576009805490829055604080518281526020810184905281517f92eef861b6533b7d3417f39c2ad7b460eed4e88a32fa3604f30e718b7602e7dc929181900390910190a1505b6000611ca7565b600154600160b01b900460ff16612918576040805162461bcd60e51b815260206004820152600a6024820152691c994b595b9d195c995960b21b604482015290519081900360640190fd5b8061298657600560009054906101000a90046001600160a01b03166001600160a01b031663c90c20b16040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561296d57600080fd5b505af1158015612981573d6000803e3d6000fd5b505050505b506001805460ff60b01b19169055565b6001805460ff60b01b1916600160b01b179055806129fe57600560009054906101000a90046001600160a01b03166001600160a01b031663632e51426040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611b6957600080fd5b50565b601154600090819080612a1c57505060075460009150612abd565b6000612a2661319d565b90506000612a3261661e565b6000612a5484600d54612a4f600e54611f33600f54601054613b59565b614470565b935090506000816003811115612a6657fe5b14612a7b57955060009450612abd9350505050565b612a8583866144bc565b925090506000816003811115612a9757fe5b14612aac57955060009450612abd9350505050565b5051600095509350612abd92505050565b9091565b600054604080516338e6a07360e11b81526001600160a01b039283166004820152918516602483015283151560448301525173a731585ab05fc9f83555cf9bff8f58ee94e18f85916371cd40e6916064808301926020929190829003018186803b158015612b2e57600080fd5b505afa158015612b42573d6000803e3d6000fd5b505050506040513d6020811015612b5857600080fd5b5051612b93576040805162461bcd60e51b8152602060048201526005602482015264085a5b5c1b60da1b604482015290519081900360640190fd5b8115612ba157612ba161456c565b600080546001600160a01b038581166001600160a01b031983161783556040516020602482018181528651604484015286519390941694612c8e94309488949193849360649093019290860191908190849084905b83811015612c0e578181015183820152602001612bf6565b50505050905090810190601f168015612c3b5780820380516001836020036101000a031916815260200191505b5060408051601f19818403018152918152602080830180516001600160e01b0316630adccee560e31b17905281518083019092526007825266216265636f6d6560c81b9082015290935091506147bc9050565b50600054604080516001600160a01b038085168252909216602083015280517fd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a9281900390910190a150505050565b600554604080516317b9b84b60e31b81523060048201526001600160a01b03868116602483015285811660448301526064820185905291516000938493169163bdcdc25891608480830192602092919082900301818787803b158015612d4257600080fd5b505af1158015612d56573d6000803e3d6000fd5b505050506040513d6020811015612d6c57600080fd5b505190508015612d8b57612d836003605d8361490b565b91505061187f565b836001600160a01b0316856001600160a01b03161415612db157612d836002605e6135ca565b60006001600160a01b038781169087161415612dd05750600019612df8565b506001600160a01b038086166000908152601360209081526040808320938a16835292905220545b600080600080612e088589614994565b90945092506000846003811115612e1b57fe5b14612e3957612e2c6009605e6135ca565b965050505050505061187f565b6001600160a01b038a16600090815260126020526040902054612e5c9089614994565b90945091506000846003811115612e6f57fe5b14612e8057612e2c6009605f6135ca565b6001600160a01b038916600090815260126020526040902054612ea390896149b7565b90945090506000846003811115612eb657fe5b14612ec757612e2c600960606135ca565b6001600160a01b03808b16600090815260126020526040808220859055918b168152208190556000198514612f1f576001600160a01b03808b166000908152601360209081526040808320938f168352929052208390555b886001600160a01b03168a6001600160a01b03166000805160206168d58339815191528a6040518082815260200191505060405180910390a35060009a9950505050505050505050565b6000806000612f77816128cd565b6000612f81611e10565b90508015612fac57612f9f816011811115612f9857fe5b60406135ca565b935060009250612fbd9050565b612fb73387876140d1565b93509350505b612fc681612996565b509250929050565b600554604080516303e1469160e61b815290516000926001600160a01b031691829163f851a44091600480820192602092909190829003018186803b15801561301657600080fd5b505afa15801561302a573d6000803e3d6000fd5b505050506040513d602081101561304057600080fd5b50516001600160a01b0316331480156130ba5750806001600160a01b0316630a755ec26040518163ffffffff1660e01b815260040160206040518083038186803b15801561308d57600080fd5b505afa1580156130a1573d6000803e3d6000fd5b505050506040513d60208110156130b757600080fd5b50515b8061150057503373a731585ab05fc9f83555cf9bff8f58ee94e18f851480156115005750806001600160a01b0316632f1069ba6040518163ffffffff1660e01b815260040160206040518083038186803b15801561311757600080fd5b505afa15801561312b573d6000803e3d6000fd5b505050506040513d602081101561314157600080fd5b505191505090565b600080600061315661661e565b61316086866149dd565b9092509050600082600381111561317357fe5b146131845750915060009050613196565b600061318f82614a45565b9350935050505b9250929050565b601754604080516305f5d64360e11b815230600482015290516000926001600160a01b03169183918391630bebac86916024808301926020929190829003018186803b1580156131ec57600080fd5b505afa158015613200573d6000803e3d6000fd5b505050506040513d602081101561321657600080fd5b50516040805163324abb3160e21b815290519192506b033b2e3c9fd0803ce8000000916132a0916001600160a01b0386169163c92aecc491600480820192602092909190829003018186803b15801561326e57600080fd5b505afa158015613282573d6000803e3d6000fd5b505050506040513d602081101561329857600080fd5b505183614a54565b816132a757fe5b049250505090565b600082905060008290506000826001600160a01b031663f4b9fa756040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156132f657600080fd5b505af115801561330a573d6000803e3d6000fd5b505050506040513d602081101561332057600080fd5b5051604080516336569e7760e01b815290519192506000916001600160a01b038616916336569e7791600480830192602092919082900301818787803b15801561336957600080fd5b505af115801561337d573d6000803e3d6000fd5b505050506040513d602081101561339357600080fd5b50516015549091506001600160a01b038381169116146133e45760405162461bcd60e51b81526004018080602001828103825260228152602001806168506022913960400191505060405180910390fd5b601680546001600160a01b038089166001600160a01b0319928316179283905560178054898316908416179055601880548583169316929092179091556040805163095ea7b360e01b815292821660048401526000196024840152519084169163095ea7b391604480830192600092919082900301818387803b15801561346a57600080fd5b505af115801561347e573d6000803e3d6000fd5b5050601754604080516328ec8bf160e21b81526001600160a01b0392831660048201529051918516935063a3b22fc4925060248082019260009290919082900301818387803b1580156134d057600080fd5b505af11580156134e4573d6000803e3d6000fd5b5050601654604080516328ec8bf160e21b81526001600160a01b0392831660048201529051918516935063a3b22fc4925060248082019260009290919082900301818387803b15801561353657600080fd5b505af115801561354a573d6000803e3d6000fd5b50505050826001600160a01b0316639f678cca6040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561358957600080fd5b505af115801561359d573d6000803e3d6000fd5b505050506040513d60208110156135b357600080fd5b506135c19050306000614aaf565b50505050505050565b60007f45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa08360118111156135f957fe5b83606381111561360557fe5b604080519283526020830191909152600082820152519081900360600190a1826011811115611ca757fe5b60008061363b612fce565b61364b576121606001603c6135ca565b6136536123e5565b600b541461366757612160600a603e6135ca565b8261367061319d565b101561368257612160600e603d6135ca565b600e54831115613698576121606002603f6135ca565b6136a4600e5484614dd4565b600e81905590506136b53384614e0e565b604080513381526020810185905280820183905290517f3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e9181900360600190a16000611ca7565b600080613708816128cd565b6000613712611e10565b90508015613730576119f881601181111561372957fe5b602a6135ca565b611a0933600086614f73565b6001600160a01b0381166000908152601460205260408120805482918291829182916137735750600094508493506137eb92505050565b6137838160000154600c54615443565b9094509250600084600381111561379657fe5b146137ab5750919350600092506137eb915050565b6137b9838260010154615482565b909450915060008460038111156137cc57fe5b146137e15750919350600092506137eb915050565b5060009450925050505b915091565b6000806137fb6123e5565b600b541461380f57612160600a60356135ca565b8261381861319d565b101561382a57612160600e60346135ca565b60105483111561384057612160600260366135ca565b61384c60105484614dd4565b601081905590506128c673a731585ab05fc9f83555cf9bff8f58ee94e18f8584614e0e565b600080600061387f816128cd565b6000613889611e10565b905080156138a7576122858160118111156138a057fe5b60206135ca565b61229d33866154ad565b6000806138bc6123e5565b905080600b5414156138d2576000915050611504565b60006138dc61319d565b90506000600660009054906101000a90046001600160a01b03166001600160a01b03166315f2405383600d5461391c600e54611f33600f54601054613b59565b6040518463ffffffff1660e01b815260040180848152602001838152602001828152602001935050505060206040518083038186803b15801561395e57600080fd5b505afa158015613972573d6000803e3d6000fd5b505050506040513d602081101561398857600080fd5b5051905065048c273950008111156139e7576040805162461bcd60e51b815260206004820152601c60248201527f626f72726f772072617465206973206162737572646c79206869676800000000604482015290519081900360640190fd5b6000806139f685600b54614994565b90925090506000826003811115613a0957fe5b14613a5b576040805162461bcd60e51b815260206004820152601f60248201527f636f756c64206e6f742063616c63756c61746520626c6f636b2064656c746100604482015290519081900360640190fd5b613a6785858584615829565b9550505050505090565b600080613a7c6123e5565b600b5414613a9057612160600a60396135ca565b82613a9961319d565b1015613aab57612160600e60386135ca565b600f54831115613ac1576121606002603a6135ca565b613acd600f5484614dd4565b905080600f819055506128c6600560009054906101000a90046001600160a01b03166001600160a01b031663f851a4406040518163ffffffff1660e01b815260040160206040518083038186803b158015613b2757600080fd5b505afa158015613b3b573d6000803e3d6000fd5b505050506040513d6020811015613b5157600080fd5b505184614e0e565b6000611ca78383604051806040016040528060118152602001706164646974696f6e206f766572666c6f7760781b815250615a41565b6005546040805163d02f735160e01b81523060048201526001600160a01b038781166024830152868116604483015285811660648301526084820185905291516000938493169163d02f73519160a480830192602092919082900301818787803b158015613bfc57600080fd5b505af1158015613c10573d6000803e3d6000fd5b505050506040513d6020811015613c2657600080fd5b505190508015613c3d57612d836003601d8361490b565b846001600160a01b0316846001600160a01b03161415613c6357612d836006601e6135ca565b613c6b616631565b6001600160a01b038516600090815260126020526040902054613c8e9085614994565b6020830181905282826003811115613ca257fe5b6003811115613cad57fe5b9052506000905081516003811115613cc157fe5b14613ceb57613ce26009601c83600001516003811115613cdd57fe5b61490b565b9250505061187f565b613d0a846040518060200160405280666379da05b60000815250615a96565b60808201819052613d1c908590614dd4565b6060820152613d29612a01565b60c0830181905282826003811115613d3d57fe5b6003811115613d4857fe5b9052506000905081516003811115613d5c57fe5b14613dae576040805162461bcd60e51b815260206004820152601860248201527f65786368616e67652072617465206d617468206572726f720000000000000000604482015290519081900360640190fd5b613dce60405180602001604052808360c001518152508260800151615abe565b60a08201819052600e54613de191613b59565b60e08201526011546080820151613df89190614dd4565b6101008201526001600160a01b0386166000908152601260205260409020546060820151613e2691906149b7565b6040830181905282826003811115613e3a57fe5b6003811115613e4557fe5b9052506000905081516003811115613e5957fe5b14613e7557613ce26009601b83600001516003811115613cdd57fe5b60e0810151600e556101008101516011556020808201516001600160a01b0380881660008181526012855260408082209490945583860151928b168082529084902092909255606085015183519081529251919390926000805160206168d5833981519152929081900390910190a36080810151604080519182525130916001600160a01b038816916000805160206168d58339815191529181900360200190a360a081015160e082015160408051308152602081019390935282810191909152517fa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc59181900360600190a16000979650505050505050565b600080613f7a816128cd565b6000613f84611e10565b90508015613fa2576119f8816011811115613f9b57fe5b600a6135ca565b611a093385615add565b600080613fb8816128cd565b6000613fc2611e10565b90508015613fd9576119f881601181111561372957fe5b611a0933856000614f73565b6000806000613ff3816128cd565b6000613ffd611e10565b905080156140285761401b81601181111561401457fe5b60116135ca565b9350600092506140bf9050565b846001600160a01b031663a6afed956040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561406357600080fd5b505af1158015614077573d6000803e3d6000fd5b505050506040513d602081101561408d57600080fd5b5051905080156140ad5761401b8160118111156140a657fe5b60126135ca565b6140b933888888615e23565b93509350505b6140c881612996565b50935093915050565b60055460408051631200453160e11b81523060048201526001600160a01b0386811660248301528581166044830152606482018590529151600093849384939116916324008a629160848082019260209290919082900301818787803b15801561413a57600080fd5b505af115801561414e573d6000803e3d6000fd5b505050506040513d602081101561416457600080fd5b5051905080156141885761417b600360438361490b565b9250600091506144199050565b6141906123e5565b600b54146141a45761417b600a60446135ca565b6141ac61667e565b6001600160a01b03861660009081526014602052604090206001015460608201526141d68661373c565b60808301819052602083018260038111156141ed57fe5b60038111156141f857fe5b905250600090508160200151600381111561420f57fe5b146142395761422b6009604283602001516003811115613cdd57fe5b935060009250614419915050565b600019851415614252576080810151604082015261425a565b604081018590525b614268878260400151614aaf565b60e08201819052608082015161427d91614994565b60a083018190526020830182600381111561429457fe5b600381111561429f57fe5b90525060009050816020015160038111156142b657fe5b146142f25760405162461bcd60e51b815260040180806020018281038252603a815260200180616872603a913960400191505060405180910390fd5b614302600d548260e00151614994565b60c083018190526020830182600381111561431957fe5b600381111561432457fe5b905250600090508160200151600381111561433b57fe5b146143775760405162461bcd60e51b81526004018080602001828103825260318152602001806168f56031913960400191505060405180910390fd5b60a080820180516001600160a01b03808a16600081815260146020908152604091829020948555600c5460019095019490945560c0870151600d81905560e088015195518251948f16855294840192909252828101949094526060820192909252608081019190915290517f1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1929181900390910190a160e00151600093509150505b935093915050565b600073a731585ab05fc9f83555cf9bff8f58ee94e18f856001600160a01b031663dd86fea16040518163ffffffff1660e01b815260040160206040518083038186803b158015611f8c57600080fd5b60008060008061448087876149b7565b9092509050600082600381111561449357fe5b146144a45750915060009050614419565b6144ae8186614994565b935093505050935093915050565b60006144c661661e565b6000806144db86670de0b6b3a7640000615443565b909250905060008260038111156144ee57fe5b1461450d57506040805160208101909152600081529092509050613196565b60008061451a8388615482565b9092509050600082600381111561452d57fe5b1461454f57506040805160208101909152600081529094509250613196915050565b604080516020810190915290815260009890975095505050505050565b60165460175460185460408051634fb3c66560e11b815290516001600160a01b039485169493841693909216918391639f678cca9160048083019260209291908290030181600087803b1580156145c257600080fd5b505af11580156145d6573d6000803e3d6000fd5b505050506040513d60208110156145ec57600080fd5b5050604080516305f5d64360e11b815230600482015290516000916001600160a01b03851691630bebac8691602480820192602092909190829003018186803b15801561463857600080fd5b505afa15801561464c573d6000803e3d6000fd5b505050506040513d602081101561466257600080fd5b505160408051637f8661a160e01b81526004810183905290519192506001600160a01b03851691637f8661a19160248082019260009290919082900301818387803b1580156146b057600080fd5b505af11580156146c4573d6000803e3d6000fd5b505060408051633612d9a360e11b81523060048201529051600093506001600160a01b0386169250636c25b34691602480820192602092909190829003018186803b15801561471257600080fd5b505afa158015614726573d6000803e3d6000fd5b505050506040513d602081101561473c57600080fd5b50516040805163ef693bed60e01b81523060048201526b033b2e3c9fd0803ce80000008304602482015290519192506001600160a01b0387169163ef693bed9160448082019260009290919082900301818387803b15801561479d57600080fd5b505af11580156147b1573d6000803e3d6000fd5b505050505050505050565b606060006060856001600160a01b0316856040518082805190602001908083835b602083106147fc5780518252601f1990920191602091820191016147dd565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461485e576040519150601f19603f3d011682016040523d82523d6000602084013e614863565b606091505b5091509150816149025780511561487d5780518082602001fd5b8360405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156148c75781810151838201526020016148af565b50505050905090810190601f1680156148f45780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b95945050505050565b60007f45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa084601181111561493a57fe5b84606381111561494657fe5b604080519283526020830191909152818101859052519081900360600190a1600384601181111561497357fe5b146149895783601181111561498457fe5b61187f565b506103e80192915050565b6000808383116149ab575060009050818303613196565b50600390506000613196565b6000808383018481106149cf57600092509050613196565b506002915060009050613196565b60006149e761661e565b6000806149f8866000015186615443565b90925090506000826003811115614a0b57fe5b14614a2a57506040805160208101909152600081529092509050613196565b60408051602081019091529081526000969095509350505050565b51670de0b6b3a7640000900490565b6000811580614a6f57505080820282828281614a6c57fe5b04145b611152576040805162461bcd60e51b815260206004820152600c60248201526b6d756c2d6f766572666c6f7760a01b604482015290519081900360640190fd5b601554604080516323b872dd60e01b81526001600160a01b038581166004830152306024830152604482018590529151600093929092169182916323b872dd91606480830192602092919082900301818887803b158015614b0f57600080fd5b505af1158015614b23573d6000803e3d6000fd5b505050506040513d6020811015614b3957600080fd5b5051614b765760405162461bcd60e51b81526004018080602001828103825260248152602001806169596024913960400191505060405180910390fd5b601654601554601754601854604080516370a0823160e01b8152306004820181905291516001600160a01b03968716969586169594851694909316928692633b4da69f92909187916370a08231916024808301926020929190829003018186803b158015614be357600080fd5b505afa158015614bf7573d6000803e3d6000fd5b505050506040513d6020811015614c0d57600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b039093166004840152602483019190915251604480830192600092919082900301818387803b158015614c5d57600080fd5b505af1158015614c71573d6000803e3d6000fd5b505060408051633612d9a360e11b81523060048201529051600093506001600160a01b0385169250636c25b34691602480820192602092909190829003018186803b158015614cbf57600080fd5b505afa158015614cd3573d6000803e3d6000fd5b505050506040513d6020811015614ce957600080fd5b50516040805163324abb3160e21b815290519192506000916001600160a01b0386169163c92aecc4916004808301926020929190829003018186803b158015614d3157600080fd5b505afa158015614d45573d6000803e3d6000fd5b505050506040513d6020811015614d5b57600080fd5b50518281614d6557fe5b049050836001600160a01b031663049878f3826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015614dae57600080fd5b505af1158015614dc2573d6000803e3d6000fd5b509a9c9b505050505050505050505050565b6000611ca78383604051806040016040528060158152602001747375627472616374696f6e20756e646572666c6f7760581b815250616315565b6016546017546040805163324abb3160e21b815290516001600160a01b039384169390921691600091614eb391849163c92aecc4916004808301926020929190829003018186803b158015614e6257600080fd5b505afa158015614e76573d6000803e3d6000fd5b505050506040513d6020811015614e8c57600080fd5b5051614ea4866b033b2e3c9fd0803ce8000000614a54565b81614eab57fe5b04600161636f565b9050816001600160a01b0316637f8661a1826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015614efb57600080fd5b505af1158015614f0f573d6000803e3d6000fd5b50505050826001600160a01b031663ef693bed86866040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561479d57600080fd5b6000821580614f80575081155b614fbb5760405162461bcd60e51b81526004018080602001828103825260348152602001806169b26034913960400191505060405180910390fd5b614fc36166c4565b614fcb612a01565b6040830181905260208301826003811115614fe257fe5b6003811115614fed57fe5b905250600090508160200151600381111561500457fe5b14615028576150206009602e83602001516003811115613cdd57fe5b915050611ca7565b83156150a957606081018490526040805160208101825290820151815261504f9085613149565b608083018190526020830182600381111561506657fe5b600381111561507157fe5b905250600090508160200151600381111561508857fe5b146150a4576150206009602c83602001516003811115613cdd57fe5b615122565b6150c583604051806020016040528084604001518152506163b6565b60608301819052602083018260038111156150dc57fe5b60038111156150e757fe5b90525060009050816020015160038111156150fe57fe5b1461511a576150206009602d83602001516003811115613cdd57fe5b608081018390525b60055460608201516040805163eabe7d9160e01b81523060048201526001600160a01b03898116602483015260448201939093529051600093929092169163eabe7d919160648082019260209290919082900301818787803b15801561518757600080fd5b505af115801561519b573d6000803e3d6000fd5b505050506040513d60208110156151b157600080fd5b5051905080156151d1576151c86003602b8361490b565b92505050611ca7565b6151d96123e5565b600b54146151ed576151c8600a602f6135ca565b6151fd6011548360600151614994565b60a084018190526020840182600381111561521457fe5b600381111561521f57fe5b905250600090508260200151600381111561523657fe5b14615252576151c86009603184602001516003811115613cdd57fe5b6001600160a01b038616600090815260126020526040902054606083015161527a9190614994565b60c084018190526020840182600381111561529157fe5b600381111561529c57fe5b90525060009050826020015160038111156152b357fe5b146152cf576151c86009603084602001516003811115613cdd57fe5b81608001516152dc61319d565b10156152ee576151c8600e60326135ca565b60a082015160115560c08201516001600160a01b0387166000908152601260205260409020556080820151615324908790614e0e565b6060820151604080519182525130916001600160a01b038916916000805160206168d58339815191529181900360200190a36080820151606080840151604080516001600160a01b038b168152602081019490945283810191909152517fe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a9299281900390910190a160055460808301516060840151604080516351dff98960e01b81523060048201526001600160a01b038b81166024830152604482019490945260648101929092525191909216916351dff98991608480830192600092919082900301818387803b15801561541857600080fd5b505af115801561542c573d6000803e3d6000fd5b5060009250615439915050565b9695505050505050565b6000808361545657506000905080613196565b8383028385828161546357fe5b041461547757506002915060009050613196565b600092509050613196565b600080826154965750600190506000613196565b60008385816154a157fe5b04915091509250929050565b60055460408051634ef4c3e160e01b81523060048201526001600160a01b03858116602483015260448201859052915160009384938493911691634ef4c3e19160648082019260209290919082900301818787803b15801561550e57600080fd5b505af1158015615522573d6000803e3d6000fd5b505050506040513d602081101561553857600080fd5b50519050801561555c5761554f600360218361490b565b9250600091506131969050565b6155646123e5565b600b54146155785761554f600a60246135ca565b6155806166c4565b615588612a01565b604083018190526020830182600381111561559f57fe5b60038111156155aa57fe5b90525060009050816020015160038111156155c157fe5b146155eb576155dd6009602383602001516003811115613cdd57fe5b935060009250613196915050565b6155f58686614aaf565b60c082018190526040805160208101825290830151815261561691906163b6565b606083018190526020830182600381111561562d57fe5b600381111561563857fe5b905250600090508160200151600381111561564f57fe5b146156a1576040805162461bcd60e51b815260206004820181905260248201527f4d494e545f45584348414e47455f43414c43554c4154494f4e5f4641494c4544604482015290519081900360640190fd5b6156b16011548260600151613b59565b60808201526001600160a01b03861660009081526012602052604090205460608201516156de9190613b59565b60a0820181905260808201516011556001600160a01b0387166000818152601260209081526040918290209390935560c084015160608086015183519485529484019190915282820193909352517f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f929181900390910190a1606081015160408051918252516001600160a01b0388169130916000805160206168d58339815191529181900360200190a360055460c08201516060830151604080516341c728b960e01b81523060048201526001600160a01b038b81166024830152604482019490945260648101929092525191909216916341c728b991608480830192600092919082900301818387803b1580156157f657600080fd5b505af115801561580a573d6000803e3d6000fd5b5060009250615817915050565b8160c001519350935050509250929050565b600061583361661e565b61584b604051806020016040528086815250846163cd565b9050600061585b82600d54615abe565b9050600061586b82600d54613b59565b9050600061588c6040518060200160405280600a5481525084600e546163f7565b905060006158ad6040518060200160405280600954815250856010546163f7565b905060006158ce604051806020016040528060085481525086600f546163f7565b905060006158e187600c54600c546163f7565b600b8d9055600c819055600d869055600e8590556010849055600f839055604080518d8152602081018990528082018390526060810188905290519192507f4dec04e750ca11537cabcd8a9eab06494de08da3735bc8871cd41250e190bc04919081900360800190a16006546040805160248082018e905282518083039091018152604490910182526020810180516001600160e01b0316635efd023360e11b178152915181516001600160a01b0390941693919290918291908083835b602083106159be5780518252601f19909201916020918201910161599f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114615a20576040519150601f19603f3d011682016040523d82523d6000602084013e615a25565b606091505b5060009150615a319050565b9c9b505050505050505050505050565b600083830182858210156117535760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156148c75781810151838201526020016148af565b6000670de0b6b3a7640000615aaf84846000015161641f565b81615ab657fe5b049392505050565b6000615ac861661e565b615ad284846163cd565b905061187f81614a45565b6005546040805163368f515360e21b81523060048201526001600160a01b0385811660248301526044820185905291516000938493169163da3d454c91606480830192602092919082900301818787803b158015615b3a57600080fd5b505af1158015615b4e573d6000803e3d6000fd5b505050506040513d6020811015615b6457600080fd5b505190508015615b8357615b7b600360108361490b565b915050611152565b615b8b6123e5565b600b5414615b9f57615b7b600a600c6135ca565b6000615ba961319d565b905083811015615bc857615bbf600e600b6135ca565b92505050611152565b615bd0616702565b615bd98661373c565b6020830181905282826003811115615bed57fe5b6003811115615bf857fe5b9052506000905081516003811115615c0c57fe5b14615c3157615c2760098083600001516003811115613cdd57fe5b9350505050611152565b615c3f8160200151866149b7565b6040830181905282826003811115615c5357fe5b6003811115615c5e57fe5b9052506000905081516003811115615c7257fe5b14615c8e57615c276009600e83600001516003811115613cdd57fe5b6005546040808301518151631de6c8a560e21b8152306004820152602481019190915290516001600160a01b039092169163779b2294916044808201926020929091908290030181600087803b158015615ce757600080fd5b505af1158015615cfb573d6000803e3d6000fd5b505050506040513d6020811015615d1157600080fd5b505192508215615d2857615c27600360108561490b565b615d34600d54866149b7565b6060830181905282826003811115615d4857fe5b6003811115615d5357fe5b9052506000905081516003811115615d6757fe5b14615d8357615c276009600d83600001516003811115613cdd57fe5b6040808201516001600160a01b0388166000908152601460205291909120908155600c546001909101556060810151600d55615dbf8686614e0e565b60408082015160608084015183516001600160a01b038b168152602081018a9052808501939093529082015290517f13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab809181900360800190a160009695505050505050565b60055460408051632fe3f38f60e11b81523060048201526001600160a01b0384811660248301528781166044830152868116606483015260848201869052915160009384938493911691635fc7e71e9160a48082019260209290919082900301818787803b158015615e9457600080fd5b505af1158015615ea8573d6000803e3d6000fd5b505050506040513d6020811015615ebe57600080fd5b505190508015615ee257615ed5600360148361490b565b92506000915061630c9050565b615eea6123e5565b600b5414615efe57615ed5600a60186135ca565b615f066123e5565b846001600160a01b0316636c540baf6040518163ffffffff1660e01b815260040160206040518083038186803b158015615f3f57600080fd5b505afa158015615f53573d6000803e3d6000fd5b505050506040513d6020811015615f6957600080fd5b505114615f7c57615ed5600a60136135ca565b866001600160a01b0316866001600160a01b03161415615fa257615ed5600660196135ca565b84615fb357615ed5600760176135ca565b600019851415615fc957615ed5600760166135ca565b600080615fd78989896140d1565b9092509050811561600757615ff8826011811115615ff157fe5b601a6135ca565b94506000935061630c92505050565b6005546040805163c488847b60e01b81523060048201526001600160a01b038981166024830152604482018590528251600094859492169263c488847b926064808301939192829003018186803b15801561606157600080fd5b505afa158015616075573d6000803e3d6000fd5b505050506040513d604081101561608b57600080fd5b508051602090910151909250905081156160d65760405162461bcd60e51b81526004018080602001828103825260338152602001806169266033913960400191505060405180910390fd5b80886001600160a01b03166370a082318c6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561612d57600080fd5b505afa158015616141573d6000803e3d6000fd5b505050506040513d602081101561615757600080fd5b505110156161ac576040805162461bcd60e51b815260206004820152601860248201527f4c49515549444154455f5345495a455f544f4f5f4d5543480000000000000000604482015290519081900360640190fd5b60006001600160a01b0389163014156161d2576161cb308d8d85613b8f565b905061625c565b6040805163b2a02ff160e01b81526001600160a01b038e811660048301528d81166024830152604482018590529151918b169163b2a02ff1916064808201926020929091908290030181600087803b15801561622d57600080fd5b505af1158015616241573d6000803e3d6000fd5b505050506040513d602081101561625757600080fd5b505190505b80156162a6576040805162461bcd60e51b81526020600482015260146024820152731d1bdad95b881cd95a5e9d5c994819985a5b195960621b604482015290519081900360640190fd5b604080516001600160a01b03808f168252808e1660208301528183018790528b1660608201526080810184905290517f298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb529181900360a00190a16000975092955050505050505b94509492505050565b600081848411156163675760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156148c75781810151838201526020016148af565b505050900390565b80820182811015611152576040805162461bcd60e51b815260206004820152600c60248201526b6164642d6f766572666c6f7760a01b604482015290519081900360640190fd5b60008060006163c361661e565b6131608686616461565b6163d561661e565b60405180602001604052806163ee85600001518561641f565b90529392505050565b600061640161661e565b61640b85856163cd565b905061490261641982614a45565b84613b59565b6000611ca783836040518060400160405280601781526020017f6d756c7469706c69636174696f6e206f766572666c6f770000000000000000008152506164c0565b600061646b61661e565b600080616480670de0b6b3a764000087615443565b9092509050600082600381111561649357fe5b146164b257506040805160208101909152600081529092509050613196565b61318f8186600001516144bc565b60008315806164cd575082155b156164da57506000611ca7565b838302838582816164e757fe5b041483906117535760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156148c75781810151838201526020016148af565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061657757805160ff19168380011785556165a4565b828001600101855582156165a4579182015b828111156165a4578251825591602001919060010190616589565b50611ad492915061672b565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106165f15782800160ff198235161785556165a4565b828001600101855582156165a4579182015b828111156165a4578235825591602001919060010190616603565b6040518060200160405280600081525090565b604080516101208101909152806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040805161010081019091528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040805160e0810190915280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b604080516080810190915280600081526020016000815260200160008152602001600081525090565b61150491905b80821115611ad4576000815560010161673156fe6d61726b6574206d6179206f6e6c7920626520696e697469616c697a6564206f6e63656f6e6c792073656c66206f722061646d696e206d61792063616c6c205f6265636f6d65496d706c656d656e746174696f6e696e697469616c2065786368616e67652072617465206d7573742062652067726561746572207468616e207a65726f2e6f6e6c79207468652061646d696e206d6179207365742074686520636f6d702d6c696b652064656c656761746573657474696e6720696e7465726573742072617465206d6f64656c206661696c6564626f72726f7742616c616e636553746f7265643a20626f72726f7742616c616e636553746f726564496e7465726e616c206661696c6564444149206d757374206265207468652073616d6520617320756e6465726c79696e6752455041595f424f52524f575f4e45575f4143434f554e545f424f52524f575f42414c414e43455f43414c43554c4154494f4e5f4641494c45446f6e6c7920467573652061646d696e206d617920696e697469616c697a6520746865206d61726b6574ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef52455041595f424f52524f575f4e45575f544f54414c5f42414c414e43455f43414c43554c4154494f4e5f4641494c45444c49515549444154455f434f4d5054524f4c4c45525f43414c43554c4154455f414d4f554e545f5345495a455f4641494c4544756e6578706563746564204549502d3230207472616e7366657220696e2072657475726e65786368616e67655261746553746f7265643a2065786368616e67655261746553746f726564496e7465726e616c206661696c65646f6e65206f662072656465656d546f6b656e73496e206f722072656465656d416d6f756e74496e206d757374206265207a65726fa265627a7a72315820410b4f3e79d8133f174ebaa76074a0ac03c860eb7ecad951abd968e12fbd775e64736f6c63430005110032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH2 0x6A1A DUP1 PUSH2 0x13 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x397 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8A8DF2E6 GT PUSH2 0x1DC JUMPI DUP1 PUSH4 0xAE9D70B0 GT PUSH2 0x102 JUMPI DUP1 PUSH4 0xDC028AB1 GT PUSH2 0xA0 JUMPI DUP1 PUSH4 0xF5E3C462 GT PUSH2 0x6F JUMPI DUP1 PUSH4 0xF5E3C462 EQ PUSH2 0xFC9 JUMPI DUP1 PUSH4 0xF8F9DA28 EQ PUSH2 0x100C JUMPI DUP1 PUSH4 0xFCA7820B EQ PUSH2 0x1021 JUMPI DUP1 PUSH4 0xFE9C44AE EQ PUSH2 0x104B JUMPI PUSH2 0x397 JUMP JUMPDEST DUP1 PUSH4 0xDC028AB1 EQ PUSH2 0xF31 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0xF46 JUMPI DUP1 PUSH4 0xF2B3ABBD EQ PUSH2 0xF81 JUMPI DUP1 PUSH4 0xF3FDB15A EQ PUSH2 0xFB4 JUMPI PUSH2 0x397 JUMP JUMPDEST DUP1 PUSH4 0xC37F68E2 GT PUSH2 0xDC JUMPI DUP1 PUSH4 0xC37F68E2 EQ PUSH2 0xE6F JUMPI DUP1 PUSH4 0xC5EBEAEC EQ PUSH2 0xEC8 JUMPI DUP1 PUSH4 0xDB006A75 EQ PUSH2 0xEF2 JUMPI DUP1 PUSH4 0xDBFE7C19 EQ PUSH2 0xF1C JUMPI PUSH2 0x397 JUMP JUMPDEST DUP1 PUSH4 0xAE9D70B0 EQ PUSH2 0xE02 JUMPI DUP1 PUSH4 0xB2A02FF1 EQ PUSH2 0xE17 JUMPI DUP1 PUSH4 0xBD6D894D EQ PUSH2 0xE5A JUMPI PUSH2 0x397 JUMP JUMPDEST DUP1 PUSH4 0xA03DCE8D GT PUSH2 0x17A JUMPI DUP1 PUSH4 0xA7B820DF GT PUSH2 0x149 JUMPI DUP1 PUSH4 0xA7B820DF EQ PUSH2 0xD75 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0xD9F JUMPI DUP1 PUSH4 0xAA5AF0FD EQ PUSH2 0xDD8 JUMPI DUP1 PUSH4 0xAC784DDC EQ PUSH2 0xDED JUMPI PUSH2 0x397 JUMP JUMPDEST DUP1 PUSH4 0xA03DCE8D EQ PUSH2 0xBB0 JUMPI DUP1 PUSH4 0xA0712D68 EQ PUSH2 0xBDA JUMPI DUP1 PUSH4 0xA0B0D289 EQ PUSH2 0xC04 JUMPI DUP1 PUSH4 0xA6AFED95 EQ PUSH2 0xD60 JUMPI PUSH2 0x397 JUMP JUMPDEST DUP1 PUSH4 0x8F840DDD GT PUSH2 0x1B6 JUMPI DUP1 PUSH4 0x8F840DDD EQ PUSH2 0xB29 JUMPI DUP1 PUSH4 0x91DD36C6 EQ PUSH2 0xB3E JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0xB68 JUMPI DUP1 PUSH4 0x95DD9193 EQ PUSH2 0xB7D JUMPI PUSH2 0x397 JUMP JUMPDEST DUP1 PUSH4 0x8A8DF2E6 EQ PUSH2 0xAEA JUMPI DUP1 PUSH4 0x8D02D9A1 EQ PUSH2 0xAFF JUMPI DUP1 PUSH4 0x8D925CCD EQ PUSH2 0xB14 JUMPI PUSH2 0x397 JUMP JUMPDEST DUP1 PUSH4 0x47BD3718 GT PUSH2 0x2C1 JUMPI DUP1 PUSH4 0x66CED602 GT PUSH2 0x25F JUMPI DUP1 PUSH4 0x70A08231 GT PUSH2 0x22E JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0xA45 JUMPI DUP1 PUSH4 0x73ACEE98 EQ PUSH2 0xA78 JUMPI DUP1 PUSH4 0x7F1E06BE EQ PUSH2 0xA8D JUMPI DUP1 PUSH4 0x852A12E3 EQ PUSH2 0xAC0 JUMPI PUSH2 0x397 JUMP JUMPDEST DUP1 PUSH4 0x66CED602 EQ PUSH2 0x9F1 JUMPI DUP1 PUSH4 0x6752E702 EQ PUSH2 0xA06 JUMPI DUP1 PUSH4 0x6C540BAF EQ PUSH2 0xA1B JUMPI DUP1 PUSH4 0x6F307DC3 EQ PUSH2 0xA30 JUMPI PUSH2 0x397 JUMP JUMPDEST DUP1 PUSH4 0x5C60DA1B GT PUSH2 0x29B JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x96C JUMPI DUP1 PUSH4 0x5FE3B567 EQ PUSH2 0x99D JUMPI DUP1 PUSH4 0x601A0BF1 EQ PUSH2 0x9B2 JUMPI DUP1 PUSH4 0x61FEACFF EQ PUSH2 0x9DC JUMPI PUSH2 0x397 JUMP JUMPDEST DUP1 PUSH4 0x47BD3718 EQ PUSH2 0x84A JUMPI DUP1 PUSH4 0x50D85B73 EQ PUSH2 0x85F JUMPI DUP1 PUSH4 0x56E67728 EQ PUSH2 0x8F1 JUMPI PUSH2 0x397 JUMP JUMPDEST DUP1 PUSH4 0x182DF0F5 GT PUSH2 0x339 JUMPI DUP1 PUSH4 0x313CE567 GT PUSH2 0x308 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x70C JUMPI DUP1 PUSH4 0x34154D4C EQ PUSH2 0x737 JUMPI DUP1 PUSH4 0x3AF9E669 EQ PUSH2 0x802 JUMPI DUP1 PUSH4 0x3B1D21A2 EQ PUSH2 0x835 JUMPI PUSH2 0x397 JUMP JUMPDEST DUP1 PUSH4 0x182DF0F5 EQ PUSH2 0x673 JUMPI DUP1 PUSH4 0x1DB78944 EQ PUSH2 0x688 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x690 JUMPI DUP1 PUSH4 0x2608F818 EQ PUSH2 0x6D3 JUMPI PUSH2 0x397 JUMP JUMPDEST DUP1 PUSH4 0xF8855E8 GT PUSH2 0x375 JUMPI DUP1 PUSH4 0xF8855E8 EQ PUSH2 0x4AF JUMPI DUP1 PUSH4 0x173B9904 EQ PUSH2 0x616 JUMPI DUP1 PUSH4 0x17BFDFBC EQ PUSH2 0x62B JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x65E JUMPI PUSH2 0x397 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x39C JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x426 JUMPI DUP1 PUSH4 0xE752702 EQ PUSH2 0x473 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3B1 PUSH2 0x1060 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3EB JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3D3 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x418 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x432 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x45F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x449 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x10EB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x47F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x49D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x496 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1158 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x614 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x4D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x50D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x51F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x540 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x592 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x5A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x5C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP POP PUSH1 0xFF DUP4 CALLDATALOAD AND SWAP4 POP POP POP PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x116E JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x622 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x49D PUSH2 0x141C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x637 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x49D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x64E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1422 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x66A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x49D PUSH2 0x149E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x67F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x49D PUSH2 0x14A4 JUMP JUMPDEST PUSH2 0x614 PUSH2 0x1507 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x69C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x45F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x6B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x1718 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x49D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x6F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1746 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x718 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x721 PUSH2 0x175C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x743 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x614 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x75A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x774 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x786 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x7A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x7C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x7D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x7F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1765 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x80E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x49D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x825 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x17D1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x841 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x49D PUSH2 0x1887 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x856 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x49D PUSH2 0x1896 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x86B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x614 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x882 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x8B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x8C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x8E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x189C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x614 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x914 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x92E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x940 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x961 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1925 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x978 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x981 PUSH2 0x19A6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x981 PUSH2 0x19B5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x49D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x19C4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x49D PUSH2 0x1A15 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x981 PUSH2 0x1A1B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x49D PUSH2 0x1A2A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x49D PUSH2 0x1A35 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x981 PUSH2 0x1A3B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x49D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA68 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1A4A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA84 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x49D PUSH2 0x1A65 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA99 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x614 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAB0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1AD8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xACC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x49D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAE3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1B7D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAF6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x981 PUSH2 0x1B88 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB0B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x49D PUSH2 0x1B97 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB20 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x981 PUSH2 0x1B9D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB35 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x49D PUSH2 0x1BAC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB4A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x49D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB61 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1BB2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB74 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3B1 PUSH2 0x1BEF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x49D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xBA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1C4A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBBC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x49D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xBD3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1CAE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBE6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x49D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xBFD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1CEB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x614 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0xC27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP3 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP1 SWAP3 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xC62 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xC74 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0xC95 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xCE7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xCF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0xD1A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP POP DUP3 CALLDATALOAD SWAP4 POP POP POP PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1CF7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD6C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x49D PUSH2 0x1E10 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x49D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD98 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1E8B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xDAB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x45F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xDC2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1EC8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xDE4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x49D PUSH2 0x1EF5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xDF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x45F PUSH2 0x1EFB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE0E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x49D PUSH2 0x1F00 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE23 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x49D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xE3A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x1FBD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x49D PUSH2 0x1FE1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE7B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xEA2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE92 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2055 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP5 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP4 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xED4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x49D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xEEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x20EA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEFE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x49D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x20F5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF28 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x49D PUSH2 0x2100 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF3D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x49D PUSH2 0x2106 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF52 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x49D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xF69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x210C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x49D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xFA4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2137 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xFC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x981 PUSH2 0x2171 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xFD5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x49D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xFEC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 SWAP1 SWAP2 ADD CALLDATALOAD AND PUSH2 0x2180 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1018 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x49D PUSH2 0x2198 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x102D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x49D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1044 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x220D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1057 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x45F PUSH2 0x224A JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP4 AND DUP5 SWAP1 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x10E3 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x10B8 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x10E3 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x10C6 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP7 SWAP1 SSTORE DUP2 MLOAD DUP7 DUP2 MSTORE SWAP2 MLOAD SWAP4 SWAP5 SWAP4 SWAP1 SWAP3 DUP5 SWAP3 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1164 DUP4 PUSH2 0x224F JUMP JUMPDEST POP SWAP2 POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST CALLER PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 EQ PUSH2 0x11C0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x68AC PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xB SLOAD ISZERO DUP1 ISZERO PUSH2 0x11D0 JUMPI POP PUSH1 0xC SLOAD ISZERO JUMPDEST PUSH2 0x120B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x6746 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x7 DUP7 SWAP1 SSTORE DUP6 PUSH2 0x124C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x30 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x679A PUSH1 0x30 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1257 DUP10 PUSH2 0x22B2 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x12AC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x73657474696E6720636F6D7074726F6C6C6572206661696C6564000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x12B4 PUSH2 0x23E5 JUMP JUMPDEST PUSH1 0xB SSTORE PUSH8 0xDE0B6B3A7640000 PUSH1 0xC SSTORE PUSH2 0x12CC DUP9 PUSH2 0x23E9 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x130B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x67F7 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP6 MLOAD PUSH2 0x131E SWAP1 PUSH1 0x2 SWAP1 PUSH1 0x20 DUP10 ADD SWAP1 PUSH2 0x6536 JUMP JUMPDEST POP DUP5 MLOAD PUSH2 0x1332 SWAP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP9 ADD SWAP1 PUSH2 0x6536 JUMP JUMPDEST POP PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF DUP7 AND OR SWAP1 SSTORE PUSH2 0x134B DUP4 PUSH2 0x26EF JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x13A0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x73657474696E67207265736572766520666163746F72206661696C6564000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x13A9 DUP3 PUSH2 0x27A8 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x13FE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x73657474696E672061646D696E20666565206661696C65640000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF PUSH1 0xB0 SHL NOT AND PUSH1 0x1 PUSH1 0xB0 SHL OR SWAP1 SSTORE POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0xA SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x142E DUP2 PUSH2 0x28CD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1438 PUSH2 0x1E10 JUMP JUMPDEST EQ PUSH2 0x1483 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x1858D8DC9D59481A5B9D195C995CDD0819985A5B1959 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x148C DUP4 PUSH2 0x1C4A JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH2 0x1498 DUP2 PUSH2 0x2996 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x11 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x14B1 PUSH2 0x2A01 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x14C4 JUMPI INVALID JUMPDEST EQ PUSH2 0x1500 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x35 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x697D PUSH1 0x35 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP2 POP POP JUMPDEST SWAP1 JUMP JUMPDEST CALLER ADDRESS EQ DUP1 ISZERO SWAP1 PUSH2 0x158D JUMPI POP PUSH1 0x5 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 PUSH4 0xDD5CD22C 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 0x1560 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1574 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x158A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST ISZERO PUSH2 0x1716 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x45CC9705 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE MLOAD DUP3 SWAP2 PUSH1 0x60 SWAP2 PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 SWAP2 PUSH4 0x45CC9705 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 DUP8 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x15F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1608 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1631 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP1 DUP6 ADD DUP1 MLOAD SWAP2 MLOAD SWAP4 SWAP6 SWAP3 SWAP5 DUP4 ADD SWAP3 SWAP2 DUP5 PUSH1 0x1 PUSH1 0x20 SHL DUP3 GT ISZERO PUSH2 0x165B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x1670 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH2 0x1689 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x16B6 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x169E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x16E3 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE POP POP PUSH1 0x0 SLOAD SWAP4 SWAP7 POP SWAP2 SWAP5 POP SWAP3 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP2 AND EQ PUSH2 0x1712 JUMPI PUSH2 0x1712 DUP4 DUP4 DUP4 PUSH2 0x2AC1 JUMP JUMPDEST POP POP POP JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1724 DUP2 PUSH2 0x28CD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1732 CALLER DUP8 DUP8 DUP8 PUSH2 0x2CDD JUMP JUMPDEST EQ SWAP2 POP PUSH2 0x173E DUP2 PUSH2 0x2996 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1753 DUP5 DUP5 PUSH2 0x2F69 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x176D PUSH2 0x2FCE JUMP JUMPDEST PUSH2 0x17B1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x31B0B63632B9103737BA1030B236B4B7 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x17BD PUSH1 0x2 DUP6 DUP6 PUSH2 0x65B0 JUMP JUMPDEST POP PUSH2 0x17CA PUSH1 0x3 DUP4 DUP4 PUSH2 0x65B0 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x17DB PUSH2 0x661E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x17EE PUSH2 0x1FE1 JUMP JUMPDEST SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP SWAP1 DUP2 SWAP1 PUSH2 0x181A SWAP1 DUP5 SWAP1 PUSH2 0x3149 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x182D JUMPI INVALID JUMPDEST EQ PUSH2 0x187F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x62616C616E636520636F756C64206E6F742062652063616C63756C6174656400 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1891 PUSH2 0x319D JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0xD SLOAD DUP2 JUMP JUMPDEST PUSH2 0x18A4 PUSH2 0x2FCE JUMP JUMPDEST PUSH2 0x18DE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x10B0B236B4B7 PUSH1 0xD1 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x191F DUP5 DUP5 DUP5 DUP5 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x2AC1 SWAP3 POP POP POP JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST CALLER ADDRESS EQ DUP1 PUSH2 0x1936 JUMPI POP PUSH2 0x1936 PUSH2 0x2FCE JUMP JUMPDEST PUSH2 0x1971 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x6769 PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 DUP4 PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1984 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP4 POP PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD AND SWAP1 POP PUSH2 0x191F DUP3 DUP3 PUSH2 0x32AF JUMP JUMPDEST PUSH1 0x0 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 0x0 DUP1 PUSH2 0x19D0 DUP2 PUSH2 0x28CD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x19DA PUSH2 0x1E10 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1A00 JUMPI PUSH2 0x19F8 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x19F1 JUMPI INVALID JUMPDEST PUSH1 0x3B PUSH2 0x35CA JUMP JUMPDEST SWAP3 POP POP PUSH2 0x148F JUMP JUMPDEST PUSH2 0x1A09 DUP5 PUSH2 0x3630 JUMP JUMPDEST SWAP3 POP POP PUSH2 0x1498 DUP2 PUSH2 0x2996 JUMP JUMPDEST PUSH1 0xF SLOAD DUP2 JUMP JUMPDEST PUSH1 0x17 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH7 0x6379DA05B60000 DUP2 JUMP JUMPDEST PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH1 0x15 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1A71 DUP2 PUSH2 0x28CD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1A7B PUSH2 0x1E10 JUMP JUMPDEST EQ PUSH2 0x1AC6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x1858D8DC9D59481A5B9D195C995CDD0819985A5B1959 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0xD SLOAD SWAP2 POP PUSH2 0x1AD4 DUP2 PUSH2 0x2996 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0x1AE0 PUSH2 0x2FCE JUMP JUMPDEST PUSH2 0x1B1B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x67CA PUSH1 0x2D SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x15 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x17066A57 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x5C19A95C SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1B69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x17CA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1152 DUP3 PUSH2 0x36FC JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x18 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0xE SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1BBE DUP2 PUSH2 0x28CD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1BC8 PUSH2 0x1E10 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1BE6 JUMPI PUSH2 0x19F8 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x1BDF JUMPI INVALID JUMPDEST PUSH1 0x52 PUSH2 0x35CA JUMP JUMPDEST PUSH2 0x1A09 DUP5 PUSH2 0x27A8 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x10E3 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x10B8 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x10E3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1C58 DUP5 PUSH2 0x373C JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1C6B JUMPI INVALID JUMPDEST EQ PUSH2 0x1CA7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x37 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x6819 PUSH1 0x37 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1CBA DUP2 PUSH2 0x28CD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1CC4 PUSH2 0x1E10 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1CE2 JUMPI PUSH2 0x19F8 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x1CDB JUMPI INVALID JUMPDEST PUSH1 0x33 PUSH2 0x35CA JUMP JUMPDEST PUSH2 0x1A09 DUP5 PUSH2 0x37F0 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1164 DUP4 PUSH2 0x3871 JUMP JUMPDEST PUSH1 0x0 PUSH8 0x2C68AF0BB140000 SWAP1 POP PUSH1 0x0 DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x313CE567 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 0x1D3F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1D53 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1D69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH2 0x1D7D DUP9 DUP9 DUP5 DUP10 DUP10 DUP7 DUP11 DUP11 PUSH2 0x116E JUMP JUMPDEST PUSH1 0x15 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP2 DUP3 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x18160DDD PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP1 SWAP2 AND SWAP2 PUSH4 0x18160DDD SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1DD9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1DED JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1E03 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x17 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x4FB3C665 PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x9F678CCA 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 0x1E56 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1E6A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1E80 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1891 SWAP1 POP PUSH2 0x38B1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1E97 DUP2 PUSH2 0x28CD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1EA1 PUSH2 0x1E10 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1EBF JUMPI PUSH2 0x19F8 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x1EB8 JUMPI INVALID JUMPDEST PUSH1 0x37 PUSH2 0x35CA JUMP JUMPDEST PUSH2 0x1A09 DUP5 PUSH2 0x3A71 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1ED4 DUP2 PUSH2 0x28CD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1EE2 CALLER CALLER DUP8 DUP8 PUSH2 0x2CDD JUMP JUMPDEST EQ SWAP2 POP PUSH2 0x1EEE DUP2 PUSH2 0x2996 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xC SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xB8168816 PUSH2 0x1F1C PUSH2 0x319D JUMP JUMPDEST PUSH1 0xD SLOAD PUSH2 0x1F38 PUSH1 0xE SLOAD PUSH2 0x1F33 PUSH1 0xF SLOAD PUSH1 0x10 SLOAD PUSH2 0x3B59 JUMP JUMPDEST PUSH2 0x3B59 JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x9 SLOAD PUSH1 0xA SLOAD ADD ADD PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1FA0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1FB6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH2 0x1FCA DUP2 PUSH2 0x28CD JUMP JUMPDEST PUSH2 0x1FD6 CALLER DUP7 DUP7 DUP7 PUSH2 0x3B8F JUMP JUMPDEST SWAP2 POP PUSH2 0x173E DUP2 PUSH2 0x2996 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1FED DUP2 PUSH2 0x28CD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1FF7 PUSH2 0x1E10 JUMP JUMPDEST EQ PUSH2 0x2042 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x1858D8DC9D59481A5B9D195C995CDD0819985A5B1959 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x204A PUSH2 0x14A4 JUMP JUMPDEST SWAP2 POP PUSH2 0x1AD4 DUP2 PUSH2 0x2996 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP2 SWAP1 DUP2 SWAP1 DUP2 SWAP1 DUP2 DUP1 DUP1 PUSH2 0x2080 DUP10 PUSH2 0x373C JUMP JUMPDEST SWAP4 POP SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2092 JUMPI INVALID JUMPDEST EQ PUSH2 0x20B0 JUMPI PUSH1 0x9 JUMPDEST SWAP8 POP PUSH1 0x0 SWAP7 POP DUP7 SWAP6 POP DUP6 SWAP5 POP PUSH2 0x20E3 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x20B8 PUSH2 0x2A01 JUMP JUMPDEST SWAP3 POP SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x20CA JUMPI INVALID JUMPDEST EQ PUSH2 0x20D6 JUMPI PUSH1 0x9 PUSH2 0x209A JUMP JUMPDEST POP PUSH1 0x0 SWAP7 POP SWAP2 SWAP5 POP SWAP3 POP SWAP1 POP JUMPDEST SWAP2 SWAP4 POP SWAP2 SWAP4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1152 DUP3 PUSH2 0x3F6E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1152 DUP3 PUSH2 0x3FAC JUMP JUMPDEST PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x10 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2142 PUSH2 0x1E10 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x2168 JUMPI PUSH2 0x2160 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x2159 JUMPI INVALID JUMPDEST PUSH1 0x4B PUSH2 0x35CA JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1169 JUMP JUMPDEST PUSH2 0x1CA7 DUP4 PUSH2 0x23E9 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x218E DUP6 DUP6 DUP6 PUSH2 0x3FE5 JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x15F24053 PUSH2 0x21B4 PUSH2 0x319D JUMP JUMPDEST PUSH1 0xD SLOAD PUSH2 0x21CB PUSH1 0xE SLOAD PUSH2 0x1F33 PUSH1 0xF SLOAD PUSH1 0x10 SLOAD PUSH2 0x3B59 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2219 DUP2 PUSH2 0x28CD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2223 PUSH2 0x1E10 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x2241 JUMPI PUSH2 0x19F8 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x223A JUMPI INVALID JUMPDEST PUSH1 0x59 PUSH2 0x35CA JUMP JUMPDEST PUSH2 0x1A09 DUP5 PUSH2 0x26EF JUMP JUMPDEST PUSH1 0x1 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x225D DUP2 PUSH2 0x28CD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2267 PUSH2 0x1E10 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x2292 JUMPI PUSH2 0x2285 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x227E JUMPI INVALID JUMPDEST PUSH1 0x41 PUSH2 0x35CA JUMP JUMPDEST SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x22A3 SWAP1 POP JUMP JUMPDEST PUSH2 0x229D CALLER CALLER DUP8 PUSH2 0x40D1 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP JUMPDEST PUSH2 0x22AC DUP2 PUSH2 0x2996 JUMP JUMPDEST POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH3 0x7E3DD2 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 0x2305 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2319 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x232F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x2382 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6D61726B6572206D6574686F642072657475726E65642066616C736500000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP3 DUP5 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD PUSH32 0x7AC369DBD14FA5EA3F473ED67CC9D598964A77501540BA6751EB0B3DECF5870D SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x0 PUSH2 0x1CA7 JUMP JUMPDEST NUMBER SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x23F4 PUSH2 0x2FCE JUMP JUMPDEST PUSH2 0x2404 JUMPI PUSH2 0x2160 PUSH1 0x1 PUSH1 0x4D PUSH2 0x35CA JUMP JUMPDEST PUSH2 0x240C PUSH2 0x23E5 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x2420 JUMPI PUSH2 0x2160 PUSH1 0xA PUSH1 0x4C PUSH2 0x35CA JUMP JUMPDEST PUSH1 0x6 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x2191F92A 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 0x2471 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2485 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x249B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x24EE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6D61726B6572206D6574686F642072657475726E65642066616C736500000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP3 DUP5 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD PUSH32 0xEDFFC32E068C7C95DFD4BDFD5C4D939A084D6B11C4199EAC8436ED234D72F926 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0x2620 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x6CC1140B PUSH1 0xE1 SHL OR DUP2 MSTORE SWAP2 MLOAD DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP4 DUP3 SWAP2 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x25B5 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x2596 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2617 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 0x261C JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP POP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x742A137B PUSH1 0xE1 SHL OR DUP2 MSTORE SWAP2 MLOAD DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP4 DUP3 SWAP2 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x267C JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x265D JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x26DE 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 0x26E3 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP PUSH1 0x0 SWAP2 POP PUSH2 0x1CA7 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x26F9 PUSH2 0x2FCE JUMP JUMPDEST PUSH2 0x2710 JUMPI PUSH2 0x2709 PUSH1 0x1 PUSH1 0x5A PUSH2 0x35CA JUMP JUMPDEST SWAP1 POP PUSH2 0x1169 JUMP JUMPDEST PUSH2 0x2718 PUSH2 0x23E5 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x272C JUMPI PUSH2 0x2709 PUSH1 0xA PUSH1 0x5B PUSH2 0x35CA JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH2 0x274C PUSH2 0x2744 DUP5 PUSH1 0x8 SLOAD PUSH2 0x3B59 JUMP JUMPDEST PUSH1 0x9 SLOAD PUSH2 0x3B59 JUMP JUMPDEST GT ISZERO PUSH2 0x275E JUMPI PUSH2 0x2709 PUSH1 0x2 PUSH1 0x5C PUSH2 0x35CA JUMP JUMPDEST PUSH1 0xA DUP1 SLOAD SWAP1 DUP4 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP6 SWAP1 MSTORE DUP2 MLOAD PUSH32 0xAAA68312E2EA9D50E16AF5068410AB56E1A1FD06037B1A35664812C30F821460 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x0 PUSH2 0x1CA7 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27B2 PUSH2 0x23E5 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x27C6 JUMPI PUSH2 0x2709 PUSH1 0xA PUSH1 0x54 PUSH2 0x35CA JUMP JUMPDEST PUSH1 0x0 NOT DUP3 EQ ISZERO PUSH2 0x27D6 JUMPI PUSH1 0x8 SLOAD SWAP2 POP JUMPDEST PUSH1 0x0 PUSH2 0x27E0 PUSH2 0x4421 JUMP JUMPDEST SWAP1 POP PUSH8 0xDE0B6B3A7640000 PUSH2 0x2800 PUSH2 0x27FA PUSH1 0xA SLOAD DUP7 PUSH2 0x3B59 JUMP JUMPDEST DUP4 PUSH2 0x3B59 JUMP JUMPDEST GT ISZERO PUSH2 0x2812 JUMPI PUSH2 0x2160 PUSH1 0x2 PUSH1 0x55 PUSH2 0x35CA JUMP JUMPDEST DUP3 PUSH1 0x8 SLOAD EQ PUSH2 0x2878 JUMPI PUSH2 0x2823 PUSH2 0x2FCE JUMP JUMPDEST PUSH2 0x2833 JUMPI PUSH2 0x2160 PUSH1 0x1 PUSH1 0x53 PUSH2 0x35CA JUMP JUMPDEST PUSH1 0x8 DUP1 SLOAD SWAP1 DUP5 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP7 SWAP1 MSTORE DUP2 MLOAD PUSH32 0xCDD0B588250E1398549F79CFDB8217C186688822905D6715B0834EA1C865594A SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMPDEST DUP1 PUSH1 0x9 SLOAD EQ PUSH2 0x28C6 JUMPI PUSH1 0x9 DUP1 SLOAD SWAP1 DUP3 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP2 MLOAD PUSH32 0x92EEF861B6533B7D3417F39C2AD7B460EED4E88A32FA3604F30E718B7602E7DC SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMPDEST PUSH1 0x0 PUSH2 0x1CA7 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0xB0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2918 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xA PUSH1 0x24 DUP3 ADD MSTORE PUSH10 0x1C994B595B9D195C9959 PUSH1 0xB2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x2986 JUMPI PUSH1 0x5 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 PUSH4 0xC90C20B1 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x296D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2981 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF PUSH1 0xB0 SHL NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF PUSH1 0xB0 SHL NOT AND PUSH1 0x1 PUSH1 0xB0 SHL OR SWAP1 SSTORE DUP1 PUSH2 0x29FE JUMPI PUSH1 0x5 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 PUSH4 0x632E5142 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1B69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x11 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP1 PUSH2 0x2A1C JUMPI POP POP PUSH1 0x7 SLOAD PUSH1 0x0 SWAP2 POP PUSH2 0x2ABD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2A26 PUSH2 0x319D JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2A32 PUSH2 0x661E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2A54 DUP5 PUSH1 0xD SLOAD PUSH2 0x2A4F PUSH1 0xE SLOAD PUSH2 0x1F33 PUSH1 0xF SLOAD PUSH1 0x10 SLOAD PUSH2 0x3B59 JUMP JUMPDEST PUSH2 0x4470 JUMP JUMPDEST SWAP4 POP SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2A66 JUMPI INVALID JUMPDEST EQ PUSH2 0x2A7B JUMPI SWAP6 POP PUSH1 0x0 SWAP5 POP PUSH2 0x2ABD SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x2A85 DUP4 DUP7 PUSH2 0x44BC JUMP JUMPDEST SWAP3 POP SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2A97 JUMPI INVALID JUMPDEST EQ PUSH2 0x2AAC JUMPI SWAP6 POP PUSH1 0x0 SWAP5 POP PUSH2 0x2ABD SWAP4 POP POP POP POP JUMP JUMPDEST POP MLOAD PUSH1 0x0 SWAP6 POP SWAP4 POP PUSH2 0x2ABD SWAP3 POP POP POP JUMP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x38E6A073 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP2 DUP6 AND PUSH1 0x24 DUP4 ADD MSTORE DUP4 ISZERO ISZERO PUSH1 0x44 DUP4 ADD MSTORE MLOAD PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 SWAP2 PUSH4 0x71CD40E6 SWAP2 PUSH1 0x64 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2B2E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2B42 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2B58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x2B93 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x5 PUSH1 0x24 DUP3 ADD MSTORE PUSH5 0x85A5B5C1B PUSH1 0xDA SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 ISZERO PUSH2 0x2BA1 JUMPI PUSH2 0x2BA1 PUSH2 0x456C JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND OR DUP4 SSTORE PUSH1 0x40 MLOAD PUSH1 0x20 PUSH1 0x24 DUP3 ADD DUP2 DUP2 MSTORE DUP7 MLOAD PUSH1 0x44 DUP5 ADD MSTORE DUP7 MLOAD SWAP4 SWAP1 SWAP5 AND SWAP5 PUSH2 0x2C8E SWAP5 ADDRESS SWAP5 DUP9 SWAP5 SWAP2 SWAP4 DUP5 SWAP4 PUSH1 0x64 SWAP1 SWAP4 ADD SWAP3 SWAP1 DUP7 ADD SWAP2 SWAP1 DUP2 SWAP1 DUP5 SWAP1 DUP5 SWAP1 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2C0E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2BF6 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x2C3B JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xADCCEE5 PUSH1 0xE3 SHL OR SWAP1 MSTORE DUP2 MLOAD DUP1 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x7 DUP3 MSTORE PUSH7 0x216265636F6D65 PUSH1 0xC8 SHL SWAP1 DUP3 ADD MSTORE SWAP1 SWAP4 POP SWAP2 POP PUSH2 0x47BC SWAP1 POP JUMP JUMPDEST POP PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND DUP3 MSTORE SWAP1 SWAP3 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD PUSH32 0xD604DE94D45953F9138079EC1B82D533CB2160C906D1076D1F7ED54BEFBCA97A SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x17B9B84B PUSH1 0xE3 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP6 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 AND SWAP2 PUSH4 0xBDCDC258 SWAP2 PUSH1 0x84 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2D42 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2D56 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2D6C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x2D8B JUMPI PUSH2 0x2D83 PUSH1 0x3 PUSH1 0x5D DUP4 PUSH2 0x490B JUMP JUMPDEST SWAP2 POP POP PUSH2 0x187F JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x2DB1 JUMPI PUSH2 0x2D83 PUSH1 0x2 PUSH1 0x5E PUSH2 0x35CA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND SWAP1 DUP8 AND EQ ISZERO PUSH2 0x2DD0 JUMPI POP PUSH1 0x0 NOT PUSH2 0x2DF8 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP11 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x2E08 DUP6 DUP10 PUSH2 0x4994 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP PUSH1 0x0 DUP5 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2E1B JUMPI INVALID JUMPDEST EQ PUSH2 0x2E39 JUMPI PUSH2 0x2E2C PUSH1 0x9 PUSH1 0x5E PUSH2 0x35CA JUMP JUMPDEST SWAP7 POP POP POP POP POP POP POP PUSH2 0x187F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2E5C SWAP1 DUP10 PUSH2 0x4994 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP2 POP PUSH1 0x0 DUP5 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2E6F JUMPI INVALID JUMPDEST EQ PUSH2 0x2E80 JUMPI PUSH2 0x2E2C PUSH1 0x9 PUSH1 0x5F PUSH2 0x35CA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2EA3 SWAP1 DUP10 PUSH2 0x49B7 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP1 POP PUSH1 0x0 DUP5 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2EB6 JUMPI INVALID JUMPDEST EQ PUSH2 0x2EC7 JUMPI PUSH2 0x2E2C PUSH1 0x9 PUSH1 0x60 PUSH2 0x35CA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP6 SWAP1 SSTORE SWAP2 DUP12 AND DUP2 MSTORE KECCAK256 DUP2 SWAP1 SSTORE PUSH1 0x0 NOT DUP6 EQ PUSH2 0x2F1F JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP16 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP4 SWAP1 SSTORE JUMPDEST DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x68D5 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP11 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x0 SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x2F77 DUP2 PUSH2 0x28CD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2F81 PUSH2 0x1E10 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x2FAC JUMPI PUSH2 0x2F9F DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x2F98 JUMPI INVALID JUMPDEST PUSH1 0x40 PUSH2 0x35CA JUMP JUMPDEST SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x2FBD SWAP1 POP JUMP JUMPDEST PUSH2 0x2FB7 CALLER DUP8 DUP8 PUSH2 0x40D1 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP JUMPDEST PUSH2 0x2FC6 DUP2 PUSH2 0x2996 JUMP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x3E14691 PUSH1 0xE6 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 DUP3 SWAP2 PUSH4 0xF851A440 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3016 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x302A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3040 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ DUP1 ISZERO PUSH2 0x30BA JUMPI POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA755EC2 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 0x308D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x30A1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x30B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST DUP1 PUSH2 0x1500 JUMPI POP CALLER PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 EQ DUP1 ISZERO PUSH2 0x1500 JUMPI POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x2F1069BA 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 0x3117 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x312B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3141 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x3156 PUSH2 0x661E JUMP JUMPDEST PUSH2 0x3160 DUP7 DUP7 PUSH2 0x49DD JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3173 JUMPI INVALID JUMPDEST EQ PUSH2 0x3184 JUMPI POP SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH2 0x3196 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x318F DUP3 PUSH2 0x4A45 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x17 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x5F5D643 PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 DUP4 SWAP2 DUP4 SWAP2 PUSH4 0xBEBAC86 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x31EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3200 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3216 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x324ABB31 PUSH1 0xE2 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH12 0x33B2E3C9FD0803CE8000000 SWAP2 PUSH2 0x32A0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP2 PUSH4 0xC92AECC4 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x326E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3282 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3298 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP4 PUSH2 0x4A54 JUMP JUMPDEST DUP2 PUSH2 0x32A7 JUMPI INVALID JUMPDEST DIV SWAP3 POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 SWAP1 POP PUSH1 0x0 DUP3 SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xF4B9FA75 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x32F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x330A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3320 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x36569E77 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP2 PUSH4 0x36569E77 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 0x3369 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x337D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3393 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x15 SLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP2 AND EQ PUSH2 0x33E4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x6850 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x16 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP10 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND OR SWAP3 DUP4 SWAP1 SSTORE PUSH1 0x17 DUP1 SLOAD DUP10 DUP4 AND SWAP1 DUP5 AND OR SWAP1 SSTORE PUSH1 0x18 DUP1 SLOAD DUP6 DUP4 AND SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE SWAP3 DUP3 AND PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x0 NOT PUSH1 0x24 DUP5 ADD MSTORE MLOAD SWAP1 DUP5 AND SWAP2 PUSH4 0x95EA7B3 SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x346A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x347E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x17 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x28EC8BF1 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 DUP6 AND SWAP4 POP PUSH4 0xA3B22FC4 SWAP3 POP PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x34D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x34E4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x16 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x28EC8BF1 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 DUP6 AND SWAP4 POP PUSH4 0xA3B22FC4 SWAP3 POP PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3536 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x354A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x9F678CCA PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3589 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x359D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x35B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x35C1 SWAP1 POP ADDRESS PUSH1 0x0 PUSH2 0x4AAF JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x45B96FE442630264581B197E84BBADA861235052C5A1AADFFF9EA4E40A969AA0 DUP4 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x35F9 JUMPI INVALID JUMPDEST DUP4 PUSH1 0x63 DUP2 GT ISZERO PUSH2 0x3605 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 DUP3 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x1CA7 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x363B PUSH2 0x2FCE JUMP JUMPDEST PUSH2 0x364B JUMPI PUSH2 0x2160 PUSH1 0x1 PUSH1 0x3C PUSH2 0x35CA JUMP JUMPDEST PUSH2 0x3653 PUSH2 0x23E5 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x3667 JUMPI PUSH2 0x2160 PUSH1 0xA PUSH1 0x3E PUSH2 0x35CA JUMP JUMPDEST DUP3 PUSH2 0x3670 PUSH2 0x319D JUMP JUMPDEST LT ISZERO PUSH2 0x3682 JUMPI PUSH2 0x2160 PUSH1 0xE PUSH1 0x3D PUSH2 0x35CA JUMP JUMPDEST PUSH1 0xE SLOAD DUP4 GT ISZERO PUSH2 0x3698 JUMPI PUSH2 0x2160 PUSH1 0x2 PUSH1 0x3F PUSH2 0x35CA JUMP JUMPDEST PUSH2 0x36A4 PUSH1 0xE SLOAD DUP5 PUSH2 0x4DD4 JUMP JUMPDEST PUSH1 0xE DUP2 SWAP1 SSTORE SWAP1 POP PUSH2 0x36B5 CALLER DUP5 PUSH2 0x4E0E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP6 SWAP1 MSTORE DUP1 DUP3 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD PUSH32 0x3BAD0C59CF2F06E7314077049F48A93578CD16F5EF92329F1DAB1420A99C177E SWAP2 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 PUSH1 0x0 PUSH2 0x1CA7 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3708 DUP2 PUSH2 0x28CD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3712 PUSH2 0x1E10 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x3730 JUMPI PUSH2 0x19F8 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x3729 JUMPI INVALID JUMPDEST PUSH1 0x2A PUSH2 0x35CA JUMP JUMPDEST PUSH2 0x1A09 CALLER PUSH1 0x0 DUP7 PUSH2 0x4F73 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 PUSH2 0x3773 JUMPI POP PUSH1 0x0 SWAP5 POP DUP5 SWAP4 POP PUSH2 0x37EB SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x3783 DUP2 PUSH1 0x0 ADD SLOAD PUSH1 0xC SLOAD PUSH2 0x5443 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP PUSH1 0x0 DUP5 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3796 JUMPI INVALID JUMPDEST EQ PUSH2 0x37AB JUMPI POP SWAP2 SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x37EB SWAP2 POP POP JUMP JUMPDEST PUSH2 0x37B9 DUP4 DUP3 PUSH1 0x1 ADD SLOAD PUSH2 0x5482 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP2 POP PUSH1 0x0 DUP5 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x37CC JUMPI INVALID JUMPDEST EQ PUSH2 0x37E1 JUMPI POP SWAP2 SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x37EB SWAP2 POP POP JUMP JUMPDEST POP PUSH1 0x0 SWAP5 POP SWAP3 POP POP POP JUMPDEST SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x37FB PUSH2 0x23E5 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x380F JUMPI PUSH2 0x2160 PUSH1 0xA PUSH1 0x35 PUSH2 0x35CA JUMP JUMPDEST DUP3 PUSH2 0x3818 PUSH2 0x319D JUMP JUMPDEST LT ISZERO PUSH2 0x382A JUMPI PUSH2 0x2160 PUSH1 0xE PUSH1 0x34 PUSH2 0x35CA JUMP JUMPDEST PUSH1 0x10 SLOAD DUP4 GT ISZERO PUSH2 0x3840 JUMPI PUSH2 0x2160 PUSH1 0x2 PUSH1 0x36 PUSH2 0x35CA JUMP JUMPDEST PUSH2 0x384C PUSH1 0x10 SLOAD DUP5 PUSH2 0x4DD4 JUMP JUMPDEST PUSH1 0x10 DUP2 SWAP1 SSTORE SWAP1 POP PUSH2 0x28C6 PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 DUP5 PUSH2 0x4E0E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x387F DUP2 PUSH2 0x28CD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3889 PUSH2 0x1E10 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x38A7 JUMPI PUSH2 0x2285 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x38A0 JUMPI INVALID JUMPDEST PUSH1 0x20 PUSH2 0x35CA JUMP JUMPDEST PUSH2 0x229D CALLER DUP7 PUSH2 0x54AD JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x38BC PUSH2 0x23E5 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0xB SLOAD EQ ISZERO PUSH2 0x38D2 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x1504 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x38DC PUSH2 0x319D JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x6 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 PUSH4 0x15F24053 DUP4 PUSH1 0xD SLOAD PUSH2 0x391C PUSH1 0xE SLOAD PUSH2 0x1F33 PUSH1 0xF SLOAD PUSH1 0x10 SLOAD PUSH2 0x3B59 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x395E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3972 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3988 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH6 0x48C27395000 DUP2 GT ISZERO PUSH2 0x39E7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x626F72726F772072617465206973206162737572646C79206869676800000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x39F6 DUP6 PUSH1 0xB SLOAD PUSH2 0x4994 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3A09 JUMPI INVALID JUMPDEST EQ PUSH2 0x3A5B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x636F756C64206E6F742063616C63756C61746520626C6F636B2064656C746100 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x3A67 DUP6 DUP6 DUP6 DUP5 PUSH2 0x5829 JUMP JUMPDEST SWAP6 POP POP POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3A7C PUSH2 0x23E5 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x3A90 JUMPI PUSH2 0x2160 PUSH1 0xA PUSH1 0x39 PUSH2 0x35CA JUMP JUMPDEST DUP3 PUSH2 0x3A99 PUSH2 0x319D JUMP JUMPDEST LT ISZERO PUSH2 0x3AAB JUMPI PUSH2 0x2160 PUSH1 0xE PUSH1 0x38 PUSH2 0x35CA JUMP JUMPDEST PUSH1 0xF SLOAD DUP4 GT ISZERO PUSH2 0x3AC1 JUMPI PUSH2 0x2160 PUSH1 0x2 PUSH1 0x3A PUSH2 0x35CA JUMP JUMPDEST PUSH2 0x3ACD PUSH1 0xF SLOAD DUP5 PUSH2 0x4DD4 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0xF DUP2 SWAP1 SSTORE POP PUSH2 0x28C6 PUSH1 0x5 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 PUSH4 0xF851A440 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 0x3B27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3B3B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3B51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP5 PUSH2 0x4E0E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1CA7 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x11 DUP2 MSTORE PUSH1 0x20 ADD PUSH17 0x6164646974696F6E206F766572666C6F77 PUSH1 0x78 SHL DUP2 MSTORE POP PUSH2 0x5A41 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xD02F7351 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP7 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE DUP6 DUP2 AND PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x84 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 AND SWAP2 PUSH4 0xD02F7351 SWAP2 PUSH1 0xA4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3BFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3C10 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3C26 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x3C3D JUMPI PUSH2 0x2D83 PUSH1 0x3 PUSH1 0x1D DUP4 PUSH2 0x490B JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x3C63 JUMPI PUSH2 0x2D83 PUSH1 0x6 PUSH1 0x1E PUSH2 0x35CA JUMP JUMPDEST PUSH2 0x3C6B PUSH2 0x6631 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x3C8E SWAP1 DUP6 PUSH2 0x4994 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3CA2 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3CAD JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3CC1 JUMPI INVALID JUMPDEST EQ PUSH2 0x3CEB JUMPI PUSH2 0x3CE2 PUSH1 0x9 PUSH1 0x1C DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3CDD JUMPI INVALID JUMPDEST PUSH2 0x490B JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x187F JUMP JUMPDEST PUSH2 0x3D0A DUP5 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH7 0x6379DA05B60000 DUP2 MSTORE POP PUSH2 0x5A96 JUMP JUMPDEST PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x3D1C SWAP1 DUP6 SWAP1 PUSH2 0x4DD4 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x3D29 PUSH2 0x2A01 JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3D3D JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3D48 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3D5C JUMPI INVALID JUMPDEST EQ PUSH2 0x3DAE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x65786368616E67652072617465206D617468206572726F720000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x3DCE PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP4 PUSH1 0xC0 ADD MLOAD DUP2 MSTORE POP DUP3 PUSH1 0x80 ADD MLOAD PUSH2 0x5ABE JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xE SLOAD PUSH2 0x3DE1 SWAP2 PUSH2 0x3B59 JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD MSTORE PUSH1 0x11 SLOAD PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x3DF8 SWAP2 SWAP1 PUSH2 0x4DD4 JUMP JUMPDEST PUSH2 0x100 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x3E26 SWAP2 SWAP1 PUSH2 0x49B7 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3E3A JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3E45 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3E59 JUMPI INVALID JUMPDEST EQ PUSH2 0x3E75 JUMPI PUSH2 0x3CE2 PUSH1 0x9 PUSH1 0x1B DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3CDD JUMPI INVALID JUMPDEST PUSH1 0xE0 DUP2 ADD MLOAD PUSH1 0xE SSTORE PUSH2 0x100 DUP2 ADD MLOAD PUSH1 0x11 SSTORE PUSH1 0x20 DUP1 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x12 DUP6 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 DUP7 ADD MLOAD SWAP3 DUP12 AND DUP1 DUP3 MSTORE SWAP1 DUP5 SWAP1 KECCAK256 SWAP3 SWAP1 SWAP3 SSTORE PUSH1 0x60 DUP6 ADD MLOAD DUP4 MLOAD SWAP1 DUP2 MSTORE SWAP3 MLOAD SWAP2 SWAP4 SWAP1 SWAP3 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x68D5 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD ADDRESS SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x68D5 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0xE0 DUP3 ADD MLOAD PUSH1 0x40 DUP1 MLOAD ADDRESS DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP3 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE MLOAD PUSH32 0xA91E67C5EA634CD43A12C5A482724B03DE01E85CA68702A53D0C2F45CB7C1DC5 SWAP2 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 PUSH1 0x0 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3F7A DUP2 PUSH2 0x28CD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F84 PUSH2 0x1E10 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x3FA2 JUMPI PUSH2 0x19F8 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x3F9B JUMPI INVALID JUMPDEST PUSH1 0xA PUSH2 0x35CA JUMP JUMPDEST PUSH2 0x1A09 CALLER DUP6 PUSH2 0x5ADD JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3FB8 DUP2 PUSH2 0x28CD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3FC2 PUSH2 0x1E10 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x3FD9 JUMPI PUSH2 0x19F8 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x3729 JUMPI INVALID JUMPDEST PUSH2 0x1A09 CALLER DUP6 PUSH1 0x0 PUSH2 0x4F73 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x3FF3 DUP2 PUSH2 0x28CD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3FFD PUSH2 0x1E10 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x4028 JUMPI PUSH2 0x401B DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x4014 JUMPI INVALID JUMPDEST PUSH1 0x11 PUSH2 0x35CA JUMP JUMPDEST SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x40BF SWAP1 POP JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA6AFED95 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4063 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4077 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x408D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x40AD JUMPI PUSH2 0x401B DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x40A6 JUMPI INVALID JUMPDEST PUSH1 0x12 PUSH2 0x35CA JUMP JUMPDEST PUSH2 0x40B9 CALLER DUP9 DUP9 DUP9 PUSH2 0x5E23 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP JUMPDEST PUSH2 0x40C8 DUP2 PUSH2 0x2996 JUMP JUMPDEST POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x12004531 PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP6 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 DUP5 SWAP4 SWAP2 AND SWAP2 PUSH4 0x24008A62 SWAP2 PUSH1 0x84 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x413A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x414E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4164 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x4188 JUMPI PUSH2 0x417B PUSH1 0x3 PUSH1 0x43 DUP4 PUSH2 0x490B JUMP JUMPDEST SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH2 0x4419 SWAP1 POP JUMP JUMPDEST PUSH2 0x4190 PUSH2 0x23E5 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x41A4 JUMPI PUSH2 0x417B PUSH1 0xA PUSH1 0x44 PUSH2 0x35CA JUMP JUMPDEST PUSH2 0x41AC PUSH2 0x667E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x41D6 DUP7 PUSH2 0x373C JUMP JUMPDEST PUSH1 0x80 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x41ED JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x41F8 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x420F JUMPI INVALID JUMPDEST EQ PUSH2 0x4239 JUMPI PUSH2 0x422B PUSH1 0x9 PUSH1 0x42 DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3CDD JUMPI INVALID JUMPDEST SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x4419 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 NOT DUP6 EQ ISZERO PUSH2 0x4252 JUMPI PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x425A JUMP JUMPDEST PUSH1 0x40 DUP2 ADD DUP6 SWAP1 MSTORE JUMPDEST PUSH2 0x4268 DUP8 DUP3 PUSH1 0x40 ADD MLOAD PUSH2 0x4AAF JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x427D SWAP2 PUSH2 0x4994 JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4294 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x429F JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x42B6 JUMPI INVALID JUMPDEST EQ PUSH2 0x42F2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x6872 PUSH1 0x3A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x4302 PUSH1 0xD SLOAD DUP3 PUSH1 0xE0 ADD MLOAD PUSH2 0x4994 JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4319 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4324 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x433B JUMPI INVALID JUMPDEST EQ PUSH2 0x4377 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x68F5 PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xA0 DUP1 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP11 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 DUP6 SSTORE PUSH1 0xC SLOAD PUSH1 0x1 SWAP1 SWAP6 ADD SWAP5 SWAP1 SWAP5 SSTORE PUSH1 0xC0 DUP8 ADD MLOAD PUSH1 0xD DUP2 SWAP1 SSTORE PUSH1 0xE0 DUP9 ADD MLOAD SWAP6 MLOAD DUP3 MLOAD SWAP5 DUP16 AND DUP6 MSTORE SWAP5 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP2 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x60 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x80 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 MLOAD PUSH32 0x1A2A22CB034D26D1854BDC6666A5B91FE25EFBBB5DCAD3B0355478D6F5C362A1 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0xE0 ADD MLOAD PUSH1 0x0 SWAP4 POP SWAP2 POP POP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xDD86FEA1 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 0x1F8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x4480 DUP8 DUP8 PUSH2 0x49B7 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4493 JUMPI INVALID JUMPDEST EQ PUSH2 0x44A4 JUMPI POP SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH2 0x4419 JUMP JUMPDEST PUSH2 0x44AE DUP2 DUP7 PUSH2 0x4994 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x44C6 PUSH2 0x661E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x44DB DUP7 PUSH8 0xDE0B6B3A7640000 PUSH2 0x5443 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x44EE JUMPI INVALID JUMPDEST EQ PUSH2 0x450D JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x3196 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x451A DUP4 DUP9 PUSH2 0x5482 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x452D JUMPI INVALID JUMPDEST EQ PUSH2 0x454F JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 SWAP5 POP SWAP3 POP PUSH2 0x3196 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP9 SWAP1 SWAP8 POP SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x17 SLOAD PUSH1 0x18 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x4FB3C665 PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND SWAP5 SWAP4 DUP5 AND SWAP4 SWAP1 SWAP3 AND SWAP2 DUP4 SWAP2 PUSH4 0x9F678CCA 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 0x45C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x45D6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x45EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH4 0x5F5D643 PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0xBEBAC86 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4638 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x464C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4662 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x7F8661A1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0x7F8661A1 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x46B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x46C4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH4 0x3612D9A3 PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP3 POP PUSH4 0x6C25B346 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4712 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4726 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x473C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xEF693BED PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH12 0x33B2E3C9FD0803CE8000000 DUP4 DIV PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP2 PUSH4 0xEF693BED SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x479D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x47B1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x60 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x47FC JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x47DD JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x485E 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 0x4863 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x4902 JUMPI DUP1 MLOAD ISZERO PUSH2 0x487D JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST DUP4 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x48C7 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x48AF JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x48F4 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x45B96FE442630264581B197E84BBADA861235052C5A1AADFFF9EA4E40A969AA0 DUP5 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x493A JUMPI INVALID JUMPDEST DUP5 PUSH1 0x63 DUP2 GT ISZERO PUSH2 0x4946 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 DUP2 ADD DUP6 SWAP1 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 PUSH1 0x3 DUP5 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x4973 JUMPI INVALID JUMPDEST EQ PUSH2 0x4989 JUMPI DUP4 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x4984 JUMPI INVALID JUMPDEST PUSH2 0x187F JUMP JUMPDEST POP PUSH2 0x3E8 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 DUP4 GT PUSH2 0x49AB JUMPI POP PUSH1 0x0 SWAP1 POP DUP2 DUP4 SUB PUSH2 0x3196 JUMP JUMPDEST POP PUSH1 0x3 SWAP1 POP PUSH1 0x0 PUSH2 0x3196 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 DUP4 ADD DUP5 DUP2 LT PUSH2 0x49CF JUMPI PUSH1 0x0 SWAP3 POP SWAP1 POP PUSH2 0x3196 JUMP JUMPDEST POP PUSH1 0x2 SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH2 0x3196 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x49E7 PUSH2 0x661E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x49F8 DUP7 PUSH1 0x0 ADD MLOAD DUP7 PUSH2 0x5443 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4A0B JUMPI INVALID JUMPDEST EQ PUSH2 0x4A2A JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x3196 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST MLOAD PUSH8 0xDE0B6B3A7640000 SWAP1 DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO DUP1 PUSH2 0x4A6F JUMPI POP POP DUP1 DUP3 MUL DUP3 DUP3 DUP3 DUP2 PUSH2 0x4A6C JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0x1152 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x6D756C2D6F766572666C6F77 PUSH1 0xA0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x15 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 SWAP3 SWAP1 SWAP3 AND SWAP2 DUP3 SWAP2 PUSH4 0x23B872DD SWAP2 PUSH1 0x64 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP9 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4B0F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4B23 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4B39 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x4B76 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x6959 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x15 SLOAD PUSH1 0x17 SLOAD PUSH1 0x18 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP7 DUP8 AND SWAP7 SWAP6 DUP7 AND SWAP6 SWAP5 DUP6 AND SWAP5 SWAP1 SWAP4 AND SWAP3 DUP7 SWAP3 PUSH4 0x3B4DA69F SWAP3 SWAP1 SWAP2 DUP8 SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4BE3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4BF7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4C0D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT PUSH1 0xE0 DUP7 SWAP1 SHL AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE MLOAD PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4C5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4C71 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH4 0x3612D9A3 PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP3 POP PUSH4 0x6C25B346 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4CBF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4CD3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4CE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x324ABB31 PUSH1 0xE2 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP2 PUSH4 0xC92AECC4 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4D31 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4D45 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4D5B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP3 DUP2 PUSH2 0x4D65 JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x49878F3 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4DAE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4DC2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP11 SWAP13 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1CA7 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x15 DUP2 MSTORE PUSH1 0x20 ADD PUSH21 0x7375627472616374696F6E20756E646572666C6F77 PUSH1 0x58 SHL DUP2 MSTORE POP PUSH2 0x6315 JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x17 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x324ABB31 PUSH1 0xE2 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND SWAP4 SWAP1 SWAP3 AND SWAP2 PUSH1 0x0 SWAP2 PUSH2 0x4EB3 SWAP2 DUP5 SWAP2 PUSH4 0xC92AECC4 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4E62 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4E76 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4E8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x4EA4 DUP7 PUSH12 0x33B2E3C9FD0803CE8000000 PUSH2 0x4A54 JUMP JUMPDEST DUP2 PUSH2 0x4EAB JUMPI INVALID JUMPDEST DIV PUSH1 0x1 PUSH2 0x636F JUMP JUMPDEST SWAP1 POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x7F8661A1 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4EFB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4F0F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xEF693BED DUP7 DUP7 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x479D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x4F80 JUMPI POP DUP2 ISZERO JUMPDEST PUSH2 0x4FBB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x69B2 PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x4FC3 PUSH2 0x66C4 JUMP JUMPDEST PUSH2 0x4FCB PUSH2 0x2A01 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4FE2 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4FED JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x5004 JUMPI INVALID JUMPDEST EQ PUSH2 0x5028 JUMPI PUSH2 0x5020 PUSH1 0x9 PUSH1 0x2E DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3CDD JUMPI INVALID JUMPDEST SWAP2 POP POP PUSH2 0x1CA7 JUMP JUMPDEST DUP4 ISZERO PUSH2 0x50A9 JUMPI PUSH1 0x60 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD DUP3 MSTORE SWAP1 DUP3 ADD MLOAD DUP2 MSTORE PUSH2 0x504F SWAP1 DUP6 PUSH2 0x3149 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x5066 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x5071 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x5088 JUMPI INVALID JUMPDEST EQ PUSH2 0x50A4 JUMPI PUSH2 0x5020 PUSH1 0x9 PUSH1 0x2C DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3CDD JUMPI INVALID JUMPDEST PUSH2 0x5122 JUMP JUMPDEST PUSH2 0x50C5 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH1 0x40 ADD MLOAD DUP2 MSTORE POP PUSH2 0x63B6 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x50DC JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x50E7 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x50FE JUMPI INVALID JUMPDEST EQ PUSH2 0x511A JUMPI PUSH2 0x5020 PUSH1 0x9 PUSH1 0x2D DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3CDD JUMPI INVALID JUMPDEST PUSH1 0x80 DUP2 ADD DUP4 SWAP1 MSTORE JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x60 DUP3 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xEABE7D91 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP4 SWAP3 SWAP1 SWAP3 AND SWAP2 PUSH4 0xEABE7D91 SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5187 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x519B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x51B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x51D1 JUMPI PUSH2 0x51C8 PUSH1 0x3 PUSH1 0x2B DUP4 PUSH2 0x490B JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x1CA7 JUMP JUMPDEST PUSH2 0x51D9 PUSH2 0x23E5 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x51ED JUMPI PUSH2 0x51C8 PUSH1 0xA PUSH1 0x2F PUSH2 0x35CA JUMP JUMPDEST PUSH2 0x51FD PUSH1 0x11 SLOAD DUP4 PUSH1 0x60 ADD MLOAD PUSH2 0x4994 JUMP JUMPDEST PUSH1 0xA0 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP5 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x5214 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x521F JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP3 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x5236 JUMPI INVALID JUMPDEST EQ PUSH2 0x5252 JUMPI PUSH2 0x51C8 PUSH1 0x9 PUSH1 0x31 DUP5 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3CDD JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 DUP4 ADD MLOAD PUSH2 0x527A SWAP2 SWAP1 PUSH2 0x4994 JUMP JUMPDEST PUSH1 0xC0 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP5 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x5291 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x529C JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP3 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x52B3 JUMPI INVALID JUMPDEST EQ PUSH2 0x52CF JUMPI PUSH2 0x51C8 PUSH1 0x9 PUSH1 0x30 DUP5 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3CDD JUMPI INVALID JUMPDEST DUP2 PUSH1 0x80 ADD MLOAD PUSH2 0x52DC PUSH2 0x319D JUMP JUMPDEST LT ISZERO PUSH2 0x52EE JUMPI PUSH2 0x51C8 PUSH1 0xE PUSH1 0x32 PUSH2 0x35CA JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MLOAD PUSH1 0x11 SSTORE PUSH1 0xC0 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x5324 SWAP1 DUP8 SWAP1 PUSH2 0x4E0E JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MLOAD PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD ADDRESS SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x68D5 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 PUSH1 0x80 DUP3 ADD MLOAD PUSH1 0x60 DUP1 DUP5 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP4 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE MLOAD PUSH32 0xE5B754FB1ABB7F01B499791D0B820AE3B6AF3424AC1C59768EDB53F4EC31A929 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x5 SLOAD PUSH1 0x80 DUP4 ADD MLOAD PUSH1 0x60 DUP5 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x51DFF989 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x64 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x51DFF989 SWAP2 PUSH1 0x84 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5418 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x542C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x0 SWAP3 POP PUSH2 0x5439 SWAP2 POP POP JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH2 0x5456 JUMPI POP PUSH1 0x0 SWAP1 POP DUP1 PUSH2 0x3196 JUMP JUMPDEST DUP4 DUP4 MUL DUP4 DUP6 DUP3 DUP2 PUSH2 0x5463 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x5477 JUMPI POP PUSH1 0x2 SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH2 0x3196 JUMP JUMPDEST PUSH1 0x0 SWAP3 POP SWAP1 POP PUSH2 0x3196 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH2 0x5496 JUMPI POP PUSH1 0x1 SWAP1 POP PUSH1 0x0 PUSH2 0x3196 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x54A1 JUMPI INVALID JUMPDEST DIV SWAP2 POP SWAP2 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x4EF4C3E1 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 DUP5 SWAP4 SWAP2 AND SWAP2 PUSH4 0x4EF4C3E1 SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x550E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5522 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5538 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x555C JUMPI PUSH2 0x554F PUSH1 0x3 PUSH1 0x21 DUP4 PUSH2 0x490B JUMP JUMPDEST SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH2 0x3196 SWAP1 POP JUMP JUMPDEST PUSH2 0x5564 PUSH2 0x23E5 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x5578 JUMPI PUSH2 0x554F PUSH1 0xA PUSH1 0x24 PUSH2 0x35CA JUMP JUMPDEST PUSH2 0x5580 PUSH2 0x66C4 JUMP JUMPDEST PUSH2 0x5588 PUSH2 0x2A01 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x559F JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x55AA JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x55C1 JUMPI INVALID JUMPDEST EQ PUSH2 0x55EB JUMPI PUSH2 0x55DD PUSH1 0x9 PUSH1 0x23 DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3CDD JUMPI INVALID JUMPDEST SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x3196 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x55F5 DUP7 DUP7 PUSH2 0x4AAF JUMP JUMPDEST PUSH1 0xC0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD DUP3 MSTORE SWAP1 DUP4 ADD MLOAD DUP2 MSTORE PUSH2 0x5616 SWAP2 SWAP1 PUSH2 0x63B6 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x562D JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x5638 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x564F JUMPI INVALID JUMPDEST EQ PUSH2 0x56A1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D494E545F45584348414E47455F43414C43554C4154494F4E5F4641494C4544 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x56B1 PUSH1 0x11 SLOAD DUP3 PUSH1 0x60 ADD MLOAD PUSH2 0x3B59 JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x56DE SWAP2 SWAP1 PUSH2 0x3B59 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MLOAD PUSH1 0x11 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0xC0 DUP5 ADD MLOAD PUSH1 0x60 DUP1 DUP7 ADD MLOAD DUP4 MLOAD SWAP5 DUP6 MSTORE SWAP5 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE MLOAD PUSH32 0x4C209B5FC8AD50758F13E2E1088BA56A560DFF690A1C6FEF26394F4C03821C4F SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 ADDRESS SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x68D5 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 PUSH1 0x5 SLOAD PUSH1 0xC0 DUP3 ADD MLOAD PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x41C728B9 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x64 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x41C728B9 SWAP2 PUSH1 0x84 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x57F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x580A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x0 SWAP3 POP PUSH2 0x5817 SWAP2 POP POP JUMP JUMPDEST DUP2 PUSH1 0xC0 ADD MLOAD SWAP4 POP SWAP4 POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5833 PUSH2 0x661E JUMP JUMPDEST PUSH2 0x584B PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP7 DUP2 MSTORE POP DUP5 PUSH2 0x63CD JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x585B DUP3 PUSH1 0xD SLOAD PUSH2 0x5ABE JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x586B DUP3 PUSH1 0xD SLOAD PUSH2 0x3B59 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x588C PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xA SLOAD DUP2 MSTORE POP DUP5 PUSH1 0xE SLOAD PUSH2 0x63F7 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x58AD PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x9 SLOAD DUP2 MSTORE POP DUP6 PUSH1 0x10 SLOAD PUSH2 0x63F7 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x58CE PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x8 SLOAD DUP2 MSTORE POP DUP7 PUSH1 0xF SLOAD PUSH2 0x63F7 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x58E1 DUP8 PUSH1 0xC SLOAD PUSH1 0xC SLOAD PUSH2 0x63F7 JUMP JUMPDEST PUSH1 0xB DUP14 SWAP1 SSTORE PUSH1 0xC DUP2 SWAP1 SSTORE PUSH1 0xD DUP7 SWAP1 SSTORE PUSH1 0xE DUP6 SWAP1 SSTORE PUSH1 0x10 DUP5 SWAP1 SSTORE PUSH1 0xF DUP4 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP14 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP10 SWAP1 MSTORE DUP1 DUP3 ADD DUP4 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP9 SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH32 0x4DEC04E750CA11537CABCD8A9EAB06494DE08DA3735BC8871CD41250E190BC04 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG1 PUSH1 0x6 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x24 DUP1 DUP3 ADD DUP15 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x5EFD0233 PUSH1 0xE1 SHL OR DUP2 MSTORE SWAP2 MLOAD DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP5 AND SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x59BE JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x599F JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x5A20 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 0x5A25 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP PUSH1 0x0 SWAP2 POP PUSH2 0x5A31 SWAP1 POP JUMP JUMPDEST SWAP13 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 ADD DUP3 DUP6 DUP3 LT ISZERO PUSH2 0x1753 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x48C7 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x48AF JUMP JUMPDEST PUSH1 0x0 PUSH8 0xDE0B6B3A7640000 PUSH2 0x5AAF DUP5 DUP5 PUSH1 0x0 ADD MLOAD PUSH2 0x641F JUMP JUMPDEST DUP2 PUSH2 0x5AB6 JUMPI INVALID JUMPDEST DIV SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5AC8 PUSH2 0x661E JUMP JUMPDEST PUSH2 0x5AD2 DUP5 DUP5 PUSH2 0x63CD JUMP JUMPDEST SWAP1 POP PUSH2 0x187F DUP2 PUSH2 0x4A45 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x368F5153 PUSH1 0xE2 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 AND SWAP2 PUSH4 0xDA3D454C SWAP2 PUSH1 0x64 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5B3A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5B4E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5B64 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x5B83 JUMPI PUSH2 0x5B7B PUSH1 0x3 PUSH1 0x10 DUP4 PUSH2 0x490B JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1152 JUMP JUMPDEST PUSH2 0x5B8B PUSH2 0x23E5 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x5B9F JUMPI PUSH2 0x5B7B PUSH1 0xA PUSH1 0xC PUSH2 0x35CA JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5BA9 PUSH2 0x319D JUMP JUMPDEST SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x5BC8 JUMPI PUSH2 0x5BBF PUSH1 0xE PUSH1 0xB PUSH2 0x35CA JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x1152 JUMP JUMPDEST PUSH2 0x5BD0 PUSH2 0x6702 JUMP JUMPDEST PUSH2 0x5BD9 DUP7 PUSH2 0x373C JUMP JUMPDEST PUSH1 0x20 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x5BED JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x5BF8 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x5C0C JUMPI INVALID JUMPDEST EQ PUSH2 0x5C31 JUMPI PUSH2 0x5C27 PUSH1 0x9 DUP1 DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3CDD JUMPI INVALID JUMPDEST SWAP4 POP POP POP POP PUSH2 0x1152 JUMP JUMPDEST PUSH2 0x5C3F DUP2 PUSH1 0x20 ADD MLOAD DUP7 PUSH2 0x49B7 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x5C53 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x5C5E JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x5C72 JUMPI INVALID JUMPDEST EQ PUSH2 0x5C8E JUMPI PUSH2 0x5C27 PUSH1 0x9 PUSH1 0xE DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3CDD JUMPI INVALID JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 DUP4 ADD MLOAD DUP2 MLOAD PUSH4 0x1DE6C8A5 PUSH1 0xE2 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x779B2294 SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5CE7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5CFB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5D11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 POP DUP3 ISZERO PUSH2 0x5D28 JUMPI PUSH2 0x5C27 PUSH1 0x3 PUSH1 0x10 DUP6 PUSH2 0x490B JUMP JUMPDEST PUSH2 0x5D34 PUSH1 0xD SLOAD DUP7 PUSH2 0x49B7 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x5D48 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x5D53 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x5D67 JUMPI INVALID JUMPDEST EQ PUSH2 0x5D83 JUMPI PUSH2 0x5C27 PUSH1 0x9 PUSH1 0xD DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3CDD JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 MSTORE SWAP2 SWAP1 SWAP2 KECCAK256 SWAP1 DUP2 SSTORE PUSH1 0xC SLOAD PUSH1 0x1 SWAP1 SWAP2 ADD SSTORE PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0xD SSTORE PUSH2 0x5DBF DUP7 DUP7 PUSH2 0x4E0E JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 ADD MLOAD PUSH1 0x60 DUP1 DUP5 ADD MLOAD DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP11 SWAP1 MSTORE DUP1 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP1 DUP3 ADD MSTORE SWAP1 MLOAD PUSH32 0x13ED6866D4E1EE6DA46F845C46D7E54120883D75C5EA9A2DACC1C4CA8984AB80 SWAP2 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG1 PUSH1 0x0 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x2FE3F38F PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP8 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE DUP7 DUP2 AND PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x84 DUP3 ADD DUP7 SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 DUP5 SWAP4 SWAP2 AND SWAP2 PUSH4 0x5FC7E71E SWAP2 PUSH1 0xA4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5E94 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5EA8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5EBE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x5EE2 JUMPI PUSH2 0x5ED5 PUSH1 0x3 PUSH1 0x14 DUP4 PUSH2 0x490B JUMP JUMPDEST SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH2 0x630C SWAP1 POP JUMP JUMPDEST PUSH2 0x5EEA PUSH2 0x23E5 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x5EFE JUMPI PUSH2 0x5ED5 PUSH1 0xA PUSH1 0x18 PUSH2 0x35CA JUMP JUMPDEST PUSH2 0x5F06 PUSH2 0x23E5 JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6C540BAF 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 0x5F3F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5F53 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5F69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD EQ PUSH2 0x5F7C JUMPI PUSH2 0x5ED5 PUSH1 0xA PUSH1 0x13 PUSH2 0x35CA JUMP JUMPDEST DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x5FA2 JUMPI PUSH2 0x5ED5 PUSH1 0x6 PUSH1 0x19 PUSH2 0x35CA JUMP JUMPDEST DUP5 PUSH2 0x5FB3 JUMPI PUSH2 0x5ED5 PUSH1 0x7 PUSH1 0x17 PUSH2 0x35CA JUMP JUMPDEST PUSH1 0x0 NOT DUP6 EQ ISZERO PUSH2 0x5FC9 JUMPI PUSH2 0x5ED5 PUSH1 0x7 PUSH1 0x16 PUSH2 0x35CA JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x5FD7 DUP10 DUP10 DUP10 PUSH2 0x40D1 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP DUP2 ISZERO PUSH2 0x6007 JUMPI PUSH2 0x5FF8 DUP3 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x5FF1 JUMPI INVALID JUMPDEST PUSH1 0x1A PUSH2 0x35CA JUMP JUMPDEST SWAP5 POP PUSH1 0x0 SWAP4 POP PUSH2 0x630C SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xC488847B PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP6 SWAP1 MSTORE DUP3 MLOAD PUSH1 0x0 SWAP5 DUP6 SWAP5 SWAP3 AND SWAP3 PUSH4 0xC488847B SWAP3 PUSH1 0x64 DUP1 DUP4 ADD SWAP4 SWAP2 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6061 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x6075 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x608B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 POP SWAP1 POP DUP2 ISZERO PUSH2 0x60D6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x33 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x6926 PUSH1 0x33 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 DUP9 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 DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x612D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x6141 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6157 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT ISZERO PUSH2 0x61AC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C49515549444154455F5345495A455F544F4F5F4D5543480000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND ADDRESS EQ ISZERO PUSH2 0x61D2 JUMPI PUSH2 0x61CB ADDRESS DUP14 DUP14 DUP6 PUSH2 0x3B8F JUMP JUMPDEST SWAP1 POP PUSH2 0x625C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xB2A02FF1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP15 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP14 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD SWAP2 DUP12 AND SWAP2 PUSH4 0xB2A02FF1 SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x622D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x6241 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6257 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP JUMPDEST DUP1 ISZERO PUSH2 0x62A6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x1D1BDAD95B881CD95A5E9D5C994819985A5B1959 PUSH1 0x62 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP16 AND DUP3 MSTORE DUP1 DUP15 AND PUSH1 0x20 DUP4 ADD MSTORE DUP2 DUP4 ADD DUP8 SWAP1 MSTORE DUP12 AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP2 ADD DUP5 SWAP1 MSTORE SWAP1 MLOAD PUSH32 0x298637F684DA70674F26509B10F07EC2FBC77A335AB1E7D6215A4B2484D8BB52 SWAP2 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 LOG1 PUSH1 0x0 SWAP8 POP SWAP3 SWAP6 POP POP POP POP POP POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x6367 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x48C7 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x48AF JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0x1152 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x6164642D6F766572666C6F77 PUSH1 0xA0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x63C3 PUSH2 0x661E JUMP JUMPDEST PUSH2 0x3160 DUP7 DUP7 PUSH2 0x6461 JUMP JUMPDEST PUSH2 0x63D5 PUSH2 0x661E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x63EE DUP6 PUSH1 0x0 ADD MLOAD DUP6 PUSH2 0x641F JUMP JUMPDEST SWAP1 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6401 PUSH2 0x661E JUMP JUMPDEST PUSH2 0x640B DUP6 DUP6 PUSH2 0x63CD JUMP JUMPDEST SWAP1 POP PUSH2 0x4902 PUSH2 0x6419 DUP3 PUSH2 0x4A45 JUMP JUMPDEST DUP5 PUSH2 0x3B59 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1CA7 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x17 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x6D756C7469706C69636174696F6E206F766572666C6F77000000000000000000 DUP2 MSTORE POP PUSH2 0x64C0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x646B PUSH2 0x661E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x6480 PUSH8 0xDE0B6B3A7640000 DUP8 PUSH2 0x5443 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x6493 JUMPI INVALID JUMPDEST EQ PUSH2 0x64B2 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x3196 JUMP JUMPDEST PUSH2 0x318F DUP2 DUP7 PUSH1 0x0 ADD MLOAD PUSH2 0x44BC JUMP JUMPDEST PUSH1 0x0 DUP4 ISZERO DUP1 PUSH2 0x64CD JUMPI POP DUP3 ISZERO JUMPDEST ISZERO PUSH2 0x64DA JUMPI POP PUSH1 0x0 PUSH2 0x1CA7 JUMP JUMPDEST DUP4 DUP4 MUL DUP4 DUP6 DUP3 DUP2 PUSH2 0x64E7 JUMPI INVALID JUMPDEST DIV EQ DUP4 SWAP1 PUSH2 0x1753 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x48C7 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x48AF JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x6577 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x65A4 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x65A4 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x65A4 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x6589 JUMP JUMPDEST POP PUSH2 0x1AD4 SWAP3 SWAP2 POP PUSH2 0x672B JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x65F1 JUMPI DUP3 DUP1 ADD PUSH1 0xFF NOT DUP3 CALLDATALOAD AND OR DUP6 SSTORE PUSH2 0x65A4 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x65A4 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x65A4 JUMPI DUP3 CALLDATALOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x6603 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x120 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x100 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xE0 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH2 0x1504 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1AD4 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x6731 JUMP INVALID PUSH14 0x61726B6574206D6179206F6E6C79 KECCAK256 PUSH3 0x652069 PUSH15 0x697469616C697A6564206F6E63656F PUSH15 0x6C792073656C66206F722061646D69 PUSH15 0x206D61792063616C6C205F6265636F PUSH14 0x65496D706C656D656E746174696F PUSH15 0x696E697469616C2065786368616E67 PUSH6 0x207261746520 PUSH14 0x7573742062652067726561746572 KECCAK256 PUSH21 0x68616E207A65726F2E6F6E6C79207468652061646D PUSH10 0x6E206D61792073657420 PUSH21 0x686520636F6D702D6C696B652064656C6567617465 PUSH20 0x657474696E6720696E7465726573742072617465 KECCAK256 PUSH14 0x6F64656C206661696C6564626F72 PUSH19 0x6F7742616C616E636553746F7265643A20626F PUSH19 0x726F7742616C616E636553746F726564496E74 PUSH6 0x726E616C2066 PUSH2 0x696C PUSH6 0x64444149206D PUSH22 0x7374206265207468652073616D6520617320756E6465 PUSH19 0x6C79696E6752455041595F424F52524F575F4E GASLIMIT JUMPI 0x5F COINBASE NUMBER NUMBER 0x4F SSTORE 0x4E SLOAD 0x5F TIMESTAMP 0x4F MSTORE MSTORE 0x4F JUMPI 0x5F TIMESTAMP COINBASE 0x4C COINBASE 0x4E NUMBER GASLIMIT 0x5F NUMBER COINBASE 0x4C NUMBER SSTORE 0x4C COINBASE SLOAD 0x49 0x4F 0x4E 0x5F CHAINID COINBASE 0x49 0x4C GASLIMIT DIFFICULTY PUSH16 0x6E6C7920467573652061646D696E206D PUSH2 0x7920 PUSH10 0x6E697469616C697A6520 PUSH21 0x6865206D61726B6574DDF252AD1BE2C89B69C2B068 0xFC CALLDATACOPY DUP14 0xAA SWAP6 0x2B 0xA7 CALL PUSH4 0xC4A11628 CREATE2 GAS 0x4D CREATE2 0x23 0xB3 0xEF MSTORE GASLIMIT POP COINBASE MSIZE 0x5F TIMESTAMP 0x4F MSTORE MSTORE 0x4F JUMPI 0x5F 0x4E GASLIMIT JUMPI 0x5F SLOAD 0x4F SLOAD COINBASE 0x4C 0x5F TIMESTAMP COINBASE 0x4C COINBASE 0x4E NUMBER GASLIMIT 0x5F NUMBER COINBASE 0x4C NUMBER SSTORE 0x4C COINBASE SLOAD 0x49 0x4F 0x4E 0x5F CHAINID COINBASE 0x49 0x4C GASLIMIT DIFFICULTY 0x4C 0x49 MLOAD SSTORE 0x49 DIFFICULTY COINBASE SLOAD GASLIMIT 0x5F NUMBER 0x4F 0x4D POP SLOAD MSTORE 0x4F 0x4C 0x4C GASLIMIT MSTORE 0x5F NUMBER COINBASE 0x4C NUMBER SSTORE 0x4C COINBASE SLOAD GASLIMIT 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD 0x5F MSTORE8 GASLIMIT 0x49 GAS GASLIMIT 0x5F CHAINID COINBASE 0x49 0x4C GASLIMIT DIFFICULTY PUSH22 0x6E6578706563746564204549502D3230207472616E73 PUSH7 0x657220696E2072 PUSH6 0x7475726E6578 PUSH4 0x68616E67 PUSH6 0x526174655374 PUSH16 0x7265643A2065786368616E6765526174 PUSH6 0x53746F726564 0x49 PUSH15 0x7465726E616C206661696C65646F6E PUSH6 0x206F66207265 PUSH5 0x65656D546F PUSH12 0x656E73496E206F7220726564 PUSH6 0x656D416D6F75 PUSH15 0x74496E206D757374206265207A6572 PUSH16 0xA265627A7A72315820410B4F3E79D813 EXTCODEHASH OR 0x4E 0xBA 0xA7 PUSH1 0x74 LOG0 0xAC SUB 0xC8 PUSH1 0xEB PUSH31 0xCAD951ABD968E12FBD775E64736F6C63430005110032000000000000000000 ","sourceMap":"171:5996:1:-;;;;;;;;;"},"deployedBytecode":{"linkReferences":{},"object":"6080604052600436106103975760003560e01c80638a8df2e6116101dc578063ae9d70b011610102578063dc028ab1116100a0578063f5e3c4621161006f578063f5e3c46214610fc9578063f8f9da281461100c578063fca7820b14611021578063fe9c44ae1461104b57610397565b8063dc028ab114610f31578063dd62ed3e14610f46578063f2b3abbd14610f81578063f3fdb15a14610fb457610397565b8063c37f68e2116100dc578063c37f68e214610e6f578063c5ebeaec14610ec8578063db006a7514610ef2578063dbfe7c1914610f1c57610397565b8063ae9d70b014610e02578063b2a02ff114610e17578063bd6d894d14610e5a57610397565b8063a03dce8d1161017a578063a7b820df11610149578063a7b820df14610d75578063a9059cbb14610d9f578063aa5af0fd14610dd8578063ac784ddc14610ded57610397565b8063a03dce8d14610bb0578063a0712d6814610bda578063a0b0d28914610c04578063a6afed9514610d6057610397565b80638f840ddd116101b65780638f840ddd14610b2957806391dd36c614610b3e57806395d89b4114610b6857806395dd919314610b7d57610397565b80638a8df2e614610aea5780638d02d9a114610aff5780638d925ccd14610b1457610397565b806347bd3718116102c157806366ced6021161025f57806370a082311161022e57806370a0823114610a4557806373acee9814610a785780637f1e06be14610a8d578063852a12e314610ac057610397565b806366ced602146109f15780636752e70214610a065780636c540baf14610a1b5780636f307dc314610a3057610397565b80635c60da1b1161029b5780635c60da1b1461096c5780635fe3b5671461099d578063601a0bf1146109b257806361feacff146109dc57610397565b806347bd37181461084a57806350d85b731461085f57806356e67728146108f157610397565b8063182df0f511610339578063313ce56711610308578063313ce5671461070c57806334154d4c146107375780633af9e669146108025780633b1d21a21461083557610397565b8063182df0f5146106735780631db789441461068857806323b872dd146106905780632608f818146106d357610397565b80630f8855e8116103755780630f8855e8146104af578063173b99041461061657806317bfdfbc1461062b57806318160ddd1461065e57610397565b806306fdde031461039c578063095ea7b3146104265780630e75270214610473575b600080fd5b3480156103a857600080fd5b506103b1611060565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103eb5781810151838201526020016103d3565b50505050905090810190601f1680156104185780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561043257600080fd5b5061045f6004803603604081101561044957600080fd5b506001600160a01b0381351690602001356110eb565b604080519115158252519081900360200190f35b34801561047f57600080fd5b5061049d6004803603602081101561049657600080fd5b5035611158565b60408051918252519081900360200190f35b3480156104bb57600080fd5b5061061460048036036101008110156104d357600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b81111561050d57600080fd5b82018360208201111561051f57600080fd5b803590602001918460018302840111600160201b8311171561054057600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561059257600080fd5b8201836020820111156105a457600080fd5b803590602001918460018302840111600160201b831117156105c557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505060ff833516935050506020810135906040013561116e565b005b34801561062257600080fd5b5061049d61141c565b34801561063757600080fd5b5061049d6004803603602081101561064e57600080fd5b50356001600160a01b0316611422565b34801561066a57600080fd5b5061049d61149e565b34801561067f57600080fd5b5061049d6114a4565b610614611507565b34801561069c57600080fd5b5061045f600480360360608110156106b357600080fd5b506001600160a01b03813581169160208101359091169060400135611718565b3480156106df57600080fd5b5061049d600480360360408110156106f657600080fd5b506001600160a01b038135169060200135611746565b34801561071857600080fd5b5061072161175c565b6040805160ff9092168252519081900360200190f35b34801561074357600080fd5b506106146004803603604081101561075a57600080fd5b810190602081018135600160201b81111561077457600080fd5b82018360208201111561078657600080fd5b803590602001918460018302840111600160201b831117156107a757600080fd5b919390929091602081019035600160201b8111156107c457600080fd5b8201836020820111156107d657600080fd5b803590602001918460018302840111600160201b831117156107f757600080fd5b509092509050611765565b34801561080e57600080fd5b5061049d6004803603602081101561082557600080fd5b50356001600160a01b03166117d1565b34801561084157600080fd5b5061049d611887565b34801561085657600080fd5b5061049d611896565b34801561086b57600080fd5b506106146004803603606081101561088257600080fd5b6001600160a01b03823516916020810135151591810190606081016040820135600160201b8111156108b357600080fd5b8201836020820111156108c557600080fd5b803590602001918460018302840111600160201b831117156108e657600080fd5b50909250905061189c565b3480156108fd57600080fd5b506106146004803603602081101561091457600080fd5b810190602081018135600160201b81111561092e57600080fd5b82018360208201111561094057600080fd5b803590602001918460018302840111600160201b8311171561096157600080fd5b509092509050611925565b34801561097857600080fd5b506109816119a6565b604080516001600160a01b039092168252519081900360200190f35b3480156109a957600080fd5b506109816119b5565b3480156109be57600080fd5b5061049d600480360360208110156109d557600080fd5b50356119c4565b3480156109e857600080fd5b5061049d611a15565b3480156109fd57600080fd5b50610981611a1b565b348015610a1257600080fd5b5061049d611a2a565b348015610a2757600080fd5b5061049d611a35565b348015610a3c57600080fd5b50610981611a3b565b348015610a5157600080fd5b5061049d60048036036020811015610a6857600080fd5b50356001600160a01b0316611a4a565b348015610a8457600080fd5b5061049d611a65565b348015610a9957600080fd5b5061061460048036036020811015610ab057600080fd5b50356001600160a01b0316611ad8565b348015610acc57600080fd5b5061049d60048036036020811015610ae357600080fd5b5035611b7d565b348015610af657600080fd5b50610981611b88565b348015610b0b57600080fd5b5061049d611b97565b348015610b2057600080fd5b50610981611b9d565b348015610b3557600080fd5b5061049d611bac565b348015610b4a57600080fd5b5061049d60048036036020811015610b6157600080fd5b5035611bb2565b348015610b7457600080fd5b506103b1611bef565b348015610b8957600080fd5b5061049d60048036036020811015610ba057600080fd5b50356001600160a01b0316611c4a565b348015610bbc57600080fd5b5061049d60048036036020811015610bd357600080fd5b5035611cae565b348015610be657600080fd5b5061049d60048036036020811015610bfd57600080fd5b5035611ceb565b348015610c1057600080fd5b50610614600480360360e0811015610c2757600080fd5b6001600160a01b0382358116926020810135821692604082013590921691810190608081016060820135600160201b811115610c6257600080fd5b820183602082011115610c7457600080fd5b803590602001918460018302840111600160201b83111715610c9557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115610ce757600080fd5b820183602082011115610cf957600080fd5b803590602001918460018302840111600160201b83111715610d1a57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505082359350505060200135611cf7565b348015610d6c57600080fd5b5061049d611e10565b348015610d8157600080fd5b5061049d60048036036020811015610d9857600080fd5b5035611e8b565b348015610dab57600080fd5b5061045f60048036036040811015610dc257600080fd5b506001600160a01b038135169060200135611ec8565b348015610de457600080fd5b5061049d611ef5565b348015610df957600080fd5b5061045f611efb565b348015610e0e57600080fd5b5061049d611f00565b348015610e2357600080fd5b5061049d60048036036060811015610e3a57600080fd5b506001600160a01b03813581169160208101359091169060400135611fbd565b348015610e6657600080fd5b5061049d611fe1565b348015610e7b57600080fd5b50610ea260048036036020811015610e9257600080fd5b50356001600160a01b0316612055565b604080519485526020850193909352838301919091526060830152519081900360800190f35b348015610ed457600080fd5b5061049d60048036036020811015610eeb57600080fd5b50356120ea565b348015610efe57600080fd5b5061049d60048036036020811015610f1557600080fd5b50356120f5565b348015610f2857600080fd5b5061049d612100565b348015610f3d57600080fd5b5061049d612106565b348015610f5257600080fd5b5061049d60048036036040811015610f6957600080fd5b506001600160a01b038135811691602001351661210c565b348015610f8d57600080fd5b5061049d60048036036020811015610fa457600080fd5b50356001600160a01b0316612137565b348015610fc057600080fd5b50610981612171565b348015610fd557600080fd5b5061049d60048036036060811015610fec57600080fd5b506001600160a01b03813581169160208101359160409091013516612180565b34801561101857600080fd5b5061049d612198565b34801561102d57600080fd5b5061049d6004803603602081101561104457600080fd5b503561220d565b34801561105757600080fd5b5061045f61224a565b6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156110e35780601f106110b8576101008083540402835291602001916110e3565b820191906000526020600020905b8154815290600101906020018083116110c657829003601f168201915b505050505081565b3360008181526013602090815260408083206001600160a01b03871680855290835281842086905581518681529151939493909284927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a360019150505b92915050565b6000806111648361224f565b509150505b919050565b3373a731585ab05fc9f83555cf9bff8f58ee94e18f85146111c05760405162461bcd60e51b81526004018080602001828103825260298152602001806168ac6029913960400191505060405180910390fd5b600b541580156111d05750600c54155b61120b5760405162461bcd60e51b81526004018080602001828103825260238152602001806167466023913960400191505060405180910390fd5b60078690558561124c5760405162461bcd60e51b815260040180806020018281038252603081526020018061679a6030913960400191505060405180910390fd5b6000611257896122b2565b905080156112ac576040805162461bcd60e51b815260206004820152601a60248201527f73657474696e6720636f6d7074726f6c6c6572206661696c6564000000000000604482015290519081900360640190fd5b6112b46123e5565b600b55670de0b6b3a7640000600c556112cc886123e9565b9050801561130b5760405162461bcd60e51b81526004018080602001828103825260228152602001806167f76022913960400191505060405180910390fd5b855161131e906002906020890190616536565b508451611332906003906020880190616536565b506004805460ff191660ff861617905561134b836126ef565b905080156113a0576040805162461bcd60e51b815260206004820152601d60248201527f73657474696e67207265736572766520666163746f72206661696c6564000000604482015290519081900360640190fd5b6113a9826127a8565b905080156113fe576040805162461bcd60e51b815260206004820152601860248201527f73657474696e672061646d696e20666565206661696c65640000000000000000604482015290519081900360640190fd5b50506001805460ff60b01b1916600160b01b17905550505050505050565b600a5481565b60008061142e816128cd565b6000611438611e10565b14611483576040805162461bcd60e51b81526020600482015260166024820152751858d8dc9d59481a5b9d195c995cdd0819985a5b195960521b604482015290519081900360640190fd5b61148c83611c4a565b91505b61149881612996565b50919050565b60115481565b60008060006114b1612a01565b909250905060008260038111156114c457fe5b146115005760405162461bcd60e51b815260040180806020018281038252603581526020018061697d6035913960400191505060405180910390fd5b9150505b90565b33301480159061158d5750600560009054906101000a90046001600160a01b03166001600160a01b031663dd5cd22c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561156057600080fd5b505afa158015611574573d6000803e3d6000fd5b505050506040513d602081101561158a57600080fd5b50515b156117165760008054604080516345cc970560e01b81526001600160a01b03909216600483015251829160609173a731585ab05fc9f83555cf9bff8f58ee94e18f85916345cc97059160248083019287929190829003018186803b1580156115f457600080fd5b505afa158015611608573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052606081101561163157600080fd5b81516020830151604080850180519151939592948301929184600160201b82111561165b57600080fd5b90830190602082018581111561167057600080fd5b8251600160201b81118282018810171561168957600080fd5b82525081516020918201929091019080838360005b838110156116b657818101518382015260200161169e565b50505050905090810190601f1680156116e35780820380516001836020036101000a031916815260200191505b5060405250506000549396509194509250506001600160a01b0380851691161461171257611712838383612ac1565b5050505b565b600080611724816128cd565b600061173233878787612cdd565b14915061173e81612996565b509392505050565b6000806117538484612f69565b50949350505050565b60045460ff1681565b61176d612fce565b6117b1576040805162461bcd60e51b815260206004820152601060248201526f31b0b63632b9103737ba1030b236b4b760811b604482015290519081900360640190fd5b6117bd600285856165b0565b506117ca600383836165b0565b5050505050565b60006117db61661e565b60405180602001604052806117ee611fe1565b90526001600160a01b03841660009081526012602052604081205491925090819061181a908490613149565b9092509050600082600381111561182d57fe5b1461187f576040805162461bcd60e51b815260206004820152601f60248201527f62616c616e636520636f756c64206e6f742062652063616c63756c6174656400604482015290519081900360640190fd5b949350505050565b600061189161319d565b905090565b600d5481565b6118a4612fce565b6118de576040805162461bcd60e51b815260206004820152600660248201526510b0b236b4b760d11b604482015290519081900360640190fd5b61191f848484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612ac192505050565b50505050565b333014806119365750611936612fce565b6119715760405162461bcd60e51b81526004018080602001828103825260318152602001806167696031913960400191505060405180910390fd5b6000808383604081101561198457600080fd5b506001600160a01b0381358116935060209091013516905061191f82826132af565b6000546001600160a01b031681565b6005546001600160a01b031681565b6000806119d0816128cd565b60006119da611e10565b90508015611a00576119f88160118111156119f157fe5b603b6135ca565b92505061148f565b611a0984613630565b92505061149881612996565b600f5481565b6017546001600160a01b031681565b666379da05b6000081565b600b5481565b6015546001600160a01b031681565b6001600160a01b031660009081526012602052604090205490565b600080611a71816128cd565b6000611a7b611e10565b14611ac6576040805162461bcd60e51b81526020600482015260166024820152751858d8dc9d59481a5b9d195c995cdd0819985a5b195960521b604482015290519081900360640190fd5b600d549150611ad481612996565b5090565b611ae0612fce565b611b1b5760405162461bcd60e51b815260040180806020018281038252602d8152602001806167ca602d913960400191505060405180910390fd5b601554604080516317066a5760e21b81526001600160a01b03848116600483015291519190921691635c19a95c91602480830192600092919082900301818387803b158015611b6957600080fd5b505af11580156117ca573d6000803e3d6000fd5b6000611152826136fc565b6016546001600160a01b031681565b60085481565b6018546001600160a01b031681565b600e5481565b600080611bbe816128cd565b6000611bc8611e10565b90508015611be6576119f8816011811115611bdf57fe5b60526135ca565b611a09846127a8565b6003805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156110e35780601f106110b8576101008083540402835291602001916110e3565b6000806000611c588461373c565b90925090506000826003811115611c6b57fe5b14611ca75760405162461bcd60e51b81526004018080602001828103825260378152602001806168196037913960400191505060405180910390fd5b9392505050565b600080611cba816128cd565b6000611cc4611e10565b90508015611ce2576119f8816011811115611cdb57fe5b60336135ca565b611a09846137f0565b60008061116483613871565b60006702c68af0bb14000090506000886001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015611d3f57600080fd5b505afa158015611d53573d6000803e3d6000fd5b505050506040513d6020811015611d6957600080fd5b50519050611d7d8888848989868a8a61116e565b601580546001600160a01b0319166001600160a01b038b81169190911791829055604080516318160ddd60e01b8152905192909116916318160ddd91600480820192602092909190829003018186803b158015611dd957600080fd5b505afa158015611ded573d6000803e3d6000fd5b505050506040513d6020811015611e0357600080fd5b5050505050505050505050565b60175460408051634fb3c66560e11b815290516000926001600160a01b031691639f678cca91600480830192602092919082900301818787803b158015611e5657600080fd5b505af1158015611e6a573d6000803e3d6000fd5b505050506040513d6020811015611e8057600080fd5b5061189190506138b1565b600080611e97816128cd565b6000611ea1611e10565b90508015611ebf576119f8816011811115611eb857fe5b60376135ca565b611a0984613a71565b600080611ed4816128cd565b6000611ee233338787612cdd565b149150611eee81612996565b5092915050565b600c5481565b600081565b6006546000906001600160a01b031663b8168816611f1c61319d565b600d54611f38600e54611f33600f54601054613b59565b613b59565b600854600954600a5401016040518563ffffffff1660e01b81526004018085815260200184815260200183815260200182815260200194505050505060206040518083038186803b158015611f8c57600080fd5b505afa158015611fa0573d6000803e3d6000fd5b505050506040513d6020811015611fb657600080fd5b5051905090565b60006001611fca816128cd565b611fd633868686613b8f565b915061173e81612996565b600080611fed816128cd565b6000611ff7611e10565b14612042576040805162461bcd60e51b81526020600482015260166024820152751858d8dc9d59481a5b9d195c995cdd0819985a5b195960521b604482015290519081900360640190fd5b61204a6114a4565b9150611ad481612996565b6001600160a01b0381166000908152601260205260408120548190819081908180806120808961373c565b93509050600081600381111561209257fe5b146120b05760095b9750600096508695508594506120e39350505050565b6120b8612a01565b9250905060008160038111156120ca57fe5b146120d657600961209a565b5060009650919450925090505b9193509193565b600061115282613f6e565b600061115282613fac565b60095481565b60105481565b6001600160a01b03918216600090815260136020908152604080832093909416825291909152205490565b600080612142611e10565b905080156121685761216081601181111561215957fe5b604b6135ca565b915050611169565b611ca7836123e9565b6006546001600160a01b031681565b60008061218e858585613fe5565b5095945050505050565b6006546000906001600160a01b03166315f240536121b461319d565b600d546121cb600e54611f33600f54601054613b59565b6040518463ffffffff1660e01b815260040180848152602001838152602001828152602001935050505060206040518083038186803b158015611f8c57600080fd5b600080612219816128cd565b6000612223611e10565b90508015612241576119f881601181111561223a57fe5b60596135ca565b611a09846126ef565b600181565b600080600061225d816128cd565b6000612267611e10565b905080156122925761228581601181111561227e57fe5b60416135ca565b9350600092506122a39050565b61229d3333876140d1565b93509350505b6122ac81612996565b50915091565b600080600560009054906101000a90046001600160a01b03169050826001600160a01b0316627e3dd26040518163ffffffff1660e01b815260040160206040518083038186803b15801561230557600080fd5b505afa158015612319573d6000803e3d6000fd5b505050506040513d602081101561232f57600080fd5b5051612382576040805162461bcd60e51b815260206004820152601c60248201527f6d61726b6572206d6574686f642072657475726e65642066616c736500000000604482015290519081900360640190fd5b600580546001600160a01b0319166001600160a01b03858116918217909255604080519284168352602083019190915280517f7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d9281900390910190a16000611ca7565b4390565b6000806123f4612fce565b612404576121606001604d6135ca565b61240c6123e5565b600b541461242057612160600a604c6135ca565b600660009054906101000a90046001600160a01b03169050826001600160a01b0316632191f92a6040518163ffffffff1660e01b815260040160206040518083038186803b15801561247157600080fd5b505afa158015612485573d6000803e3d6000fd5b505050506040513d602081101561249b57600080fd5b50516124ee576040805162461bcd60e51b815260206004820152601c60248201527f6d61726b6572206d6574686f642072657475726e65642066616c736500000000604482015290519081900360640190fd5b600680546001600160a01b0319166001600160a01b03858116918217909255604080519284168352602083019190915280517fedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f9269281900390910190a16001600160a01b038116156126205760408051600481526024810182526020810180516001600160e01b0316636cc1140b60e11b178152915181516001600160a01b0385169382918083835b602083106125b55780518252601f199092019160209182019101612596565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612617576040519150601f19603f3d011682016040523d82523d6000602084013e61261c565b606091505b5050505b60408051600481526024810182526020810180516001600160e01b031663742a137b60e11b178152915181516001600160a01b0387169382918083835b6020831061267c5780518252601f19909201916020918201910161265d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146126de576040519150601f19603f3d011682016040523d82523d6000602084013e6126e3565b606091505b5060009150611ca79050565b60006126f9612fce565b612710576127096001605a6135ca565b9050611169565b6127186123e5565b600b541461272c57612709600a605b6135ca565b670de0b6b3a764000061274c61274484600854613b59565b600954613b59565b111561275e576127096002605c6135ca565b600a805490839055604080518281526020810185905281517faaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460929181900390910190a16000611ca7565b60006127b26123e5565b600b54146127c657612709600a60546135ca565b6000198214156127d65760085491505b60006127e0614421565b9050670de0b6b3a76400006128006127fa600a5486613b59565b83613b59565b111561281257612160600260556135ca565b826008541461287857612823612fce565b61283357612160600160536135ca565b6008805490849055604080518281526020810186905281517fcdd0b588250e1398549f79cfdb8217c186688822905d6715b0834ea1c865594a929181900390910190a1505b80600954146128c6576009805490829055604080518281526020810184905281517f92eef861b6533b7d3417f39c2ad7b460eed4e88a32fa3604f30e718b7602e7dc929181900390910190a1505b6000611ca7565b600154600160b01b900460ff16612918576040805162461bcd60e51b815260206004820152600a6024820152691c994b595b9d195c995960b21b604482015290519081900360640190fd5b8061298657600560009054906101000a90046001600160a01b03166001600160a01b031663c90c20b16040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561296d57600080fd5b505af1158015612981573d6000803e3d6000fd5b505050505b506001805460ff60b01b19169055565b6001805460ff60b01b1916600160b01b179055806129fe57600560009054906101000a90046001600160a01b03166001600160a01b031663632e51426040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611b6957600080fd5b50565b601154600090819080612a1c57505060075460009150612abd565b6000612a2661319d565b90506000612a3261661e565b6000612a5484600d54612a4f600e54611f33600f54601054613b59565b614470565b935090506000816003811115612a6657fe5b14612a7b57955060009450612abd9350505050565b612a8583866144bc565b925090506000816003811115612a9757fe5b14612aac57955060009450612abd9350505050565b5051600095509350612abd92505050565b9091565b600054604080516338e6a07360e11b81526001600160a01b039283166004820152918516602483015283151560448301525173a731585ab05fc9f83555cf9bff8f58ee94e18f85916371cd40e6916064808301926020929190829003018186803b158015612b2e57600080fd5b505afa158015612b42573d6000803e3d6000fd5b505050506040513d6020811015612b5857600080fd5b5051612b93576040805162461bcd60e51b8152602060048201526005602482015264085a5b5c1b60da1b604482015290519081900360640190fd5b8115612ba157612ba161456c565b600080546001600160a01b038581166001600160a01b031983161783556040516020602482018181528651604484015286519390941694612c8e94309488949193849360649093019290860191908190849084905b83811015612c0e578181015183820152602001612bf6565b50505050905090810190601f168015612c3b5780820380516001836020036101000a031916815260200191505b5060408051601f19818403018152918152602080830180516001600160e01b0316630adccee560e31b17905281518083019092526007825266216265636f6d6560c81b9082015290935091506147bc9050565b50600054604080516001600160a01b038085168252909216602083015280517fd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a9281900390910190a150505050565b600554604080516317b9b84b60e31b81523060048201526001600160a01b03868116602483015285811660448301526064820185905291516000938493169163bdcdc25891608480830192602092919082900301818787803b158015612d4257600080fd5b505af1158015612d56573d6000803e3d6000fd5b505050506040513d6020811015612d6c57600080fd5b505190508015612d8b57612d836003605d8361490b565b91505061187f565b836001600160a01b0316856001600160a01b03161415612db157612d836002605e6135ca565b60006001600160a01b038781169087161415612dd05750600019612df8565b506001600160a01b038086166000908152601360209081526040808320938a16835292905220545b600080600080612e088589614994565b90945092506000846003811115612e1b57fe5b14612e3957612e2c6009605e6135ca565b965050505050505061187f565b6001600160a01b038a16600090815260126020526040902054612e5c9089614994565b90945091506000846003811115612e6f57fe5b14612e8057612e2c6009605f6135ca565b6001600160a01b038916600090815260126020526040902054612ea390896149b7565b90945090506000846003811115612eb657fe5b14612ec757612e2c600960606135ca565b6001600160a01b03808b16600090815260126020526040808220859055918b168152208190556000198514612f1f576001600160a01b03808b166000908152601360209081526040808320938f168352929052208390555b886001600160a01b03168a6001600160a01b03166000805160206168d58339815191528a6040518082815260200191505060405180910390a35060009a9950505050505050505050565b6000806000612f77816128cd565b6000612f81611e10565b90508015612fac57612f9f816011811115612f9857fe5b60406135ca565b935060009250612fbd9050565b612fb73387876140d1565b93509350505b612fc681612996565b509250929050565b600554604080516303e1469160e61b815290516000926001600160a01b031691829163f851a44091600480820192602092909190829003018186803b15801561301657600080fd5b505afa15801561302a573d6000803e3d6000fd5b505050506040513d602081101561304057600080fd5b50516001600160a01b0316331480156130ba5750806001600160a01b0316630a755ec26040518163ffffffff1660e01b815260040160206040518083038186803b15801561308d57600080fd5b505afa1580156130a1573d6000803e3d6000fd5b505050506040513d60208110156130b757600080fd5b50515b8061150057503373a731585ab05fc9f83555cf9bff8f58ee94e18f851480156115005750806001600160a01b0316632f1069ba6040518163ffffffff1660e01b815260040160206040518083038186803b15801561311757600080fd5b505afa15801561312b573d6000803e3d6000fd5b505050506040513d602081101561314157600080fd5b505191505090565b600080600061315661661e565b61316086866149dd565b9092509050600082600381111561317357fe5b146131845750915060009050613196565b600061318f82614a45565b9350935050505b9250929050565b601754604080516305f5d64360e11b815230600482015290516000926001600160a01b03169183918391630bebac86916024808301926020929190829003018186803b1580156131ec57600080fd5b505afa158015613200573d6000803e3d6000fd5b505050506040513d602081101561321657600080fd5b50516040805163324abb3160e21b815290519192506b033b2e3c9fd0803ce8000000916132a0916001600160a01b0386169163c92aecc491600480820192602092909190829003018186803b15801561326e57600080fd5b505afa158015613282573d6000803e3d6000fd5b505050506040513d602081101561329857600080fd5b505183614a54565b816132a757fe5b049250505090565b600082905060008290506000826001600160a01b031663f4b9fa756040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156132f657600080fd5b505af115801561330a573d6000803e3d6000fd5b505050506040513d602081101561332057600080fd5b5051604080516336569e7760e01b815290519192506000916001600160a01b038616916336569e7791600480830192602092919082900301818787803b15801561336957600080fd5b505af115801561337d573d6000803e3d6000fd5b505050506040513d602081101561339357600080fd5b50516015549091506001600160a01b038381169116146133e45760405162461bcd60e51b81526004018080602001828103825260228152602001806168506022913960400191505060405180910390fd5b601680546001600160a01b038089166001600160a01b0319928316179283905560178054898316908416179055601880548583169316929092179091556040805163095ea7b360e01b815292821660048401526000196024840152519084169163095ea7b391604480830192600092919082900301818387803b15801561346a57600080fd5b505af115801561347e573d6000803e3d6000fd5b5050601754604080516328ec8bf160e21b81526001600160a01b0392831660048201529051918516935063a3b22fc4925060248082019260009290919082900301818387803b1580156134d057600080fd5b505af11580156134e4573d6000803e3d6000fd5b5050601654604080516328ec8bf160e21b81526001600160a01b0392831660048201529051918516935063a3b22fc4925060248082019260009290919082900301818387803b15801561353657600080fd5b505af115801561354a573d6000803e3d6000fd5b50505050826001600160a01b0316639f678cca6040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561358957600080fd5b505af115801561359d573d6000803e3d6000fd5b505050506040513d60208110156135b357600080fd5b506135c19050306000614aaf565b50505050505050565b60007f45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa08360118111156135f957fe5b83606381111561360557fe5b604080519283526020830191909152600082820152519081900360600190a1826011811115611ca757fe5b60008061363b612fce565b61364b576121606001603c6135ca565b6136536123e5565b600b541461366757612160600a603e6135ca565b8261367061319d565b101561368257612160600e603d6135ca565b600e54831115613698576121606002603f6135ca565b6136a4600e5484614dd4565b600e81905590506136b53384614e0e565b604080513381526020810185905280820183905290517f3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e9181900360600190a16000611ca7565b600080613708816128cd565b6000613712611e10565b90508015613730576119f881601181111561372957fe5b602a6135ca565b611a0933600086614f73565b6001600160a01b0381166000908152601460205260408120805482918291829182916137735750600094508493506137eb92505050565b6137838160000154600c54615443565b9094509250600084600381111561379657fe5b146137ab5750919350600092506137eb915050565b6137b9838260010154615482565b909450915060008460038111156137cc57fe5b146137e15750919350600092506137eb915050565b5060009450925050505b915091565b6000806137fb6123e5565b600b541461380f57612160600a60356135ca565b8261381861319d565b101561382a57612160600e60346135ca565b60105483111561384057612160600260366135ca565b61384c60105484614dd4565b601081905590506128c673a731585ab05fc9f83555cf9bff8f58ee94e18f8584614e0e565b600080600061387f816128cd565b6000613889611e10565b905080156138a7576122858160118111156138a057fe5b60206135ca565b61229d33866154ad565b6000806138bc6123e5565b905080600b5414156138d2576000915050611504565b60006138dc61319d565b90506000600660009054906101000a90046001600160a01b03166001600160a01b03166315f2405383600d5461391c600e54611f33600f54601054613b59565b6040518463ffffffff1660e01b815260040180848152602001838152602001828152602001935050505060206040518083038186803b15801561395e57600080fd5b505afa158015613972573d6000803e3d6000fd5b505050506040513d602081101561398857600080fd5b5051905065048c273950008111156139e7576040805162461bcd60e51b815260206004820152601c60248201527f626f72726f772072617465206973206162737572646c79206869676800000000604482015290519081900360640190fd5b6000806139f685600b54614994565b90925090506000826003811115613a0957fe5b14613a5b576040805162461bcd60e51b815260206004820152601f60248201527f636f756c64206e6f742063616c63756c61746520626c6f636b2064656c746100604482015290519081900360640190fd5b613a6785858584615829565b9550505050505090565b600080613a7c6123e5565b600b5414613a9057612160600a60396135ca565b82613a9961319d565b1015613aab57612160600e60386135ca565b600f54831115613ac1576121606002603a6135ca565b613acd600f5484614dd4565b905080600f819055506128c6600560009054906101000a90046001600160a01b03166001600160a01b031663f851a4406040518163ffffffff1660e01b815260040160206040518083038186803b158015613b2757600080fd5b505afa158015613b3b573d6000803e3d6000fd5b505050506040513d6020811015613b5157600080fd5b505184614e0e565b6000611ca78383604051806040016040528060118152602001706164646974696f6e206f766572666c6f7760781b815250615a41565b6005546040805163d02f735160e01b81523060048201526001600160a01b038781166024830152868116604483015285811660648301526084820185905291516000938493169163d02f73519160a480830192602092919082900301818787803b158015613bfc57600080fd5b505af1158015613c10573d6000803e3d6000fd5b505050506040513d6020811015613c2657600080fd5b505190508015613c3d57612d836003601d8361490b565b846001600160a01b0316846001600160a01b03161415613c6357612d836006601e6135ca565b613c6b616631565b6001600160a01b038516600090815260126020526040902054613c8e9085614994565b6020830181905282826003811115613ca257fe5b6003811115613cad57fe5b9052506000905081516003811115613cc157fe5b14613ceb57613ce26009601c83600001516003811115613cdd57fe5b61490b565b9250505061187f565b613d0a846040518060200160405280666379da05b60000815250615a96565b60808201819052613d1c908590614dd4565b6060820152613d29612a01565b60c0830181905282826003811115613d3d57fe5b6003811115613d4857fe5b9052506000905081516003811115613d5c57fe5b14613dae576040805162461bcd60e51b815260206004820152601860248201527f65786368616e67652072617465206d617468206572726f720000000000000000604482015290519081900360640190fd5b613dce60405180602001604052808360c001518152508260800151615abe565b60a08201819052600e54613de191613b59565b60e08201526011546080820151613df89190614dd4565b6101008201526001600160a01b0386166000908152601260205260409020546060820151613e2691906149b7565b6040830181905282826003811115613e3a57fe5b6003811115613e4557fe5b9052506000905081516003811115613e5957fe5b14613e7557613ce26009601b83600001516003811115613cdd57fe5b60e0810151600e556101008101516011556020808201516001600160a01b0380881660008181526012855260408082209490945583860151928b168082529084902092909255606085015183519081529251919390926000805160206168d5833981519152929081900390910190a36080810151604080519182525130916001600160a01b038816916000805160206168d58339815191529181900360200190a360a081015160e082015160408051308152602081019390935282810191909152517fa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc59181900360600190a16000979650505050505050565b600080613f7a816128cd565b6000613f84611e10565b90508015613fa2576119f8816011811115613f9b57fe5b600a6135ca565b611a093385615add565b600080613fb8816128cd565b6000613fc2611e10565b90508015613fd9576119f881601181111561372957fe5b611a0933856000614f73565b6000806000613ff3816128cd565b6000613ffd611e10565b905080156140285761401b81601181111561401457fe5b60116135ca565b9350600092506140bf9050565b846001600160a01b031663a6afed956040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561406357600080fd5b505af1158015614077573d6000803e3d6000fd5b505050506040513d602081101561408d57600080fd5b5051905080156140ad5761401b8160118111156140a657fe5b60126135ca565b6140b933888888615e23565b93509350505b6140c881612996565b50935093915050565b60055460408051631200453160e11b81523060048201526001600160a01b0386811660248301528581166044830152606482018590529151600093849384939116916324008a629160848082019260209290919082900301818787803b15801561413a57600080fd5b505af115801561414e573d6000803e3d6000fd5b505050506040513d602081101561416457600080fd5b5051905080156141885761417b600360438361490b565b9250600091506144199050565b6141906123e5565b600b54146141a45761417b600a60446135ca565b6141ac61667e565b6001600160a01b03861660009081526014602052604090206001015460608201526141d68661373c565b60808301819052602083018260038111156141ed57fe5b60038111156141f857fe5b905250600090508160200151600381111561420f57fe5b146142395761422b6009604283602001516003811115613cdd57fe5b935060009250614419915050565b600019851415614252576080810151604082015261425a565b604081018590525b614268878260400151614aaf565b60e08201819052608082015161427d91614994565b60a083018190526020830182600381111561429457fe5b600381111561429f57fe5b90525060009050816020015160038111156142b657fe5b146142f25760405162461bcd60e51b815260040180806020018281038252603a815260200180616872603a913960400191505060405180910390fd5b614302600d548260e00151614994565b60c083018190526020830182600381111561431957fe5b600381111561432457fe5b905250600090508160200151600381111561433b57fe5b146143775760405162461bcd60e51b81526004018080602001828103825260318152602001806168f56031913960400191505060405180910390fd5b60a080820180516001600160a01b03808a16600081815260146020908152604091829020948555600c5460019095019490945560c0870151600d81905560e088015195518251948f16855294840192909252828101949094526060820192909252608081019190915290517f1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1929181900390910190a160e00151600093509150505b935093915050565b600073a731585ab05fc9f83555cf9bff8f58ee94e18f856001600160a01b031663dd86fea16040518163ffffffff1660e01b815260040160206040518083038186803b158015611f8c57600080fd5b60008060008061448087876149b7565b9092509050600082600381111561449357fe5b146144a45750915060009050614419565b6144ae8186614994565b935093505050935093915050565b60006144c661661e565b6000806144db86670de0b6b3a7640000615443565b909250905060008260038111156144ee57fe5b1461450d57506040805160208101909152600081529092509050613196565b60008061451a8388615482565b9092509050600082600381111561452d57fe5b1461454f57506040805160208101909152600081529094509250613196915050565b604080516020810190915290815260009890975095505050505050565b60165460175460185460408051634fb3c66560e11b815290516001600160a01b039485169493841693909216918391639f678cca9160048083019260209291908290030181600087803b1580156145c257600080fd5b505af11580156145d6573d6000803e3d6000fd5b505050506040513d60208110156145ec57600080fd5b5050604080516305f5d64360e11b815230600482015290516000916001600160a01b03851691630bebac8691602480820192602092909190829003018186803b15801561463857600080fd5b505afa15801561464c573d6000803e3d6000fd5b505050506040513d602081101561466257600080fd5b505160408051637f8661a160e01b81526004810183905290519192506001600160a01b03851691637f8661a19160248082019260009290919082900301818387803b1580156146b057600080fd5b505af11580156146c4573d6000803e3d6000fd5b505060408051633612d9a360e11b81523060048201529051600093506001600160a01b0386169250636c25b34691602480820192602092909190829003018186803b15801561471257600080fd5b505afa158015614726573d6000803e3d6000fd5b505050506040513d602081101561473c57600080fd5b50516040805163ef693bed60e01b81523060048201526b033b2e3c9fd0803ce80000008304602482015290519192506001600160a01b0387169163ef693bed9160448082019260009290919082900301818387803b15801561479d57600080fd5b505af11580156147b1573d6000803e3d6000fd5b505050505050505050565b606060006060856001600160a01b0316856040518082805190602001908083835b602083106147fc5780518252601f1990920191602091820191016147dd565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461485e576040519150601f19603f3d011682016040523d82523d6000602084013e614863565b606091505b5091509150816149025780511561487d5780518082602001fd5b8360405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156148c75781810151838201526020016148af565b50505050905090810190601f1680156148f45780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b95945050505050565b60007f45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa084601181111561493a57fe5b84606381111561494657fe5b604080519283526020830191909152818101859052519081900360600190a1600384601181111561497357fe5b146149895783601181111561498457fe5b61187f565b506103e80192915050565b6000808383116149ab575060009050818303613196565b50600390506000613196565b6000808383018481106149cf57600092509050613196565b506002915060009050613196565b60006149e761661e565b6000806149f8866000015186615443565b90925090506000826003811115614a0b57fe5b14614a2a57506040805160208101909152600081529092509050613196565b60408051602081019091529081526000969095509350505050565b51670de0b6b3a7640000900490565b6000811580614a6f57505080820282828281614a6c57fe5b04145b611152576040805162461bcd60e51b815260206004820152600c60248201526b6d756c2d6f766572666c6f7760a01b604482015290519081900360640190fd5b601554604080516323b872dd60e01b81526001600160a01b038581166004830152306024830152604482018590529151600093929092169182916323b872dd91606480830192602092919082900301818887803b158015614b0f57600080fd5b505af1158015614b23573d6000803e3d6000fd5b505050506040513d6020811015614b3957600080fd5b5051614b765760405162461bcd60e51b81526004018080602001828103825260248152602001806169596024913960400191505060405180910390fd5b601654601554601754601854604080516370a0823160e01b8152306004820181905291516001600160a01b03968716969586169594851694909316928692633b4da69f92909187916370a08231916024808301926020929190829003018186803b158015614be357600080fd5b505afa158015614bf7573d6000803e3d6000fd5b505050506040513d6020811015614c0d57600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b039093166004840152602483019190915251604480830192600092919082900301818387803b158015614c5d57600080fd5b505af1158015614c71573d6000803e3d6000fd5b505060408051633612d9a360e11b81523060048201529051600093506001600160a01b0385169250636c25b34691602480820192602092909190829003018186803b158015614cbf57600080fd5b505afa158015614cd3573d6000803e3d6000fd5b505050506040513d6020811015614ce957600080fd5b50516040805163324abb3160e21b815290519192506000916001600160a01b0386169163c92aecc4916004808301926020929190829003018186803b158015614d3157600080fd5b505afa158015614d45573d6000803e3d6000fd5b505050506040513d6020811015614d5b57600080fd5b50518281614d6557fe5b049050836001600160a01b031663049878f3826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015614dae57600080fd5b505af1158015614dc2573d6000803e3d6000fd5b509a9c9b505050505050505050505050565b6000611ca78383604051806040016040528060158152602001747375627472616374696f6e20756e646572666c6f7760581b815250616315565b6016546017546040805163324abb3160e21b815290516001600160a01b039384169390921691600091614eb391849163c92aecc4916004808301926020929190829003018186803b158015614e6257600080fd5b505afa158015614e76573d6000803e3d6000fd5b505050506040513d6020811015614e8c57600080fd5b5051614ea4866b033b2e3c9fd0803ce8000000614a54565b81614eab57fe5b04600161636f565b9050816001600160a01b0316637f8661a1826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015614efb57600080fd5b505af1158015614f0f573d6000803e3d6000fd5b50505050826001600160a01b031663ef693bed86866040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561479d57600080fd5b6000821580614f80575081155b614fbb5760405162461bcd60e51b81526004018080602001828103825260348152602001806169b26034913960400191505060405180910390fd5b614fc36166c4565b614fcb612a01565b6040830181905260208301826003811115614fe257fe5b6003811115614fed57fe5b905250600090508160200151600381111561500457fe5b14615028576150206009602e83602001516003811115613cdd57fe5b915050611ca7565b83156150a957606081018490526040805160208101825290820151815261504f9085613149565b608083018190526020830182600381111561506657fe5b600381111561507157fe5b905250600090508160200151600381111561508857fe5b146150a4576150206009602c83602001516003811115613cdd57fe5b615122565b6150c583604051806020016040528084604001518152506163b6565b60608301819052602083018260038111156150dc57fe5b60038111156150e757fe5b90525060009050816020015160038111156150fe57fe5b1461511a576150206009602d83602001516003811115613cdd57fe5b608081018390525b60055460608201516040805163eabe7d9160e01b81523060048201526001600160a01b03898116602483015260448201939093529051600093929092169163eabe7d919160648082019260209290919082900301818787803b15801561518757600080fd5b505af115801561519b573d6000803e3d6000fd5b505050506040513d60208110156151b157600080fd5b5051905080156151d1576151c86003602b8361490b565b92505050611ca7565b6151d96123e5565b600b54146151ed576151c8600a602f6135ca565b6151fd6011548360600151614994565b60a084018190526020840182600381111561521457fe5b600381111561521f57fe5b905250600090508260200151600381111561523657fe5b14615252576151c86009603184602001516003811115613cdd57fe5b6001600160a01b038616600090815260126020526040902054606083015161527a9190614994565b60c084018190526020840182600381111561529157fe5b600381111561529c57fe5b90525060009050826020015160038111156152b357fe5b146152cf576151c86009603084602001516003811115613cdd57fe5b81608001516152dc61319d565b10156152ee576151c8600e60326135ca565b60a082015160115560c08201516001600160a01b0387166000908152601260205260409020556080820151615324908790614e0e565b6060820151604080519182525130916001600160a01b038916916000805160206168d58339815191529181900360200190a36080820151606080840151604080516001600160a01b038b168152602081019490945283810191909152517fe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a9299281900390910190a160055460808301516060840151604080516351dff98960e01b81523060048201526001600160a01b038b81166024830152604482019490945260648101929092525191909216916351dff98991608480830192600092919082900301818387803b15801561541857600080fd5b505af115801561542c573d6000803e3d6000fd5b5060009250615439915050565b9695505050505050565b6000808361545657506000905080613196565b8383028385828161546357fe5b041461547757506002915060009050613196565b600092509050613196565b600080826154965750600190506000613196565b60008385816154a157fe5b04915091509250929050565b60055460408051634ef4c3e160e01b81523060048201526001600160a01b03858116602483015260448201859052915160009384938493911691634ef4c3e19160648082019260209290919082900301818787803b15801561550e57600080fd5b505af1158015615522573d6000803e3d6000fd5b505050506040513d602081101561553857600080fd5b50519050801561555c5761554f600360218361490b565b9250600091506131969050565b6155646123e5565b600b54146155785761554f600a60246135ca565b6155806166c4565b615588612a01565b604083018190526020830182600381111561559f57fe5b60038111156155aa57fe5b90525060009050816020015160038111156155c157fe5b146155eb576155dd6009602383602001516003811115613cdd57fe5b935060009250613196915050565b6155f58686614aaf565b60c082018190526040805160208101825290830151815261561691906163b6565b606083018190526020830182600381111561562d57fe5b600381111561563857fe5b905250600090508160200151600381111561564f57fe5b146156a1576040805162461bcd60e51b815260206004820181905260248201527f4d494e545f45584348414e47455f43414c43554c4154494f4e5f4641494c4544604482015290519081900360640190fd5b6156b16011548260600151613b59565b60808201526001600160a01b03861660009081526012602052604090205460608201516156de9190613b59565b60a0820181905260808201516011556001600160a01b0387166000818152601260209081526040918290209390935560c084015160608086015183519485529484019190915282820193909352517f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f929181900390910190a1606081015160408051918252516001600160a01b0388169130916000805160206168d58339815191529181900360200190a360055460c08201516060830151604080516341c728b960e01b81523060048201526001600160a01b038b81166024830152604482019490945260648101929092525191909216916341c728b991608480830192600092919082900301818387803b1580156157f657600080fd5b505af115801561580a573d6000803e3d6000fd5b5060009250615817915050565b8160c001519350935050509250929050565b600061583361661e565b61584b604051806020016040528086815250846163cd565b9050600061585b82600d54615abe565b9050600061586b82600d54613b59565b9050600061588c6040518060200160405280600a5481525084600e546163f7565b905060006158ad6040518060200160405280600954815250856010546163f7565b905060006158ce604051806020016040528060085481525086600f546163f7565b905060006158e187600c54600c546163f7565b600b8d9055600c819055600d869055600e8590556010849055600f839055604080518d8152602081018990528082018390526060810188905290519192507f4dec04e750ca11537cabcd8a9eab06494de08da3735bc8871cd41250e190bc04919081900360800190a16006546040805160248082018e905282518083039091018152604490910182526020810180516001600160e01b0316635efd023360e11b178152915181516001600160a01b0390941693919290918291908083835b602083106159be5780518252601f19909201916020918201910161599f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114615a20576040519150601f19603f3d011682016040523d82523d6000602084013e615a25565b606091505b5060009150615a319050565b9c9b505050505050505050505050565b600083830182858210156117535760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156148c75781810151838201526020016148af565b6000670de0b6b3a7640000615aaf84846000015161641f565b81615ab657fe5b049392505050565b6000615ac861661e565b615ad284846163cd565b905061187f81614a45565b6005546040805163368f515360e21b81523060048201526001600160a01b0385811660248301526044820185905291516000938493169163da3d454c91606480830192602092919082900301818787803b158015615b3a57600080fd5b505af1158015615b4e573d6000803e3d6000fd5b505050506040513d6020811015615b6457600080fd5b505190508015615b8357615b7b600360108361490b565b915050611152565b615b8b6123e5565b600b5414615b9f57615b7b600a600c6135ca565b6000615ba961319d565b905083811015615bc857615bbf600e600b6135ca565b92505050611152565b615bd0616702565b615bd98661373c565b6020830181905282826003811115615bed57fe5b6003811115615bf857fe5b9052506000905081516003811115615c0c57fe5b14615c3157615c2760098083600001516003811115613cdd57fe5b9350505050611152565b615c3f8160200151866149b7565b6040830181905282826003811115615c5357fe5b6003811115615c5e57fe5b9052506000905081516003811115615c7257fe5b14615c8e57615c276009600e83600001516003811115613cdd57fe5b6005546040808301518151631de6c8a560e21b8152306004820152602481019190915290516001600160a01b039092169163779b2294916044808201926020929091908290030181600087803b158015615ce757600080fd5b505af1158015615cfb573d6000803e3d6000fd5b505050506040513d6020811015615d1157600080fd5b505192508215615d2857615c27600360108561490b565b615d34600d54866149b7565b6060830181905282826003811115615d4857fe5b6003811115615d5357fe5b9052506000905081516003811115615d6757fe5b14615d8357615c276009600d83600001516003811115613cdd57fe5b6040808201516001600160a01b0388166000908152601460205291909120908155600c546001909101556060810151600d55615dbf8686614e0e565b60408082015160608084015183516001600160a01b038b168152602081018a9052808501939093529082015290517f13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab809181900360800190a160009695505050505050565b60055460408051632fe3f38f60e11b81523060048201526001600160a01b0384811660248301528781166044830152868116606483015260848201869052915160009384938493911691635fc7e71e9160a48082019260209290919082900301818787803b158015615e9457600080fd5b505af1158015615ea8573d6000803e3d6000fd5b505050506040513d6020811015615ebe57600080fd5b505190508015615ee257615ed5600360148361490b565b92506000915061630c9050565b615eea6123e5565b600b5414615efe57615ed5600a60186135ca565b615f066123e5565b846001600160a01b0316636c540baf6040518163ffffffff1660e01b815260040160206040518083038186803b158015615f3f57600080fd5b505afa158015615f53573d6000803e3d6000fd5b505050506040513d6020811015615f6957600080fd5b505114615f7c57615ed5600a60136135ca565b866001600160a01b0316866001600160a01b03161415615fa257615ed5600660196135ca565b84615fb357615ed5600760176135ca565b600019851415615fc957615ed5600760166135ca565b600080615fd78989896140d1565b9092509050811561600757615ff8826011811115615ff157fe5b601a6135ca565b94506000935061630c92505050565b6005546040805163c488847b60e01b81523060048201526001600160a01b038981166024830152604482018590528251600094859492169263c488847b926064808301939192829003018186803b15801561606157600080fd5b505afa158015616075573d6000803e3d6000fd5b505050506040513d604081101561608b57600080fd5b508051602090910151909250905081156160d65760405162461bcd60e51b81526004018080602001828103825260338152602001806169266033913960400191505060405180910390fd5b80886001600160a01b03166370a082318c6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561612d57600080fd5b505afa158015616141573d6000803e3d6000fd5b505050506040513d602081101561615757600080fd5b505110156161ac576040805162461bcd60e51b815260206004820152601860248201527f4c49515549444154455f5345495a455f544f4f5f4d5543480000000000000000604482015290519081900360640190fd5b60006001600160a01b0389163014156161d2576161cb308d8d85613b8f565b905061625c565b6040805163b2a02ff160e01b81526001600160a01b038e811660048301528d81166024830152604482018590529151918b169163b2a02ff1916064808201926020929091908290030181600087803b15801561622d57600080fd5b505af1158015616241573d6000803e3d6000fd5b505050506040513d602081101561625757600080fd5b505190505b80156162a6576040805162461bcd60e51b81526020600482015260146024820152731d1bdad95b881cd95a5e9d5c994819985a5b195960621b604482015290519081900360640190fd5b604080516001600160a01b03808f168252808e1660208301528183018790528b1660608201526080810184905290517f298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb529181900360a00190a16000975092955050505050505b94509492505050565b600081848411156163675760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156148c75781810151838201526020016148af565b505050900390565b80820182811015611152576040805162461bcd60e51b815260206004820152600c60248201526b6164642d6f766572666c6f7760a01b604482015290519081900360640190fd5b60008060006163c361661e565b6131608686616461565b6163d561661e565b60405180602001604052806163ee85600001518561641f565b90529392505050565b600061640161661e565b61640b85856163cd565b905061490261641982614a45565b84613b59565b6000611ca783836040518060400160405280601781526020017f6d756c7469706c69636174696f6e206f766572666c6f770000000000000000008152506164c0565b600061646b61661e565b600080616480670de0b6b3a764000087615443565b9092509050600082600381111561649357fe5b146164b257506040805160208101909152600081529092509050613196565b61318f8186600001516144bc565b60008315806164cd575082155b156164da57506000611ca7565b838302838582816164e757fe5b041483906117535760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156148c75781810151838201526020016148af565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061657757805160ff19168380011785556165a4565b828001600101855582156165a4579182015b828111156165a4578251825591602001919060010190616589565b50611ad492915061672b565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106165f15782800160ff198235161785556165a4565b828001600101855582156165a4579182015b828111156165a4578235825591602001919060010190616603565b6040518060200160405280600081525090565b604080516101208101909152806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040805161010081019091528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040805160e0810190915280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b604080516080810190915280600081526020016000815260200160008152602001600081525090565b61150491905b80821115611ad4576000815560010161673156fe6d61726b6574206d6179206f6e6c7920626520696e697469616c697a6564206f6e63656f6e6c792073656c66206f722061646d696e206d61792063616c6c205f6265636f6d65496d706c656d656e746174696f6e696e697469616c2065786368616e67652072617465206d7573742062652067726561746572207468616e207a65726f2e6f6e6c79207468652061646d696e206d6179207365742074686520636f6d702d6c696b652064656c656761746573657474696e6720696e7465726573742072617465206d6f64656c206661696c6564626f72726f7742616c616e636553746f7265643a20626f72726f7742616c616e636553746f726564496e7465726e616c206661696c6564444149206d757374206265207468652073616d6520617320756e6465726c79696e6752455041595f424f52524f575f4e45575f4143434f554e545f424f52524f575f42414c414e43455f43414c43554c4154494f4e5f4641494c45446f6e6c7920467573652061646d696e206d617920696e697469616c697a6520746865206d61726b6574ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef52455041595f424f52524f575f4e45575f544f54414c5f42414c414e43455f43414c43554c4154494f4e5f4641494c45444c49515549444154455f434f4d5054524f4c4c45525f43414c43554c4154455f414d4f554e545f5345495a455f4641494c4544756e6578706563746564204549502d3230207472616e7366657220696e2072657475726e65786368616e67655261746553746f7265643a2065786368616e67655261746553746f726564496e7465726e616c206661696c65646f6e65206f662072656465656d546f6b656e73496e206f722072656465656d416d6f756e74496e206d757374206265207a65726fa265627a7a72315820410b4f3e79d8133f174ebaa76074a0ac03c860eb7ecad951abd968e12fbd775e64736f6c63430005110032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x397 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8A8DF2E6 GT PUSH2 0x1DC JUMPI DUP1 PUSH4 0xAE9D70B0 GT PUSH2 0x102 JUMPI DUP1 PUSH4 0xDC028AB1 GT PUSH2 0xA0 JUMPI DUP1 PUSH4 0xF5E3C462 GT PUSH2 0x6F JUMPI DUP1 PUSH4 0xF5E3C462 EQ PUSH2 0xFC9 JUMPI DUP1 PUSH4 0xF8F9DA28 EQ PUSH2 0x100C JUMPI DUP1 PUSH4 0xFCA7820B EQ PUSH2 0x1021 JUMPI DUP1 PUSH4 0xFE9C44AE EQ PUSH2 0x104B JUMPI PUSH2 0x397 JUMP JUMPDEST DUP1 PUSH4 0xDC028AB1 EQ PUSH2 0xF31 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0xF46 JUMPI DUP1 PUSH4 0xF2B3ABBD EQ PUSH2 0xF81 JUMPI DUP1 PUSH4 0xF3FDB15A EQ PUSH2 0xFB4 JUMPI PUSH2 0x397 JUMP JUMPDEST DUP1 PUSH4 0xC37F68E2 GT PUSH2 0xDC JUMPI DUP1 PUSH4 0xC37F68E2 EQ PUSH2 0xE6F JUMPI DUP1 PUSH4 0xC5EBEAEC EQ PUSH2 0xEC8 JUMPI DUP1 PUSH4 0xDB006A75 EQ PUSH2 0xEF2 JUMPI DUP1 PUSH4 0xDBFE7C19 EQ PUSH2 0xF1C JUMPI PUSH2 0x397 JUMP JUMPDEST DUP1 PUSH4 0xAE9D70B0 EQ PUSH2 0xE02 JUMPI DUP1 PUSH4 0xB2A02FF1 EQ PUSH2 0xE17 JUMPI DUP1 PUSH4 0xBD6D894D EQ PUSH2 0xE5A JUMPI PUSH2 0x397 JUMP JUMPDEST DUP1 PUSH4 0xA03DCE8D GT PUSH2 0x17A JUMPI DUP1 PUSH4 0xA7B820DF GT PUSH2 0x149 JUMPI DUP1 PUSH4 0xA7B820DF EQ PUSH2 0xD75 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0xD9F JUMPI DUP1 PUSH4 0xAA5AF0FD EQ PUSH2 0xDD8 JUMPI DUP1 PUSH4 0xAC784DDC EQ PUSH2 0xDED JUMPI PUSH2 0x397 JUMP JUMPDEST DUP1 PUSH4 0xA03DCE8D EQ PUSH2 0xBB0 JUMPI DUP1 PUSH4 0xA0712D68 EQ PUSH2 0xBDA JUMPI DUP1 PUSH4 0xA0B0D289 EQ PUSH2 0xC04 JUMPI DUP1 PUSH4 0xA6AFED95 EQ PUSH2 0xD60 JUMPI PUSH2 0x397 JUMP JUMPDEST DUP1 PUSH4 0x8F840DDD GT PUSH2 0x1B6 JUMPI DUP1 PUSH4 0x8F840DDD EQ PUSH2 0xB29 JUMPI DUP1 PUSH4 0x91DD36C6 EQ PUSH2 0xB3E JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0xB68 JUMPI DUP1 PUSH4 0x95DD9193 EQ PUSH2 0xB7D JUMPI PUSH2 0x397 JUMP JUMPDEST DUP1 PUSH4 0x8A8DF2E6 EQ PUSH2 0xAEA JUMPI DUP1 PUSH4 0x8D02D9A1 EQ PUSH2 0xAFF JUMPI DUP1 PUSH4 0x8D925CCD EQ PUSH2 0xB14 JUMPI PUSH2 0x397 JUMP JUMPDEST DUP1 PUSH4 0x47BD3718 GT PUSH2 0x2C1 JUMPI DUP1 PUSH4 0x66CED602 GT PUSH2 0x25F JUMPI DUP1 PUSH4 0x70A08231 GT PUSH2 0x22E JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0xA45 JUMPI DUP1 PUSH4 0x73ACEE98 EQ PUSH2 0xA78 JUMPI DUP1 PUSH4 0x7F1E06BE EQ PUSH2 0xA8D JUMPI DUP1 PUSH4 0x852A12E3 EQ PUSH2 0xAC0 JUMPI PUSH2 0x397 JUMP JUMPDEST DUP1 PUSH4 0x66CED602 EQ PUSH2 0x9F1 JUMPI DUP1 PUSH4 0x6752E702 EQ PUSH2 0xA06 JUMPI DUP1 PUSH4 0x6C540BAF EQ PUSH2 0xA1B JUMPI DUP1 PUSH4 0x6F307DC3 EQ PUSH2 0xA30 JUMPI PUSH2 0x397 JUMP JUMPDEST DUP1 PUSH4 0x5C60DA1B GT PUSH2 0x29B JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x96C JUMPI DUP1 PUSH4 0x5FE3B567 EQ PUSH2 0x99D JUMPI DUP1 PUSH4 0x601A0BF1 EQ PUSH2 0x9B2 JUMPI DUP1 PUSH4 0x61FEACFF EQ PUSH2 0x9DC JUMPI PUSH2 0x397 JUMP JUMPDEST DUP1 PUSH4 0x47BD3718 EQ PUSH2 0x84A JUMPI DUP1 PUSH4 0x50D85B73 EQ PUSH2 0x85F JUMPI DUP1 PUSH4 0x56E67728 EQ PUSH2 0x8F1 JUMPI PUSH2 0x397 JUMP JUMPDEST DUP1 PUSH4 0x182DF0F5 GT PUSH2 0x339 JUMPI DUP1 PUSH4 0x313CE567 GT PUSH2 0x308 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x70C JUMPI DUP1 PUSH4 0x34154D4C EQ PUSH2 0x737 JUMPI DUP1 PUSH4 0x3AF9E669 EQ PUSH2 0x802 JUMPI DUP1 PUSH4 0x3B1D21A2 EQ PUSH2 0x835 JUMPI PUSH2 0x397 JUMP JUMPDEST DUP1 PUSH4 0x182DF0F5 EQ PUSH2 0x673 JUMPI DUP1 PUSH4 0x1DB78944 EQ PUSH2 0x688 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x690 JUMPI DUP1 PUSH4 0x2608F818 EQ PUSH2 0x6D3 JUMPI PUSH2 0x397 JUMP JUMPDEST DUP1 PUSH4 0xF8855E8 GT PUSH2 0x375 JUMPI DUP1 PUSH4 0xF8855E8 EQ PUSH2 0x4AF JUMPI DUP1 PUSH4 0x173B9904 EQ PUSH2 0x616 JUMPI DUP1 PUSH4 0x17BFDFBC EQ PUSH2 0x62B JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x65E JUMPI PUSH2 0x397 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x39C JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x426 JUMPI DUP1 PUSH4 0xE752702 EQ PUSH2 0x473 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3B1 PUSH2 0x1060 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3EB JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3D3 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x418 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x432 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x45F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x449 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x10EB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x47F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x49D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x496 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1158 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x614 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x4D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x50D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x51F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x540 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x592 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x5A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x5C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP POP PUSH1 0xFF DUP4 CALLDATALOAD AND SWAP4 POP POP POP PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x116E JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x622 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x49D PUSH2 0x141C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x637 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x49D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x64E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1422 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x66A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x49D PUSH2 0x149E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x67F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x49D PUSH2 0x14A4 JUMP JUMPDEST PUSH2 0x614 PUSH2 0x1507 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x69C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x45F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x6B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x1718 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x49D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x6F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1746 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x718 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x721 PUSH2 0x175C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x743 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x614 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x75A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x774 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x786 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x7A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x7C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x7D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x7F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1765 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x80E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x49D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x825 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x17D1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x841 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x49D PUSH2 0x1887 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x856 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x49D PUSH2 0x1896 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x86B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x614 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x882 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x8B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x8C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x8E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x189C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x614 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x914 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x92E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x940 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x961 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1925 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x978 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x981 PUSH2 0x19A6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x981 PUSH2 0x19B5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x49D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x19C4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x49D PUSH2 0x1A15 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x981 PUSH2 0x1A1B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x49D PUSH2 0x1A2A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x49D PUSH2 0x1A35 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x981 PUSH2 0x1A3B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x49D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA68 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1A4A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA84 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x49D PUSH2 0x1A65 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA99 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x614 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAB0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1AD8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xACC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x49D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAE3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1B7D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAF6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x981 PUSH2 0x1B88 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB0B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x49D PUSH2 0x1B97 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB20 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x981 PUSH2 0x1B9D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB35 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x49D PUSH2 0x1BAC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB4A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x49D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB61 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1BB2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB74 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3B1 PUSH2 0x1BEF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x49D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xBA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1C4A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBBC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x49D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xBD3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1CAE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBE6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x49D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xBFD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1CEB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x614 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0xC27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP3 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP1 SWAP3 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xC62 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xC74 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0xC95 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xCE7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xCF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0xD1A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP POP DUP3 CALLDATALOAD SWAP4 POP POP POP PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1CF7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD6C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x49D PUSH2 0x1E10 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x49D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD98 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1E8B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xDAB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x45F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xDC2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1EC8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xDE4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x49D PUSH2 0x1EF5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xDF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x45F PUSH2 0x1EFB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE0E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x49D PUSH2 0x1F00 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE23 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x49D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xE3A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x1FBD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x49D PUSH2 0x1FE1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE7B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xEA2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE92 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2055 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP5 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP4 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xED4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x49D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xEEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x20EA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEFE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x49D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x20F5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF28 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x49D PUSH2 0x2100 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF3D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x49D PUSH2 0x2106 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF52 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x49D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xF69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x210C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x49D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xFA4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2137 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xFC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x981 PUSH2 0x2171 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xFD5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x49D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xFEC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 SWAP1 SWAP2 ADD CALLDATALOAD AND PUSH2 0x2180 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1018 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x49D PUSH2 0x2198 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x102D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x49D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1044 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x220D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1057 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x45F PUSH2 0x224A JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP4 AND DUP5 SWAP1 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x10E3 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x10B8 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x10E3 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x10C6 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP7 SWAP1 SSTORE DUP2 MLOAD DUP7 DUP2 MSTORE SWAP2 MLOAD SWAP4 SWAP5 SWAP4 SWAP1 SWAP3 DUP5 SWAP3 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1164 DUP4 PUSH2 0x224F JUMP JUMPDEST POP SWAP2 POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST CALLER PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 EQ PUSH2 0x11C0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x68AC PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xB SLOAD ISZERO DUP1 ISZERO PUSH2 0x11D0 JUMPI POP PUSH1 0xC SLOAD ISZERO JUMPDEST PUSH2 0x120B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x6746 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x7 DUP7 SWAP1 SSTORE DUP6 PUSH2 0x124C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x30 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x679A PUSH1 0x30 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1257 DUP10 PUSH2 0x22B2 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x12AC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x73657474696E6720636F6D7074726F6C6C6572206661696C6564000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x12B4 PUSH2 0x23E5 JUMP JUMPDEST PUSH1 0xB SSTORE PUSH8 0xDE0B6B3A7640000 PUSH1 0xC SSTORE PUSH2 0x12CC DUP9 PUSH2 0x23E9 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x130B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x67F7 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP6 MLOAD PUSH2 0x131E SWAP1 PUSH1 0x2 SWAP1 PUSH1 0x20 DUP10 ADD SWAP1 PUSH2 0x6536 JUMP JUMPDEST POP DUP5 MLOAD PUSH2 0x1332 SWAP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP9 ADD SWAP1 PUSH2 0x6536 JUMP JUMPDEST POP PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF DUP7 AND OR SWAP1 SSTORE PUSH2 0x134B DUP4 PUSH2 0x26EF JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x13A0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x73657474696E67207265736572766520666163746F72206661696C6564000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x13A9 DUP3 PUSH2 0x27A8 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x13FE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x73657474696E672061646D696E20666565206661696C65640000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF PUSH1 0xB0 SHL NOT AND PUSH1 0x1 PUSH1 0xB0 SHL OR SWAP1 SSTORE POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0xA SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x142E DUP2 PUSH2 0x28CD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1438 PUSH2 0x1E10 JUMP JUMPDEST EQ PUSH2 0x1483 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x1858D8DC9D59481A5B9D195C995CDD0819985A5B1959 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x148C DUP4 PUSH2 0x1C4A JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH2 0x1498 DUP2 PUSH2 0x2996 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x11 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x14B1 PUSH2 0x2A01 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x14C4 JUMPI INVALID JUMPDEST EQ PUSH2 0x1500 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x35 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x697D PUSH1 0x35 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP2 POP POP JUMPDEST SWAP1 JUMP JUMPDEST CALLER ADDRESS EQ DUP1 ISZERO SWAP1 PUSH2 0x158D JUMPI POP PUSH1 0x5 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 PUSH4 0xDD5CD22C 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 0x1560 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1574 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x158A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST ISZERO PUSH2 0x1716 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x45CC9705 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE MLOAD DUP3 SWAP2 PUSH1 0x60 SWAP2 PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 SWAP2 PUSH4 0x45CC9705 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 DUP8 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x15F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1608 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1631 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP1 DUP6 ADD DUP1 MLOAD SWAP2 MLOAD SWAP4 SWAP6 SWAP3 SWAP5 DUP4 ADD SWAP3 SWAP2 DUP5 PUSH1 0x1 PUSH1 0x20 SHL DUP3 GT ISZERO PUSH2 0x165B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x1670 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH2 0x1689 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x16B6 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x169E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x16E3 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE POP POP PUSH1 0x0 SLOAD SWAP4 SWAP7 POP SWAP2 SWAP5 POP SWAP3 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP2 AND EQ PUSH2 0x1712 JUMPI PUSH2 0x1712 DUP4 DUP4 DUP4 PUSH2 0x2AC1 JUMP JUMPDEST POP POP POP JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1724 DUP2 PUSH2 0x28CD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1732 CALLER DUP8 DUP8 DUP8 PUSH2 0x2CDD JUMP JUMPDEST EQ SWAP2 POP PUSH2 0x173E DUP2 PUSH2 0x2996 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1753 DUP5 DUP5 PUSH2 0x2F69 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x176D PUSH2 0x2FCE JUMP JUMPDEST PUSH2 0x17B1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x31B0B63632B9103737BA1030B236B4B7 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x17BD PUSH1 0x2 DUP6 DUP6 PUSH2 0x65B0 JUMP JUMPDEST POP PUSH2 0x17CA PUSH1 0x3 DUP4 DUP4 PUSH2 0x65B0 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x17DB PUSH2 0x661E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x17EE PUSH2 0x1FE1 JUMP JUMPDEST SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP SWAP1 DUP2 SWAP1 PUSH2 0x181A SWAP1 DUP5 SWAP1 PUSH2 0x3149 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x182D JUMPI INVALID JUMPDEST EQ PUSH2 0x187F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x62616C616E636520636F756C64206E6F742062652063616C63756C6174656400 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1891 PUSH2 0x319D JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0xD SLOAD DUP2 JUMP JUMPDEST PUSH2 0x18A4 PUSH2 0x2FCE JUMP JUMPDEST PUSH2 0x18DE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x10B0B236B4B7 PUSH1 0xD1 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x191F DUP5 DUP5 DUP5 DUP5 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x2AC1 SWAP3 POP POP POP JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST CALLER ADDRESS EQ DUP1 PUSH2 0x1936 JUMPI POP PUSH2 0x1936 PUSH2 0x2FCE JUMP JUMPDEST PUSH2 0x1971 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x6769 PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 DUP4 PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1984 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP4 POP PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD AND SWAP1 POP PUSH2 0x191F DUP3 DUP3 PUSH2 0x32AF JUMP JUMPDEST PUSH1 0x0 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 0x0 DUP1 PUSH2 0x19D0 DUP2 PUSH2 0x28CD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x19DA PUSH2 0x1E10 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1A00 JUMPI PUSH2 0x19F8 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x19F1 JUMPI INVALID JUMPDEST PUSH1 0x3B PUSH2 0x35CA JUMP JUMPDEST SWAP3 POP POP PUSH2 0x148F JUMP JUMPDEST PUSH2 0x1A09 DUP5 PUSH2 0x3630 JUMP JUMPDEST SWAP3 POP POP PUSH2 0x1498 DUP2 PUSH2 0x2996 JUMP JUMPDEST PUSH1 0xF SLOAD DUP2 JUMP JUMPDEST PUSH1 0x17 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH7 0x6379DA05B60000 DUP2 JUMP JUMPDEST PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH1 0x15 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1A71 DUP2 PUSH2 0x28CD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1A7B PUSH2 0x1E10 JUMP JUMPDEST EQ PUSH2 0x1AC6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x1858D8DC9D59481A5B9D195C995CDD0819985A5B1959 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0xD SLOAD SWAP2 POP PUSH2 0x1AD4 DUP2 PUSH2 0x2996 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0x1AE0 PUSH2 0x2FCE JUMP JUMPDEST PUSH2 0x1B1B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x67CA PUSH1 0x2D SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x15 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x17066A57 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x5C19A95C SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1B69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x17CA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1152 DUP3 PUSH2 0x36FC JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x18 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0xE SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1BBE DUP2 PUSH2 0x28CD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1BC8 PUSH2 0x1E10 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1BE6 JUMPI PUSH2 0x19F8 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x1BDF JUMPI INVALID JUMPDEST PUSH1 0x52 PUSH2 0x35CA JUMP JUMPDEST PUSH2 0x1A09 DUP5 PUSH2 0x27A8 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x10E3 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x10B8 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x10E3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1C58 DUP5 PUSH2 0x373C JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1C6B JUMPI INVALID JUMPDEST EQ PUSH2 0x1CA7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x37 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x6819 PUSH1 0x37 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1CBA DUP2 PUSH2 0x28CD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1CC4 PUSH2 0x1E10 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1CE2 JUMPI PUSH2 0x19F8 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x1CDB JUMPI INVALID JUMPDEST PUSH1 0x33 PUSH2 0x35CA JUMP JUMPDEST PUSH2 0x1A09 DUP5 PUSH2 0x37F0 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1164 DUP4 PUSH2 0x3871 JUMP JUMPDEST PUSH1 0x0 PUSH8 0x2C68AF0BB140000 SWAP1 POP PUSH1 0x0 DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x313CE567 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 0x1D3F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1D53 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1D69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH2 0x1D7D DUP9 DUP9 DUP5 DUP10 DUP10 DUP7 DUP11 DUP11 PUSH2 0x116E JUMP JUMPDEST PUSH1 0x15 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP2 DUP3 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x18160DDD PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP1 SWAP2 AND SWAP2 PUSH4 0x18160DDD SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1DD9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1DED JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1E03 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x17 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x4FB3C665 PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x9F678CCA 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 0x1E56 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1E6A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1E80 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1891 SWAP1 POP PUSH2 0x38B1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1E97 DUP2 PUSH2 0x28CD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1EA1 PUSH2 0x1E10 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1EBF JUMPI PUSH2 0x19F8 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x1EB8 JUMPI INVALID JUMPDEST PUSH1 0x37 PUSH2 0x35CA JUMP JUMPDEST PUSH2 0x1A09 DUP5 PUSH2 0x3A71 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1ED4 DUP2 PUSH2 0x28CD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1EE2 CALLER CALLER DUP8 DUP8 PUSH2 0x2CDD JUMP JUMPDEST EQ SWAP2 POP PUSH2 0x1EEE DUP2 PUSH2 0x2996 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xC SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xB8168816 PUSH2 0x1F1C PUSH2 0x319D JUMP JUMPDEST PUSH1 0xD SLOAD PUSH2 0x1F38 PUSH1 0xE SLOAD PUSH2 0x1F33 PUSH1 0xF SLOAD PUSH1 0x10 SLOAD PUSH2 0x3B59 JUMP JUMPDEST PUSH2 0x3B59 JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x9 SLOAD PUSH1 0xA SLOAD ADD ADD PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1FA0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1FB6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH2 0x1FCA DUP2 PUSH2 0x28CD JUMP JUMPDEST PUSH2 0x1FD6 CALLER DUP7 DUP7 DUP7 PUSH2 0x3B8F JUMP JUMPDEST SWAP2 POP PUSH2 0x173E DUP2 PUSH2 0x2996 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1FED DUP2 PUSH2 0x28CD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1FF7 PUSH2 0x1E10 JUMP JUMPDEST EQ PUSH2 0x2042 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x1858D8DC9D59481A5B9D195C995CDD0819985A5B1959 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x204A PUSH2 0x14A4 JUMP JUMPDEST SWAP2 POP PUSH2 0x1AD4 DUP2 PUSH2 0x2996 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP2 SWAP1 DUP2 SWAP1 DUP2 SWAP1 DUP2 DUP1 DUP1 PUSH2 0x2080 DUP10 PUSH2 0x373C JUMP JUMPDEST SWAP4 POP SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2092 JUMPI INVALID JUMPDEST EQ PUSH2 0x20B0 JUMPI PUSH1 0x9 JUMPDEST SWAP8 POP PUSH1 0x0 SWAP7 POP DUP7 SWAP6 POP DUP6 SWAP5 POP PUSH2 0x20E3 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x20B8 PUSH2 0x2A01 JUMP JUMPDEST SWAP3 POP SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x20CA JUMPI INVALID JUMPDEST EQ PUSH2 0x20D6 JUMPI PUSH1 0x9 PUSH2 0x209A JUMP JUMPDEST POP PUSH1 0x0 SWAP7 POP SWAP2 SWAP5 POP SWAP3 POP SWAP1 POP JUMPDEST SWAP2 SWAP4 POP SWAP2 SWAP4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1152 DUP3 PUSH2 0x3F6E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1152 DUP3 PUSH2 0x3FAC JUMP JUMPDEST PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x10 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2142 PUSH2 0x1E10 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x2168 JUMPI PUSH2 0x2160 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x2159 JUMPI INVALID JUMPDEST PUSH1 0x4B PUSH2 0x35CA JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1169 JUMP JUMPDEST PUSH2 0x1CA7 DUP4 PUSH2 0x23E9 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x218E DUP6 DUP6 DUP6 PUSH2 0x3FE5 JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x15F24053 PUSH2 0x21B4 PUSH2 0x319D JUMP JUMPDEST PUSH1 0xD SLOAD PUSH2 0x21CB PUSH1 0xE SLOAD PUSH2 0x1F33 PUSH1 0xF SLOAD PUSH1 0x10 SLOAD PUSH2 0x3B59 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2219 DUP2 PUSH2 0x28CD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2223 PUSH2 0x1E10 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x2241 JUMPI PUSH2 0x19F8 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x223A JUMPI INVALID JUMPDEST PUSH1 0x59 PUSH2 0x35CA JUMP JUMPDEST PUSH2 0x1A09 DUP5 PUSH2 0x26EF JUMP JUMPDEST PUSH1 0x1 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x225D DUP2 PUSH2 0x28CD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2267 PUSH2 0x1E10 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x2292 JUMPI PUSH2 0x2285 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x227E JUMPI INVALID JUMPDEST PUSH1 0x41 PUSH2 0x35CA JUMP JUMPDEST SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x22A3 SWAP1 POP JUMP JUMPDEST PUSH2 0x229D CALLER CALLER DUP8 PUSH2 0x40D1 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP JUMPDEST PUSH2 0x22AC DUP2 PUSH2 0x2996 JUMP JUMPDEST POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH3 0x7E3DD2 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 0x2305 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2319 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x232F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x2382 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6D61726B6572206D6574686F642072657475726E65642066616C736500000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP3 DUP5 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD PUSH32 0x7AC369DBD14FA5EA3F473ED67CC9D598964A77501540BA6751EB0B3DECF5870D SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x0 PUSH2 0x1CA7 JUMP JUMPDEST NUMBER SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x23F4 PUSH2 0x2FCE JUMP JUMPDEST PUSH2 0x2404 JUMPI PUSH2 0x2160 PUSH1 0x1 PUSH1 0x4D PUSH2 0x35CA JUMP JUMPDEST PUSH2 0x240C PUSH2 0x23E5 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x2420 JUMPI PUSH2 0x2160 PUSH1 0xA PUSH1 0x4C PUSH2 0x35CA JUMP JUMPDEST PUSH1 0x6 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x2191F92A 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 0x2471 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2485 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x249B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x24EE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6D61726B6572206D6574686F642072657475726E65642066616C736500000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP3 DUP5 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD PUSH32 0xEDFFC32E068C7C95DFD4BDFD5C4D939A084D6B11C4199EAC8436ED234D72F926 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0x2620 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x6CC1140B PUSH1 0xE1 SHL OR DUP2 MSTORE SWAP2 MLOAD DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP4 DUP3 SWAP2 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x25B5 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x2596 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2617 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 0x261C JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP POP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x742A137B PUSH1 0xE1 SHL OR DUP2 MSTORE SWAP2 MLOAD DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP4 DUP3 SWAP2 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x267C JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x265D JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x26DE 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 0x26E3 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP PUSH1 0x0 SWAP2 POP PUSH2 0x1CA7 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x26F9 PUSH2 0x2FCE JUMP JUMPDEST PUSH2 0x2710 JUMPI PUSH2 0x2709 PUSH1 0x1 PUSH1 0x5A PUSH2 0x35CA JUMP JUMPDEST SWAP1 POP PUSH2 0x1169 JUMP JUMPDEST PUSH2 0x2718 PUSH2 0x23E5 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x272C JUMPI PUSH2 0x2709 PUSH1 0xA PUSH1 0x5B PUSH2 0x35CA JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH2 0x274C PUSH2 0x2744 DUP5 PUSH1 0x8 SLOAD PUSH2 0x3B59 JUMP JUMPDEST PUSH1 0x9 SLOAD PUSH2 0x3B59 JUMP JUMPDEST GT ISZERO PUSH2 0x275E JUMPI PUSH2 0x2709 PUSH1 0x2 PUSH1 0x5C PUSH2 0x35CA JUMP JUMPDEST PUSH1 0xA DUP1 SLOAD SWAP1 DUP4 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP6 SWAP1 MSTORE DUP2 MLOAD PUSH32 0xAAA68312E2EA9D50E16AF5068410AB56E1A1FD06037B1A35664812C30F821460 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x0 PUSH2 0x1CA7 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27B2 PUSH2 0x23E5 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x27C6 JUMPI PUSH2 0x2709 PUSH1 0xA PUSH1 0x54 PUSH2 0x35CA JUMP JUMPDEST PUSH1 0x0 NOT DUP3 EQ ISZERO PUSH2 0x27D6 JUMPI PUSH1 0x8 SLOAD SWAP2 POP JUMPDEST PUSH1 0x0 PUSH2 0x27E0 PUSH2 0x4421 JUMP JUMPDEST SWAP1 POP PUSH8 0xDE0B6B3A7640000 PUSH2 0x2800 PUSH2 0x27FA PUSH1 0xA SLOAD DUP7 PUSH2 0x3B59 JUMP JUMPDEST DUP4 PUSH2 0x3B59 JUMP JUMPDEST GT ISZERO PUSH2 0x2812 JUMPI PUSH2 0x2160 PUSH1 0x2 PUSH1 0x55 PUSH2 0x35CA JUMP JUMPDEST DUP3 PUSH1 0x8 SLOAD EQ PUSH2 0x2878 JUMPI PUSH2 0x2823 PUSH2 0x2FCE JUMP JUMPDEST PUSH2 0x2833 JUMPI PUSH2 0x2160 PUSH1 0x1 PUSH1 0x53 PUSH2 0x35CA JUMP JUMPDEST PUSH1 0x8 DUP1 SLOAD SWAP1 DUP5 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP7 SWAP1 MSTORE DUP2 MLOAD PUSH32 0xCDD0B588250E1398549F79CFDB8217C186688822905D6715B0834EA1C865594A SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMPDEST DUP1 PUSH1 0x9 SLOAD EQ PUSH2 0x28C6 JUMPI PUSH1 0x9 DUP1 SLOAD SWAP1 DUP3 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP2 MLOAD PUSH32 0x92EEF861B6533B7D3417F39C2AD7B460EED4E88A32FA3604F30E718B7602E7DC SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMPDEST PUSH1 0x0 PUSH2 0x1CA7 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0xB0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2918 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xA PUSH1 0x24 DUP3 ADD MSTORE PUSH10 0x1C994B595B9D195C9959 PUSH1 0xB2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x2986 JUMPI PUSH1 0x5 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 PUSH4 0xC90C20B1 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x296D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2981 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF PUSH1 0xB0 SHL NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF PUSH1 0xB0 SHL NOT AND PUSH1 0x1 PUSH1 0xB0 SHL OR SWAP1 SSTORE DUP1 PUSH2 0x29FE JUMPI PUSH1 0x5 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 PUSH4 0x632E5142 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1B69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x11 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP1 PUSH2 0x2A1C JUMPI POP POP PUSH1 0x7 SLOAD PUSH1 0x0 SWAP2 POP PUSH2 0x2ABD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2A26 PUSH2 0x319D JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2A32 PUSH2 0x661E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2A54 DUP5 PUSH1 0xD SLOAD PUSH2 0x2A4F PUSH1 0xE SLOAD PUSH2 0x1F33 PUSH1 0xF SLOAD PUSH1 0x10 SLOAD PUSH2 0x3B59 JUMP JUMPDEST PUSH2 0x4470 JUMP JUMPDEST SWAP4 POP SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2A66 JUMPI INVALID JUMPDEST EQ PUSH2 0x2A7B JUMPI SWAP6 POP PUSH1 0x0 SWAP5 POP PUSH2 0x2ABD SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x2A85 DUP4 DUP7 PUSH2 0x44BC JUMP JUMPDEST SWAP3 POP SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2A97 JUMPI INVALID JUMPDEST EQ PUSH2 0x2AAC JUMPI SWAP6 POP PUSH1 0x0 SWAP5 POP PUSH2 0x2ABD SWAP4 POP POP POP POP JUMP JUMPDEST POP MLOAD PUSH1 0x0 SWAP6 POP SWAP4 POP PUSH2 0x2ABD SWAP3 POP POP POP JUMP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x38E6A073 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP2 DUP6 AND PUSH1 0x24 DUP4 ADD MSTORE DUP4 ISZERO ISZERO PUSH1 0x44 DUP4 ADD MSTORE MLOAD PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 SWAP2 PUSH4 0x71CD40E6 SWAP2 PUSH1 0x64 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2B2E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2B42 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2B58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x2B93 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x5 PUSH1 0x24 DUP3 ADD MSTORE PUSH5 0x85A5B5C1B PUSH1 0xDA SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 ISZERO PUSH2 0x2BA1 JUMPI PUSH2 0x2BA1 PUSH2 0x456C JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND OR DUP4 SSTORE PUSH1 0x40 MLOAD PUSH1 0x20 PUSH1 0x24 DUP3 ADD DUP2 DUP2 MSTORE DUP7 MLOAD PUSH1 0x44 DUP5 ADD MSTORE DUP7 MLOAD SWAP4 SWAP1 SWAP5 AND SWAP5 PUSH2 0x2C8E SWAP5 ADDRESS SWAP5 DUP9 SWAP5 SWAP2 SWAP4 DUP5 SWAP4 PUSH1 0x64 SWAP1 SWAP4 ADD SWAP3 SWAP1 DUP7 ADD SWAP2 SWAP1 DUP2 SWAP1 DUP5 SWAP1 DUP5 SWAP1 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2C0E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2BF6 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x2C3B JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xADCCEE5 PUSH1 0xE3 SHL OR SWAP1 MSTORE DUP2 MLOAD DUP1 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x7 DUP3 MSTORE PUSH7 0x216265636F6D65 PUSH1 0xC8 SHL SWAP1 DUP3 ADD MSTORE SWAP1 SWAP4 POP SWAP2 POP PUSH2 0x47BC SWAP1 POP JUMP JUMPDEST POP PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND DUP3 MSTORE SWAP1 SWAP3 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD PUSH32 0xD604DE94D45953F9138079EC1B82D533CB2160C906D1076D1F7ED54BEFBCA97A SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x17B9B84B PUSH1 0xE3 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP6 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 AND SWAP2 PUSH4 0xBDCDC258 SWAP2 PUSH1 0x84 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2D42 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2D56 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2D6C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x2D8B JUMPI PUSH2 0x2D83 PUSH1 0x3 PUSH1 0x5D DUP4 PUSH2 0x490B JUMP JUMPDEST SWAP2 POP POP PUSH2 0x187F JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x2DB1 JUMPI PUSH2 0x2D83 PUSH1 0x2 PUSH1 0x5E PUSH2 0x35CA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND SWAP1 DUP8 AND EQ ISZERO PUSH2 0x2DD0 JUMPI POP PUSH1 0x0 NOT PUSH2 0x2DF8 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP11 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x2E08 DUP6 DUP10 PUSH2 0x4994 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP PUSH1 0x0 DUP5 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2E1B JUMPI INVALID JUMPDEST EQ PUSH2 0x2E39 JUMPI PUSH2 0x2E2C PUSH1 0x9 PUSH1 0x5E PUSH2 0x35CA JUMP JUMPDEST SWAP7 POP POP POP POP POP POP POP PUSH2 0x187F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2E5C SWAP1 DUP10 PUSH2 0x4994 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP2 POP PUSH1 0x0 DUP5 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2E6F JUMPI INVALID JUMPDEST EQ PUSH2 0x2E80 JUMPI PUSH2 0x2E2C PUSH1 0x9 PUSH1 0x5F PUSH2 0x35CA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2EA3 SWAP1 DUP10 PUSH2 0x49B7 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP1 POP PUSH1 0x0 DUP5 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2EB6 JUMPI INVALID JUMPDEST EQ PUSH2 0x2EC7 JUMPI PUSH2 0x2E2C PUSH1 0x9 PUSH1 0x60 PUSH2 0x35CA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP6 SWAP1 SSTORE SWAP2 DUP12 AND DUP2 MSTORE KECCAK256 DUP2 SWAP1 SSTORE PUSH1 0x0 NOT DUP6 EQ PUSH2 0x2F1F JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP16 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP4 SWAP1 SSTORE JUMPDEST DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x68D5 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP11 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x0 SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x2F77 DUP2 PUSH2 0x28CD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2F81 PUSH2 0x1E10 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x2FAC JUMPI PUSH2 0x2F9F DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x2F98 JUMPI INVALID JUMPDEST PUSH1 0x40 PUSH2 0x35CA JUMP JUMPDEST SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x2FBD SWAP1 POP JUMP JUMPDEST PUSH2 0x2FB7 CALLER DUP8 DUP8 PUSH2 0x40D1 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP JUMPDEST PUSH2 0x2FC6 DUP2 PUSH2 0x2996 JUMP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x3E14691 PUSH1 0xE6 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 DUP3 SWAP2 PUSH4 0xF851A440 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3016 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x302A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3040 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ DUP1 ISZERO PUSH2 0x30BA JUMPI POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA755EC2 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 0x308D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x30A1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x30B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST DUP1 PUSH2 0x1500 JUMPI POP CALLER PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 EQ DUP1 ISZERO PUSH2 0x1500 JUMPI POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x2F1069BA 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 0x3117 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x312B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3141 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x3156 PUSH2 0x661E JUMP JUMPDEST PUSH2 0x3160 DUP7 DUP7 PUSH2 0x49DD JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3173 JUMPI INVALID JUMPDEST EQ PUSH2 0x3184 JUMPI POP SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH2 0x3196 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x318F DUP3 PUSH2 0x4A45 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x17 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x5F5D643 PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 DUP4 SWAP2 DUP4 SWAP2 PUSH4 0xBEBAC86 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x31EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3200 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3216 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x324ABB31 PUSH1 0xE2 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH12 0x33B2E3C9FD0803CE8000000 SWAP2 PUSH2 0x32A0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP2 PUSH4 0xC92AECC4 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x326E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3282 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3298 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP4 PUSH2 0x4A54 JUMP JUMPDEST DUP2 PUSH2 0x32A7 JUMPI INVALID JUMPDEST DIV SWAP3 POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 SWAP1 POP PUSH1 0x0 DUP3 SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xF4B9FA75 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x32F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x330A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3320 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x36569E77 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP2 PUSH4 0x36569E77 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 0x3369 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x337D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3393 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x15 SLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP2 AND EQ PUSH2 0x33E4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x6850 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x16 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP10 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND OR SWAP3 DUP4 SWAP1 SSTORE PUSH1 0x17 DUP1 SLOAD DUP10 DUP4 AND SWAP1 DUP5 AND OR SWAP1 SSTORE PUSH1 0x18 DUP1 SLOAD DUP6 DUP4 AND SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE SWAP3 DUP3 AND PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x0 NOT PUSH1 0x24 DUP5 ADD MSTORE MLOAD SWAP1 DUP5 AND SWAP2 PUSH4 0x95EA7B3 SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x346A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x347E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x17 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x28EC8BF1 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 DUP6 AND SWAP4 POP PUSH4 0xA3B22FC4 SWAP3 POP PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x34D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x34E4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x16 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x28EC8BF1 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 DUP6 AND SWAP4 POP PUSH4 0xA3B22FC4 SWAP3 POP PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3536 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x354A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x9F678CCA PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3589 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x359D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x35B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x35C1 SWAP1 POP ADDRESS PUSH1 0x0 PUSH2 0x4AAF JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x45B96FE442630264581B197E84BBADA861235052C5A1AADFFF9EA4E40A969AA0 DUP4 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x35F9 JUMPI INVALID JUMPDEST DUP4 PUSH1 0x63 DUP2 GT ISZERO PUSH2 0x3605 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 DUP3 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x1CA7 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x363B PUSH2 0x2FCE JUMP JUMPDEST PUSH2 0x364B JUMPI PUSH2 0x2160 PUSH1 0x1 PUSH1 0x3C PUSH2 0x35CA JUMP JUMPDEST PUSH2 0x3653 PUSH2 0x23E5 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x3667 JUMPI PUSH2 0x2160 PUSH1 0xA PUSH1 0x3E PUSH2 0x35CA JUMP JUMPDEST DUP3 PUSH2 0x3670 PUSH2 0x319D JUMP JUMPDEST LT ISZERO PUSH2 0x3682 JUMPI PUSH2 0x2160 PUSH1 0xE PUSH1 0x3D PUSH2 0x35CA JUMP JUMPDEST PUSH1 0xE SLOAD DUP4 GT ISZERO PUSH2 0x3698 JUMPI PUSH2 0x2160 PUSH1 0x2 PUSH1 0x3F PUSH2 0x35CA JUMP JUMPDEST PUSH2 0x36A4 PUSH1 0xE SLOAD DUP5 PUSH2 0x4DD4 JUMP JUMPDEST PUSH1 0xE DUP2 SWAP1 SSTORE SWAP1 POP PUSH2 0x36B5 CALLER DUP5 PUSH2 0x4E0E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP6 SWAP1 MSTORE DUP1 DUP3 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD PUSH32 0x3BAD0C59CF2F06E7314077049F48A93578CD16F5EF92329F1DAB1420A99C177E SWAP2 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 PUSH1 0x0 PUSH2 0x1CA7 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3708 DUP2 PUSH2 0x28CD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3712 PUSH2 0x1E10 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x3730 JUMPI PUSH2 0x19F8 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x3729 JUMPI INVALID JUMPDEST PUSH1 0x2A PUSH2 0x35CA JUMP JUMPDEST PUSH2 0x1A09 CALLER PUSH1 0x0 DUP7 PUSH2 0x4F73 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 PUSH2 0x3773 JUMPI POP PUSH1 0x0 SWAP5 POP DUP5 SWAP4 POP PUSH2 0x37EB SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x3783 DUP2 PUSH1 0x0 ADD SLOAD PUSH1 0xC SLOAD PUSH2 0x5443 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP PUSH1 0x0 DUP5 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3796 JUMPI INVALID JUMPDEST EQ PUSH2 0x37AB JUMPI POP SWAP2 SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x37EB SWAP2 POP POP JUMP JUMPDEST PUSH2 0x37B9 DUP4 DUP3 PUSH1 0x1 ADD SLOAD PUSH2 0x5482 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP2 POP PUSH1 0x0 DUP5 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x37CC JUMPI INVALID JUMPDEST EQ PUSH2 0x37E1 JUMPI POP SWAP2 SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x37EB SWAP2 POP POP JUMP JUMPDEST POP PUSH1 0x0 SWAP5 POP SWAP3 POP POP POP JUMPDEST SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x37FB PUSH2 0x23E5 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x380F JUMPI PUSH2 0x2160 PUSH1 0xA PUSH1 0x35 PUSH2 0x35CA JUMP JUMPDEST DUP3 PUSH2 0x3818 PUSH2 0x319D JUMP JUMPDEST LT ISZERO PUSH2 0x382A JUMPI PUSH2 0x2160 PUSH1 0xE PUSH1 0x34 PUSH2 0x35CA JUMP JUMPDEST PUSH1 0x10 SLOAD DUP4 GT ISZERO PUSH2 0x3840 JUMPI PUSH2 0x2160 PUSH1 0x2 PUSH1 0x36 PUSH2 0x35CA JUMP JUMPDEST PUSH2 0x384C PUSH1 0x10 SLOAD DUP5 PUSH2 0x4DD4 JUMP JUMPDEST PUSH1 0x10 DUP2 SWAP1 SSTORE SWAP1 POP PUSH2 0x28C6 PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 DUP5 PUSH2 0x4E0E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x387F DUP2 PUSH2 0x28CD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3889 PUSH2 0x1E10 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x38A7 JUMPI PUSH2 0x2285 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x38A0 JUMPI INVALID JUMPDEST PUSH1 0x20 PUSH2 0x35CA JUMP JUMPDEST PUSH2 0x229D CALLER DUP7 PUSH2 0x54AD JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x38BC PUSH2 0x23E5 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0xB SLOAD EQ ISZERO PUSH2 0x38D2 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x1504 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x38DC PUSH2 0x319D JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x6 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 PUSH4 0x15F24053 DUP4 PUSH1 0xD SLOAD PUSH2 0x391C PUSH1 0xE SLOAD PUSH2 0x1F33 PUSH1 0xF SLOAD PUSH1 0x10 SLOAD PUSH2 0x3B59 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x395E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3972 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3988 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH6 0x48C27395000 DUP2 GT ISZERO PUSH2 0x39E7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x626F72726F772072617465206973206162737572646C79206869676800000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x39F6 DUP6 PUSH1 0xB SLOAD PUSH2 0x4994 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3A09 JUMPI INVALID JUMPDEST EQ PUSH2 0x3A5B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x636F756C64206E6F742063616C63756C61746520626C6F636B2064656C746100 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x3A67 DUP6 DUP6 DUP6 DUP5 PUSH2 0x5829 JUMP JUMPDEST SWAP6 POP POP POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3A7C PUSH2 0x23E5 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x3A90 JUMPI PUSH2 0x2160 PUSH1 0xA PUSH1 0x39 PUSH2 0x35CA JUMP JUMPDEST DUP3 PUSH2 0x3A99 PUSH2 0x319D JUMP JUMPDEST LT ISZERO PUSH2 0x3AAB JUMPI PUSH2 0x2160 PUSH1 0xE PUSH1 0x38 PUSH2 0x35CA JUMP JUMPDEST PUSH1 0xF SLOAD DUP4 GT ISZERO PUSH2 0x3AC1 JUMPI PUSH2 0x2160 PUSH1 0x2 PUSH1 0x3A PUSH2 0x35CA JUMP JUMPDEST PUSH2 0x3ACD PUSH1 0xF SLOAD DUP5 PUSH2 0x4DD4 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0xF DUP2 SWAP1 SSTORE POP PUSH2 0x28C6 PUSH1 0x5 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 PUSH4 0xF851A440 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 0x3B27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3B3B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3B51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP5 PUSH2 0x4E0E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1CA7 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x11 DUP2 MSTORE PUSH1 0x20 ADD PUSH17 0x6164646974696F6E206F766572666C6F77 PUSH1 0x78 SHL DUP2 MSTORE POP PUSH2 0x5A41 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xD02F7351 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP7 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE DUP6 DUP2 AND PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x84 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 AND SWAP2 PUSH4 0xD02F7351 SWAP2 PUSH1 0xA4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3BFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3C10 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3C26 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x3C3D JUMPI PUSH2 0x2D83 PUSH1 0x3 PUSH1 0x1D DUP4 PUSH2 0x490B JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x3C63 JUMPI PUSH2 0x2D83 PUSH1 0x6 PUSH1 0x1E PUSH2 0x35CA JUMP JUMPDEST PUSH2 0x3C6B PUSH2 0x6631 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x3C8E SWAP1 DUP6 PUSH2 0x4994 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3CA2 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3CAD JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3CC1 JUMPI INVALID JUMPDEST EQ PUSH2 0x3CEB JUMPI PUSH2 0x3CE2 PUSH1 0x9 PUSH1 0x1C DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3CDD JUMPI INVALID JUMPDEST PUSH2 0x490B JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x187F JUMP JUMPDEST PUSH2 0x3D0A DUP5 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH7 0x6379DA05B60000 DUP2 MSTORE POP PUSH2 0x5A96 JUMP JUMPDEST PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x3D1C SWAP1 DUP6 SWAP1 PUSH2 0x4DD4 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x3D29 PUSH2 0x2A01 JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3D3D JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3D48 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3D5C JUMPI INVALID JUMPDEST EQ PUSH2 0x3DAE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x65786368616E67652072617465206D617468206572726F720000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x3DCE PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP4 PUSH1 0xC0 ADD MLOAD DUP2 MSTORE POP DUP3 PUSH1 0x80 ADD MLOAD PUSH2 0x5ABE JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xE SLOAD PUSH2 0x3DE1 SWAP2 PUSH2 0x3B59 JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD MSTORE PUSH1 0x11 SLOAD PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x3DF8 SWAP2 SWAP1 PUSH2 0x4DD4 JUMP JUMPDEST PUSH2 0x100 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x3E26 SWAP2 SWAP1 PUSH2 0x49B7 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3E3A JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3E45 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3E59 JUMPI INVALID JUMPDEST EQ PUSH2 0x3E75 JUMPI PUSH2 0x3CE2 PUSH1 0x9 PUSH1 0x1B DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3CDD JUMPI INVALID JUMPDEST PUSH1 0xE0 DUP2 ADD MLOAD PUSH1 0xE SSTORE PUSH2 0x100 DUP2 ADD MLOAD PUSH1 0x11 SSTORE PUSH1 0x20 DUP1 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x12 DUP6 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 DUP7 ADD MLOAD SWAP3 DUP12 AND DUP1 DUP3 MSTORE SWAP1 DUP5 SWAP1 KECCAK256 SWAP3 SWAP1 SWAP3 SSTORE PUSH1 0x60 DUP6 ADD MLOAD DUP4 MLOAD SWAP1 DUP2 MSTORE SWAP3 MLOAD SWAP2 SWAP4 SWAP1 SWAP3 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x68D5 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD ADDRESS SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x68D5 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0xE0 DUP3 ADD MLOAD PUSH1 0x40 DUP1 MLOAD ADDRESS DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP3 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE MLOAD PUSH32 0xA91E67C5EA634CD43A12C5A482724B03DE01E85CA68702A53D0C2F45CB7C1DC5 SWAP2 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 PUSH1 0x0 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3F7A DUP2 PUSH2 0x28CD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F84 PUSH2 0x1E10 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x3FA2 JUMPI PUSH2 0x19F8 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x3F9B JUMPI INVALID JUMPDEST PUSH1 0xA PUSH2 0x35CA JUMP JUMPDEST PUSH2 0x1A09 CALLER DUP6 PUSH2 0x5ADD JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3FB8 DUP2 PUSH2 0x28CD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3FC2 PUSH2 0x1E10 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x3FD9 JUMPI PUSH2 0x19F8 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x3729 JUMPI INVALID JUMPDEST PUSH2 0x1A09 CALLER DUP6 PUSH1 0x0 PUSH2 0x4F73 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x3FF3 DUP2 PUSH2 0x28CD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3FFD PUSH2 0x1E10 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x4028 JUMPI PUSH2 0x401B DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x4014 JUMPI INVALID JUMPDEST PUSH1 0x11 PUSH2 0x35CA JUMP JUMPDEST SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x40BF SWAP1 POP JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA6AFED95 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4063 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4077 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x408D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x40AD JUMPI PUSH2 0x401B DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x40A6 JUMPI INVALID JUMPDEST PUSH1 0x12 PUSH2 0x35CA JUMP JUMPDEST PUSH2 0x40B9 CALLER DUP9 DUP9 DUP9 PUSH2 0x5E23 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP JUMPDEST PUSH2 0x40C8 DUP2 PUSH2 0x2996 JUMP JUMPDEST POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x12004531 PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP6 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 DUP5 SWAP4 SWAP2 AND SWAP2 PUSH4 0x24008A62 SWAP2 PUSH1 0x84 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x413A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x414E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4164 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x4188 JUMPI PUSH2 0x417B PUSH1 0x3 PUSH1 0x43 DUP4 PUSH2 0x490B JUMP JUMPDEST SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH2 0x4419 SWAP1 POP JUMP JUMPDEST PUSH2 0x4190 PUSH2 0x23E5 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x41A4 JUMPI PUSH2 0x417B PUSH1 0xA PUSH1 0x44 PUSH2 0x35CA JUMP JUMPDEST PUSH2 0x41AC PUSH2 0x667E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x41D6 DUP7 PUSH2 0x373C JUMP JUMPDEST PUSH1 0x80 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x41ED JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x41F8 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x420F JUMPI INVALID JUMPDEST EQ PUSH2 0x4239 JUMPI PUSH2 0x422B PUSH1 0x9 PUSH1 0x42 DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3CDD JUMPI INVALID JUMPDEST SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x4419 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 NOT DUP6 EQ ISZERO PUSH2 0x4252 JUMPI PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x425A JUMP JUMPDEST PUSH1 0x40 DUP2 ADD DUP6 SWAP1 MSTORE JUMPDEST PUSH2 0x4268 DUP8 DUP3 PUSH1 0x40 ADD MLOAD PUSH2 0x4AAF JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x427D SWAP2 PUSH2 0x4994 JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4294 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x429F JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x42B6 JUMPI INVALID JUMPDEST EQ PUSH2 0x42F2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x6872 PUSH1 0x3A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x4302 PUSH1 0xD SLOAD DUP3 PUSH1 0xE0 ADD MLOAD PUSH2 0x4994 JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4319 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4324 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x433B JUMPI INVALID JUMPDEST EQ PUSH2 0x4377 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x68F5 PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xA0 DUP1 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP11 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 DUP6 SSTORE PUSH1 0xC SLOAD PUSH1 0x1 SWAP1 SWAP6 ADD SWAP5 SWAP1 SWAP5 SSTORE PUSH1 0xC0 DUP8 ADD MLOAD PUSH1 0xD DUP2 SWAP1 SSTORE PUSH1 0xE0 DUP9 ADD MLOAD SWAP6 MLOAD DUP3 MLOAD SWAP5 DUP16 AND DUP6 MSTORE SWAP5 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP2 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x60 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x80 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 MLOAD PUSH32 0x1A2A22CB034D26D1854BDC6666A5B91FE25EFBBB5DCAD3B0355478D6F5C362A1 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0xE0 ADD MLOAD PUSH1 0x0 SWAP4 POP SWAP2 POP POP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xDD86FEA1 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 0x1F8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x4480 DUP8 DUP8 PUSH2 0x49B7 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4493 JUMPI INVALID JUMPDEST EQ PUSH2 0x44A4 JUMPI POP SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH2 0x4419 JUMP JUMPDEST PUSH2 0x44AE DUP2 DUP7 PUSH2 0x4994 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x44C6 PUSH2 0x661E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x44DB DUP7 PUSH8 0xDE0B6B3A7640000 PUSH2 0x5443 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x44EE JUMPI INVALID JUMPDEST EQ PUSH2 0x450D JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x3196 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x451A DUP4 DUP9 PUSH2 0x5482 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x452D JUMPI INVALID JUMPDEST EQ PUSH2 0x454F JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 SWAP5 POP SWAP3 POP PUSH2 0x3196 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP9 SWAP1 SWAP8 POP SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x17 SLOAD PUSH1 0x18 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x4FB3C665 PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND SWAP5 SWAP4 DUP5 AND SWAP4 SWAP1 SWAP3 AND SWAP2 DUP4 SWAP2 PUSH4 0x9F678CCA 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 0x45C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x45D6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x45EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH4 0x5F5D643 PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0xBEBAC86 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4638 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x464C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4662 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x7F8661A1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0x7F8661A1 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x46B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x46C4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH4 0x3612D9A3 PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP3 POP PUSH4 0x6C25B346 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4712 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4726 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x473C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xEF693BED PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH12 0x33B2E3C9FD0803CE8000000 DUP4 DIV PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP2 PUSH4 0xEF693BED SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x479D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x47B1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x60 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x47FC JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x47DD JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x485E 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 0x4863 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x4902 JUMPI DUP1 MLOAD ISZERO PUSH2 0x487D JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST DUP4 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x48C7 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x48AF JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x48F4 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x45B96FE442630264581B197E84BBADA861235052C5A1AADFFF9EA4E40A969AA0 DUP5 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x493A JUMPI INVALID JUMPDEST DUP5 PUSH1 0x63 DUP2 GT ISZERO PUSH2 0x4946 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 DUP2 ADD DUP6 SWAP1 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 PUSH1 0x3 DUP5 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x4973 JUMPI INVALID JUMPDEST EQ PUSH2 0x4989 JUMPI DUP4 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x4984 JUMPI INVALID JUMPDEST PUSH2 0x187F JUMP JUMPDEST POP PUSH2 0x3E8 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 DUP4 GT PUSH2 0x49AB JUMPI POP PUSH1 0x0 SWAP1 POP DUP2 DUP4 SUB PUSH2 0x3196 JUMP JUMPDEST POP PUSH1 0x3 SWAP1 POP PUSH1 0x0 PUSH2 0x3196 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 DUP4 ADD DUP5 DUP2 LT PUSH2 0x49CF JUMPI PUSH1 0x0 SWAP3 POP SWAP1 POP PUSH2 0x3196 JUMP JUMPDEST POP PUSH1 0x2 SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH2 0x3196 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x49E7 PUSH2 0x661E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x49F8 DUP7 PUSH1 0x0 ADD MLOAD DUP7 PUSH2 0x5443 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4A0B JUMPI INVALID JUMPDEST EQ PUSH2 0x4A2A JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x3196 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST MLOAD PUSH8 0xDE0B6B3A7640000 SWAP1 DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO DUP1 PUSH2 0x4A6F JUMPI POP POP DUP1 DUP3 MUL DUP3 DUP3 DUP3 DUP2 PUSH2 0x4A6C JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0x1152 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x6D756C2D6F766572666C6F77 PUSH1 0xA0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x15 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 SWAP3 SWAP1 SWAP3 AND SWAP2 DUP3 SWAP2 PUSH4 0x23B872DD SWAP2 PUSH1 0x64 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP9 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4B0F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4B23 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4B39 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x4B76 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x6959 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x15 SLOAD PUSH1 0x17 SLOAD PUSH1 0x18 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP7 DUP8 AND SWAP7 SWAP6 DUP7 AND SWAP6 SWAP5 DUP6 AND SWAP5 SWAP1 SWAP4 AND SWAP3 DUP7 SWAP3 PUSH4 0x3B4DA69F SWAP3 SWAP1 SWAP2 DUP8 SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4BE3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4BF7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4C0D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT PUSH1 0xE0 DUP7 SWAP1 SHL AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE MLOAD PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4C5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4C71 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH4 0x3612D9A3 PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP3 POP PUSH4 0x6C25B346 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4CBF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4CD3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4CE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x324ABB31 PUSH1 0xE2 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP2 PUSH4 0xC92AECC4 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4D31 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4D45 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4D5B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP3 DUP2 PUSH2 0x4D65 JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x49878F3 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4DAE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4DC2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP11 SWAP13 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1CA7 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x15 DUP2 MSTORE PUSH1 0x20 ADD PUSH21 0x7375627472616374696F6E20756E646572666C6F77 PUSH1 0x58 SHL DUP2 MSTORE POP PUSH2 0x6315 JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x17 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x324ABB31 PUSH1 0xE2 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND SWAP4 SWAP1 SWAP3 AND SWAP2 PUSH1 0x0 SWAP2 PUSH2 0x4EB3 SWAP2 DUP5 SWAP2 PUSH4 0xC92AECC4 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4E62 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4E76 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4E8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x4EA4 DUP7 PUSH12 0x33B2E3C9FD0803CE8000000 PUSH2 0x4A54 JUMP JUMPDEST DUP2 PUSH2 0x4EAB JUMPI INVALID JUMPDEST DIV PUSH1 0x1 PUSH2 0x636F JUMP JUMPDEST SWAP1 POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x7F8661A1 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4EFB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4F0F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xEF693BED DUP7 DUP7 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x479D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x4F80 JUMPI POP DUP2 ISZERO JUMPDEST PUSH2 0x4FBB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x69B2 PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x4FC3 PUSH2 0x66C4 JUMP JUMPDEST PUSH2 0x4FCB PUSH2 0x2A01 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4FE2 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4FED JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x5004 JUMPI INVALID JUMPDEST EQ PUSH2 0x5028 JUMPI PUSH2 0x5020 PUSH1 0x9 PUSH1 0x2E DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3CDD JUMPI INVALID JUMPDEST SWAP2 POP POP PUSH2 0x1CA7 JUMP JUMPDEST DUP4 ISZERO PUSH2 0x50A9 JUMPI PUSH1 0x60 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD DUP3 MSTORE SWAP1 DUP3 ADD MLOAD DUP2 MSTORE PUSH2 0x504F SWAP1 DUP6 PUSH2 0x3149 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x5066 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x5071 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x5088 JUMPI INVALID JUMPDEST EQ PUSH2 0x50A4 JUMPI PUSH2 0x5020 PUSH1 0x9 PUSH1 0x2C DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3CDD JUMPI INVALID JUMPDEST PUSH2 0x5122 JUMP JUMPDEST PUSH2 0x50C5 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH1 0x40 ADD MLOAD DUP2 MSTORE POP PUSH2 0x63B6 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x50DC JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x50E7 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x50FE JUMPI INVALID JUMPDEST EQ PUSH2 0x511A JUMPI PUSH2 0x5020 PUSH1 0x9 PUSH1 0x2D DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3CDD JUMPI INVALID JUMPDEST PUSH1 0x80 DUP2 ADD DUP4 SWAP1 MSTORE JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x60 DUP3 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xEABE7D91 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP4 SWAP3 SWAP1 SWAP3 AND SWAP2 PUSH4 0xEABE7D91 SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5187 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x519B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x51B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x51D1 JUMPI PUSH2 0x51C8 PUSH1 0x3 PUSH1 0x2B DUP4 PUSH2 0x490B JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x1CA7 JUMP JUMPDEST PUSH2 0x51D9 PUSH2 0x23E5 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x51ED JUMPI PUSH2 0x51C8 PUSH1 0xA PUSH1 0x2F PUSH2 0x35CA JUMP JUMPDEST PUSH2 0x51FD PUSH1 0x11 SLOAD DUP4 PUSH1 0x60 ADD MLOAD PUSH2 0x4994 JUMP JUMPDEST PUSH1 0xA0 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP5 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x5214 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x521F JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP3 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x5236 JUMPI INVALID JUMPDEST EQ PUSH2 0x5252 JUMPI PUSH2 0x51C8 PUSH1 0x9 PUSH1 0x31 DUP5 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3CDD JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 DUP4 ADD MLOAD PUSH2 0x527A SWAP2 SWAP1 PUSH2 0x4994 JUMP JUMPDEST PUSH1 0xC0 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP5 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x5291 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x529C JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP3 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x52B3 JUMPI INVALID JUMPDEST EQ PUSH2 0x52CF JUMPI PUSH2 0x51C8 PUSH1 0x9 PUSH1 0x30 DUP5 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3CDD JUMPI INVALID JUMPDEST DUP2 PUSH1 0x80 ADD MLOAD PUSH2 0x52DC PUSH2 0x319D JUMP JUMPDEST LT ISZERO PUSH2 0x52EE JUMPI PUSH2 0x51C8 PUSH1 0xE PUSH1 0x32 PUSH2 0x35CA JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MLOAD PUSH1 0x11 SSTORE PUSH1 0xC0 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x5324 SWAP1 DUP8 SWAP1 PUSH2 0x4E0E JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MLOAD PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD ADDRESS SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x68D5 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 PUSH1 0x80 DUP3 ADD MLOAD PUSH1 0x60 DUP1 DUP5 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP4 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE MLOAD PUSH32 0xE5B754FB1ABB7F01B499791D0B820AE3B6AF3424AC1C59768EDB53F4EC31A929 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x5 SLOAD PUSH1 0x80 DUP4 ADD MLOAD PUSH1 0x60 DUP5 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x51DFF989 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x64 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x51DFF989 SWAP2 PUSH1 0x84 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5418 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x542C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x0 SWAP3 POP PUSH2 0x5439 SWAP2 POP POP JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH2 0x5456 JUMPI POP PUSH1 0x0 SWAP1 POP DUP1 PUSH2 0x3196 JUMP JUMPDEST DUP4 DUP4 MUL DUP4 DUP6 DUP3 DUP2 PUSH2 0x5463 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x5477 JUMPI POP PUSH1 0x2 SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH2 0x3196 JUMP JUMPDEST PUSH1 0x0 SWAP3 POP SWAP1 POP PUSH2 0x3196 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH2 0x5496 JUMPI POP PUSH1 0x1 SWAP1 POP PUSH1 0x0 PUSH2 0x3196 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x54A1 JUMPI INVALID JUMPDEST DIV SWAP2 POP SWAP2 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x4EF4C3E1 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 DUP5 SWAP4 SWAP2 AND SWAP2 PUSH4 0x4EF4C3E1 SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x550E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5522 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5538 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x555C JUMPI PUSH2 0x554F PUSH1 0x3 PUSH1 0x21 DUP4 PUSH2 0x490B JUMP JUMPDEST SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH2 0x3196 SWAP1 POP JUMP JUMPDEST PUSH2 0x5564 PUSH2 0x23E5 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x5578 JUMPI PUSH2 0x554F PUSH1 0xA PUSH1 0x24 PUSH2 0x35CA JUMP JUMPDEST PUSH2 0x5580 PUSH2 0x66C4 JUMP JUMPDEST PUSH2 0x5588 PUSH2 0x2A01 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x559F JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x55AA JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x55C1 JUMPI INVALID JUMPDEST EQ PUSH2 0x55EB JUMPI PUSH2 0x55DD PUSH1 0x9 PUSH1 0x23 DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3CDD JUMPI INVALID JUMPDEST SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x3196 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x55F5 DUP7 DUP7 PUSH2 0x4AAF JUMP JUMPDEST PUSH1 0xC0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD DUP3 MSTORE SWAP1 DUP4 ADD MLOAD DUP2 MSTORE PUSH2 0x5616 SWAP2 SWAP1 PUSH2 0x63B6 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x562D JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x5638 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x564F JUMPI INVALID JUMPDEST EQ PUSH2 0x56A1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D494E545F45584348414E47455F43414C43554C4154494F4E5F4641494C4544 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x56B1 PUSH1 0x11 SLOAD DUP3 PUSH1 0x60 ADD MLOAD PUSH2 0x3B59 JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x56DE SWAP2 SWAP1 PUSH2 0x3B59 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MLOAD PUSH1 0x11 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0xC0 DUP5 ADD MLOAD PUSH1 0x60 DUP1 DUP7 ADD MLOAD DUP4 MLOAD SWAP5 DUP6 MSTORE SWAP5 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE MLOAD PUSH32 0x4C209B5FC8AD50758F13E2E1088BA56A560DFF690A1C6FEF26394F4C03821C4F SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 ADDRESS SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x68D5 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 PUSH1 0x5 SLOAD PUSH1 0xC0 DUP3 ADD MLOAD PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x41C728B9 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x64 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x41C728B9 SWAP2 PUSH1 0x84 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x57F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x580A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x0 SWAP3 POP PUSH2 0x5817 SWAP2 POP POP JUMP JUMPDEST DUP2 PUSH1 0xC0 ADD MLOAD SWAP4 POP SWAP4 POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5833 PUSH2 0x661E JUMP JUMPDEST PUSH2 0x584B PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP7 DUP2 MSTORE POP DUP5 PUSH2 0x63CD JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x585B DUP3 PUSH1 0xD SLOAD PUSH2 0x5ABE JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x586B DUP3 PUSH1 0xD SLOAD PUSH2 0x3B59 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x588C PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xA SLOAD DUP2 MSTORE POP DUP5 PUSH1 0xE SLOAD PUSH2 0x63F7 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x58AD PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x9 SLOAD DUP2 MSTORE POP DUP6 PUSH1 0x10 SLOAD PUSH2 0x63F7 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x58CE PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x8 SLOAD DUP2 MSTORE POP DUP7 PUSH1 0xF SLOAD PUSH2 0x63F7 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x58E1 DUP8 PUSH1 0xC SLOAD PUSH1 0xC SLOAD PUSH2 0x63F7 JUMP JUMPDEST PUSH1 0xB DUP14 SWAP1 SSTORE PUSH1 0xC DUP2 SWAP1 SSTORE PUSH1 0xD DUP7 SWAP1 SSTORE PUSH1 0xE DUP6 SWAP1 SSTORE PUSH1 0x10 DUP5 SWAP1 SSTORE PUSH1 0xF DUP4 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP14 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP10 SWAP1 MSTORE DUP1 DUP3 ADD DUP4 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP9 SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH32 0x4DEC04E750CA11537CABCD8A9EAB06494DE08DA3735BC8871CD41250E190BC04 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG1 PUSH1 0x6 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x24 DUP1 DUP3 ADD DUP15 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x5EFD0233 PUSH1 0xE1 SHL OR DUP2 MSTORE SWAP2 MLOAD DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP5 AND SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x59BE JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x599F JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x5A20 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 0x5A25 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP PUSH1 0x0 SWAP2 POP PUSH2 0x5A31 SWAP1 POP JUMP JUMPDEST SWAP13 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 ADD DUP3 DUP6 DUP3 LT ISZERO PUSH2 0x1753 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x48C7 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x48AF JUMP JUMPDEST PUSH1 0x0 PUSH8 0xDE0B6B3A7640000 PUSH2 0x5AAF DUP5 DUP5 PUSH1 0x0 ADD MLOAD PUSH2 0x641F JUMP JUMPDEST DUP2 PUSH2 0x5AB6 JUMPI INVALID JUMPDEST DIV SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5AC8 PUSH2 0x661E JUMP JUMPDEST PUSH2 0x5AD2 DUP5 DUP5 PUSH2 0x63CD JUMP JUMPDEST SWAP1 POP PUSH2 0x187F DUP2 PUSH2 0x4A45 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x368F5153 PUSH1 0xE2 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 AND SWAP2 PUSH4 0xDA3D454C SWAP2 PUSH1 0x64 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5B3A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5B4E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5B64 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x5B83 JUMPI PUSH2 0x5B7B PUSH1 0x3 PUSH1 0x10 DUP4 PUSH2 0x490B JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1152 JUMP JUMPDEST PUSH2 0x5B8B PUSH2 0x23E5 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x5B9F JUMPI PUSH2 0x5B7B PUSH1 0xA PUSH1 0xC PUSH2 0x35CA JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5BA9 PUSH2 0x319D JUMP JUMPDEST SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x5BC8 JUMPI PUSH2 0x5BBF PUSH1 0xE PUSH1 0xB PUSH2 0x35CA JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x1152 JUMP JUMPDEST PUSH2 0x5BD0 PUSH2 0x6702 JUMP JUMPDEST PUSH2 0x5BD9 DUP7 PUSH2 0x373C JUMP JUMPDEST PUSH1 0x20 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x5BED JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x5BF8 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x5C0C JUMPI INVALID JUMPDEST EQ PUSH2 0x5C31 JUMPI PUSH2 0x5C27 PUSH1 0x9 DUP1 DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3CDD JUMPI INVALID JUMPDEST SWAP4 POP POP POP POP PUSH2 0x1152 JUMP JUMPDEST PUSH2 0x5C3F DUP2 PUSH1 0x20 ADD MLOAD DUP7 PUSH2 0x49B7 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x5C53 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x5C5E JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x5C72 JUMPI INVALID JUMPDEST EQ PUSH2 0x5C8E JUMPI PUSH2 0x5C27 PUSH1 0x9 PUSH1 0xE DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3CDD JUMPI INVALID JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 DUP4 ADD MLOAD DUP2 MLOAD PUSH4 0x1DE6C8A5 PUSH1 0xE2 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x779B2294 SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5CE7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5CFB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5D11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 POP DUP3 ISZERO PUSH2 0x5D28 JUMPI PUSH2 0x5C27 PUSH1 0x3 PUSH1 0x10 DUP6 PUSH2 0x490B JUMP JUMPDEST PUSH2 0x5D34 PUSH1 0xD SLOAD DUP7 PUSH2 0x49B7 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x5D48 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x5D53 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x5D67 JUMPI INVALID JUMPDEST EQ PUSH2 0x5D83 JUMPI PUSH2 0x5C27 PUSH1 0x9 PUSH1 0xD DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3CDD JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 MSTORE SWAP2 SWAP1 SWAP2 KECCAK256 SWAP1 DUP2 SSTORE PUSH1 0xC SLOAD PUSH1 0x1 SWAP1 SWAP2 ADD SSTORE PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0xD SSTORE PUSH2 0x5DBF DUP7 DUP7 PUSH2 0x4E0E JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 ADD MLOAD PUSH1 0x60 DUP1 DUP5 ADD MLOAD DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP11 SWAP1 MSTORE DUP1 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP1 DUP3 ADD MSTORE SWAP1 MLOAD PUSH32 0x13ED6866D4E1EE6DA46F845C46D7E54120883D75C5EA9A2DACC1C4CA8984AB80 SWAP2 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG1 PUSH1 0x0 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x2FE3F38F PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP8 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE DUP7 DUP2 AND PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x84 DUP3 ADD DUP7 SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 DUP5 SWAP4 SWAP2 AND SWAP2 PUSH4 0x5FC7E71E SWAP2 PUSH1 0xA4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5E94 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5EA8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5EBE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x5EE2 JUMPI PUSH2 0x5ED5 PUSH1 0x3 PUSH1 0x14 DUP4 PUSH2 0x490B JUMP JUMPDEST SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH2 0x630C SWAP1 POP JUMP JUMPDEST PUSH2 0x5EEA PUSH2 0x23E5 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x5EFE JUMPI PUSH2 0x5ED5 PUSH1 0xA PUSH1 0x18 PUSH2 0x35CA JUMP JUMPDEST PUSH2 0x5F06 PUSH2 0x23E5 JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6C540BAF 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 0x5F3F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5F53 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5F69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD EQ PUSH2 0x5F7C JUMPI PUSH2 0x5ED5 PUSH1 0xA PUSH1 0x13 PUSH2 0x35CA JUMP JUMPDEST DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x5FA2 JUMPI PUSH2 0x5ED5 PUSH1 0x6 PUSH1 0x19 PUSH2 0x35CA JUMP JUMPDEST DUP5 PUSH2 0x5FB3 JUMPI PUSH2 0x5ED5 PUSH1 0x7 PUSH1 0x17 PUSH2 0x35CA JUMP JUMPDEST PUSH1 0x0 NOT DUP6 EQ ISZERO PUSH2 0x5FC9 JUMPI PUSH2 0x5ED5 PUSH1 0x7 PUSH1 0x16 PUSH2 0x35CA JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x5FD7 DUP10 DUP10 DUP10 PUSH2 0x40D1 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP DUP2 ISZERO PUSH2 0x6007 JUMPI PUSH2 0x5FF8 DUP3 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x5FF1 JUMPI INVALID JUMPDEST PUSH1 0x1A PUSH2 0x35CA JUMP JUMPDEST SWAP5 POP PUSH1 0x0 SWAP4 POP PUSH2 0x630C SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xC488847B PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP6 SWAP1 MSTORE DUP3 MLOAD PUSH1 0x0 SWAP5 DUP6 SWAP5 SWAP3 AND SWAP3 PUSH4 0xC488847B SWAP3 PUSH1 0x64 DUP1 DUP4 ADD SWAP4 SWAP2 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6061 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x6075 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x608B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 POP SWAP1 POP DUP2 ISZERO PUSH2 0x60D6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x33 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x6926 PUSH1 0x33 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 DUP9 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 DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x612D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x6141 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6157 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT ISZERO PUSH2 0x61AC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C49515549444154455F5345495A455F544F4F5F4D5543480000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND ADDRESS EQ ISZERO PUSH2 0x61D2 JUMPI PUSH2 0x61CB ADDRESS DUP14 DUP14 DUP6 PUSH2 0x3B8F JUMP JUMPDEST SWAP1 POP PUSH2 0x625C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xB2A02FF1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP15 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP14 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD SWAP2 DUP12 AND SWAP2 PUSH4 0xB2A02FF1 SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x622D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x6241 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6257 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP JUMPDEST DUP1 ISZERO PUSH2 0x62A6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x1D1BDAD95B881CD95A5E9D5C994819985A5B1959 PUSH1 0x62 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP16 AND DUP3 MSTORE DUP1 DUP15 AND PUSH1 0x20 DUP4 ADD MSTORE DUP2 DUP4 ADD DUP8 SWAP1 MSTORE DUP12 AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP2 ADD DUP5 SWAP1 MSTORE SWAP1 MLOAD PUSH32 0x298637F684DA70674F26509B10F07EC2FBC77A335AB1E7D6215A4B2484D8BB52 SWAP2 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 LOG1 PUSH1 0x0 SWAP8 POP SWAP3 SWAP6 POP POP POP POP POP POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x6367 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x48C7 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x48AF JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0x1152 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x6164642D6F766572666C6F77 PUSH1 0xA0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x63C3 PUSH2 0x661E JUMP JUMPDEST PUSH2 0x3160 DUP7 DUP7 PUSH2 0x6461 JUMP JUMPDEST PUSH2 0x63D5 PUSH2 0x661E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x63EE DUP6 PUSH1 0x0 ADD MLOAD DUP6 PUSH2 0x641F JUMP JUMPDEST SWAP1 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6401 PUSH2 0x661E JUMP JUMPDEST PUSH2 0x640B DUP6 DUP6 PUSH2 0x63CD JUMP JUMPDEST SWAP1 POP PUSH2 0x4902 PUSH2 0x6419 DUP3 PUSH2 0x4A45 JUMP JUMPDEST DUP5 PUSH2 0x3B59 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1CA7 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x17 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x6D756C7469706C69636174696F6E206F766572666C6F77000000000000000000 DUP2 MSTORE POP PUSH2 0x64C0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x646B PUSH2 0x661E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x6480 PUSH8 0xDE0B6B3A7640000 DUP8 PUSH2 0x5443 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x6493 JUMPI INVALID JUMPDEST EQ PUSH2 0x64B2 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x3196 JUMP JUMPDEST PUSH2 0x318F DUP2 DUP7 PUSH1 0x0 ADD MLOAD PUSH2 0x44BC JUMP JUMPDEST PUSH1 0x0 DUP4 ISZERO DUP1 PUSH2 0x64CD JUMPI POP DUP3 ISZERO JUMPDEST ISZERO PUSH2 0x64DA JUMPI POP PUSH1 0x0 PUSH2 0x1CA7 JUMP JUMPDEST DUP4 DUP4 MUL DUP4 DUP6 DUP3 DUP2 PUSH2 0x64E7 JUMPI INVALID JUMPDEST DIV EQ DUP4 SWAP1 PUSH2 0x1753 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x48C7 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x48AF JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x6577 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x65A4 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x65A4 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x65A4 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x6589 JUMP JUMPDEST POP PUSH2 0x1AD4 SWAP3 SWAP2 POP PUSH2 0x672B JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x65F1 JUMPI DUP3 DUP1 ADD PUSH1 0xFF NOT DUP3 CALLDATALOAD AND OR DUP6 SSTORE PUSH2 0x65A4 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x65A4 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x65A4 JUMPI DUP3 CALLDATALOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x6603 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x120 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x100 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xE0 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH2 0x1504 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1AD4 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x6731 JUMP INVALID PUSH14 0x61726B6574206D6179206F6E6C79 KECCAK256 PUSH3 0x652069 PUSH15 0x697469616C697A6564206F6E63656F PUSH15 0x6C792073656C66206F722061646D69 PUSH15 0x206D61792063616C6C205F6265636F PUSH14 0x65496D706C656D656E746174696F PUSH15 0x696E697469616C2065786368616E67 PUSH6 0x207261746520 PUSH14 0x7573742062652067726561746572 KECCAK256 PUSH21 0x68616E207A65726F2E6F6E6C79207468652061646D PUSH10 0x6E206D61792073657420 PUSH21 0x686520636F6D702D6C696B652064656C6567617465 PUSH20 0x657474696E6720696E7465726573742072617465 KECCAK256 PUSH14 0x6F64656C206661696C6564626F72 PUSH19 0x6F7742616C616E636553746F7265643A20626F PUSH19 0x726F7742616C616E636553746F726564496E74 PUSH6 0x726E616C2066 PUSH2 0x696C PUSH6 0x64444149206D PUSH22 0x7374206265207468652073616D6520617320756E6465 PUSH19 0x6C79696E6752455041595F424F52524F575F4E GASLIMIT JUMPI 0x5F COINBASE NUMBER NUMBER 0x4F SSTORE 0x4E SLOAD 0x5F TIMESTAMP 0x4F MSTORE MSTORE 0x4F JUMPI 0x5F TIMESTAMP COINBASE 0x4C COINBASE 0x4E NUMBER GASLIMIT 0x5F NUMBER COINBASE 0x4C NUMBER SSTORE 0x4C COINBASE SLOAD 0x49 0x4F 0x4E 0x5F CHAINID COINBASE 0x49 0x4C GASLIMIT DIFFICULTY PUSH16 0x6E6C7920467573652061646D696E206D PUSH2 0x7920 PUSH10 0x6E697469616C697A6520 PUSH21 0x6865206D61726B6574DDF252AD1BE2C89B69C2B068 0xFC CALLDATACOPY DUP14 0xAA SWAP6 0x2B 0xA7 CALL PUSH4 0xC4A11628 CREATE2 GAS 0x4D CREATE2 0x23 0xB3 0xEF MSTORE GASLIMIT POP COINBASE MSIZE 0x5F TIMESTAMP 0x4F MSTORE MSTORE 0x4F JUMPI 0x5F 0x4E GASLIMIT JUMPI 0x5F SLOAD 0x4F SLOAD COINBASE 0x4C 0x5F TIMESTAMP COINBASE 0x4C COINBASE 0x4E NUMBER GASLIMIT 0x5F NUMBER COINBASE 0x4C NUMBER SSTORE 0x4C COINBASE SLOAD 0x49 0x4F 0x4E 0x5F CHAINID COINBASE 0x49 0x4C GASLIMIT DIFFICULTY 0x4C 0x49 MLOAD SSTORE 0x49 DIFFICULTY COINBASE SLOAD GASLIMIT 0x5F NUMBER 0x4F 0x4D POP SLOAD MSTORE 0x4F 0x4C 0x4C GASLIMIT MSTORE 0x5F NUMBER COINBASE 0x4C NUMBER SSTORE 0x4C COINBASE SLOAD GASLIMIT 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD 0x5F MSTORE8 GASLIMIT 0x49 GAS GASLIMIT 0x5F CHAINID COINBASE 0x49 0x4C GASLIMIT DIFFICULTY PUSH22 0x6E6578706563746564204549502D3230207472616E73 PUSH7 0x657220696E2072 PUSH6 0x7475726E6578 PUSH4 0x68616E67 PUSH6 0x526174655374 PUSH16 0x7265643A2065786368616E6765526174 PUSH6 0x53746F726564 0x49 PUSH15 0x7465726E616C206661696C65646F6E PUSH6 0x206F66207265 PUSH5 0x65656D546F PUSH12 0x656E73496E206F7220726564 PUSH6 0x656D416D6F75 PUSH15 0x74496E206D757374206265207A6572 PUSH16 0xA265627A7A72315820410B4F3E79D813 EXTCODEHASH OR 0x4E 0xBA 0xA7 PUSH1 0x74 LOG0 0xAC SUB 0xC8 PUSH1 0xEB PUSH31 0xCAD951ABD968E12FBD775E64736F6C63430005110032000000000000000000 ","sourceMap":"171:5996:1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;960:18:11;;8:9:-1;5:2;;;30:1;27;20:12;5:2;960:18:11;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;960:18:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7552:232:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7552:232:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7552:232:10;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3661:146:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3661:146:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3661:146:2;;:::i;:::-;;;;;;;;;;;;;;;;1302:1947:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1302:1947:10;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;1302:1947:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;1302:1947:10;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1302:1947:10;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1302:1947:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1302:1947:10;;;;;;;;-1:-1:-1;1302:1947:10;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;1302:1947:10;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1302:1947:10;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1302:1947:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1302:1947:10;;-1:-1:-1;;1302:1947:10;;;;;-1:-1:-1;;;1302:1947:10;;;;;;;;;:::i;:::-;;2390:33:11;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2390:33:11;;;:::i;11828:228:10:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11828:228:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11828:228:10;-1:-1:-1;;;;;11828:228:10;;:::i;3266:23:11:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3266:23:11;;;:::i;14620:257:10:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14620:257:10;;;:::i;3437:459:3:-;;;:::i;6892:200:10:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6892:200:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6892:200:10;;;;;;;;;;;;;;;;;:::i;4087:186:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4087:186:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4087:186:2;;;;;;;;:::i;1146:21:11:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1146:21:11;;;:::i;:::-;;;;;;;;;;;;;;;;;;;70024:265:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;70024:265:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;70024:265:10;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;70024:265:10;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;70024:265:10;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;70024:265:10;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;70024:265:10;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;70024:265:10;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;70024:265:10;;-1:-1:-1;70024:265:10;-1:-1:-1;70024:265:10;:::i;8788:349::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8788:349:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8788:349:10;-1:-1:-1;;;;;8788:349:10;;:::i;16532:86::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16532:86:10;;;:::i;2784:24:11:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2784:24:11;;;:::i;2928:330:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2928:330:3;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;2928:330:3;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;2928:330:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2928:330:3;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;2928:330:3;;-1:-1:-1;2928:330:3;-1:-1:-1;2928:330:3;:::i;614:374:1:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;614:374:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;614:374:1;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;614:374:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;614:374:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;614:374:1;;-1:-1:-1;614:374:1;-1:-1:-1;614:374:1;:::i;9773:29:11:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9773:29:11;;;:::i;:::-;;;;-1:-1:-1;;;;;9773:29:11;;;;;;;;;;;;;;1713:39;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1713:39:11;;;:::i;59156:570:10:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;59156:570:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;59156:570:10;;:::i;3037:26:11:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3037:26:11;;;:::i;370:25:1:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;370:25:1;;;:::i;4209:56:11:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4209:56:11;;;:::i;2508:30::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2508:30:11;;;:::i;8834:25::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8834:25:11;;;:::i;8430:110:10:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8430:110:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8430:110:10;-1:-1:-1;;;;;8430:110:10;;:::i;11348:196::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11348:196:10;;;:::i;8473:214:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8473:214:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8473:214:2;-1:-1:-1;;;;;8473:214:2;;:::i;2957:131::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2957:131:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2957:131:2;;:::i;268:29:1:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;268:29:1;;;:::i;2150:28:11:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2150:28:11;;;:::i;449:25:1:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;449:25:1;;;:::i;2909::11:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2909:25:11;;;:::i;54184:571:10:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;54184:571:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;54184:571:10;;:::i;1051:20:11:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1051:20:11;;;:::i;12258:283:10:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12258:283:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12258:283:10;-1:-1:-1;;;;;12258:283:10;;:::i;61865:587::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;61865:587:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;61865:587:10;;:::i;2025:130:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2025:130:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2025:130:2;;:::i;803:842::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;803:842:2;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;803:842:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;803:842:2;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;803:842:2;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;803:842:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;803:842:2;;;;;;;;-1:-1:-1;803:842:2;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;803:842:2;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;803:842:2;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;803:842:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;803:842:2;;-1:-1:-1;;803:842:2;;;-1:-1:-1;;;803:842:2;;;;:::i;3257:204:1:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3257:204:1;;;:::i;64387:592:10:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;64387:592:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;64387:592:10;;:::i;6404:190::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6404:190:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6404:190:10;;;;;;;;:::i;2654:23:11:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2654:23:11;;;:::i;4556:37::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4556:37:11;;;:::i;10946:262:10:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10946:262:10;;;:::i;48862:198::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;48862:198:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;48862:198:10;;;;;;;;;;;;;;;;;:::i;14175:202::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14175:202:10;;;:::i;9475:685::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9475:685:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9475:685:10;-1:-1:-1;;;;;9475:685:10;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3349:111:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3349:111:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3349:111:2;;:::i;2498:::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2498:111:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2498:111:2;;:::i;2271:27:11:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2271:27:11;;;:::i;3165:25::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3165:25:11;;;:::i;8106:141:10:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8106:141:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;8106:141:10;;;;;;;;;;:::i;67100:625::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;67100:625:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;67100:625:10;-1:-1:-1;;;;;67100:625:10;;:::i;1849:42:11:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1849:42:11;;;:::i;4745:234:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4745:234:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4745:234:2;;;;;;;;;;;;;;;;;:::i;10574:202:10:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10574:202:10;;;:::i;57039:606::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;57039:606:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;57039:606:10;;:::i;4414:36:11:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4414:36:11;;;:::i;960:18::-;;;;;;;;;;;;;;-1:-1:-1;;960:18:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7552:232:10:-;7650:10;7620:4;7670:23;;;:18;:23;;;;;;;;-1:-1:-1;;;;;7670:32:10;;;;;;;;;;;:41;;;7726:30;;;;;;;7620:4;;7650:10;7670:32;;7650:10;;7726:30;;;;;;;;;;;7773:4;7766:11;;;7552:232;;;;;:::o;3661:146:2:-;3718:4;3735:8;3748:32;3768:11;3748:19;:32::i;:::-;-1:-1:-1;3734:46:2;-1:-1:-1;;3661:146:2;;;;:::o;1302:1947:10:-;1743:10;326:42:11;1743:32:10;1735:86;;;;-1:-1:-1;;;1735:86:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1839:18;;:23;:43;;;;-1:-1:-1;1866:11:10;;:16;1839:43;1831:91;;;;-1:-1:-1;;;1831:91:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1970:27;:58;;;2046:31;2038:92;;;;-1:-1:-1;;;2038:92:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2172:8;2183:29;2199:12;2183:15;:29::i;:::-;2172:40;-1:-1:-1;2230:27:10;;2222:66;;;;;-1:-1:-1;;;2222:66:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;2425:16;:14;:16::i;:::-;2404:18;:37;409:4:22;2451:11:10;:25;2573:46;2600:18;2573:26;:46::i;:::-;2567:52;-1:-1:-1;2637:27:10;;2629:74;;;;-1:-1:-1;;;2629:74:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2714:12;;;;:4;;:12;;;;;:::i;:::-;-1:-1:-1;2736:16:10;;;;:6;;:16;;;;;:::i;:::-;-1:-1:-1;2762:8:10;:20;;-1:-1:-1;;2762:20:10;;;;;;;2829:46;2852:22;2829;:46::i;:::-;2823:52;-1:-1:-1;2893:27:10;;2885:69;;;;;-1:-1:-1;;;2885:69:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;2996:36;3014:17;2996;:36::i;:::-;2990:42;-1:-1:-1;3050:27:10;;3042:64;;;;;-1:-1:-1;;;3042:64:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3238:4:10;3224:18;;-1:-1:-1;;;;3224:18:10;-1:-1:-1;;;3224:18:10;;;-1:-1:-1;;;;;;;1302:1947:10:o;2390:33:11:-;;;;:::o;11828:228:10:-;11913:4;11897:5;71531:30;71551:9;71531:19;:30::i;:::-;11962:14;11937:16;:14;:16::i;:::-;:40;11929:75;;;;;-1:-1:-1;;;11929:75:10;;;;;;;;;;;;-1:-1:-1;;;11929:75:10;;;;;;;;;;;;;;;12021:28;12041:7;12021:19;:28::i;:::-;12014:35;;71571:1;71582:29;71601:9;71582:18;:29::i;:::-;11828:228;;;;:::o;3266:23:11:-;;;;:::o;14620:257:10:-;14671:4;14688:13;14703:11;14718:28;:26;:28::i;:::-;14687:59;;-1:-1:-1;14687:59:10;-1:-1:-1;14771:18:10;14764:3;:25;;;;;;;;;14756:91;;;;-1:-1:-1;;;14756:91:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14864:6;-1:-1:-1;;14620:257:10;;:::o;3437:459:3:-;3488:10;3510:4;3488:27;;;;:94;;;3548:11;;;;;;;;;-1:-1:-1;;;;;3548:11:3;-1:-1:-1;;;;;3519:61:3;;:63;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3519:63:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3519:63:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3519:63:3;3488:94;3484:406;;;3599:28;3719:14;;3688:46;;;-1:-1:-1;;;3688:46:3;;-1:-1:-1;;;;;3719:14:3;;;3688:46;;;;;3599:28;;3647:37;;326:42:11;;3688:30:3;;:46;;;;;3599:28;;3688:46;;;;;;;326:42:11;3688:46:3;;;5:2:-1;;;;30:1;27;20:12;5:2;3688:46:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3688:46:3;;;;;;39:16:-1;36:1;17:17;2:54;101:4;3688:46:3;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;3688:46:3;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:20;;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;3688:46:3;;420:4:-1;411:14;;;;3688:46:3;;;;;411:14:-1;3688:46:3;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3688:46:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3688:46:3;;-1:-1:-1;;3752:14:3;;3598:136;;-1:-1:-1;3598:136:3;;-1:-1:-1;3598:136:3;-1:-1:-1;;;;;;;3752:38:3;;;:14;;:38;3748:131;;3792:87;3819:20;3841:11;3854:24;3792:26;:87::i;:::-;3484:406;;;;3437:459::o;6892:200:10:-;6994:4;6978:5;71531:30;71551:9;71531:19;:30::i;:::-;7070:14;7017:44;7032:10;7044:3;7049;7054:6;7017:14;:44::i;:::-;:68;7010:75;;71582:29;71601:9;71582:18;:29::i;:::-;6892:200;;;;;;:::o;4087:186:2:-;4168:4;4185:8;4198:48;4224:8;4234:11;4198:25;:48::i;:::-;-1:-1:-1;4184:62:2;4087:186;-1:-1:-1;;;;4087:186:2:o;1146:21:11:-;;;;;;:::o;70024:265:10:-;70159:16;:14;:16::i;:::-;70151:45;;;;;-1:-1:-1;;;70151:45:10;;;;;;;;;;;;-1:-1:-1;;;70151:45:10;;;;;;;;;;;;;;;70244:12;:4;70251:5;;70244:12;:::i;:::-;-1:-1:-1;70266:16:10;:6;70275:7;;70266:16;:::i;:::-;;70024:265;;;;:::o;8788:349::-;8850:4;8866:23;;:::i;:::-;8892:38;;;;;;;;8907:21;:19;:21::i;:::-;8892:38;;-1:-1:-1;;;;;9005:20:10;;8941:14;9005:20;;;:13;:20;;;;;;8866:64;;-1:-1:-1;8941:14:10;;;8973:53;;8866:64;;8973:17;:53::i;:::-;8940:86;;-1:-1:-1;8940:86:10;-1:-1:-1;9052:18:10;9044:4;:26;;;;;;;;;9036:70;;;;;-1:-1:-1;;;9036:70:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;9123:7;8788:349;-1:-1:-1;;;;8788:349:10:o;16532:86::-;16574:4;16597:14;:12;:14::i;:::-;16590:21;;16532:86;:::o;2784:24:11:-;;;;:::o;2928:330:3:-;3101:16;:14;:16::i;:::-;3093:35;;;;;-1:-1:-1;;;3093:35:3;;;;;;;;;;;;-1:-1:-1;;;3093:35:3;;;;;;;;;;;;;;;3169:82;3196:15;3213:11;3226:24;;3169:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;3169:26:3;;-1:-1:-1;;;3169:82:3:i;:::-;2928:330;;;;:::o;614:374:1:-;693:10;715:4;693:27;;:47;;;724:16;:14;:16::i;:::-;685:109;;;;-1:-1:-1;;;685:109:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;829:23;854:19;888:4;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;877:36:1;;;;;-1:-1:-1;877:36:1;;;;;;;-1:-1:-1;930:51:1;877:36;;930:21;:51::i;9773:29:11:-;;;-1:-1:-1;;;;;9773:29:11;;:::o;1713:39::-;;;-1:-1:-1;;;;;1713:39:11;;:::o;59156:570:10:-;59238:4;59222:5;71531:30;71551:9;71531:19;:30::i;:::-;59254:10;59267:16;:14;:16::i;:::-;59254:29;-1:-1:-1;59297:29:10;;59293:274;;59486:70;59497:5;59491:12;;;;;;;;59505:50;59486:4;:70::i;:::-;59479:77;;;;;59293:274;59685:34;59706:12;59685:20;:34::i;:::-;59678:41;;;71582:29;71601:9;71582:18;:29::i;3037:26:11:-;;;;:::o;370:25:1:-;;;-1:-1:-1;;;;;370:25:1;;:::o;4209:56:11:-;4259:6;4209:56;:::o;2508:30::-;;;;:::o;8834:25::-;;;-1:-1:-1;;;;;8834:25:11;;:::o;8430:110:10:-;-1:-1:-1;;;;;8513:20:10;8487:7;8513:20;;;:13;:20;;;;;;;8430:110::o;11348:196::-;11417:4;11401:5;71531:30;71551:9;71531:19;:30::i;:::-;11466:14;11441:16;:14;:16::i;:::-;:40;11433:75;;;;;-1:-1:-1;;;11433:75:10;;;;;;;;;;;;-1:-1:-1;;;11433:75:10;;;;;;;;;;;;;;;11525:12;;11518:19;;71582:29;71601:9;71582:18;:29::i;:::-;11348:196;;:::o;8473:214:2:-;8556:16;:14;:16::i;:::-;8548:74;;;;-1:-1:-1;;;8548:74:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8641:10;;8632:48;;;-1:-1:-1;;;8632:48:2;;-1:-1:-1;;;;;8632:48:2;;;;;;;;;8641:10;;;;;8632:29;;:48;;;;;8641:10;;8632:48;;;;;;;8641:10;;8632:48;;;5:2:-1;;;;30:1;27;20:12;5:2;8632:48:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;2957:131:2;3020:4;3043:38;3068:12;3043:24;:38::i;268:29:1:-;;;-1:-1:-1;;;;;268:29:1;;:::o;2150:28:11:-;;;;:::o;449:25:1:-;;;-1:-1:-1;;;;;449:25:1;;:::o;2909::11:-;;;;:::o;54184:571:10:-;54270:4;54254:5;71531:30;71551:9;71531:19;:30::i;:::-;54286:10;54299:16;:14;:16::i;:::-;54286:29;-1:-1:-1;54329:29:10;;54325:273;;54519:68;54530:5;54524:12;;;;;;;;54538:48;54519:4;:68::i;54325:273::-;54710:38;54728:19;54710:17;:38::i;1051:20:11:-;;;;;;;;;;;;;;;-1:-1:-1;;1051:20:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12258:283:10;12325:4;12342:13;12357:11;12372:36;12400:7;12372:27;:36::i;:::-;12341:67;;-1:-1:-1;12341:67:10;-1:-1:-1;12433:18:10;12426:3;:25;;;;;;;;;12418:93;;;;-1:-1:-1;;;12418:93:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12528:6;12258:283;-1:-1:-1;;;12258:283:10:o;61865:587::-;61951:4;61935:5;71531:30;71551:9;71531:19;:30::i;:::-;61967:10;61980:16;:14;:16::i;:::-;61967:29;-1:-1:-1;62010:29:10;;62006:281;;62203:73;62214:5;62208:12;;;;;;;;62222:53;62203:4;:73::i;62006:281::-;62407:38;62430:14;62407:22;:38::i;2025:130:2:-;2074:4;2091:8;2104:24;2117:10;2104:12;:24::i;803:842::-;1236:36;1275:6;1236:45;;1291:15;1324:11;-1:-1:-1;;;;;1309:36:2;;:38;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1309:38:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1309:38:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1309:38:2;;-1:-1:-1;1357:150:2;1374:12;1388:18;1408:28;1438:5;1445:7;1309:38;1465:22;1489:17;1357:16;:150::i;:::-;1564:10;:24;;-1:-1:-1;;;;;;1564:24:2;-1:-1:-1;;;;;1564:24:2;;;;;;;;;;;1598:40;;;-1:-1:-1;;;1598:40:2;;;;1613:10;;;;;1598:38;;:40;;;;;;;;;;;;;;;1613:10;1598:40;;;5:2:-1;;;;30:1;27;20:12;5:2;1598:40:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1598:40:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;;;;;;803:842:2:o;3257:204:1:-;3358:10;;3350:26;;;-1:-1:-1;;;3350:26:1;;;;3299:4;;-1:-1:-1;;;;;3358:10:1;;3350:24;;:26;;;;;;;;;;;;;;3299:4;3358:10;3350:26;;;5:2:-1;;;;30:1;27;20:12;5:2;3350:26:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3350:26:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3432:22:1;;-1:-1:-1;3432:20:1;:22::i;64387:592:10:-;64474:4;64458:5;71531:30;71551:9;71531:19;:30::i;:::-;64490:10;64503:16;:14;:16::i;:::-;64490:29;-1:-1:-1;64533:29:10;;64529:283;;64727:74;64738:5;64732:12;;;;;;;;64746:54;64727:4;:74::i;64529:283::-;64933:39;64957:14;64933:23;:39::i;6404:190::-;6489:4;6473:5;71531:30;71551:9;71531:19;:30::i;:::-;6572:14;6512:51;6527:10;6539;6551:3;6556:6;6512:14;:51::i;:::-;:75;6505:82;;71582:29;71601:9;71582:18;:29::i;:::-;6404:190;;;;;:::o;2654:23:11:-;;;;:::o;4556:37::-;4588:5;4556:37;:::o;10946:262:10:-;11022:17;;10999:4;;-1:-1:-1;;;;;11022:17:10;:31;11054:14;:12;:14::i;:::-;11070:12;;11084:56;11089:13;;11104:35;11109:14;;11125:13;;11104:4;:35::i;:::-;11084:4;:56::i;:::-;11184:16;;11166:15;;11142:21;;:39;:58;11022:179;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11022:179:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11022:179:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11022:179:10;;-1:-1:-1;10946:262:10;:::o;48862:198::-;48970:4;48955;71531:30;71551:9;71531:19;:30::i;:::-;48993:60;49007:10;49019;49031:8;49041:11;48993:13;:60::i;:::-;48986:67;;71582:29;71601:9;71582:18;:29::i;14175:202::-;14242:4;14226:5;71531:30;71551:9;71531:19;:30::i;:::-;14291:14;14266:16;:14;:16::i;:::-;:40;14258:75;;;;;-1:-1:-1;;;14258:75:10;;;;;;;;;;;;-1:-1:-1;;;14258:75:10;;;;;;;;;;;;;;;14350:20;:18;:20::i;:::-;14343:27;;71582:29;71601:9;71582:18;:29::i;9475:685::-;-1:-1:-1;;;;;9598:22:10;;9543:4;9598:22;;;:13;:22;;;;;;9543:4;;;;;;;;;9743:36;9612:7;9743:27;:36::i;:::-;9719:60;-1:-1:-1;9719:60:10;-1:-1:-1;9801:18:10;9793:4;:26;;;;;;;;;9789:97;;9848:16;9843:22;9835:40;-1:-1:-1;9867:1:10;;-1:-1:-1;9867:1:10;;-1:-1:-1;9867:1:10;;-1:-1:-1;9835:40:10;;-1:-1:-1;;;;9835:40:10;9789:97;9927:28;:26;:28::i;:::-;9896:59;-1:-1:-1;9896:59:10;-1:-1:-1;9977:18:10;9969:4;:26;;;;;;;;;9965:97;;10024:16;10019:22;;9965:97;-1:-1:-1;10085:14:10;;-1:-1:-1;10102:13:10;;-1:-1:-1;10117:13:10;-1:-1:-1;10117:13:10;-1:-1:-1;9475:685:10;;;;;;:::o;3349:111:2:-;3402:4;3425:28;3440:12;3425:14;:28::i;2498:111::-;2551:4;2574:28;2589:12;2574:14;:28::i;2271:27:11:-;;;;:::o;3165:25::-;;;;:::o;8106:141:10:-;-1:-1:-1;;;;;8206:25:10;;;8180:7;8206:25;;;:18;:25;;;;;;;;:34;;;;;;;;;;;;;8106:141::o;67100:625::-;67187:4;67203:10;67216:16;:14;:16::i;:::-;67203:29;-1:-1:-1;67246:29:10;;67242:295;;67448:78;67459:5;67453:12;;;;;;;;67467:58;67448:4;:78::i;:::-;67441:85;;;;;67242:295;67670:48;67697:20;67670:26;:48::i;1849:42:11:-;;;-1:-1:-1;;;;;1849:42:11;;:::o;4745:234:2:-;4858:4;4875:8;4888:64;4912:8;4922:11;4935:16;4888:23;:64::i;:::-;-1:-1:-1;4874:78:2;4745:234;-1:-1:-1;;;;;4745:234:2:o;10574:202:10:-;10650:17;;10627:4;;-1:-1:-1;;;;;10650:17:10;:31;10682:14;:12;:14::i;:::-;10698:12;;10712:56;10717:13;;10732:35;10737:14;;10753:13;;10732:4;:35::i;10712:56::-;10650:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;57039:606:10;57135:4;57119:5;71531:30;71551:9;71531:19;:30::i;:::-;57151:10;57164:16;:14;:16::i;:::-;57151:29;-1:-1:-1;57194:29:10;;57190:283;;57389:73;57400:5;57394:12;;;;;;;;57408:53;57389:4;:73::i;57190:283::-;57590:48;57613:24;57590:22;:48::i;4414:36:11:-;4446:4;4414:36;:::o;37117:571:10:-;37202:4;37208;37186:5;71531:30;71551:9;71531:19;:30::i;:::-;37224:10;37237:16;:14;:16::i;:::-;37224:29;-1:-1:-1;37267:29:10;;37263:257;;37438:67;37449:5;37443:12;;;;;;;;37457:47;37438:4;:67::i;:::-;37430:79;-1:-1:-1;37507:1:10;;-1:-1:-1;37430:79:10;;-1:-1:-1;37430:79:10;37263:257;37628:53;37645:10;37657;37669:11;37628:16;:53::i;:::-;37621:60;;;;;71571:1;71582:29;71601:9;71582:18;:29::i;:::-;37117:571;;;;:::o;53348:555::-;53428:4;53444:35;53482:11;;;;;;;;;-1:-1:-1;;;;;53482:11:10;53444:49;;53577:14;-1:-1:-1;;;;;53577:28:10;;:30;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;53577:30:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;53577:30:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;53577:30:10;53569:71;;;;;-1:-1:-1;;;53569:71:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;53705:11;:28;;-1:-1:-1;;;;;;53705:28:10;-1:-1:-1;;;;;53705:28:10;;;;;;;;;53812:46;;;;;;;;;;;;;;;;;;;;;;;;;;;53881:14;53876:20;;10313:91;10385:12;10313:91;:::o;68047:1634::-;68141:4;68240:38;68327:16;:14;:16::i;:::-;68322:128;;68366:73;68371:18;68391:47;68366:4;:73::i;68322:128::-;68573:16;:14;:16::i;:::-;68551:18;;:38;68547:153;;68612:77;68617:22;68641:47;68612:4;:77::i;68547:153::-;68791:17;;;;;;;;;-1:-1:-1;;;;;68791:17:10;68768:40;;68908:20;-1:-1:-1;;;;;68908:40:10;;:42;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;68908:42:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;68908:42:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;68908:42:10;68900:83;;;;;-1:-1:-1;;;68900:83:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;69057:17;:40;;-1:-1:-1;;;;;;69057:40:10;-1:-1:-1;;;;;69057:40:10;;;;;;;;;69200:70;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;69345:43:10;;;69341:138;;69425:53;;;22:32:-1;6:49;;69425:53:10;;;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;69390:89:10;;;;-1:-1:-1;;;;;69390:34:10;;;:89;;;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;69390:89:10;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;69390:89:10;;69341:138;69588:47;;;22:32:-1;6:49;;69588:47:10;;;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;69553:83:10;;;;-1:-1:-1;;;;;69553:34:10;;;:83;;;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;69553:83:10;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;-1:-1;69659:14:10;;-1:-1:-1;69654:20:10;;-1:-1:-1;69654:20:10;57906:1004;57987:4;58041:16;:14;:16::i;:::-;58036:123;;58080:68;58085:18;58105:42;58080:4;:68::i;:::-;58073:75;;;;58036:123;58263:16;:14;:16::i;:::-;58241:18;;:38;58237:148;;58302:72;58307:22;58331:42;58302:4;:72::i;58237:148::-;1490:4:11;58454:71:10;58459:48;58464:24;58490:16;;58459:4;:48::i;:::-;58509:15;;58454:4;:71::i;:::-;:106;58450:210;;;58583:66;58588:15;58605:43;58583:4;:66::i;58450:210::-;58702:21;;;58733:48;;;;58797:68;;;;;;;;;;;;;;;;;;;;;;;;;58888:14;58883:20;;55006:1737;55077:4;55187:16;:14;:16::i;:::-;55165:18;;:38;55161:143;;55226:67;55231:22;55255:37;55226:4;:67::i;55161:143::-;-1:-1:-1;;55358:19:10;:31;55354:75;;;55413:16;;55391:38;;55354:75;55471:23;55497:28;:26;:28::i;:::-;55471:54;;1490:4:11;55659:74:10;55664:48;55669:21;;55692:19;55664:4;:48::i;:::-;55714:18;55659:4;:74::i;:::-;:109;55655:208;;;55791:61;55796:15;55813:38;55791:4;:61::i;55655:208::-;55929:19;55909:16;;:39;55905:470;;56006:16;:14;:16::i;:::-;56001:126;;56049:63;56054:18;56074:37;56049:4;:63::i;56001:126::-;56197:16;;;56227:38;;;;56311:53;;;;;;;;;;;;;;;;;;;;;;;;;55905:470;;56439:18;56420:15;;:37;56416:283;;56527:15;;;56556:36;;;;56638:50;;;;;;;;;;;;;;;;;;;;;;;;;56416:283;;56721:14;56716:20;;71931:192;72002:11;;-1:-1:-1;;;72002:11:10;;;;71994:34;;;;;-1:-1:-1;;;71994:34:10;;;;;;;;;;;;-1:-1:-1;;;71994:34:10;;;;;;;;;;;;;;;72043:9;72038:49;;72054:11;;;;;;;;;-1:-1:-1;;;;;72054:11:10;-1:-1:-1;;;;;72054:31:10;;:33;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;72054:33:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;72054:33:10;;;;72038:49;-1:-1:-1;72097:11:10;:19;;-1:-1:-1;;;;72097:19:10;;;71931:192::o;72435:179::-;72511:4;72497:18;;-1:-1:-1;;;;72497:18:10;-1:-1:-1;;;72497:18:10;;;72564:9;72559:48;;72575:11;;;;;;;;;-1:-1:-1;;;;;72575:11:10;-1:-1:-1;;;;;72575:30:10;;:32;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;72559:48:10;72435:179;:::o;15134:1234::-;15242:11;;15195:9;;;;15267:17;15263:1099;;-1:-1:-1;;15456:27:10;;15436:18;;-1:-1:-1;15428:56:10;;15263:1099;15695:14;15712;:12;:14::i;:::-;15695:31;;15740:33;15787:23;;:::i;:::-;15824:17;15898:97;15913:9;15924:12;;15938:56;15943:13;;15958:35;15963:14;;15979:13;;15958:4;:35::i;15938:56::-;15898:14;:97::i;:::-;15856:139;-1:-1:-1;15856:139:10;-1:-1:-1;16024:18:10;16013:7;:29;;;;;;;;;16009:87;;16070:7;-1:-1:-1;16079:1:10;;-1:-1:-1;16062:19:10;;-1:-1:-1;;;;16062:19:10;16009:87;16136:50;16143:28;16173:12;16136:6;:50::i;:::-;16110:76;-1:-1:-1;16110:76:10;-1:-1:-1;16215:18:10;16204:7;:29;;;;;;;;;16200:87;;16261:7;-1:-1:-1;16270:1:10;;-1:-1:-1;16253:19:10;;-1:-1:-1;;;;16253:19:10;16200:87;-1:-1:-1;16329:21:10;16309:18;;-1:-1:-1;16329:21:10;-1:-1:-1;16301:50:10;;-1:-1:-1;;;16301:50:10;15134:1234;;;:::o;1670:865:3:-;1876:14;;1842:79;;;-1:-1:-1;;;1842:79:3;;-1:-1:-1;;;;;1876:14:3;;;1842:79;;;;;;;;;;;;;;;;;;;326:42:11;;1842:33:3;;:79;;;;;;;;;;;;;;326:42:11;1842:79:3;;;5:2:-1;;;;30:1;27;20:12;5:2;1842:79:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1842:79:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1842:79:3;1834:97;;;;;-1:-1:-1;;;1834:97:3;;;;;;;;;;;;-1:-1:-1;;;1834:97:3;;;;;;;;;;;;;;;2018:11;2014:40;;;2031:23;:21;:23::i;:::-;2099:25;2127:14;;-1:-1:-1;;;;;2188:32:3;;;-1:-1:-1;;;;;;2188:32:3;;;;;2345:81;;;;;;;;;;;;;;;;;2127:14;;;;;2316:122;;2338:4;;2401:24;;2345:81;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2345:81:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2345:81:3;;;-1:-1:-1;;26:21;;;22:32;6:49;;2345:81:3;;;49:4:-1;25:18;;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2316:122:3;;;;;;;;;;;-1:-1:-1;;;2316:122:3;;;;2345:81;;-1:-1:-1;2316:122:3;-1:-1:-1;2316:13:3;;-1:-1:-1;2316:122:3:i;:::-;-1:-1:-1;2513:14:3;;2476:52;;;-1:-1:-1;;;;;2476:52:3;;;;;2513:14;;;2476:52;;;;;;;;;;;;;;;;1670:865;;;;:::o;3925:2226:10:-;4097:11;;:60;;;-1:-1:-1;;;4097:60:10;;4133:4;4097:60;;;;-1:-1:-1;;;;;4097:60:10;;;;;;;;;;;;;;;;;;;;;;4023:4;;;;4097:11;;:27;;:60;;;;;;;;;;;;;;4023:4;4097:11;:60;;;5:2:-1;;;;30:1;27;20:12;5:2;4097:60:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4097:60:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4097:60:10;;-1:-1:-1;4171:12:10;;4167:142;;4206:92;4217:27;4246:42;4290:7;4206:10;:92::i;:::-;4199:99;;;;;4167:142;4372:3;-1:-1:-1;;;;;4365:10:10;:3;-1:-1:-1;;;;;4365:10:10;;4361:103;;;4398:55;4403:15;4420:32;4398:4;:55::i;4361:103::-;4538:22;-1:-1:-1;;;;;4578:14:10;;;;;;;4574:156;;;-1:-1:-1;;;4574:156:10;;;-1:-1:-1;;;;;;4687:23:10;;;;;;;:18;:23;;;;;;;;:32;;;;;;;;;;4574:156;4805:17;4832;4859;4886;4940:34;4948:17;4967:6;4940:7;:34::i;:::-;4914:60;;-1:-1:-1;4914:60:10;-1:-1:-1;4999:18:10;4988:7;:29;;;;;;;;;4984:123;;5040:56;5045:16;5063:32;5040:4;:56::i;:::-;5033:63;;;;;;;;;;4984:123;-1:-1:-1;;;;;5151:18:10;;;;;;:13;:18;;;;;;5143:35;;5171:6;5143:7;:35::i;:::-;5117:61;;-1:-1:-1;5117:61:10;-1:-1:-1;5203:18:10;5192:7;:29;;;;;;;;;5188:122;;5244:55;5249:16;5267:31;5244:4;:55::i;5188:122::-;-1:-1:-1;;;;;5354:18:10;;;;;;:13;:18;;;;;;5346:35;;5374:6;5346:7;:35::i;:::-;5320:61;;-1:-1:-1;5320:61:10;-1:-1:-1;5406:18:10;5395:7;:29;;;;;;;;;5391:120;;5447:53;5452:16;5470:29;5447:4;:53::i;5391:120::-;-1:-1:-1;;;;;5638:18:10;;;;;;;:13;:18;;;;;;:33;;;5681:18;;;;;;:33;;;-1:-1:-1;;5784:29:10;;5780:107;;-1:-1:-1;;;;;5829:23:10;;;;;;;:18;:23;;;;;;;;:32;;;;;;;;;:47;;;5780:107;5955:3;-1:-1:-1;;;;;5941:26:10;5950:3;-1:-1:-1;;;;;5941:26:10;-1:-1:-1;;;;;;;;;;;5960:6:10;5941:26;;;;;;;;;;;;;;;;;;-1:-1:-1;6129:14:10;;3925:2226;-1:-1:-1;;;;;;;;;;3925:2226:10:o;38013:593::-;38122:4;38128;38106:5;71531:30;71551:9;71531:19;:30::i;:::-;38144:10;38157:16;:14;:16::i;:::-;38144:29;-1:-1:-1;38187:29:10;;38183:257;;38358:67;38369:5;38363:12;;;;;;;;38377:47;38358:4;:67::i;:::-;38350:79;-1:-1:-1;38427:1:10;;-1:-1:-1;38350:79:10;;-1:-1:-1;38350:79:10;38183:257;38548:51;38565:10;38577:8;38587:11;38548:16;:51::i;:::-;38541:58;;;;;71571:1;71582:29;71601:9;71582:18;:29::i;:::-;38013:593;;;;;;:::o;528:335::-;664:11;;709:26;;;-1:-1:-1;;;709:26:10;;;;577:4;;-1:-1:-1;;;;;664:11:10;;;;709:24;;:26;;;;;;;;;;;;;;;664:11;709:26;;;5:2:-1;;;;30:1;27;20:12;5:2;709:26:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;709:26:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;709:26:10;-1:-1:-1;;;;;695:40:10;:10;:40;:79;;;;;739:18;-1:-1:-1;;;;;739:33:10;;:35;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;739:35:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;739:35:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;739:35:10;695:79;694:162;;;-1:-1:-1;780:10:10;326:42:11;780:32:10;:75;;;;;816:18;-1:-1:-1;;;;;816:37:10;;:39;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;816:39:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;816:39:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;816:39:10;687:169;;;528:335;:::o;2431:306:21:-;2508:9;2519:4;2536:13;2551:18;;:::i;:::-;2573:20;2583:1;2586:6;2573:9;:20::i;:::-;2535:58;;-1:-1:-1;2535:58:21;-1:-1:-1;2614:18:21;2607:3;:25;;;;;;;;;2603:71;;-1:-1:-1;2656:3:21;-1:-1:-1;2661:1:21;;-1:-1:-1;2648:15:21;;2603:71;2692:18;2712:17;2721:7;2712:8;:17::i;:::-;2684:46;;;;;;2431:306;;;;;;:::o;3720:188:1:-;3805:10;;3837:22;;;-1:-1:-1;;;3837:22:1;;3853:4;3837:22;;;;;;3767:4;;-1:-1:-1;;;;;3805:10:1;;3767:4;;3805:10;;3837:7;;:22;;;;;;;;;;;;;;3805:10;3837:22;;;5:2:-1;;;;30:1;27;20:12;5:2;3837:22:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3837:22:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3837:22:1;3880:9;;;-1:-1:-1;;;3880:9:1;;;;3837:22;;-1:-1:-1;5894:8:1;;3876:19;;-1:-1:-1;;;;;3880:7:1;;;;;:9;;;;;3837:22;;3880:9;;;;;;;;:7;:9;;;5:2:-1;;;;30:1;27;20:12;5:2;3880:9:1;;;;8::-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3880:9:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3880:9:1;3891:3;3876;:19::i;:::-;:25;;;;;;3869:32;;;;3720:188;:::o;1184:1024::-;1339:19;1373:15;1339:50;;1399:11;1421;1399:34;;1443:11;1457:7;-1:-1:-1;;;;;1457:11:1;;:13;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1457:13:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1457:13:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1457:13:1;1494;;;-1:-1:-1;;;1494:13:1;;;;1457;;-1:-1:-1;1480:11:1;;-1:-1:-1;;;;;1494:11:1;;;;;:13;;;;;1457;;1494;;;;;;;1480:11;1494;:13;;;5:2:-1;;;;30:1;27;20:12;5:2;1494:13:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1494:13:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1494:13:1;1541:10;;1494:13;;-1:-1:-1;;;;;;1525:26:1;;;1541:10;;1525:26;1517:73;;;;-1:-1:-1;;;1517:73:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1644:14;:32;;-1:-1:-1;;;;;1644:32:1;;;-1:-1:-1;;;;;;1644:32:1;;;;;;;;1686:10;:24;;;;;;;;;;;1720:10;:25;;;;;;;;;;;;;;1819:37;;;-1:-1:-1;;;1819:37:1;;1831:14;;;1819:37;;;;-1:-1:-1;;1819:37:1;;;;;:11;;;;;;:37;;;;;1644:14;;1819:37;;;;;;;1644:14;1819:11;:37;;;5:2:-1;;;;30:1;27;20:12;5:2;1819:37:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;1940:10:1;;1931:20;;;-1:-1:-1;;;1931:20:1;;-1:-1:-1;;;;;1940:10:1;;;1931:20;;;;;;:8;;;;-1:-1:-1;1931:8:1;;-1:-1:-1;1931:20:1;;;;;1940:10;;1931:20;;;;;;;;1940:10;1931:8;:20;;;5:2:-1;;;;30:1;27;20:12;5:2;1931:20:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;1970:14:1;;1961:24;;;-1:-1:-1;;;1961:24:1;;-1:-1:-1;;;;;1970:14:1;;;1961:24;;;;;;:8;;;;-1:-1:-1;1961:8:1;;-1:-1:-1;1961:24:1;;;;;1970:14;;1961:24;;;;;;;;1970:14;1961:8;:24;;;5:2:-1;;;;30:1;27;20:12;5:2;1961:24:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1961:24:1;;;;2072:3;-1:-1:-1;;;;;2072:8:1;;:10;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2072:10:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2072:10:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2171:30:1;;-1:-1:-1;2192:4:1;2199:1;2171:12;:30::i;:::-;;1184:1024;;;;;;:::o;8568:149:20:-;8629:4;8650:33;8663:3;8658:9;;;;;;;;8674:4;8669:10;;;;;;;;8650:33;;;;;;;;;;;;;8681:1;8650:33;;;;;;;;;;;;;8706:3;8701:9;;;;;;;59995:1627:10;60062:4;60118:21;60188:16;:14;:16::i;:::-;60183:120;;60227:65;60232:18;60252:39;60227:4;:65::i;60183:120::-;60426:16;:14;:16::i;:::-;60404:18;;:38;60400:145;;60465:69;60470:22;60494:39;60465:4;:69::i;60400:145::-;60648:12;60631:14;:12;:14::i;:::-;:29;60627:150;;;60683:83;60688:29;60719:46;60683:4;:83::i;60627:150::-;60868:13;;60853:12;:28;60849:127;;;60904:61;60909:15;60926:38;60904:4;:61::i;60849:127::-;61210:33;61215:13;;61230:12;61210:4;:33::i;:::-;61314:13;:32;;;61191:52;-1:-1:-1;61463:39:10;61477:10;61489:12;61463:13;:39::i;:::-;61518:59;;;61534:10;61518:59;;;;;;;;;;;;;;;;;;;;;;;;;61600:14;61595:20;;26431:536;26522:4;26506:5;71531:30;71551:9;71531:19;:30::i;:::-;26538:10;26551:16;:14;:16::i;:::-;26538:29;-1:-1:-1;26581:29:10;;26577:246;;26751:61;26762:5;26756:12;;;;;;;;26770:41;26751:4;:61::i;26577:246::-;26920:40;26932:10;26944:1;26947:12;26920:11;:40::i;12788:1238::-;-1:-1:-1;;;;;13130:23:10;;12865:9;13130:23;;;:14;:23;;;;;13354:24;;12865:9;;;;;;;;13350:90;;-1:-1:-1;13407:18:10;;-1:-1:-1;13407:18:10;;-1:-1:-1;13399:30:10;;-1:-1:-1;;;13399:30:10;13350:90;13662:46;13670:14;:24;;;13696:11;;13662:7;:46::i;:::-;13629:79;;-1:-1:-1;13629:79:10;-1:-1:-1;13733:18:10;13722:7;:29;;;;;;;;;13718:79;;-1:-1:-1;13775:7:10;;-1:-1:-1;13784:1:10;;-1:-1:-1;13767:19:10;;-1:-1:-1;;13767:19:10;13718:79;13827:58;13835:19;13856:14;:28;;;13827:7;:58::i;:::-;13807:78;;-1:-1:-1;13807:78:10;-1:-1:-1;13910:18:10;13899:7;:29;;;;;;;;;13895:79;;-1:-1:-1;13952:7:10;;-1:-1:-1;13961:1:10;;-1:-1:-1;13944:19:10;;-1:-1:-1;;13944:19:10;13895:79;-1:-1:-1;13992:18:10;;-1:-1:-1;14012:6:10;-1:-1:-1;;;12788:1238:10;;;;:::o;62718:1424::-;62789:4;62845:21;62990:16;:14;:16::i;:::-;62968:18;;:38;62964:148;;63029:72;63034:22;63058:42;63029:4;:72::i;62964:148::-;63215:14;63198;:12;:14::i;:::-;:31;63194:155;;;63252:86;63257:29;63288:49;63252:4;:86::i;63194:155::-;63444:13;;63427:14;:30;63423:132;;;63480:64;63485:15;63502:41;63480:4;:64::i;63423:132::-;63791:35;63796:13;;63811:14;63791:4;:35::i;:::-;63899:13;:32;;;63772:54;-1:-1:-1;64048:49:10;326:42:11;64082:14:10;64048:13;:49::i;20737:546::-;20814:4;20820;20798:5;71531:30;71551:9;71531:19;:30::i;:::-;20836:10;20849:16;:14;:16::i;:::-;20836:29;-1:-1:-1;20879:29:10;;20875:249;;21050:59;21061:5;21055:12;;;;;;;;21069:39;21050:4;:59::i;20875:249::-;21243:33;21253:10;21265;21243:9;:33::i;16859:1071::-;16901:4;16965:23;16991:16;:14;:16::i;:::-;16965:42;;17096:18;17074;;:40;17070:98;;;17142:14;17130:27;;;;;17070:98;17232:14;17249;:12;:14::i;:::-;17232:31;;17331:23;17357:17;;;;;;;;;-1:-1:-1;;;;;17357:17:10;-1:-1:-1;;;;;17357:31:10;;17389:9;17400:12;;17414:56;17419:13;;17434:35;17439:14;;17455:13;;17434:4;:35::i;17414:56::-;17357:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17357:114:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17357:114:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17357:114:10;;-1:-1:-1;1314:9:11;17489:43:10;;;17481:84;;;;;-1:-1:-1;;;17481:84:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;17653:17;17672:15;17691:47;17699:18;17719;;17691:7;:47::i;:::-;17652:86;;-1:-1:-1;17652:86:10;-1:-1:-1;17767:18:10;17756:7;:29;;;;;;;;;17748:73;;;;;-1:-1:-1;;;17748:73:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;17839:84;17861:18;17881:9;17892:18;17912:10;17839:21;:84::i;:::-;17832:91;;;;;;;16859:1071;:::o;65247:1492::-;65319:4;65376:22;65522:16;:14;:16::i;:::-;65500:18;;:38;65496:149;;65561:73;65566:22;65590:43;65561:4;:73::i;65496:149::-;65748:14;65731;:12;:14::i;:::-;:31;65727:156;;;65785:87;65790:29;65821:50;65785:4;:87::i;65727:156::-;65980:14;;65963;:31;65959:134;;;66017:65;66022:15;66039:42;66017:4;:65::i;65959:134::-;66331:36;66336:14;;66352;66331:4;:36::i;:::-;66311:56;;66459:17;66442:14;:34;;;;66593:101;66654:11;;;;;;;;;-1:-1:-1;;;;;66654:11:10;-1:-1:-1;;;;;66623:50:10;;:52;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;66623:52:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;66623:52:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;66623:52:10;66679:14;66593:13;:101::i;3095:114:22:-;3148:4;3171:31;3176:1;3179;3171:31;;;;;;;;;;;;;-1:-1:-1;;;3171:31:22;;;:4;:31::i;50058:3037:10:-;50247:11;;:87;;;-1:-1:-1;;;50247:87:10;;50280:4;50247:87;;;;-1:-1:-1;;;;;50247:87:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;50176:4;;;;50247:11;;:24;;:87;;;;;;;;;;;;;;50176:4;50247:11;:87;;;5:2:-1;;;;30:1;27;20:12;5:2;50247:87:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;50247:87:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;50247:87:10;;-1:-1:-1;50348:12:10;;50344:149;;50383:99;50394:27;50423:49;50474:7;50383:10;:99::i;50344:149::-;50563:10;-1:-1:-1;;;;;50551:22:10;:8;-1:-1:-1;;;;;50551:22:10;;50547:144;;;50596:84;50601:26;50629:50;50596:4;:84::i;50547:144::-;50701:34;;:::i;:::-;-1:-1:-1;;;;;51065:23:10;;;;;;:13;:23;;;;;;51057:45;;51090:11;51057:7;:45::i;:::-;51031:22;;;51016:86;;;51017:4;51016:86;;;;;;;;;;;;;;;;;;;-1:-1:-1;51132:18:10;;-1:-1:-1;51116:12:10;;:34;;;;;;;;;51112:174;;51173:102;51184:16;51202:52;51261:4;:12;;;51256:18;;;;;;;;51173:10;:102::i;:::-;51166:109;;;;;;51112:174;51323:62;51328:11;51341:43;;;;;;;;4259:6:11;51341:43:10;;;51323:4;:62::i;:::-;51296:24;;;:89;;;51424:43;;51429:11;;51424:4;:43::i;:::-;51395:26;;;:72;51522:28;:26;:28::i;:::-;51493:25;;;51478:72;;;51479:4;51478:72;;;;;;;;;;;;;;;;;;;-1:-1:-1;51584:18:10;;-1:-1:-1;51568:12:10;;:34;;;;;;;;;51560:71;;;;;-1:-1:-1;;;51560:71:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;51669:88;51688:42;;;;;;;;51703:4;:25;;;51688:42;;;51732:4;:24;;;51669:18;:88::i;:::-;51642:24;;;:115;;;51797:13;;51792:45;;:4;:45::i;:::-;51768:21;;;:69;51874:11;;51887:24;;;;51869:43;;51874:11;51869:4;:43::i;:::-;51847:19;;;:65;-1:-1:-1;;;;;51974:25:10;;;;;;:13;:25;;;;;;52001:26;;;;51966:62;;51974:25;51966:7;:62::i;:::-;51938:24;;;51923:105;;;51924:4;51923:105;;;;;;;;;;;;;;;;;;;-1:-1:-1;52058:18:10;;-1:-1:-1;52042:12:10;;:34;;;;;;;;;52038:174;;52099:102;52110:16;52128:52;52187:4;:12;;;52182:18;;;;;;;52038:174;52424:21;;;;52408:13;:37;52469:19;;;;52455:11;:33;52524:22;;;;;-1:-1:-1;;;;;52498:23:10;;;-1:-1:-1;52498:23:10;;;:13;:23;;;;;;:48;;;;52584:24;;;;52556:25;;;;;;;;;;:52;;;;52691:26;;;;52660:58;;;;;;;52556:25;;52498:23;;-1:-1:-1;;;;;;;;;;;52660:58:10;;;;;;;;;;52767:24;;;;52733:59;;;;;;;52760:4;;-1:-1:-1;;;;;52733:59:10;;;-1:-1:-1;;;;;;;;;;;52733:59:10;;;;;;;;52836:24;;;;52862:21;;;;52807:77;;;52829:4;52807:77;;;;;;;;;;;;;;;;;;;;;;;;;;53073:14;53061:27;50058:3037;-1:-1:-1;;;;;;;50058:3037:10:o;32601:523::-;32682:4;32666:5;71531:30;71551:9;71531:19;:30::i;:::-;32698:10;32711:16;:14;:16::i;:::-;32698:29;-1:-1:-1;32741:29:10;;32737:246;;32911:61;32922:5;32916:12;;;;;;;;32930:41;32911:4;:61::i;32737:246::-;33080:37;33092:10;33104:12;33080:11;:37::i;25533:526::-;25614:4;25598:5;71531:30;71551:9;71531:19;:30::i;:::-;25630:10;25643:16;:14;:16::i;:::-;25630:29;-1:-1:-1;25673:29:10;;25669:246;;25843:61;25854:5;25848:12;;;;;;;25669:246;26012:40;26024:10;26036:12;26050:1;26012:11;:40::i;43181:986::-;43322:4;43328;43306:5;71531:30;71551:9;71531:19;:30::i;:::-;43344:10;43357:16;:14;:16::i;:::-;43344:29;-1:-1:-1;43387:29:10;;43383:266;;43563:71;43574:5;43568:12;;;;;;;;43582:51;43563:4;:71::i;:::-;43555:83;-1:-1:-1;43636:1:10;;-1:-1:-1;43555:83:10;;-1:-1:-1;43555:83:10;43383:266;43667:16;-1:-1:-1;;;;;43667:31:10;;:33;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;43667:33:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;43667:33:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;43667:33:10;;-1:-1:-1;43714:29:10;;43710:270;;43890:75;43901:5;43895:12;;;;;;;;43909:55;43890:4;:75::i;43710:270::-;44087:73;44108:10;44120:8;44130:11;44143:16;44087:20;:73::i;:::-;44080:80;;;;;71571:1;71582:29;71601:9;71582:18;:29::i;:::-;43181:986;;;;;;;:::o;39291:3373::-;39469:11;;:75;;;-1:-1:-1;;;39469:75:10;;39508:4;39469:75;;;;-1:-1:-1;;;;;39469:75:10;;;;;;;;;;;;;;;;;;;;;;39386:4;;;;;;39469:11;;;:30;;:75;;;;;;;;;;;;;;;39386:4;39469:11;:75;;;5:2:-1;;;;30:1;27;20:12;5:2;39469:75:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;39469:75:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;39469:75:10;;-1:-1:-1;39558:12:10;;39554:151;;39594:96;39605:27;39634:46;39682:7;39594:10;:96::i;:::-;39586:108;-1:-1:-1;39692:1:10;;-1:-1:-1;39586:108:10;;-1:-1:-1;39586:108:10;39554:151;39812:16;:14;:16::i;:::-;39790:18;;:38;39786:151;;39852:70;39857:22;39881:40;39852:4;:70::i;39786:151::-;39947:32;;:::i;:::-;-1:-1:-1;;;;;40090:24:10;;;;;;:14;:24;;;;;:38;;;40069:18;;;:59;40256:37;40105:8;40256:27;:37::i;:::-;40233:19;;;40218:75;;;40219:12;;;40218:75;;;;;;;;;;;;;;;;;;;-1:-1:-1;40323:18:10;;-1:-1:-1;40307:4:10;:12;;;:34;;;;;;;;;40303:190;;40365:113;40376:16;40394:63;40464:4;:12;;;40459:18;;;;;;;40365:113;40357:125;-1:-1:-1;40480:1:10;;-1:-1:-1;40357:125:10;;-1:-1:-1;;40357:125:10;40303:190;-1:-1:-1;;40572:11:10;:23;40568:153;;;40630:19;;;;40611:16;;;:38;40568:153;;;40680:16;;;:30;;;40568:153;41306:37;41319:5;41326:4;:16;;;41306:12;:37::i;:::-;41281:22;;;:62;;;41646:19;;;;41638:52;;:7;:52::i;:::-;41612:22;;;41597:93;;;41598:12;;;41597:93;;;;;;;;;;;;;;;;;;;-1:-1:-1;41724:18:10;;-1:-1:-1;41708:4:10;:12;;;:34;;;;;;;;;41700:105;;;;-1:-1:-1;;;41700:105:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41855:45;41863:12;;41877:4;:22;;;41855:7;:45::i;:::-;41831:20;;;41816:84;;;41817:12;;;41816:84;;;;;;;;;;;;;;;;;;;-1:-1:-1;41934:18:10;;-1:-1:-1;41918:4:10;:12;;;:34;;;;;;;;;41910:96;;;;-1:-1:-1;;;41910:96:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42123:22;;;;;;-1:-1:-1;;;;;42086:24:10;;;;;;;:14;:24;;;;;;;;;:59;;;42196:11;;42155:38;;;;:52;;;;42232:20;;;;42217:12;:35;;;42339:22;;;;42363;;42310:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42634:22;;;42617:14;;-1:-1:-1;42634:22:10;-1:-1:-1;;39291:3373:10;;;;;;;:::o;3355:118::-;3416:4;326:42:11;-1:-1:-1;;;;;3439:25:10;;:27;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;1926:263:12;1997:9;2008:4;2025:14;2041:8;2053:13;2061:1;2064;2053:7;:13::i;:::-;2024:42;;-1:-1:-1;2024:42:12;-1:-1:-1;2089:18:12;2081:4;:26;;;;;;;;;2077:73;;-1:-1:-1;2131:4:12;-1:-1:-1;2137:1:12;;-1:-1:-1;2123:16:12;;2077:73;2167:15;2175:3;2180:1;2167:7;:15::i;:::-;2160:22;;;;;;1926:263;;;;;;:::o;771:503:21:-;832:9;843:10;;:::i;:::-;866:14;882:20;906:22;914:3;409:4:22;906:7:21;:22::i;:::-;865:63;;-1:-1:-1;865:63:21;-1:-1:-1;950:18:21;942:4;:26;;;;;;;;;938:90;;-1:-1:-1;998:18:21;;;;;;;;;-1:-1:-1;998:18:21;;992:4;;-1:-1:-1;998:18:21;-1:-1:-1;984:33:21;;938:90;1039:14;1055:13;1072:31;1080:15;1097:5;1072:7;:31::i;:::-;1038:65;;-1:-1:-1;1038:65:21;-1:-1:-1;1125:18:21;1117:4;:26;;;;;;;;;1113:90;;-1:-1:-1;1173:18:21;;;;;;;;;-1:-1:-1;1173:18:21;;1167:4;;-1:-1:-1;1173:18:21;-1:-1:-1;1159:33:21;;-1:-1:-1;;1159:33:21;1113:90;1241:25;;;;;;;;;;;;-1:-1:-1;;1241:25:21;;-1:-1:-1;771:503:21;-1:-1:-1;;;;;;771:503:21:o;2293:667:1:-;2464:14;;2511:10;;2554;;2607;;;-1:-1:-1;;;2607:10:1;;;;-1:-1:-1;;;;;2464:14:1;;;;2511:10;;;;2554;;;;2511;;2607:8;;:10;;;;;;;;;;;;;;2430:19;2511:10;2607;;;5:2:-1;;;;30:1;27;20:12;5:2;2607:10:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2607:10:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;2705:22:1;;;-1:-1:-1;;;2705:22:1;;2721:4;2705:22;;;;;;2694:8;;-1:-1:-1;;;;;2705:7:1;;;;;:22;;;;;2607:10;;2705:22;;;;;;;;:7;:22;;;5:2:-1;;;;30:1;27;20:12;5:2;2705:22:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2705:22:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2705:22:1;2737:13;;;-1:-1:-1;;;2737:13:1;;;;;;;;;;2705:22;;-1:-1:-1;;;;;;2737:8:1;;;;;:13;;;;;-1:-1:-1;;2737:13:1;;;;;;;;-1:-1:-1;2737:8:1;:13;;;5:2:-1;;;;30:1;27;20:12;5:2;2737:13:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;2846:22:1;;;-1:-1:-1;;;2846:22:1;;2862:4;2846:22;;;;;;2835:8;;-1:-1:-1;;;;;;2846:7:1;;;-1:-1:-1;2846:7:1;;:22;;;;;;;;;;;;;;;:7;:22;;;5:2:-1;;;;30:1;27;20:12;5:2;2846:22:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2846:22:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2846:22:1;2915:38;;;-1:-1:-1;;;2915:38:1;;2936:4;2915:38;;;;5894:8;2943:9;;2915:38;;;;;;2846:22;;-1:-1:-1;;;;;;2915:12:1;;;;;:38;;;;;-1:-1:-1;;2915:38:1;;;;;;;;-1:-1:-1;2915:12:1;:38;;;5:2:-1;;;;30:1;27;20:12;5:2;2915:38:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2915:38:1;;;;2293:667;;;;;:::o;73327:765:10:-;73431:12;73456;73470:23;73497:6;-1:-1:-1;;;;;73497:11:10;73509:4;73497:17;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;73497:17:10;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;73455:59:10;;;;73530:7;73525:533;;73623:17;;:21;73619:429;;73881:10;73875:17;73941:15;73928:10;73924:2;73920:19;73913:44;73830:145;74020:12;74013:20;;-1:-1:-1;;;74013:20:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;74013:20:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;73619:429;74075:10;73327:765;-1:-1:-1;;;;;73327:765:10:o;8835:241:20:-;8920:4;8941:43;8954:3;8949:9;;;;;;;;8965:4;8960:10;;;;;;;;8941:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;9009:27;9002:3;:34;;;;;;;;;:67;;9065:3;9060:9;;;;;;;;9002:67;;;-1:-1:-1;9039:4:20;:18;;8995:74;-1:-1:-1;;8835:241:20:o;1302:230:12:-;1358:9;1369:4;1394:1;1389;:6;1385:141;;-1:-1:-1;1419:18:12;;-1:-1:-1;1439:5:12;;;1411:34;;1385:141;-1:-1:-1;1484:27:12;;-1:-1:-1;1513:1:12;1476:39;;1612:250;1668:9;;1704:5;;;1724:6;;;1720:136;;1754:18;;-1:-1:-1;1774:1:12;-1:-1:-1;1746:30:12;;1720:136;-1:-1:-1;1815:26:12;;-1:-1:-1;1843:1:12;;-1:-1:-1;1807:38:12;;1977:346:21;2046:9;2057:10;;:::i;:::-;2080:14;2096:19;2119:27;2127:1;:10;;;2139:6;2119:7;:27::i;:::-;2079:67;;-1:-1:-1;2079:67:21;-1:-1:-1;2168:18:21;2160:4;:26;;;;;;;;;2156:90;;-1:-1:-1;2216:18:21;;;;;;;;;-1:-1:-1;2216:18:21;;2210:4;;-1:-1:-1;2216:18:21;-1:-1:-1;2202:33:21;;2156:90;2284:31;;;;;;;;;;;;-1:-1:-1;;2284:31:21;;-1:-1:-1;1977:346:21;-1:-1:-1;;;;1977:346:21:o;788:210:22:-;968:12;409:4;968:23;;;788:210::o;6033:132:1:-;6085:6;6111;;;:30;;-1:-1:-1;;6126:5:1;;;6140:1;6135;6126:5;6135:1;6121:15;;;;;:20;6111:30;6103:55;;;;;-1:-1:-1;;;6103:55:1;;;;;;;;;;;;-1:-1:-1;;;6103:55:1;;;;;;;;;;;;;;4166:988;4329:10;;4358:47;;;-1:-1:-1;;;4358:47:1;;-1:-1:-1;;;;;4358:47:1;;;;;;;4391:4;4358:47;;;;;;;;;;;;4233:4;;4329:10;;;;;;;4358:18;;:47;;;;;;;;;;;;;;4233:4;4329:10;4358:47;;;5:2:-1;;;;30:1;27;20:12;5:2;4358:47:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4358:47:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4358:47:1;4350:96;;;;-1:-1:-1;;;4350:96:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4491:14;;4538:10;;4581;;4624;;4732:28;;;-1:-1:-1;;;4732:28:1;;4725:4;4732:28;;;;;;;;-1:-1:-1;;;;;4491:14:1;;;;4538:10;;;;4581;;;;4624;;;;4491:14;;4704:12;;4725:4;;4538:10;;4732:13;;:28;;;;;;;;;;;;;;4538:10;4732:28;;;5:2:-1;;;;30:1;27;20:12;5:2;4732:28:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4732:28:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4732:28:1;4704:57;;;-1:-1:-1;;;;;;4704:57:1;;;;;;;-1:-1:-1;;;;;4704:57:1;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4704:57:1;;;;;;;-1:-1:-1;4704:57:1;;;;5:2:-1;;;;30:1;27;20:12;5:2;4704:57:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;4853:22:1;;;-1:-1:-1;;;4853:22:1;;4869:4;4853:22;;;;;;4842:8;;-1:-1:-1;;;;;;4853:7:1;;;-1:-1:-1;4853:7:1;;:22;;;;;;;;;;;;;;;:7;:22;;;5:2:-1;;;;30:1;27;20:12;5:2;4853:22:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4853:22:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4853:22:1;5091:9;;;-1:-1:-1;;;5091:9:1;;;;4853:22;;-1:-1:-1;5074:8:1;;-1:-1:-1;;;;;5091:7:1;;;;;:9;;;;;4853:22;;5091:9;;;;;;;:7;:9;;;5:2:-1;;;;30:1;27;20:12;5:2;5091:9:1;;;;8::-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5091:9:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5091:9:1;5085:3;5091:9;5085:15;;;;;5074:26;;5110:3;-1:-1:-1;;;;;5110:8:1;;5119:3;5110:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5110:13:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;5141:6:1;;4166:988;-1:-1:-1;;;;;;;;;;;;4166:988:1:o;3712:118:22:-;3765:4;3788:35;3793:1;3796;3788:35;;;;;;;;;;;;;-1:-1:-1;;;3788:35:22;;;:4;:35::i;5365:469:1:-;5474:14;;5521:10;;5756:9;;;-1:-1:-1;;;5756:9:1;;;;-1:-1:-1;;;;;5474:14:1;;;;5521:10;;;;5440:19;;5733:36;;5521:10;;5756:7;;:9;;;;;;;;;;;;;;5521:10;5756:9;;;5:2:-1;;;;30:1;27;20:12;5:2;5756:9:1;;;;8::-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5756:9:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5756:9:1;5737:16;5741:6;5894:8;5737:3;:16::i;:::-;:28;;;;;;5767:1;5733:3;:36::i;:::-;5722:47;;5779:3;-1:-1:-1;;;;;5779:8:1;;5788:3;5779:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5779:13:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5779:13:1;;;;5803:7;-1:-1:-1;;;;;5803:12:1;;5816:2;5820:6;5803:24;;;;;;;;;;;;;-1:-1:-1;;;;;5803:24:1;-1:-1:-1;;;;;5803:24:1;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;27836:4504:10;27943:4;27967:19;;;:42;;-1:-1:-1;27990:19:10;;27967:42;27959:107;;;;-1:-1:-1;;;27959:107:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28077:27;;:::i;:::-;28218:28;:26;:28::i;:::-;28189:25;;;28174:72;;;28175:12;;;28174:72;;;;;;;;;;;;;;;;;;;-1:-1:-1;28276:18:10;;-1:-1:-1;28260:4:10;:12;;;:34;;;;;;;;;28256:166;;28317:94;28328:16;28346:44;28397:4;:12;;;28392:18;;;;;;;28317:94;28310:101;;;;;28256:166;28473:18;;28469:1265;;28743:17;;;:34;;;28846:42;;;;;;;;28861:25;;;;28846:42;;28828:77;;28763:14;28828:17;:77::i;:::-;28807:17;;;28792:113;;;28793:12;;;28792:113;;;;;;;;;;;;;;;;;;;-1:-1:-1;28939:18:10;;-1:-1:-1;28923:4:10;:12;;;:34;;;;;;;;;28919:183;;28984:103;28995:16;29013:53;29073:4;:12;;;29068:18;;;;;;;28919:183;28469:1265;;;29396:82;29419:14;29435:42;;;;;;;;29450:4;:25;;;29435:42;;;29396:22;:82::i;:::-;29375:17;;;29360:118;;;29361:12;;;29360:118;;;;;;;;;;;;;;;;;;;-1:-1:-1;29512:18:10;;-1:-1:-1;29496:4:10;:12;;;:34;;;;;;;;;29492:183;;29557:103;29568:16;29586:53;29646:4;:12;;;29641:18;;;;;;;29492:183;29689:17;;;:34;;;28469:1265;29800:11;;29851:17;;;;29800:69;;;-1:-1:-1;;;29800:69:10;;29834:4;29800:69;;;;-1:-1:-1;;;;;29800:69:10;;;;;;;;;;;;;;;;29785:12;;29800:11;;;;;:25;;:69;;;;;;;;;;;;;;;29785:12;29800:11;:69;;;5:2:-1;;;;30:1;27;20:12;5:2;29800:69:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29800:69:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;29800:69:10;;-1:-1:-1;29883:12:10;;29879:140;;29918:90;29929:27;29958:40;30000:7;29918:10;:90::i;:::-;29911:97;;;;;;29879:140;30126:16;:14;:16::i;:::-;30104:18;;:38;30100:140;;30165:64;30170:22;30194:34;30165:4;:64::i;30100:140::-;30528:39;30536:11;;30549:4;:17;;;30528:7;:39::i;:::-;30505:19;;;30490:77;;;30491:12;;;30490:77;;;;;;;;;;;;;;;;;;;-1:-1:-1;30597:18:10;;-1:-1:-1;30581:4:10;:12;;;:34;;;;;;;;;30577:176;;30638:104;30649:16;30667:54;30728:4;:12;;;30723:18;;;;;;;30577:176;-1:-1:-1;;;;;30811:23:10;;;;;;:13;:23;;;;;;30836:17;;;;30803:51;;30811:23;30803:7;:51::i;:::-;30778:21;;;30763:91;;;30764:12;;;30763:91;;;;;;;;;;;;;;;;;;;-1:-1:-1;30884:18:10;;-1:-1:-1;30868:4:10;:12;;;:34;;;;;;;;;30864:179;;30925:107;30936:16;30954:57;31018:4;:12;;;31013:18;;;;;;;30864:179;31138:4;:17;;;31121:14;:12;:14::i;:::-;:34;31117:153;;;31178:81;31183:29;31214:44;31178:4;:81::i;31117:153::-;31476:19;;;;31462:11;:33;31531:21;;;;-1:-1:-1;;;;;31505:23:10;;;;;;:13;:23;;;;;:47;31944:17;;;;31920:42;;31519:8;;31920:13;:42::i;:::-;32071:17;;;;32037:52;;;;;;;32064:4;;-1:-1:-1;;;;;32037:52:10;;;-1:-1:-1;;;;;;;;;;;32037:52:10;;;;;;;;32121:17;;;;32140;;;;;32104:54;;;-1:-1:-1;;;;;32104:54:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32208:11;;32258:17;;;;32277;;;;32208:87;;;-1:-1:-1;;;32208:87:10;;32241:4;32208:87;;;;-1:-1:-1;;;;;32208:87:10;;;;;;;;;;;;;;;;;;;;;;:11;;;;;:24;;:87;;;;;:11;;:87;;;;;;;:11;;:87;;;5:2:-1;;;;30:1;27;20:12;5:2;32208:87:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;32318:14:10;;-1:-1:-1;32313:20:10;;-1:-1:-1;;32313:20:10;;32306:27;27836:4504;-1:-1:-1;;;;;;27836:4504:10:o;542:331:12:-;598:9;;629:6;625:67;;-1:-1:-1;659:18:12;;-1:-1:-1;659:18:12;651:30;;625:67;711:5;;;715:1;711;:5;:1;731:5;;;;;:10;727:140;;-1:-1:-1;765:26:12;;-1:-1:-1;793:1:12;;-1:-1:-1;757:38:12;;727:140;834:18;;-1:-1:-1;854:1:12;-1:-1:-1;826:30:12;;963:209;1019:9;;1050:6;1046:75;;-1:-1:-1;1080:26:12;;-1:-1:-1;1108:1:12;1072:38;;1046:75;1139:18;1163:1;1159;:5;;;;;;1131:34;;;;963:209;;;;;:::o;21974:3216:10:-;22120:11;;:58;;;-1:-1:-1;;;22120:58:10;;22152:4;22120:58;;;;-1:-1:-1;;;;;22120:58:10;;;;;;;;;;;;;;;22044:4;;;;;;22120:11;;;:23;;:58;;;;;;;;;;;;;;;22044:4;22120:11;:58;;;5:2:-1;;;;30:1;27;20:12;5:2;22120:58:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22120:58:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22120:58:10;;-1:-1:-1;22192:12:10;;22188:143;;22228:88;22239:27;22268:38;22308:7;22228:10;:88::i;:::-;22220:100;-1:-1:-1;22318:1:10;;-1:-1:-1;22220:100:10;;-1:-1:-1;22220:100:10;22188:143;22438:16;:14;:16::i;:::-;22416:18;;:38;22412:143;;22478:62;22483:22;22507:32;22478:4;:62::i;22412:143::-;22565:25;;:::i;:::-;22645:28;:26;:28::i;:::-;22616:25;;;22601:72;;;22602:12;;;22601:72;;;;;;;;;;;;;;;;;;;-1:-1:-1;22703:18:10;;-1:-1:-1;22687:4:10;:12;;;:34;;;;;;;;;22683:169;;22745:92;22756:16;22774:42;22823:4;:12;;;22818:18;;;;;;;22745:92;22737:104;-1:-1:-1;22839:1:10;;-1:-1:-1;22737:104:10;;-1:-1:-1;;22737:104:10;22683:169;23809:32;23822:6;23830:10;23809:12;:32::i;:::-;23785:21;;;:56;;;24107:42;;;;;;;;24122:25;;;;24107:42;;24061:89;;23785:56;24061:22;:89::i;:::-;24042:15;;;24027:123;;;24028:12;;;24027:123;;;;;;;;;;;;;;;;;;;-1:-1:-1;24184:18:10;;-1:-1:-1;24168:4:10;:12;;;:34;;;;;;;;;24160:79;;;;;-1:-1:-1;;;24160:79:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24520:34;24525:11;;24538:4;:15;;;24520:4;:34::i;:::-;24498:19;;;:56;-1:-1:-1;;;;;24594:21:10;;;;;;:13;:21;;;;;;24617:15;;;;24589:44;;24594:21;24589:4;:44::i;:::-;24565:21;;;:68;;;24723:19;;;;24709:11;:33;-1:-1:-1;;;;;24752:21:10;;;;;;:13;:21;;;;;;;;;:45;;;;24883:21;;;;24906:15;;;;;24870:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24969:15;;;;24937:48;;;;;;;-1:-1:-1;;;;;24937:48:10;;;24954:4;;-1:-1:-1;;;;;;;;;;;24937:48:10;;;;;;;;25035:11;;25081:21;;;;25104:15;;;;25035:85;;;-1:-1:-1;;;25035:85:10;;25066:4;25035:85;;;;-1:-1:-1;;;;;25035:85:10;;;;;;;;;;;;;;;;;;;;;;:11;;;;;:22;;:85;;;;;:11;;:85;;;;;;;:11;;:85;;;5:2:-1;;;;30:1;27;20:12;5:2;25035:85:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;25144:14:10;;-1:-1:-1;25139:20:10;;-1:-1:-1;;25139:20:10;;25161:4;:21;;;25131:52;;;;;;21974:3216;;;;;:::o;18030:2317::-;18161:4;18804:31;;:::i;:::-;18838:53;18843:35;;;;;;;;18858:18;18843:35;;;18880:10;18838:4;:53::i;:::-;18804:87;;18901:24;18928:54;18947:20;18969:12;;18928:18;:54::i;:::-;18901:81;;18992:20;19015:39;19020:19;19041:12;;19015:4;:39::i;:::-;18992:62;;19064:21;19088:101;19114:38;;;;;;;;19129:21;;19114:38;;;19154:19;19175:13;;19088:25;:101::i;:::-;19064:125;;19199:21;19223:95;19249:32;;;;;;;;19264:15;;19249:32;;;19283:19;19304:13;;19223:25;:95::i;:::-;19199:119;;19328:22;19353:97;19379:33;;;;;;;;19394:16;;19379:33;;;19414:19;19435:14;;19353:25;:97::i;:::-;19328:122;;19460:19;19482:73;19508:20;19530:11;;19543;;19482:25;:73::i;:::-;19752:18;:39;;;19801:11;:28;;;19839:12;:30;;;19879:13;:32;;;19921:13;:32;;;19963:14;:34;;;20059:79;;;;;;;;;;;;;;;;;;;;;;;;;;19460:95;;-1:-1:-1;20059:79:10;;;;;;;;;;20203:17;;20227:74;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;20227:74:10;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;20195:107:10;;;;-1:-1:-1;;;;;20203:17:10;;;;20227:74;;20195:107;;;;25:18:-1;20195:107:10;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;20195:107:10;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;-1:-1;20325:14:10;;-1:-1:-1;20320:20:10;;-1:-1:-1;20320:20:10;;20313:27;18030:2317;-1:-1:-1;;;;;;;;;;;;18030:2317:10:o;3215:175:22:-;3296:4;3321:5;;;3352:12;3344:6;;;;3336:29;;;;-1:-1:-1;;;3336:29:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;4297:119:22;4356:4;409;4379:19;4384:1;4387;:10;;;4379:4;:19::i;:::-;:30;;;;;;;4297:119;-1:-1:-1;;;4297:119:22:o;1106:171::-;1184:4;1200:18;;:::i;:::-;1221:15;1226:1;1229:6;1221:4;:15::i;:::-;1200:36;;1253:17;1262:7;1253:8;:17::i;33537:3334:10:-;33693:11;;:64;;;-1:-1:-1;;;33693:64:10;;33727:4;33693:64;;;;-1:-1:-1;;;;;33693:64:10;;;;;;;;;;;;;;;33621:4;;;;33693:11;;:25;;:64;;;;;;;;;;;;;;33621:4;33693:11;:64;;;5:2:-1;;;;30:1;27;20:12;5:2;33693:64:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;33693:64:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;33693:64:10;;-1:-1:-1;33771:12:10;;33767:140;;33806:90;33817:27;33846:40;33888:7;33806:10;:90::i;:::-;33799:97;;;;;33767:140;34014:16;:14;:16::i;:::-;33992:18;;:38;33988:140;;34053:64;34058:22;34082:34;34053:4;:64::i;33988:140::-;34213:14;34230;:12;:14::i;:::-;34213:31;;34271:12;34259:9;:24;34255:136;;;34306:74;34311:29;34342:37;34306:4;:74::i;:::-;34299:81;;;;;;34255:136;34401:27;;:::i;:::-;34709:37;34737:8;34709:27;:37::i;:::-;34686:19;;;34671:75;;;34672:4;34671:75;;;;;;;;;;;;;;;;;;;-1:-1:-1;34776:18:10;;-1:-1:-1;34760:12:10;;:34;;;;;;;;;34756:179;;34817:107;34828:16;34846:57;34910:4;:12;;;34905:18;;;;;;;34817:107;34810:114;;;;;;;34756:179;34986:42;34994:4;:19;;;35015:12;34986:7;:42::i;:::-;34960:22;;;34945:83;;;34946:4;34945:83;;;;;;;;;;;;;;;;;;;-1:-1:-1;35058:18:10;;-1:-1:-1;35042:12:10;;:34;;;;;;;;;35038:186;;35099:114;35110:16;35128:64;35199:4;:12;;;35194:18;;;;;;;35038:186;35301:11;;35347:22;;;;;35301:69;;-1:-1:-1;;;35301:69:10;;35340:4;35301:69;;;;;;;;;;;;;-1:-1:-1;;;;;35301:11:10;;;;:30;;:69;;;;;;;;;;;;;;;:11;;:69;;;5:2:-1;;;;30:1;27;20:12;5:2;35301:69:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;35301:69:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;35301:69:10;;-1:-1:-1;35384:12:10;;35380:140;;35419:90;35430:27;35459:40;35501:7;35419:10;:90::i;35380:140::-;35569:35;35577:12;;35591;35569:7;:35::i;:::-;35545:20;;;35530:74;;;35531:4;35530:74;;;;;;;;;;;;;;;;;;;-1:-1:-1;35634:18:10;;-1:-1:-1;35618:12:10;;:34;;;;;;;;;35614:177;;35675:105;35686:16;35704:55;35766:4;:12;;;35761:18;;;;;;;35614:177;36024:22;;;;;-1:-1:-1;;;;;35987:24:10;;;;;;:14;:24;;;;;;:59;;;36097:11;;36056:38;;;;:52;36133:20;;;;36118:12;:35;36517:37;36002:8;36541:12;36517:13;:37::i;:::-;36638:22;;;;;36662:20;;;;;36607:76;;-1:-1:-1;;;;;36607:76:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36849:14;36837:27;33537:3334;-1:-1:-1;;;;;;33537:3334:10:o;44768:3544::-;44987:11;;:111;;;-1:-1:-1;;;44987:111:10;;45030:4;44987:111;;;;-1:-1:-1;;;;;44987:111:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44906:4;;;;;;44987:11;;;:34;;:111;;;;;;;;;;;;;;;44906:4;44987:11;:111;;;5:2:-1;;;;30:1;27;20:12;5:2;44987:111:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;44987:111:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;44987:111:10;;-1:-1:-1;45112:12:10;;45108:148;;45148:93;45159:27;45188:43;45233:7;45148:10;:93::i;:::-;45140:105;-1:-1:-1;45243:1:10;;-1:-1:-1;45140:105:10;;-1:-1:-1;45140:105:10;45108:148;45363:16;:14;:16::i;:::-;45341:18;;:38;45337:148;;45403:67;45408:22;45432:37;45403:4;:67::i;45337:148::-;45628:16;:14;:16::i;:::-;45587;-1:-1:-1;;;;;45587:35:10;;:37;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;45587:37:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;45587:37:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;45587:37:10;:57;45583:178;;45668:78;45673:22;45697:48;45668:4;:78::i;45583:178::-;45831:10;-1:-1:-1;;;;;45819:22:10;:8;-1:-1:-1;;;;;45819:22:10;;45815:143;;;45865:78;45870:26;45898:44;45865:4;:78::i;45815:143::-;46010:16;46006:145;;46050:86;46055:36;46093:42;46050:4;:86::i;46006:145::-;-1:-1:-1;;46204:11:10;:23;46200:156;;;46251:90;46256:36;46294:46;46251:4;:90::i;46200:156::-;46408:21;46431:22;46457:51;46474:10;46486:8;46496:11;46457:16;:51::i;:::-;46407:101;;-1:-1:-1;46407:101:10;-1:-1:-1;46522:40:10;;46518:161;;46586:78;46597:16;46591:23;;;;;;;;46616:47;46586:4;:78::i;:::-;46578:90;-1:-1:-1;46666:1:10;;-1:-1:-1;46578:90:10;;-1:-1:-1;;;46578:90:10;46518:161;46929:11;;:102;;;-1:-1:-1;;;46929:102:10;;46979:4;46929:102;;;;-1:-1:-1;;;;;46929:102:10;;;;;;;;;;;;;;;46886:21;;;;46929:11;;;:41;;:102;;;;;;;;;;;;:11;:102;;;5:2:-1;;;;30:1;27;20:12;5:2;46929:102:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;46929:102:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;46929:102:10;;;;;;;;;-1:-1:-1;46929:102:10;-1:-1:-1;47049:40:10;;47041:104;;;;-1:-1:-1;;;47041:104:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;47276:11;47236:16;-1:-1:-1;;;;;47236:26:10;;47263:8;47236:36;;;;;;;;;;;;;-1:-1:-1;;;;;47236:36:10;-1:-1:-1;;;;;47236:36:10;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;47236:36:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;47236:36:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;47236:36:10;:51;;47228:88;;;;;-1:-1:-1;;;47228:88:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;47442:15;-1:-1:-1;;;;;47471:42:10;;47508:4;47471:42;47467:250;;;47542:63;47564:4;47571:10;47583:8;47593:11;47542:13;:63::i;:::-;47529:76;;47467:250;;;47649:57;;;-1:-1:-1;;;47649:57:10;;-1:-1:-1;;;;;47649:57:10;;;;;;;;;;;;;;;;;;;;;;:22;;;;;;:57;;;;;;;;;;;;;;;-1:-1:-1;47649:22:10;:57;;;5:2:-1;;;;30:1;27;20:12;5:2;47649:57:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;47649:57:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;47649:57:10;;-1:-1:-1;47467:250:10;47820:34;;47812:67;;;;;-1:-1:-1;;;47812:67:10;;;;;;;;;;;;-1:-1:-1;;;47812:67:10;;;;;;;;;;;;;;;47941:96;;;-1:-1:-1;;;;;47941:96:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48270:14;48257:48;-1:-1:-1;48287:17:10;;-1:-1:-1;;;;;;44768:3544:10;;;;;;;;:::o;3836:155:22:-;3917:4;3949:12;3941:6;;;;3933:29;;;;-1:-1:-1;;;3933:29:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;3933:29:22;-1:-1:-1;;;3979:5:22;;;3836:155::o;5909:118:1:-;5992:5;;;5987:16;;;;5979:41;;;;;-1:-1:-1;;;5979:41:1;;;;;;;;;;;;-1:-1:-1;;;5979:41:1;;;;;;;;;;;;;;4423:330:21;4511:9;4522:4;4539:13;4554:19;;:::i;:::-;4577:31;4592:6;4600:7;4577:14;:31::i;4160:131:22:-;4219:10;;:::i;:::-;4248:36;;;;;;;;4263:19;4268:1;:10;;;4280:1;4263:4;:19::i;:::-;4248:36;;4241:43;4160:131;-1:-1:-1;;;4160:131:22:o;1417:205::-;1515:4;1531:18;;:::i;:::-;1552:15;1557:1;1560:6;1552:4;:15::i;:::-;1531:36;;1584:31;1589:17;1598:7;1589:8;:17::i;:::-;1608:6;1584:4;:31::i;4877:120::-;4930:4;4953:37;4958:1;4961;4953:37;;;;;;;;;;;;;;;;;:4;:37::i;3712:605:21:-;3792:9;3803:10;;:::i;:::-;4100:14;4116;4134:25;409:4:22;4152:6:21;4134:7;:25::i;:::-;4099:60;;-1:-1:-1;4099:60:21;-1:-1:-1;4181:18:21;4173:4;:26;;;;;;;;;4169:90;;-1:-1:-1;4229:18:21;;;;;;;;;-1:-1:-1;4229:18:21;;4223:4;;-1:-1:-1;4229:18:21;-1:-1:-1;4215:33:21;;4169:90;4275:35;4282:9;4293:7;:16;;;4275:6;:35::i;5003:243:22:-;5084:4;5104:6;;;:16;;-1:-1:-1;5114:6:22;;5104:16;5100:55;;;-1:-1:-1;5143:1:22;5136:8;;5100:55;5173:5;;;5177:1;5173;:5;:1;5196:5;;;;;:10;5208:12;5188:33;;;;;-1:-1:-1;;;5188:33:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;171:5996:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;171:5996:1;;;-1:-1:-1;171:5996:1;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;171:5996:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;171:5996:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;171:5996:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;171:5996:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;171:5996:1;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;"},"methodIdentifiers":{"_becomeImplementation(bytes)":"56e67728","_delegateCompLikeTo(address)":"7f1e06be","_prepare()":"1db78944","_reduceReserves(uint256)":"601a0bf1","_setAdminFee(uint256)":"91dd36c6","_setImplementationSafe(address,bool,bytes)":"50d85b73","_setInterestRateModel(address)":"f2b3abbd","_setNameAndSymbol(string,string)":"34154d4c","_setReserveFactor(uint256)":"fca7820b","_withdrawAdminFees(uint256)":"a7b820df","_withdrawFuseFees(uint256)":"a03dce8d","accrualBlockNumber()":"6c540baf","accrueInterest()":"a6afed95","adminFeeMantissa()":"8d02d9a1","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","balanceOfUnderlying(address)":"3af9e669","borrow(uint256)":"c5ebeaec","borrowBalanceCurrent(address)":"17bfdfbc","borrowBalanceStored(address)":"95dd9193","borrowIndex()":"aa5af0fd","borrowRatePerBlock()":"f8f9da28","comptroller()":"5fe3b567","daiJoinAddress()":"8a8df2e6","decimals()":"313ce567","exchangeRateCurrent()":"bd6d894d","exchangeRateStored()":"182df0f5","fuseFeeMantissa()":"dbfe7c19","getAccountSnapshot(address)":"c37f68e2","getCash()":"3b1d21a2","implementation()":"5c60da1b","initialize(address,address,address,string,string,uint256,uint256)":"a0b0d289","initialize(address,address,uint256,string,string,uint8,uint256,uint256)":"0f8855e8","interestRateModel()":"f3fdb15a","isCEther()":"ac784ddc","isCToken()":"fe9c44ae","liquidateBorrow(address,uint256,address)":"f5e3c462","mint(uint256)":"a0712d68","name()":"06fdde03","potAddress()":"66ced602","protocolSeizeShareMantissa()":"6752e702","redeem(uint256)":"db006a75","redeemUnderlying(uint256)":"852a12e3","repayBorrow(uint256)":"0e752702","repayBorrowBehalf(address,uint256)":"2608f818","reserveFactorMantissa()":"173b9904","seize(address,address,uint256)":"b2a02ff1","supplyRatePerBlock()":"ae9d70b0","symbol()":"95d89b41","totalAdminFees()":"61feacff","totalBorrows()":"47bd3718","totalBorrowsCurrent()":"73acee98","totalFuseFees()":"dc028ab1","totalReserves()":"8f840ddd","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","underlying()":"6f307dc3","vatAddress()":"8d925ccd"}},"metadata":"{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"cashPrior\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"interestAccumulated\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"borrowIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalBorrows\",\"type\":\"uint256\"}],\"name\":\"AccrueInterest\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"borrowAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"accountBorrows\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalBorrows\",\"type\":\"uint256\"}],\"name\":\"Borrow\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"error\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"info\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"detail\",\"type\":\"uint256\"}],\"name\":\"Failure\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"liquidator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"repayAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"cTokenCollateral\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"seizeTokens\",\"type\":\"uint256\"}],\"name\":\"LiquidateBorrow\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"mintAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"mintTokens\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldAdminFeeMantissa\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newAdminFeeMantissa\",\"type\":\"uint256\"}],\"name\":\"NewAdminFee\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract ComptrollerInterface\",\"name\":\"oldComptroller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract ComptrollerInterface\",\"name\":\"newComptroller\",\"type\":\"address\"}],\"name\":\"NewComptroller\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldFuseFeeMantissa\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newFuseFeeMantissa\",\"type\":\"uint256\"}],\"name\":\"NewFuseFee\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldImplementation\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"NewImplementation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract InterestRateModel\",\"name\":\"oldInterestRateModel\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract InterestRateModel\",\"name\":\"newInterestRateModel\",\"type\":\"address\"}],\"name\":\"NewMarketInterestRateModel\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldReserveFactorMantissa\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newReserveFactorMantissa\",\"type\":\"uint256\"}],\"name\":\"NewReserveFactor\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"redeemer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"redeemAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"redeemTokens\",\"type\":\"uint256\"}],\"name\":\"Redeem\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"repayAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"accountBorrows\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalBorrows\",\"type\":\"uint256\"}],\"name\":\"RepayBorrow\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"benefactor\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"addAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newTotalReserves\",\"type\":\"uint256\"}],\"name\":\"ReservesAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reduceAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newTotalReserves\",\"type\":\"uint256\"}],\"name\":\"ReservesReduced\",\"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\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"_becomeImplementation\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"compLikeDelegatee\",\"type\":\"address\"}],\"name\":\"_delegateCompLikeTo\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"_prepare\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"reduceAmount\",\"type\":\"uint256\"}],\"name\":\"_reduceReserves\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newAdminFeeMantissa\",\"type\":\"uint256\"}],\"name\":\"_setAdminFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation_\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"allowResign\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"becomeImplementationData\",\"type\":\"bytes\"}],\"name\":\"_setImplementationSafe\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contract InterestRateModel\",\"name\":\"newInterestRateModel\",\"type\":\"address\"}],\"name\":\"_setInterestRateModel\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"}],\"name\":\"_setNameAndSymbol\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newReserveFactorMantissa\",\"type\":\"uint256\"}],\"name\":\"_setReserveFactor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"withdrawAmount\",\"type\":\"uint256\"}],\"name\":\"_withdrawAdminFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"withdrawAmount\",\"type\":\"uint256\"}],\"name\":\"_withdrawFuseFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"accrualBlockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"accrueInterest\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"adminFeeMantissa\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOfUnderlying\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"borrowAmount\",\"type\":\"uint256\"}],\"name\":\"borrow\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"borrowBalanceCurrent\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"borrowBalanceStored\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"borrowIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"borrowRatePerBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"comptroller\",\"outputs\":[{\"internalType\":\"contract ComptrollerInterface\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"daiJoinAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"exchangeRateCurrent\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"exchangeRateStored\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"fuseFeeMantissa\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getAccountSnapshot\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getCash\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contract ComptrollerInterface\",\"name\":\"comptroller_\",\"type\":\"address\"},{\"internalType\":\"contract InterestRateModel\",\"name\":\"interestRateModel_\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"initialExchangeRateMantissa_\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"decimals_\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"reserveFactorMantissa_\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"adminFeeMantissa_\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"underlying_\",\"type\":\"address\"},{\"internalType\":\"contract ComptrollerInterface\",\"name\":\"comptroller_\",\"type\":\"address\"},{\"internalType\":\"contract InterestRateModel\",\"name\":\"interestRateModel_\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"reserveFactorMantissa_\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"adminFeeMantissa_\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"interestRateModel\",\"outputs\":[{\"internalType\":\"contract InterestRateModel\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isCEther\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isCToken\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"repayAmount\",\"type\":\"uint256\"},{\"internalType\":\"contract CTokenInterface\",\"name\":\"cTokenCollateral\",\"type\":\"address\"}],\"name\":\"liquidateBorrow\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"mintAmount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"potAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"protocolSeizeShareMantissa\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"redeemTokens\",\"type\":\"uint256\"}],\"name\":\"redeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"redeemAmount\",\"type\":\"uint256\"}],\"name\":\"redeemUnderlying\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"repayAmount\",\"type\":\"uint256\"}],\"name\":\"repayBorrow\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"repayAmount\",\"type\":\"uint256\"}],\"name\":\"repayBorrowBehalf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"reserveFactorMantissa\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"liquidator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"seizeTokens\",\"type\":\"uint256\"}],\"name\":\"seize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"supplyRatePerBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalAdminFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalBorrows\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"totalBorrowsCurrent\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalFuseFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalReserves\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"underlying\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"vatAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Compound\",\"methods\":{\"_becomeImplementation(bytes)\":{\"params\":{\"data\":\"The encoded arguments for becoming\"}},\"_delegateCompLikeTo(address)\":{\"details\":\"CTokens whose underlying are not CompLike should revert here\",\"params\":{\"compLikeDelegatee\":\"The address to delegate votes to\"}},\"_prepare()\":{\"details\":\"Checks comptroller.autoImplementation and upgrades the implementation if necessary\"},\"_reduceReserves(uint256)\":{\"params\":{\"reduceAmount\":\"Amount of reduction to reserves\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"_setAdminFee(uint256)\":{\"details\":\"Admin function to accrue interest and set a new admin fee\",\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"_setImplementationSafe(address,bool,bytes)\":{\"params\":{\"allowResign\":\"Flag to indicate whether to call _resignImplementation on the old implementation\",\"becomeImplementationData\":\"The encoded bytes data to be passed to _becomeImplementation\",\"implementation_\":\"The address of the new implementation for delegation\"}},\"_setInterestRateModel(address)\":{\"details\":\"Admin function to accrue interest and update the interest rate model\",\"params\":{\"newInterestRateModel\":\"the new interest rate model to use\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"_setNameAndSymbol(string,string)\":{\"details\":\"Admin function to update the cToken ERC20 name and symbol\",\"params\":{\"_name\":\"the new ERC20 token name to use\",\"_symbol\":\"the new ERC20 token symbol to use\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"_setReserveFactor(uint256)\":{\"details\":\"Admin function to accrue interest and set a new reserve factor\",\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"_withdrawAdminFees(uint256)\":{\"params\":{\"withdrawAmount\":\"Amount of fees to withdraw\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"_withdrawFuseFees(uint256)\":{\"params\":{\"withdrawAmount\":\"Amount of fees to withdraw\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"accrueInterest()\":{\"details\":\"This calculates interest accrued from the last checkpointed block up to the current block and writes new checkpoint to storage.\"},\"allowance(address,address)\":{\"params\":{\"owner\":\"The address of the account which owns the tokens to be spent\",\"spender\":\"The address of the account which may transfer tokens\"},\"return\":\"The number of tokens allowed to be spent (-1 means infinite)\"},\"approve(address,uint256)\":{\"details\":\"This will overwrite the approval amount for `spender` and is subject to issues noted [here](https://eips.ethereum.org/EIPS/eip-20#approve)\",\"params\":{\"amount\":\"The number of tokens that are approved (-1 means infinite)\",\"spender\":\"The address of the account which may transfer tokens\"},\"return\":\"Whether or not the approval succeeded\"},\"balanceOf(address)\":{\"params\":{\"owner\":\"The address of the account to query\"},\"return\":\"The number of tokens owned by `owner`\"},\"balanceOfUnderlying(address)\":{\"details\":\"This also accrues interest in a transaction\",\"params\":{\"owner\":\"The address of the account to query\"},\"return\":\"The amount of underlying owned by `owner`\"},\"borrow(uint256)\":{\"params\":{\"borrowAmount\":\"The amount of the underlying asset to borrow\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"borrowBalanceCurrent(address)\":{\"params\":{\"account\":\"The address whose balance should be calculated after updating borrowIndex\"},\"return\":\"The calculated balance\"},\"borrowBalanceStored(address)\":{\"params\":{\"account\":\"The address whose balance should be calculated\"},\"return\":\"The calculated balance\"},\"borrowRatePerBlock()\":{\"return\":\"The borrow interest rate per block, scaled by 1e18\"},\"exchangeRateCurrent()\":{\"return\":\"Calculated exchange rate scaled by 1e18\"},\"exchangeRateStored()\":{\"details\":\"This function does not accrue interest before calculating the exchange rate\",\"return\":\"Calculated exchange rate scaled by 1e18\"},\"getAccountSnapshot(address)\":{\"details\":\"This is used by comptroller to more efficiently perform liquidity checks.\",\"params\":{\"account\":\"Address of the account to snapshot\"},\"return\":\"(possible error, token balance, borrow balance, exchange rate mantissa)\"},\"getCash()\":{\"return\":\"The quantity of underlying asset owned by this contract\"},\"initialize(address,address,address,string,string,uint256,uint256)\":{\"params\":{\"comptroller_\":\"The address of the Comptroller\",\"interestRateModel_\":\"The address of the interest rate model\",\"name_\":\"ERC-20 name of this token\",\"symbol_\":\"ERC-20 symbol of this token\",\"underlying_\":\"The address of the underlying asset\"}},\"initialize(address,address,uint256,string,string,uint8,uint256,uint256)\":{\"params\":{\"comptroller_\":\"The address of the Comptroller\",\"decimals_\":\"EIP-20 decimal precision of this token\",\"initialExchangeRateMantissa_\":\"The initial exchange rate, scaled by 1e18\",\"interestRateModel_\":\"The address of the interest rate model\",\"name_\":\"EIP-20 name of this token\",\"symbol_\":\"EIP-20 symbol of this token\"}},\"liquidateBorrow(address,uint256,address)\":{\"params\":{\"borrower\":\"The borrower of this cToken to be liquidated\",\"cTokenCollateral\":\"The market in which to seize collateral from the borrower\",\"repayAmount\":\"The amount of the underlying borrowed asset to repay\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"mint(uint256)\":{\"details\":\"Accrues interest whether or not the operation succeeds, unless reverted\",\"params\":{\"mintAmount\":\"The amount of the underlying asset to supply\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"redeem(uint256)\":{\"details\":\"Accrues interest whether or not the operation succeeds, unless reverted\",\"params\":{\"redeemTokens\":\"The number of cTokens to redeem into underlying\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"redeemUnderlying(uint256)\":{\"details\":\"Accrues interest whether or not the operation succeeds, unless reverted\",\"params\":{\"redeemAmount\":\"The amount of underlying to redeem\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"repayBorrow(uint256)\":{\"params\":{\"repayAmount\":\"The amount to repay\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"repayBorrowBehalf(address,uint256)\":{\"params\":{\"borrower\":\"the account with the debt being payed off\",\"repayAmount\":\"The amount to repay\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"seize(address,address,uint256)\":{\"details\":\"Will fail unless called by another cToken during the process of liquidation. Its absolutely critical to use msg.sender as the borrowed cToken and not a parameter.\",\"params\":{\"borrower\":\"The account having collateral seized\",\"liquidator\":\"The account receiving seized collateral\",\"seizeTokens\":\"The number of cTokens to seize\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"supplyRatePerBlock()\":{\"return\":\"The supply interest rate per block, scaled by 1e18\"},\"totalBorrowsCurrent()\":{\"return\":\"The total borrows with interest\"},\"transfer(address,uint256)\":{\"params\":{\"amount\":\"The number of tokens to transfer\",\"dst\":\"The address of the destination account\"},\"return\":\"Whether or not the transfer succeeded\"},\"transferFrom(address,address,uint256)\":{\"params\":{\"amount\":\"The number of tokens to transfer\",\"dst\":\"The address of the destination account\",\"src\":\"The address of the source account\"},\"return\":\"Whether or not the transfer succeeded\"}},\"title\":\"Compound's CDai Contract\"},\"userdoc\":{\"methods\":{\"_becomeImplementation(bytes)\":{\"notice\":\"Delegate interface to become the implementation\"},\"_delegateCompLikeTo(address)\":{\"notice\":\"Admin call to delegate the votes of the COMP-like underlying\"},\"_prepare()\":{\"notice\":\"Function called before all delegator functions\"},\"_reduceReserves(uint256)\":{\"notice\":\"Accrues interest and reduces reserves by transferring to admin\"},\"_setAdminFee(uint256)\":{\"notice\":\"accrues interest and sets a new admin fee for the protocol using _setAdminFeeFresh\"},\"_setImplementationSafe(address,bool,bytes)\":{\"notice\":\"Called by the admin to update the implementation of the delegator\"},\"_setInterestRateModel(address)\":{\"notice\":\"accrues interest and updates the interest rate model using _setInterestRateModelFresh\"},\"_setNameAndSymbol(string,string)\":{\"notice\":\"updates the cToken ERC20 name and symbol\"},\"_setReserveFactor(uint256)\":{\"notice\":\"accrues interest and sets a new reserve factor for the protocol using _setReserveFactorFresh\"},\"_withdrawAdminFees(uint256)\":{\"notice\":\"Accrues interest and reduces admin fees by transferring to admin\"},\"_withdrawFuseFees(uint256)\":{\"notice\":\"Accrues interest and reduces Fuse fees by transferring to Fuse\"},\"accrueInterest()\":{\"notice\":\"Accrues DSR then applies accrued interest to total borrows and reserves\"},\"allowance(address,address)\":{\"notice\":\"Get the current allowance from `owner` for `spender`\"},\"approve(address,uint256)\":{\"notice\":\"Approve `spender` to transfer up to `amount` from `src`\"},\"balanceOf(address)\":{\"notice\":\"Get the token balance of the `owner`\"},\"balanceOfUnderlying(address)\":{\"notice\":\"Get the underlying balance of the `owner`\"},\"borrow(uint256)\":{\"notice\":\"Sender borrows assets from the protocol to their own address\"},\"borrowBalanceCurrent(address)\":{\"notice\":\"Accrue interest to updated borrowIndex and then calculate account's borrow balance using the updated borrowIndex\"},\"borrowBalanceStored(address)\":{\"notice\":\"Return the borrow balance of account based on stored data\"},\"borrowRatePerBlock()\":{\"notice\":\"Returns the current per-block borrow interest rate for this cToken\"},\"exchangeRateCurrent()\":{\"notice\":\"Accrue interest then return the up-to-date exchange rate\"},\"exchangeRateStored()\":{\"notice\":\"Calculates the exchange rate from the underlying to the CToken\"},\"getAccountSnapshot(address)\":{\"notice\":\"Get a snapshot of the account's balances, and the cached exchange rate\"},\"getCash()\":{\"notice\":\"Get cash balance of this cToken in the underlying asset\"},\"initialize(address,address,address,string,string,uint256,uint256)\":{\"notice\":\"Initialize the new money market\"},\"initialize(address,address,uint256,string,string,uint8,uint256,uint256)\":{\"notice\":\"Initialize the money market\"},\"liquidateBorrow(address,uint256,address)\":{\"notice\":\"The sender liquidates the borrowers collateral. The collateral seized is transferred to the liquidator.\"},\"mint(uint256)\":{\"notice\":\"Sender supplies assets into the market and receives cTokens in exchange\"},\"redeem(uint256)\":{\"notice\":\"Sender redeems cTokens in exchange for the underlying asset\"},\"redeemUnderlying(uint256)\":{\"notice\":\"Sender redeems cTokens in exchange for a specified amount of underlying asset\"},\"repayBorrow(uint256)\":{\"notice\":\"Sender repays their own borrow\"},\"repayBorrowBehalf(address,uint256)\":{\"notice\":\"Sender repays a borrow belonging to borrower\"},\"seize(address,address,uint256)\":{\"notice\":\"Transfers collateral tokens (this market) to the liquidator.\"},\"supplyRatePerBlock()\":{\"notice\":\"Returns the current per-block supply interest rate for this cToken\"},\"totalBorrowsCurrent()\":{\"notice\":\"Returns the current total borrows plus accrued interest\"},\"transfer(address,uint256)\":{\"notice\":\"Transfer `amount` tokens from `msg.sender` to `dst`\"},\"transferFrom(address,address,uint256)\":{\"notice\":\"Transfer `amount` tokens from `src` to `dst`\"}},\"notice\":\"CToken which wraps Multi-Collateral DAI\"}},\"settings\":{\"compilationTarget\":{\"contracts/CDaiDelegate.sol\":\"CDaiDelegate\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/CDaiDelegate.sol\":{\"keccak256\":\"0xc12e530600060c0ce27cc751ca9c0ecf758a26178958fb016daef49e9d8e21a1\",\"urls\":[\"bzz-raw://27fb6474109c9fac515fc45f88c2a2fbd18a877af822e40985973b27c546c57b\",\"dweb:/ipfs/Qmdhvm2uJwnATV2A63PPouf74RGTKx9pQ4Yr8b34n3GLG2\"]},\"contracts/CErc20.sol\":{\"keccak256\":\"0x37e284e3ca9a2821c3ad1001d110ca529820646f65dd441f5907070408b20bc2\",\"urls\":[\"bzz-raw://cb025aa0f581e05f023e5aef44cfcd47cdece7ec4cf53973d89834f5037666d2\",\"dweb:/ipfs/QmaY78mEyhUCuvbMVdGzpKmkw9yKoHz5noSg5REZgipupY\"]},\"contracts/CErc20Delegate.sol\":{\"keccak256\":\"0xc50f6bf192d43be4958d56a210e1b3e978a86be8f2da7463aa63dcf5a21754ad\",\"urls\":[\"bzz-raw://9258ab0d8a3c994e99a5cab314f10a84da47d32a59d1d8cd4ad772e1195dc8cd\",\"dweb:/ipfs/QmWYYn1BFVjELtm8zoxHvqWWDojXma7NpCAMk7VMruSkjJ\"]},\"contracts/CToken.sol\":{\"keccak256\":\"0xc3a5a827241528049e20a24cc446558c8a9272909f75ce5d1cf14ae3ab5feba3\",\"urls\":[\"bzz-raw://a403db2bf1a8e5e9384df19600bd18d4251056818b094afcdab418e683bb5cb8\",\"dweb:/ipfs/QmdkRbFGtKP67tNNqyH7BraDRGerwRNA7ktscbFV9LioM2\"]},\"contracts/CTokenInterfaces.sol\":{\"keccak256\":\"0xc8a056c724ef4f0215ece6011e7ac1007c9dc7611ce5160d470ec858bbb06bd3\",\"urls\":[\"bzz-raw://58951693d1b53d2722e55b068bab2b570f4b044d89c28ed6b53bac6e95aeb662\",\"dweb:/ipfs/QmQiNTw5jZR74WjKfX2bPiuTT4tuFuq8rx7QxEVyVvdGLn\"]},\"contracts/CarefulMath.sol\":{\"keccak256\":\"0x1487237dbbbb73ad43c8eff16e78311753719a94a5065f574de5c91b672c56f8\",\"urls\":[\"bzz-raw://349966a236f313b2cb42e1942832e6bd7e134f65f6654e6c4d46788e65cc4a9b\",\"dweb:/ipfs/Qmebpv8i5jLR4fLgpZHQZRLu6aefVAbLC2yUk9ABEekquz\"]},\"contracts/ComptrollerInterface.sol\":{\"keccak256\":\"0xecfb84fabc9792d0b1c912886249c67bc42c39eb065d962d0b9a5f3736af5892\",\"urls\":[\"bzz-raw://711547ebc1a7f18b271118dd98276771953a9d7b3674716f67d247be9b907372\",\"dweb:/ipfs/QmbVZNvkBp8miByATrL6y5j8MePdcQ8uTAUZMpKrhpLgoa\"]},\"contracts/ComptrollerStorage.sol\":{\"keccak256\":\"0x83961d3c12984fe4afc72717fc44b2d868563d053a0eceda0cbf17ec6b255913\",\"urls\":[\"bzz-raw://ea667c2de43881f9be19f4f75dec348632273178965fc9b3655705d853b032bb\",\"dweb:/ipfs/QmZP6sbNFSgFZrAEvfRjhp1NtGj6U6Sea3JGiKG96AHyeP\"]},\"contracts/EIP20Interface.sol\":{\"keccak256\":\"0xee33b8b333743308a9153a59f22da2cadb22cedef4403fe039bf9e057c9c729a\",\"urls\":[\"bzz-raw://5427fdb941300d36a424da0a0a5800e3b2ca51c9c922831dbfce2f6637402b43\",\"dweb:/ipfs/QmTrvmLynqSUPjsGW2dpiQ91dSmn4xzccQiwr8qaBtyvjH\"]},\"contracts/EIP20NonStandardInterface.sol\":{\"keccak256\":\"0x469899442dd9640bfc2c670d404ad3027e48df5df8e5aeab0e25cc6b6aae05f5\",\"urls\":[\"bzz-raw://d8c4498abaf539eb413a2f1a916d75945adc8bd4ef437f8450cb67e07be3f38d\",\"dweb:/ipfs/QmaFpWfnhAMYW21rbT5PEszn4TGHdGU58Eq5AfZsCuapZ3\"]},\"contracts/ErrorReporter.sol\":{\"keccak256\":\"0xe9587478bc9efad203cab02b8aecae32828cfc9a271b13ae3c018e38e44aab32\",\"urls\":[\"bzz-raw://2eb34bdbbbc410fb401d50ddca44a7421a1d8191711c569ed5bcec1c1b07a05c\",\"dweb:/ipfs/QmYKNCYppyx3NGiwtjdLEmxUMgfnFBqT4pnvnhnBrPgrxS\"]},\"contracts/Exponential.sol\":{\"keccak256\":\"0xfda0e2b610541cf1cf316a0000c89a1069ccc21f1566affc0a058810e2b835d3\",\"urls\":[\"bzz-raw://fe319f184f1b5f27019d3d890124cd24e466d27153ac38eb9ff6b16efbad48b9\",\"dweb:/ipfs/Qmcev6jCmtdCviJxUQvUCmesPDShRDSvdfUEfvsqd4GEJA\"]},\"contracts/ExponentialNoError.sol\":{\"keccak256\":\"0x713a089f4bbcaec1d3924fc7d9a2154904a39f46cb6f25b713167dbe5f21623e\",\"urls\":[\"bzz-raw://d7108d68af7c5effd4272615ceba54e79e585f6b8be5aabc7602245c84c7b9e0\",\"dweb:/ipfs/QmQZo2XpxW7w5viVEg71mi9eKaAYD7HUqfCMB5yCCPVnc5\"]},\"contracts/IFuseFeeDistributor.sol\":{\"keccak256\":\"0xb5d287b8e05574d38bd5d0b413f44b4c5d312f28188573ac60abe78123fbd92c\",\"urls\":[\"bzz-raw://84c2bbf746a82aaa100bee90c7dd40411c723bded124bb1775bf72bf7fda8a2c\",\"dweb:/ipfs/QmToQzDtz9BV2tvU71YsfWjdaZu5qpP1xKFZ1TkQgubhDb\"]},\"contracts/InterestRateModel.sol\":{\"keccak256\":\"0x0cc0dbd1991e5dcdcff58b0c82a9471a0fb9df26763e5e7415e1d081b7332409\",\"urls\":[\"bzz-raw://f4d7936aefc43ea2724f0e472b8f1517f1ca40170258ab9d5bbd0862dd0c4f13\",\"dweb:/ipfs/QmfYjG1Sm3kNwbhomHCWhMqw9LvaJVWVzBe4Te5BHRbTQS\"]},\"contracts/PriceOracle.sol\":{\"keccak256\":\"0x62ba3a5ec8f06d456ab089d6ca7f9d14d3a6ce6814923271ca60a6990918fb41\",\"urls\":[\"bzz-raw://aa6d2f20efdd5389161eb15bdab98b5628dc8cd5354394bbed35bb14d3612506\",\"dweb:/ipfs/QmVfo4eCDuk8LMSywpBjZBxCv7zLCNsG6u3nyD1d4CYwsD\"]}},\"version\":1}"},"DaiJoinLike":{"abi":[{"constant":false,"inputs":[],"name":"dai","outputs":[{"internalType":"contract GemLike","name":"","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"exit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"join","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[],"name":"vat","outputs":[{"internalType":"contract VatLike","name":"","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"dai()":"f4b9fa75","exit(address,uint256)":"ef693bed","join(address,uint256)":"3b4da69f","vat()":"36569e77"}},"metadata":"{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[],\"name\":\"dai\",\"outputs\":[{\"internalType\":\"contract GemLike\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"exit\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"join\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"vat\",\"outputs\":[{\"internalType\":\"contract VatLike\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/CDaiDelegate.sol\":\"DaiJoinLike\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/CDaiDelegate.sol\":{\"keccak256\":\"0xc12e530600060c0ce27cc751ca9c0ecf758a26178958fb016daef49e9d8e21a1\",\"urls\":[\"bzz-raw://27fb6474109c9fac515fc45f88c2a2fbd18a877af822e40985973b27c546c57b\",\"dweb:/ipfs/Qmdhvm2uJwnATV2A63PPouf74RGTKx9pQ4Yr8b34n3GLG2\"]},\"contracts/CErc20.sol\":{\"keccak256\":\"0x37e284e3ca9a2821c3ad1001d110ca529820646f65dd441f5907070408b20bc2\",\"urls\":[\"bzz-raw://cb025aa0f581e05f023e5aef44cfcd47cdece7ec4cf53973d89834f5037666d2\",\"dweb:/ipfs/QmaY78mEyhUCuvbMVdGzpKmkw9yKoHz5noSg5REZgipupY\"]},\"contracts/CErc20Delegate.sol\":{\"keccak256\":\"0xc50f6bf192d43be4958d56a210e1b3e978a86be8f2da7463aa63dcf5a21754ad\",\"urls\":[\"bzz-raw://9258ab0d8a3c994e99a5cab314f10a84da47d32a59d1d8cd4ad772e1195dc8cd\",\"dweb:/ipfs/QmWYYn1BFVjELtm8zoxHvqWWDojXma7NpCAMk7VMruSkjJ\"]},\"contracts/CToken.sol\":{\"keccak256\":\"0xc3a5a827241528049e20a24cc446558c8a9272909f75ce5d1cf14ae3ab5feba3\",\"urls\":[\"bzz-raw://a403db2bf1a8e5e9384df19600bd18d4251056818b094afcdab418e683bb5cb8\",\"dweb:/ipfs/QmdkRbFGtKP67tNNqyH7BraDRGerwRNA7ktscbFV9LioM2\"]},\"contracts/CTokenInterfaces.sol\":{\"keccak256\":\"0xc8a056c724ef4f0215ece6011e7ac1007c9dc7611ce5160d470ec858bbb06bd3\",\"urls\":[\"bzz-raw://58951693d1b53d2722e55b068bab2b570f4b044d89c28ed6b53bac6e95aeb662\",\"dweb:/ipfs/QmQiNTw5jZR74WjKfX2bPiuTT4tuFuq8rx7QxEVyVvdGLn\"]},\"contracts/CarefulMath.sol\":{\"keccak256\":\"0x1487237dbbbb73ad43c8eff16e78311753719a94a5065f574de5c91b672c56f8\",\"urls\":[\"bzz-raw://349966a236f313b2cb42e1942832e6bd7e134f65f6654e6c4d46788e65cc4a9b\",\"dweb:/ipfs/Qmebpv8i5jLR4fLgpZHQZRLu6aefVAbLC2yUk9ABEekquz\"]},\"contracts/ComptrollerInterface.sol\":{\"keccak256\":\"0xecfb84fabc9792d0b1c912886249c67bc42c39eb065d962d0b9a5f3736af5892\",\"urls\":[\"bzz-raw://711547ebc1a7f18b271118dd98276771953a9d7b3674716f67d247be9b907372\",\"dweb:/ipfs/QmbVZNvkBp8miByATrL6y5j8MePdcQ8uTAUZMpKrhpLgoa\"]},\"contracts/ComptrollerStorage.sol\":{\"keccak256\":\"0x83961d3c12984fe4afc72717fc44b2d868563d053a0eceda0cbf17ec6b255913\",\"urls\":[\"bzz-raw://ea667c2de43881f9be19f4f75dec348632273178965fc9b3655705d853b032bb\",\"dweb:/ipfs/QmZP6sbNFSgFZrAEvfRjhp1NtGj6U6Sea3JGiKG96AHyeP\"]},\"contracts/EIP20Interface.sol\":{\"keccak256\":\"0xee33b8b333743308a9153a59f22da2cadb22cedef4403fe039bf9e057c9c729a\",\"urls\":[\"bzz-raw://5427fdb941300d36a424da0a0a5800e3b2ca51c9c922831dbfce2f6637402b43\",\"dweb:/ipfs/QmTrvmLynqSUPjsGW2dpiQ91dSmn4xzccQiwr8qaBtyvjH\"]},\"contracts/EIP20NonStandardInterface.sol\":{\"keccak256\":\"0x469899442dd9640bfc2c670d404ad3027e48df5df8e5aeab0e25cc6b6aae05f5\",\"urls\":[\"bzz-raw://d8c4498abaf539eb413a2f1a916d75945adc8bd4ef437f8450cb67e07be3f38d\",\"dweb:/ipfs/QmaFpWfnhAMYW21rbT5PEszn4TGHdGU58Eq5AfZsCuapZ3\"]},\"contracts/ErrorReporter.sol\":{\"keccak256\":\"0xe9587478bc9efad203cab02b8aecae32828cfc9a271b13ae3c018e38e44aab32\",\"urls\":[\"bzz-raw://2eb34bdbbbc410fb401d50ddca44a7421a1d8191711c569ed5bcec1c1b07a05c\",\"dweb:/ipfs/QmYKNCYppyx3NGiwtjdLEmxUMgfnFBqT4pnvnhnBrPgrxS\"]},\"contracts/Exponential.sol\":{\"keccak256\":\"0xfda0e2b610541cf1cf316a0000c89a1069ccc21f1566affc0a058810e2b835d3\",\"urls\":[\"bzz-raw://fe319f184f1b5f27019d3d890124cd24e466d27153ac38eb9ff6b16efbad48b9\",\"dweb:/ipfs/Qmcev6jCmtdCviJxUQvUCmesPDShRDSvdfUEfvsqd4GEJA\"]},\"contracts/ExponentialNoError.sol\":{\"keccak256\":\"0x713a089f4bbcaec1d3924fc7d9a2154904a39f46cb6f25b713167dbe5f21623e\",\"urls\":[\"bzz-raw://d7108d68af7c5effd4272615ceba54e79e585f6b8be5aabc7602245c84c7b9e0\",\"dweb:/ipfs/QmQZo2XpxW7w5viVEg71mi9eKaAYD7HUqfCMB5yCCPVnc5\"]},\"contracts/IFuseFeeDistributor.sol\":{\"keccak256\":\"0xb5d287b8e05574d38bd5d0b413f44b4c5d312f28188573ac60abe78123fbd92c\",\"urls\":[\"bzz-raw://84c2bbf746a82aaa100bee90c7dd40411c723bded124bb1775bf72bf7fda8a2c\",\"dweb:/ipfs/QmToQzDtz9BV2tvU71YsfWjdaZu5qpP1xKFZ1TkQgubhDb\"]},\"contracts/InterestRateModel.sol\":{\"keccak256\":\"0x0cc0dbd1991e5dcdcff58b0c82a9471a0fb9df26763e5e7415e1d081b7332409\",\"urls\":[\"bzz-raw://f4d7936aefc43ea2724f0e472b8f1517f1ca40170258ab9d5bbd0862dd0c4f13\",\"dweb:/ipfs/QmfYjG1Sm3kNwbhomHCWhMqw9LvaJVWVzBe4Te5BHRbTQS\"]},\"contracts/PriceOracle.sol\":{\"keccak256\":\"0x62ba3a5ec8f06d456ab089d6ca7f9d14d3a6ce6814923271ca60a6990918fb41\",\"urls\":[\"bzz-raw://aa6d2f20efdd5389161eb15bdab98b5628dc8cd5354394bbed35bb14d3612506\",\"dweb:/ipfs/QmVfo4eCDuk8LMSywpBjZBxCv7zLCNsG6u3nyD1d4CYwsD\"]}},\"version\":1}"},"GemLike":{"abi":[{"constant":false,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"approve","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/CDaiDelegate.sol\":\"GemLike\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/CDaiDelegate.sol\":{\"keccak256\":\"0xc12e530600060c0ce27cc751ca9c0ecf758a26178958fb016daef49e9d8e21a1\",\"urls\":[\"bzz-raw://27fb6474109c9fac515fc45f88c2a2fbd18a877af822e40985973b27c546c57b\",\"dweb:/ipfs/Qmdhvm2uJwnATV2A63PPouf74RGTKx9pQ4Yr8b34n3GLG2\"]},\"contracts/CErc20.sol\":{\"keccak256\":\"0x37e284e3ca9a2821c3ad1001d110ca529820646f65dd441f5907070408b20bc2\",\"urls\":[\"bzz-raw://cb025aa0f581e05f023e5aef44cfcd47cdece7ec4cf53973d89834f5037666d2\",\"dweb:/ipfs/QmaY78mEyhUCuvbMVdGzpKmkw9yKoHz5noSg5REZgipupY\"]},\"contracts/CErc20Delegate.sol\":{\"keccak256\":\"0xc50f6bf192d43be4958d56a210e1b3e978a86be8f2da7463aa63dcf5a21754ad\",\"urls\":[\"bzz-raw://9258ab0d8a3c994e99a5cab314f10a84da47d32a59d1d8cd4ad772e1195dc8cd\",\"dweb:/ipfs/QmWYYn1BFVjELtm8zoxHvqWWDojXma7NpCAMk7VMruSkjJ\"]},\"contracts/CToken.sol\":{\"keccak256\":\"0xc3a5a827241528049e20a24cc446558c8a9272909f75ce5d1cf14ae3ab5feba3\",\"urls\":[\"bzz-raw://a403db2bf1a8e5e9384df19600bd18d4251056818b094afcdab418e683bb5cb8\",\"dweb:/ipfs/QmdkRbFGtKP67tNNqyH7BraDRGerwRNA7ktscbFV9LioM2\"]},\"contracts/CTokenInterfaces.sol\":{\"keccak256\":\"0xc8a056c724ef4f0215ece6011e7ac1007c9dc7611ce5160d470ec858bbb06bd3\",\"urls\":[\"bzz-raw://58951693d1b53d2722e55b068bab2b570f4b044d89c28ed6b53bac6e95aeb662\",\"dweb:/ipfs/QmQiNTw5jZR74WjKfX2bPiuTT4tuFuq8rx7QxEVyVvdGLn\"]},\"contracts/CarefulMath.sol\":{\"keccak256\":\"0x1487237dbbbb73ad43c8eff16e78311753719a94a5065f574de5c91b672c56f8\",\"urls\":[\"bzz-raw://349966a236f313b2cb42e1942832e6bd7e134f65f6654e6c4d46788e65cc4a9b\",\"dweb:/ipfs/Qmebpv8i5jLR4fLgpZHQZRLu6aefVAbLC2yUk9ABEekquz\"]},\"contracts/ComptrollerInterface.sol\":{\"keccak256\":\"0xecfb84fabc9792d0b1c912886249c67bc42c39eb065d962d0b9a5f3736af5892\",\"urls\":[\"bzz-raw://711547ebc1a7f18b271118dd98276771953a9d7b3674716f67d247be9b907372\",\"dweb:/ipfs/QmbVZNvkBp8miByATrL6y5j8MePdcQ8uTAUZMpKrhpLgoa\"]},\"contracts/ComptrollerStorage.sol\":{\"keccak256\":\"0x83961d3c12984fe4afc72717fc44b2d868563d053a0eceda0cbf17ec6b255913\",\"urls\":[\"bzz-raw://ea667c2de43881f9be19f4f75dec348632273178965fc9b3655705d853b032bb\",\"dweb:/ipfs/QmZP6sbNFSgFZrAEvfRjhp1NtGj6U6Sea3JGiKG96AHyeP\"]},\"contracts/EIP20Interface.sol\":{\"keccak256\":\"0xee33b8b333743308a9153a59f22da2cadb22cedef4403fe039bf9e057c9c729a\",\"urls\":[\"bzz-raw://5427fdb941300d36a424da0a0a5800e3b2ca51c9c922831dbfce2f6637402b43\",\"dweb:/ipfs/QmTrvmLynqSUPjsGW2dpiQ91dSmn4xzccQiwr8qaBtyvjH\"]},\"contracts/EIP20NonStandardInterface.sol\":{\"keccak256\":\"0x469899442dd9640bfc2c670d404ad3027e48df5df8e5aeab0e25cc6b6aae05f5\",\"urls\":[\"bzz-raw://d8c4498abaf539eb413a2f1a916d75945adc8bd4ef437f8450cb67e07be3f38d\",\"dweb:/ipfs/QmaFpWfnhAMYW21rbT5PEszn4TGHdGU58Eq5AfZsCuapZ3\"]},\"contracts/ErrorReporter.sol\":{\"keccak256\":\"0xe9587478bc9efad203cab02b8aecae32828cfc9a271b13ae3c018e38e44aab32\",\"urls\":[\"bzz-raw://2eb34bdbbbc410fb401d50ddca44a7421a1d8191711c569ed5bcec1c1b07a05c\",\"dweb:/ipfs/QmYKNCYppyx3NGiwtjdLEmxUMgfnFBqT4pnvnhnBrPgrxS\"]},\"contracts/Exponential.sol\":{\"keccak256\":\"0xfda0e2b610541cf1cf316a0000c89a1069ccc21f1566affc0a058810e2b835d3\",\"urls\":[\"bzz-raw://fe319f184f1b5f27019d3d890124cd24e466d27153ac38eb9ff6b16efbad48b9\",\"dweb:/ipfs/Qmcev6jCmtdCviJxUQvUCmesPDShRDSvdfUEfvsqd4GEJA\"]},\"contracts/ExponentialNoError.sol\":{\"keccak256\":\"0x713a089f4bbcaec1d3924fc7d9a2154904a39f46cb6f25b713167dbe5f21623e\",\"urls\":[\"bzz-raw://d7108d68af7c5effd4272615ceba54e79e585f6b8be5aabc7602245c84c7b9e0\",\"dweb:/ipfs/QmQZo2XpxW7w5viVEg71mi9eKaAYD7HUqfCMB5yCCPVnc5\"]},\"contracts/IFuseFeeDistributor.sol\":{\"keccak256\":\"0xb5d287b8e05574d38bd5d0b413f44b4c5d312f28188573ac60abe78123fbd92c\",\"urls\":[\"bzz-raw://84c2bbf746a82aaa100bee90c7dd40411c723bded124bb1775bf72bf7fda8a2c\",\"dweb:/ipfs/QmToQzDtz9BV2tvU71YsfWjdaZu5qpP1xKFZ1TkQgubhDb\"]},\"contracts/InterestRateModel.sol\":{\"keccak256\":\"0x0cc0dbd1991e5dcdcff58b0c82a9471a0fb9df26763e5e7415e1d081b7332409\",\"urls\":[\"bzz-raw://f4d7936aefc43ea2724f0e472b8f1517f1ca40170258ab9d5bbd0862dd0c4f13\",\"dweb:/ipfs/QmfYjG1Sm3kNwbhomHCWhMqw9LvaJVWVzBe4Te5BHRbTQS\"]},\"contracts/PriceOracle.sol\":{\"keccak256\":\"0x62ba3a5ec8f06d456ab089d6ca7f9d14d3a6ce6814923271ca60a6990918fb41\",\"urls\":[\"bzz-raw://aa6d2f20efdd5389161eb15bdab98b5628dc8cd5354394bbed35bb14d3612506\",\"dweb:/ipfs/QmVfo4eCDuk8LMSywpBjZBxCv7zLCNsG6u3nyD1d4CYwsD\"]}},\"version\":1}"},"PotLike":{"abi":[{"constant":true,"inputs":[],"name":"chi","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"drip","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"exit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"join","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"pie","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"chi()":"c92aecc4","drip()":"9f678cca","exit(uint256)":"7f8661a1","join(uint256)":"049878f3","pie(address)":"0bebac86"}},"metadata":"{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[],\"name\":\"chi\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"drip\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"exit\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"join\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"pie\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{},\"notice\":\"* Maker Interfaces **\"}},\"settings\":{\"compilationTarget\":{\"contracts/CDaiDelegate.sol\":\"PotLike\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/CDaiDelegate.sol\":{\"keccak256\":\"0xc12e530600060c0ce27cc751ca9c0ecf758a26178958fb016daef49e9d8e21a1\",\"urls\":[\"bzz-raw://27fb6474109c9fac515fc45f88c2a2fbd18a877af822e40985973b27c546c57b\",\"dweb:/ipfs/Qmdhvm2uJwnATV2A63PPouf74RGTKx9pQ4Yr8b34n3GLG2\"]},\"contracts/CErc20.sol\":{\"keccak256\":\"0x37e284e3ca9a2821c3ad1001d110ca529820646f65dd441f5907070408b20bc2\",\"urls\":[\"bzz-raw://cb025aa0f581e05f023e5aef44cfcd47cdece7ec4cf53973d89834f5037666d2\",\"dweb:/ipfs/QmaY78mEyhUCuvbMVdGzpKmkw9yKoHz5noSg5REZgipupY\"]},\"contracts/CErc20Delegate.sol\":{\"keccak256\":\"0xc50f6bf192d43be4958d56a210e1b3e978a86be8f2da7463aa63dcf5a21754ad\",\"urls\":[\"bzz-raw://9258ab0d8a3c994e99a5cab314f10a84da47d32a59d1d8cd4ad772e1195dc8cd\",\"dweb:/ipfs/QmWYYn1BFVjELtm8zoxHvqWWDojXma7NpCAMk7VMruSkjJ\"]},\"contracts/CToken.sol\":{\"keccak256\":\"0xc3a5a827241528049e20a24cc446558c8a9272909f75ce5d1cf14ae3ab5feba3\",\"urls\":[\"bzz-raw://a403db2bf1a8e5e9384df19600bd18d4251056818b094afcdab418e683bb5cb8\",\"dweb:/ipfs/QmdkRbFGtKP67tNNqyH7BraDRGerwRNA7ktscbFV9LioM2\"]},\"contracts/CTokenInterfaces.sol\":{\"keccak256\":\"0xc8a056c724ef4f0215ece6011e7ac1007c9dc7611ce5160d470ec858bbb06bd3\",\"urls\":[\"bzz-raw://58951693d1b53d2722e55b068bab2b570f4b044d89c28ed6b53bac6e95aeb662\",\"dweb:/ipfs/QmQiNTw5jZR74WjKfX2bPiuTT4tuFuq8rx7QxEVyVvdGLn\"]},\"contracts/CarefulMath.sol\":{\"keccak256\":\"0x1487237dbbbb73ad43c8eff16e78311753719a94a5065f574de5c91b672c56f8\",\"urls\":[\"bzz-raw://349966a236f313b2cb42e1942832e6bd7e134f65f6654e6c4d46788e65cc4a9b\",\"dweb:/ipfs/Qmebpv8i5jLR4fLgpZHQZRLu6aefVAbLC2yUk9ABEekquz\"]},\"contracts/ComptrollerInterface.sol\":{\"keccak256\":\"0xecfb84fabc9792d0b1c912886249c67bc42c39eb065d962d0b9a5f3736af5892\",\"urls\":[\"bzz-raw://711547ebc1a7f18b271118dd98276771953a9d7b3674716f67d247be9b907372\",\"dweb:/ipfs/QmbVZNvkBp8miByATrL6y5j8MePdcQ8uTAUZMpKrhpLgoa\"]},\"contracts/ComptrollerStorage.sol\":{\"keccak256\":\"0x83961d3c12984fe4afc72717fc44b2d868563d053a0eceda0cbf17ec6b255913\",\"urls\":[\"bzz-raw://ea667c2de43881f9be19f4f75dec348632273178965fc9b3655705d853b032bb\",\"dweb:/ipfs/QmZP6sbNFSgFZrAEvfRjhp1NtGj6U6Sea3JGiKG96AHyeP\"]},\"contracts/EIP20Interface.sol\":{\"keccak256\":\"0xee33b8b333743308a9153a59f22da2cadb22cedef4403fe039bf9e057c9c729a\",\"urls\":[\"bzz-raw://5427fdb941300d36a424da0a0a5800e3b2ca51c9c922831dbfce2f6637402b43\",\"dweb:/ipfs/QmTrvmLynqSUPjsGW2dpiQ91dSmn4xzccQiwr8qaBtyvjH\"]},\"contracts/EIP20NonStandardInterface.sol\":{\"keccak256\":\"0x469899442dd9640bfc2c670d404ad3027e48df5df8e5aeab0e25cc6b6aae05f5\",\"urls\":[\"bzz-raw://d8c4498abaf539eb413a2f1a916d75945adc8bd4ef437f8450cb67e07be3f38d\",\"dweb:/ipfs/QmaFpWfnhAMYW21rbT5PEszn4TGHdGU58Eq5AfZsCuapZ3\"]},\"contracts/ErrorReporter.sol\":{\"keccak256\":\"0xe9587478bc9efad203cab02b8aecae32828cfc9a271b13ae3c018e38e44aab32\",\"urls\":[\"bzz-raw://2eb34bdbbbc410fb401d50ddca44a7421a1d8191711c569ed5bcec1c1b07a05c\",\"dweb:/ipfs/QmYKNCYppyx3NGiwtjdLEmxUMgfnFBqT4pnvnhnBrPgrxS\"]},\"contracts/Exponential.sol\":{\"keccak256\":\"0xfda0e2b610541cf1cf316a0000c89a1069ccc21f1566affc0a058810e2b835d3\",\"urls\":[\"bzz-raw://fe319f184f1b5f27019d3d890124cd24e466d27153ac38eb9ff6b16efbad48b9\",\"dweb:/ipfs/Qmcev6jCmtdCviJxUQvUCmesPDShRDSvdfUEfvsqd4GEJA\"]},\"contracts/ExponentialNoError.sol\":{\"keccak256\":\"0x713a089f4bbcaec1d3924fc7d9a2154904a39f46cb6f25b713167dbe5f21623e\",\"urls\":[\"bzz-raw://d7108d68af7c5effd4272615ceba54e79e585f6b8be5aabc7602245c84c7b9e0\",\"dweb:/ipfs/QmQZo2XpxW7w5viVEg71mi9eKaAYD7HUqfCMB5yCCPVnc5\"]},\"contracts/IFuseFeeDistributor.sol\":{\"keccak256\":\"0xb5d287b8e05574d38bd5d0b413f44b4c5d312f28188573ac60abe78123fbd92c\",\"urls\":[\"bzz-raw://84c2bbf746a82aaa100bee90c7dd40411c723bded124bb1775bf72bf7fda8a2c\",\"dweb:/ipfs/QmToQzDtz9BV2tvU71YsfWjdaZu5qpP1xKFZ1TkQgubhDb\"]},\"contracts/InterestRateModel.sol\":{\"keccak256\":\"0x0cc0dbd1991e5dcdcff58b0c82a9471a0fb9df26763e5e7415e1d081b7332409\",\"urls\":[\"bzz-raw://f4d7936aefc43ea2724f0e472b8f1517f1ca40170258ab9d5bbd0862dd0c4f13\",\"dweb:/ipfs/QmfYjG1Sm3kNwbhomHCWhMqw9LvaJVWVzBe4Te5BHRbTQS\"]},\"contracts/PriceOracle.sol\":{\"keccak256\":\"0x62ba3a5ec8f06d456ab089d6ca7f9d14d3a6ce6814923271ca60a6990918fb41\",\"urls\":[\"bzz-raw://aa6d2f20efdd5389161eb15bdab98b5628dc8cd5354394bbed35bb14d3612506\",\"dweb:/ipfs/QmVfo4eCDuk8LMSywpBjZBxCv7zLCNsG6u3nyD1d4CYwsD\"]}},\"version\":1}"},"VatLike":{"abi":[{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"dai","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"hope","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"dai(address)":"6c25b346","hope(address)":"a3b22fc4"}},"metadata":"{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"dai\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"hope\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/CDaiDelegate.sol\":\"VatLike\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/CDaiDelegate.sol\":{\"keccak256\":\"0xc12e530600060c0ce27cc751ca9c0ecf758a26178958fb016daef49e9d8e21a1\",\"urls\":[\"bzz-raw://27fb6474109c9fac515fc45f88c2a2fbd18a877af822e40985973b27c546c57b\",\"dweb:/ipfs/Qmdhvm2uJwnATV2A63PPouf74RGTKx9pQ4Yr8b34n3GLG2\"]},\"contracts/CErc20.sol\":{\"keccak256\":\"0x37e284e3ca9a2821c3ad1001d110ca529820646f65dd441f5907070408b20bc2\",\"urls\":[\"bzz-raw://cb025aa0f581e05f023e5aef44cfcd47cdece7ec4cf53973d89834f5037666d2\",\"dweb:/ipfs/QmaY78mEyhUCuvbMVdGzpKmkw9yKoHz5noSg5REZgipupY\"]},\"contracts/CErc20Delegate.sol\":{\"keccak256\":\"0xc50f6bf192d43be4958d56a210e1b3e978a86be8f2da7463aa63dcf5a21754ad\",\"urls\":[\"bzz-raw://9258ab0d8a3c994e99a5cab314f10a84da47d32a59d1d8cd4ad772e1195dc8cd\",\"dweb:/ipfs/QmWYYn1BFVjELtm8zoxHvqWWDojXma7NpCAMk7VMruSkjJ\"]},\"contracts/CToken.sol\":{\"keccak256\":\"0xc3a5a827241528049e20a24cc446558c8a9272909f75ce5d1cf14ae3ab5feba3\",\"urls\":[\"bzz-raw://a403db2bf1a8e5e9384df19600bd18d4251056818b094afcdab418e683bb5cb8\",\"dweb:/ipfs/QmdkRbFGtKP67tNNqyH7BraDRGerwRNA7ktscbFV9LioM2\"]},\"contracts/CTokenInterfaces.sol\":{\"keccak256\":\"0xc8a056c724ef4f0215ece6011e7ac1007c9dc7611ce5160d470ec858bbb06bd3\",\"urls\":[\"bzz-raw://58951693d1b53d2722e55b068bab2b570f4b044d89c28ed6b53bac6e95aeb662\",\"dweb:/ipfs/QmQiNTw5jZR74WjKfX2bPiuTT4tuFuq8rx7QxEVyVvdGLn\"]},\"contracts/CarefulMath.sol\":{\"keccak256\":\"0x1487237dbbbb73ad43c8eff16e78311753719a94a5065f574de5c91b672c56f8\",\"urls\":[\"bzz-raw://349966a236f313b2cb42e1942832e6bd7e134f65f6654e6c4d46788e65cc4a9b\",\"dweb:/ipfs/Qmebpv8i5jLR4fLgpZHQZRLu6aefVAbLC2yUk9ABEekquz\"]},\"contracts/ComptrollerInterface.sol\":{\"keccak256\":\"0xecfb84fabc9792d0b1c912886249c67bc42c39eb065d962d0b9a5f3736af5892\",\"urls\":[\"bzz-raw://711547ebc1a7f18b271118dd98276771953a9d7b3674716f67d247be9b907372\",\"dweb:/ipfs/QmbVZNvkBp8miByATrL6y5j8MePdcQ8uTAUZMpKrhpLgoa\"]},\"contracts/ComptrollerStorage.sol\":{\"keccak256\":\"0x83961d3c12984fe4afc72717fc44b2d868563d053a0eceda0cbf17ec6b255913\",\"urls\":[\"bzz-raw://ea667c2de43881f9be19f4f75dec348632273178965fc9b3655705d853b032bb\",\"dweb:/ipfs/QmZP6sbNFSgFZrAEvfRjhp1NtGj6U6Sea3JGiKG96AHyeP\"]},\"contracts/EIP20Interface.sol\":{\"keccak256\":\"0xee33b8b333743308a9153a59f22da2cadb22cedef4403fe039bf9e057c9c729a\",\"urls\":[\"bzz-raw://5427fdb941300d36a424da0a0a5800e3b2ca51c9c922831dbfce2f6637402b43\",\"dweb:/ipfs/QmTrvmLynqSUPjsGW2dpiQ91dSmn4xzccQiwr8qaBtyvjH\"]},\"contracts/EIP20NonStandardInterface.sol\":{\"keccak256\":\"0x469899442dd9640bfc2c670d404ad3027e48df5df8e5aeab0e25cc6b6aae05f5\",\"urls\":[\"bzz-raw://d8c4498abaf539eb413a2f1a916d75945adc8bd4ef437f8450cb67e07be3f38d\",\"dweb:/ipfs/QmaFpWfnhAMYW21rbT5PEszn4TGHdGU58Eq5AfZsCuapZ3\"]},\"contracts/ErrorReporter.sol\":{\"keccak256\":\"0xe9587478bc9efad203cab02b8aecae32828cfc9a271b13ae3c018e38e44aab32\",\"urls\":[\"bzz-raw://2eb34bdbbbc410fb401d50ddca44a7421a1d8191711c569ed5bcec1c1b07a05c\",\"dweb:/ipfs/QmYKNCYppyx3NGiwtjdLEmxUMgfnFBqT4pnvnhnBrPgrxS\"]},\"contracts/Exponential.sol\":{\"keccak256\":\"0xfda0e2b610541cf1cf316a0000c89a1069ccc21f1566affc0a058810e2b835d3\",\"urls\":[\"bzz-raw://fe319f184f1b5f27019d3d890124cd24e466d27153ac38eb9ff6b16efbad48b9\",\"dweb:/ipfs/Qmcev6jCmtdCviJxUQvUCmesPDShRDSvdfUEfvsqd4GEJA\"]},\"contracts/ExponentialNoError.sol\":{\"keccak256\":\"0x713a089f4bbcaec1d3924fc7d9a2154904a39f46cb6f25b713167dbe5f21623e\",\"urls\":[\"bzz-raw://d7108d68af7c5effd4272615ceba54e79e585f6b8be5aabc7602245c84c7b9e0\",\"dweb:/ipfs/QmQZo2XpxW7w5viVEg71mi9eKaAYD7HUqfCMB5yCCPVnc5\"]},\"contracts/IFuseFeeDistributor.sol\":{\"keccak256\":\"0xb5d287b8e05574d38bd5d0b413f44b4c5d312f28188573ac60abe78123fbd92c\",\"urls\":[\"bzz-raw://84c2bbf746a82aaa100bee90c7dd40411c723bded124bb1775bf72bf7fda8a2c\",\"dweb:/ipfs/QmToQzDtz9BV2tvU71YsfWjdaZu5qpP1xKFZ1TkQgubhDb\"]},\"contracts/InterestRateModel.sol\":{\"keccak256\":\"0x0cc0dbd1991e5dcdcff58b0c82a9471a0fb9df26763e5e7415e1d081b7332409\",\"urls\":[\"bzz-raw://f4d7936aefc43ea2724f0e472b8f1517f1ca40170258ab9d5bbd0862dd0c4f13\",\"dweb:/ipfs/QmfYjG1Sm3kNwbhomHCWhMqw9LvaJVWVzBe4Te5BHRbTQS\"]},\"contracts/PriceOracle.sol\":{\"keccak256\":\"0x62ba3a5ec8f06d456ab089d6ca7f9d14d3a6ce6814923271ca60a6990918fb41\",\"urls\":[\"bzz-raw://aa6d2f20efdd5389161eb15bdab98b5628dc8cd5354394bbed35bb14d3612506\",\"dweb:/ipfs/QmVfo4eCDuk8LMSywpBjZBxCv7zLCNsG6u3nyD1d4CYwsD\"]}},\"version\":1}"}},"contracts/CErc20.sol":{"CErc20":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"cashPrior","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"interestAccumulated","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"borrowIndex","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalBorrows","type":"uint256"}],"name":"AccrueInterest","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"borrower","type":"address"},{"indexed":false,"internalType":"uint256","name":"borrowAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"accountBorrows","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalBorrows","type":"uint256"}],"name":"Borrow","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"error","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"info","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"detail","type":"uint256"}],"name":"Failure","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"liquidator","type":"address"},{"indexed":false,"internalType":"address","name":"borrower","type":"address"},{"indexed":false,"internalType":"uint256","name":"repayAmount","type":"uint256"},{"indexed":false,"internalType":"address","name":"cTokenCollateral","type":"address"},{"indexed":false,"internalType":"uint256","name":"seizeTokens","type":"uint256"}],"name":"LiquidateBorrow","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"minter","type":"address"},{"indexed":false,"internalType":"uint256","name":"mintAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"mintTokens","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldAdminFeeMantissa","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newAdminFeeMantissa","type":"uint256"}],"name":"NewAdminFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract ComptrollerInterface","name":"oldComptroller","type":"address"},{"indexed":false,"internalType":"contract ComptrollerInterface","name":"newComptroller","type":"address"}],"name":"NewComptroller","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldFuseFeeMantissa","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newFuseFeeMantissa","type":"uint256"}],"name":"NewFuseFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract InterestRateModel","name":"oldInterestRateModel","type":"address"},{"indexed":false,"internalType":"contract InterestRateModel","name":"newInterestRateModel","type":"address"}],"name":"NewMarketInterestRateModel","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldReserveFactorMantissa","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newReserveFactorMantissa","type":"uint256"}],"name":"NewReserveFactor","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"redeemer","type":"address"},{"indexed":false,"internalType":"uint256","name":"redeemAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"redeemTokens","type":"uint256"}],"name":"Redeem","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"payer","type":"address"},{"indexed":false,"internalType":"address","name":"borrower","type":"address"},{"indexed":false,"internalType":"uint256","name":"repayAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"accountBorrows","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalBorrows","type":"uint256"}],"name":"RepayBorrow","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"benefactor","type":"address"},{"indexed":false,"internalType":"uint256","name":"addAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newTotalReserves","type":"uint256"}],"name":"ReservesAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"admin","type":"address"},{"indexed":false,"internalType":"uint256","name":"reduceAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newTotalReserves","type":"uint256"}],"name":"ReservesReduced","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":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"constant":false,"inputs":[{"internalType":"address","name":"compLikeDelegatee","type":"address"}],"name":"_delegateCompLikeTo","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"reduceAmount","type":"uint256"}],"name":"_reduceReserves","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"newAdminFeeMantissa","type":"uint256"}],"name":"_setAdminFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"contract InterestRateModel","name":"newInterestRateModel","type":"address"}],"name":"_setInterestRateModel","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"}],"name":"_setNameAndSymbol","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"newReserveFactorMantissa","type":"uint256"}],"name":"_setReserveFactor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"withdrawAmount","type":"uint256"}],"name":"_withdrawAdminFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"withdrawAmount","type":"uint256"}],"name":"_withdrawFuseFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"accrualBlockNumber","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"accrueInterest","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"adminFeeMantissa","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOfUnderlying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"borrowAmount","type":"uint256"}],"name":"borrow","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"borrowBalanceCurrent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"borrowBalanceStored","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"borrowIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"borrowRatePerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"comptroller","outputs":[{"internalType":"contract ComptrollerInterface","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"exchangeRateCurrent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"exchangeRateStored","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"fuseFeeMantissa","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getAccountSnapshot","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getCash","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"contract ComptrollerInterface","name":"comptroller_","type":"address"},{"internalType":"contract InterestRateModel","name":"interestRateModel_","type":"address"},{"internalType":"uint256","name":"initialExchangeRateMantissa_","type":"uint256"},{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"uint8","name":"decimals_","type":"uint8"},{"internalType":"uint256","name":"reserveFactorMantissa_","type":"uint256"},{"internalType":"uint256","name":"adminFeeMantissa_","type":"uint256"}],"name":"initialize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"underlying_","type":"address"},{"internalType":"contract ComptrollerInterface","name":"comptroller_","type":"address"},{"internalType":"contract InterestRateModel","name":"interestRateModel_","type":"address"},{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"uint256","name":"reserveFactorMantissa_","type":"uint256"},{"internalType":"uint256","name":"adminFeeMantissa_","type":"uint256"}],"name":"initialize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"interestRateModel","outputs":[{"internalType":"contract InterestRateModel","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isCEther","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isCToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"borrower","type":"address"},{"internalType":"uint256","name":"repayAmount","type":"uint256"},{"internalType":"contract CTokenInterface","name":"cTokenCollateral","type":"address"}],"name":"liquidateBorrow","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"mintAmount","type":"uint256"}],"name":"mint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"protocolSeizeShareMantissa","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"redeemTokens","type":"uint256"}],"name":"redeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"redeemAmount","type":"uint256"}],"name":"redeemUnderlying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"repayAmount","type":"uint256"}],"name":"repayBorrow","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"borrower","type":"address"},{"internalType":"uint256","name":"repayAmount","type":"uint256"}],"name":"repayBorrowBehalf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"reserveFactorMantissa","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"liquidator","type":"address"},{"internalType":"address","name":"borrower","type":"address"},{"internalType":"uint256","name":"seizeTokens","type":"uint256"}],"name":"seize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"supplyRatePerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalAdminFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalBorrows","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"totalBorrowsCurrent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalFuseFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalReserves","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"src","type":"address"},{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"underlying","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b506156a7806100206000396000f3fe608060405234801561001057600080fd5b50600436106103275760003560e01c80638f840ddd116101b8578063b2a02ff111610104578063dd62ed3e116100a2578063f5e3c4621161007c578063f5e3c46214610b73578063f8f9da2814610ba9578063fca7820b14610bb1578063fe9c44ae14610bce57610327565b8063dd62ed3e14610b17578063f2b3abbd14610b45578063f3fdb15a14610b6b57610327565b8063c5ebeaec116100de578063c5ebeaec14610acd578063db006a7514610aea578063dbfe7c1914610b07578063dc028ab114610b0f57610327565b8063b2a02ff114610a43578063bd6d894d14610a79578063c37f68e214610a8157610327565b8063a0b0d28911610171578063a9059cbb1161014b578063a9059cbb146109ff578063aa5af0fd14610a2b578063ac784ddc14610a33578063ae9d70b014610a3b57610327565b8063a0b0d2891461088b578063a6afed95146109da578063a7b820df146109e257610327565b80638f840ddd146107fe57806391dd36c61461080657806395d89b411461082357806395dd91931461082b578063a03dce8d14610851578063a0712d681461086e57610327565b80633b1d21a2116102775780636c540baf1161023057806373acee981161020a57806373acee98146107ab5780637f1e06be146107b3578063852a12e3146107d95780638d02d9a1146107f657610327565b80636c540baf146107755780636f307dc31461077d57806370a082311461078557610327565b80633b1d21a21461071457806347bd37181461071c5780635fe3b56714610724578063601a0bf11461074857806361feacff146107655780636752e7021461076d57610327565b806318160ddd116102e45780632608f818116102be5780632608f818146105e6578063313ce5671461061257806334154d4c146106305780633af9e669146106ee57610327565b806318160ddd146105a0578063182df0f5146105a857806323b872dd146105b057610327565b806306fdde031461032c578063095ea7b3146103a95780630e752702146103e95780630f8855e814610418578063173b99041461057257806317bfdfbc1461057a575b600080fd5b610334610bd6565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561036e578181015183820152602001610356565b50505050905090810190601f16801561039b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103d5600480360360408110156103bf57600080fd5b506001600160a01b038135169060200135610c63565b604080519115158252519081900360200190f35b610406600480360360208110156103ff57600080fd5b5035610cd0565b60408051918252519081900360200190f35b610570600480360361010081101561042f57600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b81111561046957600080fd5b82018360208201111561047b57600080fd5b803590602001918460018302840111600160201b8311171561049c57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156104ee57600080fd5b82018360208201111561050057600080fd5b803590602001918460018302840111600160201b8311171561052157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505060ff8335169350505060208101359060400135610ce6565b005b610406610f94565b6104066004803603602081101561059057600080fd5b50356001600160a01b0316610f9a565b610406611016565b61040661101c565b6103d5600480360360608110156105c657600080fd5b506001600160a01b0381358116916020810135909116906040013561107f565b610406600480360360408110156105fc57600080fd5b506001600160a01b0381351690602001356110ad565b61061a6110c3565b6040805160ff9092168252519081900360200190f35b6105706004803603604081101561064657600080fd5b810190602081018135600160201b81111561066057600080fd5b82018360208201111561067257600080fd5b803590602001918460018302840111600160201b8311171561069357600080fd5b919390929091602081019035600160201b8111156106b057600080fd5b8201836020820111156106c257600080fd5b803590602001918460018302840111600160201b831117156106e357600080fd5b5090925090506110cc565b6104066004803603602081101561070457600080fd5b50356001600160a01b0316611138565b6104066111ee565b6104066111fd565b61072c611203565b604080516001600160a01b039092168252519081900360200190f35b6104066004803603602081101561075e57600080fd5b5035611212565b610406611263565b610406611269565b610406611274565b61072c61127a565b6104066004803603602081101561079b57600080fd5b50356001600160a01b0316611289565b6104066112a4565b610570600480360360208110156107c957600080fd5b50356001600160a01b0316611317565b610406600480360360208110156107ef57600080fd5b50356113bc565b6104066113c7565b6104066113cd565b6104066004803603602081101561081c57600080fd5b50356113d3565b610334611410565b6104066004803603602081101561084157600080fd5b50356001600160a01b0316611468565b6104066004803603602081101561086757600080fd5b50356114cc565b6104066004803603602081101561088457600080fd5b5035611509565b610570600480360360e08110156108a157600080fd5b6001600160a01b0382358116926020810135821692604082013590921691810190608081016060820135600160201b8111156108dc57600080fd5b8201836020820111156108ee57600080fd5b803590602001918460018302840111600160201b8311171561090f57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561096157600080fd5b82018360208201111561097357600080fd5b803590602001918460018302840111600160201b8311171561099457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505082359350505060200135611515565b61040661162e565b610406600480360360208110156109f857600080fd5b50356117f3565b6103d560048036036040811015610a1557600080fd5b506001600160a01b038135169060200135611830565b61040661185d565b6103d5611863565b610406611868565b61040660048036036060811015610a5957600080fd5b506001600160a01b03813581169160208101359091169060400135611920565b610406611944565b610aa760048036036020811015610a9757600080fd5b50356001600160a01b03166119b8565b604080519485526020850193909352838301919091526060830152519081900360800190f35b61040660048036036020811015610ae357600080fd5b5035611a4d565b61040660048036036020811015610b0057600080fd5b5035611a58565b610406611a63565b610406611a69565b61040660048036036040811015610b2d57600080fd5b506001600160a01b0381358116916020013516611a6f565b61040660048036036020811015610b5b57600080fd5b50356001600160a01b0316611a9a565b61072c611ad4565b61040660048036036060811015610b8957600080fd5b506001600160a01b03813581169160208101359160409091013516611ae3565b610406611afb565b61040660048036036020811015610bc757600080fd5b5035611b70565b6103d5611bad565b60018054604080516020600284861615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610c5b5780601f10610c3057610100808354040283529160200191610c5b565b820191906000526020600020905b815481529060010190602001808311610c3e57829003601f168201915b505050505081565b3360008181526012602090815260408083206001600160a01b03871680855290835281842086905581518681529151939493909284927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a360019150505b92915050565b600080610cdc83611bb2565b509150505b919050565b3373a731585ab05fc9f83555cf9bff8f58ee94e18f8514610d385760405162461bcd60e51b815260040180806020018281038252602981526020018061555d6029913960400191505060405180910390fd5b600a54158015610d485750600b54155b610d835760405162461bcd60e51b815260040180806020018281038252602381526020018061544a6023913960400191505060405180910390fd5b600686905585610dc45760405162461bcd60e51b815260040180806020018281038252603081526020018061546d6030913960400191505060405180910390fd5b6000610dcf89611c15565b90508015610e24576040805162461bcd60e51b815260206004820152601a60248201527f73657474696e6720636f6d7074726f6c6c6572206661696c6564000000000000604482015290519081900360640190fd5b610e2c611d3a565b600a55670de0b6b3a7640000600b55610e4488611d3e565b90508015610e835760405162461bcd60e51b81526004018080602001828103825260228152602001806154ca6022913960400191505060405180910390fd5b8551610e9690600190602089019061523a565b508451610eaa90600290602088019061523a565b506003805460ff191660ff8616179055610ec383612044565b90508015610f18576040805162461bcd60e51b815260206004820152601d60248201527f73657474696e67207265736572766520666163746f72206661696c6564000000604482015290519081900360640190fd5b610f21826120fd565b90508015610f76576040805162461bcd60e51b815260206004820152601860248201527f73657474696e672061646d696e20666565206661696c65640000000000000000604482015290519081900360640190fd5b50506000805460ff60b01b1916600160b01b17905550505050505050565b60095481565b600080610fa681612222565b6000610fb061162e565b14610ffb576040805162461bcd60e51b81526020600482015260166024820152751858d8dc9d59481a5b9d195c995cdd0819985a5b195960521b604482015290519081900360640190fd5b61100483611468565b91505b611010816122de565b50919050565b60105481565b600080600061102961233c565b9092509050600082600381111561103c57fe5b146110785760405162461bcd60e51b815260040180806020018281038252603581526020018061560a6035913960400191505060405180910390fd5b9150505b90565b60008061108b81612222565b6000611099338787876123fc565b1491506110a5816122de565b509392505050565b6000806110ba848461268e565b50949350505050565b60035460ff1681565b6110d46126f3565b611118576040805162461bcd60e51b815260206004820152601060248201526f31b0b63632b9103737ba1030b236b4b760811b604482015290519081900360640190fd5b611124600185856152b4565b50611131600283836152b4565b5050505050565b6000611142615322565b6040518060200160405280611155611944565b90526001600160a01b03841660009081526011602052604081205491925090819061118190849061286c565b9092509050600082600381111561119457fe5b146111e6576040805162461bcd60e51b815260206004820152601f60248201527f62616c616e636520636f756c64206e6f742062652063616c63756c6174656400604482015290519081900360640190fd5b949350505050565b60006111f86128c0565b905090565b600c5481565b6004546001600160a01b031681565b60008061121e81612222565b600061122861162e565b9050801561124e5761124681601181111561123f57fe5b603b61290e565b925050611007565b61125784612974565b925050611010816122de565b600e5481565b666379da05b6000081565b600a5481565b6014546001600160a01b031681565b6001600160a01b031660009081526011602052604090205490565b6000806112b081612222565b60006112ba61162e565b14611305576040805162461bcd60e51b81526020600482015260166024820152751858d8dc9d59481a5b9d195c995cdd0819985a5b195960521b604482015290519081900360640190fd5b600c549150611313816122de565b5090565b61131f6126f3565b61135a5760405162461bcd60e51b815260040180806020018281038252602d81526020018061549d602d913960400191505060405180910390fd5b601454604080516317066a5760e21b81526001600160a01b03848116600483015291519190921691635c19a95c91602480830192600092919082900301818387803b1580156113a857600080fd5b505af1158015611131573d6000803e3d6000fd5b6000610cca82612a40565b60075481565b600d5481565b6000806113df81612222565b60006113e961162e565b905080156114075761124681601181111561140057fe5b605261290e565b611257846120fd565b6002805460408051602060018416156101000260001901909316849004601f81018490048402820184019092528181529291830182828015610c5b5780601f10610c3057610100808354040283529160200191610c5b565b600080600061147684612a80565b9092509050600082600381111561148957fe5b146114c55760405162461bcd60e51b81526004018080602001828103825260378152602001806154ec6037913960400191505060405180910390fd5b9392505050565b6000806114d881612222565b60006114e261162e565b90508015611500576112468160118111156114f957fe5b603361290e565b61125784612b34565b600080610cdc83612bb5565b60006702c68af0bb14000090506000886001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561155d57600080fd5b505afa158015611571573d6000803e3d6000fd5b505050506040513d602081101561158757600080fd5b5051905061159b8888848989868a8a610ce6565b601480546001600160a01b0319166001600160a01b038b81169190911791829055604080516318160ddd60e01b8152905192909116916318160ddd91600480820192602092909190829003018186803b1580156115f757600080fd5b505afa15801561160b573d6000803e3d6000fd5b505050506040513d602081101561162157600080fd5b5050505050505050505050565b600080611639611d3a565b905080600a54141561164f57600091505061107c565b60006116596128c0565b90506000600560009054906101000a90046001600160a01b03166001600160a01b03166315f2405383600c5461169e600d54611699600e54600f54612bf5565b612bf5565b6040518463ffffffff1660e01b815260040180848152602001838152602001828152602001935050505060206040518083038186803b1580156116e057600080fd5b505afa1580156116f4573d6000803e3d6000fd5b505050506040513d602081101561170a57600080fd5b5051905065048c27395000811115611769576040805162461bcd60e51b815260206004820152601c60248201527f626f72726f772072617465206973206162737572646c79206869676800000000604482015290519081900360640190fd5b60008061177885600a54612c2b565b9092509050600082600381111561178b57fe5b146117dd576040805162461bcd60e51b815260206004820152601f60248201527f636f756c64206e6f742063616c63756c61746520626c6f636b2064656c746100604482015290519081900360640190fd5b6117e985858584612c4e565b9550505050505090565b6000806117ff81612222565b600061180961162e565b905080156118275761124681601181111561182057fe5b603761290e565b61125784612e66565b60008061183c81612222565b600061184a333387876123fc565b149150611856816122de565b5092915050565b600b5481565b600081565b6005546000906001600160a01b031663b81688166118846128c0565b600c5461189b600d54611699600e54600f54612bf5565b60075460085460095401016040518563ffffffff1660e01b81526004018085815260200184815260200183815260200182815260200194505050505060206040518083038186803b1580156118ef57600080fd5b505afa158015611903573d6000803e3d6000fd5b505050506040513d602081101561191957600080fd5b5051905090565b6000600161192d81612222565b61193933868686612f42565b91506110a5816122de565b60008061195081612222565b600061195a61162e565b146119a5576040805162461bcd60e51b81526020600482015260166024820152751858d8dc9d59481a5b9d195c995cdd0819985a5b195960521b604482015290519081900360640190fd5b6119ad61101c565b9150611313816122de565b6001600160a01b0381166000908152601160205260408120548190819081908180806119e389612a80565b9350905060008160038111156119f557fe5b14611a135760095b975060009650869550859450611a469350505050565b611a1b61233c565b925090506000816003811115611a2d57fe5b14611a395760096119fd565b5060009650919450925090505b9193509193565b6000610cca82613327565b6000610cca82613365565b60085481565b600f5481565b6001600160a01b03918216600090815260126020908152604080832093909416825291909152205490565b600080611aa561162e565b90508015611acb57611ac3816011811115611abc57fe5b604b61290e565b915050610ce1565b6114c583611d3e565b6005546001600160a01b031681565b600080611af185858561339e565b5095945050505050565b6005546000906001600160a01b03166315f24053611b176128c0565b600c54611b2e600d54611699600e54600f54612bf5565b6040518463ffffffff1660e01b815260040180848152602001838152602001828152602001935050505060206040518083038186803b1580156118ef57600080fd5b600080611b7c81612222565b6000611b8661162e565b90508015611ba457611246816011811115611b9d57fe5b605961290e565b61125784612044565b600181565b6000806000611bc081612222565b6000611bca61162e565b90508015611bf557611be8816011811115611be157fe5b604161290e565b935060009250611c069050565b611c0033338761348a565b93509350505b611c0f816122de565b50915091565b6004805460408051623f1ee960e11b815290516000936001600160a01b0393841693861692627e3dd29281830192602092829003018186803b158015611c5a57600080fd5b505afa158015611c6e573d6000803e3d6000fd5b505050506040513d6020811015611c8457600080fd5b5051611cd7576040805162461bcd60e51b815260206004820152601c60248201527f6d61726b6572206d6574686f642072657475726e65642066616c736500000000604482015290519081900360640190fd5b600480546001600160a01b0319166001600160a01b03858116918217909255604080519284168352602083019190915280517f7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d9281900390910190a160006114c5565b4390565b600080611d496126f3565b611d5957611ac36001604d61290e565b611d61611d3a565b600a5414611d7557611ac3600a604c61290e565b600560009054906101000a90046001600160a01b03169050826001600160a01b0316632191f92a6040518163ffffffff1660e01b815260040160206040518083038186803b158015611dc657600080fd5b505afa158015611dda573d6000803e3d6000fd5b505050506040513d6020811015611df057600080fd5b5051611e43576040805162461bcd60e51b815260206004820152601c60248201527f6d61726b6572206d6574686f642072657475726e65642066616c736500000000604482015290519081900360640190fd5b600580546001600160a01b0319166001600160a01b03858116918217909255604080519284168352602083019190915280517fedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f9269281900390910190a16001600160a01b03811615611f755760408051600481526024810182526020810180516001600160e01b0316636cc1140b60e11b178152915181516001600160a01b0385169382918083835b60208310611f0a5780518252601f199092019160209182019101611eeb565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611f6c576040519150601f19603f3d011682016040523d82523d6000602084013e611f71565b606091505b5050505b60408051600481526024810182526020810180516001600160e01b031663742a137b60e11b178152915181516001600160a01b0387169382918083835b60208310611fd15780518252601f199092019160209182019101611fb2565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612033576040519150601f19603f3d011682016040523d82523d6000602084013e612038565b606091505b50600091506114c59050565b600061204e6126f3565b6120655761205e6001605a61290e565b9050610ce1565b61206d611d3a565b600a54146120815761205e600a605b61290e565b670de0b6b3a76400006120a161209984600754612bf5565b600854612bf5565b11156120b35761205e6002605c61290e565b6009805490839055604080518281526020810185905281517faaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460929181900390910190a160006114c5565b6000612107611d3a565b600a541461211b5761205e600a605461290e565b60001982141561212b5760075491505b60006121356137dc565b9050670de0b6b3a764000061215561214f60095486612bf5565b83612bf5565b111561216757611ac36002605561290e565b82600754146121cd576121786126f3565b61218857611ac36001605361290e565b6007805490849055604080518281526020810186905281517fcdd0b588250e1398549f79cfdb8217c186688822905d6715b0834ea1c865594a929181900390910190a1505b806008541461221b576008805490829055604080518281526020810184905281517f92eef861b6533b7d3417f39c2ad7b460eed4e88a32fa3604f30e718b7602e7dc929181900390910190a1505b60006114c5565b600054600160b01b900460ff1661226d576040805162461bcd60e51b815260206004820152600a6024820152691c994b595b9d195c995960b21b604482015290519081900360640190fd5b806122ce57600480546040805163c90c20b160e01b815290516001600160a01b039092169263c90c20b192828201926000929082900301818387803b1580156122b557600080fd5b505af11580156122c9573d6000803e3d6000fd5b505050505b506000805460ff60b01b19169055565b6000805460ff60b01b1916600160b01b1790558061233957600480546040805163319728a160e11b815290516001600160a01b039092169263632e514292828201926000929082900301818387803b1580156113a857600080fd5b50565b601054600090819080612357575050600654600091506123f8565b60006123616128c0565b9050600061236d615322565b600061238f84600c5461238a600d54611699600e54600f54612bf5565b61382b565b9350905060008160038111156123a157fe5b146123b6579550600094506123f89350505050565b6123c08386613877565b9250905060008160038111156123d257fe5b146123e7579550600094506123f89350505050565b50516000955093506123f892505050565b9091565b60048054604080516317b9b84b60e31b815230938101939093526001600160a01b03868116602485015285811660448501526064840185905290516000938493929092169163bdcdc25891608480830192602092919082900301818787803b15801561246757600080fd5b505af115801561247b573d6000803e3d6000fd5b505050506040513d602081101561249157600080fd5b5051905080156124b0576124a86003605d83613927565b9150506111e6565b836001600160a01b0316856001600160a01b031614156124d6576124a86002605e61290e565b60006001600160a01b0387811690871614156124f5575060001961251d565b506001600160a01b038086166000908152601260209081526040808320938a16835292905220545b60008060008061252d8589612c2b565b9094509250600084600381111561254057fe5b1461255e576125516009605e61290e565b96505050505050506111e6565b6001600160a01b038a166000908152601160205260409020546125819089612c2b565b9094509150600084600381111561259457fe5b146125a5576125516009605f61290e565b6001600160a01b0389166000908152601160205260409020546125c890896139b0565b909450905060008460038111156125db57fe5b146125ec576125516009606061290e565b6001600160a01b03808b16600090815260116020526040808220859055918b168152208190556000198514612644576001600160a01b03808b166000908152601260209081526040808320938f168352929052208390555b886001600160a01b03168a6001600160a01b03166000805160206155868339815191528a6040518082815260200191505060405180910390a35060009a9950505050505050505050565b600080600061269c81612222565b60006126a661162e565b905080156126d1576126c48160118111156126bd57fe5b604061290e565b9350600092506126e29050565b6126dc33878761348a565b93509350505b6126eb816122de565b509250929050565b60048054604080516303e1469160e61b815290516000936001600160a01b0390931692839263f851a4409281830192602092829003018186803b15801561273957600080fd5b505afa15801561274d573d6000803e3d6000fd5b505050506040513d602081101561276357600080fd5b50516001600160a01b0316331480156127dd5750806001600160a01b0316630a755ec26040518163ffffffff1660e01b815260040160206040518083038186803b1580156127b057600080fd5b505afa1580156127c4573d6000803e3d6000fd5b505050506040513d60208110156127da57600080fd5b50515b8061107857503373a731585ab05fc9f83555cf9bff8f58ee94e18f851480156110785750806001600160a01b0316632f1069ba6040518163ffffffff1660e01b815260040160206040518083038186803b15801561283a57600080fd5b505afa15801561284e573d6000803e3d6000fd5b505050506040513d602081101561286457600080fd5b505191505090565b6000806000612879615322565b61288386866139d6565b9092509050600082600381111561289657fe5b146128a757509150600090506128b9565b60006128b282613a3e565b9350935050505b9250929050565b601454604080516370a0823160e01b815230600482015290516000926001600160a01b03169182916370a0823191602480820192602092909190829003018186803b15801561283a57600080fd5b60007f45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa083601181111561293d57fe5b83606381111561294957fe5b604080519283526020830191909152600082820152519081900360600190a18260118111156114c557fe5b60008061297f6126f3565b61298f57611ac36001603c61290e565b612997611d3a565b600a54146129ab57611ac3600a603e61290e565b826129b46128c0565b10156129c657611ac3600e603d61290e565b600d548311156129dc57611ac36002603f61290e565b6129e8600d5484613a4d565b600d81905590506129f93384613a87565b604080513381526020810185905280820183905290517f3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e9181900360600190a160006114c5565b600080612a4c81612222565b6000612a5661162e565b90508015612a7457611246816011811115612a6d57fe5b602a61290e565b61125733600086613b0c565b6001600160a01b038116600090815260136020526040812080548291829182918291612ab7575060009450849350612b2f92505050565b612ac78160000154600b54613fdf565b90945092506000846003811115612ada57fe5b14612aef575091935060009250612b2f915050565b612afd83826001015461401e565b90945091506000846003811115612b1057fe5b14612b25575091935060009250612b2f915050565b5060009450925050505b915091565b600080612b3f611d3a565b600a5414612b5357611ac3600a603561290e565b82612b5c6128c0565b1015612b6e57611ac3600e603461290e565b600f54831115612b8457611ac36002603661290e565b612b90600f5484613a4d565b600f819055905061221b73a731585ab05fc9f83555cf9bff8f58ee94e18f8584613a87565b6000806000612bc381612222565b6000612bcd61162e565b90508015612beb57611be8816011811115612be457fe5b602061290e565b611c003386614049565b60006114c58383604051806040016040528060118152602001706164646974696f6e206f766572666c6f7760781b8152506143c8565b600080838311612c425750600090508183036128b9565b506003905060006128b9565b6000612c58615322565b612c706040518060200160405280868152508461445a565b90506000612c8082600c54614484565b90506000612c9082600c54612bf5565b90506000612cb1604051806020016040528060095481525084600d546144a3565b90506000612cd2604051806020016040528060085481525085600f546144a3565b90506000612cf3604051806020016040528060075481525086600e546144a3565b90506000612d0687600b54600b546144a3565b600a8d9055600b819055600c869055600d859055600f849055600e839055604080518d8152602081018990528082018390526060810188905290519192507f4dec04e750ca11537cabcd8a9eab06494de08da3735bc8871cd41250e190bc04919081900360800190a16005546040805160248082018e905282518083039091018152604490910182526020810180516001600160e01b0316635efd023360e11b178152915181516001600160a01b0390941693919290918291908083835b60208310612de35780518252601f199092019160209182019101612dc4565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612e45576040519150601f19603f3d011682016040523d82523d6000602084013e612e4a565b606091505b5060009150612e569050565b9c9b505050505050505050505050565b600080612e71611d3a565b600a5414612e8557611ac3600a603961290e565b82612e8e6128c0565b1015612ea057611ac3600e603861290e565b600e54831115612eb657611ac36002603a61290e565b612ec2600e5484613a4d565b600e81905560048054604080516303e1469160e61b8152905193945061221b936001600160a01b039092169263f851a440928282019260209290829003018186803b158015612f1057600080fd5b505afa158015612f24573d6000803e3d6000fd5b505050506040513d6020811015612f3a57600080fd5b505184613a87565b600480546040805163d02f735160e01b815230938101939093526001600160a01b038781166024850152868116604485015285811660648501526084840185905290516000938493929092169163d02f73519160a480830192602092919082900301818787803b158015612fb557600080fd5b505af1158015612fc9573d6000803e3d6000fd5b505050506040513d6020811015612fdf57600080fd5b505190508015612ff6576124a86003601d83613927565b846001600160a01b0316846001600160a01b0316141561301c576124a86006601e61290e565b613024615335565b6001600160a01b0385166000908152601160205260409020546130479085612c2b565b602083018190528282600381111561305b57fe5b600381111561306657fe5b905250600090508151600381111561307a57fe5b146130a45761309b6009601c8360000151600381111561309657fe5b613927565b925050506111e6565b6130c3846040518060200160405280666379da05b600008152506144d4565b608082018190526130d5908590613a4d565b60608201526130e261233c565b60c08301819052828260038111156130f657fe5b600381111561310157fe5b905250600090508151600381111561311557fe5b14613167576040805162461bcd60e51b815260206004820152601860248201527f65786368616e67652072617465206d617468206572726f720000000000000000604482015290519081900360640190fd5b61318760405180602001604052808360c001518152508260800151614484565b60a08201819052600d5461319a91612bf5565b60e082015260105460808201516131b19190613a4d565b6101008201526001600160a01b03861660009081526011602052604090205460608201516131df91906139b0565b60408301819052828260038111156131f357fe5b60038111156131fe57fe5b905250600090508151600381111561321257fe5b1461322e5761309b6009601b8360000151600381111561309657fe5b60e0810151600d556101008101516010556020808201516001600160a01b0380881660008181526011855260408082209490945583860151928b16808252908490209290925560608501518351908152925191939092600080516020615586833981519152929081900390910190a36080810151604080519182525130916001600160a01b038816916000805160206155868339815191529181900360200190a360a081015160e082015160408051308152602081019390935282810191909152517fa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc59181900360600190a16000979650505050505050565b60008061333381612222565b600061333d61162e565b9050801561335b5761124681601181111561335457fe5b600a61290e565b61125733856144fc565b60008061337181612222565b600061337b61162e565b9050801561339257611246816011811115612a6d57fe5b61125733856000613b0c565b60008060006133ac81612222565b60006133b661162e565b905080156133e1576133d48160118111156133cd57fe5b601161290e565b9350600092506134789050565b846001600160a01b031663a6afed956040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561341c57600080fd5b505af1158015613430573d6000803e3d6000fd5b505050506040513d602081101561344657600080fd5b505190508015613466576133d481601181111561345f57fe5b601261290e565b61347233888888614846565b93509350505b613481816122de565b50935093915050565b6004805460408051631200453160e11b815230938101939093526001600160a01b03868116602485015285811660448501526064840185905290516000938493849316916324008a629160848082019260209290919082900301818787803b1580156134f557600080fd5b505af1158015613509573d6000803e3d6000fd5b505050506040513d602081101561351f57600080fd5b505190508015613543576135366003604383613927565b9250600091506137d49050565b61354b611d3a565b600a541461355f57613536600a604461290e565b613567615382565b6001600160a01b038616600090815260136020526040902060010154606082015261359186612a80565b60808301819052602083018260038111156135a857fe5b60038111156135b357fe5b90525060009050816020015160038111156135ca57fe5b146135f4576135e6600960428360200151600381111561309657fe5b9350600092506137d4915050565b60001985141561360d5760808101516040820152613615565b604081018590525b613623878260400151614d3e565b60e08201819052608082015161363891612c2b565b60a083018190526020830182600381111561364f57fe5b600381111561365a57fe5b905250600090508160200151600381111561367157fe5b146136ad5760405162461bcd60e51b815260040180806020018281038252603a815260200180615523603a913960400191505060405180910390fd5b6136bd600c548260e00151612c2b565b60c08301819052602083018260038111156136d457fe5b60038111156136df57fe5b90525060009050816020015160038111156136f657fe5b146137325760405162461bcd60e51b81526004018080602001828103825260318152602001806155a66031913960400191505060405180910390fd5b60a080820180516001600160a01b03808a16600081815260136020908152604091829020948555600b5460019095019490945560c0870151600c81905560e088015195518251948f16855294840192909252828101949094526060820192909252608081019190915290517f1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1929181900390910190a160e00151600093509150505b935093915050565b600073a731585ab05fc9f83555cf9bff8f58ee94e18f856001600160a01b031663dd86fea16040518163ffffffff1660e01b815260040160206040518083038186803b1580156118ef57600080fd5b60008060008061383b87876139b0565b9092509050600082600381111561384e57fe5b1461385f57509150600090506137d4565b6138698186612c2b565b935093505050935093915050565b6000613881615322565b60008061389686670de0b6b3a7640000613fdf565b909250905060008260038111156138a957fe5b146138c8575060408051602081019091526000815290925090506128b9565b6000806138d5838861401e565b909250905060008260038111156138e857fe5b1461390a575060408051602081019091526000815290945092506128b9915050565b604080516020810190915290815260009890975095505050505050565b60007f45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa084601181111561395657fe5b84606381111561396257fe5b604080519283526020830191909152818101859052519081900360600190a1600384601181111561398f57fe5b146139a5578360118111156139a057fe5b6111e6565b506103e80192915050565b6000808383018481106139c8576000925090506128b9565b5060029150600090506128b9565b60006139e0615322565b6000806139f1866000015186613fdf565b90925090506000826003811115613a0457fe5b14613a23575060408051602081019091526000815290925090506128b9565b60408051602081019091529081526000969095509350505050565b51670de0b6b3a7640000900490565b60006114c58383604051806040016040528060158152602001747375627472616374696f6e20756e646572666c6f7760581b815250614f1b565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091018252602081810180516001600160e01b031663a9059cbb60e01b1790528251808401909352601983527f544f4b454e5f5452414e534645525f4f55545f4641494c45440000000000000090830152613b0891614f75565b5050565b6000821580613b19575081155b613b545760405162461bcd60e51b815260040180806020018281038252603481526020018061563f6034913960400191505060405180910390fd5b613b5c6153c8565b613b6461233c565b6040830181905260208301826003811115613b7b57fe5b6003811115613b8657fe5b9052506000905081602001516003811115613b9d57fe5b14613bc157613bb96009602e8360200151600381111561309657fe5b9150506114c5565b8315613c42576060810184905260408051602081018252908201518152613be8908561286c565b6080830181905260208301826003811115613bff57fe5b6003811115613c0a57fe5b9052506000905081602001516003811115613c2157fe5b14613c3d57613bb96009602c8360200151600381111561309657fe5b613cbb565b613c5e8360405180602001604052808460400151815250615004565b6060830181905260208301826003811115613c7557fe5b6003811115613c8057fe5b9052506000905081602001516003811115613c9757fe5b14613cb357613bb96009602d8360200151600381111561309657fe5b608081018390525b6004805460608301516040805163eabe7d9160e01b815230948101949094526001600160a01b038981166024860152604485019290925251600093919092169163eabe7d919160648082019260209290919082900301818787803b158015613d2257600080fd5b505af1158015613d36573d6000803e3d6000fd5b505050506040513d6020811015613d4c57600080fd5b505190508015613d6c57613d636003602b83613927565b925050506114c5565b613d74611d3a565b600a5414613d8857613d63600a602f61290e565b613d986010548360600151612c2b565b60a0840181905260208401826003811115613daf57fe5b6003811115613dba57fe5b9052506000905082602001516003811115613dd157fe5b14613ded57613d63600960318460200151600381111561309657fe5b6001600160a01b0386166000908152601160205260409020546060830151613e159190612c2b565b60c0840181905260208401826003811115613e2c57fe5b6003811115613e3757fe5b9052506000905082602001516003811115613e4e57fe5b14613e6a57613d63600960308460200151600381111561309657fe5b8160800151613e776128c0565b1015613e8957613d63600e603261290e565b60a082015160105560c08201516001600160a01b0387166000908152601160205260409020556080820151613ebf908790613a87565b6060820151604080519182525130916001600160a01b038916916000805160206155868339815191529181900360200190a36080820151606080840151604080516001600160a01b038b168152602081019490945283810191909152517fe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a9299281900390910190a16004805460808401516060850151604080516351dff98960e01b815230958101959095526001600160a01b038b8116602487015260448601939093526064850191909152519116916351dff98991608480830192600092919082900301818387803b158015613fb457600080fd5b505af1158015613fc8573d6000803e3d6000fd5b5060009250613fd5915050565b9695505050505050565b60008083613ff2575060009050806128b9565b83830283858281613fff57fe5b0414614013575060029150600090506128b9565b6000925090506128b9565b6000808261403257506001905060006128b9565b600083858161403d57fe5b04915091509250929050565b6004805460408051634ef4c3e160e01b815230938101939093526001600160a01b038581166024850152604484018590529051600093849384931691634ef4c3e19160648082019260209290919082900301818787803b1580156140ac57600080fd5b505af11580156140c0573d6000803e3d6000fd5b505050506040513d60208110156140d657600080fd5b5051905080156140fa576140ed6003602183613927565b9250600091506128b99050565b614102611d3a565b600a5414614116576140ed600a602461290e565b61411e6153c8565b61412661233c565b604083018190526020830182600381111561413d57fe5b600381111561414857fe5b905250600090508160200151600381111561415f57fe5b146141895761417b600960238360200151600381111561309657fe5b9350600092506128b9915050565b6141938686614d3e565b60c08201819052604080516020810182529083015181526141b49190615004565b60608301819052602083018260038111156141cb57fe5b60038111156141d657fe5b90525060009050816020015160038111156141ed57fe5b1461423f576040805162461bcd60e51b815260206004820181905260248201527f4d494e545f45584348414e47455f43414c43554c4154494f4e5f4641494c4544604482015290519081900360640190fd5b61424f6010548260600151612bf5565b60808201526001600160a01b038616600090815260116020526040902054606082015161427c9190612bf5565b60a0820181905260808201516010556001600160a01b0387166000818152601160209081526040918290209390935560c084015160608086015183519485529484019190915282820193909352517f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f929181900390910190a1606081015160408051918252516001600160a01b0388169130916000805160206155868339815191529181900360200190a36004805460c08301516060840151604080516341c728b960e01b815230958101959095526001600160a01b038b8116602487015260448601939093526064850191909152519116916341c728b991608480830192600092919082900301818387803b15801561439557600080fd5b505af11580156143a9573d6000803e3d6000fd5b50600092506143b6915050565b8160c001519350935050509250929050565b600083830182858210156110ba5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561441f578181015183820152602001614407565b50505050905090810190601f16801561444c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b614462615322565b604051806020016040528061447b85600001518561501b565b90529392505050565b600061448e615322565b614498848461445a565b90506111e681613a3e565b60006144ad615322565b6144b7858561445a565b90506144cb6144c582613a3e565b84612bf5565b95945050505050565b6000670de0b6b3a76400006144ed84846000015161501b565b816144f457fe5b049392505050565b600480546040805163368f515360e21b815230938101939093526001600160a01b0385811660248501526044840185905290516000938493929092169163da3d454c91606480830192602092919082900301818787803b15801561455f57600080fd5b505af1158015614573573d6000803e3d6000fd5b505050506040513d602081101561458957600080fd5b5051905080156145a8576145a06003601083613927565b915050610cca565b6145b0611d3a565b600a54146145c4576145a0600a600c61290e565b60006145ce6128c0565b9050838110156145ed576145e4600e600b61290e565b92505050610cca565b6145f5615406565b6145fe86612a80565b602083018190528282600381111561461257fe5b600381111561461d57fe5b905250600090508151600381111561463157fe5b146146565761464c6009808360000151600381111561309657fe5b9350505050610cca565b6146648160200151866139b0565b604083018190528282600381111561467857fe5b600381111561468357fe5b905250600090508151600381111561469757fe5b146146b35761464c6009600e8360000151600381111561309657fe5b600480546040808401518151631de6c8a560e21b815230948101949094526024840152516001600160a01b039091169163779b22949160448083019260209291908290030181600087803b15801561470a57600080fd5b505af115801561471e573d6000803e3d6000fd5b505050506040513d602081101561473457600080fd5b50519250821561474b5761464c6003601085613927565b614757600c54866139b0565b606083018190528282600381111561476b57fe5b600381111561477657fe5b905250600090508151600381111561478a57fe5b146147a65761464c6009600d8360000151600381111561309657fe5b6040808201516001600160a01b0388166000908152601360205291909120908155600b546001909101556060810151600c556147e28686613a87565b60408082015160608084015183516001600160a01b038b168152602081018a9052808501939093529082015290517f13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab809181900360800190a160009695505050505050565b6004805460408051632fe3f38f60e11b815230938101939093526001600160a01b03848116602485015287811660448501528681166064850152608484018690529051600093849384931691635fc7e71e9160a48082019260209290919082900301818787803b1580156148b957600080fd5b505af11580156148cd573d6000803e3d6000fd5b505050506040513d60208110156148e357600080fd5b505190508015614907576148fa6003601483613927565b925060009150614d359050565b61490f611d3a565b600a5414614923576148fa600a601861290e565b61492b611d3a565b846001600160a01b0316636c540baf6040518163ffffffff1660e01b815260040160206040518083038186803b15801561496457600080fd5b505afa158015614978573d6000803e3d6000fd5b505050506040513d602081101561498e57600080fd5b5051146149a1576148fa600a601361290e565b866001600160a01b0316866001600160a01b031614156149c7576148fa6006601961290e565b846149d8576148fa6007601761290e565b6000198514156149ee576148fa6007601661290e565b6000806149fc89898961348a565b90925090508115614a2c57614a1d826011811115614a1657fe5b601a61290e565b945060009350614d3592505050565b600480546040805163c488847b60e01b815230938101939093526001600160a01b0389811660248501526044840185905281516000948594929092169263c488847b9260648082019391829003018186803b158015614a8a57600080fd5b505afa158015614a9e573d6000803e3d6000fd5b505050506040513d6040811015614ab457600080fd5b50805160209091015190925090508115614aff5760405162461bcd60e51b81526004018080602001828103825260338152602001806155d76033913960400191505060405180910390fd5b80886001600160a01b03166370a082318c6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015614b5657600080fd5b505afa158015614b6a573d6000803e3d6000fd5b505050506040513d6020811015614b8057600080fd5b50511015614bd5576040805162461bcd60e51b815260206004820152601860248201527f4c49515549444154455f5345495a455f544f4f5f4d5543480000000000000000604482015290519081900360640190fd5b60006001600160a01b038916301415614bfb57614bf4308d8d85612f42565b9050614c85565b6040805163b2a02ff160e01b81526001600160a01b038e811660048301528d81166024830152604482018590529151918b169163b2a02ff1916064808201926020929091908290030181600087803b158015614c5657600080fd5b505af1158015614c6a573d6000803e3d6000fd5b505050506040513d6020811015614c8057600080fd5b505190505b8015614ccf576040805162461bcd60e51b81526020600482015260146024820152731d1bdad95b881cd95a5e9d5c994819985a5b195960621b604482015290519081900360640190fd5b604080516001600160a01b03808f168252808e1660208301528183018790528b1660608201526080810184905290517f298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb529181900360a00190a16000975092955050505050505b94509492505050565b601454604080516370a0823160e01b8152306004820152905160009283926001600160a01b03909116916370a0823191602480820192602092909190829003018186803b158015614d8e57600080fd5b505afa158015614da2573d6000803e3d6000fd5b505050506040513d6020811015614db857600080fd5b5051604080516001600160a01b038716602482015230604482015260648082018790528251808303909101815260849091018252602081810180516001600160e01b03166323b872dd60e01b1790528251808401909352601883527f544f4b454e5f5452414e534645525f494e5f4641494c4544000000000000000090830152919250614e459190614f75565b601454604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b158015614e9057600080fd5b505afa158015614ea4573d6000803e3d6000fd5b505050506040513d6020811015614eba57600080fd5b5051905081811015614f13576040805162461bcd60e51b815260206004820152601a60248201527f544f4b454e5f5452414e534645525f494e5f4f564552464c4f57000000000000604482015290519081900360640190fd5b039392505050565b60008184841115614f6d5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561441f578181015183820152602001614407565b505050900390565b601454606090614f8f906001600160a01b0316848461505d565b805190915015614fff57808060200190516020811015614fae57600080fd5b50518290614ffd5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561441f578181015183820152602001614407565b505b505050565b6000806000615011615322565b6128838686615165565b60006114c583836040518060400160405280601781526020017f6d756c7469706c69636174696f6e206f766572666c6f770000000000000000008152506151c4565b606060006060856001600160a01b0316856040518082805190602001908083835b6020831061509d5780518252601f19909201916020918201910161507e565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146150ff576040519150601f19603f3d011682016040523d82523d6000602084013e615104565b606091505b5091509150816144cb5780511561511e5780518082602001fd5b60405162461bcd60e51b815260206004820181815286516024840152865187939192839260440191908501908083836000831561441f578181015183820152602001614407565b600061516f615322565b600080615184670de0b6b3a764000087613fdf565b9092509050600082600381111561519757fe5b146151b6575060408051602081019091526000815290925090506128b9565b6128b2818660000151613877565b60008315806151d1575082155b156151de575060006114c5565b838302838582816151eb57fe5b041483906110ba5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561441f578181015183820152602001614407565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061527b57805160ff19168380011785556152a8565b828001600101855582156152a8579182015b828111156152a857825182559160200191906001019061528d565b5061131392915061542f565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106152f55782800160ff198235161785556152a8565b828001600101855582156152a8579182015b828111156152a8578235825591602001919060010190615307565b6040518060200160405280600081525090565b604080516101208101909152806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040805161010081019091528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040805160e0810190915280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b604080516080810190915280600081526020016000815260200160008152602001600081525090565b61107c91905b80821115611313576000815560010161543556fe6d61726b6574206d6179206f6e6c7920626520696e697469616c697a6564206f6e6365696e697469616c2065786368616e67652072617465206d7573742062652067726561746572207468616e207a65726f2e6f6e6c79207468652061646d696e206d6179207365742074686520636f6d702d6c696b652064656c656761746573657474696e6720696e7465726573742072617465206d6f64656c206661696c6564626f72726f7742616c616e636553746f7265643a20626f72726f7742616c616e636553746f726564496e7465726e616c206661696c656452455041595f424f52524f575f4e45575f4143434f554e545f424f52524f575f42414c414e43455f43414c43554c4154494f4e5f4641494c45446f6e6c7920467573652061646d696e206d617920696e697469616c697a6520746865206d61726b6574ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef52455041595f424f52524f575f4e45575f544f54414c5f42414c414e43455f43414c43554c4154494f4e5f4641494c45444c49515549444154455f434f4d5054524f4c4c45525f43414c43554c4154455f414d4f554e545f5345495a455f4641494c454465786368616e67655261746553746f7265643a2065786368616e67655261746553746f726564496e7465726e616c206661696c65646f6e65206f662072656465656d546f6b656e73496e206f722072656465656d416d6f756e74496e206d757374206265207a65726fa265627a7a7231582099ef0a08860a8908fd9db92c0276bb8607d61521224847759514eda76111945d64736f6c63430005110032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x56A7 DUP1 PUSH2 0x20 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 0x327 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8F840DDD GT PUSH2 0x1B8 JUMPI DUP1 PUSH4 0xB2A02FF1 GT PUSH2 0x104 JUMPI DUP1 PUSH4 0xDD62ED3E GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xF5E3C462 GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xF5E3C462 EQ PUSH2 0xB73 JUMPI DUP1 PUSH4 0xF8F9DA28 EQ PUSH2 0xBA9 JUMPI DUP1 PUSH4 0xFCA7820B EQ PUSH2 0xBB1 JUMPI DUP1 PUSH4 0xFE9C44AE EQ PUSH2 0xBCE JUMPI PUSH2 0x327 JUMP JUMPDEST DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0xB17 JUMPI DUP1 PUSH4 0xF2B3ABBD EQ PUSH2 0xB45 JUMPI DUP1 PUSH4 0xF3FDB15A EQ PUSH2 0xB6B JUMPI PUSH2 0x327 JUMP JUMPDEST DUP1 PUSH4 0xC5EBEAEC GT PUSH2 0xDE JUMPI DUP1 PUSH4 0xC5EBEAEC EQ PUSH2 0xACD JUMPI DUP1 PUSH4 0xDB006A75 EQ PUSH2 0xAEA JUMPI DUP1 PUSH4 0xDBFE7C19 EQ PUSH2 0xB07 JUMPI DUP1 PUSH4 0xDC028AB1 EQ PUSH2 0xB0F JUMPI PUSH2 0x327 JUMP JUMPDEST DUP1 PUSH4 0xB2A02FF1 EQ PUSH2 0xA43 JUMPI DUP1 PUSH4 0xBD6D894D EQ PUSH2 0xA79 JUMPI DUP1 PUSH4 0xC37F68E2 EQ PUSH2 0xA81 JUMPI PUSH2 0x327 JUMP JUMPDEST DUP1 PUSH4 0xA0B0D289 GT PUSH2 0x171 JUMPI DUP1 PUSH4 0xA9059CBB GT PUSH2 0x14B JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x9FF JUMPI DUP1 PUSH4 0xAA5AF0FD EQ PUSH2 0xA2B JUMPI DUP1 PUSH4 0xAC784DDC EQ PUSH2 0xA33 JUMPI DUP1 PUSH4 0xAE9D70B0 EQ PUSH2 0xA3B JUMPI PUSH2 0x327 JUMP JUMPDEST DUP1 PUSH4 0xA0B0D289 EQ PUSH2 0x88B JUMPI DUP1 PUSH4 0xA6AFED95 EQ PUSH2 0x9DA JUMPI DUP1 PUSH4 0xA7B820DF EQ PUSH2 0x9E2 JUMPI PUSH2 0x327 JUMP JUMPDEST DUP1 PUSH4 0x8F840DDD EQ PUSH2 0x7FE JUMPI DUP1 PUSH4 0x91DD36C6 EQ PUSH2 0x806 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x823 JUMPI DUP1 PUSH4 0x95DD9193 EQ PUSH2 0x82B JUMPI DUP1 PUSH4 0xA03DCE8D EQ PUSH2 0x851 JUMPI DUP1 PUSH4 0xA0712D68 EQ PUSH2 0x86E JUMPI PUSH2 0x327 JUMP JUMPDEST DUP1 PUSH4 0x3B1D21A2 GT PUSH2 0x277 JUMPI DUP1 PUSH4 0x6C540BAF GT PUSH2 0x230 JUMPI DUP1 PUSH4 0x73ACEE98 GT PUSH2 0x20A JUMPI DUP1 PUSH4 0x73ACEE98 EQ PUSH2 0x7AB JUMPI DUP1 PUSH4 0x7F1E06BE EQ PUSH2 0x7B3 JUMPI DUP1 PUSH4 0x852A12E3 EQ PUSH2 0x7D9 JUMPI DUP1 PUSH4 0x8D02D9A1 EQ PUSH2 0x7F6 JUMPI PUSH2 0x327 JUMP JUMPDEST DUP1 PUSH4 0x6C540BAF EQ PUSH2 0x775 JUMPI DUP1 PUSH4 0x6F307DC3 EQ PUSH2 0x77D JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x785 JUMPI PUSH2 0x327 JUMP JUMPDEST DUP1 PUSH4 0x3B1D21A2 EQ PUSH2 0x714 JUMPI DUP1 PUSH4 0x47BD3718 EQ PUSH2 0x71C JUMPI DUP1 PUSH4 0x5FE3B567 EQ PUSH2 0x724 JUMPI DUP1 PUSH4 0x601A0BF1 EQ PUSH2 0x748 JUMPI DUP1 PUSH4 0x61FEACFF EQ PUSH2 0x765 JUMPI DUP1 PUSH4 0x6752E702 EQ PUSH2 0x76D JUMPI PUSH2 0x327 JUMP JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0x2E4 JUMPI DUP1 PUSH4 0x2608F818 GT PUSH2 0x2BE JUMPI DUP1 PUSH4 0x2608F818 EQ PUSH2 0x5E6 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x612 JUMPI DUP1 PUSH4 0x34154D4C EQ PUSH2 0x630 JUMPI DUP1 PUSH4 0x3AF9E669 EQ PUSH2 0x6EE JUMPI PUSH2 0x327 JUMP JUMPDEST DUP1 PUSH4 0x18160DDD EQ PUSH2 0x5A0 JUMPI DUP1 PUSH4 0x182DF0F5 EQ PUSH2 0x5A8 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x5B0 JUMPI PUSH2 0x327 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x32C JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x3A9 JUMPI DUP1 PUSH4 0xE752702 EQ PUSH2 0x3E9 JUMPI DUP1 PUSH4 0xF8855E8 EQ PUSH2 0x418 JUMPI DUP1 PUSH4 0x173B9904 EQ PUSH2 0x572 JUMPI DUP1 PUSH4 0x17BFDFBC EQ PUSH2 0x57A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x334 PUSH2 0xBD6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x36E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x356 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x39B JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3D5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xC63 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x406 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xCD0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x570 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x42F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x469 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x47B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x49C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x4EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x500 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x521 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP POP PUSH1 0xFF DUP4 CALLDATALOAD AND SWAP4 POP POP POP PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xCE6 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x406 PUSH2 0xF94 JUMP JUMPDEST PUSH2 0x406 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x590 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xF9A JUMP JUMPDEST PUSH2 0x406 PUSH2 0x1016 JUMP JUMPDEST PUSH2 0x406 PUSH2 0x101C JUMP JUMPDEST PUSH2 0x3D5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x5C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x107F JUMP JUMPDEST PUSH2 0x406 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x5FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x10AD JUMP JUMPDEST PUSH2 0x61A PUSH2 0x10C3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x570 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x646 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x660 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x672 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x693 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x6B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x6C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x6E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x10CC JUMP JUMPDEST PUSH2 0x406 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x704 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1138 JUMP JUMPDEST PUSH2 0x406 PUSH2 0x11EE JUMP JUMPDEST PUSH2 0x406 PUSH2 0x11FD JUMP JUMPDEST PUSH2 0x72C PUSH2 0x1203 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x406 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x75E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1212 JUMP JUMPDEST PUSH2 0x406 PUSH2 0x1263 JUMP JUMPDEST PUSH2 0x406 PUSH2 0x1269 JUMP JUMPDEST PUSH2 0x406 PUSH2 0x1274 JUMP JUMPDEST PUSH2 0x72C PUSH2 0x127A JUMP JUMPDEST PUSH2 0x406 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x79B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1289 JUMP JUMPDEST PUSH2 0x406 PUSH2 0x12A4 JUMP JUMPDEST PUSH2 0x570 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1317 JUMP JUMPDEST PUSH2 0x406 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x13BC JUMP JUMPDEST PUSH2 0x406 PUSH2 0x13C7 JUMP JUMPDEST PUSH2 0x406 PUSH2 0x13CD JUMP JUMPDEST PUSH2 0x406 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x81C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x13D3 JUMP JUMPDEST PUSH2 0x334 PUSH2 0x1410 JUMP JUMPDEST PUSH2 0x406 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x841 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1468 JUMP JUMPDEST PUSH2 0x406 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x867 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x14CC JUMP JUMPDEST PUSH2 0x406 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x884 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1509 JUMP JUMPDEST PUSH2 0x570 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x8A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP3 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP1 SWAP3 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x8DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x8EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x90F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x961 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x973 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x994 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP POP DUP3 CALLDATALOAD SWAP4 POP POP POP PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1515 JUMP JUMPDEST PUSH2 0x406 PUSH2 0x162E JUMP JUMPDEST PUSH2 0x406 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x17F3 JUMP JUMPDEST PUSH2 0x3D5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xA15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1830 JUMP JUMPDEST PUSH2 0x406 PUSH2 0x185D JUMP JUMPDEST PUSH2 0x3D5 PUSH2 0x1863 JUMP JUMPDEST PUSH2 0x406 PUSH2 0x1868 JUMP JUMPDEST PUSH2 0x406 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xA59 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x1920 JUMP JUMPDEST PUSH2 0x406 PUSH2 0x1944 JUMP JUMPDEST PUSH2 0xAA7 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA97 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x19B8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP5 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP4 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 RETURN JUMPDEST PUSH2 0x406 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAE3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1A4D JUMP JUMPDEST PUSH2 0x406 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB00 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1A58 JUMP JUMPDEST PUSH2 0x406 PUSH2 0x1A63 JUMP JUMPDEST PUSH2 0x406 PUSH2 0x1A69 JUMP JUMPDEST PUSH2 0x406 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xB2D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x1A6F JUMP JUMPDEST PUSH2 0x406 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB5B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1A9A JUMP JUMPDEST PUSH2 0x72C PUSH2 0x1AD4 JUMP JUMPDEST PUSH2 0x406 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xB89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 SWAP1 SWAP2 ADD CALLDATALOAD AND PUSH2 0x1AE3 JUMP JUMPDEST PUSH2 0x406 PUSH2 0x1AFB JUMP JUMPDEST PUSH2 0x406 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xBC7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1B70 JUMP JUMPDEST PUSH2 0x3D5 PUSH2 0x1BAD JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 DUP5 DUP7 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xC5B JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xC30 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xC5B JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xC3E JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP7 SWAP1 SSTORE DUP2 MLOAD DUP7 DUP2 MSTORE SWAP2 MLOAD SWAP4 SWAP5 SWAP4 SWAP1 SWAP3 DUP5 SWAP3 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xCDC DUP4 PUSH2 0x1BB2 JUMP JUMPDEST POP SWAP2 POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST CALLER PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 EQ PUSH2 0xD38 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x555D PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xA SLOAD ISZERO DUP1 ISZERO PUSH2 0xD48 JUMPI POP PUSH1 0xB SLOAD ISZERO JUMPDEST PUSH2 0xD83 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x544A PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP7 SWAP1 SSTORE DUP6 PUSH2 0xDC4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x30 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x546D PUSH1 0x30 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xDCF DUP10 PUSH2 0x1C15 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0xE24 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x73657474696E6720636F6D7074726F6C6C6572206661696C6564000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xE2C PUSH2 0x1D3A JUMP JUMPDEST PUSH1 0xA SSTORE PUSH8 0xDE0B6B3A7640000 PUSH1 0xB SSTORE PUSH2 0xE44 DUP9 PUSH2 0x1D3E JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0xE83 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x54CA PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP6 MLOAD PUSH2 0xE96 SWAP1 PUSH1 0x1 SWAP1 PUSH1 0x20 DUP10 ADD SWAP1 PUSH2 0x523A JUMP JUMPDEST POP DUP5 MLOAD PUSH2 0xEAA SWAP1 PUSH1 0x2 SWAP1 PUSH1 0x20 DUP9 ADD SWAP1 PUSH2 0x523A JUMP JUMPDEST POP PUSH1 0x3 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF DUP7 AND OR SWAP1 SSTORE PUSH2 0xEC3 DUP4 PUSH2 0x2044 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0xF18 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x73657474696E67207265736572766520666163746F72206661696C6564000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xF21 DUP3 PUSH2 0x20FD JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0xF76 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x73657474696E672061646D696E20666565206661696C65640000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xB0 SHL NOT AND PUSH1 0x1 PUSH1 0xB0 SHL OR SWAP1 SSTORE POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xFA6 DUP2 PUSH2 0x2222 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFB0 PUSH2 0x162E JUMP JUMPDEST EQ PUSH2 0xFFB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x1858D8DC9D59481A5B9D195C995CDD0819985A5B1959 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1004 DUP4 PUSH2 0x1468 JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH2 0x1010 DUP2 PUSH2 0x22DE JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x10 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1029 PUSH2 0x233C JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x103C JUMPI INVALID JUMPDEST EQ PUSH2 0x1078 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x35 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x560A PUSH1 0x35 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP2 POP POP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x108B DUP2 PUSH2 0x2222 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1099 CALLER DUP8 DUP8 DUP8 PUSH2 0x23FC JUMP JUMPDEST EQ SWAP2 POP PUSH2 0x10A5 DUP2 PUSH2 0x22DE JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x10BA DUP5 DUP5 PUSH2 0x268E JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x10D4 PUSH2 0x26F3 JUMP JUMPDEST PUSH2 0x1118 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x31B0B63632B9103737BA1030B236B4B7 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1124 PUSH1 0x1 DUP6 DUP6 PUSH2 0x52B4 JUMP JUMPDEST POP PUSH2 0x1131 PUSH1 0x2 DUP4 DUP4 PUSH2 0x52B4 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1142 PUSH2 0x5322 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x1155 PUSH2 0x1944 JUMP JUMPDEST SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP SWAP1 DUP2 SWAP1 PUSH2 0x1181 SWAP1 DUP5 SWAP1 PUSH2 0x286C JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1194 JUMPI INVALID JUMPDEST EQ PUSH2 0x11E6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x62616C616E636520636F756C64206E6F742062652063616C63756C6174656400 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x11F8 PUSH2 0x28C0 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0xC SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x121E DUP2 PUSH2 0x2222 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1228 PUSH2 0x162E JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x124E JUMPI PUSH2 0x1246 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x123F JUMPI INVALID JUMPDEST PUSH1 0x3B PUSH2 0x290E JUMP JUMPDEST SWAP3 POP POP PUSH2 0x1007 JUMP JUMPDEST PUSH2 0x1257 DUP5 PUSH2 0x2974 JUMP JUMPDEST SWAP3 POP POP PUSH2 0x1010 DUP2 PUSH2 0x22DE JUMP JUMPDEST PUSH1 0xE SLOAD DUP2 JUMP JUMPDEST PUSH7 0x6379DA05B60000 DUP2 JUMP JUMPDEST PUSH1 0xA SLOAD DUP2 JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x12B0 DUP2 PUSH2 0x2222 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x12BA PUSH2 0x162E JUMP JUMPDEST EQ PUSH2 0x1305 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x1858D8DC9D59481A5B9D195C995CDD0819985A5B1959 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0xC SLOAD SWAP2 POP PUSH2 0x1313 DUP2 PUSH2 0x22DE JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0x131F PUSH2 0x26F3 JUMP JUMPDEST PUSH2 0x135A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x549D PUSH1 0x2D SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x17066A57 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x5C19A95C SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x13A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1131 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xCCA DUP3 PUSH2 0x2A40 JUMP JUMPDEST PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xD SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x13DF DUP2 PUSH2 0x2222 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x13E9 PUSH2 0x162E JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1407 JUMPI PUSH2 0x1246 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x1400 JUMPI INVALID JUMPDEST PUSH1 0x52 PUSH2 0x290E JUMP JUMPDEST PUSH2 0x1257 DUP5 PUSH2 0x20FD JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP4 AND DUP5 SWAP1 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xC5B JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xC30 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xC5B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1476 DUP5 PUSH2 0x2A80 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1489 JUMPI INVALID JUMPDEST EQ PUSH2 0x14C5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x37 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x54EC PUSH1 0x37 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x14D8 DUP2 PUSH2 0x2222 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14E2 PUSH2 0x162E JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1500 JUMPI PUSH2 0x1246 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x14F9 JUMPI INVALID JUMPDEST PUSH1 0x33 PUSH2 0x290E JUMP JUMPDEST PUSH2 0x1257 DUP5 PUSH2 0x2B34 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xCDC DUP4 PUSH2 0x2BB5 JUMP JUMPDEST PUSH1 0x0 PUSH8 0x2C68AF0BB140000 SWAP1 POP PUSH1 0x0 DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x313CE567 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 0x155D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1571 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1587 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH2 0x159B DUP9 DUP9 DUP5 DUP10 DUP10 DUP7 DUP11 DUP11 PUSH2 0xCE6 JUMP JUMPDEST PUSH1 0x14 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP2 DUP3 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x18160DDD PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP1 SWAP2 AND SWAP2 PUSH4 0x18160DDD SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x15F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x160B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1621 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1639 PUSH2 0x1D3A JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0xA SLOAD EQ ISZERO PUSH2 0x164F JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x107C JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1659 PUSH2 0x28C0 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x5 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 PUSH4 0x15F24053 DUP4 PUSH1 0xC SLOAD PUSH2 0x169E PUSH1 0xD SLOAD PUSH2 0x1699 PUSH1 0xE SLOAD PUSH1 0xF SLOAD PUSH2 0x2BF5 JUMP JUMPDEST PUSH2 0x2BF5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x16E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x16F4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x170A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH6 0x48C27395000 DUP2 GT ISZERO PUSH2 0x1769 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x626F72726F772072617465206973206162737572646C79206869676800000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1778 DUP6 PUSH1 0xA SLOAD PUSH2 0x2C2B JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x178B JUMPI INVALID JUMPDEST EQ PUSH2 0x17DD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x636F756C64206E6F742063616C63756C61746520626C6F636B2064656C746100 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x17E9 DUP6 DUP6 DUP6 DUP5 PUSH2 0x2C4E JUMP JUMPDEST SWAP6 POP POP POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x17FF DUP2 PUSH2 0x2222 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1809 PUSH2 0x162E JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1827 JUMPI PUSH2 0x1246 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x1820 JUMPI INVALID JUMPDEST PUSH1 0x37 PUSH2 0x290E JUMP JUMPDEST PUSH2 0x1257 DUP5 PUSH2 0x2E66 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x183C DUP2 PUSH2 0x2222 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x184A CALLER CALLER DUP8 DUP8 PUSH2 0x23FC JUMP JUMPDEST EQ SWAP2 POP PUSH2 0x1856 DUP2 PUSH2 0x22DE JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xB8168816 PUSH2 0x1884 PUSH2 0x28C0 JUMP JUMPDEST PUSH1 0xC SLOAD PUSH2 0x189B PUSH1 0xD SLOAD PUSH2 0x1699 PUSH1 0xE SLOAD PUSH1 0xF SLOAD PUSH2 0x2BF5 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x8 SLOAD PUSH1 0x9 SLOAD ADD ADD PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x18EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1903 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1919 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH2 0x192D DUP2 PUSH2 0x2222 JUMP JUMPDEST PUSH2 0x1939 CALLER DUP7 DUP7 DUP7 PUSH2 0x2F42 JUMP JUMPDEST SWAP2 POP PUSH2 0x10A5 DUP2 PUSH2 0x22DE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1950 DUP2 PUSH2 0x2222 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x195A PUSH2 0x162E JUMP JUMPDEST EQ PUSH2 0x19A5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x1858D8DC9D59481A5B9D195C995CDD0819985A5B1959 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x19AD PUSH2 0x101C JUMP JUMPDEST SWAP2 POP PUSH2 0x1313 DUP2 PUSH2 0x22DE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP2 SWAP1 DUP2 SWAP1 DUP2 SWAP1 DUP2 DUP1 DUP1 PUSH2 0x19E3 DUP10 PUSH2 0x2A80 JUMP JUMPDEST SWAP4 POP SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x19F5 JUMPI INVALID JUMPDEST EQ PUSH2 0x1A13 JUMPI PUSH1 0x9 JUMPDEST SWAP8 POP PUSH1 0x0 SWAP7 POP DUP7 SWAP6 POP DUP6 SWAP5 POP PUSH2 0x1A46 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x1A1B PUSH2 0x233C JUMP JUMPDEST SWAP3 POP SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1A2D JUMPI INVALID JUMPDEST EQ PUSH2 0x1A39 JUMPI PUSH1 0x9 PUSH2 0x19FD JUMP JUMPDEST POP PUSH1 0x0 SWAP7 POP SWAP2 SWAP5 POP SWAP3 POP SWAP1 POP JUMPDEST SWAP2 SWAP4 POP SWAP2 SWAP4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCCA DUP3 PUSH2 0x3327 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCCA DUP3 PUSH2 0x3365 JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xF SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1AA5 PUSH2 0x162E JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1ACB JUMPI PUSH2 0x1AC3 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x1ABC JUMPI INVALID JUMPDEST PUSH1 0x4B PUSH2 0x290E JUMP JUMPDEST SWAP2 POP POP PUSH2 0xCE1 JUMP JUMPDEST PUSH2 0x14C5 DUP4 PUSH2 0x1D3E JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1AF1 DUP6 DUP6 DUP6 PUSH2 0x339E JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x15F24053 PUSH2 0x1B17 PUSH2 0x28C0 JUMP JUMPDEST PUSH1 0xC SLOAD PUSH2 0x1B2E PUSH1 0xD SLOAD PUSH2 0x1699 PUSH1 0xE SLOAD PUSH1 0xF SLOAD PUSH2 0x2BF5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x18EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1B7C DUP2 PUSH2 0x2222 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B86 PUSH2 0x162E JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1BA4 JUMPI PUSH2 0x1246 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x1B9D JUMPI INVALID JUMPDEST PUSH1 0x59 PUSH2 0x290E JUMP JUMPDEST PUSH2 0x1257 DUP5 PUSH2 0x2044 JUMP JUMPDEST PUSH1 0x1 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1BC0 DUP2 PUSH2 0x2222 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1BCA PUSH2 0x162E JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1BF5 JUMPI PUSH2 0x1BE8 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x1BE1 JUMPI INVALID JUMPDEST PUSH1 0x41 PUSH2 0x290E JUMP JUMPDEST SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x1C06 SWAP1 POP JUMP JUMPDEST PUSH2 0x1C00 CALLER CALLER DUP8 PUSH2 0x348A JUMP JUMPDEST SWAP4 POP SWAP4 POP POP JUMPDEST PUSH2 0x1C0F DUP2 PUSH2 0x22DE JUMP JUMPDEST POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH3 0x3F1EE9 PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND SWAP4 DUP7 AND SWAP3 PUSH3 0x7E3DD2 SWAP3 DUP2 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1C5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1C6E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1C84 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x1CD7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6D61726B6572206D6574686F642072657475726E65642066616C736500000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP3 DUP5 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD PUSH32 0x7AC369DBD14FA5EA3F473ED67CC9D598964A77501540BA6751EB0B3DECF5870D SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x0 PUSH2 0x14C5 JUMP JUMPDEST NUMBER SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1D49 PUSH2 0x26F3 JUMP JUMPDEST PUSH2 0x1D59 JUMPI PUSH2 0x1AC3 PUSH1 0x1 PUSH1 0x4D PUSH2 0x290E JUMP JUMPDEST PUSH2 0x1D61 PUSH2 0x1D3A JUMP JUMPDEST PUSH1 0xA SLOAD EQ PUSH2 0x1D75 JUMPI PUSH2 0x1AC3 PUSH1 0xA PUSH1 0x4C PUSH2 0x290E JUMP JUMPDEST PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x2191F92A 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 0x1DC6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1DDA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1DF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x1E43 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6D61726B6572206D6574686F642072657475726E65642066616C736500000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP3 DUP5 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD PUSH32 0xEDFFC32E068C7C95DFD4BDFD5C4D939A084D6B11C4199EAC8436ED234D72F926 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0x1F75 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x6CC1140B PUSH1 0xE1 SHL OR DUP2 MSTORE SWAP2 MLOAD DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP4 DUP3 SWAP2 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x1F0A JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1EEB JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1F6C 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 0x1F71 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP POP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x742A137B PUSH1 0xE1 SHL OR DUP2 MSTORE SWAP2 MLOAD DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP4 DUP3 SWAP2 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x1FD1 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1FB2 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2033 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 0x2038 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP PUSH1 0x0 SWAP2 POP PUSH2 0x14C5 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x204E PUSH2 0x26F3 JUMP JUMPDEST PUSH2 0x2065 JUMPI PUSH2 0x205E PUSH1 0x1 PUSH1 0x5A PUSH2 0x290E JUMP JUMPDEST SWAP1 POP PUSH2 0xCE1 JUMP JUMPDEST PUSH2 0x206D PUSH2 0x1D3A JUMP JUMPDEST PUSH1 0xA SLOAD EQ PUSH2 0x2081 JUMPI PUSH2 0x205E PUSH1 0xA PUSH1 0x5B PUSH2 0x290E JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH2 0x20A1 PUSH2 0x2099 DUP5 PUSH1 0x7 SLOAD PUSH2 0x2BF5 JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH2 0x2BF5 JUMP JUMPDEST GT ISZERO PUSH2 0x20B3 JUMPI PUSH2 0x205E PUSH1 0x2 PUSH1 0x5C PUSH2 0x290E JUMP JUMPDEST PUSH1 0x9 DUP1 SLOAD SWAP1 DUP4 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP6 SWAP1 MSTORE DUP2 MLOAD PUSH32 0xAAA68312E2EA9D50E16AF5068410AB56E1A1FD06037B1A35664812C30F821460 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x0 PUSH2 0x14C5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2107 PUSH2 0x1D3A JUMP JUMPDEST PUSH1 0xA SLOAD EQ PUSH2 0x211B JUMPI PUSH2 0x205E PUSH1 0xA PUSH1 0x54 PUSH2 0x290E JUMP JUMPDEST PUSH1 0x0 NOT DUP3 EQ ISZERO PUSH2 0x212B JUMPI PUSH1 0x7 SLOAD SWAP2 POP JUMPDEST PUSH1 0x0 PUSH2 0x2135 PUSH2 0x37DC JUMP JUMPDEST SWAP1 POP PUSH8 0xDE0B6B3A7640000 PUSH2 0x2155 PUSH2 0x214F PUSH1 0x9 SLOAD DUP7 PUSH2 0x2BF5 JUMP JUMPDEST DUP4 PUSH2 0x2BF5 JUMP JUMPDEST GT ISZERO PUSH2 0x2167 JUMPI PUSH2 0x1AC3 PUSH1 0x2 PUSH1 0x55 PUSH2 0x290E JUMP JUMPDEST DUP3 PUSH1 0x7 SLOAD EQ PUSH2 0x21CD JUMPI PUSH2 0x2178 PUSH2 0x26F3 JUMP JUMPDEST PUSH2 0x2188 JUMPI PUSH2 0x1AC3 PUSH1 0x1 PUSH1 0x53 PUSH2 0x290E JUMP JUMPDEST PUSH1 0x7 DUP1 SLOAD SWAP1 DUP5 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP7 SWAP1 MSTORE DUP2 MLOAD PUSH32 0xCDD0B588250E1398549F79CFDB8217C186688822905D6715B0834EA1C865594A SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMPDEST DUP1 PUSH1 0x8 SLOAD EQ PUSH2 0x221B JUMPI PUSH1 0x8 DUP1 SLOAD SWAP1 DUP3 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP2 MLOAD PUSH32 0x92EEF861B6533B7D3417F39C2AD7B460EED4E88A32FA3604F30E718B7602E7DC SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMPDEST PUSH1 0x0 PUSH2 0x14C5 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xB0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x226D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xA PUSH1 0x24 DUP3 ADD MSTORE PUSH10 0x1C994B595B9D195C9959 PUSH1 0xB2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x22CE JUMPI PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xC90C20B1 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP3 PUSH4 0xC90C20B1 SWAP3 DUP3 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x22B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x22C9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xB0 SHL NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xB0 SHL NOT AND PUSH1 0x1 PUSH1 0xB0 SHL OR SWAP1 SSTORE DUP1 PUSH2 0x2339 JUMPI PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x319728A1 PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP3 PUSH4 0x632E5142 SWAP3 DUP3 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x13A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x10 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP1 PUSH2 0x2357 JUMPI POP POP PUSH1 0x6 SLOAD PUSH1 0x0 SWAP2 POP PUSH2 0x23F8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2361 PUSH2 0x28C0 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x236D PUSH2 0x5322 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x238F DUP5 PUSH1 0xC SLOAD PUSH2 0x238A PUSH1 0xD SLOAD PUSH2 0x1699 PUSH1 0xE SLOAD PUSH1 0xF SLOAD PUSH2 0x2BF5 JUMP JUMPDEST PUSH2 0x382B JUMP JUMPDEST SWAP4 POP SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x23A1 JUMPI INVALID JUMPDEST EQ PUSH2 0x23B6 JUMPI SWAP6 POP PUSH1 0x0 SWAP5 POP PUSH2 0x23F8 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x23C0 DUP4 DUP7 PUSH2 0x3877 JUMP JUMPDEST SWAP3 POP SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x23D2 JUMPI INVALID JUMPDEST EQ PUSH2 0x23E7 JUMPI SWAP6 POP PUSH1 0x0 SWAP5 POP PUSH2 0x23F8 SWAP4 POP POP POP POP JUMP JUMPDEST POP MLOAD PUSH1 0x0 SWAP6 POP SWAP4 POP PUSH2 0x23F8 SWAP3 POP POP POP JUMP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x17B9B84B PUSH1 0xE3 SHL DUP2 MSTORE ADDRESS SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x24 DUP6 ADD MSTORE DUP6 DUP2 AND PUSH1 0x44 DUP6 ADD MSTORE PUSH1 0x64 DUP5 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 SWAP3 SWAP1 SWAP3 AND SWAP2 PUSH4 0xBDCDC258 SWAP2 PUSH1 0x84 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2467 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x247B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2491 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x24B0 JUMPI PUSH2 0x24A8 PUSH1 0x3 PUSH1 0x5D DUP4 PUSH2 0x3927 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x11E6 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x24D6 JUMPI PUSH2 0x24A8 PUSH1 0x2 PUSH1 0x5E PUSH2 0x290E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND SWAP1 DUP8 AND EQ ISZERO PUSH2 0x24F5 JUMPI POP PUSH1 0x0 NOT PUSH2 0x251D JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP11 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x252D DUP6 DUP10 PUSH2 0x2C2B JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP PUSH1 0x0 DUP5 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2540 JUMPI INVALID JUMPDEST EQ PUSH2 0x255E JUMPI PUSH2 0x2551 PUSH1 0x9 PUSH1 0x5E PUSH2 0x290E JUMP JUMPDEST SWAP7 POP POP POP POP POP POP POP PUSH2 0x11E6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2581 SWAP1 DUP10 PUSH2 0x2C2B JUMP JUMPDEST SWAP1 SWAP5 POP SWAP2 POP PUSH1 0x0 DUP5 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2594 JUMPI INVALID JUMPDEST EQ PUSH2 0x25A5 JUMPI PUSH2 0x2551 PUSH1 0x9 PUSH1 0x5F PUSH2 0x290E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x25C8 SWAP1 DUP10 PUSH2 0x39B0 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP1 POP PUSH1 0x0 DUP5 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x25DB JUMPI INVALID JUMPDEST EQ PUSH2 0x25EC JUMPI PUSH2 0x2551 PUSH1 0x9 PUSH1 0x60 PUSH2 0x290E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP6 SWAP1 SSTORE SWAP2 DUP12 AND DUP2 MSTORE KECCAK256 DUP2 SWAP1 SSTORE PUSH1 0x0 NOT DUP6 EQ PUSH2 0x2644 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP16 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP4 SWAP1 SSTORE JUMPDEST DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5586 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP11 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x0 SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x269C DUP2 PUSH2 0x2222 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x26A6 PUSH2 0x162E JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x26D1 JUMPI PUSH2 0x26C4 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x26BD JUMPI INVALID JUMPDEST PUSH1 0x40 PUSH2 0x290E JUMP JUMPDEST SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x26E2 SWAP1 POP JUMP JUMPDEST PUSH2 0x26DC CALLER DUP8 DUP8 PUSH2 0x348A JUMP JUMPDEST SWAP4 POP SWAP4 POP POP JUMPDEST PUSH2 0x26EB DUP2 PUSH2 0x22DE JUMP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x3E14691 PUSH1 0xE6 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND SWAP3 DUP4 SWAP3 PUSH4 0xF851A440 SWAP3 DUP2 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2739 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x274D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2763 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ DUP1 ISZERO PUSH2 0x27DD JUMPI POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA755EC2 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 0x27B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x27C4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x27DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST DUP1 PUSH2 0x1078 JUMPI POP CALLER PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 EQ DUP1 ISZERO PUSH2 0x1078 JUMPI POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x2F1069BA 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 0x283A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x284E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2864 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x2879 PUSH2 0x5322 JUMP JUMPDEST PUSH2 0x2883 DUP7 DUP7 PUSH2 0x39D6 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2896 JUMPI INVALID JUMPDEST EQ PUSH2 0x28A7 JUMPI POP SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH2 0x28B9 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x28B2 DUP3 PUSH2 0x3A3E JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 DUP3 SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x283A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0x45B96FE442630264581B197E84BBADA861235052C5A1AADFFF9EA4E40A969AA0 DUP4 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x293D JUMPI INVALID JUMPDEST DUP4 PUSH1 0x63 DUP2 GT ISZERO PUSH2 0x2949 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 DUP3 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x14C5 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x297F PUSH2 0x26F3 JUMP JUMPDEST PUSH2 0x298F JUMPI PUSH2 0x1AC3 PUSH1 0x1 PUSH1 0x3C PUSH2 0x290E JUMP JUMPDEST PUSH2 0x2997 PUSH2 0x1D3A JUMP JUMPDEST PUSH1 0xA SLOAD EQ PUSH2 0x29AB JUMPI PUSH2 0x1AC3 PUSH1 0xA PUSH1 0x3E PUSH2 0x290E JUMP JUMPDEST DUP3 PUSH2 0x29B4 PUSH2 0x28C0 JUMP JUMPDEST LT ISZERO PUSH2 0x29C6 JUMPI PUSH2 0x1AC3 PUSH1 0xE PUSH1 0x3D PUSH2 0x290E JUMP JUMPDEST PUSH1 0xD SLOAD DUP4 GT ISZERO PUSH2 0x29DC JUMPI PUSH2 0x1AC3 PUSH1 0x2 PUSH1 0x3F PUSH2 0x290E JUMP JUMPDEST PUSH2 0x29E8 PUSH1 0xD SLOAD DUP5 PUSH2 0x3A4D JUMP JUMPDEST PUSH1 0xD DUP2 SWAP1 SSTORE SWAP1 POP PUSH2 0x29F9 CALLER DUP5 PUSH2 0x3A87 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP6 SWAP1 MSTORE DUP1 DUP3 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD PUSH32 0x3BAD0C59CF2F06E7314077049F48A93578CD16F5EF92329F1DAB1420A99C177E SWAP2 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 PUSH1 0x0 PUSH2 0x14C5 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2A4C DUP2 PUSH2 0x2222 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2A56 PUSH2 0x162E JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x2A74 JUMPI PUSH2 0x1246 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x2A6D JUMPI INVALID JUMPDEST PUSH1 0x2A PUSH2 0x290E JUMP JUMPDEST PUSH2 0x1257 CALLER PUSH1 0x0 DUP7 PUSH2 0x3B0C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 PUSH2 0x2AB7 JUMPI POP PUSH1 0x0 SWAP5 POP DUP5 SWAP4 POP PUSH2 0x2B2F SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x2AC7 DUP2 PUSH1 0x0 ADD SLOAD PUSH1 0xB SLOAD PUSH2 0x3FDF JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP PUSH1 0x0 DUP5 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2ADA JUMPI INVALID JUMPDEST EQ PUSH2 0x2AEF JUMPI POP SWAP2 SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x2B2F SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2AFD DUP4 DUP3 PUSH1 0x1 ADD SLOAD PUSH2 0x401E JUMP JUMPDEST SWAP1 SWAP5 POP SWAP2 POP PUSH1 0x0 DUP5 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2B10 JUMPI INVALID JUMPDEST EQ PUSH2 0x2B25 JUMPI POP SWAP2 SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x2B2F SWAP2 POP POP JUMP JUMPDEST POP PUSH1 0x0 SWAP5 POP SWAP3 POP POP POP JUMPDEST SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2B3F PUSH2 0x1D3A JUMP JUMPDEST PUSH1 0xA SLOAD EQ PUSH2 0x2B53 JUMPI PUSH2 0x1AC3 PUSH1 0xA PUSH1 0x35 PUSH2 0x290E JUMP JUMPDEST DUP3 PUSH2 0x2B5C PUSH2 0x28C0 JUMP JUMPDEST LT ISZERO PUSH2 0x2B6E JUMPI PUSH2 0x1AC3 PUSH1 0xE PUSH1 0x34 PUSH2 0x290E JUMP JUMPDEST PUSH1 0xF SLOAD DUP4 GT ISZERO PUSH2 0x2B84 JUMPI PUSH2 0x1AC3 PUSH1 0x2 PUSH1 0x36 PUSH2 0x290E JUMP JUMPDEST PUSH2 0x2B90 PUSH1 0xF SLOAD DUP5 PUSH2 0x3A4D JUMP JUMPDEST PUSH1 0xF DUP2 SWAP1 SSTORE SWAP1 POP PUSH2 0x221B PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 DUP5 PUSH2 0x3A87 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x2BC3 DUP2 PUSH2 0x2222 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2BCD PUSH2 0x162E JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x2BEB JUMPI PUSH2 0x1BE8 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x2BE4 JUMPI INVALID JUMPDEST PUSH1 0x20 PUSH2 0x290E JUMP JUMPDEST PUSH2 0x1C00 CALLER DUP7 PUSH2 0x4049 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14C5 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x11 DUP2 MSTORE PUSH1 0x20 ADD PUSH17 0x6164646974696F6E206F766572666C6F77 PUSH1 0x78 SHL DUP2 MSTORE POP PUSH2 0x43C8 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 DUP4 GT PUSH2 0x2C42 JUMPI POP PUSH1 0x0 SWAP1 POP DUP2 DUP4 SUB PUSH2 0x28B9 JUMP JUMPDEST POP PUSH1 0x3 SWAP1 POP PUSH1 0x0 PUSH2 0x28B9 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2C58 PUSH2 0x5322 JUMP JUMPDEST PUSH2 0x2C70 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP7 DUP2 MSTORE POP DUP5 PUSH2 0x445A JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2C80 DUP3 PUSH1 0xC SLOAD PUSH2 0x4484 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2C90 DUP3 PUSH1 0xC SLOAD PUSH2 0x2BF5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2CB1 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x9 SLOAD DUP2 MSTORE POP DUP5 PUSH1 0xD SLOAD PUSH2 0x44A3 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2CD2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x8 SLOAD DUP2 MSTORE POP DUP6 PUSH1 0xF SLOAD PUSH2 0x44A3 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2CF3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x7 SLOAD DUP2 MSTORE POP DUP7 PUSH1 0xE SLOAD PUSH2 0x44A3 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2D06 DUP8 PUSH1 0xB SLOAD PUSH1 0xB SLOAD PUSH2 0x44A3 JUMP JUMPDEST PUSH1 0xA DUP14 SWAP1 SSTORE PUSH1 0xB DUP2 SWAP1 SSTORE PUSH1 0xC DUP7 SWAP1 SSTORE PUSH1 0xD DUP6 SWAP1 SSTORE PUSH1 0xF DUP5 SWAP1 SSTORE PUSH1 0xE DUP4 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP14 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP10 SWAP1 MSTORE DUP1 DUP3 ADD DUP4 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP9 SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH32 0x4DEC04E750CA11537CABCD8A9EAB06494DE08DA3735BC8871CD41250E190BC04 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG1 PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x24 DUP1 DUP3 ADD DUP15 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x5EFD0233 PUSH1 0xE1 SHL OR DUP2 MSTORE SWAP2 MLOAD DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP5 AND SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x2DE3 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x2DC4 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2E45 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 0x2E4A JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP PUSH1 0x0 SWAP2 POP PUSH2 0x2E56 SWAP1 POP JUMP JUMPDEST SWAP13 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2E71 PUSH2 0x1D3A JUMP JUMPDEST PUSH1 0xA SLOAD EQ PUSH2 0x2E85 JUMPI PUSH2 0x1AC3 PUSH1 0xA PUSH1 0x39 PUSH2 0x290E JUMP JUMPDEST DUP3 PUSH2 0x2E8E PUSH2 0x28C0 JUMP JUMPDEST LT ISZERO PUSH2 0x2EA0 JUMPI PUSH2 0x1AC3 PUSH1 0xE PUSH1 0x38 PUSH2 0x290E JUMP JUMPDEST PUSH1 0xE SLOAD DUP4 GT ISZERO PUSH2 0x2EB6 JUMPI PUSH2 0x1AC3 PUSH1 0x2 PUSH1 0x3A PUSH2 0x290E JUMP JUMPDEST PUSH2 0x2EC2 PUSH1 0xE SLOAD DUP5 PUSH2 0x3A4D JUMP JUMPDEST PUSH1 0xE DUP2 SWAP1 SSTORE PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x3E14691 PUSH1 0xE6 SHL DUP2 MSTORE SWAP1 MLOAD SWAP4 SWAP5 POP PUSH2 0x221B SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP3 PUSH4 0xF851A440 SWAP3 DUP3 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2F10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2F24 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2F3A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP5 PUSH2 0x3A87 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xD02F7351 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x24 DUP6 ADD MSTORE DUP7 DUP2 AND PUSH1 0x44 DUP6 ADD MSTORE DUP6 DUP2 AND PUSH1 0x64 DUP6 ADD MSTORE PUSH1 0x84 DUP5 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 SWAP3 SWAP1 SWAP3 AND SWAP2 PUSH4 0xD02F7351 SWAP2 PUSH1 0xA4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2FB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2FC9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2FDF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x2FF6 JUMPI PUSH2 0x24A8 PUSH1 0x3 PUSH1 0x1D DUP4 PUSH2 0x3927 JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x301C JUMPI PUSH2 0x24A8 PUSH1 0x6 PUSH1 0x1E PUSH2 0x290E JUMP JUMPDEST PUSH2 0x3024 PUSH2 0x5335 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x3047 SWAP1 DUP6 PUSH2 0x2C2B JUMP JUMPDEST PUSH1 0x20 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x305B JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3066 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x307A JUMPI INVALID JUMPDEST EQ PUSH2 0x30A4 JUMPI PUSH2 0x309B PUSH1 0x9 PUSH1 0x1C DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3096 JUMPI INVALID JUMPDEST PUSH2 0x3927 JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x11E6 JUMP JUMPDEST PUSH2 0x30C3 DUP5 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH7 0x6379DA05B60000 DUP2 MSTORE POP PUSH2 0x44D4 JUMP JUMPDEST PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x30D5 SWAP1 DUP6 SWAP1 PUSH2 0x3A4D JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x30E2 PUSH2 0x233C JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x30F6 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3101 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3115 JUMPI INVALID JUMPDEST EQ PUSH2 0x3167 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x65786368616E67652072617465206D617468206572726F720000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x3187 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP4 PUSH1 0xC0 ADD MLOAD DUP2 MSTORE POP DUP3 PUSH1 0x80 ADD MLOAD PUSH2 0x4484 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xD SLOAD PUSH2 0x319A SWAP2 PUSH2 0x2BF5 JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD MSTORE PUSH1 0x10 SLOAD PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x31B1 SWAP2 SWAP1 PUSH2 0x3A4D JUMP JUMPDEST PUSH2 0x100 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x31DF SWAP2 SWAP1 PUSH2 0x39B0 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x31F3 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x31FE JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3212 JUMPI INVALID JUMPDEST EQ PUSH2 0x322E JUMPI PUSH2 0x309B PUSH1 0x9 PUSH1 0x1B DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3096 JUMPI INVALID JUMPDEST PUSH1 0xE0 DUP2 ADD MLOAD PUSH1 0xD SSTORE PUSH2 0x100 DUP2 ADD MLOAD PUSH1 0x10 SSTORE PUSH1 0x20 DUP1 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x11 DUP6 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 DUP7 ADD MLOAD SWAP3 DUP12 AND DUP1 DUP3 MSTORE SWAP1 DUP5 SWAP1 KECCAK256 SWAP3 SWAP1 SWAP3 SSTORE PUSH1 0x60 DUP6 ADD MLOAD DUP4 MLOAD SWAP1 DUP2 MSTORE SWAP3 MLOAD SWAP2 SWAP4 SWAP1 SWAP3 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5586 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD ADDRESS SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5586 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0xE0 DUP3 ADD MLOAD PUSH1 0x40 DUP1 MLOAD ADDRESS DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP3 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE MLOAD PUSH32 0xA91E67C5EA634CD43A12C5A482724B03DE01E85CA68702A53D0C2F45CB7C1DC5 SWAP2 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 PUSH1 0x0 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3333 DUP2 PUSH2 0x2222 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x333D PUSH2 0x162E JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x335B JUMPI PUSH2 0x1246 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x3354 JUMPI INVALID JUMPDEST PUSH1 0xA PUSH2 0x290E JUMP JUMPDEST PUSH2 0x1257 CALLER DUP6 PUSH2 0x44FC JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3371 DUP2 PUSH2 0x2222 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x337B PUSH2 0x162E JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x3392 JUMPI PUSH2 0x1246 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x2A6D JUMPI INVALID JUMPDEST PUSH2 0x1257 CALLER DUP6 PUSH1 0x0 PUSH2 0x3B0C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x33AC DUP2 PUSH2 0x2222 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x33B6 PUSH2 0x162E JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x33E1 JUMPI PUSH2 0x33D4 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x33CD JUMPI INVALID JUMPDEST PUSH1 0x11 PUSH2 0x290E JUMP JUMPDEST SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x3478 SWAP1 POP JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA6AFED95 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x341C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3430 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3446 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x3466 JUMPI PUSH2 0x33D4 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x345F JUMPI INVALID JUMPDEST PUSH1 0x12 PUSH2 0x290E JUMP JUMPDEST PUSH2 0x3472 CALLER DUP9 DUP9 DUP9 PUSH2 0x4846 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP JUMPDEST PUSH2 0x3481 DUP2 PUSH2 0x22DE JUMP JUMPDEST POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x12004531 PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x24 DUP6 ADD MSTORE DUP6 DUP2 AND PUSH1 0x44 DUP6 ADD MSTORE PUSH1 0x64 DUP5 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 DUP5 SWAP4 AND SWAP2 PUSH4 0x24008A62 SWAP2 PUSH1 0x84 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x34F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3509 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x351F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x3543 JUMPI PUSH2 0x3536 PUSH1 0x3 PUSH1 0x43 DUP4 PUSH2 0x3927 JUMP JUMPDEST SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH2 0x37D4 SWAP1 POP JUMP JUMPDEST PUSH2 0x354B PUSH2 0x1D3A JUMP JUMPDEST PUSH1 0xA SLOAD EQ PUSH2 0x355F JUMPI PUSH2 0x3536 PUSH1 0xA PUSH1 0x44 PUSH2 0x290E JUMP JUMPDEST PUSH2 0x3567 PUSH2 0x5382 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x3591 DUP7 PUSH2 0x2A80 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x35A8 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x35B3 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x35CA JUMPI INVALID JUMPDEST EQ PUSH2 0x35F4 JUMPI PUSH2 0x35E6 PUSH1 0x9 PUSH1 0x42 DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3096 JUMPI INVALID JUMPDEST SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x37D4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 NOT DUP6 EQ ISZERO PUSH2 0x360D JUMPI PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x3615 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD DUP6 SWAP1 MSTORE JUMPDEST PUSH2 0x3623 DUP8 DUP3 PUSH1 0x40 ADD MLOAD PUSH2 0x4D3E JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x3638 SWAP2 PUSH2 0x2C2B JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x364F JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x365A JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3671 JUMPI INVALID JUMPDEST EQ PUSH2 0x36AD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5523 PUSH1 0x3A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x36BD PUSH1 0xC SLOAD DUP3 PUSH1 0xE0 ADD MLOAD PUSH2 0x2C2B JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x36D4 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x36DF JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x36F6 JUMPI INVALID JUMPDEST EQ PUSH2 0x3732 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x55A6 PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xA0 DUP1 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP11 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 DUP6 SSTORE PUSH1 0xB SLOAD PUSH1 0x1 SWAP1 SWAP6 ADD SWAP5 SWAP1 SWAP5 SSTORE PUSH1 0xC0 DUP8 ADD MLOAD PUSH1 0xC DUP2 SWAP1 SSTORE PUSH1 0xE0 DUP9 ADD MLOAD SWAP6 MLOAD DUP3 MLOAD SWAP5 DUP16 AND DUP6 MSTORE SWAP5 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP2 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x60 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x80 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 MLOAD PUSH32 0x1A2A22CB034D26D1854BDC6666A5B91FE25EFBBB5DCAD3B0355478D6F5C362A1 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0xE0 ADD MLOAD PUSH1 0x0 SWAP4 POP SWAP2 POP POP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xDD86FEA1 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 0x18EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x383B DUP8 DUP8 PUSH2 0x39B0 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x384E JUMPI INVALID JUMPDEST EQ PUSH2 0x385F JUMPI POP SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH2 0x37D4 JUMP JUMPDEST PUSH2 0x3869 DUP2 DUP7 PUSH2 0x2C2B JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3881 PUSH2 0x5322 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3896 DUP7 PUSH8 0xDE0B6B3A7640000 PUSH2 0x3FDF JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x38A9 JUMPI INVALID JUMPDEST EQ PUSH2 0x38C8 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x28B9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x38D5 DUP4 DUP9 PUSH2 0x401E JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x38E8 JUMPI INVALID JUMPDEST EQ PUSH2 0x390A JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 SWAP5 POP SWAP3 POP PUSH2 0x28B9 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP9 SWAP1 SWAP8 POP SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x45B96FE442630264581B197E84BBADA861235052C5A1AADFFF9EA4E40A969AA0 DUP5 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x3956 JUMPI INVALID JUMPDEST DUP5 PUSH1 0x63 DUP2 GT ISZERO PUSH2 0x3962 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 DUP2 ADD DUP6 SWAP1 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 PUSH1 0x3 DUP5 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x398F JUMPI INVALID JUMPDEST EQ PUSH2 0x39A5 JUMPI DUP4 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x39A0 JUMPI INVALID JUMPDEST PUSH2 0x11E6 JUMP JUMPDEST POP PUSH2 0x3E8 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 DUP4 ADD DUP5 DUP2 LT PUSH2 0x39C8 JUMPI PUSH1 0x0 SWAP3 POP SWAP1 POP PUSH2 0x28B9 JUMP JUMPDEST POP PUSH1 0x2 SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH2 0x28B9 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x39E0 PUSH2 0x5322 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x39F1 DUP7 PUSH1 0x0 ADD MLOAD DUP7 PUSH2 0x3FDF JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3A04 JUMPI INVALID JUMPDEST EQ PUSH2 0x3A23 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x28B9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST MLOAD PUSH8 0xDE0B6B3A7640000 SWAP1 DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14C5 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x15 DUP2 MSTORE PUSH1 0x20 ADD PUSH21 0x7375627472616374696F6E20756E646572666C6F77 PUSH1 0x58 SHL DUP2 MSTORE POP PUSH2 0x4F1B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xA9059CBB PUSH1 0xE0 SHL OR SWAP1 MSTORE DUP3 MLOAD DUP1 DUP5 ADD SWAP1 SWAP4 MSTORE PUSH1 0x19 DUP4 MSTORE PUSH32 0x544F4B454E5F5452414E534645525F4F55545F4641494C454400000000000000 SWAP1 DUP4 ADD MSTORE PUSH2 0x3B08 SWAP2 PUSH2 0x4F75 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x3B19 JUMPI POP DUP2 ISZERO JUMPDEST PUSH2 0x3B54 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x563F PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x3B5C PUSH2 0x53C8 JUMP JUMPDEST PUSH2 0x3B64 PUSH2 0x233C JUMP JUMPDEST PUSH1 0x40 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3B7B JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3B86 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3B9D JUMPI INVALID JUMPDEST EQ PUSH2 0x3BC1 JUMPI PUSH2 0x3BB9 PUSH1 0x9 PUSH1 0x2E DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3096 JUMPI INVALID JUMPDEST SWAP2 POP POP PUSH2 0x14C5 JUMP JUMPDEST DUP4 ISZERO PUSH2 0x3C42 JUMPI PUSH1 0x60 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD DUP3 MSTORE SWAP1 DUP3 ADD MLOAD DUP2 MSTORE PUSH2 0x3BE8 SWAP1 DUP6 PUSH2 0x286C JUMP JUMPDEST PUSH1 0x80 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3BFF JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3C0A JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3C21 JUMPI INVALID JUMPDEST EQ PUSH2 0x3C3D JUMPI PUSH2 0x3BB9 PUSH1 0x9 PUSH1 0x2C DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3096 JUMPI INVALID JUMPDEST PUSH2 0x3CBB JUMP JUMPDEST PUSH2 0x3C5E DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH1 0x40 ADD MLOAD DUP2 MSTORE POP PUSH2 0x5004 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3C75 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3C80 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3C97 JUMPI INVALID JUMPDEST EQ PUSH2 0x3CB3 JUMPI PUSH2 0x3BB9 PUSH1 0x9 PUSH1 0x2D DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3096 JUMPI INVALID JUMPDEST PUSH1 0x80 DUP2 ADD DUP4 SWAP1 MSTORE JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xEABE7D91 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS SWAP5 DUP2 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 DUP2 AND PUSH1 0x24 DUP7 ADD MSTORE PUSH1 0x44 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE MLOAD PUSH1 0x0 SWAP4 SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0xEABE7D91 SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3D22 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3D36 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3D4C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x3D6C JUMPI PUSH2 0x3D63 PUSH1 0x3 PUSH1 0x2B DUP4 PUSH2 0x3927 JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x14C5 JUMP JUMPDEST PUSH2 0x3D74 PUSH2 0x1D3A JUMP JUMPDEST PUSH1 0xA SLOAD EQ PUSH2 0x3D88 JUMPI PUSH2 0x3D63 PUSH1 0xA PUSH1 0x2F PUSH2 0x290E JUMP JUMPDEST PUSH2 0x3D98 PUSH1 0x10 SLOAD DUP4 PUSH1 0x60 ADD MLOAD PUSH2 0x2C2B JUMP JUMPDEST PUSH1 0xA0 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP5 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3DAF JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3DBA JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP3 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3DD1 JUMPI INVALID JUMPDEST EQ PUSH2 0x3DED JUMPI PUSH2 0x3D63 PUSH1 0x9 PUSH1 0x31 DUP5 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3096 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 DUP4 ADD MLOAD PUSH2 0x3E15 SWAP2 SWAP1 PUSH2 0x2C2B JUMP JUMPDEST PUSH1 0xC0 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP5 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3E2C JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3E37 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP3 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3E4E JUMPI INVALID JUMPDEST EQ PUSH2 0x3E6A JUMPI PUSH2 0x3D63 PUSH1 0x9 PUSH1 0x30 DUP5 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3096 JUMPI INVALID JUMPDEST DUP2 PUSH1 0x80 ADD MLOAD PUSH2 0x3E77 PUSH2 0x28C0 JUMP JUMPDEST LT ISZERO PUSH2 0x3E89 JUMPI PUSH2 0x3D63 PUSH1 0xE PUSH1 0x32 PUSH2 0x290E JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MLOAD PUSH1 0x10 SSTORE PUSH1 0xC0 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x3EBF SWAP1 DUP8 SWAP1 PUSH2 0x3A87 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MLOAD PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD ADDRESS SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5586 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 PUSH1 0x80 DUP3 ADD MLOAD PUSH1 0x60 DUP1 DUP5 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP4 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE MLOAD PUSH32 0xE5B754FB1ABB7F01B499791D0B820AE3B6AF3424AC1C59768EDB53F4EC31A929 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x4 DUP1 SLOAD PUSH1 0x80 DUP5 ADD MLOAD PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x51DFF989 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS SWAP6 DUP2 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND PUSH1 0x24 DUP8 ADD MSTORE PUSH1 0x44 DUP7 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x64 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE MLOAD SWAP2 AND SWAP2 PUSH4 0x51DFF989 SWAP2 PUSH1 0x84 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3FB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3FC8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x0 SWAP3 POP PUSH2 0x3FD5 SWAP2 POP POP JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH2 0x3FF2 JUMPI POP PUSH1 0x0 SWAP1 POP DUP1 PUSH2 0x28B9 JUMP JUMPDEST DUP4 DUP4 MUL DUP4 DUP6 DUP3 DUP2 PUSH2 0x3FFF JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x4013 JUMPI POP PUSH1 0x2 SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH2 0x28B9 JUMP JUMPDEST PUSH1 0x0 SWAP3 POP SWAP1 POP PUSH2 0x28B9 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH2 0x4032 JUMPI POP PUSH1 0x1 SWAP1 POP PUSH1 0x0 PUSH2 0x28B9 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x403D JUMPI INVALID JUMPDEST DIV SWAP2 POP SWAP2 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x4EF4C3E1 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x24 DUP6 ADD MSTORE PUSH1 0x44 DUP5 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 DUP5 SWAP4 AND SWAP2 PUSH4 0x4EF4C3E1 SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x40AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x40C0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x40D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x40FA JUMPI PUSH2 0x40ED PUSH1 0x3 PUSH1 0x21 DUP4 PUSH2 0x3927 JUMP JUMPDEST SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH2 0x28B9 SWAP1 POP JUMP JUMPDEST PUSH2 0x4102 PUSH2 0x1D3A JUMP JUMPDEST PUSH1 0xA SLOAD EQ PUSH2 0x4116 JUMPI PUSH2 0x40ED PUSH1 0xA PUSH1 0x24 PUSH2 0x290E JUMP JUMPDEST PUSH2 0x411E PUSH2 0x53C8 JUMP JUMPDEST PUSH2 0x4126 PUSH2 0x233C JUMP JUMPDEST PUSH1 0x40 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x413D JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4148 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x415F JUMPI INVALID JUMPDEST EQ PUSH2 0x4189 JUMPI PUSH2 0x417B PUSH1 0x9 PUSH1 0x23 DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3096 JUMPI INVALID JUMPDEST SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x28B9 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x4193 DUP7 DUP7 PUSH2 0x4D3E JUMP JUMPDEST PUSH1 0xC0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD DUP3 MSTORE SWAP1 DUP4 ADD MLOAD DUP2 MSTORE PUSH2 0x41B4 SWAP2 SWAP1 PUSH2 0x5004 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x41CB JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x41D6 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x41ED JUMPI INVALID JUMPDEST EQ PUSH2 0x423F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D494E545F45584348414E47455F43414C43554C4154494F4E5F4641494C4544 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x424F PUSH1 0x10 SLOAD DUP3 PUSH1 0x60 ADD MLOAD PUSH2 0x2BF5 JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x427C SWAP2 SWAP1 PUSH2 0x2BF5 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MLOAD PUSH1 0x10 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0xC0 DUP5 ADD MLOAD PUSH1 0x60 DUP1 DUP7 ADD MLOAD DUP4 MLOAD SWAP5 DUP6 MSTORE SWAP5 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE MLOAD PUSH32 0x4C209B5FC8AD50758F13E2E1088BA56A560DFF690A1C6FEF26394F4C03821C4F SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 ADDRESS SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5586 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 PUSH1 0x4 DUP1 SLOAD PUSH1 0xC0 DUP4 ADD MLOAD PUSH1 0x60 DUP5 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x41C728B9 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS SWAP6 DUP2 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND PUSH1 0x24 DUP8 ADD MSTORE PUSH1 0x44 DUP7 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x64 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE MLOAD SWAP2 AND SWAP2 PUSH4 0x41C728B9 SWAP2 PUSH1 0x84 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4395 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x43A9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x0 SWAP3 POP PUSH2 0x43B6 SWAP2 POP POP JUMP JUMPDEST DUP2 PUSH1 0xC0 ADD MLOAD SWAP4 POP SWAP4 POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 ADD DUP3 DUP6 DUP3 LT ISZERO PUSH2 0x10BA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x441F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4407 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x444C JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x4462 PUSH2 0x5322 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x447B DUP6 PUSH1 0x0 ADD MLOAD DUP6 PUSH2 0x501B JUMP JUMPDEST SWAP1 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x448E PUSH2 0x5322 JUMP JUMPDEST PUSH2 0x4498 DUP5 DUP5 PUSH2 0x445A JUMP JUMPDEST SWAP1 POP PUSH2 0x11E6 DUP2 PUSH2 0x3A3E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x44AD PUSH2 0x5322 JUMP JUMPDEST PUSH2 0x44B7 DUP6 DUP6 PUSH2 0x445A JUMP JUMPDEST SWAP1 POP PUSH2 0x44CB PUSH2 0x44C5 DUP3 PUSH2 0x3A3E JUMP JUMPDEST DUP5 PUSH2 0x2BF5 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xDE0B6B3A7640000 PUSH2 0x44ED DUP5 DUP5 PUSH1 0x0 ADD MLOAD PUSH2 0x501B JUMP JUMPDEST DUP2 PUSH2 0x44F4 JUMPI INVALID JUMPDEST DIV SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x368F5153 PUSH1 0xE2 SHL DUP2 MSTORE ADDRESS SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x24 DUP6 ADD MSTORE PUSH1 0x44 DUP5 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 SWAP3 SWAP1 SWAP3 AND SWAP2 PUSH4 0xDA3D454C SWAP2 PUSH1 0x64 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x455F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4573 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4589 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x45A8 JUMPI PUSH2 0x45A0 PUSH1 0x3 PUSH1 0x10 DUP4 PUSH2 0x3927 JUMP JUMPDEST SWAP2 POP POP PUSH2 0xCCA JUMP JUMPDEST PUSH2 0x45B0 PUSH2 0x1D3A JUMP JUMPDEST PUSH1 0xA SLOAD EQ PUSH2 0x45C4 JUMPI PUSH2 0x45A0 PUSH1 0xA PUSH1 0xC PUSH2 0x290E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x45CE PUSH2 0x28C0 JUMP JUMPDEST SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x45ED JUMPI PUSH2 0x45E4 PUSH1 0xE PUSH1 0xB PUSH2 0x290E JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0xCCA JUMP JUMPDEST PUSH2 0x45F5 PUSH2 0x5406 JUMP JUMPDEST PUSH2 0x45FE DUP7 PUSH2 0x2A80 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4612 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x461D JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4631 JUMPI INVALID JUMPDEST EQ PUSH2 0x4656 JUMPI PUSH2 0x464C PUSH1 0x9 DUP1 DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3096 JUMPI INVALID JUMPDEST SWAP4 POP POP POP POP PUSH2 0xCCA JUMP JUMPDEST PUSH2 0x4664 DUP2 PUSH1 0x20 ADD MLOAD DUP7 PUSH2 0x39B0 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4678 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4683 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4697 JUMPI INVALID JUMPDEST EQ PUSH2 0x46B3 JUMPI PUSH2 0x464C PUSH1 0x9 PUSH1 0xE DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3096 JUMPI INVALID JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 DUP5 ADD MLOAD DUP2 MLOAD PUSH4 0x1DE6C8A5 PUSH1 0xE2 SHL DUP2 MSTORE ADDRESS SWAP5 DUP2 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x24 DUP5 ADD MSTORE MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 PUSH4 0x779B2294 SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x470A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x471E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4734 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 POP DUP3 ISZERO PUSH2 0x474B JUMPI PUSH2 0x464C PUSH1 0x3 PUSH1 0x10 DUP6 PUSH2 0x3927 JUMP JUMPDEST PUSH2 0x4757 PUSH1 0xC SLOAD DUP7 PUSH2 0x39B0 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x476B JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4776 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x478A JUMPI INVALID JUMPDEST EQ PUSH2 0x47A6 JUMPI PUSH2 0x464C PUSH1 0x9 PUSH1 0xD DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3096 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE SWAP2 SWAP1 SWAP2 KECCAK256 SWAP1 DUP2 SSTORE PUSH1 0xB SLOAD PUSH1 0x1 SWAP1 SWAP2 ADD SSTORE PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0xC SSTORE PUSH2 0x47E2 DUP7 DUP7 PUSH2 0x3A87 JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 ADD MLOAD PUSH1 0x60 DUP1 DUP5 ADD MLOAD DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP11 SWAP1 MSTORE DUP1 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP1 DUP3 ADD MSTORE SWAP1 MLOAD PUSH32 0x13ED6866D4E1EE6DA46F845C46D7E54120883D75C5EA9A2DACC1C4CA8984AB80 SWAP2 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG1 PUSH1 0x0 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x2FE3F38F PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x24 DUP6 ADD MSTORE DUP8 DUP2 AND PUSH1 0x44 DUP6 ADD MSTORE DUP7 DUP2 AND PUSH1 0x64 DUP6 ADD MSTORE PUSH1 0x84 DUP5 ADD DUP7 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 DUP5 SWAP4 AND SWAP2 PUSH4 0x5FC7E71E SWAP2 PUSH1 0xA4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x48B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x48CD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x48E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x4907 JUMPI PUSH2 0x48FA PUSH1 0x3 PUSH1 0x14 DUP4 PUSH2 0x3927 JUMP JUMPDEST SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH2 0x4D35 SWAP1 POP JUMP JUMPDEST PUSH2 0x490F PUSH2 0x1D3A JUMP JUMPDEST PUSH1 0xA SLOAD EQ PUSH2 0x4923 JUMPI PUSH2 0x48FA PUSH1 0xA PUSH1 0x18 PUSH2 0x290E JUMP JUMPDEST PUSH2 0x492B PUSH2 0x1D3A JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6C540BAF 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 0x4964 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4978 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x498E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD EQ PUSH2 0x49A1 JUMPI PUSH2 0x48FA PUSH1 0xA PUSH1 0x13 PUSH2 0x290E JUMP JUMPDEST DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x49C7 JUMPI PUSH2 0x48FA PUSH1 0x6 PUSH1 0x19 PUSH2 0x290E JUMP JUMPDEST DUP5 PUSH2 0x49D8 JUMPI PUSH2 0x48FA PUSH1 0x7 PUSH1 0x17 PUSH2 0x290E JUMP JUMPDEST PUSH1 0x0 NOT DUP6 EQ ISZERO PUSH2 0x49EE JUMPI PUSH2 0x48FA PUSH1 0x7 PUSH1 0x16 PUSH2 0x290E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x49FC DUP10 DUP10 DUP10 PUSH2 0x348A JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP DUP2 ISZERO PUSH2 0x4A2C JUMPI PUSH2 0x4A1D DUP3 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x4A16 JUMPI INVALID JUMPDEST PUSH1 0x1A PUSH2 0x290E JUMP JUMPDEST SWAP5 POP PUSH1 0x0 SWAP4 POP PUSH2 0x4D35 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xC488847B PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 DUP2 AND PUSH1 0x24 DUP6 ADD MSTORE PUSH1 0x44 DUP5 ADD DUP6 SWAP1 MSTORE DUP2 MLOAD PUSH1 0x0 SWAP5 DUP6 SWAP5 SWAP3 SWAP1 SWAP3 AND SWAP3 PUSH4 0xC488847B SWAP3 PUSH1 0x64 DUP1 DUP3 ADD SWAP4 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4A8A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4A9E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4AB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 POP SWAP1 POP DUP2 ISZERO PUSH2 0x4AFF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x33 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x55D7 PUSH1 0x33 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 DUP9 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 DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4B56 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4B6A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4B80 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT ISZERO PUSH2 0x4BD5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C49515549444154455F5345495A455F544F4F5F4D5543480000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND ADDRESS EQ ISZERO PUSH2 0x4BFB JUMPI PUSH2 0x4BF4 ADDRESS DUP14 DUP14 DUP6 PUSH2 0x2F42 JUMP JUMPDEST SWAP1 POP PUSH2 0x4C85 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xB2A02FF1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP15 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP14 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD SWAP2 DUP12 AND SWAP2 PUSH4 0xB2A02FF1 SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4C56 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4C6A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4C80 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP JUMPDEST DUP1 ISZERO PUSH2 0x4CCF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x1D1BDAD95B881CD95A5E9D5C994819985A5B1959 PUSH1 0x62 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP16 AND DUP3 MSTORE DUP1 DUP15 AND PUSH1 0x20 DUP4 ADD MSTORE DUP2 DUP4 ADD DUP8 SWAP1 MSTORE DUP12 AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP2 ADD DUP5 SWAP1 MSTORE SWAP1 MLOAD PUSH32 0x298637F684DA70674F26509B10F07EC2FBC77A335AB1E7D6215A4B2484D8BB52 SWAP2 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 LOG1 PUSH1 0x0 SWAP8 POP SWAP3 SWAP6 POP POP POP POP POP POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 DUP4 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4D8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4DA2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4DB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x24 DUP3 ADD MSTORE ADDRESS PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP1 DUP3 ADD DUP8 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x23B872DD PUSH1 0xE0 SHL OR SWAP1 MSTORE DUP3 MLOAD DUP1 DUP5 ADD SWAP1 SWAP4 MSTORE PUSH1 0x18 DUP4 MSTORE PUSH32 0x544F4B454E5F5452414E534645525F494E5F4641494C45440000000000000000 SWAP1 DUP4 ADD MSTORE SWAP2 SWAP3 POP PUSH2 0x4E45 SWAP2 SWAP1 PUSH2 0x4F75 JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4E90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4EA4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4EBA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP2 DUP2 LT ISZERO PUSH2 0x4F13 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x544F4B454E5F5452414E534645525F494E5F4F564552464C4F57000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SUB SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x4F6D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x441F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4407 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x60 SWAP1 PUSH2 0x4F8F SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 DUP5 PUSH2 0x505D JUMP JUMPDEST DUP1 MLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0x4FFF JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4FAE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP3 SWAP1 PUSH2 0x4FFD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x441F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4407 JUMP JUMPDEST POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x5011 PUSH2 0x5322 JUMP JUMPDEST PUSH2 0x2883 DUP7 DUP7 PUSH2 0x5165 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14C5 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x17 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x6D756C7469706C69636174696F6E206F766572666C6F77000000000000000000 DUP2 MSTORE POP PUSH2 0x51C4 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x60 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x509D JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x507E JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x50FF 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 0x5104 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x44CB JUMPI DUP1 MLOAD ISZERO PUSH2 0x511E JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP7 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP7 MLOAD DUP8 SWAP4 SWAP2 SWAP3 DUP4 SWAP3 PUSH1 0x44 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x441F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4407 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x516F PUSH2 0x5322 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x5184 PUSH8 0xDE0B6B3A7640000 DUP8 PUSH2 0x3FDF JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x5197 JUMPI INVALID JUMPDEST EQ PUSH2 0x51B6 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x28B9 JUMP JUMPDEST PUSH2 0x28B2 DUP2 DUP7 PUSH1 0x0 ADD MLOAD PUSH2 0x3877 JUMP JUMPDEST PUSH1 0x0 DUP4 ISZERO DUP1 PUSH2 0x51D1 JUMPI POP DUP3 ISZERO JUMPDEST ISZERO PUSH2 0x51DE JUMPI POP PUSH1 0x0 PUSH2 0x14C5 JUMP JUMPDEST DUP4 DUP4 MUL DUP4 DUP6 DUP3 DUP2 PUSH2 0x51EB JUMPI INVALID JUMPDEST DIV EQ DUP4 SWAP1 PUSH2 0x10BA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x441F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4407 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x527B JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x52A8 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x52A8 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x52A8 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x528D JUMP JUMPDEST POP PUSH2 0x1313 SWAP3 SWAP2 POP PUSH2 0x542F JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x52F5 JUMPI DUP3 DUP1 ADD PUSH1 0xFF NOT DUP3 CALLDATALOAD AND OR DUP6 SSTORE PUSH2 0x52A8 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x52A8 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x52A8 JUMPI DUP3 CALLDATALOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x5307 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x120 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x100 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xE0 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH2 0x107C SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1313 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x5435 JUMP INVALID PUSH14 0x61726B6574206D6179206F6E6C79 KECCAK256 PUSH3 0x652069 PUSH15 0x697469616C697A6564206F6E636569 PUSH15 0x697469616C2065786368616E676520 PUSH19 0x617465206D7573742062652067726561746572 KECCAK256 PUSH21 0x68616E207A65726F2E6F6E6C79207468652061646D PUSH10 0x6E206D61792073657420 PUSH21 0x686520636F6D702D6C696B652064656C6567617465 PUSH20 0x657474696E6720696E7465726573742072617465 KECCAK256 PUSH14 0x6F64656C206661696C6564626F72 PUSH19 0x6F7742616C616E636553746F7265643A20626F PUSH19 0x726F7742616C616E636553746F726564496E74 PUSH6 0x726E616C2066 PUSH2 0x696C PUSH6 0x645245504159 0x5F TIMESTAMP 0x4F MSTORE MSTORE 0x4F JUMPI 0x5F 0x4E GASLIMIT JUMPI 0x5F COINBASE NUMBER NUMBER 0x4F SSTORE 0x4E SLOAD 0x5F TIMESTAMP 0x4F MSTORE MSTORE 0x4F JUMPI 0x5F TIMESTAMP COINBASE 0x4C COINBASE 0x4E NUMBER GASLIMIT 0x5F NUMBER COINBASE 0x4C NUMBER SSTORE 0x4C COINBASE SLOAD 0x49 0x4F 0x4E 0x5F CHAINID COINBASE 0x49 0x4C GASLIMIT DIFFICULTY PUSH16 0x6E6C7920467573652061646D696E206D PUSH2 0x7920 PUSH10 0x6E697469616C697A6520 PUSH21 0x6865206D61726B6574DDF252AD1BE2C89B69C2B068 0xFC CALLDATACOPY DUP14 0xAA SWAP6 0x2B 0xA7 CALL PUSH4 0xC4A11628 CREATE2 GAS 0x4D CREATE2 0x23 0xB3 0xEF MSTORE GASLIMIT POP COINBASE MSIZE 0x5F TIMESTAMP 0x4F MSTORE MSTORE 0x4F JUMPI 0x5F 0x4E GASLIMIT JUMPI 0x5F SLOAD 0x4F SLOAD COINBASE 0x4C 0x5F TIMESTAMP COINBASE 0x4C COINBASE 0x4E NUMBER GASLIMIT 0x5F NUMBER COINBASE 0x4C NUMBER SSTORE 0x4C COINBASE SLOAD 0x49 0x4F 0x4E 0x5F CHAINID COINBASE 0x49 0x4C GASLIMIT DIFFICULTY 0x4C 0x49 MLOAD SSTORE 0x49 DIFFICULTY COINBASE SLOAD GASLIMIT 0x5F NUMBER 0x4F 0x4D POP SLOAD MSTORE 0x4F 0x4C 0x4C GASLIMIT MSTORE 0x5F NUMBER COINBASE 0x4C NUMBER SSTORE 0x4C COINBASE SLOAD GASLIMIT 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD 0x5F MSTORE8 GASLIMIT 0x49 GAS GASLIMIT 0x5F CHAINID COINBASE 0x49 0x4C GASLIMIT DIFFICULTY PUSH6 0x786368616E67 PUSH6 0x526174655374 PUSH16 0x7265643A2065786368616E6765526174 PUSH6 0x53746F726564 0x49 PUSH15 0x7465726E616C206661696C65646F6E PUSH6 0x206F66207265 PUSH5 0x65656D546F PUSH12 0x656E73496E206F7220726564 PUSH6 0x656D416D6F75 PUSH15 0x74496E206D757374206265207A6572 PUSH16 0xA265627A7A7231582099EF0A08860A89 ADDMOD REVERT SWAP14 0xB9 0x2C MUL PUSH23 0xBB8607D61521224847759514EDA76111945D64736F6C63 NUMBER STOP SDIV GT STOP ORIGIN ","sourceMap":"403:8286:2:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;403:8286:2;;;;;;;"},"deployedBytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106103275760003560e01c80638f840ddd116101b8578063b2a02ff111610104578063dd62ed3e116100a2578063f5e3c4621161007c578063f5e3c46214610b73578063f8f9da2814610ba9578063fca7820b14610bb1578063fe9c44ae14610bce57610327565b8063dd62ed3e14610b17578063f2b3abbd14610b45578063f3fdb15a14610b6b57610327565b8063c5ebeaec116100de578063c5ebeaec14610acd578063db006a7514610aea578063dbfe7c1914610b07578063dc028ab114610b0f57610327565b8063b2a02ff114610a43578063bd6d894d14610a79578063c37f68e214610a8157610327565b8063a0b0d28911610171578063a9059cbb1161014b578063a9059cbb146109ff578063aa5af0fd14610a2b578063ac784ddc14610a33578063ae9d70b014610a3b57610327565b8063a0b0d2891461088b578063a6afed95146109da578063a7b820df146109e257610327565b80638f840ddd146107fe57806391dd36c61461080657806395d89b411461082357806395dd91931461082b578063a03dce8d14610851578063a0712d681461086e57610327565b80633b1d21a2116102775780636c540baf1161023057806373acee981161020a57806373acee98146107ab5780637f1e06be146107b3578063852a12e3146107d95780638d02d9a1146107f657610327565b80636c540baf146107755780636f307dc31461077d57806370a082311461078557610327565b80633b1d21a21461071457806347bd37181461071c5780635fe3b56714610724578063601a0bf11461074857806361feacff146107655780636752e7021461076d57610327565b806318160ddd116102e45780632608f818116102be5780632608f818146105e6578063313ce5671461061257806334154d4c146106305780633af9e669146106ee57610327565b806318160ddd146105a0578063182df0f5146105a857806323b872dd146105b057610327565b806306fdde031461032c578063095ea7b3146103a95780630e752702146103e95780630f8855e814610418578063173b99041461057257806317bfdfbc1461057a575b600080fd5b610334610bd6565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561036e578181015183820152602001610356565b50505050905090810190601f16801561039b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103d5600480360360408110156103bf57600080fd5b506001600160a01b038135169060200135610c63565b604080519115158252519081900360200190f35b610406600480360360208110156103ff57600080fd5b5035610cd0565b60408051918252519081900360200190f35b610570600480360361010081101561042f57600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b81111561046957600080fd5b82018360208201111561047b57600080fd5b803590602001918460018302840111600160201b8311171561049c57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156104ee57600080fd5b82018360208201111561050057600080fd5b803590602001918460018302840111600160201b8311171561052157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505060ff8335169350505060208101359060400135610ce6565b005b610406610f94565b6104066004803603602081101561059057600080fd5b50356001600160a01b0316610f9a565b610406611016565b61040661101c565b6103d5600480360360608110156105c657600080fd5b506001600160a01b0381358116916020810135909116906040013561107f565b610406600480360360408110156105fc57600080fd5b506001600160a01b0381351690602001356110ad565b61061a6110c3565b6040805160ff9092168252519081900360200190f35b6105706004803603604081101561064657600080fd5b810190602081018135600160201b81111561066057600080fd5b82018360208201111561067257600080fd5b803590602001918460018302840111600160201b8311171561069357600080fd5b919390929091602081019035600160201b8111156106b057600080fd5b8201836020820111156106c257600080fd5b803590602001918460018302840111600160201b831117156106e357600080fd5b5090925090506110cc565b6104066004803603602081101561070457600080fd5b50356001600160a01b0316611138565b6104066111ee565b6104066111fd565b61072c611203565b604080516001600160a01b039092168252519081900360200190f35b6104066004803603602081101561075e57600080fd5b5035611212565b610406611263565b610406611269565b610406611274565b61072c61127a565b6104066004803603602081101561079b57600080fd5b50356001600160a01b0316611289565b6104066112a4565b610570600480360360208110156107c957600080fd5b50356001600160a01b0316611317565b610406600480360360208110156107ef57600080fd5b50356113bc565b6104066113c7565b6104066113cd565b6104066004803603602081101561081c57600080fd5b50356113d3565b610334611410565b6104066004803603602081101561084157600080fd5b50356001600160a01b0316611468565b6104066004803603602081101561086757600080fd5b50356114cc565b6104066004803603602081101561088457600080fd5b5035611509565b610570600480360360e08110156108a157600080fd5b6001600160a01b0382358116926020810135821692604082013590921691810190608081016060820135600160201b8111156108dc57600080fd5b8201836020820111156108ee57600080fd5b803590602001918460018302840111600160201b8311171561090f57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561096157600080fd5b82018360208201111561097357600080fd5b803590602001918460018302840111600160201b8311171561099457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505082359350505060200135611515565b61040661162e565b610406600480360360208110156109f857600080fd5b50356117f3565b6103d560048036036040811015610a1557600080fd5b506001600160a01b038135169060200135611830565b61040661185d565b6103d5611863565b610406611868565b61040660048036036060811015610a5957600080fd5b506001600160a01b03813581169160208101359091169060400135611920565b610406611944565b610aa760048036036020811015610a9757600080fd5b50356001600160a01b03166119b8565b604080519485526020850193909352838301919091526060830152519081900360800190f35b61040660048036036020811015610ae357600080fd5b5035611a4d565b61040660048036036020811015610b0057600080fd5b5035611a58565b610406611a63565b610406611a69565b61040660048036036040811015610b2d57600080fd5b506001600160a01b0381358116916020013516611a6f565b61040660048036036020811015610b5b57600080fd5b50356001600160a01b0316611a9a565b61072c611ad4565b61040660048036036060811015610b8957600080fd5b506001600160a01b03813581169160208101359160409091013516611ae3565b610406611afb565b61040660048036036020811015610bc757600080fd5b5035611b70565b6103d5611bad565b60018054604080516020600284861615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610c5b5780601f10610c3057610100808354040283529160200191610c5b565b820191906000526020600020905b815481529060010190602001808311610c3e57829003601f168201915b505050505081565b3360008181526012602090815260408083206001600160a01b03871680855290835281842086905581518681529151939493909284927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a360019150505b92915050565b600080610cdc83611bb2565b509150505b919050565b3373a731585ab05fc9f83555cf9bff8f58ee94e18f8514610d385760405162461bcd60e51b815260040180806020018281038252602981526020018061555d6029913960400191505060405180910390fd5b600a54158015610d485750600b54155b610d835760405162461bcd60e51b815260040180806020018281038252602381526020018061544a6023913960400191505060405180910390fd5b600686905585610dc45760405162461bcd60e51b815260040180806020018281038252603081526020018061546d6030913960400191505060405180910390fd5b6000610dcf89611c15565b90508015610e24576040805162461bcd60e51b815260206004820152601a60248201527f73657474696e6720636f6d7074726f6c6c6572206661696c6564000000000000604482015290519081900360640190fd5b610e2c611d3a565b600a55670de0b6b3a7640000600b55610e4488611d3e565b90508015610e835760405162461bcd60e51b81526004018080602001828103825260228152602001806154ca6022913960400191505060405180910390fd5b8551610e9690600190602089019061523a565b508451610eaa90600290602088019061523a565b506003805460ff191660ff8616179055610ec383612044565b90508015610f18576040805162461bcd60e51b815260206004820152601d60248201527f73657474696e67207265736572766520666163746f72206661696c6564000000604482015290519081900360640190fd5b610f21826120fd565b90508015610f76576040805162461bcd60e51b815260206004820152601860248201527f73657474696e672061646d696e20666565206661696c65640000000000000000604482015290519081900360640190fd5b50506000805460ff60b01b1916600160b01b17905550505050505050565b60095481565b600080610fa681612222565b6000610fb061162e565b14610ffb576040805162461bcd60e51b81526020600482015260166024820152751858d8dc9d59481a5b9d195c995cdd0819985a5b195960521b604482015290519081900360640190fd5b61100483611468565b91505b611010816122de565b50919050565b60105481565b600080600061102961233c565b9092509050600082600381111561103c57fe5b146110785760405162461bcd60e51b815260040180806020018281038252603581526020018061560a6035913960400191505060405180910390fd5b9150505b90565b60008061108b81612222565b6000611099338787876123fc565b1491506110a5816122de565b509392505050565b6000806110ba848461268e565b50949350505050565b60035460ff1681565b6110d46126f3565b611118576040805162461bcd60e51b815260206004820152601060248201526f31b0b63632b9103737ba1030b236b4b760811b604482015290519081900360640190fd5b611124600185856152b4565b50611131600283836152b4565b5050505050565b6000611142615322565b6040518060200160405280611155611944565b90526001600160a01b03841660009081526011602052604081205491925090819061118190849061286c565b9092509050600082600381111561119457fe5b146111e6576040805162461bcd60e51b815260206004820152601f60248201527f62616c616e636520636f756c64206e6f742062652063616c63756c6174656400604482015290519081900360640190fd5b949350505050565b60006111f86128c0565b905090565b600c5481565b6004546001600160a01b031681565b60008061121e81612222565b600061122861162e565b9050801561124e5761124681601181111561123f57fe5b603b61290e565b925050611007565b61125784612974565b925050611010816122de565b600e5481565b666379da05b6000081565b600a5481565b6014546001600160a01b031681565b6001600160a01b031660009081526011602052604090205490565b6000806112b081612222565b60006112ba61162e565b14611305576040805162461bcd60e51b81526020600482015260166024820152751858d8dc9d59481a5b9d195c995cdd0819985a5b195960521b604482015290519081900360640190fd5b600c549150611313816122de565b5090565b61131f6126f3565b61135a5760405162461bcd60e51b815260040180806020018281038252602d81526020018061549d602d913960400191505060405180910390fd5b601454604080516317066a5760e21b81526001600160a01b03848116600483015291519190921691635c19a95c91602480830192600092919082900301818387803b1580156113a857600080fd5b505af1158015611131573d6000803e3d6000fd5b6000610cca82612a40565b60075481565b600d5481565b6000806113df81612222565b60006113e961162e565b905080156114075761124681601181111561140057fe5b605261290e565b611257846120fd565b6002805460408051602060018416156101000260001901909316849004601f81018490048402820184019092528181529291830182828015610c5b5780601f10610c3057610100808354040283529160200191610c5b565b600080600061147684612a80565b9092509050600082600381111561148957fe5b146114c55760405162461bcd60e51b81526004018080602001828103825260378152602001806154ec6037913960400191505060405180910390fd5b9392505050565b6000806114d881612222565b60006114e261162e565b90508015611500576112468160118111156114f957fe5b603361290e565b61125784612b34565b600080610cdc83612bb5565b60006702c68af0bb14000090506000886001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561155d57600080fd5b505afa158015611571573d6000803e3d6000fd5b505050506040513d602081101561158757600080fd5b5051905061159b8888848989868a8a610ce6565b601480546001600160a01b0319166001600160a01b038b81169190911791829055604080516318160ddd60e01b8152905192909116916318160ddd91600480820192602092909190829003018186803b1580156115f757600080fd5b505afa15801561160b573d6000803e3d6000fd5b505050506040513d602081101561162157600080fd5b5050505050505050505050565b600080611639611d3a565b905080600a54141561164f57600091505061107c565b60006116596128c0565b90506000600560009054906101000a90046001600160a01b03166001600160a01b03166315f2405383600c5461169e600d54611699600e54600f54612bf5565b612bf5565b6040518463ffffffff1660e01b815260040180848152602001838152602001828152602001935050505060206040518083038186803b1580156116e057600080fd5b505afa1580156116f4573d6000803e3d6000fd5b505050506040513d602081101561170a57600080fd5b5051905065048c27395000811115611769576040805162461bcd60e51b815260206004820152601c60248201527f626f72726f772072617465206973206162737572646c79206869676800000000604482015290519081900360640190fd5b60008061177885600a54612c2b565b9092509050600082600381111561178b57fe5b146117dd576040805162461bcd60e51b815260206004820152601f60248201527f636f756c64206e6f742063616c63756c61746520626c6f636b2064656c746100604482015290519081900360640190fd5b6117e985858584612c4e565b9550505050505090565b6000806117ff81612222565b600061180961162e565b905080156118275761124681601181111561182057fe5b603761290e565b61125784612e66565b60008061183c81612222565b600061184a333387876123fc565b149150611856816122de565b5092915050565b600b5481565b600081565b6005546000906001600160a01b031663b81688166118846128c0565b600c5461189b600d54611699600e54600f54612bf5565b60075460085460095401016040518563ffffffff1660e01b81526004018085815260200184815260200183815260200182815260200194505050505060206040518083038186803b1580156118ef57600080fd5b505afa158015611903573d6000803e3d6000fd5b505050506040513d602081101561191957600080fd5b5051905090565b6000600161192d81612222565b61193933868686612f42565b91506110a5816122de565b60008061195081612222565b600061195a61162e565b146119a5576040805162461bcd60e51b81526020600482015260166024820152751858d8dc9d59481a5b9d195c995cdd0819985a5b195960521b604482015290519081900360640190fd5b6119ad61101c565b9150611313816122de565b6001600160a01b0381166000908152601160205260408120548190819081908180806119e389612a80565b9350905060008160038111156119f557fe5b14611a135760095b975060009650869550859450611a469350505050565b611a1b61233c565b925090506000816003811115611a2d57fe5b14611a395760096119fd565b5060009650919450925090505b9193509193565b6000610cca82613327565b6000610cca82613365565b60085481565b600f5481565b6001600160a01b03918216600090815260126020908152604080832093909416825291909152205490565b600080611aa561162e565b90508015611acb57611ac3816011811115611abc57fe5b604b61290e565b915050610ce1565b6114c583611d3e565b6005546001600160a01b031681565b600080611af185858561339e565b5095945050505050565b6005546000906001600160a01b03166315f24053611b176128c0565b600c54611b2e600d54611699600e54600f54612bf5565b6040518463ffffffff1660e01b815260040180848152602001838152602001828152602001935050505060206040518083038186803b1580156118ef57600080fd5b600080611b7c81612222565b6000611b8661162e565b90508015611ba457611246816011811115611b9d57fe5b605961290e565b61125784612044565b600181565b6000806000611bc081612222565b6000611bca61162e565b90508015611bf557611be8816011811115611be157fe5b604161290e565b935060009250611c069050565b611c0033338761348a565b93509350505b611c0f816122de565b50915091565b6004805460408051623f1ee960e11b815290516000936001600160a01b0393841693861692627e3dd29281830192602092829003018186803b158015611c5a57600080fd5b505afa158015611c6e573d6000803e3d6000fd5b505050506040513d6020811015611c8457600080fd5b5051611cd7576040805162461bcd60e51b815260206004820152601c60248201527f6d61726b6572206d6574686f642072657475726e65642066616c736500000000604482015290519081900360640190fd5b600480546001600160a01b0319166001600160a01b03858116918217909255604080519284168352602083019190915280517f7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d9281900390910190a160006114c5565b4390565b600080611d496126f3565b611d5957611ac36001604d61290e565b611d61611d3a565b600a5414611d7557611ac3600a604c61290e565b600560009054906101000a90046001600160a01b03169050826001600160a01b0316632191f92a6040518163ffffffff1660e01b815260040160206040518083038186803b158015611dc657600080fd5b505afa158015611dda573d6000803e3d6000fd5b505050506040513d6020811015611df057600080fd5b5051611e43576040805162461bcd60e51b815260206004820152601c60248201527f6d61726b6572206d6574686f642072657475726e65642066616c736500000000604482015290519081900360640190fd5b600580546001600160a01b0319166001600160a01b03858116918217909255604080519284168352602083019190915280517fedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f9269281900390910190a16001600160a01b03811615611f755760408051600481526024810182526020810180516001600160e01b0316636cc1140b60e11b178152915181516001600160a01b0385169382918083835b60208310611f0a5780518252601f199092019160209182019101611eeb565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611f6c576040519150601f19603f3d011682016040523d82523d6000602084013e611f71565b606091505b5050505b60408051600481526024810182526020810180516001600160e01b031663742a137b60e11b178152915181516001600160a01b0387169382918083835b60208310611fd15780518252601f199092019160209182019101611fb2565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612033576040519150601f19603f3d011682016040523d82523d6000602084013e612038565b606091505b50600091506114c59050565b600061204e6126f3565b6120655761205e6001605a61290e565b9050610ce1565b61206d611d3a565b600a54146120815761205e600a605b61290e565b670de0b6b3a76400006120a161209984600754612bf5565b600854612bf5565b11156120b35761205e6002605c61290e565b6009805490839055604080518281526020810185905281517faaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460929181900390910190a160006114c5565b6000612107611d3a565b600a541461211b5761205e600a605461290e565b60001982141561212b5760075491505b60006121356137dc565b9050670de0b6b3a764000061215561214f60095486612bf5565b83612bf5565b111561216757611ac36002605561290e565b82600754146121cd576121786126f3565b61218857611ac36001605361290e565b6007805490849055604080518281526020810186905281517fcdd0b588250e1398549f79cfdb8217c186688822905d6715b0834ea1c865594a929181900390910190a1505b806008541461221b576008805490829055604080518281526020810184905281517f92eef861b6533b7d3417f39c2ad7b460eed4e88a32fa3604f30e718b7602e7dc929181900390910190a1505b60006114c5565b600054600160b01b900460ff1661226d576040805162461bcd60e51b815260206004820152600a6024820152691c994b595b9d195c995960b21b604482015290519081900360640190fd5b806122ce57600480546040805163c90c20b160e01b815290516001600160a01b039092169263c90c20b192828201926000929082900301818387803b1580156122b557600080fd5b505af11580156122c9573d6000803e3d6000fd5b505050505b506000805460ff60b01b19169055565b6000805460ff60b01b1916600160b01b1790558061233957600480546040805163319728a160e11b815290516001600160a01b039092169263632e514292828201926000929082900301818387803b1580156113a857600080fd5b50565b601054600090819080612357575050600654600091506123f8565b60006123616128c0565b9050600061236d615322565b600061238f84600c5461238a600d54611699600e54600f54612bf5565b61382b565b9350905060008160038111156123a157fe5b146123b6579550600094506123f89350505050565b6123c08386613877565b9250905060008160038111156123d257fe5b146123e7579550600094506123f89350505050565b50516000955093506123f892505050565b9091565b60048054604080516317b9b84b60e31b815230938101939093526001600160a01b03868116602485015285811660448501526064840185905290516000938493929092169163bdcdc25891608480830192602092919082900301818787803b15801561246757600080fd5b505af115801561247b573d6000803e3d6000fd5b505050506040513d602081101561249157600080fd5b5051905080156124b0576124a86003605d83613927565b9150506111e6565b836001600160a01b0316856001600160a01b031614156124d6576124a86002605e61290e565b60006001600160a01b0387811690871614156124f5575060001961251d565b506001600160a01b038086166000908152601260209081526040808320938a16835292905220545b60008060008061252d8589612c2b565b9094509250600084600381111561254057fe5b1461255e576125516009605e61290e565b96505050505050506111e6565b6001600160a01b038a166000908152601160205260409020546125819089612c2b565b9094509150600084600381111561259457fe5b146125a5576125516009605f61290e565b6001600160a01b0389166000908152601160205260409020546125c890896139b0565b909450905060008460038111156125db57fe5b146125ec576125516009606061290e565b6001600160a01b03808b16600090815260116020526040808220859055918b168152208190556000198514612644576001600160a01b03808b166000908152601260209081526040808320938f168352929052208390555b886001600160a01b03168a6001600160a01b03166000805160206155868339815191528a6040518082815260200191505060405180910390a35060009a9950505050505050505050565b600080600061269c81612222565b60006126a661162e565b905080156126d1576126c48160118111156126bd57fe5b604061290e565b9350600092506126e29050565b6126dc33878761348a565b93509350505b6126eb816122de565b509250929050565b60048054604080516303e1469160e61b815290516000936001600160a01b0390931692839263f851a4409281830192602092829003018186803b15801561273957600080fd5b505afa15801561274d573d6000803e3d6000fd5b505050506040513d602081101561276357600080fd5b50516001600160a01b0316331480156127dd5750806001600160a01b0316630a755ec26040518163ffffffff1660e01b815260040160206040518083038186803b1580156127b057600080fd5b505afa1580156127c4573d6000803e3d6000fd5b505050506040513d60208110156127da57600080fd5b50515b8061107857503373a731585ab05fc9f83555cf9bff8f58ee94e18f851480156110785750806001600160a01b0316632f1069ba6040518163ffffffff1660e01b815260040160206040518083038186803b15801561283a57600080fd5b505afa15801561284e573d6000803e3d6000fd5b505050506040513d602081101561286457600080fd5b505191505090565b6000806000612879615322565b61288386866139d6565b9092509050600082600381111561289657fe5b146128a757509150600090506128b9565b60006128b282613a3e565b9350935050505b9250929050565b601454604080516370a0823160e01b815230600482015290516000926001600160a01b03169182916370a0823191602480820192602092909190829003018186803b15801561283a57600080fd5b60007f45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa083601181111561293d57fe5b83606381111561294957fe5b604080519283526020830191909152600082820152519081900360600190a18260118111156114c557fe5b60008061297f6126f3565b61298f57611ac36001603c61290e565b612997611d3a565b600a54146129ab57611ac3600a603e61290e565b826129b46128c0565b10156129c657611ac3600e603d61290e565b600d548311156129dc57611ac36002603f61290e565b6129e8600d5484613a4d565b600d81905590506129f93384613a87565b604080513381526020810185905280820183905290517f3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e9181900360600190a160006114c5565b600080612a4c81612222565b6000612a5661162e565b90508015612a7457611246816011811115612a6d57fe5b602a61290e565b61125733600086613b0c565b6001600160a01b038116600090815260136020526040812080548291829182918291612ab7575060009450849350612b2f92505050565b612ac78160000154600b54613fdf565b90945092506000846003811115612ada57fe5b14612aef575091935060009250612b2f915050565b612afd83826001015461401e565b90945091506000846003811115612b1057fe5b14612b25575091935060009250612b2f915050565b5060009450925050505b915091565b600080612b3f611d3a565b600a5414612b5357611ac3600a603561290e565b82612b5c6128c0565b1015612b6e57611ac3600e603461290e565b600f54831115612b8457611ac36002603661290e565b612b90600f5484613a4d565b600f819055905061221b73a731585ab05fc9f83555cf9bff8f58ee94e18f8584613a87565b6000806000612bc381612222565b6000612bcd61162e565b90508015612beb57611be8816011811115612be457fe5b602061290e565b611c003386614049565b60006114c58383604051806040016040528060118152602001706164646974696f6e206f766572666c6f7760781b8152506143c8565b600080838311612c425750600090508183036128b9565b506003905060006128b9565b6000612c58615322565b612c706040518060200160405280868152508461445a565b90506000612c8082600c54614484565b90506000612c9082600c54612bf5565b90506000612cb1604051806020016040528060095481525084600d546144a3565b90506000612cd2604051806020016040528060085481525085600f546144a3565b90506000612cf3604051806020016040528060075481525086600e546144a3565b90506000612d0687600b54600b546144a3565b600a8d9055600b819055600c869055600d859055600f849055600e839055604080518d8152602081018990528082018390526060810188905290519192507f4dec04e750ca11537cabcd8a9eab06494de08da3735bc8871cd41250e190bc04919081900360800190a16005546040805160248082018e905282518083039091018152604490910182526020810180516001600160e01b0316635efd023360e11b178152915181516001600160a01b0390941693919290918291908083835b60208310612de35780518252601f199092019160209182019101612dc4565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612e45576040519150601f19603f3d011682016040523d82523d6000602084013e612e4a565b606091505b5060009150612e569050565b9c9b505050505050505050505050565b600080612e71611d3a565b600a5414612e8557611ac3600a603961290e565b82612e8e6128c0565b1015612ea057611ac3600e603861290e565b600e54831115612eb657611ac36002603a61290e565b612ec2600e5484613a4d565b600e81905560048054604080516303e1469160e61b8152905193945061221b936001600160a01b039092169263f851a440928282019260209290829003018186803b158015612f1057600080fd5b505afa158015612f24573d6000803e3d6000fd5b505050506040513d6020811015612f3a57600080fd5b505184613a87565b600480546040805163d02f735160e01b815230938101939093526001600160a01b038781166024850152868116604485015285811660648501526084840185905290516000938493929092169163d02f73519160a480830192602092919082900301818787803b158015612fb557600080fd5b505af1158015612fc9573d6000803e3d6000fd5b505050506040513d6020811015612fdf57600080fd5b505190508015612ff6576124a86003601d83613927565b846001600160a01b0316846001600160a01b0316141561301c576124a86006601e61290e565b613024615335565b6001600160a01b0385166000908152601160205260409020546130479085612c2b565b602083018190528282600381111561305b57fe5b600381111561306657fe5b905250600090508151600381111561307a57fe5b146130a45761309b6009601c8360000151600381111561309657fe5b613927565b925050506111e6565b6130c3846040518060200160405280666379da05b600008152506144d4565b608082018190526130d5908590613a4d565b60608201526130e261233c565b60c08301819052828260038111156130f657fe5b600381111561310157fe5b905250600090508151600381111561311557fe5b14613167576040805162461bcd60e51b815260206004820152601860248201527f65786368616e67652072617465206d617468206572726f720000000000000000604482015290519081900360640190fd5b61318760405180602001604052808360c001518152508260800151614484565b60a08201819052600d5461319a91612bf5565b60e082015260105460808201516131b19190613a4d565b6101008201526001600160a01b03861660009081526011602052604090205460608201516131df91906139b0565b60408301819052828260038111156131f357fe5b60038111156131fe57fe5b905250600090508151600381111561321257fe5b1461322e5761309b6009601b8360000151600381111561309657fe5b60e0810151600d556101008101516010556020808201516001600160a01b0380881660008181526011855260408082209490945583860151928b16808252908490209290925560608501518351908152925191939092600080516020615586833981519152929081900390910190a36080810151604080519182525130916001600160a01b038816916000805160206155868339815191529181900360200190a360a081015160e082015160408051308152602081019390935282810191909152517fa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc59181900360600190a16000979650505050505050565b60008061333381612222565b600061333d61162e565b9050801561335b5761124681601181111561335457fe5b600a61290e565b61125733856144fc565b60008061337181612222565b600061337b61162e565b9050801561339257611246816011811115612a6d57fe5b61125733856000613b0c565b60008060006133ac81612222565b60006133b661162e565b905080156133e1576133d48160118111156133cd57fe5b601161290e565b9350600092506134789050565b846001600160a01b031663a6afed956040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561341c57600080fd5b505af1158015613430573d6000803e3d6000fd5b505050506040513d602081101561344657600080fd5b505190508015613466576133d481601181111561345f57fe5b601261290e565b61347233888888614846565b93509350505b613481816122de565b50935093915050565b6004805460408051631200453160e11b815230938101939093526001600160a01b03868116602485015285811660448501526064840185905290516000938493849316916324008a629160848082019260209290919082900301818787803b1580156134f557600080fd5b505af1158015613509573d6000803e3d6000fd5b505050506040513d602081101561351f57600080fd5b505190508015613543576135366003604383613927565b9250600091506137d49050565b61354b611d3a565b600a541461355f57613536600a604461290e565b613567615382565b6001600160a01b038616600090815260136020526040902060010154606082015261359186612a80565b60808301819052602083018260038111156135a857fe5b60038111156135b357fe5b90525060009050816020015160038111156135ca57fe5b146135f4576135e6600960428360200151600381111561309657fe5b9350600092506137d4915050565b60001985141561360d5760808101516040820152613615565b604081018590525b613623878260400151614d3e565b60e08201819052608082015161363891612c2b565b60a083018190526020830182600381111561364f57fe5b600381111561365a57fe5b905250600090508160200151600381111561367157fe5b146136ad5760405162461bcd60e51b815260040180806020018281038252603a815260200180615523603a913960400191505060405180910390fd5b6136bd600c548260e00151612c2b565b60c08301819052602083018260038111156136d457fe5b60038111156136df57fe5b90525060009050816020015160038111156136f657fe5b146137325760405162461bcd60e51b81526004018080602001828103825260318152602001806155a66031913960400191505060405180910390fd5b60a080820180516001600160a01b03808a16600081815260136020908152604091829020948555600b5460019095019490945560c0870151600c81905560e088015195518251948f16855294840192909252828101949094526060820192909252608081019190915290517f1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1929181900390910190a160e00151600093509150505b935093915050565b600073a731585ab05fc9f83555cf9bff8f58ee94e18f856001600160a01b031663dd86fea16040518163ffffffff1660e01b815260040160206040518083038186803b1580156118ef57600080fd5b60008060008061383b87876139b0565b9092509050600082600381111561384e57fe5b1461385f57509150600090506137d4565b6138698186612c2b565b935093505050935093915050565b6000613881615322565b60008061389686670de0b6b3a7640000613fdf565b909250905060008260038111156138a957fe5b146138c8575060408051602081019091526000815290925090506128b9565b6000806138d5838861401e565b909250905060008260038111156138e857fe5b1461390a575060408051602081019091526000815290945092506128b9915050565b604080516020810190915290815260009890975095505050505050565b60007f45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa084601181111561395657fe5b84606381111561396257fe5b604080519283526020830191909152818101859052519081900360600190a1600384601181111561398f57fe5b146139a5578360118111156139a057fe5b6111e6565b506103e80192915050565b6000808383018481106139c8576000925090506128b9565b5060029150600090506128b9565b60006139e0615322565b6000806139f1866000015186613fdf565b90925090506000826003811115613a0457fe5b14613a23575060408051602081019091526000815290925090506128b9565b60408051602081019091529081526000969095509350505050565b51670de0b6b3a7640000900490565b60006114c58383604051806040016040528060158152602001747375627472616374696f6e20756e646572666c6f7760581b815250614f1b565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091018252602081810180516001600160e01b031663a9059cbb60e01b1790528251808401909352601983527f544f4b454e5f5452414e534645525f4f55545f4641494c45440000000000000090830152613b0891614f75565b5050565b6000821580613b19575081155b613b545760405162461bcd60e51b815260040180806020018281038252603481526020018061563f6034913960400191505060405180910390fd5b613b5c6153c8565b613b6461233c565b6040830181905260208301826003811115613b7b57fe5b6003811115613b8657fe5b9052506000905081602001516003811115613b9d57fe5b14613bc157613bb96009602e8360200151600381111561309657fe5b9150506114c5565b8315613c42576060810184905260408051602081018252908201518152613be8908561286c565b6080830181905260208301826003811115613bff57fe5b6003811115613c0a57fe5b9052506000905081602001516003811115613c2157fe5b14613c3d57613bb96009602c8360200151600381111561309657fe5b613cbb565b613c5e8360405180602001604052808460400151815250615004565b6060830181905260208301826003811115613c7557fe5b6003811115613c8057fe5b9052506000905081602001516003811115613c9757fe5b14613cb357613bb96009602d8360200151600381111561309657fe5b608081018390525b6004805460608301516040805163eabe7d9160e01b815230948101949094526001600160a01b038981166024860152604485019290925251600093919092169163eabe7d919160648082019260209290919082900301818787803b158015613d2257600080fd5b505af1158015613d36573d6000803e3d6000fd5b505050506040513d6020811015613d4c57600080fd5b505190508015613d6c57613d636003602b83613927565b925050506114c5565b613d74611d3a565b600a5414613d8857613d63600a602f61290e565b613d986010548360600151612c2b565b60a0840181905260208401826003811115613daf57fe5b6003811115613dba57fe5b9052506000905082602001516003811115613dd157fe5b14613ded57613d63600960318460200151600381111561309657fe5b6001600160a01b0386166000908152601160205260409020546060830151613e159190612c2b565b60c0840181905260208401826003811115613e2c57fe5b6003811115613e3757fe5b9052506000905082602001516003811115613e4e57fe5b14613e6a57613d63600960308460200151600381111561309657fe5b8160800151613e776128c0565b1015613e8957613d63600e603261290e565b60a082015160105560c08201516001600160a01b0387166000908152601160205260409020556080820151613ebf908790613a87565b6060820151604080519182525130916001600160a01b038916916000805160206155868339815191529181900360200190a36080820151606080840151604080516001600160a01b038b168152602081019490945283810191909152517fe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a9299281900390910190a16004805460808401516060850151604080516351dff98960e01b815230958101959095526001600160a01b038b8116602487015260448601939093526064850191909152519116916351dff98991608480830192600092919082900301818387803b158015613fb457600080fd5b505af1158015613fc8573d6000803e3d6000fd5b5060009250613fd5915050565b9695505050505050565b60008083613ff2575060009050806128b9565b83830283858281613fff57fe5b0414614013575060029150600090506128b9565b6000925090506128b9565b6000808261403257506001905060006128b9565b600083858161403d57fe5b04915091509250929050565b6004805460408051634ef4c3e160e01b815230938101939093526001600160a01b038581166024850152604484018590529051600093849384931691634ef4c3e19160648082019260209290919082900301818787803b1580156140ac57600080fd5b505af11580156140c0573d6000803e3d6000fd5b505050506040513d60208110156140d657600080fd5b5051905080156140fa576140ed6003602183613927565b9250600091506128b99050565b614102611d3a565b600a5414614116576140ed600a602461290e565b61411e6153c8565b61412661233c565b604083018190526020830182600381111561413d57fe5b600381111561414857fe5b905250600090508160200151600381111561415f57fe5b146141895761417b600960238360200151600381111561309657fe5b9350600092506128b9915050565b6141938686614d3e565b60c08201819052604080516020810182529083015181526141b49190615004565b60608301819052602083018260038111156141cb57fe5b60038111156141d657fe5b90525060009050816020015160038111156141ed57fe5b1461423f576040805162461bcd60e51b815260206004820181905260248201527f4d494e545f45584348414e47455f43414c43554c4154494f4e5f4641494c4544604482015290519081900360640190fd5b61424f6010548260600151612bf5565b60808201526001600160a01b038616600090815260116020526040902054606082015161427c9190612bf5565b60a0820181905260808201516010556001600160a01b0387166000818152601160209081526040918290209390935560c084015160608086015183519485529484019190915282820193909352517f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f929181900390910190a1606081015160408051918252516001600160a01b0388169130916000805160206155868339815191529181900360200190a36004805460c08301516060840151604080516341c728b960e01b815230958101959095526001600160a01b038b8116602487015260448601939093526064850191909152519116916341c728b991608480830192600092919082900301818387803b15801561439557600080fd5b505af11580156143a9573d6000803e3d6000fd5b50600092506143b6915050565b8160c001519350935050509250929050565b600083830182858210156110ba5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561441f578181015183820152602001614407565b50505050905090810190601f16801561444c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b614462615322565b604051806020016040528061447b85600001518561501b565b90529392505050565b600061448e615322565b614498848461445a565b90506111e681613a3e565b60006144ad615322565b6144b7858561445a565b90506144cb6144c582613a3e565b84612bf5565b95945050505050565b6000670de0b6b3a76400006144ed84846000015161501b565b816144f457fe5b049392505050565b600480546040805163368f515360e21b815230938101939093526001600160a01b0385811660248501526044840185905290516000938493929092169163da3d454c91606480830192602092919082900301818787803b15801561455f57600080fd5b505af1158015614573573d6000803e3d6000fd5b505050506040513d602081101561458957600080fd5b5051905080156145a8576145a06003601083613927565b915050610cca565b6145b0611d3a565b600a54146145c4576145a0600a600c61290e565b60006145ce6128c0565b9050838110156145ed576145e4600e600b61290e565b92505050610cca565b6145f5615406565b6145fe86612a80565b602083018190528282600381111561461257fe5b600381111561461d57fe5b905250600090508151600381111561463157fe5b146146565761464c6009808360000151600381111561309657fe5b9350505050610cca565b6146648160200151866139b0565b604083018190528282600381111561467857fe5b600381111561468357fe5b905250600090508151600381111561469757fe5b146146b35761464c6009600e8360000151600381111561309657fe5b600480546040808401518151631de6c8a560e21b815230948101949094526024840152516001600160a01b039091169163779b22949160448083019260209291908290030181600087803b15801561470a57600080fd5b505af115801561471e573d6000803e3d6000fd5b505050506040513d602081101561473457600080fd5b50519250821561474b5761464c6003601085613927565b614757600c54866139b0565b606083018190528282600381111561476b57fe5b600381111561477657fe5b905250600090508151600381111561478a57fe5b146147a65761464c6009600d8360000151600381111561309657fe5b6040808201516001600160a01b0388166000908152601360205291909120908155600b546001909101556060810151600c556147e28686613a87565b60408082015160608084015183516001600160a01b038b168152602081018a9052808501939093529082015290517f13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab809181900360800190a160009695505050505050565b6004805460408051632fe3f38f60e11b815230938101939093526001600160a01b03848116602485015287811660448501528681166064850152608484018690529051600093849384931691635fc7e71e9160a48082019260209290919082900301818787803b1580156148b957600080fd5b505af11580156148cd573d6000803e3d6000fd5b505050506040513d60208110156148e357600080fd5b505190508015614907576148fa6003601483613927565b925060009150614d359050565b61490f611d3a565b600a5414614923576148fa600a601861290e565b61492b611d3a565b846001600160a01b0316636c540baf6040518163ffffffff1660e01b815260040160206040518083038186803b15801561496457600080fd5b505afa158015614978573d6000803e3d6000fd5b505050506040513d602081101561498e57600080fd5b5051146149a1576148fa600a601361290e565b866001600160a01b0316866001600160a01b031614156149c7576148fa6006601961290e565b846149d8576148fa6007601761290e565b6000198514156149ee576148fa6007601661290e565b6000806149fc89898961348a565b90925090508115614a2c57614a1d826011811115614a1657fe5b601a61290e565b945060009350614d3592505050565b600480546040805163c488847b60e01b815230938101939093526001600160a01b0389811660248501526044840185905281516000948594929092169263c488847b9260648082019391829003018186803b158015614a8a57600080fd5b505afa158015614a9e573d6000803e3d6000fd5b505050506040513d6040811015614ab457600080fd5b50805160209091015190925090508115614aff5760405162461bcd60e51b81526004018080602001828103825260338152602001806155d76033913960400191505060405180910390fd5b80886001600160a01b03166370a082318c6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015614b5657600080fd5b505afa158015614b6a573d6000803e3d6000fd5b505050506040513d6020811015614b8057600080fd5b50511015614bd5576040805162461bcd60e51b815260206004820152601860248201527f4c49515549444154455f5345495a455f544f4f5f4d5543480000000000000000604482015290519081900360640190fd5b60006001600160a01b038916301415614bfb57614bf4308d8d85612f42565b9050614c85565b6040805163b2a02ff160e01b81526001600160a01b038e811660048301528d81166024830152604482018590529151918b169163b2a02ff1916064808201926020929091908290030181600087803b158015614c5657600080fd5b505af1158015614c6a573d6000803e3d6000fd5b505050506040513d6020811015614c8057600080fd5b505190505b8015614ccf576040805162461bcd60e51b81526020600482015260146024820152731d1bdad95b881cd95a5e9d5c994819985a5b195960621b604482015290519081900360640190fd5b604080516001600160a01b03808f168252808e1660208301528183018790528b1660608201526080810184905290517f298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb529181900360a00190a16000975092955050505050505b94509492505050565b601454604080516370a0823160e01b8152306004820152905160009283926001600160a01b03909116916370a0823191602480820192602092909190829003018186803b158015614d8e57600080fd5b505afa158015614da2573d6000803e3d6000fd5b505050506040513d6020811015614db857600080fd5b5051604080516001600160a01b038716602482015230604482015260648082018790528251808303909101815260849091018252602081810180516001600160e01b03166323b872dd60e01b1790528251808401909352601883527f544f4b454e5f5452414e534645525f494e5f4641494c4544000000000000000090830152919250614e459190614f75565b601454604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b158015614e9057600080fd5b505afa158015614ea4573d6000803e3d6000fd5b505050506040513d6020811015614eba57600080fd5b5051905081811015614f13576040805162461bcd60e51b815260206004820152601a60248201527f544f4b454e5f5452414e534645525f494e5f4f564552464c4f57000000000000604482015290519081900360640190fd5b039392505050565b60008184841115614f6d5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561441f578181015183820152602001614407565b505050900390565b601454606090614f8f906001600160a01b0316848461505d565b805190915015614fff57808060200190516020811015614fae57600080fd5b50518290614ffd5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561441f578181015183820152602001614407565b505b505050565b6000806000615011615322565b6128838686615165565b60006114c583836040518060400160405280601781526020017f6d756c7469706c69636174696f6e206f766572666c6f770000000000000000008152506151c4565b606060006060856001600160a01b0316856040518082805190602001908083835b6020831061509d5780518252601f19909201916020918201910161507e565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146150ff576040519150601f19603f3d011682016040523d82523d6000602084013e615104565b606091505b5091509150816144cb5780511561511e5780518082602001fd5b60405162461bcd60e51b815260206004820181815286516024840152865187939192839260440191908501908083836000831561441f578181015183820152602001614407565b600061516f615322565b600080615184670de0b6b3a764000087613fdf565b9092509050600082600381111561519757fe5b146151b6575060408051602081019091526000815290925090506128b9565b6128b2818660000151613877565b60008315806151d1575082155b156151de575060006114c5565b838302838582816151eb57fe5b041483906110ba5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561441f578181015183820152602001614407565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061527b57805160ff19168380011785556152a8565b828001600101855582156152a8579182015b828111156152a857825182559160200191906001019061528d565b5061131392915061542f565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106152f55782800160ff198235161785556152a8565b828001600101855582156152a8579182015b828111156152a8578235825591602001919060010190615307565b6040518060200160405280600081525090565b604080516101208101909152806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040805161010081019091528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040805160e0810190915280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b604080516080810190915280600081526020016000815260200160008152602001600081525090565b61107c91905b80821115611313576000815560010161543556fe6d61726b6574206d6179206f6e6c7920626520696e697469616c697a6564206f6e6365696e697469616c2065786368616e67652072617465206d7573742062652067726561746572207468616e207a65726f2e6f6e6c79207468652061646d696e206d6179207365742074686520636f6d702d6c696b652064656c656761746573657474696e6720696e7465726573742072617465206d6f64656c206661696c6564626f72726f7742616c616e636553746f7265643a20626f72726f7742616c616e636553746f726564496e7465726e616c206661696c656452455041595f424f52524f575f4e45575f4143434f554e545f424f52524f575f42414c414e43455f43414c43554c4154494f4e5f4641494c45446f6e6c7920467573652061646d696e206d617920696e697469616c697a6520746865206d61726b6574ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef52455041595f424f52524f575f4e45575f544f54414c5f42414c414e43455f43414c43554c4154494f4e5f4641494c45444c49515549444154455f434f4d5054524f4c4c45525f43414c43554c4154455f414d4f554e545f5345495a455f4641494c454465786368616e67655261746553746f7265643a2065786368616e67655261746553746f726564496e7465726e616c206661696c65646f6e65206f662072656465656d546f6b656e73496e206f722072656465656d416d6f756e74496e206d757374206265207a65726fa265627a7a7231582099ef0a08860a8908fd9db92c0276bb8607d61521224847759514eda76111945d64736f6c63430005110032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x327 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8F840DDD GT PUSH2 0x1B8 JUMPI DUP1 PUSH4 0xB2A02FF1 GT PUSH2 0x104 JUMPI DUP1 PUSH4 0xDD62ED3E GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xF5E3C462 GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xF5E3C462 EQ PUSH2 0xB73 JUMPI DUP1 PUSH4 0xF8F9DA28 EQ PUSH2 0xBA9 JUMPI DUP1 PUSH4 0xFCA7820B EQ PUSH2 0xBB1 JUMPI DUP1 PUSH4 0xFE9C44AE EQ PUSH2 0xBCE JUMPI PUSH2 0x327 JUMP JUMPDEST DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0xB17 JUMPI DUP1 PUSH4 0xF2B3ABBD EQ PUSH2 0xB45 JUMPI DUP1 PUSH4 0xF3FDB15A EQ PUSH2 0xB6B JUMPI PUSH2 0x327 JUMP JUMPDEST DUP1 PUSH4 0xC5EBEAEC GT PUSH2 0xDE JUMPI DUP1 PUSH4 0xC5EBEAEC EQ PUSH2 0xACD JUMPI DUP1 PUSH4 0xDB006A75 EQ PUSH2 0xAEA JUMPI DUP1 PUSH4 0xDBFE7C19 EQ PUSH2 0xB07 JUMPI DUP1 PUSH4 0xDC028AB1 EQ PUSH2 0xB0F JUMPI PUSH2 0x327 JUMP JUMPDEST DUP1 PUSH4 0xB2A02FF1 EQ PUSH2 0xA43 JUMPI DUP1 PUSH4 0xBD6D894D EQ PUSH2 0xA79 JUMPI DUP1 PUSH4 0xC37F68E2 EQ PUSH2 0xA81 JUMPI PUSH2 0x327 JUMP JUMPDEST DUP1 PUSH4 0xA0B0D289 GT PUSH2 0x171 JUMPI DUP1 PUSH4 0xA9059CBB GT PUSH2 0x14B JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x9FF JUMPI DUP1 PUSH4 0xAA5AF0FD EQ PUSH2 0xA2B JUMPI DUP1 PUSH4 0xAC784DDC EQ PUSH2 0xA33 JUMPI DUP1 PUSH4 0xAE9D70B0 EQ PUSH2 0xA3B JUMPI PUSH2 0x327 JUMP JUMPDEST DUP1 PUSH4 0xA0B0D289 EQ PUSH2 0x88B JUMPI DUP1 PUSH4 0xA6AFED95 EQ PUSH2 0x9DA JUMPI DUP1 PUSH4 0xA7B820DF EQ PUSH2 0x9E2 JUMPI PUSH2 0x327 JUMP JUMPDEST DUP1 PUSH4 0x8F840DDD EQ PUSH2 0x7FE JUMPI DUP1 PUSH4 0x91DD36C6 EQ PUSH2 0x806 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x823 JUMPI DUP1 PUSH4 0x95DD9193 EQ PUSH2 0x82B JUMPI DUP1 PUSH4 0xA03DCE8D EQ PUSH2 0x851 JUMPI DUP1 PUSH4 0xA0712D68 EQ PUSH2 0x86E JUMPI PUSH2 0x327 JUMP JUMPDEST DUP1 PUSH4 0x3B1D21A2 GT PUSH2 0x277 JUMPI DUP1 PUSH4 0x6C540BAF GT PUSH2 0x230 JUMPI DUP1 PUSH4 0x73ACEE98 GT PUSH2 0x20A JUMPI DUP1 PUSH4 0x73ACEE98 EQ PUSH2 0x7AB JUMPI DUP1 PUSH4 0x7F1E06BE EQ PUSH2 0x7B3 JUMPI DUP1 PUSH4 0x852A12E3 EQ PUSH2 0x7D9 JUMPI DUP1 PUSH4 0x8D02D9A1 EQ PUSH2 0x7F6 JUMPI PUSH2 0x327 JUMP JUMPDEST DUP1 PUSH4 0x6C540BAF EQ PUSH2 0x775 JUMPI DUP1 PUSH4 0x6F307DC3 EQ PUSH2 0x77D JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x785 JUMPI PUSH2 0x327 JUMP JUMPDEST DUP1 PUSH4 0x3B1D21A2 EQ PUSH2 0x714 JUMPI DUP1 PUSH4 0x47BD3718 EQ PUSH2 0x71C JUMPI DUP1 PUSH4 0x5FE3B567 EQ PUSH2 0x724 JUMPI DUP1 PUSH4 0x601A0BF1 EQ PUSH2 0x748 JUMPI DUP1 PUSH4 0x61FEACFF EQ PUSH2 0x765 JUMPI DUP1 PUSH4 0x6752E702 EQ PUSH2 0x76D JUMPI PUSH2 0x327 JUMP JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0x2E4 JUMPI DUP1 PUSH4 0x2608F818 GT PUSH2 0x2BE JUMPI DUP1 PUSH4 0x2608F818 EQ PUSH2 0x5E6 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x612 JUMPI DUP1 PUSH4 0x34154D4C EQ PUSH2 0x630 JUMPI DUP1 PUSH4 0x3AF9E669 EQ PUSH2 0x6EE JUMPI PUSH2 0x327 JUMP JUMPDEST DUP1 PUSH4 0x18160DDD EQ PUSH2 0x5A0 JUMPI DUP1 PUSH4 0x182DF0F5 EQ PUSH2 0x5A8 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x5B0 JUMPI PUSH2 0x327 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x32C JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x3A9 JUMPI DUP1 PUSH4 0xE752702 EQ PUSH2 0x3E9 JUMPI DUP1 PUSH4 0xF8855E8 EQ PUSH2 0x418 JUMPI DUP1 PUSH4 0x173B9904 EQ PUSH2 0x572 JUMPI DUP1 PUSH4 0x17BFDFBC EQ PUSH2 0x57A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x334 PUSH2 0xBD6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x36E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x356 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x39B JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3D5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xC63 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x406 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xCD0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x570 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x42F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x469 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x47B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x49C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x4EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x500 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x521 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP POP PUSH1 0xFF DUP4 CALLDATALOAD AND SWAP4 POP POP POP PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xCE6 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x406 PUSH2 0xF94 JUMP JUMPDEST PUSH2 0x406 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x590 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xF9A JUMP JUMPDEST PUSH2 0x406 PUSH2 0x1016 JUMP JUMPDEST PUSH2 0x406 PUSH2 0x101C JUMP JUMPDEST PUSH2 0x3D5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x5C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x107F JUMP JUMPDEST PUSH2 0x406 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x5FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x10AD JUMP JUMPDEST PUSH2 0x61A PUSH2 0x10C3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x570 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x646 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x660 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x672 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x693 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x6B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x6C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x6E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x10CC JUMP JUMPDEST PUSH2 0x406 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x704 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1138 JUMP JUMPDEST PUSH2 0x406 PUSH2 0x11EE JUMP JUMPDEST PUSH2 0x406 PUSH2 0x11FD JUMP JUMPDEST PUSH2 0x72C PUSH2 0x1203 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x406 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x75E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1212 JUMP JUMPDEST PUSH2 0x406 PUSH2 0x1263 JUMP JUMPDEST PUSH2 0x406 PUSH2 0x1269 JUMP JUMPDEST PUSH2 0x406 PUSH2 0x1274 JUMP JUMPDEST PUSH2 0x72C PUSH2 0x127A JUMP JUMPDEST PUSH2 0x406 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x79B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1289 JUMP JUMPDEST PUSH2 0x406 PUSH2 0x12A4 JUMP JUMPDEST PUSH2 0x570 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1317 JUMP JUMPDEST PUSH2 0x406 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x13BC JUMP JUMPDEST PUSH2 0x406 PUSH2 0x13C7 JUMP JUMPDEST PUSH2 0x406 PUSH2 0x13CD JUMP JUMPDEST PUSH2 0x406 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x81C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x13D3 JUMP JUMPDEST PUSH2 0x334 PUSH2 0x1410 JUMP JUMPDEST PUSH2 0x406 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x841 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1468 JUMP JUMPDEST PUSH2 0x406 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x867 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x14CC JUMP JUMPDEST PUSH2 0x406 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x884 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1509 JUMP JUMPDEST PUSH2 0x570 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x8A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP3 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP1 SWAP3 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x8DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x8EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x90F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x961 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x973 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x994 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP POP DUP3 CALLDATALOAD SWAP4 POP POP POP PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1515 JUMP JUMPDEST PUSH2 0x406 PUSH2 0x162E JUMP JUMPDEST PUSH2 0x406 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x17F3 JUMP JUMPDEST PUSH2 0x3D5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xA15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1830 JUMP JUMPDEST PUSH2 0x406 PUSH2 0x185D JUMP JUMPDEST PUSH2 0x3D5 PUSH2 0x1863 JUMP JUMPDEST PUSH2 0x406 PUSH2 0x1868 JUMP JUMPDEST PUSH2 0x406 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xA59 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x1920 JUMP JUMPDEST PUSH2 0x406 PUSH2 0x1944 JUMP JUMPDEST PUSH2 0xAA7 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA97 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x19B8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP5 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP4 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 RETURN JUMPDEST PUSH2 0x406 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAE3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1A4D JUMP JUMPDEST PUSH2 0x406 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB00 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1A58 JUMP JUMPDEST PUSH2 0x406 PUSH2 0x1A63 JUMP JUMPDEST PUSH2 0x406 PUSH2 0x1A69 JUMP JUMPDEST PUSH2 0x406 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xB2D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x1A6F JUMP JUMPDEST PUSH2 0x406 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB5B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1A9A JUMP JUMPDEST PUSH2 0x72C PUSH2 0x1AD4 JUMP JUMPDEST PUSH2 0x406 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xB89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 SWAP1 SWAP2 ADD CALLDATALOAD AND PUSH2 0x1AE3 JUMP JUMPDEST PUSH2 0x406 PUSH2 0x1AFB JUMP JUMPDEST PUSH2 0x406 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xBC7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1B70 JUMP JUMPDEST PUSH2 0x3D5 PUSH2 0x1BAD JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 DUP5 DUP7 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xC5B JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xC30 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xC5B JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xC3E JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP7 SWAP1 SSTORE DUP2 MLOAD DUP7 DUP2 MSTORE SWAP2 MLOAD SWAP4 SWAP5 SWAP4 SWAP1 SWAP3 DUP5 SWAP3 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xCDC DUP4 PUSH2 0x1BB2 JUMP JUMPDEST POP SWAP2 POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST CALLER PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 EQ PUSH2 0xD38 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x555D PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xA SLOAD ISZERO DUP1 ISZERO PUSH2 0xD48 JUMPI POP PUSH1 0xB SLOAD ISZERO JUMPDEST PUSH2 0xD83 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x544A PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP7 SWAP1 SSTORE DUP6 PUSH2 0xDC4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x30 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x546D PUSH1 0x30 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xDCF DUP10 PUSH2 0x1C15 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0xE24 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x73657474696E6720636F6D7074726F6C6C6572206661696C6564000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xE2C PUSH2 0x1D3A JUMP JUMPDEST PUSH1 0xA SSTORE PUSH8 0xDE0B6B3A7640000 PUSH1 0xB SSTORE PUSH2 0xE44 DUP9 PUSH2 0x1D3E JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0xE83 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x54CA PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP6 MLOAD PUSH2 0xE96 SWAP1 PUSH1 0x1 SWAP1 PUSH1 0x20 DUP10 ADD SWAP1 PUSH2 0x523A JUMP JUMPDEST POP DUP5 MLOAD PUSH2 0xEAA SWAP1 PUSH1 0x2 SWAP1 PUSH1 0x20 DUP9 ADD SWAP1 PUSH2 0x523A JUMP JUMPDEST POP PUSH1 0x3 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF DUP7 AND OR SWAP1 SSTORE PUSH2 0xEC3 DUP4 PUSH2 0x2044 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0xF18 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x73657474696E67207265736572766520666163746F72206661696C6564000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xF21 DUP3 PUSH2 0x20FD JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0xF76 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x73657474696E672061646D696E20666565206661696C65640000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xB0 SHL NOT AND PUSH1 0x1 PUSH1 0xB0 SHL OR SWAP1 SSTORE POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xFA6 DUP2 PUSH2 0x2222 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFB0 PUSH2 0x162E JUMP JUMPDEST EQ PUSH2 0xFFB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x1858D8DC9D59481A5B9D195C995CDD0819985A5B1959 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1004 DUP4 PUSH2 0x1468 JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH2 0x1010 DUP2 PUSH2 0x22DE JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x10 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1029 PUSH2 0x233C JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x103C JUMPI INVALID JUMPDEST EQ PUSH2 0x1078 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x35 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x560A PUSH1 0x35 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP2 POP POP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x108B DUP2 PUSH2 0x2222 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1099 CALLER DUP8 DUP8 DUP8 PUSH2 0x23FC JUMP JUMPDEST EQ SWAP2 POP PUSH2 0x10A5 DUP2 PUSH2 0x22DE JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x10BA DUP5 DUP5 PUSH2 0x268E JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x10D4 PUSH2 0x26F3 JUMP JUMPDEST PUSH2 0x1118 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x31B0B63632B9103737BA1030B236B4B7 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1124 PUSH1 0x1 DUP6 DUP6 PUSH2 0x52B4 JUMP JUMPDEST POP PUSH2 0x1131 PUSH1 0x2 DUP4 DUP4 PUSH2 0x52B4 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1142 PUSH2 0x5322 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x1155 PUSH2 0x1944 JUMP JUMPDEST SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP SWAP1 DUP2 SWAP1 PUSH2 0x1181 SWAP1 DUP5 SWAP1 PUSH2 0x286C JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1194 JUMPI INVALID JUMPDEST EQ PUSH2 0x11E6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x62616C616E636520636F756C64206E6F742062652063616C63756C6174656400 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x11F8 PUSH2 0x28C0 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0xC SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x121E DUP2 PUSH2 0x2222 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1228 PUSH2 0x162E JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x124E JUMPI PUSH2 0x1246 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x123F JUMPI INVALID JUMPDEST PUSH1 0x3B PUSH2 0x290E JUMP JUMPDEST SWAP3 POP POP PUSH2 0x1007 JUMP JUMPDEST PUSH2 0x1257 DUP5 PUSH2 0x2974 JUMP JUMPDEST SWAP3 POP POP PUSH2 0x1010 DUP2 PUSH2 0x22DE JUMP JUMPDEST PUSH1 0xE SLOAD DUP2 JUMP JUMPDEST PUSH7 0x6379DA05B60000 DUP2 JUMP JUMPDEST PUSH1 0xA SLOAD DUP2 JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x12B0 DUP2 PUSH2 0x2222 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x12BA PUSH2 0x162E JUMP JUMPDEST EQ PUSH2 0x1305 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x1858D8DC9D59481A5B9D195C995CDD0819985A5B1959 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0xC SLOAD SWAP2 POP PUSH2 0x1313 DUP2 PUSH2 0x22DE JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0x131F PUSH2 0x26F3 JUMP JUMPDEST PUSH2 0x135A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x549D PUSH1 0x2D SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x17066A57 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x5C19A95C SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x13A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1131 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xCCA DUP3 PUSH2 0x2A40 JUMP JUMPDEST PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xD SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x13DF DUP2 PUSH2 0x2222 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x13E9 PUSH2 0x162E JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1407 JUMPI PUSH2 0x1246 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x1400 JUMPI INVALID JUMPDEST PUSH1 0x52 PUSH2 0x290E JUMP JUMPDEST PUSH2 0x1257 DUP5 PUSH2 0x20FD JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP4 AND DUP5 SWAP1 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xC5B JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xC30 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xC5B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1476 DUP5 PUSH2 0x2A80 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1489 JUMPI INVALID JUMPDEST EQ PUSH2 0x14C5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x37 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x54EC PUSH1 0x37 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x14D8 DUP2 PUSH2 0x2222 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14E2 PUSH2 0x162E JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1500 JUMPI PUSH2 0x1246 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x14F9 JUMPI INVALID JUMPDEST PUSH1 0x33 PUSH2 0x290E JUMP JUMPDEST PUSH2 0x1257 DUP5 PUSH2 0x2B34 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xCDC DUP4 PUSH2 0x2BB5 JUMP JUMPDEST PUSH1 0x0 PUSH8 0x2C68AF0BB140000 SWAP1 POP PUSH1 0x0 DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x313CE567 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 0x155D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1571 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1587 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH2 0x159B DUP9 DUP9 DUP5 DUP10 DUP10 DUP7 DUP11 DUP11 PUSH2 0xCE6 JUMP JUMPDEST PUSH1 0x14 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP2 DUP3 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x18160DDD PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP1 SWAP2 AND SWAP2 PUSH4 0x18160DDD SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x15F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x160B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1621 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1639 PUSH2 0x1D3A JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0xA SLOAD EQ ISZERO PUSH2 0x164F JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x107C JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1659 PUSH2 0x28C0 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x5 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 PUSH4 0x15F24053 DUP4 PUSH1 0xC SLOAD PUSH2 0x169E PUSH1 0xD SLOAD PUSH2 0x1699 PUSH1 0xE SLOAD PUSH1 0xF SLOAD PUSH2 0x2BF5 JUMP JUMPDEST PUSH2 0x2BF5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x16E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x16F4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x170A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH6 0x48C27395000 DUP2 GT ISZERO PUSH2 0x1769 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x626F72726F772072617465206973206162737572646C79206869676800000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1778 DUP6 PUSH1 0xA SLOAD PUSH2 0x2C2B JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x178B JUMPI INVALID JUMPDEST EQ PUSH2 0x17DD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x636F756C64206E6F742063616C63756C61746520626C6F636B2064656C746100 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x17E9 DUP6 DUP6 DUP6 DUP5 PUSH2 0x2C4E JUMP JUMPDEST SWAP6 POP POP POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x17FF DUP2 PUSH2 0x2222 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1809 PUSH2 0x162E JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1827 JUMPI PUSH2 0x1246 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x1820 JUMPI INVALID JUMPDEST PUSH1 0x37 PUSH2 0x290E JUMP JUMPDEST PUSH2 0x1257 DUP5 PUSH2 0x2E66 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x183C DUP2 PUSH2 0x2222 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x184A CALLER CALLER DUP8 DUP8 PUSH2 0x23FC JUMP JUMPDEST EQ SWAP2 POP PUSH2 0x1856 DUP2 PUSH2 0x22DE JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xB8168816 PUSH2 0x1884 PUSH2 0x28C0 JUMP JUMPDEST PUSH1 0xC SLOAD PUSH2 0x189B PUSH1 0xD SLOAD PUSH2 0x1699 PUSH1 0xE SLOAD PUSH1 0xF SLOAD PUSH2 0x2BF5 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x8 SLOAD PUSH1 0x9 SLOAD ADD ADD PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x18EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1903 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1919 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH2 0x192D DUP2 PUSH2 0x2222 JUMP JUMPDEST PUSH2 0x1939 CALLER DUP7 DUP7 DUP7 PUSH2 0x2F42 JUMP JUMPDEST SWAP2 POP PUSH2 0x10A5 DUP2 PUSH2 0x22DE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1950 DUP2 PUSH2 0x2222 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x195A PUSH2 0x162E JUMP JUMPDEST EQ PUSH2 0x19A5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x1858D8DC9D59481A5B9D195C995CDD0819985A5B1959 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x19AD PUSH2 0x101C JUMP JUMPDEST SWAP2 POP PUSH2 0x1313 DUP2 PUSH2 0x22DE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP2 SWAP1 DUP2 SWAP1 DUP2 SWAP1 DUP2 DUP1 DUP1 PUSH2 0x19E3 DUP10 PUSH2 0x2A80 JUMP JUMPDEST SWAP4 POP SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x19F5 JUMPI INVALID JUMPDEST EQ PUSH2 0x1A13 JUMPI PUSH1 0x9 JUMPDEST SWAP8 POP PUSH1 0x0 SWAP7 POP DUP7 SWAP6 POP DUP6 SWAP5 POP PUSH2 0x1A46 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x1A1B PUSH2 0x233C JUMP JUMPDEST SWAP3 POP SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1A2D JUMPI INVALID JUMPDEST EQ PUSH2 0x1A39 JUMPI PUSH1 0x9 PUSH2 0x19FD JUMP JUMPDEST POP PUSH1 0x0 SWAP7 POP SWAP2 SWAP5 POP SWAP3 POP SWAP1 POP JUMPDEST SWAP2 SWAP4 POP SWAP2 SWAP4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCCA DUP3 PUSH2 0x3327 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCCA DUP3 PUSH2 0x3365 JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xF SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1AA5 PUSH2 0x162E JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1ACB JUMPI PUSH2 0x1AC3 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x1ABC JUMPI INVALID JUMPDEST PUSH1 0x4B PUSH2 0x290E JUMP JUMPDEST SWAP2 POP POP PUSH2 0xCE1 JUMP JUMPDEST PUSH2 0x14C5 DUP4 PUSH2 0x1D3E JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1AF1 DUP6 DUP6 DUP6 PUSH2 0x339E JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x15F24053 PUSH2 0x1B17 PUSH2 0x28C0 JUMP JUMPDEST PUSH1 0xC SLOAD PUSH2 0x1B2E PUSH1 0xD SLOAD PUSH2 0x1699 PUSH1 0xE SLOAD PUSH1 0xF SLOAD PUSH2 0x2BF5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x18EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1B7C DUP2 PUSH2 0x2222 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B86 PUSH2 0x162E JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1BA4 JUMPI PUSH2 0x1246 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x1B9D JUMPI INVALID JUMPDEST PUSH1 0x59 PUSH2 0x290E JUMP JUMPDEST PUSH2 0x1257 DUP5 PUSH2 0x2044 JUMP JUMPDEST PUSH1 0x1 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1BC0 DUP2 PUSH2 0x2222 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1BCA PUSH2 0x162E JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1BF5 JUMPI PUSH2 0x1BE8 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x1BE1 JUMPI INVALID JUMPDEST PUSH1 0x41 PUSH2 0x290E JUMP JUMPDEST SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x1C06 SWAP1 POP JUMP JUMPDEST PUSH2 0x1C00 CALLER CALLER DUP8 PUSH2 0x348A JUMP JUMPDEST SWAP4 POP SWAP4 POP POP JUMPDEST PUSH2 0x1C0F DUP2 PUSH2 0x22DE JUMP JUMPDEST POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH3 0x3F1EE9 PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND SWAP4 DUP7 AND SWAP3 PUSH3 0x7E3DD2 SWAP3 DUP2 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1C5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1C6E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1C84 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x1CD7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6D61726B6572206D6574686F642072657475726E65642066616C736500000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP3 DUP5 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD PUSH32 0x7AC369DBD14FA5EA3F473ED67CC9D598964A77501540BA6751EB0B3DECF5870D SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x0 PUSH2 0x14C5 JUMP JUMPDEST NUMBER SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1D49 PUSH2 0x26F3 JUMP JUMPDEST PUSH2 0x1D59 JUMPI PUSH2 0x1AC3 PUSH1 0x1 PUSH1 0x4D PUSH2 0x290E JUMP JUMPDEST PUSH2 0x1D61 PUSH2 0x1D3A JUMP JUMPDEST PUSH1 0xA SLOAD EQ PUSH2 0x1D75 JUMPI PUSH2 0x1AC3 PUSH1 0xA PUSH1 0x4C PUSH2 0x290E JUMP JUMPDEST PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x2191F92A 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 0x1DC6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1DDA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1DF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x1E43 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6D61726B6572206D6574686F642072657475726E65642066616C736500000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP3 DUP5 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD PUSH32 0xEDFFC32E068C7C95DFD4BDFD5C4D939A084D6B11C4199EAC8436ED234D72F926 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0x1F75 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x6CC1140B PUSH1 0xE1 SHL OR DUP2 MSTORE SWAP2 MLOAD DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP4 DUP3 SWAP2 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x1F0A JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1EEB JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1F6C 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 0x1F71 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP POP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x742A137B PUSH1 0xE1 SHL OR DUP2 MSTORE SWAP2 MLOAD DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP4 DUP3 SWAP2 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x1FD1 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1FB2 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2033 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 0x2038 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP PUSH1 0x0 SWAP2 POP PUSH2 0x14C5 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x204E PUSH2 0x26F3 JUMP JUMPDEST PUSH2 0x2065 JUMPI PUSH2 0x205E PUSH1 0x1 PUSH1 0x5A PUSH2 0x290E JUMP JUMPDEST SWAP1 POP PUSH2 0xCE1 JUMP JUMPDEST PUSH2 0x206D PUSH2 0x1D3A JUMP JUMPDEST PUSH1 0xA SLOAD EQ PUSH2 0x2081 JUMPI PUSH2 0x205E PUSH1 0xA PUSH1 0x5B PUSH2 0x290E JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH2 0x20A1 PUSH2 0x2099 DUP5 PUSH1 0x7 SLOAD PUSH2 0x2BF5 JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH2 0x2BF5 JUMP JUMPDEST GT ISZERO PUSH2 0x20B3 JUMPI PUSH2 0x205E PUSH1 0x2 PUSH1 0x5C PUSH2 0x290E JUMP JUMPDEST PUSH1 0x9 DUP1 SLOAD SWAP1 DUP4 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP6 SWAP1 MSTORE DUP2 MLOAD PUSH32 0xAAA68312E2EA9D50E16AF5068410AB56E1A1FD06037B1A35664812C30F821460 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x0 PUSH2 0x14C5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2107 PUSH2 0x1D3A JUMP JUMPDEST PUSH1 0xA SLOAD EQ PUSH2 0x211B JUMPI PUSH2 0x205E PUSH1 0xA PUSH1 0x54 PUSH2 0x290E JUMP JUMPDEST PUSH1 0x0 NOT DUP3 EQ ISZERO PUSH2 0x212B JUMPI PUSH1 0x7 SLOAD SWAP2 POP JUMPDEST PUSH1 0x0 PUSH2 0x2135 PUSH2 0x37DC JUMP JUMPDEST SWAP1 POP PUSH8 0xDE0B6B3A7640000 PUSH2 0x2155 PUSH2 0x214F PUSH1 0x9 SLOAD DUP7 PUSH2 0x2BF5 JUMP JUMPDEST DUP4 PUSH2 0x2BF5 JUMP JUMPDEST GT ISZERO PUSH2 0x2167 JUMPI PUSH2 0x1AC3 PUSH1 0x2 PUSH1 0x55 PUSH2 0x290E JUMP JUMPDEST DUP3 PUSH1 0x7 SLOAD EQ PUSH2 0x21CD JUMPI PUSH2 0x2178 PUSH2 0x26F3 JUMP JUMPDEST PUSH2 0x2188 JUMPI PUSH2 0x1AC3 PUSH1 0x1 PUSH1 0x53 PUSH2 0x290E JUMP JUMPDEST PUSH1 0x7 DUP1 SLOAD SWAP1 DUP5 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP7 SWAP1 MSTORE DUP2 MLOAD PUSH32 0xCDD0B588250E1398549F79CFDB8217C186688822905D6715B0834EA1C865594A SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMPDEST DUP1 PUSH1 0x8 SLOAD EQ PUSH2 0x221B JUMPI PUSH1 0x8 DUP1 SLOAD SWAP1 DUP3 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP2 MLOAD PUSH32 0x92EEF861B6533B7D3417F39C2AD7B460EED4E88A32FA3604F30E718B7602E7DC SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMPDEST PUSH1 0x0 PUSH2 0x14C5 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xB0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x226D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xA PUSH1 0x24 DUP3 ADD MSTORE PUSH10 0x1C994B595B9D195C9959 PUSH1 0xB2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x22CE JUMPI PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xC90C20B1 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP3 PUSH4 0xC90C20B1 SWAP3 DUP3 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x22B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x22C9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xB0 SHL NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xB0 SHL NOT AND PUSH1 0x1 PUSH1 0xB0 SHL OR SWAP1 SSTORE DUP1 PUSH2 0x2339 JUMPI PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x319728A1 PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP3 PUSH4 0x632E5142 SWAP3 DUP3 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x13A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x10 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP1 PUSH2 0x2357 JUMPI POP POP PUSH1 0x6 SLOAD PUSH1 0x0 SWAP2 POP PUSH2 0x23F8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2361 PUSH2 0x28C0 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x236D PUSH2 0x5322 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x238F DUP5 PUSH1 0xC SLOAD PUSH2 0x238A PUSH1 0xD SLOAD PUSH2 0x1699 PUSH1 0xE SLOAD PUSH1 0xF SLOAD PUSH2 0x2BF5 JUMP JUMPDEST PUSH2 0x382B JUMP JUMPDEST SWAP4 POP SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x23A1 JUMPI INVALID JUMPDEST EQ PUSH2 0x23B6 JUMPI SWAP6 POP PUSH1 0x0 SWAP5 POP PUSH2 0x23F8 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x23C0 DUP4 DUP7 PUSH2 0x3877 JUMP JUMPDEST SWAP3 POP SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x23D2 JUMPI INVALID JUMPDEST EQ PUSH2 0x23E7 JUMPI SWAP6 POP PUSH1 0x0 SWAP5 POP PUSH2 0x23F8 SWAP4 POP POP POP POP JUMP JUMPDEST POP MLOAD PUSH1 0x0 SWAP6 POP SWAP4 POP PUSH2 0x23F8 SWAP3 POP POP POP JUMP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x17B9B84B PUSH1 0xE3 SHL DUP2 MSTORE ADDRESS SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x24 DUP6 ADD MSTORE DUP6 DUP2 AND PUSH1 0x44 DUP6 ADD MSTORE PUSH1 0x64 DUP5 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 SWAP3 SWAP1 SWAP3 AND SWAP2 PUSH4 0xBDCDC258 SWAP2 PUSH1 0x84 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2467 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x247B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2491 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x24B0 JUMPI PUSH2 0x24A8 PUSH1 0x3 PUSH1 0x5D DUP4 PUSH2 0x3927 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x11E6 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x24D6 JUMPI PUSH2 0x24A8 PUSH1 0x2 PUSH1 0x5E PUSH2 0x290E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND SWAP1 DUP8 AND EQ ISZERO PUSH2 0x24F5 JUMPI POP PUSH1 0x0 NOT PUSH2 0x251D JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP11 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x252D DUP6 DUP10 PUSH2 0x2C2B JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP PUSH1 0x0 DUP5 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2540 JUMPI INVALID JUMPDEST EQ PUSH2 0x255E JUMPI PUSH2 0x2551 PUSH1 0x9 PUSH1 0x5E PUSH2 0x290E JUMP JUMPDEST SWAP7 POP POP POP POP POP POP POP PUSH2 0x11E6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2581 SWAP1 DUP10 PUSH2 0x2C2B JUMP JUMPDEST SWAP1 SWAP5 POP SWAP2 POP PUSH1 0x0 DUP5 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2594 JUMPI INVALID JUMPDEST EQ PUSH2 0x25A5 JUMPI PUSH2 0x2551 PUSH1 0x9 PUSH1 0x5F PUSH2 0x290E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x25C8 SWAP1 DUP10 PUSH2 0x39B0 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP1 POP PUSH1 0x0 DUP5 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x25DB JUMPI INVALID JUMPDEST EQ PUSH2 0x25EC JUMPI PUSH2 0x2551 PUSH1 0x9 PUSH1 0x60 PUSH2 0x290E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP6 SWAP1 SSTORE SWAP2 DUP12 AND DUP2 MSTORE KECCAK256 DUP2 SWAP1 SSTORE PUSH1 0x0 NOT DUP6 EQ PUSH2 0x2644 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP16 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP4 SWAP1 SSTORE JUMPDEST DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5586 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP11 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x0 SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x269C DUP2 PUSH2 0x2222 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x26A6 PUSH2 0x162E JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x26D1 JUMPI PUSH2 0x26C4 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x26BD JUMPI INVALID JUMPDEST PUSH1 0x40 PUSH2 0x290E JUMP JUMPDEST SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x26E2 SWAP1 POP JUMP JUMPDEST PUSH2 0x26DC CALLER DUP8 DUP8 PUSH2 0x348A JUMP JUMPDEST SWAP4 POP SWAP4 POP POP JUMPDEST PUSH2 0x26EB DUP2 PUSH2 0x22DE JUMP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x3E14691 PUSH1 0xE6 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND SWAP3 DUP4 SWAP3 PUSH4 0xF851A440 SWAP3 DUP2 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2739 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x274D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2763 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ DUP1 ISZERO PUSH2 0x27DD JUMPI POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA755EC2 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 0x27B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x27C4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x27DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST DUP1 PUSH2 0x1078 JUMPI POP CALLER PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 EQ DUP1 ISZERO PUSH2 0x1078 JUMPI POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x2F1069BA 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 0x283A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x284E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2864 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x2879 PUSH2 0x5322 JUMP JUMPDEST PUSH2 0x2883 DUP7 DUP7 PUSH2 0x39D6 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2896 JUMPI INVALID JUMPDEST EQ PUSH2 0x28A7 JUMPI POP SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH2 0x28B9 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x28B2 DUP3 PUSH2 0x3A3E JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 DUP3 SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x283A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0x45B96FE442630264581B197E84BBADA861235052C5A1AADFFF9EA4E40A969AA0 DUP4 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x293D JUMPI INVALID JUMPDEST DUP4 PUSH1 0x63 DUP2 GT ISZERO PUSH2 0x2949 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 DUP3 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x14C5 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x297F PUSH2 0x26F3 JUMP JUMPDEST PUSH2 0x298F JUMPI PUSH2 0x1AC3 PUSH1 0x1 PUSH1 0x3C PUSH2 0x290E JUMP JUMPDEST PUSH2 0x2997 PUSH2 0x1D3A JUMP JUMPDEST PUSH1 0xA SLOAD EQ PUSH2 0x29AB JUMPI PUSH2 0x1AC3 PUSH1 0xA PUSH1 0x3E PUSH2 0x290E JUMP JUMPDEST DUP3 PUSH2 0x29B4 PUSH2 0x28C0 JUMP JUMPDEST LT ISZERO PUSH2 0x29C6 JUMPI PUSH2 0x1AC3 PUSH1 0xE PUSH1 0x3D PUSH2 0x290E JUMP JUMPDEST PUSH1 0xD SLOAD DUP4 GT ISZERO PUSH2 0x29DC JUMPI PUSH2 0x1AC3 PUSH1 0x2 PUSH1 0x3F PUSH2 0x290E JUMP JUMPDEST PUSH2 0x29E8 PUSH1 0xD SLOAD DUP5 PUSH2 0x3A4D JUMP JUMPDEST PUSH1 0xD DUP2 SWAP1 SSTORE SWAP1 POP PUSH2 0x29F9 CALLER DUP5 PUSH2 0x3A87 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP6 SWAP1 MSTORE DUP1 DUP3 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD PUSH32 0x3BAD0C59CF2F06E7314077049F48A93578CD16F5EF92329F1DAB1420A99C177E SWAP2 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 PUSH1 0x0 PUSH2 0x14C5 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2A4C DUP2 PUSH2 0x2222 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2A56 PUSH2 0x162E JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x2A74 JUMPI PUSH2 0x1246 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x2A6D JUMPI INVALID JUMPDEST PUSH1 0x2A PUSH2 0x290E JUMP JUMPDEST PUSH2 0x1257 CALLER PUSH1 0x0 DUP7 PUSH2 0x3B0C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 PUSH2 0x2AB7 JUMPI POP PUSH1 0x0 SWAP5 POP DUP5 SWAP4 POP PUSH2 0x2B2F SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x2AC7 DUP2 PUSH1 0x0 ADD SLOAD PUSH1 0xB SLOAD PUSH2 0x3FDF JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP PUSH1 0x0 DUP5 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2ADA JUMPI INVALID JUMPDEST EQ PUSH2 0x2AEF JUMPI POP SWAP2 SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x2B2F SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2AFD DUP4 DUP3 PUSH1 0x1 ADD SLOAD PUSH2 0x401E JUMP JUMPDEST SWAP1 SWAP5 POP SWAP2 POP PUSH1 0x0 DUP5 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2B10 JUMPI INVALID JUMPDEST EQ PUSH2 0x2B25 JUMPI POP SWAP2 SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x2B2F SWAP2 POP POP JUMP JUMPDEST POP PUSH1 0x0 SWAP5 POP SWAP3 POP POP POP JUMPDEST SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2B3F PUSH2 0x1D3A JUMP JUMPDEST PUSH1 0xA SLOAD EQ PUSH2 0x2B53 JUMPI PUSH2 0x1AC3 PUSH1 0xA PUSH1 0x35 PUSH2 0x290E JUMP JUMPDEST DUP3 PUSH2 0x2B5C PUSH2 0x28C0 JUMP JUMPDEST LT ISZERO PUSH2 0x2B6E JUMPI PUSH2 0x1AC3 PUSH1 0xE PUSH1 0x34 PUSH2 0x290E JUMP JUMPDEST PUSH1 0xF SLOAD DUP4 GT ISZERO PUSH2 0x2B84 JUMPI PUSH2 0x1AC3 PUSH1 0x2 PUSH1 0x36 PUSH2 0x290E JUMP JUMPDEST PUSH2 0x2B90 PUSH1 0xF SLOAD DUP5 PUSH2 0x3A4D JUMP JUMPDEST PUSH1 0xF DUP2 SWAP1 SSTORE SWAP1 POP PUSH2 0x221B PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 DUP5 PUSH2 0x3A87 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x2BC3 DUP2 PUSH2 0x2222 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2BCD PUSH2 0x162E JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x2BEB JUMPI PUSH2 0x1BE8 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x2BE4 JUMPI INVALID JUMPDEST PUSH1 0x20 PUSH2 0x290E JUMP JUMPDEST PUSH2 0x1C00 CALLER DUP7 PUSH2 0x4049 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14C5 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x11 DUP2 MSTORE PUSH1 0x20 ADD PUSH17 0x6164646974696F6E206F766572666C6F77 PUSH1 0x78 SHL DUP2 MSTORE POP PUSH2 0x43C8 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 DUP4 GT PUSH2 0x2C42 JUMPI POP PUSH1 0x0 SWAP1 POP DUP2 DUP4 SUB PUSH2 0x28B9 JUMP JUMPDEST POP PUSH1 0x3 SWAP1 POP PUSH1 0x0 PUSH2 0x28B9 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2C58 PUSH2 0x5322 JUMP JUMPDEST PUSH2 0x2C70 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP7 DUP2 MSTORE POP DUP5 PUSH2 0x445A JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2C80 DUP3 PUSH1 0xC SLOAD PUSH2 0x4484 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2C90 DUP3 PUSH1 0xC SLOAD PUSH2 0x2BF5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2CB1 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x9 SLOAD DUP2 MSTORE POP DUP5 PUSH1 0xD SLOAD PUSH2 0x44A3 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2CD2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x8 SLOAD DUP2 MSTORE POP DUP6 PUSH1 0xF SLOAD PUSH2 0x44A3 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2CF3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x7 SLOAD DUP2 MSTORE POP DUP7 PUSH1 0xE SLOAD PUSH2 0x44A3 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2D06 DUP8 PUSH1 0xB SLOAD PUSH1 0xB SLOAD PUSH2 0x44A3 JUMP JUMPDEST PUSH1 0xA DUP14 SWAP1 SSTORE PUSH1 0xB DUP2 SWAP1 SSTORE PUSH1 0xC DUP7 SWAP1 SSTORE PUSH1 0xD DUP6 SWAP1 SSTORE PUSH1 0xF DUP5 SWAP1 SSTORE PUSH1 0xE DUP4 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP14 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP10 SWAP1 MSTORE DUP1 DUP3 ADD DUP4 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP9 SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH32 0x4DEC04E750CA11537CABCD8A9EAB06494DE08DA3735BC8871CD41250E190BC04 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG1 PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x24 DUP1 DUP3 ADD DUP15 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x5EFD0233 PUSH1 0xE1 SHL OR DUP2 MSTORE SWAP2 MLOAD DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP5 AND SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x2DE3 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x2DC4 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2E45 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 0x2E4A JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP PUSH1 0x0 SWAP2 POP PUSH2 0x2E56 SWAP1 POP JUMP JUMPDEST SWAP13 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2E71 PUSH2 0x1D3A JUMP JUMPDEST PUSH1 0xA SLOAD EQ PUSH2 0x2E85 JUMPI PUSH2 0x1AC3 PUSH1 0xA PUSH1 0x39 PUSH2 0x290E JUMP JUMPDEST DUP3 PUSH2 0x2E8E PUSH2 0x28C0 JUMP JUMPDEST LT ISZERO PUSH2 0x2EA0 JUMPI PUSH2 0x1AC3 PUSH1 0xE PUSH1 0x38 PUSH2 0x290E JUMP JUMPDEST PUSH1 0xE SLOAD DUP4 GT ISZERO PUSH2 0x2EB6 JUMPI PUSH2 0x1AC3 PUSH1 0x2 PUSH1 0x3A PUSH2 0x290E JUMP JUMPDEST PUSH2 0x2EC2 PUSH1 0xE SLOAD DUP5 PUSH2 0x3A4D JUMP JUMPDEST PUSH1 0xE DUP2 SWAP1 SSTORE PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x3E14691 PUSH1 0xE6 SHL DUP2 MSTORE SWAP1 MLOAD SWAP4 SWAP5 POP PUSH2 0x221B SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP3 PUSH4 0xF851A440 SWAP3 DUP3 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2F10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2F24 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2F3A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP5 PUSH2 0x3A87 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xD02F7351 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x24 DUP6 ADD MSTORE DUP7 DUP2 AND PUSH1 0x44 DUP6 ADD MSTORE DUP6 DUP2 AND PUSH1 0x64 DUP6 ADD MSTORE PUSH1 0x84 DUP5 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 SWAP3 SWAP1 SWAP3 AND SWAP2 PUSH4 0xD02F7351 SWAP2 PUSH1 0xA4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2FB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2FC9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2FDF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x2FF6 JUMPI PUSH2 0x24A8 PUSH1 0x3 PUSH1 0x1D DUP4 PUSH2 0x3927 JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x301C JUMPI PUSH2 0x24A8 PUSH1 0x6 PUSH1 0x1E PUSH2 0x290E JUMP JUMPDEST PUSH2 0x3024 PUSH2 0x5335 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x3047 SWAP1 DUP6 PUSH2 0x2C2B JUMP JUMPDEST PUSH1 0x20 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x305B JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3066 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x307A JUMPI INVALID JUMPDEST EQ PUSH2 0x30A4 JUMPI PUSH2 0x309B PUSH1 0x9 PUSH1 0x1C DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3096 JUMPI INVALID JUMPDEST PUSH2 0x3927 JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x11E6 JUMP JUMPDEST PUSH2 0x30C3 DUP5 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH7 0x6379DA05B60000 DUP2 MSTORE POP PUSH2 0x44D4 JUMP JUMPDEST PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x30D5 SWAP1 DUP6 SWAP1 PUSH2 0x3A4D JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x30E2 PUSH2 0x233C JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x30F6 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3101 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3115 JUMPI INVALID JUMPDEST EQ PUSH2 0x3167 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x65786368616E67652072617465206D617468206572726F720000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x3187 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP4 PUSH1 0xC0 ADD MLOAD DUP2 MSTORE POP DUP3 PUSH1 0x80 ADD MLOAD PUSH2 0x4484 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xD SLOAD PUSH2 0x319A SWAP2 PUSH2 0x2BF5 JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD MSTORE PUSH1 0x10 SLOAD PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x31B1 SWAP2 SWAP1 PUSH2 0x3A4D JUMP JUMPDEST PUSH2 0x100 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x31DF SWAP2 SWAP1 PUSH2 0x39B0 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x31F3 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x31FE JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3212 JUMPI INVALID JUMPDEST EQ PUSH2 0x322E JUMPI PUSH2 0x309B PUSH1 0x9 PUSH1 0x1B DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3096 JUMPI INVALID JUMPDEST PUSH1 0xE0 DUP2 ADD MLOAD PUSH1 0xD SSTORE PUSH2 0x100 DUP2 ADD MLOAD PUSH1 0x10 SSTORE PUSH1 0x20 DUP1 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x11 DUP6 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 DUP7 ADD MLOAD SWAP3 DUP12 AND DUP1 DUP3 MSTORE SWAP1 DUP5 SWAP1 KECCAK256 SWAP3 SWAP1 SWAP3 SSTORE PUSH1 0x60 DUP6 ADD MLOAD DUP4 MLOAD SWAP1 DUP2 MSTORE SWAP3 MLOAD SWAP2 SWAP4 SWAP1 SWAP3 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5586 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD ADDRESS SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5586 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0xE0 DUP3 ADD MLOAD PUSH1 0x40 DUP1 MLOAD ADDRESS DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP3 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE MLOAD PUSH32 0xA91E67C5EA634CD43A12C5A482724B03DE01E85CA68702A53D0C2F45CB7C1DC5 SWAP2 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 PUSH1 0x0 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3333 DUP2 PUSH2 0x2222 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x333D PUSH2 0x162E JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x335B JUMPI PUSH2 0x1246 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x3354 JUMPI INVALID JUMPDEST PUSH1 0xA PUSH2 0x290E JUMP JUMPDEST PUSH2 0x1257 CALLER DUP6 PUSH2 0x44FC JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3371 DUP2 PUSH2 0x2222 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x337B PUSH2 0x162E JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x3392 JUMPI PUSH2 0x1246 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x2A6D JUMPI INVALID JUMPDEST PUSH2 0x1257 CALLER DUP6 PUSH1 0x0 PUSH2 0x3B0C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x33AC DUP2 PUSH2 0x2222 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x33B6 PUSH2 0x162E JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x33E1 JUMPI PUSH2 0x33D4 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x33CD JUMPI INVALID JUMPDEST PUSH1 0x11 PUSH2 0x290E JUMP JUMPDEST SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x3478 SWAP1 POP JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA6AFED95 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x341C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3430 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3446 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x3466 JUMPI PUSH2 0x33D4 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x345F JUMPI INVALID JUMPDEST PUSH1 0x12 PUSH2 0x290E JUMP JUMPDEST PUSH2 0x3472 CALLER DUP9 DUP9 DUP9 PUSH2 0x4846 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP JUMPDEST PUSH2 0x3481 DUP2 PUSH2 0x22DE JUMP JUMPDEST POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x12004531 PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x24 DUP6 ADD MSTORE DUP6 DUP2 AND PUSH1 0x44 DUP6 ADD MSTORE PUSH1 0x64 DUP5 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 DUP5 SWAP4 AND SWAP2 PUSH4 0x24008A62 SWAP2 PUSH1 0x84 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x34F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3509 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x351F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x3543 JUMPI PUSH2 0x3536 PUSH1 0x3 PUSH1 0x43 DUP4 PUSH2 0x3927 JUMP JUMPDEST SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH2 0x37D4 SWAP1 POP JUMP JUMPDEST PUSH2 0x354B PUSH2 0x1D3A JUMP JUMPDEST PUSH1 0xA SLOAD EQ PUSH2 0x355F JUMPI PUSH2 0x3536 PUSH1 0xA PUSH1 0x44 PUSH2 0x290E JUMP JUMPDEST PUSH2 0x3567 PUSH2 0x5382 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x3591 DUP7 PUSH2 0x2A80 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x35A8 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x35B3 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x35CA JUMPI INVALID JUMPDEST EQ PUSH2 0x35F4 JUMPI PUSH2 0x35E6 PUSH1 0x9 PUSH1 0x42 DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3096 JUMPI INVALID JUMPDEST SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x37D4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 NOT DUP6 EQ ISZERO PUSH2 0x360D JUMPI PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x3615 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD DUP6 SWAP1 MSTORE JUMPDEST PUSH2 0x3623 DUP8 DUP3 PUSH1 0x40 ADD MLOAD PUSH2 0x4D3E JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x3638 SWAP2 PUSH2 0x2C2B JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x364F JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x365A JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3671 JUMPI INVALID JUMPDEST EQ PUSH2 0x36AD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5523 PUSH1 0x3A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x36BD PUSH1 0xC SLOAD DUP3 PUSH1 0xE0 ADD MLOAD PUSH2 0x2C2B JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x36D4 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x36DF JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x36F6 JUMPI INVALID JUMPDEST EQ PUSH2 0x3732 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x55A6 PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xA0 DUP1 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP11 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 DUP6 SSTORE PUSH1 0xB SLOAD PUSH1 0x1 SWAP1 SWAP6 ADD SWAP5 SWAP1 SWAP5 SSTORE PUSH1 0xC0 DUP8 ADD MLOAD PUSH1 0xC DUP2 SWAP1 SSTORE PUSH1 0xE0 DUP9 ADD MLOAD SWAP6 MLOAD DUP3 MLOAD SWAP5 DUP16 AND DUP6 MSTORE SWAP5 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP2 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x60 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x80 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 MLOAD PUSH32 0x1A2A22CB034D26D1854BDC6666A5B91FE25EFBBB5DCAD3B0355478D6F5C362A1 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0xE0 ADD MLOAD PUSH1 0x0 SWAP4 POP SWAP2 POP POP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xDD86FEA1 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 0x18EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x383B DUP8 DUP8 PUSH2 0x39B0 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x384E JUMPI INVALID JUMPDEST EQ PUSH2 0x385F JUMPI POP SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH2 0x37D4 JUMP JUMPDEST PUSH2 0x3869 DUP2 DUP7 PUSH2 0x2C2B JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3881 PUSH2 0x5322 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3896 DUP7 PUSH8 0xDE0B6B3A7640000 PUSH2 0x3FDF JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x38A9 JUMPI INVALID JUMPDEST EQ PUSH2 0x38C8 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x28B9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x38D5 DUP4 DUP9 PUSH2 0x401E JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x38E8 JUMPI INVALID JUMPDEST EQ PUSH2 0x390A JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 SWAP5 POP SWAP3 POP PUSH2 0x28B9 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP9 SWAP1 SWAP8 POP SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x45B96FE442630264581B197E84BBADA861235052C5A1AADFFF9EA4E40A969AA0 DUP5 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x3956 JUMPI INVALID JUMPDEST DUP5 PUSH1 0x63 DUP2 GT ISZERO PUSH2 0x3962 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 DUP2 ADD DUP6 SWAP1 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 PUSH1 0x3 DUP5 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x398F JUMPI INVALID JUMPDEST EQ PUSH2 0x39A5 JUMPI DUP4 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x39A0 JUMPI INVALID JUMPDEST PUSH2 0x11E6 JUMP JUMPDEST POP PUSH2 0x3E8 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 DUP4 ADD DUP5 DUP2 LT PUSH2 0x39C8 JUMPI PUSH1 0x0 SWAP3 POP SWAP1 POP PUSH2 0x28B9 JUMP JUMPDEST POP PUSH1 0x2 SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH2 0x28B9 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x39E0 PUSH2 0x5322 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x39F1 DUP7 PUSH1 0x0 ADD MLOAD DUP7 PUSH2 0x3FDF JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3A04 JUMPI INVALID JUMPDEST EQ PUSH2 0x3A23 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x28B9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST MLOAD PUSH8 0xDE0B6B3A7640000 SWAP1 DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14C5 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x15 DUP2 MSTORE PUSH1 0x20 ADD PUSH21 0x7375627472616374696F6E20756E646572666C6F77 PUSH1 0x58 SHL DUP2 MSTORE POP PUSH2 0x4F1B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xA9059CBB PUSH1 0xE0 SHL OR SWAP1 MSTORE DUP3 MLOAD DUP1 DUP5 ADD SWAP1 SWAP4 MSTORE PUSH1 0x19 DUP4 MSTORE PUSH32 0x544F4B454E5F5452414E534645525F4F55545F4641494C454400000000000000 SWAP1 DUP4 ADD MSTORE PUSH2 0x3B08 SWAP2 PUSH2 0x4F75 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x3B19 JUMPI POP DUP2 ISZERO JUMPDEST PUSH2 0x3B54 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x563F PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x3B5C PUSH2 0x53C8 JUMP JUMPDEST PUSH2 0x3B64 PUSH2 0x233C JUMP JUMPDEST PUSH1 0x40 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3B7B JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3B86 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3B9D JUMPI INVALID JUMPDEST EQ PUSH2 0x3BC1 JUMPI PUSH2 0x3BB9 PUSH1 0x9 PUSH1 0x2E DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3096 JUMPI INVALID JUMPDEST SWAP2 POP POP PUSH2 0x14C5 JUMP JUMPDEST DUP4 ISZERO PUSH2 0x3C42 JUMPI PUSH1 0x60 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD DUP3 MSTORE SWAP1 DUP3 ADD MLOAD DUP2 MSTORE PUSH2 0x3BE8 SWAP1 DUP6 PUSH2 0x286C JUMP JUMPDEST PUSH1 0x80 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3BFF JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3C0A JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3C21 JUMPI INVALID JUMPDEST EQ PUSH2 0x3C3D JUMPI PUSH2 0x3BB9 PUSH1 0x9 PUSH1 0x2C DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3096 JUMPI INVALID JUMPDEST PUSH2 0x3CBB JUMP JUMPDEST PUSH2 0x3C5E DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH1 0x40 ADD MLOAD DUP2 MSTORE POP PUSH2 0x5004 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3C75 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3C80 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3C97 JUMPI INVALID JUMPDEST EQ PUSH2 0x3CB3 JUMPI PUSH2 0x3BB9 PUSH1 0x9 PUSH1 0x2D DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3096 JUMPI INVALID JUMPDEST PUSH1 0x80 DUP2 ADD DUP4 SWAP1 MSTORE JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xEABE7D91 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS SWAP5 DUP2 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 DUP2 AND PUSH1 0x24 DUP7 ADD MSTORE PUSH1 0x44 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE MLOAD PUSH1 0x0 SWAP4 SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0xEABE7D91 SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3D22 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3D36 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3D4C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x3D6C JUMPI PUSH2 0x3D63 PUSH1 0x3 PUSH1 0x2B DUP4 PUSH2 0x3927 JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x14C5 JUMP JUMPDEST PUSH2 0x3D74 PUSH2 0x1D3A JUMP JUMPDEST PUSH1 0xA SLOAD EQ PUSH2 0x3D88 JUMPI PUSH2 0x3D63 PUSH1 0xA PUSH1 0x2F PUSH2 0x290E JUMP JUMPDEST PUSH2 0x3D98 PUSH1 0x10 SLOAD DUP4 PUSH1 0x60 ADD MLOAD PUSH2 0x2C2B JUMP JUMPDEST PUSH1 0xA0 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP5 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3DAF JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3DBA JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP3 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3DD1 JUMPI INVALID JUMPDEST EQ PUSH2 0x3DED JUMPI PUSH2 0x3D63 PUSH1 0x9 PUSH1 0x31 DUP5 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3096 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 DUP4 ADD MLOAD PUSH2 0x3E15 SWAP2 SWAP1 PUSH2 0x2C2B JUMP JUMPDEST PUSH1 0xC0 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP5 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3E2C JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3E37 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP3 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3E4E JUMPI INVALID JUMPDEST EQ PUSH2 0x3E6A JUMPI PUSH2 0x3D63 PUSH1 0x9 PUSH1 0x30 DUP5 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3096 JUMPI INVALID JUMPDEST DUP2 PUSH1 0x80 ADD MLOAD PUSH2 0x3E77 PUSH2 0x28C0 JUMP JUMPDEST LT ISZERO PUSH2 0x3E89 JUMPI PUSH2 0x3D63 PUSH1 0xE PUSH1 0x32 PUSH2 0x290E JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MLOAD PUSH1 0x10 SSTORE PUSH1 0xC0 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x3EBF SWAP1 DUP8 SWAP1 PUSH2 0x3A87 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MLOAD PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD ADDRESS SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5586 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 PUSH1 0x80 DUP3 ADD MLOAD PUSH1 0x60 DUP1 DUP5 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP4 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE MLOAD PUSH32 0xE5B754FB1ABB7F01B499791D0B820AE3B6AF3424AC1C59768EDB53F4EC31A929 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x4 DUP1 SLOAD PUSH1 0x80 DUP5 ADD MLOAD PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x51DFF989 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS SWAP6 DUP2 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND PUSH1 0x24 DUP8 ADD MSTORE PUSH1 0x44 DUP7 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x64 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE MLOAD SWAP2 AND SWAP2 PUSH4 0x51DFF989 SWAP2 PUSH1 0x84 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3FB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3FC8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x0 SWAP3 POP PUSH2 0x3FD5 SWAP2 POP POP JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH2 0x3FF2 JUMPI POP PUSH1 0x0 SWAP1 POP DUP1 PUSH2 0x28B9 JUMP JUMPDEST DUP4 DUP4 MUL DUP4 DUP6 DUP3 DUP2 PUSH2 0x3FFF JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x4013 JUMPI POP PUSH1 0x2 SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH2 0x28B9 JUMP JUMPDEST PUSH1 0x0 SWAP3 POP SWAP1 POP PUSH2 0x28B9 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH2 0x4032 JUMPI POP PUSH1 0x1 SWAP1 POP PUSH1 0x0 PUSH2 0x28B9 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x403D JUMPI INVALID JUMPDEST DIV SWAP2 POP SWAP2 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x4EF4C3E1 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x24 DUP6 ADD MSTORE PUSH1 0x44 DUP5 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 DUP5 SWAP4 AND SWAP2 PUSH4 0x4EF4C3E1 SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x40AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x40C0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x40D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x40FA JUMPI PUSH2 0x40ED PUSH1 0x3 PUSH1 0x21 DUP4 PUSH2 0x3927 JUMP JUMPDEST SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH2 0x28B9 SWAP1 POP JUMP JUMPDEST PUSH2 0x4102 PUSH2 0x1D3A JUMP JUMPDEST PUSH1 0xA SLOAD EQ PUSH2 0x4116 JUMPI PUSH2 0x40ED PUSH1 0xA PUSH1 0x24 PUSH2 0x290E JUMP JUMPDEST PUSH2 0x411E PUSH2 0x53C8 JUMP JUMPDEST PUSH2 0x4126 PUSH2 0x233C JUMP JUMPDEST PUSH1 0x40 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x413D JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4148 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x415F JUMPI INVALID JUMPDEST EQ PUSH2 0x4189 JUMPI PUSH2 0x417B PUSH1 0x9 PUSH1 0x23 DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3096 JUMPI INVALID JUMPDEST SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x28B9 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x4193 DUP7 DUP7 PUSH2 0x4D3E JUMP JUMPDEST PUSH1 0xC0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD DUP3 MSTORE SWAP1 DUP4 ADD MLOAD DUP2 MSTORE PUSH2 0x41B4 SWAP2 SWAP1 PUSH2 0x5004 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x41CB JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x41D6 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x41ED JUMPI INVALID JUMPDEST EQ PUSH2 0x423F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D494E545F45584348414E47455F43414C43554C4154494F4E5F4641494C4544 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x424F PUSH1 0x10 SLOAD DUP3 PUSH1 0x60 ADD MLOAD PUSH2 0x2BF5 JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x427C SWAP2 SWAP1 PUSH2 0x2BF5 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MLOAD PUSH1 0x10 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0xC0 DUP5 ADD MLOAD PUSH1 0x60 DUP1 DUP7 ADD MLOAD DUP4 MLOAD SWAP5 DUP6 MSTORE SWAP5 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE MLOAD PUSH32 0x4C209B5FC8AD50758F13E2E1088BA56A560DFF690A1C6FEF26394F4C03821C4F SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 ADDRESS SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5586 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 PUSH1 0x4 DUP1 SLOAD PUSH1 0xC0 DUP4 ADD MLOAD PUSH1 0x60 DUP5 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x41C728B9 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS SWAP6 DUP2 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND PUSH1 0x24 DUP8 ADD MSTORE PUSH1 0x44 DUP7 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x64 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE MLOAD SWAP2 AND SWAP2 PUSH4 0x41C728B9 SWAP2 PUSH1 0x84 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4395 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x43A9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x0 SWAP3 POP PUSH2 0x43B6 SWAP2 POP POP JUMP JUMPDEST DUP2 PUSH1 0xC0 ADD MLOAD SWAP4 POP SWAP4 POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 ADD DUP3 DUP6 DUP3 LT ISZERO PUSH2 0x10BA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x441F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4407 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x444C JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x4462 PUSH2 0x5322 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x447B DUP6 PUSH1 0x0 ADD MLOAD DUP6 PUSH2 0x501B JUMP JUMPDEST SWAP1 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x448E PUSH2 0x5322 JUMP JUMPDEST PUSH2 0x4498 DUP5 DUP5 PUSH2 0x445A JUMP JUMPDEST SWAP1 POP PUSH2 0x11E6 DUP2 PUSH2 0x3A3E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x44AD PUSH2 0x5322 JUMP JUMPDEST PUSH2 0x44B7 DUP6 DUP6 PUSH2 0x445A JUMP JUMPDEST SWAP1 POP PUSH2 0x44CB PUSH2 0x44C5 DUP3 PUSH2 0x3A3E JUMP JUMPDEST DUP5 PUSH2 0x2BF5 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xDE0B6B3A7640000 PUSH2 0x44ED DUP5 DUP5 PUSH1 0x0 ADD MLOAD PUSH2 0x501B JUMP JUMPDEST DUP2 PUSH2 0x44F4 JUMPI INVALID JUMPDEST DIV SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x368F5153 PUSH1 0xE2 SHL DUP2 MSTORE ADDRESS SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x24 DUP6 ADD MSTORE PUSH1 0x44 DUP5 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 SWAP3 SWAP1 SWAP3 AND SWAP2 PUSH4 0xDA3D454C SWAP2 PUSH1 0x64 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x455F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4573 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4589 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x45A8 JUMPI PUSH2 0x45A0 PUSH1 0x3 PUSH1 0x10 DUP4 PUSH2 0x3927 JUMP JUMPDEST SWAP2 POP POP PUSH2 0xCCA JUMP JUMPDEST PUSH2 0x45B0 PUSH2 0x1D3A JUMP JUMPDEST PUSH1 0xA SLOAD EQ PUSH2 0x45C4 JUMPI PUSH2 0x45A0 PUSH1 0xA PUSH1 0xC PUSH2 0x290E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x45CE PUSH2 0x28C0 JUMP JUMPDEST SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x45ED JUMPI PUSH2 0x45E4 PUSH1 0xE PUSH1 0xB PUSH2 0x290E JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0xCCA JUMP JUMPDEST PUSH2 0x45F5 PUSH2 0x5406 JUMP JUMPDEST PUSH2 0x45FE DUP7 PUSH2 0x2A80 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4612 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x461D JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4631 JUMPI INVALID JUMPDEST EQ PUSH2 0x4656 JUMPI PUSH2 0x464C PUSH1 0x9 DUP1 DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3096 JUMPI INVALID JUMPDEST SWAP4 POP POP POP POP PUSH2 0xCCA JUMP JUMPDEST PUSH2 0x4664 DUP2 PUSH1 0x20 ADD MLOAD DUP7 PUSH2 0x39B0 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4678 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4683 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4697 JUMPI INVALID JUMPDEST EQ PUSH2 0x46B3 JUMPI PUSH2 0x464C PUSH1 0x9 PUSH1 0xE DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3096 JUMPI INVALID JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 DUP5 ADD MLOAD DUP2 MLOAD PUSH4 0x1DE6C8A5 PUSH1 0xE2 SHL DUP2 MSTORE ADDRESS SWAP5 DUP2 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x24 DUP5 ADD MSTORE MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 PUSH4 0x779B2294 SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x470A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x471E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4734 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 POP DUP3 ISZERO PUSH2 0x474B JUMPI PUSH2 0x464C PUSH1 0x3 PUSH1 0x10 DUP6 PUSH2 0x3927 JUMP JUMPDEST PUSH2 0x4757 PUSH1 0xC SLOAD DUP7 PUSH2 0x39B0 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x476B JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4776 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x478A JUMPI INVALID JUMPDEST EQ PUSH2 0x47A6 JUMPI PUSH2 0x464C PUSH1 0x9 PUSH1 0xD DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3096 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE SWAP2 SWAP1 SWAP2 KECCAK256 SWAP1 DUP2 SSTORE PUSH1 0xB SLOAD PUSH1 0x1 SWAP1 SWAP2 ADD SSTORE PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0xC SSTORE PUSH2 0x47E2 DUP7 DUP7 PUSH2 0x3A87 JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 ADD MLOAD PUSH1 0x60 DUP1 DUP5 ADD MLOAD DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP11 SWAP1 MSTORE DUP1 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP1 DUP3 ADD MSTORE SWAP1 MLOAD PUSH32 0x13ED6866D4E1EE6DA46F845C46D7E54120883D75C5EA9A2DACC1C4CA8984AB80 SWAP2 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG1 PUSH1 0x0 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x2FE3F38F PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x24 DUP6 ADD MSTORE DUP8 DUP2 AND PUSH1 0x44 DUP6 ADD MSTORE DUP7 DUP2 AND PUSH1 0x64 DUP6 ADD MSTORE PUSH1 0x84 DUP5 ADD DUP7 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 DUP5 SWAP4 AND SWAP2 PUSH4 0x5FC7E71E SWAP2 PUSH1 0xA4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x48B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x48CD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x48E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x4907 JUMPI PUSH2 0x48FA PUSH1 0x3 PUSH1 0x14 DUP4 PUSH2 0x3927 JUMP JUMPDEST SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH2 0x4D35 SWAP1 POP JUMP JUMPDEST PUSH2 0x490F PUSH2 0x1D3A JUMP JUMPDEST PUSH1 0xA SLOAD EQ PUSH2 0x4923 JUMPI PUSH2 0x48FA PUSH1 0xA PUSH1 0x18 PUSH2 0x290E JUMP JUMPDEST PUSH2 0x492B PUSH2 0x1D3A JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6C540BAF 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 0x4964 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4978 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x498E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD EQ PUSH2 0x49A1 JUMPI PUSH2 0x48FA PUSH1 0xA PUSH1 0x13 PUSH2 0x290E JUMP JUMPDEST DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x49C7 JUMPI PUSH2 0x48FA PUSH1 0x6 PUSH1 0x19 PUSH2 0x290E JUMP JUMPDEST DUP5 PUSH2 0x49D8 JUMPI PUSH2 0x48FA PUSH1 0x7 PUSH1 0x17 PUSH2 0x290E JUMP JUMPDEST PUSH1 0x0 NOT DUP6 EQ ISZERO PUSH2 0x49EE JUMPI PUSH2 0x48FA PUSH1 0x7 PUSH1 0x16 PUSH2 0x290E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x49FC DUP10 DUP10 DUP10 PUSH2 0x348A JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP DUP2 ISZERO PUSH2 0x4A2C JUMPI PUSH2 0x4A1D DUP3 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x4A16 JUMPI INVALID JUMPDEST PUSH1 0x1A PUSH2 0x290E JUMP JUMPDEST SWAP5 POP PUSH1 0x0 SWAP4 POP PUSH2 0x4D35 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xC488847B PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 DUP2 AND PUSH1 0x24 DUP6 ADD MSTORE PUSH1 0x44 DUP5 ADD DUP6 SWAP1 MSTORE DUP2 MLOAD PUSH1 0x0 SWAP5 DUP6 SWAP5 SWAP3 SWAP1 SWAP3 AND SWAP3 PUSH4 0xC488847B SWAP3 PUSH1 0x64 DUP1 DUP3 ADD SWAP4 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4A8A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4A9E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4AB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 POP SWAP1 POP DUP2 ISZERO PUSH2 0x4AFF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x33 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x55D7 PUSH1 0x33 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 DUP9 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 DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4B56 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4B6A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4B80 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT ISZERO PUSH2 0x4BD5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C49515549444154455F5345495A455F544F4F5F4D5543480000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND ADDRESS EQ ISZERO PUSH2 0x4BFB JUMPI PUSH2 0x4BF4 ADDRESS DUP14 DUP14 DUP6 PUSH2 0x2F42 JUMP JUMPDEST SWAP1 POP PUSH2 0x4C85 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xB2A02FF1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP15 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP14 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD SWAP2 DUP12 AND SWAP2 PUSH4 0xB2A02FF1 SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4C56 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4C6A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4C80 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP JUMPDEST DUP1 ISZERO PUSH2 0x4CCF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x1D1BDAD95B881CD95A5E9D5C994819985A5B1959 PUSH1 0x62 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP16 AND DUP3 MSTORE DUP1 DUP15 AND PUSH1 0x20 DUP4 ADD MSTORE DUP2 DUP4 ADD DUP8 SWAP1 MSTORE DUP12 AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP2 ADD DUP5 SWAP1 MSTORE SWAP1 MLOAD PUSH32 0x298637F684DA70674F26509B10F07EC2FBC77A335AB1E7D6215A4B2484D8BB52 SWAP2 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 LOG1 PUSH1 0x0 SWAP8 POP SWAP3 SWAP6 POP POP POP POP POP POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 DUP4 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4D8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4DA2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4DB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x24 DUP3 ADD MSTORE ADDRESS PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP1 DUP3 ADD DUP8 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x23B872DD PUSH1 0xE0 SHL OR SWAP1 MSTORE DUP3 MLOAD DUP1 DUP5 ADD SWAP1 SWAP4 MSTORE PUSH1 0x18 DUP4 MSTORE PUSH32 0x544F4B454E5F5452414E534645525F494E5F4641494C45440000000000000000 SWAP1 DUP4 ADD MSTORE SWAP2 SWAP3 POP PUSH2 0x4E45 SWAP2 SWAP1 PUSH2 0x4F75 JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4E90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4EA4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4EBA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP2 DUP2 LT ISZERO PUSH2 0x4F13 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x544F4B454E5F5452414E534645525F494E5F4F564552464C4F57000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SUB SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x4F6D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x441F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4407 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x60 SWAP1 PUSH2 0x4F8F SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 DUP5 PUSH2 0x505D JUMP JUMPDEST DUP1 MLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0x4FFF JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4FAE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP3 SWAP1 PUSH2 0x4FFD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x441F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4407 JUMP JUMPDEST POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x5011 PUSH2 0x5322 JUMP JUMPDEST PUSH2 0x2883 DUP7 DUP7 PUSH2 0x5165 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14C5 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x17 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x6D756C7469706C69636174696F6E206F766572666C6F77000000000000000000 DUP2 MSTORE POP PUSH2 0x51C4 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x60 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x509D JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x507E JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x50FF 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 0x5104 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x44CB JUMPI DUP1 MLOAD ISZERO PUSH2 0x511E JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP7 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP7 MLOAD DUP8 SWAP4 SWAP2 SWAP3 DUP4 SWAP3 PUSH1 0x44 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x441F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4407 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x516F PUSH2 0x5322 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x5184 PUSH8 0xDE0B6B3A7640000 DUP8 PUSH2 0x3FDF JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x5197 JUMPI INVALID JUMPDEST EQ PUSH2 0x51B6 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x28B9 JUMP JUMPDEST PUSH2 0x28B2 DUP2 DUP7 PUSH1 0x0 ADD MLOAD PUSH2 0x3877 JUMP JUMPDEST PUSH1 0x0 DUP4 ISZERO DUP1 PUSH2 0x51D1 JUMPI POP DUP3 ISZERO JUMPDEST ISZERO PUSH2 0x51DE JUMPI POP PUSH1 0x0 PUSH2 0x14C5 JUMP JUMPDEST DUP4 DUP4 MUL DUP4 DUP6 DUP3 DUP2 PUSH2 0x51EB JUMPI INVALID JUMPDEST DIV EQ DUP4 SWAP1 PUSH2 0x10BA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x441F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4407 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x527B JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x52A8 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x52A8 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x52A8 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x528D JUMP JUMPDEST POP PUSH2 0x1313 SWAP3 SWAP2 POP PUSH2 0x542F JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x52F5 JUMPI DUP3 DUP1 ADD PUSH1 0xFF NOT DUP3 CALLDATALOAD AND OR DUP6 SSTORE PUSH2 0x52A8 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x52A8 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x52A8 JUMPI DUP3 CALLDATALOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x5307 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x120 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x100 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xE0 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH2 0x107C SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1313 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x5435 JUMP INVALID PUSH14 0x61726B6574206D6179206F6E6C79 KECCAK256 PUSH3 0x652069 PUSH15 0x697469616C697A6564206F6E636569 PUSH15 0x697469616C2065786368616E676520 PUSH19 0x617465206D7573742062652067726561746572 KECCAK256 PUSH21 0x68616E207A65726F2E6F6E6C79207468652061646D PUSH10 0x6E206D61792073657420 PUSH21 0x686520636F6D702D6C696B652064656C6567617465 PUSH20 0x657474696E6720696E7465726573742072617465 KECCAK256 PUSH14 0x6F64656C206661696C6564626F72 PUSH19 0x6F7742616C616E636553746F7265643A20626F PUSH19 0x726F7742616C616E636553746F726564496E74 PUSH6 0x726E616C2066 PUSH2 0x696C PUSH6 0x645245504159 0x5F TIMESTAMP 0x4F MSTORE MSTORE 0x4F JUMPI 0x5F 0x4E GASLIMIT JUMPI 0x5F COINBASE NUMBER NUMBER 0x4F SSTORE 0x4E SLOAD 0x5F TIMESTAMP 0x4F MSTORE MSTORE 0x4F JUMPI 0x5F TIMESTAMP COINBASE 0x4C COINBASE 0x4E NUMBER GASLIMIT 0x5F NUMBER COINBASE 0x4C NUMBER SSTORE 0x4C COINBASE SLOAD 0x49 0x4F 0x4E 0x5F CHAINID COINBASE 0x49 0x4C GASLIMIT DIFFICULTY PUSH16 0x6E6C7920467573652061646D696E206D PUSH2 0x7920 PUSH10 0x6E697469616C697A6520 PUSH21 0x6865206D61726B6574DDF252AD1BE2C89B69C2B068 0xFC CALLDATACOPY DUP14 0xAA SWAP6 0x2B 0xA7 CALL PUSH4 0xC4A11628 CREATE2 GAS 0x4D CREATE2 0x23 0xB3 0xEF MSTORE GASLIMIT POP COINBASE MSIZE 0x5F TIMESTAMP 0x4F MSTORE MSTORE 0x4F JUMPI 0x5F 0x4E GASLIMIT JUMPI 0x5F SLOAD 0x4F SLOAD COINBASE 0x4C 0x5F TIMESTAMP COINBASE 0x4C COINBASE 0x4E NUMBER GASLIMIT 0x5F NUMBER COINBASE 0x4C NUMBER SSTORE 0x4C COINBASE SLOAD 0x49 0x4F 0x4E 0x5F CHAINID COINBASE 0x49 0x4C GASLIMIT DIFFICULTY 0x4C 0x49 MLOAD SSTORE 0x49 DIFFICULTY COINBASE SLOAD GASLIMIT 0x5F NUMBER 0x4F 0x4D POP SLOAD MSTORE 0x4F 0x4C 0x4C GASLIMIT MSTORE 0x5F NUMBER COINBASE 0x4C NUMBER SSTORE 0x4C COINBASE SLOAD GASLIMIT 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD 0x5F MSTORE8 GASLIMIT 0x49 GAS GASLIMIT 0x5F CHAINID COINBASE 0x49 0x4C GASLIMIT DIFFICULTY PUSH6 0x786368616E67 PUSH6 0x526174655374 PUSH16 0x7265643A2065786368616E6765526174 PUSH6 0x53746F726564 0x49 PUSH15 0x7465726E616C206661696C65646F6E PUSH6 0x206F66207265 PUSH5 0x65656D546F PUSH12 0x656E73496E206F7220726564 PUSH6 0x656D416D6F75 PUSH15 0x74496E206D757374206265207A6572 PUSH16 0xA265627A7A7231582099EF0A08860A89 ADDMOD REVERT SWAP14 0xB9 0x2C MUL PUSH23 0xBB8607D61521224847759514EDA76111945D64736F6C63 NUMBER STOP SDIV GT STOP ORIGIN ","sourceMap":"403:8286:2:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;403:8286:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;960:18:11;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;960:18:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7552:232:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7552:232:10;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3661:146:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3661:146:2;;:::i;:::-;;;;;;;;;;;;;;;;1302:1947:10;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;1302:1947:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;1302:1947:10;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1302:1947:10;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1302:1947:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1302:1947:10;;;;;;;;-1:-1:-1;1302:1947:10;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;1302:1947:10;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1302:1947:10;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1302:1947:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1302:1947:10;;-1:-1:-1;;1302:1947:10;;;;;-1:-1:-1;;;1302:1947:10;;;;;;;;;:::i;:::-;;2390:33:11;;;:::i;11828:228:10:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11828:228:10;-1:-1:-1;;;;;11828:228:10;;:::i;3266:23:11:-;;;:::i;14620:257:10:-;;;:::i;6892:200::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6892:200:10;;;;;;;;;;;;;;;;;:::i;4087:186:2:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4087:186:2;;;;;;;;:::i;1146:21:11:-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;70024:265:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;70024:265:10;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;70024:265:10;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;70024:265:10;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;70024:265:10;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;70024:265:10;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;70024:265:10;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;70024:265:10;;-1:-1:-1;70024:265:10;-1:-1:-1;70024:265:10;:::i;8788:349::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8788:349:10;-1:-1:-1;;;;;8788:349:10;;:::i;16532:86::-;;;:::i;2784:24:11:-;;;:::i;1713:39::-;;;:::i;:::-;;;;-1:-1:-1;;;;;1713:39:11;;;;;;;;;;;;;;59156:570:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;59156:570:10;;:::i;3037:26:11:-;;;:::i;4209:56::-;;;:::i;2508:30::-;;;:::i;8834:25::-;;;:::i;8430:110:10:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8430:110:10;-1:-1:-1;;;;;8430:110:10;;:::i;11348:196::-;;;:::i;8473:214:2:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8473:214:2;-1:-1:-1;;;;;8473:214:2;;:::i;2957:131::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2957:131:2;;:::i;2150:28:11:-;;;:::i;2909:25::-;;;:::i;54184:571:10:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;54184:571:10;;:::i;1051:20:11:-;;;:::i;12258:283:10:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12258:283:10;-1:-1:-1;;;;;12258:283:10;;:::i;61865:587::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;61865:587:10;;:::i;2025:130:2:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2025:130:2;;:::i;803:842::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;803:842:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;803:842:2;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;803:842:2;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;803:842:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;803:842:2;;;;;;;;-1:-1:-1;803:842:2;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;803:842:2;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;803:842:2;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;803:842:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;803:842:2;;-1:-1:-1;;803:842:2;;;-1:-1:-1;;;803:842:2;;;;:::i;16859:1071:10:-;;;:::i;64387:592::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;64387:592:10;;:::i;6404:190::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6404:190:10;;;;;;;;:::i;2654:23:11:-;;;:::i;4556:37::-;;;:::i;10946:262:10:-;;;:::i;48862:198::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;48862:198:10;;;;;;;;;;;;;;;;;:::i;14175:202::-;;;:::i;9475:685::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9475:685:10;-1:-1:-1;;;;;9475:685:10;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3349:111:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3349:111:2;;:::i;2498:::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2498:111:2;;:::i;2271:27:11:-;;;:::i;3165:25::-;;;:::i;8106:141:10:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;8106:141:10;;;;;;;;;;:::i;67100:625::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;67100:625:10;-1:-1:-1;;;;;67100:625:10;;:::i;1849:42:11:-;;;:::i;4745:234:2:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4745:234:2;;;;;;;;;;;;;;;;;:::i;10574:202:10:-;;;:::i;57039:606::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;57039:606:10;;:::i;4414:36:11:-;;;:::i;960:18::-;;;;;;;;;;;;;;;-1:-1:-1;;960:18:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7552:232:10:-;7650:10;7620:4;7670:23;;;:18;:23;;;;;;;;-1:-1:-1;;;;;7670:32:10;;;;;;;;;;;:41;;;7726:30;;;;;;;7620:4;;7650:10;7670:32;;7650:10;;7726:30;;;;;;;;;;;7773:4;7766:11;;;7552:232;;;;;:::o;3661:146:2:-;3718:4;3735:8;3748:32;3768:11;3748:19;:32::i;:::-;-1:-1:-1;3734:46:2;-1:-1:-1;;3661:146:2;;;;:::o;1302:1947:10:-;1743:10;326:42:11;1743:32:10;1735:86;;;;-1:-1:-1;;;1735:86:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1839:18;;:23;:43;;;;-1:-1:-1;1866:11:10;;:16;1839:43;1831:91;;;;-1:-1:-1;;;1831:91:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1970:27;:58;;;2046:31;2038:92;;;;-1:-1:-1;;;2038:92:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2172:8;2183:29;2199:12;2183:15;:29::i;:::-;2172:40;-1:-1:-1;2230:27:10;;2222:66;;;;;-1:-1:-1;;;2222:66:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;2425:16;:14;:16::i;:::-;2404:18;:37;409:4:22;2451:11:10;:25;2573:46;2600:18;2573:26;:46::i;:::-;2567:52;-1:-1:-1;2637:27:10;;2629:74;;;;-1:-1:-1;;;2629:74:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2714:12;;;;:4;;:12;;;;;:::i;:::-;-1:-1:-1;2736:16:10;;;;:6;;:16;;;;;:::i;:::-;-1:-1:-1;2762:8:10;:20;;-1:-1:-1;;2762:20:10;;;;;;;2829:46;2852:22;2829;:46::i;:::-;2823:52;-1:-1:-1;2893:27:10;;2885:69;;;;;-1:-1:-1;;;2885:69:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;2996:36;3014:17;2996;:36::i;:::-;2990:42;-1:-1:-1;3050:27:10;;3042:64;;;;;-1:-1:-1;;;3042:64:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3224:11:10;:18;;-1:-1:-1;;;;3224:18:10;-1:-1:-1;;;3224:18:10;;;-1:-1:-1;;;;;;;1302:1947:10:o;2390:33:11:-;;;;:::o;11828:228:10:-;11913:4;11897:5;71531:30;71551:9;71531:19;:30::i;:::-;11962:14;11937:16;:14;:16::i;:::-;:40;11929:75;;;;;-1:-1:-1;;;11929:75:10;;;;;;;;;;;;-1:-1:-1;;;11929:75:10;;;;;;;;;;;;;;;12021:28;12041:7;12021:19;:28::i;:::-;12014:35;;71571:1;71582:29;71601:9;71582:18;:29::i;:::-;11828:228;;;;:::o;3266:23:11:-;;;;:::o;14620:257:10:-;14671:4;14688:13;14703:11;14718:28;:26;:28::i;:::-;14687:59;;-1:-1:-1;14687:59:10;-1:-1:-1;14771:18:10;14764:3;:25;;;;;;;;;14756:91;;;;-1:-1:-1;;;14756:91:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14864:6;-1:-1:-1;;14620:257:10;;:::o;6892:200::-;6994:4;6978:5;71531:30;71551:9;71531:19;:30::i;:::-;7070:14;7017:44;7032:10;7044:3;7049;7054:6;7017:14;:44::i;:::-;:68;7010:75;;71582:29;71601:9;71582:18;:29::i;:::-;6892:200;;;;;;:::o;4087:186:2:-;4168:4;4185:8;4198:48;4224:8;4234:11;4198:25;:48::i;:::-;-1:-1:-1;4184:62:2;4087:186;-1:-1:-1;;;;4087:186:2:o;1146:21:11:-;;;;;;:::o;70024:265:10:-;70159:16;:14;:16::i;:::-;70151:45;;;;;-1:-1:-1;;;70151:45:10;;;;;;;;;;;;-1:-1:-1;;;70151:45:10;;;;;;;;;;;;;;;70244:12;:4;70251:5;;70244:12;:::i;:::-;-1:-1:-1;70266:16:10;:6;70275:7;;70266:16;:::i;:::-;;70024:265;;;;:::o;8788:349::-;8850:4;8866:23;;:::i;:::-;8892:38;;;;;;;;8907:21;:19;:21::i;:::-;8892:38;;-1:-1:-1;;;;;9005:20:10;;8941:14;9005:20;;;:13;:20;;;;;;8866:64;;-1:-1:-1;8941:14:10;;;8973:53;;8866:64;;8973:17;:53::i;:::-;8940:86;;-1:-1:-1;8940:86:10;-1:-1:-1;9052:18:10;9044:4;:26;;;;;;;;;9036:70;;;;;-1:-1:-1;;;9036:70:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;9123:7;8788:349;-1:-1:-1;;;;8788:349:10:o;16532:86::-;16574:4;16597:14;:12;:14::i;:::-;16590:21;;16532:86;:::o;2784:24:11:-;;;;:::o;1713:39::-;;;-1:-1:-1;;;;;1713:39:11;;:::o;59156:570:10:-;59238:4;59222:5;71531:30;71551:9;71531:19;:30::i;:::-;59254:10;59267:16;:14;:16::i;:::-;59254:29;-1:-1:-1;59297:29:10;;59293:274;;59486:70;59497:5;59491:12;;;;;;;;59505:50;59486:4;:70::i;:::-;59479:77;;;;;59293:274;59685:34;59706:12;59685:20;:34::i;:::-;59678:41;;;71582:29;71601:9;71582:18;:29::i;3037:26:11:-;;;;:::o;4209:56::-;4259:6;4209:56;:::o;2508:30::-;;;;:::o;8834:25::-;;;-1:-1:-1;;;;;8834:25:11;;:::o;8430:110:10:-;-1:-1:-1;;;;;8513:20:10;8487:7;8513:20;;;:13;:20;;;;;;;8430:110::o;11348:196::-;11417:4;11401:5;71531:30;71551:9;71531:19;:30::i;:::-;11466:14;11441:16;:14;:16::i;:::-;:40;11433:75;;;;;-1:-1:-1;;;11433:75:10;;;;;;;;;;;;-1:-1:-1;;;11433:75:10;;;;;;;;;;;;;;;11525:12;;11518:19;;71582:29;71601:9;71582:18;:29::i;:::-;11348:196;;:::o;8473:214:2:-;8556:16;:14;:16::i;:::-;8548:74;;;;-1:-1:-1;;;8548:74:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8641:10;;8632:48;;;-1:-1:-1;;;8632:48:2;;-1:-1:-1;;;;;8632:48:2;;;;;;;;;8641:10;;;;;8632:29;;:48;;;;;8641:10;;8632:48;;;;;;;8641:10;;8632:48;;;5:2:-1;;;;30:1;27;20:12;5:2;8632:48:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;2957:131:2;3020:4;3043:38;3068:12;3043:24;:38::i;2150:28:11:-;;;;:::o;2909:25::-;;;;:::o;54184:571:10:-;54270:4;54254:5;71531:30;71551:9;71531:19;:30::i;:::-;54286:10;54299:16;:14;:16::i;:::-;54286:29;-1:-1:-1;54329:29:10;;54325:273;;54519:68;54530:5;54524:12;;;;;;;;54538:48;54519:4;:68::i;54325:273::-;54710:38;54728:19;54710:17;:38::i;1051:20:11:-;;;;;;;;;;;;;;-1:-1:-1;;1051:20:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12258:283:10;12325:4;12342:13;12357:11;12372:36;12400:7;12372:27;:36::i;:::-;12341:67;;-1:-1:-1;12341:67:10;-1:-1:-1;12433:18:10;12426:3;:25;;;;;;;;;12418:93;;;;-1:-1:-1;;;12418:93:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12528:6;12258:283;-1:-1:-1;;;12258:283:10:o;61865:587::-;61951:4;61935:5;71531:30;71551:9;71531:19;:30::i;:::-;61967:10;61980:16;:14;:16::i;:::-;61967:29;-1:-1:-1;62010:29:10;;62006:281;;62203:73;62214:5;62208:12;;;;;;;;62222:53;62203:4;:73::i;62006:281::-;62407:38;62430:14;62407:22;:38::i;2025:130:2:-;2074:4;2091:8;2104:24;2117:10;2104:12;:24::i;803:842::-;1236:36;1275:6;1236:45;;1291:15;1324:11;-1:-1:-1;;;;;1309:36:2;;:38;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1309:38:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1309:38:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1309:38:2;;-1:-1:-1;1357:150:2;1374:12;1388:18;1408:28;1438:5;1445:7;1309:38;1465:22;1489:17;1357:16;:150::i;:::-;1564:10;:24;;-1:-1:-1;;;;;;1564:24:2;-1:-1:-1;;;;;1564:24:2;;;;;;;;;;;1598:40;;;-1:-1:-1;;;1598:40:2;;;;1613:10;;;;;1598:38;;:40;;;;;;;;;;;;;;;1613:10;1598:40;;;5:2:-1;;;;30:1;27;20:12;5:2;1598:40:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1598:40:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;;;;;;803:842:2:o;16859:1071:10:-;16901:4;16965:23;16991:16;:14;:16::i;:::-;16965:42;;17096:18;17074;;:40;17070:98;;;17142:14;17130:27;;;;;17070:98;17232:14;17249;:12;:14::i;:::-;17232:31;;17331:23;17357:17;;;;;;;;;-1:-1:-1;;;;;17357:17:10;-1:-1:-1;;;;;17357:31:10;;17389:9;17400:12;;17414:56;17419:13;;17434:35;17439:14;;17455:13;;17434:4;:35::i;:::-;17414:4;:56::i;:::-;17357:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17357:114:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17357:114:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17357:114:10;;-1:-1:-1;1314:9:11;17489:43:10;;;17481:84;;;;;-1:-1:-1;;;17481:84:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;17653:17;17672:15;17691:47;17699:18;17719;;17691:7;:47::i;:::-;17652:86;;-1:-1:-1;17652:86:10;-1:-1:-1;17767:18:10;17756:7;:29;;;;;;;;;17748:73;;;;;-1:-1:-1;;;17748:73:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;17839:84;17861:18;17881:9;17892:18;17912:10;17839:21;:84::i;:::-;17832:91;;;;;;;16859:1071;:::o;64387:592::-;64474:4;64458:5;71531:30;71551:9;71531:19;:30::i;:::-;64490:10;64503:16;:14;:16::i;:::-;64490:29;-1:-1:-1;64533:29:10;;64529:283;;64727:74;64738:5;64732:12;;;;;;;;64746:54;64727:4;:74::i;64529:283::-;64933:39;64957:14;64933:23;:39::i;6404:190::-;6489:4;6473:5;71531:30;71551:9;71531:19;:30::i;:::-;6572:14;6512:51;6527:10;6539;6551:3;6556:6;6512:14;:51::i;:::-;:75;6505:82;;71582:29;71601:9;71582:18;:29::i;:::-;6404:190;;;;;:::o;2654:23:11:-;;;;:::o;4556:37::-;4588:5;4556:37;:::o;10946:262:10:-;11022:17;;10999:4;;-1:-1:-1;;;;;11022:17:10;:31;11054:14;:12;:14::i;:::-;11070:12;;11084:56;11089:13;;11104:35;11109:14;;11125:13;;11104:4;:35::i;11084:56::-;11184:16;;11166:15;;11142:21;;:39;:58;11022:179;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11022:179:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11022:179:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11022:179:10;;-1:-1:-1;10946:262:10;:::o;48862:198::-;48970:4;48955;71531:30;71551:9;71531:19;:30::i;:::-;48993:60;49007:10;49019;49031:8;49041:11;48993:13;:60::i;:::-;48986:67;;71582:29;71601:9;71582:18;:29::i;14175:202::-;14242:4;14226:5;71531:30;71551:9;71531:19;:30::i;:::-;14291:14;14266:16;:14;:16::i;:::-;:40;14258:75;;;;;-1:-1:-1;;;14258:75:10;;;;;;;;;;;;-1:-1:-1;;;14258:75:10;;;;;;;;;;;;;;;14350:20;:18;:20::i;:::-;14343:27;;71582:29;71601:9;71582:18;:29::i;9475:685::-;-1:-1:-1;;;;;9598:22:10;;9543:4;9598:22;;;:13;:22;;;;;;9543:4;;;;;;;;;9743:36;9612:7;9743:27;:36::i;:::-;9719:60;-1:-1:-1;9719:60:10;-1:-1:-1;9801:18:10;9793:4;:26;;;;;;;;;9789:97;;9848:16;9843:22;9835:40;-1:-1:-1;9867:1:10;;-1:-1:-1;9867:1:10;;-1:-1:-1;9867:1:10;;-1:-1:-1;9835:40:10;;-1:-1:-1;;;;9835:40:10;9789:97;9927:28;:26;:28::i;:::-;9896:59;-1:-1:-1;9896:59:10;-1:-1:-1;9977:18:10;9969:4;:26;;;;;;;;;9965:97;;10024:16;10019:22;;9965:97;-1:-1:-1;10085:14:10;;-1:-1:-1;10102:13:10;;-1:-1:-1;10117:13:10;-1:-1:-1;10117:13:10;-1:-1:-1;9475:685:10;;;;;;:::o;3349:111:2:-;3402:4;3425:28;3440:12;3425:14;:28::i;2498:111::-;2551:4;2574:28;2589:12;2574:14;:28::i;2271:27:11:-;;;;:::o;3165:25::-;;;;:::o;8106:141:10:-;-1:-1:-1;;;;;8206:25:10;;;8180:7;8206:25;;;:18;:25;;;;;;;;:34;;;;;;;;;;;;;8106:141::o;67100:625::-;67187:4;67203:10;67216:16;:14;:16::i;:::-;67203:29;-1:-1:-1;67246:29:10;;67242:295;;67448:78;67459:5;67453:12;;;;;;;;67467:58;67448:4;:78::i;:::-;67441:85;;;;;67242:295;67670:48;67697:20;67670:26;:48::i;1849:42:11:-;;;-1:-1:-1;;;;;1849:42:11;;:::o;4745:234:2:-;4858:4;4875:8;4888:64;4912:8;4922:11;4935:16;4888:23;:64::i;:::-;-1:-1:-1;4874:78:2;4745:234;-1:-1:-1;;;;;4745:234:2:o;10574:202:10:-;10650:17;;10627:4;;-1:-1:-1;;;;;10650:17:10;:31;10682:14;:12;:14::i;:::-;10698:12;;10712:56;10717:13;;10732:35;10737:14;;10753:13;;10732:4;:35::i;10712:56::-;10650:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;57039:606:10;57135:4;57119:5;71531:30;71551:9;71531:19;:30::i;:::-;57151:10;57164:16;:14;:16::i;:::-;57151:29;-1:-1:-1;57194:29:10;;57190:283;;57389:73;57400:5;57394:12;;;;;;;;57408:53;57389:4;:73::i;57190:283::-;57590:48;57613:24;57590:22;:48::i;4414:36:11:-;4446:4;4414:36;:::o;37117:571:10:-;37202:4;37208;37186:5;71531:30;71551:9;71531:19;:30::i;:::-;37224:10;37237:16;:14;:16::i;:::-;37224:29;-1:-1:-1;37267:29:10;;37263:257;;37438:67;37449:5;37443:12;;;;;;;;37457:47;37438:4;:67::i;:::-;37430:79;-1:-1:-1;37507:1:10;;-1:-1:-1;37430:79:10;;-1:-1:-1;37430:79:10;37263:257;37628:53;37645:10;37657;37669:11;37628:16;:53::i;:::-;37621:60;;;;;71571:1;71582:29;71601:9;71582:18;:29::i;:::-;37117:571;;;;:::o;53348:555::-;53482:11;;;53577:30;;;-1:-1:-1;;;53577:30:10;;;;53428:4;;-1:-1:-1;;;;;53482:11:10;;;;53577:28;;;;;:30;;;;;;;;;;;:28;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;53577:30:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;53577:30:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;53577:30:10;53569:71;;;;;-1:-1:-1;;;53569:71:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;53705:11;:28;;-1:-1:-1;;;;;;53705:28:10;-1:-1:-1;;;;;53705:28:10;;;;;;;;;53812:46;;;;;;;;;;;;;;;;;;;;;;;;;;;53881:14;53876:20;;10313:91;10385:12;10313:91;:::o;68047:1634::-;68141:4;68240:38;68327:16;:14;:16::i;:::-;68322:128;;68366:73;68371:18;68391:47;68366:4;:73::i;68322:128::-;68573:16;:14;:16::i;:::-;68551:18;;:38;68547:153;;68612:77;68617:22;68641:47;68612:4;:77::i;68547:153::-;68791:17;;;;;;;;;-1:-1:-1;;;;;68791:17:10;68768:40;;68908:20;-1:-1:-1;;;;;68908:40:10;;:42;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;68908:42:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;68908:42:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;68908:42:10;68900:83;;;;;-1:-1:-1;;;68900:83:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;69057:17;:40;;-1:-1:-1;;;;;;69057:40:10;-1:-1:-1;;;;;69057:40:10;;;;;;;;;69200:70;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;69345:43:10;;;69341:138;;69425:53;;;22:32:-1;6:49;;69425:53:10;;;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;69390:89:10;;;;-1:-1:-1;;;;;69390:34:10;;;:89;;;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;69390:89:10;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;69390:89:10;;69341:138;69588:47;;;22:32:-1;6:49;;69588:47:10;;;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;69553:83:10;;;;-1:-1:-1;;;;;69553:34:10;;;:83;;;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;69553:83:10;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;-1:-1;69659:14:10;;-1:-1:-1;69654:20:10;;-1:-1:-1;69654:20:10;57906:1004;57987:4;58041:16;:14;:16::i;:::-;58036:123;;58080:68;58085:18;58105:42;58080:4;:68::i;:::-;58073:75;;;;58036:123;58263:16;:14;:16::i;:::-;58241:18;;:38;58237:148;;58302:72;58307:22;58331:42;58302:4;:72::i;58237:148::-;1490:4:11;58454:71:10;58459:48;58464:24;58490:16;;58459:4;:48::i;:::-;58509:15;;58454:4;:71::i;:::-;:106;58450:210;;;58583:66;58588:15;58605:43;58583:4;:66::i;58450:210::-;58702:21;;;58733:48;;;;58797:68;;;;;;;;;;;;;;;;;;;;;;;;;58888:14;58883:20;;55006:1737;55077:4;55187:16;:14;:16::i;:::-;55165:18;;:38;55161:143;;55226:67;55231:22;55255:37;55226:4;:67::i;55161:143::-;-1:-1:-1;;55358:19:10;:31;55354:75;;;55413:16;;55391:38;;55354:75;55471:23;55497:28;:26;:28::i;:::-;55471:54;;1490:4:11;55659:74:10;55664:48;55669:21;;55692:19;55664:4;:48::i;:::-;55714:18;55659:4;:74::i;:::-;:109;55655:208;;;55791:61;55796:15;55813:38;55791:4;:61::i;55655:208::-;55929:19;55909:16;;:39;55905:470;;56006:16;:14;:16::i;:::-;56001:126;;56049:63;56054:18;56074:37;56049:4;:63::i;56001:126::-;56197:16;;;56227:38;;;;56311:53;;;;;;;;;;;;;;;;;;;;;;;;;55905:470;;56439:18;56420:15;;:37;56416:283;;56527:15;;;56556:36;;;;56638:50;;;;;;;;;;;;;;;;;;;;;;;;;56416:283;;56721:14;56716:20;;71931:192;72002:11;;-1:-1:-1;;;72002:11:10;;;;71994:34;;;;;-1:-1:-1;;;71994:34:10;;;;;;;;;;;;-1:-1:-1;;;71994:34:10;;;;;;;;;;;;;;;72043:9;72038:49;;72054:11;;;:33;;;-1:-1:-1;;;72054:33:10;;;;-1:-1:-1;;;;;72054:11:10;;;;:31;;:33;;;;:11;;:33;;;;;;:11;;:33;;;5:2:-1;;;;30:1;27;20:12;5:2;72054:33:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;72054:33:10;;;;72038:49;-1:-1:-1;72111:5:10;72097:19;;-1:-1:-1;;;;72097:19:10;;;71931:192::o;72435:179::-;72497:11;:18;;-1:-1:-1;;;;72497:18:10;-1:-1:-1;;;72497:18:10;;;72564:9;72559:48;;72575:11;;;:32;;;-1:-1:-1;;;72575:32:10;;;;-1:-1:-1;;;;;72575:11:10;;;;:30;;:32;;;;:11;;:32;;;;;;:11;;:32;;;5:2:-1;;;;30:1;27;20:12;72559:48:10;72435:179;:::o;15134:1234::-;15242:11;;15195:9;;;;15267:17;15263:1099;;-1:-1:-1;;15456:27:10;;15436:18;;-1:-1:-1;15428:56:10;;15263:1099;15695:14;15712;:12;:14::i;:::-;15695:31;;15740:33;15787:23;;:::i;:::-;15824:17;15898:97;15913:9;15924:12;;15938:56;15943:13;;15958:35;15963:14;;15979:13;;15958:4;:35::i;15938:56::-;15898:14;:97::i;:::-;15856:139;-1:-1:-1;15856:139:10;-1:-1:-1;16024:18:10;16013:7;:29;;;;;;;;;16009:87;;16070:7;-1:-1:-1;16079:1:10;;-1:-1:-1;16062:19:10;;-1:-1:-1;;;;16062:19:10;16009:87;16136:50;16143:28;16173:12;16136:6;:50::i;:::-;16110:76;-1:-1:-1;16110:76:10;-1:-1:-1;16215:18:10;16204:7;:29;;;;;;;;;16200:87;;16261:7;-1:-1:-1;16270:1:10;;-1:-1:-1;16253:19:10;;-1:-1:-1;;;;16253:19:10;16200:87;-1:-1:-1;16329:21:10;16309:18;;-1:-1:-1;16329:21:10;-1:-1:-1;16301:50:10;;-1:-1:-1;;;16301:50:10;15134:1234;;;:::o;3925:2226::-;4097:11;;;:60;;;-1:-1:-1;;;4097:60:10;;4133:4;4097:60;;;;;;;-1:-1:-1;;;;;4097:60:10;;;;;;;;;;;;;;;;;;;;;;4023:4;;;;4097:11;;;;;:27;;:60;;;;;;;;;;;;;;4023:4;4097:11;:60;;;5:2:-1;;;;30:1;27;20:12;5:2;4097:60:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4097:60:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4097:60:10;;-1:-1:-1;4171:12:10;;4167:142;;4206:92;4217:27;4246:42;4290:7;4206:10;:92::i;:::-;4199:99;;;;;4167:142;4372:3;-1:-1:-1;;;;;4365:10:10;:3;-1:-1:-1;;;;;4365:10:10;;4361:103;;;4398:55;4403:15;4420:32;4398:4;:55::i;4361:103::-;4538:22;-1:-1:-1;;;;;4578:14:10;;;;;;;4574:156;;;-1:-1:-1;;;4574:156:10;;;-1:-1:-1;;;;;;4687:23:10;;;;;;;:18;:23;;;;;;;;:32;;;;;;;;;;4574:156;4805:17;4832;4859;4886;4940:34;4948:17;4967:6;4940:7;:34::i;:::-;4914:60;;-1:-1:-1;4914:60:10;-1:-1:-1;4999:18:10;4988:7;:29;;;;;;;;;4984:123;;5040:56;5045:16;5063:32;5040:4;:56::i;:::-;5033:63;;;;;;;;;;4984:123;-1:-1:-1;;;;;5151:18:10;;;;;;:13;:18;;;;;;5143:35;;5171:6;5143:7;:35::i;:::-;5117:61;;-1:-1:-1;5117:61:10;-1:-1:-1;5203:18:10;5192:7;:29;;;;;;;;;5188:122;;5244:55;5249:16;5267:31;5244:4;:55::i;5188:122::-;-1:-1:-1;;;;;5354:18:10;;;;;;:13;:18;;;;;;5346:35;;5374:6;5346:7;:35::i;:::-;5320:61;;-1:-1:-1;5320:61:10;-1:-1:-1;5406:18:10;5395:7;:29;;;;;;;;;5391:120;;5447:53;5452:16;5470:29;5447:4;:53::i;5391:120::-;-1:-1:-1;;;;;5638:18:10;;;;;;;:13;:18;;;;;;:33;;;5681:18;;;;;;:33;;;-1:-1:-1;;5784:29:10;;5780:107;;-1:-1:-1;;;;;5829:23:10;;;;;;;:18;:23;;;;;;;;:32;;;;;;;;;:47;;;5780:107;5955:3;-1:-1:-1;;;;;5941:26:10;5950:3;-1:-1:-1;;;;;5941:26:10;-1:-1:-1;;;;;;;;;;;5960:6:10;5941:26;;;;;;;;;;;;;;;;;;-1:-1:-1;6129:14:10;;3925:2226;-1:-1:-1;;;;;;;;;;3925:2226:10:o;38013:593::-;38122:4;38128;38106:5;71531:30;71551:9;71531:19;:30::i;:::-;38144:10;38157:16;:14;:16::i;:::-;38144:29;-1:-1:-1;38187:29:10;;38183:257;;38358:67;38369:5;38363:12;;;;;;;;38377:47;38358:4;:67::i;:::-;38350:79;-1:-1:-1;38427:1:10;;-1:-1:-1;38350:79:10;;-1:-1:-1;38350:79:10;38183:257;38548:51;38565:10;38577:8;38587:11;38548:16;:51::i;:::-;38541:58;;;;;71571:1;71582:29;71601:9;71582:18;:29::i;:::-;38013:593;;;;;;:::o;528:335::-;664:11;;;709:26;;;-1:-1:-1;;;709:26:10;;;;577:4;;-1:-1:-1;;;;;664:11:10;;;;;;709:24;;:26;;;;;;;;;;;664:11;709:26;;;5:2:-1;;;;30:1;27;20:12;5:2;709:26:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;709:26:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;709:26:10;-1:-1:-1;;;;;695:40:10;:10;:40;:79;;;;;739:18;-1:-1:-1;;;;;739:33:10;;:35;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;739:35:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;739:35:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;739:35:10;695:79;694:162;;;-1:-1:-1;780:10:10;326:42:11;780:32:10;:75;;;;;816:18;-1:-1:-1;;;;;816:37:10;;:39;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;816:39:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;816:39:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;816:39:10;687:169;;;528:335;:::o;2431:306:21:-;2508:9;2519:4;2536:13;2551:18;;:::i;:::-;2573:20;2583:1;2586:6;2573:9;:20::i;:::-;2535:58;;-1:-1:-1;2535:58:21;-1:-1:-1;2614:18:21;2607:3;:25;;;;;;;;;2603:71;;-1:-1:-1;2656:3:21;-1:-1:-1;2661:1:21;;-1:-1:-1;2648:15:21;;2603:71;2692:18;2712:17;2721:7;2712:8;:17::i;:::-;2684:46;;;;;;2431:306;;;;;;:::o;5238:166:2:-;5339:10;;5367:30;;;-1:-1:-1;;;5367:30:2;;5391:4;5367:30;;;;;;5285:4;;-1:-1:-1;;;;;5339:10:2;;;;5367:15;;:30;;;;;;;;;;;;;;;5339:10;5367:30;;;5:2:-1;;;;30:1;27;20:12;8568:149:20;8629:4;8650:33;8663:3;8658:9;;;;;;;;8674:4;8669:10;;;;;;;;8650:33;;;;;;;;;;;;;8681:1;8650:33;;;;;;;;;;;;;8706:3;8701:9;;;;;;;59995:1627:10;60062:4;60118:21;60188:16;:14;:16::i;:::-;60183:120;;60227:65;60232:18;60252:39;60227:4;:65::i;60183:120::-;60426:16;:14;:16::i;:::-;60404:18;;:38;60400:145;;60465:69;60470:22;60494:39;60465:4;:69::i;60400:145::-;60648:12;60631:14;:12;:14::i;:::-;:29;60627:150;;;60683:83;60688:29;60719:46;60683:4;:83::i;60627:150::-;60868:13;;60853:12;:28;60849:127;;;60904:61;60909:15;60926:38;60904:4;:61::i;60849:127::-;61210:33;61215:13;;61230:12;61210:4;:33::i;:::-;61314:13;:32;;;61191:52;-1:-1:-1;61463:39:10;61477:10;61489:12;61463:13;:39::i;:::-;61518:59;;;61534:10;61518:59;;;;;;;;;;;;;;;;;;;;;;;;;61600:14;61595:20;;26431:536;26522:4;26506:5;71531:30;71551:9;71531:19;:30::i;:::-;26538:10;26551:16;:14;:16::i;:::-;26538:29;-1:-1:-1;26581:29:10;;26577:246;;26751:61;26762:5;26756:12;;;;;;;;26770:41;26751:4;:61::i;26577:246::-;26920:40;26932:10;26944:1;26947:12;26920:11;:40::i;12788:1238::-;-1:-1:-1;;;;;13130:23:10;;12865:9;13130:23;;;:14;:23;;;;;13354:24;;12865:9;;;;;;;;13350:90;;-1:-1:-1;13407:18:10;;-1:-1:-1;13407:18:10;;-1:-1:-1;13399:30:10;;-1:-1:-1;;;13399:30:10;13350:90;13662:46;13670:14;:24;;;13696:11;;13662:7;:46::i;:::-;13629:79;;-1:-1:-1;13629:79:10;-1:-1:-1;13733:18:10;13722:7;:29;;;;;;;;;13718:79;;-1:-1:-1;13775:7:10;;-1:-1:-1;13784:1:10;;-1:-1:-1;13767:19:10;;-1:-1:-1;;13767:19:10;13718:79;13827:58;13835:19;13856:14;:28;;;13827:7;:58::i;:::-;13807:78;;-1:-1:-1;13807:78:10;-1:-1:-1;13910:18:10;13899:7;:29;;;;;;;;;13895:79;;-1:-1:-1;13952:7:10;;-1:-1:-1;13961:1:10;;-1:-1:-1;13944:19:10;;-1:-1:-1;;13944:19:10;13895:79;-1:-1:-1;13992:18:10;;-1:-1:-1;14012:6:10;-1:-1:-1;;;12788:1238:10;;;;:::o;62718:1424::-;62789:4;62845:21;62990:16;:14;:16::i;:::-;62968:18;;:38;62964:148;;63029:72;63034:22;63058:42;63029:4;:72::i;62964:148::-;63215:14;63198;:12;:14::i;:::-;:31;63194:155;;;63252:86;63257:29;63288:49;63252:4;:86::i;63194:155::-;63444:13;;63427:14;:30;63423:132;;;63480:64;63485:15;63502:41;63480:4;:64::i;63423:132::-;63791:35;63796:13;;63811:14;63791:4;:35::i;:::-;63899:13;:32;;;63772:54;-1:-1:-1;64048:49:10;326:42:11;64082:14:10;64048:13;:49::i;20737:546::-;20814:4;20820;20798:5;71531:30;71551:9;71531:19;:30::i;:::-;20836:10;20849:16;:14;:16::i;:::-;20836:29;-1:-1:-1;20879:29:10;;20875:249;;21050:59;21061:5;21055:12;;;;;;;;21069:39;21050:4;:59::i;20875:249::-;21243:33;21253:10;21265;21243:9;:33::i;3095:114:22:-;3148:4;3171:31;3176:1;3179;3171:31;;;;;;;;;;;;;-1:-1:-1;;;3171:31:22;;;:4;:31::i;1302:230:12:-;1358:9;1369:4;1394:1;1389;:6;1385:141;;-1:-1:-1;1419:18:12;;-1:-1:-1;1439:5:12;;;1411:34;;1385:141;-1:-1:-1;1484:27:12;;-1:-1:-1;1513:1:12;1476:39;;18030:2317:10;18161:4;18804:31;;:::i;:::-;18838:53;18843:35;;;;;;;;18858:18;18843:35;;;18880:10;18838:4;:53::i;:::-;18804:87;;18901:24;18928:54;18947:20;18969:12;;18928:18;:54::i;:::-;18901:81;;18992:20;19015:39;19020:19;19041:12;;19015:4;:39::i;:::-;18992:62;;19064:21;19088:101;19114:38;;;;;;;;19129:21;;19114:38;;;19154:19;19175:13;;19088:25;:101::i;:::-;19064:125;;19199:21;19223:95;19249:32;;;;;;;;19264:15;;19249:32;;;19283:19;19304:13;;19223:25;:95::i;:::-;19199:119;;19328:22;19353:97;19379:33;;;;;;;;19394:16;;19379:33;;;19414:19;19435:14;;19353:25;:97::i;:::-;19328:122;;19460:19;19482:73;19508:20;19530:11;;19543;;19482:25;:73::i;:::-;19752:18;:39;;;19801:11;:28;;;19839:12;:30;;;19879:13;:32;;;19921:13;:32;;;19963:14;:34;;;20059:79;;;;;;;;;;;;;;;;;;;;;;;;;;19460:95;;-1:-1:-1;20059:79:10;;;;;;;;;;20203:17;;20227:74;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;20227:74:10;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;20195:107:10;;;;-1:-1:-1;;;;;20203:17:10;;;;20227:74;;20195:107;;;;25:18:-1;20195:107:10;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;20195:107:10;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;-1:-1;20325:14:10;;-1:-1:-1;20320:20:10;;-1:-1:-1;20320:20:10;;20313:27;18030:2317;-1:-1:-1;;;;;;;;;;;;18030:2317:10:o;65247:1492::-;65319:4;65376:22;65522:16;:14;:16::i;:::-;65500:18;;:38;65496:149;;65561:73;65566:22;65590:43;65561:4;:73::i;65496:149::-;65748:14;65731;:12;:14::i;:::-;:31;65727:156;;;65785:87;65790:29;65821:50;65785:4;:87::i;65727:156::-;65980:14;;65963;:31;65959:134;;;66017:65;66022:15;66039:42;66017:4;:65::i;65959:134::-;66331:36;66336:14;;66352;66331:4;:36::i;:::-;66442:14;:34;;;66654:11;;;66623:52;;;-1:-1:-1;;;66623:52:10;;;;66311:56;;-1:-1:-1;66593:101:10;;-1:-1:-1;;;;;66654:11:10;;;;66623:50;;:52;;;;;;;;;;;;66654:11;66623:52;;;5:2:-1;;;;30:1;27;20:12;5:2;66623:52:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;66623:52:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;66623:52:10;66679:14;66593:13;:101::i;50058:3037::-;50247:11;;;:87;;;-1:-1:-1;;;50247:87:10;;50280:4;50247:87;;;;;;;-1:-1:-1;;;;;50247:87:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;50176:4;;;;50247:11;;;;;:24;;:87;;;;;;;;;;;;;;50176:4;50247:11;:87;;;5:2:-1;;;;30:1;27;20:12;5:2;50247:87:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;50247:87:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;50247:87:10;;-1:-1:-1;50348:12:10;;50344:149;;50383:99;50394:27;50423:49;50474:7;50383:10;:99::i;50344:149::-;50563:10;-1:-1:-1;;;;;50551:22:10;:8;-1:-1:-1;;;;;50551:22:10;;50547:144;;;50596:84;50601:26;50629:50;50596:4;:84::i;50547:144::-;50701:34;;:::i;:::-;-1:-1:-1;;;;;51065:23:10;;;;;;:13;:23;;;;;;51057:45;;51090:11;51057:7;:45::i;:::-;51031:22;;;51016:86;;;51017:4;51016:86;;;;;;;;;;;;;;;;;;;-1:-1:-1;51132:18:10;;-1:-1:-1;51116:12:10;;:34;;;;;;;;;51112:174;;51173:102;51184:16;51202:52;51261:4;:12;;;51256:18;;;;;;;;51173:10;:102::i;:::-;51166:109;;;;;;51112:174;51323:62;51328:11;51341:43;;;;;;;;4259:6:11;51341:43:10;;;51323:4;:62::i;:::-;51296:24;;;:89;;;51424:43;;51429:11;;51424:4;:43::i;:::-;51395:26;;;:72;51522:28;:26;:28::i;:::-;51493:25;;;51478:72;;;51479:4;51478:72;;;;;;;;;;;;;;;;;;;-1:-1:-1;51584:18:10;;-1:-1:-1;51568:12:10;;:34;;;;;;;;;51560:71;;;;;-1:-1:-1;;;51560:71:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;51669:88;51688:42;;;;;;;;51703:4;:25;;;51688:42;;;51732:4;:24;;;51669:18;:88::i;:::-;51642:24;;;:115;;;51797:13;;51792:45;;:4;:45::i;:::-;51768:21;;;:69;51874:11;;51887:24;;;;51869:43;;51874:11;51869:4;:43::i;:::-;51847:19;;;:65;-1:-1:-1;;;;;51974:25:10;;;;;;:13;:25;;;;;;52001:26;;;;51966:62;;51974:25;51966:7;:62::i;:::-;51938:24;;;51923:105;;;51924:4;51923:105;;;;;;;;;;;;;;;;;;;-1:-1:-1;52058:18:10;;-1:-1:-1;52042:12:10;;:34;;;;;;;;;52038:174;;52099:102;52110:16;52128:52;52187:4;:12;;;52182:18;;;;;;;52038:174;52424:21;;;;52408:13;:37;52469:19;;;;52455:11;:33;52524:22;;;;;-1:-1:-1;;;;;52498:23:10;;;-1:-1:-1;52498:23:10;;;:13;:23;;;;;;:48;;;;52584:24;;;;52556:25;;;;;;;;;;:52;;;;52691:26;;;;52660:58;;;;;;;52556:25;;52498:23;;-1:-1:-1;;;;;;;;;;;52660:58:10;;;;;;;;;;52767:24;;;;52733:59;;;;;;;52760:4;;-1:-1:-1;;;;;52733:59:10;;;-1:-1:-1;;;;;;;;;;;52733:59:10;;;;;;;;52836:24;;;;52862:21;;;;52807:77;;;52829:4;52807:77;;;;;;;;;;;;;;;;;;;;;;;;;;53073:14;53061:27;50058:3037;-1:-1:-1;;;;;;;50058:3037:10:o;32601:523::-;32682:4;32666:5;71531:30;71551:9;71531:19;:30::i;:::-;32698:10;32711:16;:14;:16::i;:::-;32698:29;-1:-1:-1;32741:29:10;;32737:246;;32911:61;32922:5;32916:12;;;;;;;;32930:41;32911:4;:61::i;32737:246::-;33080:37;33092:10;33104:12;33080:11;:37::i;25533:526::-;25614:4;25598:5;71531:30;71551:9;71531:19;:30::i;:::-;25630:10;25643:16;:14;:16::i;:::-;25630:29;-1:-1:-1;25673:29:10;;25669:246;;25843:61;25854:5;25848:12;;;;;;;25669:246;26012:40;26024:10;26036:12;26050:1;26012:11;:40::i;43181:986::-;43322:4;43328;43306:5;71531:30;71551:9;71531:19;:30::i;:::-;43344:10;43357:16;:14;:16::i;:::-;43344:29;-1:-1:-1;43387:29:10;;43383:266;;43563:71;43574:5;43568:12;;;;;;;;43582:51;43563:4;:71::i;:::-;43555:83;-1:-1:-1;43636:1:10;;-1:-1:-1;43555:83:10;;-1:-1:-1;43555:83:10;43383:266;43667:16;-1:-1:-1;;;;;43667:31:10;;:33;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;43667:33:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;43667:33:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;43667:33:10;;-1:-1:-1;43714:29:10;;43710:270;;43890:75;43901:5;43895:12;;;;;;;;43909:55;43890:4;:75::i;43710:270::-;44087:73;44108:10;44120:8;44130:11;44143:16;44087:20;:73::i;:::-;44080:80;;;;;71571:1;71582:29;71601:9;71582:18;:29::i;:::-;43181:986;;;;;;;:::o;39291:3373::-;39469:11;;;:75;;;-1:-1:-1;;;39469:75:10;;39508:4;39469:75;;;;;;;-1:-1:-1;;;;;39469:75:10;;;;;;;;;;;;;;;;;;;;;;39386:4;;;;;;39469:11;;:30;;:75;;;;;;;;;;;;;;;39386:4;39469:11;:75;;;5:2:-1;;;;30:1;27;20:12;5:2;39469:75:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;39469:75:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;39469:75:10;;-1:-1:-1;39558:12:10;;39554:151;;39594:96;39605:27;39634:46;39682:7;39594:10;:96::i;:::-;39586:108;-1:-1:-1;39692:1:10;;-1:-1:-1;39586:108:10;;-1:-1:-1;39586:108:10;39554:151;39812:16;:14;:16::i;:::-;39790:18;;:38;39786:151;;39852:70;39857:22;39881:40;39852:4;:70::i;39786:151::-;39947:32;;:::i;:::-;-1:-1:-1;;;;;40090:24:10;;;;;;:14;:24;;;;;:38;;;40069:18;;;:59;40256:37;40105:8;40256:27;:37::i;:::-;40233:19;;;40218:75;;;40219:12;;;40218:75;;;;;;;;;;;;;;;;;;;-1:-1:-1;40323:18:10;;-1:-1:-1;40307:4:10;:12;;;:34;;;;;;;;;40303:190;;40365:113;40376:16;40394:63;40464:4;:12;;;40459:18;;;;;;;40365:113;40357:125;-1:-1:-1;40480:1:10;;-1:-1:-1;40357:125:10;;-1:-1:-1;;40357:125:10;40303:190;-1:-1:-1;;40572:11:10;:23;40568:153;;;40630:19;;;;40611:16;;;:38;40568:153;;;40680:16;;;:30;;;40568:153;41306:37;41319:5;41326:4;:16;;;41306:12;:37::i;:::-;41281:22;;;:62;;;41646:19;;;;41638:52;;:7;:52::i;:::-;41612:22;;;41597:93;;;41598:12;;;41597:93;;;;;;;;;;;;;;;;;;;-1:-1:-1;41724:18:10;;-1:-1:-1;41708:4:10;:12;;;:34;;;;;;;;;41700:105;;;;-1:-1:-1;;;41700:105:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41855:45;41863:12;;41877:4;:22;;;41855:7;:45::i;:::-;41831:20;;;41816:84;;;41817:12;;;41816:84;;;;;;;;;;;;;;;;;;;-1:-1:-1;41934:18:10;;-1:-1:-1;41918:4:10;:12;;;:34;;;;;;;;;41910:96;;;;-1:-1:-1;;;41910:96:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42123:22;;;;;;-1:-1:-1;;;;;42086:24:10;;;;;;;:14;:24;;;;;;;;;:59;;;42196:11;;42155:38;;;;:52;;;;42232:20;;;;42217:12;:35;;;42339:22;;;;42363;;42310:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42634:22;;;42617:14;;-1:-1:-1;42634:22:10;-1:-1:-1;;39291:3373:10;;;;;;;:::o;3355:118::-;3416:4;326:42:11;-1:-1:-1;;;;;3439:25:10;;:27;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;1926:263:12;1997:9;2008:4;2025:14;2041:8;2053:13;2061:1;2064;2053:7;:13::i;:::-;2024:42;;-1:-1:-1;2024:42:12;-1:-1:-1;2089:18:12;2081:4;:26;;;;;;;;;2077:73;;-1:-1:-1;2131:4:12;-1:-1:-1;2137:1:12;;-1:-1:-1;2123:16:12;;2077:73;2167:15;2175:3;2180:1;2167:7;:15::i;:::-;2160:22;;;;;;1926:263;;;;;;:::o;771:503:21:-;832:9;843:10;;:::i;:::-;866:14;882:20;906:22;914:3;409:4:22;906:7:21;:22::i;:::-;865:63;;-1:-1:-1;865:63:21;-1:-1:-1;950:18:21;942:4;:26;;;;;;;;;938:90;;-1:-1:-1;998:18:21;;;;;;;;;-1:-1:-1;998:18:21;;992:4;;-1:-1:-1;998:18:21;-1:-1:-1;984:33:21;;938:90;1039:14;1055:13;1072:31;1080:15;1097:5;1072:7;:31::i;:::-;1038:65;;-1:-1:-1;1038:65:21;-1:-1:-1;1125:18:21;1117:4;:26;;;;;;;;;1113:90;;-1:-1:-1;1173:18:21;;;;;;;;;-1:-1:-1;1173:18:21;;1167:4;;-1:-1:-1;1173:18:21;-1:-1:-1;1159:33:21;;-1:-1:-1;;1159:33:21;1113:90;1241:25;;;;;;;;;;;;-1:-1:-1;;1241:25:21;;-1:-1:-1;771:503:21;-1:-1:-1;;;;;;771:503:21:o;8835:241:20:-;8920:4;8941:43;8954:3;8949:9;;;;;;;;8965:4;8960:10;;;;;;;;8941:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;9009:27;9002:3;:34;;;;;;;;;:67;;9065:3;9060:9;;;;;;;;9002:67;;;-1:-1:-1;9039:4:20;:18;;8995:74;-1:-1:-1;;8835:241:20:o;1612:250:12:-;1668:9;;1704:5;;;1724:6;;;1720:136;;1754:18;;-1:-1:-1;1774:1:12;-1:-1:-1;1746:30:12;;1720:136;-1:-1:-1;1815:26:12;;-1:-1:-1;1843:1:12;;-1:-1:-1;1807:38:12;;1977:346:21;2046:9;2057:10;;:::i;:::-;2080:14;2096:19;2119:27;2127:1;:10;;;2139:6;2119:7;:27::i;:::-;2079:67;;-1:-1:-1;2079:67:21;-1:-1:-1;2168:18:21;2160:4;:26;;;;;;;;;2156:90;;-1:-1:-1;2216:18:21;;;;;;;;;-1:-1:-1;2216:18:21;;2210:4;;-1:-1:-1;2216:18:21;-1:-1:-1;2202:33:21;;2156:90;2284:31;;;;;;;;;;;;-1:-1:-1;;2284:31:21;;-1:-1:-1;1977:346:21;-1:-1:-1;;;;1977:346:21:o;788:210:22:-;968:12;409:4;968:23;;;788:210::o;3712:118::-;3765:4;3788:35;3793:1;3796;3788:35;;;;;;;;;;;;;-1:-1:-1;;;3788:35:22;;;:4;:35::i;7357:223:2:-;7452:91;;;-1:-1:-1;;;;;7452:91:2;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;7452:91:2;;;;;;;25:18:-1;;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;7432:141:2;;;;;;;;;;;;;;;;;;:19;:141::i;:::-;7357:223;;:::o;27836:4504:10:-;27943:4;27967:19;;;:42;;-1:-1:-1;27990:19:10;;27967:42;27959:107;;;;-1:-1:-1;;;27959:107:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28077:27;;:::i;:::-;28218:28;:26;:28::i;:::-;28189:25;;;28174:72;;;28175:12;;;28174:72;;;;;;;;;;;;;;;;;;;-1:-1:-1;28276:18:10;;-1:-1:-1;28260:4:10;:12;;;:34;;;;;;;;;28256:166;;28317:94;28328:16;28346:44;28397:4;:12;;;28392:18;;;;;;;28317:94;28310:101;;;;;28256:166;28473:18;;28469:1265;;28743:17;;;:34;;;28846:42;;;;;;;;28861:25;;;;28846:42;;28828:77;;28763:14;28828:17;:77::i;:::-;28807:17;;;28792:113;;;28793:12;;;28792:113;;;;;;;;;;;;;;;;;;;-1:-1:-1;28939:18:10;;-1:-1:-1;28923:4:10;:12;;;:34;;;;;;;;;28919:183;;28984:103;28995:16;29013:53;29073:4;:12;;;29068:18;;;;;;;28919:183;28469:1265;;;29396:82;29419:14;29435:42;;;;;;;;29450:4;:25;;;29435:42;;;29396:22;:82::i;:::-;29375:17;;;29360:118;;;29361:12;;;29360:118;;;;;;;;;;;;;;;;;;;-1:-1:-1;29512:18:10;;-1:-1:-1;29496:4:10;:12;;;:34;;;;;;;;;29492:183;;29557:103;29568:16;29586:53;29646:4;:12;;;29641:18;;;;;;;29492:183;29689:17;;;:34;;;28469:1265;29800:11;;;29851:17;;;;29800:69;;;-1:-1:-1;;;29800:69:10;;29834:4;29800:69;;;;;;;-1:-1:-1;;;;;29800:69:10;;;;;;;;;;;;;;;29785:12;;29800:11;;;;;:25;;:69;;;;;;;;;;;;;;;29785:12;29800:11;:69;;;5:2:-1;;;;30:1;27;20:12;5:2;29800:69:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29800:69:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;29800:69:10;;-1:-1:-1;29883:12:10;;29879:140;;29918:90;29929:27;29958:40;30000:7;29918:10;:90::i;:::-;29911:97;;;;;;29879:140;30126:16;:14;:16::i;:::-;30104:18;;:38;30100:140;;30165:64;30170:22;30194:34;30165:4;:64::i;30100:140::-;30528:39;30536:11;;30549:4;:17;;;30528:7;:39::i;:::-;30505:19;;;30490:77;;;30491:12;;;30490:77;;;;;;;;;;;;;;;;;;;-1:-1:-1;30597:18:10;;-1:-1:-1;30581:4:10;:12;;;:34;;;;;;;;;30577:176;;30638:104;30649:16;30667:54;30728:4;:12;;;30723:18;;;;;;;30577:176;-1:-1:-1;;;;;30811:23:10;;;;;;:13;:23;;;;;;30836:17;;;;30803:51;;30811:23;30803:7;:51::i;:::-;30778:21;;;30763:91;;;30764:12;;;30763:91;;;;;;;;;;;;;;;;;;;-1:-1:-1;30884:18:10;;-1:-1:-1;30868:4:10;:12;;;:34;;;;;;;;;30864:179;;30925:107;30936:16;30954:57;31018:4;:12;;;31013:18;;;;;;;30864:179;31138:4;:17;;;31121:14;:12;:14::i;:::-;:34;31117:153;;;31178:81;31183:29;31214:44;31178:4;:81::i;31117:153::-;31476:19;;;;31462:11;:33;31531:21;;;;-1:-1:-1;;;;;31505:23:10;;;;;;:13;:23;;;;;:47;31944:17;;;;31920:42;;31519:8;;31920:13;:42::i;:::-;32071:17;;;;32037:52;;;;;;;32064:4;;-1:-1:-1;;;;;32037:52:10;;;-1:-1:-1;;;;;;;;;;;32037:52:10;;;;;;;;32121:17;;;;32140;;;;;32104:54;;;-1:-1:-1;;;;;32104:54:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32208:11;;;32258:17;;;;32277;;;;32208:87;;;-1:-1:-1;;;32208:87:10;;32241:4;32208:87;;;;;;;-1:-1:-1;;;;;32208:87:10;;;;;;;;;;;;;;;;;;;;;;:11;;;:24;;:87;;;;;:11;;:87;;;;;;;:11;;:87;;;5:2:-1;;;;30:1;27;20:12;5:2;32208:87:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;32318:14:10;;-1:-1:-1;32313:20:10;;-1:-1:-1;;32313:20:10;;32306:27;27836:4504;-1:-1:-1;;;;;;27836:4504:10:o;542:331:12:-;598:9;;629:6;625:67;;-1:-1:-1;659:18:12;;-1:-1:-1;659:18:12;651:30;;625:67;711:5;;;715:1;711;:5;:1;731:5;;;;;:10;727:140;;-1:-1:-1;765:26:12;;-1:-1:-1;793:1:12;;-1:-1:-1;757:38:12;;727:140;834:18;;-1:-1:-1;854:1:12;-1:-1:-1;826:30:12;;963:209;1019:9;;1050:6;1046:75;;-1:-1:-1;1080:26:12;;-1:-1:-1;1108:1:12;1072:38;;1046:75;1139:18;1163:1;1159;:5;;;;;;1131:34;;;;963:209;;;;;:::o;21974:3216:10:-;22120:11;;;:58;;;-1:-1:-1;;;22120:58:10;;22152:4;22120:58;;;;;;;-1:-1:-1;;;;;22120:58:10;;;;;;;;;;;;;;;22044:4;;;;;;22120:11;;:23;;:58;;;;;;;;;;;;;;;22044:4;22120:11;:58;;;5:2:-1;;;;30:1;27;20:12;5:2;22120:58:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22120:58:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22120:58:10;;-1:-1:-1;22192:12:10;;22188:143;;22228:88;22239:27;22268:38;22308:7;22228:10;:88::i;:::-;22220:100;-1:-1:-1;22318:1:10;;-1:-1:-1;22220:100:10;;-1:-1:-1;22220:100:10;22188:143;22438:16;:14;:16::i;:::-;22416:18;;:38;22412:143;;22478:62;22483:22;22507:32;22478:4;:62::i;22412:143::-;22565:25;;:::i;:::-;22645:28;:26;:28::i;:::-;22616:25;;;22601:72;;;22602:12;;;22601:72;;;;;;;;;;;;;;;;;;;-1:-1:-1;22703:18:10;;-1:-1:-1;22687:4:10;:12;;;:34;;;;;;;;;22683:169;;22745:92;22756:16;22774:42;22823:4;:12;;;22818:18;;;;;;;22745:92;22737:104;-1:-1:-1;22839:1:10;;-1:-1:-1;22737:104:10;;-1:-1:-1;;22737:104:10;22683:169;23809:32;23822:6;23830:10;23809:12;:32::i;:::-;23785:21;;;:56;;;24107:42;;;;;;;;24122:25;;;;24107:42;;24061:89;;23785:56;24061:22;:89::i;:::-;24042:15;;;24027:123;;;24028:12;;;24027:123;;;;;;;;;;;;;;;;;;;-1:-1:-1;24184:18:10;;-1:-1:-1;24168:4:10;:12;;;:34;;;;;;;;;24160:79;;;;;-1:-1:-1;;;24160:79:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24520:34;24525:11;;24538:4;:15;;;24520:4;:34::i;:::-;24498:19;;;:56;-1:-1:-1;;;;;24594:21:10;;;;;;:13;:21;;;;;;24617:15;;;;24589:44;;24594:21;24589:4;:44::i;:::-;24565:21;;;:68;;;24723:19;;;;24709:11;:33;-1:-1:-1;;;;;24752:21:10;;;;;;:13;:21;;;;;;;;;:45;;;;24883:21;;;;24906:15;;;;;24870:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24969:15;;;;24937:48;;;;;;;-1:-1:-1;;;;;24937:48:10;;;24954:4;;-1:-1:-1;;;;;;;;;;;24937:48:10;;;;;;;;25035:11;;;25081:21;;;;25104:15;;;;25035:85;;;-1:-1:-1;;;25035:85:10;;25066:4;25035:85;;;;;;;-1:-1:-1;;;;;25035:85:10;;;;;;;;;;;;;;;;;;;;;;:11;;;:22;;:85;;;;;:11;;:85;;;;;;;:11;;:85;;;5:2:-1;;;;30:1;27;20:12;5:2;25035:85:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;25144:14:10;;-1:-1:-1;25139:20:10;;-1:-1:-1;;25139:20:10;;25161:4;:21;;;25131:52;;;;;;21974:3216;;;;;:::o;3215:175:22:-;3296:4;3321:5;;;3352:12;3344:6;;;;3336:29;;;;-1:-1:-1;;;3336:29:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3336:29:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4160:131;4219:10;;:::i;:::-;4248:36;;;;;;;;4263:19;4268:1;:10;;;4280:1;4263:4;:19::i;:::-;4248:36;;4241:43;4160:131;-1:-1:-1;;;4160:131:22:o;1106:171::-;1184:4;1200:18;;:::i;:::-;1221:15;1226:1;1229:6;1221:4;:15::i;:::-;1200:36;;1253:17;1262:7;1253:8;:17::i;1417:205::-;1515:4;1531:18;;:::i;:::-;1552:15;1557:1;1560:6;1552:4;:15::i;:::-;1531:36;;1584:31;1589:17;1598:7;1589:8;:17::i;:::-;1608:6;1584:4;:31::i;:::-;1577:38;1417:205;-1:-1:-1;;;;;1417:205:22:o;4297:119::-;4356:4;409;4379:19;4384:1;4387;:10;;;4379:4;:19::i;:::-;:30;;;;;;;4297:119;-1:-1:-1;;;4297:119:22:o;33537:3334:10:-;33693:11;;;:64;;;-1:-1:-1;;;33693:64:10;;33727:4;33693:64;;;;;;;-1:-1:-1;;;;;33693:64:10;;;;;;;;;;;;;;;33621:4;;;;33693:11;;;;;:25;;:64;;;;;;;;;;;;;;33621:4;33693:11;:64;;;5:2:-1;;;;30:1;27;20:12;5:2;33693:64:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;33693:64:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;33693:64:10;;-1:-1:-1;33771:12:10;;33767:140;;33806:90;33817:27;33846:40;33888:7;33806:10;:90::i;:::-;33799:97;;;;;33767:140;34014:16;:14;:16::i;:::-;33992:18;;:38;33988:140;;34053:64;34058:22;34082:34;34053:4;:64::i;33988:140::-;34213:14;34230;:12;:14::i;:::-;34213:31;;34271:12;34259:9;:24;34255:136;;;34306:74;34311:29;34342:37;34306:4;:74::i;:::-;34299:81;;;;;;34255:136;34401:27;;:::i;:::-;34709:37;34737:8;34709:27;:37::i;:::-;34686:19;;;34671:75;;;34672:4;34671:75;;;;;;;;;;;;;;;;;;;-1:-1:-1;34776:18:10;;-1:-1:-1;34760:12:10;;:34;;;;;;;;;34756:179;;34817:107;34828:16;34846:57;34910:4;:12;;;34905:18;;;;;;;34817:107;34810:114;;;;;;;34756:179;34986:42;34994:4;:19;;;35015:12;34986:7;:42::i;:::-;34960:22;;;34945:83;;;34946:4;34945:83;;;;;;;;;;;;;;;;;;;-1:-1:-1;35058:18:10;;-1:-1:-1;35042:12:10;;:34;;;;;;;;;35038:186;;35099:114;35110:16;35128:64;35199:4;:12;;;35194:18;;;;;;;35038:186;35301:11;;;35347:22;;;;;35301:69;;-1:-1:-1;;;35301:69:10;;35340:4;35301:69;;;;;;;;;;;;-1:-1:-1;;;;;35301:11:10;;;;:30;;:69;;;;;;;;;;;;;;:11;;:69;;;5:2:-1;;;;30:1;27;20:12;5:2;35301:69:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;35301:69:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;35301:69:10;;-1:-1:-1;35384:12:10;;35380:140;;35419:90;35430:27;35459:40;35501:7;35419:10;:90::i;35380:140::-;35569:35;35577:12;;35591;35569:7;:35::i;:::-;35545:20;;;35530:74;;;35531:4;35530:74;;;;;;;;;;;;;;;;;;;-1:-1:-1;35634:18:10;;-1:-1:-1;35618:12:10;;:34;;;;;;;;;35614:177;;35675:105;35686:16;35704:55;35766:4;:12;;;35761:18;;;;;;;35614:177;36024:22;;;;;-1:-1:-1;;;;;35987:24:10;;;;;;:14;:24;;;;;;:59;;;36097:11;;36056:38;;;;:52;36133:20;;;;36118:12;:35;36517:37;36002:8;36541:12;36517:13;:37::i;:::-;36638:22;;;;;36662:20;;;;;36607:76;;-1:-1:-1;;;;;36607:76:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36849:14;36837:27;33537:3334;-1:-1:-1;;;;;;33537:3334:10:o;44768:3544::-;44987:11;;;:111;;;-1:-1:-1;;;44987:111:10;;45030:4;44987:111;;;;;;;-1:-1:-1;;;;;44987:111:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44906:4;;;;;;44987:11;;:34;;:111;;;;;;;;;;;;;;;44906:4;44987:11;:111;;;5:2:-1;;;;30:1;27;20:12;5:2;44987:111:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;44987:111:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;44987:111:10;;-1:-1:-1;45112:12:10;;45108:148;;45148:93;45159:27;45188:43;45233:7;45148:10;:93::i;:::-;45140:105;-1:-1:-1;45243:1:10;;-1:-1:-1;45140:105:10;;-1:-1:-1;45140:105:10;45108:148;45363:16;:14;:16::i;:::-;45341:18;;:38;45337:148;;45403:67;45408:22;45432:37;45403:4;:67::i;45337:148::-;45628:16;:14;:16::i;:::-;45587;-1:-1:-1;;;;;45587:35:10;;:37;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;45587:37:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;45587:37:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;45587:37:10;:57;45583:178;;45668:78;45673:22;45697:48;45668:4;:78::i;45583:178::-;45831:10;-1:-1:-1;;;;;45819:22:10;:8;-1:-1:-1;;;;;45819:22:10;;45815:143;;;45865:78;45870:26;45898:44;45865:4;:78::i;45815:143::-;46010:16;46006:145;;46050:86;46055:36;46093:42;46050:4;:86::i;46006:145::-;-1:-1:-1;;46204:11:10;:23;46200:156;;;46251:90;46256:36;46294:46;46251:4;:90::i;46200:156::-;46408:21;46431:22;46457:51;46474:10;46486:8;46496:11;46457:16;:51::i;:::-;46407:101;;-1:-1:-1;46407:101:10;-1:-1:-1;46522:40:10;;46518:161;;46586:78;46597:16;46591:23;;;;;;;;46616:47;46586:4;:78::i;:::-;46578:90;-1:-1:-1;46666:1:10;;-1:-1:-1;46578:90:10;;-1:-1:-1;;;46578:90:10;46518:161;46929:11;;;:102;;;-1:-1:-1;;;46929:102:10;;46979:4;46929:102;;;;;;;-1:-1:-1;;;;;46929:102:10;;;;;;;;;;;;;;;46886:21;;;;46929:11;;;;;:41;;:102;;;;;;;;;;;:11;:102;;;5:2:-1;;;;30:1;27;20:12;5:2;46929:102:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;46929:102:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;46929:102:10;;;;;;;;;-1:-1:-1;46929:102:10;-1:-1:-1;47049:40:10;;47041:104;;;;-1:-1:-1;;;47041:104:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;47276:11;47236:16;-1:-1:-1;;;;;47236:26:10;;47263:8;47236:36;;;;;;;;;;;;;-1:-1:-1;;;;;47236:36:10;-1:-1:-1;;;;;47236:36:10;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;47236:36:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;47236:36:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;47236:36:10;:51;;47228:88;;;;;-1:-1:-1;;;47228:88:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;47442:15;-1:-1:-1;;;;;47471:42:10;;47508:4;47471:42;47467:250;;;47542:63;47564:4;47571:10;47583:8;47593:11;47542:13;:63::i;:::-;47529:76;;47467:250;;;47649:57;;;-1:-1:-1;;;47649:57:10;;-1:-1:-1;;;;;47649:57:10;;;;;;;;;;;;;;;;;;;;;;:22;;;;;;:57;;;;;;;;;;;;;;;-1:-1:-1;47649:22:10;:57;;;5:2:-1;;;;30:1;27;20:12;5:2;47649:57:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;47649:57:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;47649:57:10;;-1:-1:-1;47467:250:10;47820:34;;47812:67;;;;;-1:-1:-1;;;47812:67:10;;;;;;;;;;;;-1:-1:-1;;;47812:67:10;;;;;;;;;;;;;;;47941:96;;;-1:-1:-1;;;;;47941:96:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48270:14;48257:48;-1:-1:-1;48287:17:10;;-1:-1:-1;;;;;;44768:3544:10;;;;;;;;:::o;6010:654:2:-;6129:10;;6114:51;;;-1:-1:-1;;;6114:51:2;;6159:4;6114:51;;;;;;6077:4;;;;-1:-1:-1;;;;;6129:10:2;;;;6114:36;;:51;;;;;;;;;;;;;;;6129:10;6114:51;;;5:2:-1;;;;30:1;27;20:12;5:2;6114:51:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6114:51:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6114:51:2;6195:112;;;-1:-1:-1;;;;;6195:112:2;;;;;;6293:4;6195:112;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;6195:112:2;;;;;;6114:51;25:18:-1;;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;6175:161:2;;;;;;;;;;;;;;;;6114:51;;-1:-1:-1;6175:161:2;;6195:112;6175:19;:161::i;:::-;6446:10;;6431:51;;;-1:-1:-1;;;6431:51:2;;6476:4;6431:51;;;;;;6411:17;;-1:-1:-1;;;;;6446:10:2;;6431:36;;:51;;;;;;;;;;;;;;6446:10;6431:51;;;5:2:-1;;;;30:1;27;20:12;5:2;6431:51:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6431:51:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6431:51:2;;-1:-1:-1;6500:29:2;;;;6492:68;;;;;-1:-1:-1;;;6492:68:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;6577:28;;6010:654;-1:-1:-1;;;6010:654:2:o;3836:155:22:-;3917:4;3949:12;3941:6;;;;3933:29;;;;-1:-1:-1;;;3933:29:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;3933:29:22;-1:-1:-1;;;3979:5:22;;;3836:155::o;7978:263:2:-;8113:10;;8073:23;;8099:45;;-1:-1:-1;;;;;8113:10:2;8125:4;8131:12;8099:13;:45::i;:::-;8158:17;;8073:71;;-1:-1:-1;8158:21:2;8154:80;;8200:10;8189:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8189:30:2;8221:12;;8181:53;;;;-1:-1:-1;;;8181:53:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;8181:53:2;;8154:80;7978:263;;;:::o;4423:330:21:-;4511:9;4522:4;4539:13;4554:19;;:::i;:::-;4577:31;4592:6;4600:7;4577:14;:31::i;4877:120:22:-;4930:4;4953:37;4958:1;4961;4953:37;;;;;;;;;;;;;;;;;:4;:37::i;73327:765:10:-;73431:12;73456;73470:23;73497:6;-1:-1:-1;;;;;73497:11:10;73509:4;73497:17;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;73497:17:10;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;73455:59:10;;;;73530:7;73525:533;;73623:17;;:21;73619:429;;73881:10;73875:17;73941:15;73928:10;73924:2;73920:19;73913:44;73830:145;74013:20;;-1:-1:-1;;;74013:20:10;;;;;;;;;;;;;;;;;74020:12;;74013:20;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;3712:605:21;3792:9;3803:10;;:::i;:::-;4100:14;4116;4134:25;409:4:22;4152:6:21;4134:7;:25::i;:::-;4099:60;;-1:-1:-1;4099:60:21;-1:-1:-1;4181:18:21;4173:4;:26;;;;;;;;;4169:90;;-1:-1:-1;4229:18:21;;;;;;;;;-1:-1:-1;4229:18:21;;4223:4;;-1:-1:-1;4229:18:21;-1:-1:-1;4215:33:21;;4169:90;4275:35;4282:9;4293:7;:16;;;4275:6;:35::i;5003:243:22:-;5084:4;5104:6;;;:16;;-1:-1:-1;5114:6:22;;5104:16;5100:55;;;-1:-1:-1;5143:1:22;5136:8;;5100:55;5173:5;;;5177:1;5173;:5;:1;5196:5;;;;;:10;5208:12;5188:33;;;;;-1:-1:-1;;;5188:33:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;403:8286:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;403:8286:2;;;-1:-1:-1;403:8286:2;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;403:8286:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;403:8286:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;403:8286:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;403:8286:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;403:8286:2;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;"},"methodIdentifiers":{"_delegateCompLikeTo(address)":"7f1e06be","_reduceReserves(uint256)":"601a0bf1","_setAdminFee(uint256)":"91dd36c6","_setInterestRateModel(address)":"f2b3abbd","_setNameAndSymbol(string,string)":"34154d4c","_setReserveFactor(uint256)":"fca7820b","_withdrawAdminFees(uint256)":"a7b820df","_withdrawFuseFees(uint256)":"a03dce8d","accrualBlockNumber()":"6c540baf","accrueInterest()":"a6afed95","adminFeeMantissa()":"8d02d9a1","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","balanceOfUnderlying(address)":"3af9e669","borrow(uint256)":"c5ebeaec","borrowBalanceCurrent(address)":"17bfdfbc","borrowBalanceStored(address)":"95dd9193","borrowIndex()":"aa5af0fd","borrowRatePerBlock()":"f8f9da28","comptroller()":"5fe3b567","decimals()":"313ce567","exchangeRateCurrent()":"bd6d894d","exchangeRateStored()":"182df0f5","fuseFeeMantissa()":"dbfe7c19","getAccountSnapshot(address)":"c37f68e2","getCash()":"3b1d21a2","initialize(address,address,address,string,string,uint256,uint256)":"a0b0d289","initialize(address,address,uint256,string,string,uint8,uint256,uint256)":"0f8855e8","interestRateModel()":"f3fdb15a","isCEther()":"ac784ddc","isCToken()":"fe9c44ae","liquidateBorrow(address,uint256,address)":"f5e3c462","mint(uint256)":"a0712d68","name()":"06fdde03","protocolSeizeShareMantissa()":"6752e702","redeem(uint256)":"db006a75","redeemUnderlying(uint256)":"852a12e3","repayBorrow(uint256)":"0e752702","repayBorrowBehalf(address,uint256)":"2608f818","reserveFactorMantissa()":"173b9904","seize(address,address,uint256)":"b2a02ff1","supplyRatePerBlock()":"ae9d70b0","symbol()":"95d89b41","totalAdminFees()":"61feacff","totalBorrows()":"47bd3718","totalBorrowsCurrent()":"73acee98","totalFuseFees()":"dc028ab1","totalReserves()":"8f840ddd","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","underlying()":"6f307dc3"}},"metadata":"{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"cashPrior\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"interestAccumulated\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"borrowIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalBorrows\",\"type\":\"uint256\"}],\"name\":\"AccrueInterest\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"borrowAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"accountBorrows\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalBorrows\",\"type\":\"uint256\"}],\"name\":\"Borrow\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"error\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"info\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"detail\",\"type\":\"uint256\"}],\"name\":\"Failure\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"liquidator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"repayAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"cTokenCollateral\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"seizeTokens\",\"type\":\"uint256\"}],\"name\":\"LiquidateBorrow\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"mintAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"mintTokens\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldAdminFeeMantissa\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newAdminFeeMantissa\",\"type\":\"uint256\"}],\"name\":\"NewAdminFee\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract ComptrollerInterface\",\"name\":\"oldComptroller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract ComptrollerInterface\",\"name\":\"newComptroller\",\"type\":\"address\"}],\"name\":\"NewComptroller\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldFuseFeeMantissa\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newFuseFeeMantissa\",\"type\":\"uint256\"}],\"name\":\"NewFuseFee\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract InterestRateModel\",\"name\":\"oldInterestRateModel\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract InterestRateModel\",\"name\":\"newInterestRateModel\",\"type\":\"address\"}],\"name\":\"NewMarketInterestRateModel\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldReserveFactorMantissa\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newReserveFactorMantissa\",\"type\":\"uint256\"}],\"name\":\"NewReserveFactor\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"redeemer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"redeemAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"redeemTokens\",\"type\":\"uint256\"}],\"name\":\"Redeem\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"repayAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"accountBorrows\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalBorrows\",\"type\":\"uint256\"}],\"name\":\"RepayBorrow\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"benefactor\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"addAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newTotalReserves\",\"type\":\"uint256\"}],\"name\":\"ReservesAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reduceAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newTotalReserves\",\"type\":\"uint256\"}],\"name\":\"ReservesReduced\",\"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\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"compLikeDelegatee\",\"type\":\"address\"}],\"name\":\"_delegateCompLikeTo\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"reduceAmount\",\"type\":\"uint256\"}],\"name\":\"_reduceReserves\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newAdminFeeMantissa\",\"type\":\"uint256\"}],\"name\":\"_setAdminFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contract InterestRateModel\",\"name\":\"newInterestRateModel\",\"type\":\"address\"}],\"name\":\"_setInterestRateModel\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"}],\"name\":\"_setNameAndSymbol\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newReserveFactorMantissa\",\"type\":\"uint256\"}],\"name\":\"_setReserveFactor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"withdrawAmount\",\"type\":\"uint256\"}],\"name\":\"_withdrawAdminFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"withdrawAmount\",\"type\":\"uint256\"}],\"name\":\"_withdrawFuseFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"accrualBlockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"accrueInterest\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"adminFeeMantissa\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOfUnderlying\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"borrowAmount\",\"type\":\"uint256\"}],\"name\":\"borrow\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"borrowBalanceCurrent\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"borrowBalanceStored\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"borrowIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"borrowRatePerBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"comptroller\",\"outputs\":[{\"internalType\":\"contract ComptrollerInterface\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"exchangeRateCurrent\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"exchangeRateStored\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"fuseFeeMantissa\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getAccountSnapshot\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getCash\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contract ComptrollerInterface\",\"name\":\"comptroller_\",\"type\":\"address\"},{\"internalType\":\"contract InterestRateModel\",\"name\":\"interestRateModel_\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"initialExchangeRateMantissa_\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"decimals_\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"reserveFactorMantissa_\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"adminFeeMantissa_\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"underlying_\",\"type\":\"address\"},{\"internalType\":\"contract ComptrollerInterface\",\"name\":\"comptroller_\",\"type\":\"address\"},{\"internalType\":\"contract InterestRateModel\",\"name\":\"interestRateModel_\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"reserveFactorMantissa_\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"adminFeeMantissa_\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"interestRateModel\",\"outputs\":[{\"internalType\":\"contract InterestRateModel\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isCEther\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isCToken\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"repayAmount\",\"type\":\"uint256\"},{\"internalType\":\"contract CTokenInterface\",\"name\":\"cTokenCollateral\",\"type\":\"address\"}],\"name\":\"liquidateBorrow\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"mintAmount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"protocolSeizeShareMantissa\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"redeemTokens\",\"type\":\"uint256\"}],\"name\":\"redeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"redeemAmount\",\"type\":\"uint256\"}],\"name\":\"redeemUnderlying\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"repayAmount\",\"type\":\"uint256\"}],\"name\":\"repayBorrow\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"repayAmount\",\"type\":\"uint256\"}],\"name\":\"repayBorrowBehalf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"reserveFactorMantissa\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"liquidator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"seizeTokens\",\"type\":\"uint256\"}],\"name\":\"seize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"supplyRatePerBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalAdminFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalBorrows\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"totalBorrowsCurrent\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalFuseFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalReserves\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"underlying\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Compound\",\"details\":\"This contract should not to be deployed on its own; instead, deploy `CErc20Delegator` (proxy contract) and `CErc20Delegate` (logic/implementation contract).\",\"methods\":{\"_delegateCompLikeTo(address)\":{\"details\":\"CTokens whose underlying are not CompLike should revert here\",\"params\":{\"compLikeDelegatee\":\"The address to delegate votes to\"}},\"_reduceReserves(uint256)\":{\"params\":{\"reduceAmount\":\"Amount of reduction to reserves\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"_setAdminFee(uint256)\":{\"details\":\"Admin function to accrue interest and set a new admin fee\",\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"_setInterestRateModel(address)\":{\"details\":\"Admin function to accrue interest and update the interest rate model\",\"params\":{\"newInterestRateModel\":\"the new interest rate model to use\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"_setNameAndSymbol(string,string)\":{\"details\":\"Admin function to update the cToken ERC20 name and symbol\",\"params\":{\"_name\":\"the new ERC20 token name to use\",\"_symbol\":\"the new ERC20 token symbol to use\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"_setReserveFactor(uint256)\":{\"details\":\"Admin function to accrue interest and set a new reserve factor\",\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"_withdrawAdminFees(uint256)\":{\"params\":{\"withdrawAmount\":\"Amount of fees to withdraw\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"_withdrawFuseFees(uint256)\":{\"params\":{\"withdrawAmount\":\"Amount of fees to withdraw\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"accrueInterest()\":{\"details\":\"This calculates interest accrued from the last checkpointed block up to the current block and writes new checkpoint to storage.\"},\"allowance(address,address)\":{\"params\":{\"owner\":\"The address of the account which owns the tokens to be spent\",\"spender\":\"The address of the account which may transfer tokens\"},\"return\":\"The number of tokens allowed to be spent (-1 means infinite)\"},\"approve(address,uint256)\":{\"details\":\"This will overwrite the approval amount for `spender` and is subject to issues noted [here](https://eips.ethereum.org/EIPS/eip-20#approve)\",\"params\":{\"amount\":\"The number of tokens that are approved (-1 means infinite)\",\"spender\":\"The address of the account which may transfer tokens\"},\"return\":\"Whether or not the approval succeeded\"},\"balanceOf(address)\":{\"params\":{\"owner\":\"The address of the account to query\"},\"return\":\"The number of tokens owned by `owner`\"},\"balanceOfUnderlying(address)\":{\"details\":\"This also accrues interest in a transaction\",\"params\":{\"owner\":\"The address of the account to query\"},\"return\":\"The amount of underlying owned by `owner`\"},\"borrow(uint256)\":{\"params\":{\"borrowAmount\":\"The amount of the underlying asset to borrow\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"borrowBalanceCurrent(address)\":{\"params\":{\"account\":\"The address whose balance should be calculated after updating borrowIndex\"},\"return\":\"The calculated balance\"},\"borrowBalanceStored(address)\":{\"params\":{\"account\":\"The address whose balance should be calculated\"},\"return\":\"The calculated balance\"},\"borrowRatePerBlock()\":{\"return\":\"The borrow interest rate per block, scaled by 1e18\"},\"exchangeRateCurrent()\":{\"return\":\"Calculated exchange rate scaled by 1e18\"},\"exchangeRateStored()\":{\"details\":\"This function does not accrue interest before calculating the exchange rate\",\"return\":\"Calculated exchange rate scaled by 1e18\"},\"getAccountSnapshot(address)\":{\"details\":\"This is used by comptroller to more efficiently perform liquidity checks.\",\"params\":{\"account\":\"Address of the account to snapshot\"},\"return\":\"(possible error, token balance, borrow balance, exchange rate mantissa)\"},\"getCash()\":{\"return\":\"The quantity of underlying asset owned by this contract\"},\"initialize(address,address,address,string,string,uint256,uint256)\":{\"params\":{\"comptroller_\":\"The address of the Comptroller\",\"interestRateModel_\":\"The address of the interest rate model\",\"name_\":\"ERC-20 name of this token\",\"symbol_\":\"ERC-20 symbol of this token\",\"underlying_\":\"The address of the underlying asset\"}},\"initialize(address,address,uint256,string,string,uint8,uint256,uint256)\":{\"params\":{\"comptroller_\":\"The address of the Comptroller\",\"decimals_\":\"EIP-20 decimal precision of this token\",\"initialExchangeRateMantissa_\":\"The initial exchange rate, scaled by 1e18\",\"interestRateModel_\":\"The address of the interest rate model\",\"name_\":\"EIP-20 name of this token\",\"symbol_\":\"EIP-20 symbol of this token\"}},\"liquidateBorrow(address,uint256,address)\":{\"params\":{\"borrower\":\"The borrower of this cToken to be liquidated\",\"cTokenCollateral\":\"The market in which to seize collateral from the borrower\",\"repayAmount\":\"The amount of the underlying borrowed asset to repay\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"mint(uint256)\":{\"details\":\"Accrues interest whether or not the operation succeeds, unless reverted\",\"params\":{\"mintAmount\":\"The amount of the underlying asset to supply\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"redeem(uint256)\":{\"details\":\"Accrues interest whether or not the operation succeeds, unless reverted\",\"params\":{\"redeemTokens\":\"The number of cTokens to redeem into underlying\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"redeemUnderlying(uint256)\":{\"details\":\"Accrues interest whether or not the operation succeeds, unless reverted\",\"params\":{\"redeemAmount\":\"The amount of underlying to redeem\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"repayBorrow(uint256)\":{\"params\":{\"repayAmount\":\"The amount to repay\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"repayBorrowBehalf(address,uint256)\":{\"params\":{\"borrower\":\"the account with the debt being payed off\",\"repayAmount\":\"The amount to repay\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"seize(address,address,uint256)\":{\"details\":\"Will fail unless called by another cToken during the process of liquidation. Its absolutely critical to use msg.sender as the borrowed cToken and not a parameter.\",\"params\":{\"borrower\":\"The account having collateral seized\",\"liquidator\":\"The account receiving seized collateral\",\"seizeTokens\":\"The number of cTokens to seize\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"supplyRatePerBlock()\":{\"return\":\"The supply interest rate per block, scaled by 1e18\"},\"totalBorrowsCurrent()\":{\"return\":\"The total borrows with interest\"},\"transfer(address,uint256)\":{\"params\":{\"amount\":\"The number of tokens to transfer\",\"dst\":\"The address of the destination account\"},\"return\":\"Whether or not the transfer succeeded\"},\"transferFrom(address,address,uint256)\":{\"params\":{\"amount\":\"The number of tokens to transfer\",\"dst\":\"The address of the destination account\",\"src\":\"The address of the source account\"},\"return\":\"Whether or not the transfer succeeded\"}},\"title\":\"Compound's CErc20 Contract\"},\"userdoc\":{\"methods\":{\"_delegateCompLikeTo(address)\":{\"notice\":\"Admin call to delegate the votes of the COMP-like underlying\"},\"_reduceReserves(uint256)\":{\"notice\":\"Accrues interest and reduces reserves by transferring to admin\"},\"_setAdminFee(uint256)\":{\"notice\":\"accrues interest and sets a new admin fee for the protocol using _setAdminFeeFresh\"},\"_setInterestRateModel(address)\":{\"notice\":\"accrues interest and updates the interest rate model using _setInterestRateModelFresh\"},\"_setNameAndSymbol(string,string)\":{\"notice\":\"updates the cToken ERC20 name and symbol\"},\"_setReserveFactor(uint256)\":{\"notice\":\"accrues interest and sets a new reserve factor for the protocol using _setReserveFactorFresh\"},\"_withdrawAdminFees(uint256)\":{\"notice\":\"Accrues interest and reduces admin fees by transferring to admin\"},\"_withdrawFuseFees(uint256)\":{\"notice\":\"Accrues interest and reduces Fuse fees by transferring to Fuse\"},\"accrueInterest()\":{\"notice\":\"Applies accrued interest to total borrows and reserves\"},\"allowance(address,address)\":{\"notice\":\"Get the current allowance from `owner` for `spender`\"},\"approve(address,uint256)\":{\"notice\":\"Approve `spender` to transfer up to `amount` from `src`\"},\"balanceOf(address)\":{\"notice\":\"Get the token balance of the `owner`\"},\"balanceOfUnderlying(address)\":{\"notice\":\"Get the underlying balance of the `owner`\"},\"borrow(uint256)\":{\"notice\":\"Sender borrows assets from the protocol to their own address\"},\"borrowBalanceCurrent(address)\":{\"notice\":\"Accrue interest to updated borrowIndex and then calculate account's borrow balance using the updated borrowIndex\"},\"borrowBalanceStored(address)\":{\"notice\":\"Return the borrow balance of account based on stored data\"},\"borrowRatePerBlock()\":{\"notice\":\"Returns the current per-block borrow interest rate for this cToken\"},\"exchangeRateCurrent()\":{\"notice\":\"Accrue interest then return the up-to-date exchange rate\"},\"exchangeRateStored()\":{\"notice\":\"Calculates the exchange rate from the underlying to the CToken\"},\"getAccountSnapshot(address)\":{\"notice\":\"Get a snapshot of the account's balances, and the cached exchange rate\"},\"getCash()\":{\"notice\":\"Get cash balance of this cToken in the underlying asset\"},\"initialize(address,address,address,string,string,uint256,uint256)\":{\"notice\":\"Initialize the new money market\"},\"initialize(address,address,uint256,string,string,uint8,uint256,uint256)\":{\"notice\":\"Initialize the money market\"},\"liquidateBorrow(address,uint256,address)\":{\"notice\":\"The sender liquidates the borrowers collateral. The collateral seized is transferred to the liquidator.\"},\"mint(uint256)\":{\"notice\":\"Sender supplies assets into the market and receives cTokens in exchange\"},\"redeem(uint256)\":{\"notice\":\"Sender redeems cTokens in exchange for the underlying asset\"},\"redeemUnderlying(uint256)\":{\"notice\":\"Sender redeems cTokens in exchange for a specified amount of underlying asset\"},\"repayBorrow(uint256)\":{\"notice\":\"Sender repays their own borrow\"},\"repayBorrowBehalf(address,uint256)\":{\"notice\":\"Sender repays a borrow belonging to borrower\"},\"seize(address,address,uint256)\":{\"notice\":\"Transfers collateral tokens (this market) to the liquidator.\"},\"supplyRatePerBlock()\":{\"notice\":\"Returns the current per-block supply interest rate for this cToken\"},\"totalBorrowsCurrent()\":{\"notice\":\"Returns the current total borrows plus accrued interest\"},\"transfer(address,uint256)\":{\"notice\":\"Transfer `amount` tokens from `msg.sender` to `dst`\"},\"transferFrom(address,address,uint256)\":{\"notice\":\"Transfer `amount` tokens from `src` to `dst`\"}},\"notice\":\"CTokens which wrap an EIP-20 underlying\"}},\"settings\":{\"compilationTarget\":{\"contracts/CErc20.sol\":\"CErc20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/CErc20.sol\":{\"keccak256\":\"0x37e284e3ca9a2821c3ad1001d110ca529820646f65dd441f5907070408b20bc2\",\"urls\":[\"bzz-raw://cb025aa0f581e05f023e5aef44cfcd47cdece7ec4cf53973d89834f5037666d2\",\"dweb:/ipfs/QmaY78mEyhUCuvbMVdGzpKmkw9yKoHz5noSg5REZgipupY\"]},\"contracts/CToken.sol\":{\"keccak256\":\"0xc3a5a827241528049e20a24cc446558c8a9272909f75ce5d1cf14ae3ab5feba3\",\"urls\":[\"bzz-raw://a403db2bf1a8e5e9384df19600bd18d4251056818b094afcdab418e683bb5cb8\",\"dweb:/ipfs/QmdkRbFGtKP67tNNqyH7BraDRGerwRNA7ktscbFV9LioM2\"]},\"contracts/CTokenInterfaces.sol\":{\"keccak256\":\"0xc8a056c724ef4f0215ece6011e7ac1007c9dc7611ce5160d470ec858bbb06bd3\",\"urls\":[\"bzz-raw://58951693d1b53d2722e55b068bab2b570f4b044d89c28ed6b53bac6e95aeb662\",\"dweb:/ipfs/QmQiNTw5jZR74WjKfX2bPiuTT4tuFuq8rx7QxEVyVvdGLn\"]},\"contracts/CarefulMath.sol\":{\"keccak256\":\"0x1487237dbbbb73ad43c8eff16e78311753719a94a5065f574de5c91b672c56f8\",\"urls\":[\"bzz-raw://349966a236f313b2cb42e1942832e6bd7e134f65f6654e6c4d46788e65cc4a9b\",\"dweb:/ipfs/Qmebpv8i5jLR4fLgpZHQZRLu6aefVAbLC2yUk9ABEekquz\"]},\"contracts/ComptrollerInterface.sol\":{\"keccak256\":\"0xecfb84fabc9792d0b1c912886249c67bc42c39eb065d962d0b9a5f3736af5892\",\"urls\":[\"bzz-raw://711547ebc1a7f18b271118dd98276771953a9d7b3674716f67d247be9b907372\",\"dweb:/ipfs/QmbVZNvkBp8miByATrL6y5j8MePdcQ8uTAUZMpKrhpLgoa\"]},\"contracts/ComptrollerStorage.sol\":{\"keccak256\":\"0x83961d3c12984fe4afc72717fc44b2d868563d053a0eceda0cbf17ec6b255913\",\"urls\":[\"bzz-raw://ea667c2de43881f9be19f4f75dec348632273178965fc9b3655705d853b032bb\",\"dweb:/ipfs/QmZP6sbNFSgFZrAEvfRjhp1NtGj6U6Sea3JGiKG96AHyeP\"]},\"contracts/EIP20Interface.sol\":{\"keccak256\":\"0xee33b8b333743308a9153a59f22da2cadb22cedef4403fe039bf9e057c9c729a\",\"urls\":[\"bzz-raw://5427fdb941300d36a424da0a0a5800e3b2ca51c9c922831dbfce2f6637402b43\",\"dweb:/ipfs/QmTrvmLynqSUPjsGW2dpiQ91dSmn4xzccQiwr8qaBtyvjH\"]},\"contracts/EIP20NonStandardInterface.sol\":{\"keccak256\":\"0x469899442dd9640bfc2c670d404ad3027e48df5df8e5aeab0e25cc6b6aae05f5\",\"urls\":[\"bzz-raw://d8c4498abaf539eb413a2f1a916d75945adc8bd4ef437f8450cb67e07be3f38d\",\"dweb:/ipfs/QmaFpWfnhAMYW21rbT5PEszn4TGHdGU58Eq5AfZsCuapZ3\"]},\"contracts/ErrorReporter.sol\":{\"keccak256\":\"0xe9587478bc9efad203cab02b8aecae32828cfc9a271b13ae3c018e38e44aab32\",\"urls\":[\"bzz-raw://2eb34bdbbbc410fb401d50ddca44a7421a1d8191711c569ed5bcec1c1b07a05c\",\"dweb:/ipfs/QmYKNCYppyx3NGiwtjdLEmxUMgfnFBqT4pnvnhnBrPgrxS\"]},\"contracts/Exponential.sol\":{\"keccak256\":\"0xfda0e2b610541cf1cf316a0000c89a1069ccc21f1566affc0a058810e2b835d3\",\"urls\":[\"bzz-raw://fe319f184f1b5f27019d3d890124cd24e466d27153ac38eb9ff6b16efbad48b9\",\"dweb:/ipfs/Qmcev6jCmtdCviJxUQvUCmesPDShRDSvdfUEfvsqd4GEJA\"]},\"contracts/ExponentialNoError.sol\":{\"keccak256\":\"0x713a089f4bbcaec1d3924fc7d9a2154904a39f46cb6f25b713167dbe5f21623e\",\"urls\":[\"bzz-raw://d7108d68af7c5effd4272615ceba54e79e585f6b8be5aabc7602245c84c7b9e0\",\"dweb:/ipfs/QmQZo2XpxW7w5viVEg71mi9eKaAYD7HUqfCMB5yCCPVnc5\"]},\"contracts/IFuseFeeDistributor.sol\":{\"keccak256\":\"0xb5d287b8e05574d38bd5d0b413f44b4c5d312f28188573ac60abe78123fbd92c\",\"urls\":[\"bzz-raw://84c2bbf746a82aaa100bee90c7dd40411c723bded124bb1775bf72bf7fda8a2c\",\"dweb:/ipfs/QmToQzDtz9BV2tvU71YsfWjdaZu5qpP1xKFZ1TkQgubhDb\"]},\"contracts/InterestRateModel.sol\":{\"keccak256\":\"0x0cc0dbd1991e5dcdcff58b0c82a9471a0fb9df26763e5e7415e1d081b7332409\",\"urls\":[\"bzz-raw://f4d7936aefc43ea2724f0e472b8f1517f1ca40170258ab9d5bbd0862dd0c4f13\",\"dweb:/ipfs/QmfYjG1Sm3kNwbhomHCWhMqw9LvaJVWVzBe4Te5BHRbTQS\"]},\"contracts/PriceOracle.sol\":{\"keccak256\":\"0x62ba3a5ec8f06d456ab089d6ca7f9d14d3a6ce6814923271ca60a6990918fb41\",\"urls\":[\"bzz-raw://aa6d2f20efdd5389161eb15bdab98b5628dc8cd5354394bbed35bb14d3612506\",\"dweb:/ipfs/QmVfo4eCDuk8LMSywpBjZBxCv7zLCNsG6u3nyD1d4CYwsD\"]}},\"version\":1}"},"CompLike":{"abi":[{"constant":false,"inputs":[{"internalType":"address","name":"delegatee","type":"address"}],"name":"delegate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"delegate(address)":"5c19a95c"}},"metadata":"{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"}],\"name\":\"delegate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/CErc20.sol\":\"CompLike\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/CErc20.sol\":{\"keccak256\":\"0x37e284e3ca9a2821c3ad1001d110ca529820646f65dd441f5907070408b20bc2\",\"urls\":[\"bzz-raw://cb025aa0f581e05f023e5aef44cfcd47cdece7ec4cf53973d89834f5037666d2\",\"dweb:/ipfs/QmaY78mEyhUCuvbMVdGzpKmkw9yKoHz5noSg5REZgipupY\"]},\"contracts/CToken.sol\":{\"keccak256\":\"0xc3a5a827241528049e20a24cc446558c8a9272909f75ce5d1cf14ae3ab5feba3\",\"urls\":[\"bzz-raw://a403db2bf1a8e5e9384df19600bd18d4251056818b094afcdab418e683bb5cb8\",\"dweb:/ipfs/QmdkRbFGtKP67tNNqyH7BraDRGerwRNA7ktscbFV9LioM2\"]},\"contracts/CTokenInterfaces.sol\":{\"keccak256\":\"0xc8a056c724ef4f0215ece6011e7ac1007c9dc7611ce5160d470ec858bbb06bd3\",\"urls\":[\"bzz-raw://58951693d1b53d2722e55b068bab2b570f4b044d89c28ed6b53bac6e95aeb662\",\"dweb:/ipfs/QmQiNTw5jZR74WjKfX2bPiuTT4tuFuq8rx7QxEVyVvdGLn\"]},\"contracts/CarefulMath.sol\":{\"keccak256\":\"0x1487237dbbbb73ad43c8eff16e78311753719a94a5065f574de5c91b672c56f8\",\"urls\":[\"bzz-raw://349966a236f313b2cb42e1942832e6bd7e134f65f6654e6c4d46788e65cc4a9b\",\"dweb:/ipfs/Qmebpv8i5jLR4fLgpZHQZRLu6aefVAbLC2yUk9ABEekquz\"]},\"contracts/ComptrollerInterface.sol\":{\"keccak256\":\"0xecfb84fabc9792d0b1c912886249c67bc42c39eb065d962d0b9a5f3736af5892\",\"urls\":[\"bzz-raw://711547ebc1a7f18b271118dd98276771953a9d7b3674716f67d247be9b907372\",\"dweb:/ipfs/QmbVZNvkBp8miByATrL6y5j8MePdcQ8uTAUZMpKrhpLgoa\"]},\"contracts/ComptrollerStorage.sol\":{\"keccak256\":\"0x83961d3c12984fe4afc72717fc44b2d868563d053a0eceda0cbf17ec6b255913\",\"urls\":[\"bzz-raw://ea667c2de43881f9be19f4f75dec348632273178965fc9b3655705d853b032bb\",\"dweb:/ipfs/QmZP6sbNFSgFZrAEvfRjhp1NtGj6U6Sea3JGiKG96AHyeP\"]},\"contracts/EIP20Interface.sol\":{\"keccak256\":\"0xee33b8b333743308a9153a59f22da2cadb22cedef4403fe039bf9e057c9c729a\",\"urls\":[\"bzz-raw://5427fdb941300d36a424da0a0a5800e3b2ca51c9c922831dbfce2f6637402b43\",\"dweb:/ipfs/QmTrvmLynqSUPjsGW2dpiQ91dSmn4xzccQiwr8qaBtyvjH\"]},\"contracts/EIP20NonStandardInterface.sol\":{\"keccak256\":\"0x469899442dd9640bfc2c670d404ad3027e48df5df8e5aeab0e25cc6b6aae05f5\",\"urls\":[\"bzz-raw://d8c4498abaf539eb413a2f1a916d75945adc8bd4ef437f8450cb67e07be3f38d\",\"dweb:/ipfs/QmaFpWfnhAMYW21rbT5PEszn4TGHdGU58Eq5AfZsCuapZ3\"]},\"contracts/ErrorReporter.sol\":{\"keccak256\":\"0xe9587478bc9efad203cab02b8aecae32828cfc9a271b13ae3c018e38e44aab32\",\"urls\":[\"bzz-raw://2eb34bdbbbc410fb401d50ddca44a7421a1d8191711c569ed5bcec1c1b07a05c\",\"dweb:/ipfs/QmYKNCYppyx3NGiwtjdLEmxUMgfnFBqT4pnvnhnBrPgrxS\"]},\"contracts/Exponential.sol\":{\"keccak256\":\"0xfda0e2b610541cf1cf316a0000c89a1069ccc21f1566affc0a058810e2b835d3\",\"urls\":[\"bzz-raw://fe319f184f1b5f27019d3d890124cd24e466d27153ac38eb9ff6b16efbad48b9\",\"dweb:/ipfs/Qmcev6jCmtdCviJxUQvUCmesPDShRDSvdfUEfvsqd4GEJA\"]},\"contracts/ExponentialNoError.sol\":{\"keccak256\":\"0x713a089f4bbcaec1d3924fc7d9a2154904a39f46cb6f25b713167dbe5f21623e\",\"urls\":[\"bzz-raw://d7108d68af7c5effd4272615ceba54e79e585f6b8be5aabc7602245c84c7b9e0\",\"dweb:/ipfs/QmQZo2XpxW7w5viVEg71mi9eKaAYD7HUqfCMB5yCCPVnc5\"]},\"contracts/IFuseFeeDistributor.sol\":{\"keccak256\":\"0xb5d287b8e05574d38bd5d0b413f44b4c5d312f28188573ac60abe78123fbd92c\",\"urls\":[\"bzz-raw://84c2bbf746a82aaa100bee90c7dd40411c723bded124bb1775bf72bf7fda8a2c\",\"dweb:/ipfs/QmToQzDtz9BV2tvU71YsfWjdaZu5qpP1xKFZ1TkQgubhDb\"]},\"contracts/InterestRateModel.sol\":{\"keccak256\":\"0x0cc0dbd1991e5dcdcff58b0c82a9471a0fb9df26763e5e7415e1d081b7332409\",\"urls\":[\"bzz-raw://f4d7936aefc43ea2724f0e472b8f1517f1ca40170258ab9d5bbd0862dd0c4f13\",\"dweb:/ipfs/QmfYjG1Sm3kNwbhomHCWhMqw9LvaJVWVzBe4Te5BHRbTQS\"]},\"contracts/PriceOracle.sol\":{\"keccak256\":\"0x62ba3a5ec8f06d456ab089d6ca7f9d14d3a6ce6814923271ca60a6990918fb41\",\"urls\":[\"bzz-raw://aa6d2f20efdd5389161eb15bdab98b5628dc8cd5354394bbed35bb14d3612506\",\"dweb:/ipfs/QmVfo4eCDuk8LMSywpBjZBxCv7zLCNsG6u3nyD1d4CYwsD\"]}},\"version\":1}"}},"contracts/CErc20Delegate.sol":{"CErc20Delegate":{"abi":[{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"cashPrior","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"interestAccumulated","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"borrowIndex","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalBorrows","type":"uint256"}],"name":"AccrueInterest","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"borrower","type":"address"},{"indexed":false,"internalType":"uint256","name":"borrowAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"accountBorrows","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalBorrows","type":"uint256"}],"name":"Borrow","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"error","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"info","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"detail","type":"uint256"}],"name":"Failure","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"liquidator","type":"address"},{"indexed":false,"internalType":"address","name":"borrower","type":"address"},{"indexed":false,"internalType":"uint256","name":"repayAmount","type":"uint256"},{"indexed":false,"internalType":"address","name":"cTokenCollateral","type":"address"},{"indexed":false,"internalType":"uint256","name":"seizeTokens","type":"uint256"}],"name":"LiquidateBorrow","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"minter","type":"address"},{"indexed":false,"internalType":"uint256","name":"mintAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"mintTokens","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldAdminFeeMantissa","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newAdminFeeMantissa","type":"uint256"}],"name":"NewAdminFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract ComptrollerInterface","name":"oldComptroller","type":"address"},{"indexed":false,"internalType":"contract ComptrollerInterface","name":"newComptroller","type":"address"}],"name":"NewComptroller","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldFuseFeeMantissa","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newFuseFeeMantissa","type":"uint256"}],"name":"NewFuseFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldImplementation","type":"address"},{"indexed":false,"internalType":"address","name":"newImplementation","type":"address"}],"name":"NewImplementation","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract InterestRateModel","name":"oldInterestRateModel","type":"address"},{"indexed":false,"internalType":"contract InterestRateModel","name":"newInterestRateModel","type":"address"}],"name":"NewMarketInterestRateModel","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldReserveFactorMantissa","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newReserveFactorMantissa","type":"uint256"}],"name":"NewReserveFactor","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"redeemer","type":"address"},{"indexed":false,"internalType":"uint256","name":"redeemAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"redeemTokens","type":"uint256"}],"name":"Redeem","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"payer","type":"address"},{"indexed":false,"internalType":"address","name":"borrower","type":"address"},{"indexed":false,"internalType":"uint256","name":"repayAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"accountBorrows","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalBorrows","type":"uint256"}],"name":"RepayBorrow","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"benefactor","type":"address"},{"indexed":false,"internalType":"uint256","name":"addAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newTotalReserves","type":"uint256"}],"name":"ReservesAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"admin","type":"address"},{"indexed":false,"internalType":"uint256","name":"reduceAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newTotalReserves","type":"uint256"}],"name":"ReservesReduced","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":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"constant":false,"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"name":"_becomeImplementation","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"compLikeDelegatee","type":"address"}],"name":"_delegateCompLikeTo","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"_prepare","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"reduceAmount","type":"uint256"}],"name":"_reduceReserves","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"newAdminFeeMantissa","type":"uint256"}],"name":"_setAdminFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"implementation_","type":"address"},{"internalType":"bool","name":"allowResign","type":"bool"},{"internalType":"bytes","name":"becomeImplementationData","type":"bytes"}],"name":"_setImplementationSafe","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"contract InterestRateModel","name":"newInterestRateModel","type":"address"}],"name":"_setInterestRateModel","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"}],"name":"_setNameAndSymbol","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"newReserveFactorMantissa","type":"uint256"}],"name":"_setReserveFactor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"withdrawAmount","type":"uint256"}],"name":"_withdrawAdminFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"withdrawAmount","type":"uint256"}],"name":"_withdrawFuseFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"accrualBlockNumber","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"accrueInterest","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"adminFeeMantissa","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOfUnderlying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"borrowAmount","type":"uint256"}],"name":"borrow","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"borrowBalanceCurrent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"borrowBalanceStored","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"borrowIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"borrowRatePerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"comptroller","outputs":[{"internalType":"contract ComptrollerInterface","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"exchangeRateCurrent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"exchangeRateStored","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"fuseFeeMantissa","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getAccountSnapshot","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getCash","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"contract ComptrollerInterface","name":"comptroller_","type":"address"},{"internalType":"contract InterestRateModel","name":"interestRateModel_","type":"address"},{"internalType":"uint256","name":"initialExchangeRateMantissa_","type":"uint256"},{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"uint8","name":"decimals_","type":"uint8"},{"internalType":"uint256","name":"reserveFactorMantissa_","type":"uint256"},{"internalType":"uint256","name":"adminFeeMantissa_","type":"uint256"}],"name":"initialize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"underlying_","type":"address"},{"internalType":"contract ComptrollerInterface","name":"comptroller_","type":"address"},{"internalType":"contract InterestRateModel","name":"interestRateModel_","type":"address"},{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"uint256","name":"reserveFactorMantissa_","type":"uint256"},{"internalType":"uint256","name":"adminFeeMantissa_","type":"uint256"}],"name":"initialize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"interestRateModel","outputs":[{"internalType":"contract InterestRateModel","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isCEther","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isCToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"borrower","type":"address"},{"internalType":"uint256","name":"repayAmount","type":"uint256"},{"internalType":"contract CTokenInterface","name":"cTokenCollateral","type":"address"}],"name":"liquidateBorrow","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"mintAmount","type":"uint256"}],"name":"mint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"protocolSeizeShareMantissa","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"redeemTokens","type":"uint256"}],"name":"redeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"redeemAmount","type":"uint256"}],"name":"redeemUnderlying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"repayAmount","type":"uint256"}],"name":"repayBorrow","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"borrower","type":"address"},{"internalType":"uint256","name":"repayAmount","type":"uint256"}],"name":"repayBorrowBehalf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"reserveFactorMantissa","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"liquidator","type":"address"},{"internalType":"address","name":"borrower","type":"address"},{"internalType":"uint256","name":"seizeTokens","type":"uint256"}],"name":"seize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"supplyRatePerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalAdminFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalBorrows","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"totalBorrowsCurrent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalFuseFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalReserves","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"src","type":"address"},{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"underlying","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b5061600c80620000216000396000f3fe6080604052600436106103765760003560e01c8063852a12e3116101d1578063ae9d70b011610102578063dc028ab1116100a0578063f5e3c4621161006f578063f5e3c46214610f69578063f8f9da2814610fac578063fca7820b14610fc1578063fe9c44ae14610feb57610376565b8063dc028ab114610ed1578063dd62ed3e14610ee6578063f2b3abbd14610f21578063f3fdb15a14610f5457610376565b8063c37f68e2116100dc578063c37f68e214610e0f578063c5ebeaec14610e68578063db006a7514610e92578063dbfe7c1914610ebc57610376565b8063ae9d70b014610da2578063b2a02ff114610db7578063bd6d894d14610dfa57610376565b8063a0712d681161016f578063a7b820df11610149578063a7b820df14610d15578063a9059cbb14610d3f578063aa5af0fd14610d78578063ac784ddc14610d8d57610376565b8063a0712d6814610b7a578063a0b0d28914610ba4578063a6afed9514610d0057610376565b806391dd36c6116101ab57806391dd36c614610ade57806395d89b4114610b0857806395dd919314610b1d578063a03dce8d14610b5057610376565b8063852a12e314610a8a5780638d02d9a114610ab45780638f840ddd14610ac957610376565b80633b1d21a2116102ab57806361feacff116102495780636f307dc3116102235780636f307dc3146109fa57806370a0823114610a0f57806373acee9814610a425780637f1e06be14610a5757610376565b806361feacff146109bb5780636752e702146109d05780636c540baf146109e557610376565b806356e677281161028557806356e67728146108d05780635c60da1b1461094b5780635fe3b5671461097c578063601a0bf11461099157610376565b80633b1d21a21461081457806347bd37181461082957806350d85b731461083e57610376565b8063182df0f5116103185780632608f818116102f25780632608f818146106b2578063313ce567146106eb57806334154d4c146107165780633af9e669146107e157610376565b8063182df0f5146106525780631db789441461066757806323b872dd1461066f57610376565b80630f8855e8116103545780630f8855e81461048e578063173b9904146105f557806317bfdfbc1461060a57806318160ddd1461063d57610376565b806306fdde031461037b578063095ea7b3146104055780630e75270214610452575b600080fd5b34801561038757600080fd5b50610390611000565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103ca5781810151838201526020016103b2565b50505050905090810190601f1680156103f75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561041157600080fd5b5061043e6004803603604081101561042857600080fd5b506001600160a01b03813516906020013561108b565b604080519115158252519081900360200190f35b34801561045e57600080fd5b5061047c6004803603602081101561047557600080fd5b50356110f8565b60408051918252519081900360200190f35b34801561049a57600080fd5b506105f360048036036101008110156104b257600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b8111156104ec57600080fd5b8201836020820111156104fe57600080fd5b803590602001918460018302840111600160201b8311171561051f57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561057157600080fd5b82018360208201111561058357600080fd5b803590602001918460018302840111600160201b831117156105a457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505060ff833516935050506020810135906040013561110e565b005b34801561060157600080fd5b5061047c6113bc565b34801561061657600080fd5b5061047c6004803603602081101561062d57600080fd5b50356001600160a01b03166113c2565b34801561064957600080fd5b5061047c61143e565b34801561065e57600080fd5b5061047c611444565b6105f36114a7565b34801561067b57600080fd5b5061043e6004803603606081101561069257600080fd5b506001600160a01b038135811691602081013590911690604001356116b8565b3480156106be57600080fd5b5061047c600480360360408110156106d557600080fd5b506001600160a01b0381351690602001356116e6565b3480156106f757600080fd5b506107006116fc565b6040805160ff9092168252519081900360200190f35b34801561072257600080fd5b506105f36004803603604081101561073957600080fd5b810190602081018135600160201b81111561075357600080fd5b82018360208201111561076557600080fd5b803590602001918460018302840111600160201b8311171561078657600080fd5b919390929091602081019035600160201b8111156107a357600080fd5b8201836020820111156107b557600080fd5b803590602001918460018302840111600160201b831117156107d657600080fd5b509092509050611705565b3480156107ed57600080fd5b5061047c6004803603602081101561080457600080fd5b50356001600160a01b0316611771565b34801561082057600080fd5b5061047c611827565b34801561083557600080fd5b5061047c611836565b34801561084a57600080fd5b506105f36004803603606081101561086157600080fd5b6001600160a01b03823516916020810135151591810190606081016040820135600160201b81111561089257600080fd5b8201836020820111156108a457600080fd5b803590602001918460018302840111600160201b831117156108c557600080fd5b50909250905061183c565b3480156108dc57600080fd5b506105f3600480360360208110156108f357600080fd5b810190602081018135600160201b81111561090d57600080fd5b82018360208201111561091f57600080fd5b803590602001918460018302840111600160201b8311171561094057600080fd5b5090925090506118c5565b34801561095757600080fd5b50610960611923565b604080516001600160a01b039092168252519081900360200190f35b34801561098857600080fd5b50610960611932565b34801561099d57600080fd5b5061047c600480360360208110156109b457600080fd5b5035611941565b3480156109c757600080fd5b5061047c611992565b3480156109dc57600080fd5b5061047c611998565b3480156109f157600080fd5b5061047c6119a3565b348015610a0657600080fd5b506109606119a9565b348015610a1b57600080fd5b5061047c60048036036020811015610a3257600080fd5b50356001600160a01b03166119b8565b348015610a4e57600080fd5b5061047c6119d3565b348015610a6357600080fd5b506105f360048036036020811015610a7a57600080fd5b50356001600160a01b0316611a46565b348015610a9657600080fd5b5061047c60048036036020811015610aad57600080fd5b5035611aeb565b348015610ac057600080fd5b5061047c611af6565b348015610ad557600080fd5b5061047c611afc565b348015610aea57600080fd5b5061047c60048036036020811015610b0157600080fd5b5035611b02565b348015610b1457600080fd5b50610390611b3f565b348015610b2957600080fd5b5061047c60048036036020811015610b4057600080fd5b50356001600160a01b0316611b9a565b348015610b5c57600080fd5b5061047c60048036036020811015610b7357600080fd5b5035611bfe565b348015610b8657600080fd5b5061047c60048036036020811015610b9d57600080fd5b5035611c3b565b348015610bb057600080fd5b506105f3600480360360e0811015610bc757600080fd5b6001600160a01b0382358116926020810135821692604082013590921691810190608081016060820135600160201b811115610c0257600080fd5b820183602082011115610c1457600080fd5b803590602001918460018302840111600160201b83111715610c3557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115610c8757600080fd5b820183602082011115610c9957600080fd5b803590602001918460018302840111600160201b83111715610cba57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505082359350505060200135611c47565b348015610d0c57600080fd5b5061047c611d60565b348015610d2157600080fd5b5061047c60048036036020811015610d3857600080fd5b5035611f25565b348015610d4b57600080fd5b5061043e60048036036040811015610d6257600080fd5b506001600160a01b038135169060200135611f62565b348015610d8457600080fd5b5061047c611f8f565b348015610d9957600080fd5b5061043e611f95565b348015610dae57600080fd5b5061047c611f9a565b348015610dc357600080fd5b5061047c60048036036060811015610dda57600080fd5b506001600160a01b03813581169160208101359091169060400135612052565b348015610e0657600080fd5b5061047c612076565b348015610e1b57600080fd5b50610e4260048036036020811015610e3257600080fd5b50356001600160a01b03166120ea565b604080519485526020850193909352838301919091526060830152519081900360800190f35b348015610e7457600080fd5b5061047c60048036036020811015610e8b57600080fd5b503561217f565b348015610e9e57600080fd5b5061047c60048036036020811015610eb557600080fd5b503561218a565b348015610ec857600080fd5b5061047c612195565b348015610edd57600080fd5b5061047c61219b565b348015610ef257600080fd5b5061047c60048036036040811015610f0957600080fd5b506001600160a01b03813581169160200135166121a1565b348015610f2d57600080fd5b5061047c60048036036020811015610f4457600080fd5b50356001600160a01b03166121cc565b348015610f6057600080fd5b50610960612206565b348015610f7557600080fd5b5061047c60048036036060811015610f8c57600080fd5b506001600160a01b03813581169160208101359160409091013516612215565b348015610fb857600080fd5b5061047c61222d565b348015610fcd57600080fd5b5061047c60048036036020811015610fe457600080fd5b50356122a2565b348015610ff757600080fd5b5061043e6122df565b6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156110835780601f1061105857610100808354040283529160200191611083565b820191906000526020600020905b81548152906001019060200180831161106657829003601f168201915b505050505081565b3360008181526013602090815260408083206001600160a01b03871680855290835281842086905581518681529151939493909284927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a360019150505b92915050565b600080611104836122e4565b509150505b919050565b3373a731585ab05fc9f83555cf9bff8f58ee94e18f85146111605760405162461bcd60e51b8152600401808060200182810382526029815260200180615ec26029913960400191505060405180910390fd5b600b541580156111705750600c54155b6111ab5760405162461bcd60e51b8152600401808060200182810382526023815260200180615daf6023913960400191505060405180910390fd5b6007869055856111ec5760405162461bcd60e51b8152600401808060200182810382526030815260200180615dd26030913960400191505060405180910390fd5b60006111f789612347565b9050801561124c576040805162461bcd60e51b815260206004820152601a60248201527f73657474696e6720636f6d7074726f6c6c6572206661696c6564000000000000604482015290519081900360640190fd5b61125461247a565b600b55670de0b6b3a7640000600c5561126c8861247e565b905080156112ab5760405162461bcd60e51b8152600401808060200182810382526022815260200180615e2f6022913960400191505060405180910390fd5b85516112be906002906020890190615b9f565b5084516112d2906003906020880190615b9f565b506004805460ff191660ff86161790556112eb83612784565b90508015611340576040805162461bcd60e51b815260206004820152601d60248201527f73657474696e67207265736572766520666163746f72206661696c6564000000604482015290519081900360640190fd5b6113498261283d565b9050801561139e576040805162461bcd60e51b815260206004820152601860248201527f73657474696e672061646d696e20666565206661696c65640000000000000000604482015290519081900360640190fd5b50506001805460ff60b01b1916600160b01b17905550505050505050565b600a5481565b6000806113ce81612962565b60006113d8611d60565b14611423576040805162461bcd60e51b81526020600482015260166024820152751858d8dc9d59481a5b9d195c995cdd0819985a5b195960521b604482015290519081900360640190fd5b61142c83611b9a565b91505b61143881612a2b565b50919050565b60115481565b6000806000611451612a96565b9092509050600082600381111561146457fe5b146114a05760405162461bcd60e51b8152600401808060200182810382526035815260200180615f6f6035913960400191505060405180910390fd5b9150505b90565b33301480159061152d5750600560009054906101000a90046001600160a01b03166001600160a01b031663dd5cd22c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561150057600080fd5b505afa158015611514573d6000803e3d6000fd5b505050506040513d602081101561152a57600080fd5b50515b156116b65760008054604080516345cc970560e01b81526001600160a01b03909216600483015251829160609173a731585ab05fc9f83555cf9bff8f58ee94e18f85916345cc97059160248083019287929190829003018186803b15801561159457600080fd5b505afa1580156115a8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260608110156115d157600080fd5b81516020830151604080850180519151939592948301929184600160201b8211156115fb57600080fd5b90830190602082018581111561161057600080fd5b8251600160201b81118282018810171561162957600080fd5b82525081516020918201929091019080838360005b8381101561165657818101518382015260200161163e565b50505050905090810190601f1680156116835780820380516001836020036101000a031916815260200191505b5060405250506000549396509194509250506001600160a01b038085169116146116b2576116b2838383612b56565b5050505b565b6000806116c481612962565b60006116d233878787612d72565b1491506116de81612a2b565b509392505050565b6000806116f38484612ffe565b50949350505050565b60045460ff1681565b61170d613063565b611751576040805162461bcd60e51b815260206004820152601060248201526f31b0b63632b9103737ba1030b236b4b760811b604482015290519081900360640190fd5b61175d60028585615c19565b5061176a60038383615c19565b5050505050565b600061177b615c87565b604051806020016040528061178e612076565b90526001600160a01b0384166000908152601260205260408120549192509081906117ba9084906131de565b909250905060008260038111156117cd57fe5b1461181f576040805162461bcd60e51b815260206004820152601f60248201527f62616c616e636520636f756c64206e6f742062652063616c63756c6174656400604482015290519081900360640190fd5b949350505050565b6000611831613232565b905090565b600d5481565b611844613063565b61187e576040805162461bcd60e51b815260206004820152600660248201526510b0b236b4b760d11b604482015290519081900360640190fd5b6118bf848484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612b5692505050565b50505050565b333014806118d657506118d6613063565b61190f576040805162461bcd60e51b815260206004820152600560248201526410b9b2b63360d91b604482015290519081900360640190fd5b5050600180546001600160b01b0319169055565b6000546001600160a01b031681565b6005546001600160a01b031681565b60008061194d81612962565b6000611957611d60565b9050801561197d5761197581601181111561196e57fe5b603b613280565b92505061142f565b611986846132e6565b92505061143881612a2b565b600f5481565b666379da05b6000081565b600b5481565b6015546001600160a01b031681565b6001600160a01b031660009081526012602052604090205490565b6000806119df81612962565b60006119e9611d60565b14611a34576040805162461bcd60e51b81526020600482015260166024820152751858d8dc9d59481a5b9d195c995cdd0819985a5b195960521b604482015290519081900360640190fd5b600d549150611a4281612a2b565b5090565b611a4e613063565b611a895760405162461bcd60e51b815260040180806020018281038252602d815260200180615e02602d913960400191505060405180910390fd5b601554604080516317066a5760e21b81526001600160a01b03848116600483015291519190921691635c19a95c91602480830192600092919082900301818387803b158015611ad757600080fd5b505af115801561176a573d6000803e3d6000fd5b60006110f2826133b2565b60085481565b600e5481565b600080611b0e81612962565b6000611b18611d60565b90508015611b3657611975816011811115611b2f57fe5b6052613280565b6119868461283d565b6003805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156110835780601f1061105857610100808354040283529160200191611083565b6000806000611ba8846133f2565b90925090506000826003811115611bbb57fe5b14611bf75760405162461bcd60e51b8152600401808060200182810382526037815260200180615e516037913960400191505060405180910390fd5b9392505050565b600080611c0a81612962565b6000611c14611d60565b90508015611c3257611975816011811115611c2b57fe5b6033613280565b611986846134a6565b60008061110483613527565b60006702c68af0bb14000090506000886001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015611c8f57600080fd5b505afa158015611ca3573d6000803e3d6000fd5b505050506040513d6020811015611cb957600080fd5b50519050611ccd8888848989868a8a61110e565b601580546001600160a01b0319166001600160a01b038b81169190911791829055604080516318160ddd60e01b8152905192909116916318160ddd91600480820192602092909190829003018186803b158015611d2957600080fd5b505afa158015611d3d573d6000803e3d6000fd5b505050506040513d6020811015611d5357600080fd5b5050505050505050505050565b600080611d6b61247a565b905080600b541415611d815760009150506114a4565b6000611d8b613232565b90506000600660009054906101000a90046001600160a01b03166001600160a01b03166315f2405383600d54611dd0600e54611dcb600f54601054613567565b613567565b6040518463ffffffff1660e01b815260040180848152602001838152602001828152602001935050505060206040518083038186803b158015611e1257600080fd5b505afa158015611e26573d6000803e3d6000fd5b505050506040513d6020811015611e3c57600080fd5b5051905065048c27395000811115611e9b576040805162461bcd60e51b815260206004820152601c60248201527f626f72726f772072617465206973206162737572646c79206869676800000000604482015290519081900360640190fd5b600080611eaa85600b5461359d565b90925090506000826003811115611ebd57fe5b14611f0f576040805162461bcd60e51b815260206004820152601f60248201527f636f756c64206e6f742063616c63756c61746520626c6f636b2064656c746100604482015290519081900360640190fd5b611f1b858585846135c0565b9550505050505090565b600080611f3181612962565b6000611f3b611d60565b90508015611f5957611975816011811115611f5257fe5b6037613280565b611986846137d8565b600080611f6e81612962565b6000611f7c33338787612d72565b149150611f8881612a2b565b5092915050565b600c5481565b600081565b6006546000906001600160a01b031663b8168816611fb6613232565b600d54611fcd600e54611dcb600f54601054613567565b600854600954600a5401016040518563ffffffff1660e01b81526004018085815260200184815260200183815260200182815260200194505050505060206040518083038186803b15801561202157600080fd5b505afa158015612035573d6000803e3d6000fd5b505050506040513d602081101561204b57600080fd5b5051905090565b6000600161205f81612962565b61206b338686866138c0565b91506116de81612a2b565b60008061208281612962565b600061208c611d60565b146120d7576040805162461bcd60e51b81526020600482015260166024820152751858d8dc9d59481a5b9d195c995cdd0819985a5b195960521b604482015290519081900360640190fd5b6120df611444565b9150611a4281612a2b565b6001600160a01b038116600090815260126020526040812054819081908190818080612115896133f2565b93509050600081600381111561212757fe5b146121455760095b9750600096508695508594506121789350505050565b61214d612a96565b92509050600081600381111561215f57fe5b1461216b57600961212f565b5060009650919450925090505b9193509193565b60006110f282613c9f565b60006110f282613cdd565b60095481565b60105481565b6001600160a01b03918216600090815260136020908152604080832093909416825291909152205490565b6000806121d7611d60565b905080156121fd576121f58160118111156121ee57fe5b604b613280565b915050611109565b611bf78361247e565b6006546001600160a01b031681565b600080612223858585613d16565b5095945050505050565b6006546000906001600160a01b03166315f24053612249613232565b600d54612260600e54611dcb600f54601054613567565b6040518463ffffffff1660e01b815260040180848152602001838152602001828152602001935050505060206040518083038186803b15801561202157600080fd5b6000806122ae81612962565b60006122b8611d60565b905080156122d6576119758160118111156122cf57fe5b6059613280565b61198684612784565b600181565b60008060006122f281612962565b60006122fc611d60565b905080156123275761231a81601181111561231357fe5b6041613280565b9350600092506123389050565b612332333387613e02565b93509350505b61234181612a2b565b50915091565b600080600560009054906101000a90046001600160a01b03169050826001600160a01b0316627e3dd26040518163ffffffff1660e01b815260040160206040518083038186803b15801561239a57600080fd5b505afa1580156123ae573d6000803e3d6000fd5b505050506040513d60208110156123c457600080fd5b5051612417576040805162461bcd60e51b815260206004820152601c60248201527f6d61726b6572206d6574686f642072657475726e65642066616c736500000000604482015290519081900360640190fd5b600580546001600160a01b0319166001600160a01b03858116918217909255604080519284168352602083019190915280517f7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d9281900390910190a16000611bf7565b4390565b600080612489613063565b612499576121f56001604d613280565b6124a161247a565b600b54146124b5576121f5600a604c613280565b600660009054906101000a90046001600160a01b03169050826001600160a01b0316632191f92a6040518163ffffffff1660e01b815260040160206040518083038186803b15801561250657600080fd5b505afa15801561251a573d6000803e3d6000fd5b505050506040513d602081101561253057600080fd5b5051612583576040805162461bcd60e51b815260206004820152601c60248201527f6d61726b6572206d6574686f642072657475726e65642066616c736500000000604482015290519081900360640190fd5b600680546001600160a01b0319166001600160a01b03858116918217909255604080519284168352602083019190915280517fedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f9269281900390910190a16001600160a01b038116156126b55760408051600481526024810182526020810180516001600160e01b0316636cc1140b60e11b178152915181516001600160a01b0385169382918083835b6020831061264a5780518252601f19909201916020918201910161262b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146126ac576040519150601f19603f3d011682016040523d82523d6000602084013e6126b1565b606091505b5050505b60408051600481526024810182526020810180516001600160e01b031663742a137b60e11b178152915181516001600160a01b0387169382918083835b602083106127115780518252601f1990920191602091820191016126f2565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612773576040519150601f19603f3d011682016040523d82523d6000602084013e612778565b606091505b5060009150611bf79050565b600061278e613063565b6127a55761279e6001605a613280565b9050611109565b6127ad61247a565b600b54146127c15761279e600a605b613280565b670de0b6b3a76400006127e16127d984600854613567565b600954613567565b11156127f35761279e6002605c613280565b600a805490839055604080518281526020810185905281517faaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460929181900390910190a16000611bf7565b600061284761247a565b600b541461285b5761279e600a6054613280565b60001982141561286b5760085491505b6000612875614152565b9050670de0b6b3a764000061289561288f600a5486613567565b83613567565b11156128a7576121f560026055613280565b826008541461290d576128b8613063565b6128c8576121f560016053613280565b6008805490849055604080518281526020810186905281517fcdd0b588250e1398549f79cfdb8217c186688822905d6715b0834ea1c865594a929181900390910190a1505b806009541461295b576009805490829055604080518281526020810184905281517f92eef861b6533b7d3417f39c2ad7b460eed4e88a32fa3604f30e718b7602e7dc929181900390910190a1505b6000611bf7565b600154600160b01b900460ff166129ad576040805162461bcd60e51b815260206004820152600a6024820152691c994b595b9d195c995960b21b604482015290519081900360640190fd5b80612a1b57600560009054906101000a90046001600160a01b03166001600160a01b031663c90c20b16040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612a0257600080fd5b505af1158015612a16573d6000803e3d6000fd5b505050505b506001805460ff60b01b19169055565b6001805460ff60b01b1916600160b01b17905580612a9357600560009054906101000a90046001600160a01b03166001600160a01b031663632e51426040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611ad757600080fd5b50565b601154600090819080612ab157505060075460009150612b52565b6000612abb613232565b90506000612ac7615c87565b6000612ae984600d54612ae4600e54611dcb600f54601054613567565b6141a1565b935090506000816003811115612afb57fe5b14612b1057955060009450612b529350505050565b612b1a83866141ed565b925090506000816003811115612b2c57fe5b14612b4157955060009450612b529350505050565b5051600095509350612b5292505050565b9091565b600054604080516338e6a07360e11b81526001600160a01b039283166004820152918516602483015283151560448301525173a731585ab05fc9f83555cf9bff8f58ee94e18f85916371cd40e6916064808301926020929190829003018186803b158015612bc357600080fd5b505afa158015612bd7573d6000803e3d6000fd5b505050506040513d6020811015612bed57600080fd5b5051612c28576040805162461bcd60e51b8152602060048201526005602482015264085a5b5c1b60da1b604482015290519081900360640190fd5b8115612c3657612c3661429d565b600080546001600160a01b038581166001600160a01b031983161783556040516020602482018181528651604484015286519390941694612d2394309488949193849360649093019290860191908190849084905b83811015612ca3578181015183820152602001612c8b565b50505050905090810190601f168015612cd05780820380516001836020036101000a031916815260200191505b5060408051601f19818403018152918152602080830180516001600160e01b0316630adccee560e31b17905281518083019092526007825266216265636f6d6560c81b9082015290935091506142a29050565b50600054604080516001600160a01b038085168252909216602083015280517fd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a9281900390910190a150505050565b600554604080516317b9b84b60e31b81523060048201526001600160a01b03868116602483015285811660448301526064820185905291516000938493169163bdcdc25891608480830192602092919082900301818787803b158015612dd757600080fd5b505af1158015612deb573d6000803e3d6000fd5b505050506040513d6020811015612e0157600080fd5b505190508015612e2057612e186003605d836143f1565b91505061181f565b836001600160a01b0316856001600160a01b03161415612e4657612e186002605e613280565b60006001600160a01b038781169087161415612e655750600019612e8d565b506001600160a01b038086166000908152601360209081526040808320938a16835292905220545b600080600080612e9d858961359d565b90945092506000846003811115612eb057fe5b14612ece57612ec16009605e613280565b965050505050505061181f565b6001600160a01b038a16600090815260126020526040902054612ef1908961359d565b90945091506000846003811115612f0457fe5b14612f1557612ec16009605f613280565b6001600160a01b038916600090815260126020526040902054612f38908961447a565b90945090506000846003811115612f4b57fe5b14612f5c57612ec160096060613280565b6001600160a01b03808b16600090815260126020526040808220859055918b168152208190556000198514612fb4576001600160a01b03808b166000908152601360209081526040808320938f168352929052208390555b886001600160a01b03168a6001600160a01b0316600080516020615eeb8339815191528a6040518082815260200191505060405180910390a35060009a9950505050505050505050565b600080600061300c81612962565b6000613016611d60565b905080156130415761303481601181111561302d57fe5b6040613280565b9350600092506130529050565b61304c338787613e02565b93509350505b61305b81612a2b565b509250929050565b600554604080516303e1469160e61b815290516000926001600160a01b031691829163f851a44091600480820192602092909190829003018186803b1580156130ab57600080fd5b505afa1580156130bf573d6000803e3d6000fd5b505050506040513d60208110156130d557600080fd5b50516001600160a01b03163314801561314f5750806001600160a01b0316630a755ec26040518163ffffffff1660e01b815260040160206040518083038186803b15801561312257600080fd5b505afa158015613136573d6000803e3d6000fd5b505050506040513d602081101561314c57600080fd5b50515b806114a057503373a731585ab05fc9f83555cf9bff8f58ee94e18f851480156114a05750806001600160a01b0316632f1069ba6040518163ffffffff1660e01b815260040160206040518083038186803b1580156131ac57600080fd5b505afa1580156131c0573d6000803e3d6000fd5b505050506040513d60208110156131d657600080fd5b505191505090565b60008060006131eb615c87565b6131f586866144a0565b9092509050600082600381111561320857fe5b14613219575091506000905061322b565b600061322482614508565b9350935050505b9250929050565b601554604080516370a0823160e01b815230600482015290516000926001600160a01b03169182916370a0823191602480820192602092909190829003018186803b1580156131ac57600080fd5b60007f45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa08360118111156132af57fe5b8360638111156132bb57fe5b604080519283526020830191909152600082820152519081900360600190a1826011811115611bf757fe5b6000806132f1613063565b613301576121f56001603c613280565b61330961247a565b600b541461331d576121f5600a603e613280565b82613326613232565b1015613338576121f5600e603d613280565b600e5483111561334e576121f56002603f613280565b61335a600e5484614517565b600e819055905061336b3384614551565b604080513381526020810185905280820183905290517f3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e9181900360600190a16000611bf7565b6000806133be81612962565b60006133c8611d60565b905080156133e6576119758160118111156133df57fe5b602a613280565b611986336000866145d6565b6001600160a01b0381166000908152601460205260408120805482918291829182916134295750600094508493506134a192505050565b6134398160000154600c54614aa6565b9094509250600084600381111561344c57fe5b146134615750919350600092506134a1915050565b61346f838260010154614ae5565b9094509150600084600381111561348257fe5b146134975750919350600092506134a1915050565b5060009450925050505b915091565b6000806134b161247a565b600b54146134c5576121f5600a6035613280565b826134ce613232565b10156134e0576121f5600e6034613280565b6010548311156134f6576121f560026036613280565b61350260105484614517565b6010819055905061295b73a731585ab05fc9f83555cf9bff8f58ee94e18f8584614551565b600080600061353581612962565b600061353f611d60565b9050801561355d5761231a81601181111561355657fe5b6020613280565b6123323386614b10565b6000611bf78383604051806040016040528060118152602001706164646974696f6e206f766572666c6f7760781b815250614e8c565b6000808383116135b457506000905081830361322b565b5060039050600061322b565b60006135ca615c87565b6135e260405180602001604052808681525084614ee1565b905060006135f282600d54614f0b565b9050600061360282600d54613567565b905060006136236040518060200160405280600a5481525084600e54614f2a565b90506000613644604051806020016040528060095481525085601054614f2a565b90506000613665604051806020016040528060085481525086600f54614f2a565b9050600061367887600c54600c54614f2a565b600b8d9055600c819055600d869055600e8590556010849055600f839055604080518d8152602081018990528082018390526060810188905290519192507f4dec04e750ca11537cabcd8a9eab06494de08da3735bc8871cd41250e190bc04919081900360800190a16006546040805160248082018e905282518083039091018152604490910182526020810180516001600160e01b0316635efd023360e11b178152915181516001600160a01b0390941693919290918291908083835b602083106137555780518252601f199092019160209182019101613736565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146137b7576040519150601f19603f3d011682016040523d82523d6000602084013e6137bc565b606091505b50600091506137c89050565b9c9b505050505050505050505050565b6000806137e361247a565b600b54146137f7576121f5600a6039613280565b82613800613232565b1015613812576121f5600e6038613280565b600f54831115613828576121f56002603a613280565b613834600f5484614517565b905080600f8190555061295b600560009054906101000a90046001600160a01b03166001600160a01b031663f851a4406040518163ffffffff1660e01b815260040160206040518083038186803b15801561388e57600080fd5b505afa1580156138a2573d6000803e3d6000fd5b505050506040513d60208110156138b857600080fd5b505184614551565b6005546040805163d02f735160e01b81523060048201526001600160a01b038781166024830152868116604483015285811660648301526084820185905291516000938493169163d02f73519160a480830192602092919082900301818787803b15801561392d57600080fd5b505af1158015613941573d6000803e3d6000fd5b505050506040513d602081101561395757600080fd5b50519050801561396e57612e186003601d836143f1565b846001600160a01b0316846001600160a01b0316141561399457612e186006601e613280565b61399c615c9a565b6001600160a01b0385166000908152601260205260409020546139bf908561359d565b60208301819052828260038111156139d357fe5b60038111156139de57fe5b90525060009050815160038111156139f257fe5b14613a1c57613a136009601c83600001516003811115613a0e57fe5b6143f1565b9250505061181f565b613a3b846040518060200160405280666379da05b60000815250614f52565b60808201819052613a4d908590614517565b6060820152613a5a612a96565b60c0830181905282826003811115613a6e57fe5b6003811115613a7957fe5b9052506000905081516003811115613a8d57fe5b14613adf576040805162461bcd60e51b815260206004820152601860248201527f65786368616e67652072617465206d617468206572726f720000000000000000604482015290519081900360640190fd5b613aff60405180602001604052808360c001518152508260800151614f0b565b60a08201819052600e54613b1291613567565b60e08201526011546080820151613b299190614517565b6101008201526001600160a01b0386166000908152601260205260409020546060820151613b57919061447a565b6040830181905282826003811115613b6b57fe5b6003811115613b7657fe5b9052506000905081516003811115613b8a57fe5b14613ba657613a136009601b83600001516003811115613a0e57fe5b60e0810151600e556101008101516011556020808201516001600160a01b0380881660008181526012855260408082209490945583860151928b16808252908490209290925560608501518351908152925191939092600080516020615eeb833981519152929081900390910190a36080810151604080519182525130916001600160a01b03881691600080516020615eeb8339815191529181900360200190a360a081015160e082015160408051308152602081019390935282810191909152517fa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc59181900360600190a16000979650505050505050565b600080613cab81612962565b6000613cb5611d60565b90508015613cd357611975816011811115613ccc57fe5b600a613280565b6119863385614f7a565b600080613ce981612962565b6000613cf3611d60565b90508015613d0a576119758160118111156133df57fe5b611986338560006145d6565b6000806000613d2481612962565b6000613d2e611d60565b90508015613d5957613d4c816011811115613d4557fe5b6011613280565b935060009250613df09050565b846001600160a01b031663a6afed956040518163ffffffff1660e01b8152600401602060405180830381600087803b158015613d9457600080fd5b505af1158015613da8573d6000803e3d6000fd5b505050506040513d6020811015613dbe57600080fd5b505190508015613dde57613d4c816011811115613dd757fe5b6012613280565b613dea338888886152c0565b93509350505b613df981612a2b565b50935093915050565b60055460408051631200453160e11b81523060048201526001600160a01b0386811660248301528581166044830152606482018590529151600093849384939116916324008a629160848082019260209290919082900301818787803b158015613e6b57600080fd5b505af1158015613e7f573d6000803e3d6000fd5b505050506040513d6020811015613e9557600080fd5b505190508015613eb957613eac60036043836143f1565b92506000915061414a9050565b613ec161247a565b600b5414613ed557613eac600a6044613280565b613edd615ce7565b6001600160a01b0386166000908152601460205260409020600101546060820152613f07866133f2565b6080830181905260208301826003811115613f1e57fe5b6003811115613f2957fe5b9052506000905081602001516003811115613f4057fe5b14613f6a57613f5c6009604283602001516003811115613a0e57fe5b93506000925061414a915050565b600019851415613f835760808101516040820152613f8b565b604081018590525b613f998782604001516157b2565b60e082018190526080820151613fae9161359d565b60a0830181905260208301826003811115613fc557fe5b6003811115613fd057fe5b9052506000905081602001516003811115613fe757fe5b146140235760405162461bcd60e51b815260040180806020018281038252603a815260200180615e88603a913960400191505060405180910390fd5b614033600d548260e0015161359d565b60c083018190526020830182600381111561404a57fe5b600381111561405557fe5b905250600090508160200151600381111561406c57fe5b146140a85760405162461bcd60e51b8152600401808060200182810382526031815260200180615f0b6031913960400191505060405180910390fd5b60a080820180516001600160a01b03808a16600081815260146020908152604091829020948555600c5460019095019490945560c0870151600d81905560e088015195518251948f16855294840192909252828101949094526060820192909252608081019190915290517f1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1929181900390910190a160e00151600093509150505b935093915050565b600073a731585ab05fc9f83555cf9bff8f58ee94e18f856001600160a01b031663dd86fea16040518163ffffffff1660e01b815260040160206040518083038186803b15801561202157600080fd5b6000806000806141b1878761447a565b909250905060008260038111156141c457fe5b146141d5575091506000905061414a565b6141df818661359d565b935093505050935093915050565b60006141f7615c87565b60008061420c86670de0b6b3a7640000614aa6565b9092509050600082600381111561421f57fe5b1461423e5750604080516020810190915260008152909250905061322b565b60008061424b8388614ae5565b9092509050600082600381111561425e57fe5b146142805750604080516020810190915260008152909450925061322b915050565b604080516020810190915290815260009890975095505050505050565b6116b6565b606060006060856001600160a01b0316856040518082805190602001908083835b602083106142e25780518252601f1990920191602091820191016142c3565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614344576040519150601f19603f3d011682016040523d82523d6000602084013e614349565b606091505b5091509150816143e8578051156143635780518082602001fd5b8360405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156143ad578181015183820152602001614395565b50505050905090810190601f1680156143da5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b95945050505050565b60007f45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa084601181111561442057fe5b84606381111561442c57fe5b604080519283526020830191909152818101859052519081900360600190a1600384601181111561445957fe5b1461446f5783601181111561446a57fe5b61181f565b506103e80192915050565b6000808383018481106144925760009250905061322b565b50600291506000905061322b565b60006144aa615c87565b6000806144bb866000015186614aa6565b909250905060008260038111156144ce57fe5b146144ed5750604080516020810190915260008152909250905061322b565b60408051602081019091529081526000969095509350505050565b51670de0b6b3a7640000900490565b6000611bf78383604051806040016040528060158152602001747375627472616374696f6e20756e646572666c6f7760581b81525061598f565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091018252602081810180516001600160e01b031663a9059cbb60e01b1790528251808401909352601983527f544f4b454e5f5452414e534645525f4f55545f4641494c454400000000000000908301526145d2916159e9565b5050565b60008215806145e3575081155b61461e5760405162461bcd60e51b8152600401808060200182810382526034815260200180615fa46034913960400191505060405180910390fd5b614626615d2d565b61462e612a96565b604083018190526020830182600381111561464557fe5b600381111561465057fe5b905250600090508160200151600381111561466757fe5b1461468b576146836009602e83602001516003811115613a0e57fe5b915050611bf7565b831561470c5760608101849052604080516020810182529082015181526146b290856131de565b60808301819052602083018260038111156146c957fe5b60038111156146d457fe5b90525060009050816020015160038111156146eb57fe5b14614707576146836009602c83602001516003811115613a0e57fe5b614785565b6147288360405180602001604052808460400151815250615a71565b606083018190526020830182600381111561473f57fe5b600381111561474a57fe5b905250600090508160200151600381111561476157fe5b1461477d576146836009602d83602001516003811115613a0e57fe5b608081018390525b60055460608201516040805163eabe7d9160e01b81523060048201526001600160a01b03898116602483015260448201939093529051600093929092169163eabe7d919160648082019260209290919082900301818787803b1580156147ea57600080fd5b505af11580156147fe573d6000803e3d6000fd5b505050506040513d602081101561481457600080fd5b5051905080156148345761482b6003602b836143f1565b92505050611bf7565b61483c61247a565b600b54146148505761482b600a602f613280565b614860601154836060015161359d565b60a084018190526020840182600381111561487757fe5b600381111561488257fe5b905250600090508260200151600381111561489957fe5b146148b55761482b6009603184602001516003811115613a0e57fe5b6001600160a01b03861660009081526012602052604090205460608301516148dd919061359d565b60c08401819052602084018260038111156148f457fe5b60038111156148ff57fe5b905250600090508260200151600381111561491657fe5b146149325761482b6009603084602001516003811115613a0e57fe5b816080015161493f613232565b10156149515761482b600e6032613280565b60a082015160115560c08201516001600160a01b0387166000908152601260205260409020556080820151614987908790614551565b6060820151604080519182525130916001600160a01b03891691600080516020615eeb8339815191529181900360200190a36080820151606080840151604080516001600160a01b038b168152602081019490945283810191909152517fe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a9299281900390910190a160055460808301516060840151604080516351dff98960e01b81523060048201526001600160a01b038b81166024830152604482019490945260648101929092525191909216916351dff98991608480830192600092919082900301818387803b158015614a7b57600080fd5b505af1158015614a8f573d6000803e3d6000fd5b5060009250614a9c915050565b9695505050505050565b60008083614ab95750600090508061322b565b83830283858281614ac657fe5b0414614ada5750600291506000905061322b565b60009250905061322b565b60008082614af9575060019050600061322b565b6000838581614b0457fe5b04915091509250929050565b60055460408051634ef4c3e160e01b81523060048201526001600160a01b03858116602483015260448201859052915160009384938493911691634ef4c3e19160648082019260209290919082900301818787803b158015614b7157600080fd5b505af1158015614b85573d6000803e3d6000fd5b505050506040513d6020811015614b9b57600080fd5b505190508015614bbf57614bb260036021836143f1565b92506000915061322b9050565b614bc761247a565b600b5414614bdb57614bb2600a6024613280565b614be3615d2d565b614beb612a96565b6040830181905260208301826003811115614c0257fe5b6003811115614c0d57fe5b9052506000905081602001516003811115614c2457fe5b14614c4e57614c406009602383602001516003811115613a0e57fe5b93506000925061322b915050565b614c5886866157b2565b60c0820181905260408051602081018252908301518152614c799190615a71565b6060830181905260208301826003811115614c9057fe5b6003811115614c9b57fe5b9052506000905081602001516003811115614cb257fe5b14614d04576040805162461bcd60e51b815260206004820181905260248201527f4d494e545f45584348414e47455f43414c43554c4154494f4e5f4641494c4544604482015290519081900360640190fd5b614d146011548260600151613567565b60808201526001600160a01b0386166000908152601260205260409020546060820151614d419190613567565b60a0820181905260808201516011556001600160a01b0387166000818152601260209081526040918290209390935560c084015160608086015183519485529484019190915282820193909352517f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f929181900390910190a1606081015160408051918252516001600160a01b038816913091600080516020615eeb8339815191529181900360200190a360055460c08201516060830151604080516341c728b960e01b81523060048201526001600160a01b038b81166024830152604482019490945260648101929092525191909216916341c728b991608480830192600092919082900301818387803b158015614e5957600080fd5b505af1158015614e6d573d6000803e3d6000fd5b5060009250614e7a915050565b8160c001519350935050509250929050565b600083830182858210156116f35760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156143ad578181015183820152602001614395565b614ee9615c87565b6040518060200160405280614f02856000015185615a88565b90529392505050565b6000614f15615c87565b614f1f8484614ee1565b905061181f81614508565b6000614f34615c87565b614f3e8585614ee1565b90506143e8614f4c82614508565b84613567565b6000670de0b6b3a7640000614f6b848460000151615a88565b81614f7257fe5b049392505050565b6005546040805163368f515360e21b81523060048201526001600160a01b0385811660248301526044820185905291516000938493169163da3d454c91606480830192602092919082900301818787803b158015614fd757600080fd5b505af1158015614feb573d6000803e3d6000fd5b505050506040513d602081101561500157600080fd5b5051905080156150205761501860036010836143f1565b9150506110f2565b61502861247a565b600b541461503c57615018600a600c613280565b6000615046613232565b9050838110156150655761505c600e600b613280565b925050506110f2565b61506d615d6b565b615076866133f2565b602083018190528282600381111561508a57fe5b600381111561509557fe5b90525060009050815160038111156150a957fe5b146150ce576150c460098083600001516003811115613a0e57fe5b93505050506110f2565b6150dc81602001518661447a565b60408301819052828260038111156150f057fe5b60038111156150fb57fe5b905250600090508151600381111561510f57fe5b1461512b576150c46009600e83600001516003811115613a0e57fe5b6005546040808301518151631de6c8a560e21b8152306004820152602481019190915290516001600160a01b039092169163779b2294916044808201926020929091908290030181600087803b15801561518457600080fd5b505af1158015615198573d6000803e3d6000fd5b505050506040513d60208110156151ae57600080fd5b5051925082156151c5576150c460036010856143f1565b6151d1600d548661447a565b60608301819052828260038111156151e557fe5b60038111156151f057fe5b905250600090508151600381111561520457fe5b14615220576150c46009600d83600001516003811115613a0e57fe5b6040808201516001600160a01b0388166000908152601460205291909120908155600c546001909101556060810151600d5561525c8686614551565b60408082015160608084015183516001600160a01b038b168152602081018a9052808501939093529082015290517f13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab809181900360800190a160009695505050505050565b60055460408051632fe3f38f60e11b81523060048201526001600160a01b0384811660248301528781166044830152868116606483015260848201869052915160009384938493911691635fc7e71e9160a48082019260209290919082900301818787803b15801561533157600080fd5b505af1158015615345573d6000803e3d6000fd5b505050506040513d602081101561535b57600080fd5b50519050801561537f5761537260036014836143f1565b9250600091506157a99050565b61538761247a565b600b541461539b57615372600a6018613280565b6153a361247a565b846001600160a01b0316636c540baf6040518163ffffffff1660e01b815260040160206040518083038186803b1580156153dc57600080fd5b505afa1580156153f0573d6000803e3d6000fd5b505050506040513d602081101561540657600080fd5b50511461541957615372600a6013613280565b866001600160a01b0316866001600160a01b0316141561543f5761537260066019613280565b846154505761537260076017613280565b6000198514156154665761537260076016613280565b600080615474898989613e02565b909250905081156154a45761549582601181111561548e57fe5b601a613280565b9450600093506157a992505050565b6005546040805163c488847b60e01b81523060048201526001600160a01b038981166024830152604482018590528251600094859492169263c488847b926064808301939192829003018186803b1580156154fe57600080fd5b505afa158015615512573d6000803e3d6000fd5b505050506040513d604081101561552857600080fd5b508051602090910151909250905081156155735760405162461bcd60e51b8152600401808060200182810382526033815260200180615f3c6033913960400191505060405180910390fd5b80886001600160a01b03166370a082318c6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156155ca57600080fd5b505afa1580156155de573d6000803e3d6000fd5b505050506040513d60208110156155f457600080fd5b50511015615649576040805162461bcd60e51b815260206004820152601860248201527f4c49515549444154455f5345495a455f544f4f5f4d5543480000000000000000604482015290519081900360640190fd5b60006001600160a01b03891630141561566f57615668308d8d856138c0565b90506156f9565b6040805163b2a02ff160e01b81526001600160a01b038e811660048301528d81166024830152604482018590529151918b169163b2a02ff1916064808201926020929091908290030181600087803b1580156156ca57600080fd5b505af11580156156de573d6000803e3d6000fd5b505050506040513d60208110156156f457600080fd5b505190505b8015615743576040805162461bcd60e51b81526020600482015260146024820152731d1bdad95b881cd95a5e9d5c994819985a5b195960621b604482015290519081900360640190fd5b604080516001600160a01b03808f168252808e1660208301528183018790528b1660608201526080810184905290517f298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb529181900360a00190a16000975092955050505050505b94509492505050565b601554604080516370a0823160e01b8152306004820152905160009283926001600160a01b03909116916370a0823191602480820192602092909190829003018186803b15801561580257600080fd5b505afa158015615816573d6000803e3d6000fd5b505050506040513d602081101561582c57600080fd5b5051604080516001600160a01b038716602482015230604482015260648082018790528251808303909101815260849091018252602081810180516001600160e01b03166323b872dd60e01b1790528251808401909352601883527f544f4b454e5f5452414e534645525f494e5f4641494c45440000000000000000908301529192506158b991906159e9565b601554604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561590457600080fd5b505afa158015615918573d6000803e3d6000fd5b505050506040513d602081101561592e57600080fd5b5051905081811015615987576040805162461bcd60e51b815260206004820152601a60248201527f544f4b454e5f5452414e534645525f494e5f4f564552464c4f57000000000000604482015290519081900360640190fd5b039392505050565b600081848411156159e15760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156143ad578181015183820152602001614395565b505050900390565b601554606090615a03906001600160a01b031684846142a2565b8051909150156116b257808060200190516020811015615a2257600080fd5b505182906118bf5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156143ad578181015183820152602001614395565b6000806000615a7e615c87565b6131f58686615aca565b6000611bf783836040518060400160405280601781526020017f6d756c7469706c69636174696f6e206f766572666c6f77000000000000000000815250615b29565b6000615ad4615c87565b600080615ae9670de0b6b3a764000087614aa6565b90925090506000826003811115615afc57fe5b14615b1b5750604080516020810190915260008152909250905061322b565b6132248186600001516141ed565b6000831580615b36575082155b15615b4357506000611bf7565b83830283858281615b5057fe5b041483906116f35760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156143ad578181015183820152602001614395565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10615be057805160ff1916838001178555615c0d565b82800160010185558215615c0d579182015b82811115615c0d578251825591602001919060010190615bf2565b50611a42929150615d94565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10615c5a5782800160ff19823516178555615c0d565b82800160010185558215615c0d579182015b82811115615c0d578235825591602001919060010190615c6c565b6040518060200160405280600081525090565b604080516101208101909152806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040805161010081019091528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040805160e0810190915280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b604080516080810190915280600081526020016000815260200160008152602001600081525090565b6114a491905b80821115611a425760008155600101615d9a56fe6d61726b6574206d6179206f6e6c7920626520696e697469616c697a6564206f6e6365696e697469616c2065786368616e67652072617465206d7573742062652067726561746572207468616e207a65726f2e6f6e6c79207468652061646d696e206d6179207365742074686520636f6d702d6c696b652064656c656761746573657474696e6720696e7465726573742072617465206d6f64656c206661696c6564626f72726f7742616c616e636553746f7265643a20626f72726f7742616c616e636553746f726564496e7465726e616c206661696c656452455041595f424f52524f575f4e45575f4143434f554e545f424f52524f575f42414c414e43455f43414c43554c4154494f4e5f4641494c45446f6e6c7920467573652061646d696e206d617920696e697469616c697a6520746865206d61726b6574ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef52455041595f424f52524f575f4e45575f544f54414c5f42414c414e43455f43414c43554c4154494f4e5f4641494c45444c49515549444154455f434f4d5054524f4c4c45525f43414c43554c4154455f414d4f554e545f5345495a455f4641494c454465786368616e67655261746553746f7265643a2065786368616e67655261746553746f726564496e7465726e616c206661696c65646f6e65206f662072656465656d546f6b656e73496e206f722072656465656d416d6f756e74496e206d757374206265207a65726fa265627a7a72315820c5e70de80f8ead0dd98a9a84869637403716cdcb18a92f20864691b9b86f3ba864736f6c63430005110032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x600C DUP1 PUSH3 0x21 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x376 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x852A12E3 GT PUSH2 0x1D1 JUMPI DUP1 PUSH4 0xAE9D70B0 GT PUSH2 0x102 JUMPI DUP1 PUSH4 0xDC028AB1 GT PUSH2 0xA0 JUMPI DUP1 PUSH4 0xF5E3C462 GT PUSH2 0x6F JUMPI DUP1 PUSH4 0xF5E3C462 EQ PUSH2 0xF69 JUMPI DUP1 PUSH4 0xF8F9DA28 EQ PUSH2 0xFAC JUMPI DUP1 PUSH4 0xFCA7820B EQ PUSH2 0xFC1 JUMPI DUP1 PUSH4 0xFE9C44AE EQ PUSH2 0xFEB JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0xDC028AB1 EQ PUSH2 0xED1 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0xEE6 JUMPI DUP1 PUSH4 0xF2B3ABBD EQ PUSH2 0xF21 JUMPI DUP1 PUSH4 0xF3FDB15A EQ PUSH2 0xF54 JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0xC37F68E2 GT PUSH2 0xDC JUMPI DUP1 PUSH4 0xC37F68E2 EQ PUSH2 0xE0F JUMPI DUP1 PUSH4 0xC5EBEAEC EQ PUSH2 0xE68 JUMPI DUP1 PUSH4 0xDB006A75 EQ PUSH2 0xE92 JUMPI DUP1 PUSH4 0xDBFE7C19 EQ PUSH2 0xEBC JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0xAE9D70B0 EQ PUSH2 0xDA2 JUMPI DUP1 PUSH4 0xB2A02FF1 EQ PUSH2 0xDB7 JUMPI DUP1 PUSH4 0xBD6D894D EQ PUSH2 0xDFA JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0xA0712D68 GT PUSH2 0x16F JUMPI DUP1 PUSH4 0xA7B820DF GT PUSH2 0x149 JUMPI DUP1 PUSH4 0xA7B820DF EQ PUSH2 0xD15 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0xD3F JUMPI DUP1 PUSH4 0xAA5AF0FD EQ PUSH2 0xD78 JUMPI DUP1 PUSH4 0xAC784DDC EQ PUSH2 0xD8D JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0xA0712D68 EQ PUSH2 0xB7A JUMPI DUP1 PUSH4 0xA0B0D289 EQ PUSH2 0xBA4 JUMPI DUP1 PUSH4 0xA6AFED95 EQ PUSH2 0xD00 JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0x91DD36C6 GT PUSH2 0x1AB JUMPI DUP1 PUSH4 0x91DD36C6 EQ PUSH2 0xADE JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0xB08 JUMPI DUP1 PUSH4 0x95DD9193 EQ PUSH2 0xB1D JUMPI DUP1 PUSH4 0xA03DCE8D EQ PUSH2 0xB50 JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0x852A12E3 EQ PUSH2 0xA8A JUMPI DUP1 PUSH4 0x8D02D9A1 EQ PUSH2 0xAB4 JUMPI DUP1 PUSH4 0x8F840DDD EQ PUSH2 0xAC9 JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0x3B1D21A2 GT PUSH2 0x2AB JUMPI DUP1 PUSH4 0x61FEACFF GT PUSH2 0x249 JUMPI DUP1 PUSH4 0x6F307DC3 GT PUSH2 0x223 JUMPI DUP1 PUSH4 0x6F307DC3 EQ PUSH2 0x9FA JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0xA0F JUMPI DUP1 PUSH4 0x73ACEE98 EQ PUSH2 0xA42 JUMPI DUP1 PUSH4 0x7F1E06BE EQ PUSH2 0xA57 JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0x61FEACFF EQ PUSH2 0x9BB JUMPI DUP1 PUSH4 0x6752E702 EQ PUSH2 0x9D0 JUMPI DUP1 PUSH4 0x6C540BAF EQ PUSH2 0x9E5 JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0x56E67728 GT PUSH2 0x285 JUMPI DUP1 PUSH4 0x56E67728 EQ PUSH2 0x8D0 JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x94B JUMPI DUP1 PUSH4 0x5FE3B567 EQ PUSH2 0x97C JUMPI DUP1 PUSH4 0x601A0BF1 EQ PUSH2 0x991 JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0x3B1D21A2 EQ PUSH2 0x814 JUMPI DUP1 PUSH4 0x47BD3718 EQ PUSH2 0x829 JUMPI DUP1 PUSH4 0x50D85B73 EQ PUSH2 0x83E JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0x182DF0F5 GT PUSH2 0x318 JUMPI DUP1 PUSH4 0x2608F818 GT PUSH2 0x2F2 JUMPI DUP1 PUSH4 0x2608F818 EQ PUSH2 0x6B2 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x6EB JUMPI DUP1 PUSH4 0x34154D4C EQ PUSH2 0x716 JUMPI DUP1 PUSH4 0x3AF9E669 EQ PUSH2 0x7E1 JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0x182DF0F5 EQ PUSH2 0x652 JUMPI DUP1 PUSH4 0x1DB78944 EQ PUSH2 0x667 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x66F JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0xF8855E8 GT PUSH2 0x354 JUMPI DUP1 PUSH4 0xF8855E8 EQ PUSH2 0x48E JUMPI DUP1 PUSH4 0x173B9904 EQ PUSH2 0x5F5 JUMPI DUP1 PUSH4 0x17BFDFBC EQ PUSH2 0x60A JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x63D JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x37B JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x405 JUMPI DUP1 PUSH4 0xE752702 EQ PUSH2 0x452 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x387 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x390 PUSH2 0x1000 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3CA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3B2 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x3F7 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x411 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x43E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x428 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x108B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x45E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x475 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x10F8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x49A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5F3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x4B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x4EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x4FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x51F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x571 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x583 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x5A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP POP PUSH1 0xFF DUP4 CALLDATALOAD AND SWAP4 POP POP POP PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x110E JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x601 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x13BC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x616 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x62D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x13C2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x649 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x143E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x65E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x1444 JUMP JUMPDEST PUSH2 0x5F3 PUSH2 0x14A7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x67B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x43E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x692 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x16B8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x6D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x16E6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x700 PUSH2 0x16FC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x722 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5F3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x739 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x753 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x765 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x786 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x7A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x7B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x7D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1705 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x804 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1771 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x820 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x1827 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x835 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x1836 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x84A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5F3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x861 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x892 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x8A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x8C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x183C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5F3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x90D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x91F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x940 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x18C5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x957 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x960 PUSH2 0x1923 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x988 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x960 PUSH2 0x1932 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x99D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1941 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x1992 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x1998 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x19A3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA06 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x960 PUSH2 0x19A9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA1B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA32 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x19B8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA4E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x19D3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA63 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5F3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA7A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1A46 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAAD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1AEB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x1AF6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAD5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x1AFC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB01 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1B02 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x390 PUSH2 0x1B3F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB29 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB40 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1B9A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB73 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1BFE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1C3B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBB0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5F3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0xBC7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP3 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP1 SWAP3 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xC02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xC14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0xC35 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xC87 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xC99 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0xCBA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP POP DUP3 CALLDATALOAD SWAP4 POP POP POP PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1C47 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD0C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x1D60 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD21 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1F25 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD4B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x43E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xD62 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1F62 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD84 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x1F8F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD99 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x43E PUSH2 0x1F95 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xDAE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x1F9A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xDC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xDDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x2052 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE06 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x2076 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE1B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE42 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE32 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x20EA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP5 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP4 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE74 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x217F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE9E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xEB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x218A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEC8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x2195 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEDD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x219B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xF09 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x21A1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF2D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF44 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x21CC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF60 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x960 PUSH2 0x2206 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF75 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xF8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 SWAP1 SWAP2 ADD CALLDATALOAD AND PUSH2 0x2215 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xFB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x222D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xFCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xFE4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x22A2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xFF7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x43E PUSH2 0x22DF JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP4 AND DUP5 SWAP1 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x1083 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1058 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1083 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1066 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP7 SWAP1 SSTORE DUP2 MLOAD DUP7 DUP2 MSTORE SWAP2 MLOAD SWAP4 SWAP5 SWAP4 SWAP1 SWAP3 DUP5 SWAP3 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1104 DUP4 PUSH2 0x22E4 JUMP JUMPDEST POP SWAP2 POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST CALLER PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 EQ PUSH2 0x1160 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5EC2 PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xB SLOAD ISZERO DUP1 ISZERO PUSH2 0x1170 JUMPI POP PUSH1 0xC SLOAD ISZERO JUMPDEST PUSH2 0x11AB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5DAF PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x7 DUP7 SWAP1 SSTORE DUP6 PUSH2 0x11EC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x30 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5DD2 PUSH1 0x30 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x11F7 DUP10 PUSH2 0x2347 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x124C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x73657474696E6720636F6D7074726F6C6C6572206661696C6564000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1254 PUSH2 0x247A JUMP JUMPDEST PUSH1 0xB SSTORE PUSH8 0xDE0B6B3A7640000 PUSH1 0xC SSTORE PUSH2 0x126C DUP9 PUSH2 0x247E JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x12AB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5E2F PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP6 MLOAD PUSH2 0x12BE SWAP1 PUSH1 0x2 SWAP1 PUSH1 0x20 DUP10 ADD SWAP1 PUSH2 0x5B9F JUMP JUMPDEST POP DUP5 MLOAD PUSH2 0x12D2 SWAP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP9 ADD SWAP1 PUSH2 0x5B9F JUMP JUMPDEST POP PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF DUP7 AND OR SWAP1 SSTORE PUSH2 0x12EB DUP4 PUSH2 0x2784 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1340 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x73657474696E67207265736572766520666163746F72206661696C6564000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1349 DUP3 PUSH2 0x283D JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x139E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x73657474696E672061646D696E20666565206661696C65640000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF PUSH1 0xB0 SHL NOT AND PUSH1 0x1 PUSH1 0xB0 SHL OR SWAP1 SSTORE POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0xA SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x13CE DUP2 PUSH2 0x2962 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x13D8 PUSH2 0x1D60 JUMP JUMPDEST EQ PUSH2 0x1423 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x1858D8DC9D59481A5B9D195C995CDD0819985A5B1959 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x142C DUP4 PUSH2 0x1B9A JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH2 0x1438 DUP2 PUSH2 0x2A2B JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x11 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1451 PUSH2 0x2A96 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1464 JUMPI INVALID JUMPDEST EQ PUSH2 0x14A0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x35 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5F6F PUSH1 0x35 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP2 POP POP JUMPDEST SWAP1 JUMP JUMPDEST CALLER ADDRESS EQ DUP1 ISZERO SWAP1 PUSH2 0x152D JUMPI POP PUSH1 0x5 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 PUSH4 0xDD5CD22C 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 0x1500 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1514 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x152A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST ISZERO PUSH2 0x16B6 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x45CC9705 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE MLOAD DUP3 SWAP2 PUSH1 0x60 SWAP2 PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 SWAP2 PUSH4 0x45CC9705 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 DUP8 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1594 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x15A8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x15D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP1 DUP6 ADD DUP1 MLOAD SWAP2 MLOAD SWAP4 SWAP6 SWAP3 SWAP5 DUP4 ADD SWAP3 SWAP2 DUP5 PUSH1 0x1 PUSH1 0x20 SHL DUP3 GT ISZERO PUSH2 0x15FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x1610 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH2 0x1629 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1656 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x163E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1683 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE POP POP PUSH1 0x0 SLOAD SWAP4 SWAP7 POP SWAP2 SWAP5 POP SWAP3 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP2 AND EQ PUSH2 0x16B2 JUMPI PUSH2 0x16B2 DUP4 DUP4 DUP4 PUSH2 0x2B56 JUMP JUMPDEST POP POP POP JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x16C4 DUP2 PUSH2 0x2962 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x16D2 CALLER DUP8 DUP8 DUP8 PUSH2 0x2D72 JUMP JUMPDEST EQ SWAP2 POP PUSH2 0x16DE DUP2 PUSH2 0x2A2B JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x16F3 DUP5 DUP5 PUSH2 0x2FFE JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x170D PUSH2 0x3063 JUMP JUMPDEST PUSH2 0x1751 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x31B0B63632B9103737BA1030B236B4B7 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x175D PUSH1 0x2 DUP6 DUP6 PUSH2 0x5C19 JUMP JUMPDEST POP PUSH2 0x176A PUSH1 0x3 DUP4 DUP4 PUSH2 0x5C19 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x177B PUSH2 0x5C87 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x178E PUSH2 0x2076 JUMP JUMPDEST SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP SWAP1 DUP2 SWAP1 PUSH2 0x17BA SWAP1 DUP5 SWAP1 PUSH2 0x31DE JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x17CD JUMPI INVALID JUMPDEST EQ PUSH2 0x181F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x62616C616E636520636F756C64206E6F742062652063616C63756C6174656400 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1831 PUSH2 0x3232 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0xD SLOAD DUP2 JUMP JUMPDEST PUSH2 0x1844 PUSH2 0x3063 JUMP JUMPDEST PUSH2 0x187E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x10B0B236B4B7 PUSH1 0xD1 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x18BF DUP5 DUP5 DUP5 DUP5 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x2B56 SWAP3 POP POP POP JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST CALLER ADDRESS EQ DUP1 PUSH2 0x18D6 JUMPI POP PUSH2 0x18D6 PUSH2 0x3063 JUMP JUMPDEST PUSH2 0x190F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x5 PUSH1 0x24 DUP3 ADD MSTORE PUSH5 0x10B9B2B633 PUSH1 0xD9 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xB0 SHL SUB NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 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 0x0 DUP1 PUSH2 0x194D DUP2 PUSH2 0x2962 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1957 PUSH2 0x1D60 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x197D JUMPI PUSH2 0x1975 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x196E JUMPI INVALID JUMPDEST PUSH1 0x3B PUSH2 0x3280 JUMP JUMPDEST SWAP3 POP POP PUSH2 0x142F JUMP JUMPDEST PUSH2 0x1986 DUP5 PUSH2 0x32E6 JUMP JUMPDEST SWAP3 POP POP PUSH2 0x1438 DUP2 PUSH2 0x2A2B JUMP JUMPDEST PUSH1 0xF SLOAD DUP2 JUMP JUMPDEST PUSH7 0x6379DA05B60000 DUP2 JUMP JUMPDEST PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH1 0x15 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x19DF DUP2 PUSH2 0x2962 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x19E9 PUSH2 0x1D60 JUMP JUMPDEST EQ PUSH2 0x1A34 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x1858D8DC9D59481A5B9D195C995CDD0819985A5B1959 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0xD SLOAD SWAP2 POP PUSH2 0x1A42 DUP2 PUSH2 0x2A2B JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0x1A4E PUSH2 0x3063 JUMP JUMPDEST PUSH2 0x1A89 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5E02 PUSH1 0x2D SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x15 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x17066A57 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x5C19A95C SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1AD7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x176A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x10F2 DUP3 PUSH2 0x33B2 JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xE SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1B0E DUP2 PUSH2 0x2962 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B18 PUSH2 0x1D60 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1B36 JUMPI PUSH2 0x1975 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x1B2F JUMPI INVALID JUMPDEST PUSH1 0x52 PUSH2 0x3280 JUMP JUMPDEST PUSH2 0x1986 DUP5 PUSH2 0x283D JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x1083 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1058 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1083 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1BA8 DUP5 PUSH2 0x33F2 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1BBB JUMPI INVALID JUMPDEST EQ PUSH2 0x1BF7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x37 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5E51 PUSH1 0x37 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1C0A DUP2 PUSH2 0x2962 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C14 PUSH2 0x1D60 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1C32 JUMPI PUSH2 0x1975 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x1C2B JUMPI INVALID JUMPDEST PUSH1 0x33 PUSH2 0x3280 JUMP JUMPDEST PUSH2 0x1986 DUP5 PUSH2 0x34A6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1104 DUP4 PUSH2 0x3527 JUMP JUMPDEST PUSH1 0x0 PUSH8 0x2C68AF0BB140000 SWAP1 POP PUSH1 0x0 DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x313CE567 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 0x1C8F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1CA3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1CB9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH2 0x1CCD DUP9 DUP9 DUP5 DUP10 DUP10 DUP7 DUP11 DUP11 PUSH2 0x110E JUMP JUMPDEST PUSH1 0x15 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP2 DUP3 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x18160DDD PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP1 SWAP2 AND SWAP2 PUSH4 0x18160DDD SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1D29 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1D3D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1D53 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1D6B PUSH2 0x247A JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0xB SLOAD EQ ISZERO PUSH2 0x1D81 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x14A4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D8B PUSH2 0x3232 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x6 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 PUSH4 0x15F24053 DUP4 PUSH1 0xD SLOAD PUSH2 0x1DD0 PUSH1 0xE SLOAD PUSH2 0x1DCB PUSH1 0xF SLOAD PUSH1 0x10 SLOAD PUSH2 0x3567 JUMP JUMPDEST PUSH2 0x3567 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1E12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1E26 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1E3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH6 0x48C27395000 DUP2 GT ISZERO PUSH2 0x1E9B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x626F72726F772072617465206973206162737572646C79206869676800000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1EAA DUP6 PUSH1 0xB SLOAD PUSH2 0x359D JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1EBD JUMPI INVALID JUMPDEST EQ PUSH2 0x1F0F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x636F756C64206E6F742063616C63756C61746520626C6F636B2064656C746100 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1F1B DUP6 DUP6 DUP6 DUP5 PUSH2 0x35C0 JUMP JUMPDEST SWAP6 POP POP POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1F31 DUP2 PUSH2 0x2962 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F3B PUSH2 0x1D60 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1F59 JUMPI PUSH2 0x1975 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x1F52 JUMPI INVALID JUMPDEST PUSH1 0x37 PUSH2 0x3280 JUMP JUMPDEST PUSH2 0x1986 DUP5 PUSH2 0x37D8 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1F6E DUP2 PUSH2 0x2962 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F7C CALLER CALLER DUP8 DUP8 PUSH2 0x2D72 JUMP JUMPDEST EQ SWAP2 POP PUSH2 0x1F88 DUP2 PUSH2 0x2A2B JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xC SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xB8168816 PUSH2 0x1FB6 PUSH2 0x3232 JUMP JUMPDEST PUSH1 0xD SLOAD PUSH2 0x1FCD PUSH1 0xE SLOAD PUSH2 0x1DCB PUSH1 0xF SLOAD PUSH1 0x10 SLOAD PUSH2 0x3567 JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x9 SLOAD PUSH1 0xA SLOAD ADD ADD PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2021 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2035 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x204B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH2 0x205F DUP2 PUSH2 0x2962 JUMP JUMPDEST PUSH2 0x206B CALLER DUP7 DUP7 DUP7 PUSH2 0x38C0 JUMP JUMPDEST SWAP2 POP PUSH2 0x16DE DUP2 PUSH2 0x2A2B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2082 DUP2 PUSH2 0x2962 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x208C PUSH2 0x1D60 JUMP JUMPDEST EQ PUSH2 0x20D7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x1858D8DC9D59481A5B9D195C995CDD0819985A5B1959 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x20DF PUSH2 0x1444 JUMP JUMPDEST SWAP2 POP PUSH2 0x1A42 DUP2 PUSH2 0x2A2B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP2 SWAP1 DUP2 SWAP1 DUP2 SWAP1 DUP2 DUP1 DUP1 PUSH2 0x2115 DUP10 PUSH2 0x33F2 JUMP JUMPDEST SWAP4 POP SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2127 JUMPI INVALID JUMPDEST EQ PUSH2 0x2145 JUMPI PUSH1 0x9 JUMPDEST SWAP8 POP PUSH1 0x0 SWAP7 POP DUP7 SWAP6 POP DUP6 SWAP5 POP PUSH2 0x2178 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x214D PUSH2 0x2A96 JUMP JUMPDEST SWAP3 POP SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x215F JUMPI INVALID JUMPDEST EQ PUSH2 0x216B JUMPI PUSH1 0x9 PUSH2 0x212F JUMP JUMPDEST POP PUSH1 0x0 SWAP7 POP SWAP2 SWAP5 POP SWAP3 POP SWAP1 POP JUMPDEST SWAP2 SWAP4 POP SWAP2 SWAP4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10F2 DUP3 PUSH2 0x3C9F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10F2 DUP3 PUSH2 0x3CDD JUMP JUMPDEST PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x10 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x21D7 PUSH2 0x1D60 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x21FD JUMPI PUSH2 0x21F5 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x21EE JUMPI INVALID JUMPDEST PUSH1 0x4B PUSH2 0x3280 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1109 JUMP JUMPDEST PUSH2 0x1BF7 DUP4 PUSH2 0x247E JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2223 DUP6 DUP6 DUP6 PUSH2 0x3D16 JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x15F24053 PUSH2 0x2249 PUSH2 0x3232 JUMP JUMPDEST PUSH1 0xD SLOAD PUSH2 0x2260 PUSH1 0xE SLOAD PUSH2 0x1DCB PUSH1 0xF SLOAD PUSH1 0x10 SLOAD PUSH2 0x3567 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2021 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x22AE DUP2 PUSH2 0x2962 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x22B8 PUSH2 0x1D60 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x22D6 JUMPI PUSH2 0x1975 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x22CF JUMPI INVALID JUMPDEST PUSH1 0x59 PUSH2 0x3280 JUMP JUMPDEST PUSH2 0x1986 DUP5 PUSH2 0x2784 JUMP JUMPDEST PUSH1 0x1 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x22F2 DUP2 PUSH2 0x2962 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x22FC PUSH2 0x1D60 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x2327 JUMPI PUSH2 0x231A DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x2313 JUMPI INVALID JUMPDEST PUSH1 0x41 PUSH2 0x3280 JUMP JUMPDEST SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x2338 SWAP1 POP JUMP JUMPDEST PUSH2 0x2332 CALLER CALLER DUP8 PUSH2 0x3E02 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP JUMPDEST PUSH2 0x2341 DUP2 PUSH2 0x2A2B JUMP JUMPDEST POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH3 0x7E3DD2 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 0x239A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x23AE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x23C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x2417 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6D61726B6572206D6574686F642072657475726E65642066616C736500000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP3 DUP5 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD PUSH32 0x7AC369DBD14FA5EA3F473ED67CC9D598964A77501540BA6751EB0B3DECF5870D SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x0 PUSH2 0x1BF7 JUMP JUMPDEST NUMBER SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2489 PUSH2 0x3063 JUMP JUMPDEST PUSH2 0x2499 JUMPI PUSH2 0x21F5 PUSH1 0x1 PUSH1 0x4D PUSH2 0x3280 JUMP JUMPDEST PUSH2 0x24A1 PUSH2 0x247A JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x24B5 JUMPI PUSH2 0x21F5 PUSH1 0xA PUSH1 0x4C PUSH2 0x3280 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x2191F92A 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 0x2506 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x251A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2530 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x2583 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6D61726B6572206D6574686F642072657475726E65642066616C736500000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP3 DUP5 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD PUSH32 0xEDFFC32E068C7C95DFD4BDFD5C4D939A084D6B11C4199EAC8436ED234D72F926 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0x26B5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x6CC1140B PUSH1 0xE1 SHL OR DUP2 MSTORE SWAP2 MLOAD DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP4 DUP3 SWAP2 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x264A JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x262B JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x26AC 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 0x26B1 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP POP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x742A137B PUSH1 0xE1 SHL OR DUP2 MSTORE SWAP2 MLOAD DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP4 DUP3 SWAP2 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x2711 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x26F2 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2773 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 0x2778 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP PUSH1 0x0 SWAP2 POP PUSH2 0x1BF7 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x278E PUSH2 0x3063 JUMP JUMPDEST PUSH2 0x27A5 JUMPI PUSH2 0x279E PUSH1 0x1 PUSH1 0x5A PUSH2 0x3280 JUMP JUMPDEST SWAP1 POP PUSH2 0x1109 JUMP JUMPDEST PUSH2 0x27AD PUSH2 0x247A JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x27C1 JUMPI PUSH2 0x279E PUSH1 0xA PUSH1 0x5B PUSH2 0x3280 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH2 0x27E1 PUSH2 0x27D9 DUP5 PUSH1 0x8 SLOAD PUSH2 0x3567 JUMP JUMPDEST PUSH1 0x9 SLOAD PUSH2 0x3567 JUMP JUMPDEST GT ISZERO PUSH2 0x27F3 JUMPI PUSH2 0x279E PUSH1 0x2 PUSH1 0x5C PUSH2 0x3280 JUMP JUMPDEST PUSH1 0xA DUP1 SLOAD SWAP1 DUP4 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP6 SWAP1 MSTORE DUP2 MLOAD PUSH32 0xAAA68312E2EA9D50E16AF5068410AB56E1A1FD06037B1A35664812C30F821460 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x0 PUSH2 0x1BF7 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2847 PUSH2 0x247A JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x285B JUMPI PUSH2 0x279E PUSH1 0xA PUSH1 0x54 PUSH2 0x3280 JUMP JUMPDEST PUSH1 0x0 NOT DUP3 EQ ISZERO PUSH2 0x286B JUMPI PUSH1 0x8 SLOAD SWAP2 POP JUMPDEST PUSH1 0x0 PUSH2 0x2875 PUSH2 0x4152 JUMP JUMPDEST SWAP1 POP PUSH8 0xDE0B6B3A7640000 PUSH2 0x2895 PUSH2 0x288F PUSH1 0xA SLOAD DUP7 PUSH2 0x3567 JUMP JUMPDEST DUP4 PUSH2 0x3567 JUMP JUMPDEST GT ISZERO PUSH2 0x28A7 JUMPI PUSH2 0x21F5 PUSH1 0x2 PUSH1 0x55 PUSH2 0x3280 JUMP JUMPDEST DUP3 PUSH1 0x8 SLOAD EQ PUSH2 0x290D JUMPI PUSH2 0x28B8 PUSH2 0x3063 JUMP JUMPDEST PUSH2 0x28C8 JUMPI PUSH2 0x21F5 PUSH1 0x1 PUSH1 0x53 PUSH2 0x3280 JUMP JUMPDEST PUSH1 0x8 DUP1 SLOAD SWAP1 DUP5 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP7 SWAP1 MSTORE DUP2 MLOAD PUSH32 0xCDD0B588250E1398549F79CFDB8217C186688822905D6715B0834EA1C865594A SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMPDEST DUP1 PUSH1 0x9 SLOAD EQ PUSH2 0x295B JUMPI PUSH1 0x9 DUP1 SLOAD SWAP1 DUP3 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP2 MLOAD PUSH32 0x92EEF861B6533B7D3417F39C2AD7B460EED4E88A32FA3604F30E718B7602E7DC SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMPDEST PUSH1 0x0 PUSH2 0x1BF7 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0xB0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x29AD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xA PUSH1 0x24 DUP3 ADD MSTORE PUSH10 0x1C994B595B9D195C9959 PUSH1 0xB2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x2A1B JUMPI PUSH1 0x5 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 PUSH4 0xC90C20B1 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2A02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2A16 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF PUSH1 0xB0 SHL NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF PUSH1 0xB0 SHL NOT AND PUSH1 0x1 PUSH1 0xB0 SHL OR SWAP1 SSTORE DUP1 PUSH2 0x2A93 JUMPI PUSH1 0x5 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 PUSH4 0x632E5142 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1AD7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x11 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP1 PUSH2 0x2AB1 JUMPI POP POP PUSH1 0x7 SLOAD PUSH1 0x0 SWAP2 POP PUSH2 0x2B52 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2ABB PUSH2 0x3232 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2AC7 PUSH2 0x5C87 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2AE9 DUP5 PUSH1 0xD SLOAD PUSH2 0x2AE4 PUSH1 0xE SLOAD PUSH2 0x1DCB PUSH1 0xF SLOAD PUSH1 0x10 SLOAD PUSH2 0x3567 JUMP JUMPDEST PUSH2 0x41A1 JUMP JUMPDEST SWAP4 POP SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2AFB JUMPI INVALID JUMPDEST EQ PUSH2 0x2B10 JUMPI SWAP6 POP PUSH1 0x0 SWAP5 POP PUSH2 0x2B52 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x2B1A DUP4 DUP7 PUSH2 0x41ED JUMP JUMPDEST SWAP3 POP SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2B2C JUMPI INVALID JUMPDEST EQ PUSH2 0x2B41 JUMPI SWAP6 POP PUSH1 0x0 SWAP5 POP PUSH2 0x2B52 SWAP4 POP POP POP POP JUMP JUMPDEST POP MLOAD PUSH1 0x0 SWAP6 POP SWAP4 POP PUSH2 0x2B52 SWAP3 POP POP POP JUMP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x38E6A073 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP2 DUP6 AND PUSH1 0x24 DUP4 ADD MSTORE DUP4 ISZERO ISZERO PUSH1 0x44 DUP4 ADD MSTORE MLOAD PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 SWAP2 PUSH4 0x71CD40E6 SWAP2 PUSH1 0x64 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2BC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2BD7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2BED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x2C28 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x5 PUSH1 0x24 DUP3 ADD MSTORE PUSH5 0x85A5B5C1B PUSH1 0xDA SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 ISZERO PUSH2 0x2C36 JUMPI PUSH2 0x2C36 PUSH2 0x429D JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND OR DUP4 SSTORE PUSH1 0x40 MLOAD PUSH1 0x20 PUSH1 0x24 DUP3 ADD DUP2 DUP2 MSTORE DUP7 MLOAD PUSH1 0x44 DUP5 ADD MSTORE DUP7 MLOAD SWAP4 SWAP1 SWAP5 AND SWAP5 PUSH2 0x2D23 SWAP5 ADDRESS SWAP5 DUP9 SWAP5 SWAP2 SWAP4 DUP5 SWAP4 PUSH1 0x64 SWAP1 SWAP4 ADD SWAP3 SWAP1 DUP7 ADD SWAP2 SWAP1 DUP2 SWAP1 DUP5 SWAP1 DUP5 SWAP1 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2CA3 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2C8B JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x2CD0 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xADCCEE5 PUSH1 0xE3 SHL OR SWAP1 MSTORE DUP2 MLOAD DUP1 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x7 DUP3 MSTORE PUSH7 0x216265636F6D65 PUSH1 0xC8 SHL SWAP1 DUP3 ADD MSTORE SWAP1 SWAP4 POP SWAP2 POP PUSH2 0x42A2 SWAP1 POP JUMP JUMPDEST POP PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND DUP3 MSTORE SWAP1 SWAP3 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD PUSH32 0xD604DE94D45953F9138079EC1B82D533CB2160C906D1076D1F7ED54BEFBCA97A SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x17B9B84B PUSH1 0xE3 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP6 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 AND SWAP2 PUSH4 0xBDCDC258 SWAP2 PUSH1 0x84 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2DD7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2DEB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2E01 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x2E20 JUMPI PUSH2 0x2E18 PUSH1 0x3 PUSH1 0x5D DUP4 PUSH2 0x43F1 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x181F JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x2E46 JUMPI PUSH2 0x2E18 PUSH1 0x2 PUSH1 0x5E PUSH2 0x3280 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND SWAP1 DUP8 AND EQ ISZERO PUSH2 0x2E65 JUMPI POP PUSH1 0x0 NOT PUSH2 0x2E8D JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP11 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x2E9D DUP6 DUP10 PUSH2 0x359D JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP PUSH1 0x0 DUP5 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2EB0 JUMPI INVALID JUMPDEST EQ PUSH2 0x2ECE JUMPI PUSH2 0x2EC1 PUSH1 0x9 PUSH1 0x5E PUSH2 0x3280 JUMP JUMPDEST SWAP7 POP POP POP POP POP POP POP PUSH2 0x181F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2EF1 SWAP1 DUP10 PUSH2 0x359D JUMP JUMPDEST SWAP1 SWAP5 POP SWAP2 POP PUSH1 0x0 DUP5 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2F04 JUMPI INVALID JUMPDEST EQ PUSH2 0x2F15 JUMPI PUSH2 0x2EC1 PUSH1 0x9 PUSH1 0x5F PUSH2 0x3280 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2F38 SWAP1 DUP10 PUSH2 0x447A JUMP JUMPDEST SWAP1 SWAP5 POP SWAP1 POP PUSH1 0x0 DUP5 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2F4B JUMPI INVALID JUMPDEST EQ PUSH2 0x2F5C JUMPI PUSH2 0x2EC1 PUSH1 0x9 PUSH1 0x60 PUSH2 0x3280 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP6 SWAP1 SSTORE SWAP2 DUP12 AND DUP2 MSTORE KECCAK256 DUP2 SWAP1 SSTORE PUSH1 0x0 NOT DUP6 EQ PUSH2 0x2FB4 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP16 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP4 SWAP1 SSTORE JUMPDEST DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5EEB DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP11 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x0 SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x300C DUP2 PUSH2 0x2962 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3016 PUSH2 0x1D60 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x3041 JUMPI PUSH2 0x3034 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x302D JUMPI INVALID JUMPDEST PUSH1 0x40 PUSH2 0x3280 JUMP JUMPDEST SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x3052 SWAP1 POP JUMP JUMPDEST PUSH2 0x304C CALLER DUP8 DUP8 PUSH2 0x3E02 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP JUMPDEST PUSH2 0x305B DUP2 PUSH2 0x2A2B JUMP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x3E14691 PUSH1 0xE6 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 DUP3 SWAP2 PUSH4 0xF851A440 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x30AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x30BF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x30D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ DUP1 ISZERO PUSH2 0x314F JUMPI POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA755EC2 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 0x3122 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3136 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x314C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST DUP1 PUSH2 0x14A0 JUMPI POP CALLER PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 EQ DUP1 ISZERO PUSH2 0x14A0 JUMPI POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x2F1069BA 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 0x31AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x31C0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x31D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x31EB PUSH2 0x5C87 JUMP JUMPDEST PUSH2 0x31F5 DUP7 DUP7 PUSH2 0x44A0 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3208 JUMPI INVALID JUMPDEST EQ PUSH2 0x3219 JUMPI POP SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH2 0x322B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3224 DUP3 PUSH2 0x4508 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x15 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 DUP3 SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x31AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0x45B96FE442630264581B197E84BBADA861235052C5A1AADFFF9EA4E40A969AA0 DUP4 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x32AF JUMPI INVALID JUMPDEST DUP4 PUSH1 0x63 DUP2 GT ISZERO PUSH2 0x32BB JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 DUP3 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x1BF7 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x32F1 PUSH2 0x3063 JUMP JUMPDEST PUSH2 0x3301 JUMPI PUSH2 0x21F5 PUSH1 0x1 PUSH1 0x3C PUSH2 0x3280 JUMP JUMPDEST PUSH2 0x3309 PUSH2 0x247A JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x331D JUMPI PUSH2 0x21F5 PUSH1 0xA PUSH1 0x3E PUSH2 0x3280 JUMP JUMPDEST DUP3 PUSH2 0x3326 PUSH2 0x3232 JUMP JUMPDEST LT ISZERO PUSH2 0x3338 JUMPI PUSH2 0x21F5 PUSH1 0xE PUSH1 0x3D PUSH2 0x3280 JUMP JUMPDEST PUSH1 0xE SLOAD DUP4 GT ISZERO PUSH2 0x334E JUMPI PUSH2 0x21F5 PUSH1 0x2 PUSH1 0x3F PUSH2 0x3280 JUMP JUMPDEST PUSH2 0x335A PUSH1 0xE SLOAD DUP5 PUSH2 0x4517 JUMP JUMPDEST PUSH1 0xE DUP2 SWAP1 SSTORE SWAP1 POP PUSH2 0x336B CALLER DUP5 PUSH2 0x4551 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP6 SWAP1 MSTORE DUP1 DUP3 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD PUSH32 0x3BAD0C59CF2F06E7314077049F48A93578CD16F5EF92329F1DAB1420A99C177E SWAP2 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 PUSH1 0x0 PUSH2 0x1BF7 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x33BE DUP2 PUSH2 0x2962 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x33C8 PUSH2 0x1D60 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x33E6 JUMPI PUSH2 0x1975 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x33DF JUMPI INVALID JUMPDEST PUSH1 0x2A PUSH2 0x3280 JUMP JUMPDEST PUSH2 0x1986 CALLER PUSH1 0x0 DUP7 PUSH2 0x45D6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 PUSH2 0x3429 JUMPI POP PUSH1 0x0 SWAP5 POP DUP5 SWAP4 POP PUSH2 0x34A1 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x3439 DUP2 PUSH1 0x0 ADD SLOAD PUSH1 0xC SLOAD PUSH2 0x4AA6 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP PUSH1 0x0 DUP5 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x344C JUMPI INVALID JUMPDEST EQ PUSH2 0x3461 JUMPI POP SWAP2 SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x34A1 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x346F DUP4 DUP3 PUSH1 0x1 ADD SLOAD PUSH2 0x4AE5 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP2 POP PUSH1 0x0 DUP5 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3482 JUMPI INVALID JUMPDEST EQ PUSH2 0x3497 JUMPI POP SWAP2 SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x34A1 SWAP2 POP POP JUMP JUMPDEST POP PUSH1 0x0 SWAP5 POP SWAP3 POP POP POP JUMPDEST SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x34B1 PUSH2 0x247A JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x34C5 JUMPI PUSH2 0x21F5 PUSH1 0xA PUSH1 0x35 PUSH2 0x3280 JUMP JUMPDEST DUP3 PUSH2 0x34CE PUSH2 0x3232 JUMP JUMPDEST LT ISZERO PUSH2 0x34E0 JUMPI PUSH2 0x21F5 PUSH1 0xE PUSH1 0x34 PUSH2 0x3280 JUMP JUMPDEST PUSH1 0x10 SLOAD DUP4 GT ISZERO PUSH2 0x34F6 JUMPI PUSH2 0x21F5 PUSH1 0x2 PUSH1 0x36 PUSH2 0x3280 JUMP JUMPDEST PUSH2 0x3502 PUSH1 0x10 SLOAD DUP5 PUSH2 0x4517 JUMP JUMPDEST PUSH1 0x10 DUP2 SWAP1 SSTORE SWAP1 POP PUSH2 0x295B PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 DUP5 PUSH2 0x4551 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x3535 DUP2 PUSH2 0x2962 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x353F PUSH2 0x1D60 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x355D JUMPI PUSH2 0x231A DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x3556 JUMPI INVALID JUMPDEST PUSH1 0x20 PUSH2 0x3280 JUMP JUMPDEST PUSH2 0x2332 CALLER DUP7 PUSH2 0x4B10 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1BF7 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x11 DUP2 MSTORE PUSH1 0x20 ADD PUSH17 0x6164646974696F6E206F766572666C6F77 PUSH1 0x78 SHL DUP2 MSTORE POP PUSH2 0x4E8C JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 DUP4 GT PUSH2 0x35B4 JUMPI POP PUSH1 0x0 SWAP1 POP DUP2 DUP4 SUB PUSH2 0x322B JUMP JUMPDEST POP PUSH1 0x3 SWAP1 POP PUSH1 0x0 PUSH2 0x322B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x35CA PUSH2 0x5C87 JUMP JUMPDEST PUSH2 0x35E2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP7 DUP2 MSTORE POP DUP5 PUSH2 0x4EE1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x35F2 DUP3 PUSH1 0xD SLOAD PUSH2 0x4F0B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3602 DUP3 PUSH1 0xD SLOAD PUSH2 0x3567 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3623 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xA SLOAD DUP2 MSTORE POP DUP5 PUSH1 0xE SLOAD PUSH2 0x4F2A JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3644 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x9 SLOAD DUP2 MSTORE POP DUP6 PUSH1 0x10 SLOAD PUSH2 0x4F2A JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3665 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x8 SLOAD DUP2 MSTORE POP DUP7 PUSH1 0xF SLOAD PUSH2 0x4F2A JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3678 DUP8 PUSH1 0xC SLOAD PUSH1 0xC SLOAD PUSH2 0x4F2A JUMP JUMPDEST PUSH1 0xB DUP14 SWAP1 SSTORE PUSH1 0xC DUP2 SWAP1 SSTORE PUSH1 0xD DUP7 SWAP1 SSTORE PUSH1 0xE DUP6 SWAP1 SSTORE PUSH1 0x10 DUP5 SWAP1 SSTORE PUSH1 0xF DUP4 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP14 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP10 SWAP1 MSTORE DUP1 DUP3 ADD DUP4 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP9 SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH32 0x4DEC04E750CA11537CABCD8A9EAB06494DE08DA3735BC8871CD41250E190BC04 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG1 PUSH1 0x6 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x24 DUP1 DUP3 ADD DUP15 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x5EFD0233 PUSH1 0xE1 SHL OR DUP2 MSTORE SWAP2 MLOAD DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP5 AND SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x3755 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x3736 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x37B7 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 0x37BC JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP PUSH1 0x0 SWAP2 POP PUSH2 0x37C8 SWAP1 POP JUMP JUMPDEST SWAP13 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x37E3 PUSH2 0x247A JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x37F7 JUMPI PUSH2 0x21F5 PUSH1 0xA PUSH1 0x39 PUSH2 0x3280 JUMP JUMPDEST DUP3 PUSH2 0x3800 PUSH2 0x3232 JUMP JUMPDEST LT ISZERO PUSH2 0x3812 JUMPI PUSH2 0x21F5 PUSH1 0xE PUSH1 0x38 PUSH2 0x3280 JUMP JUMPDEST PUSH1 0xF SLOAD DUP4 GT ISZERO PUSH2 0x3828 JUMPI PUSH2 0x21F5 PUSH1 0x2 PUSH1 0x3A PUSH2 0x3280 JUMP JUMPDEST PUSH2 0x3834 PUSH1 0xF SLOAD DUP5 PUSH2 0x4517 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0xF DUP2 SWAP1 SSTORE POP PUSH2 0x295B PUSH1 0x5 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 PUSH4 0xF851A440 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 0x388E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x38A2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x38B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP5 PUSH2 0x4551 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xD02F7351 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP7 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE DUP6 DUP2 AND PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x84 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 AND SWAP2 PUSH4 0xD02F7351 SWAP2 PUSH1 0xA4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x392D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3941 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3957 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x396E JUMPI PUSH2 0x2E18 PUSH1 0x3 PUSH1 0x1D DUP4 PUSH2 0x43F1 JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x3994 JUMPI PUSH2 0x2E18 PUSH1 0x6 PUSH1 0x1E PUSH2 0x3280 JUMP JUMPDEST PUSH2 0x399C PUSH2 0x5C9A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x39BF SWAP1 DUP6 PUSH2 0x359D JUMP JUMPDEST PUSH1 0x20 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x39D3 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x39DE JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x39F2 JUMPI INVALID JUMPDEST EQ PUSH2 0x3A1C JUMPI PUSH2 0x3A13 PUSH1 0x9 PUSH1 0x1C DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3A0E JUMPI INVALID JUMPDEST PUSH2 0x43F1 JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x181F JUMP JUMPDEST PUSH2 0x3A3B DUP5 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH7 0x6379DA05B60000 DUP2 MSTORE POP PUSH2 0x4F52 JUMP JUMPDEST PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x3A4D SWAP1 DUP6 SWAP1 PUSH2 0x4517 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x3A5A PUSH2 0x2A96 JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3A6E JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3A79 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3A8D JUMPI INVALID JUMPDEST EQ PUSH2 0x3ADF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x65786368616E67652072617465206D617468206572726F720000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x3AFF PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP4 PUSH1 0xC0 ADD MLOAD DUP2 MSTORE POP DUP3 PUSH1 0x80 ADD MLOAD PUSH2 0x4F0B JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xE SLOAD PUSH2 0x3B12 SWAP2 PUSH2 0x3567 JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD MSTORE PUSH1 0x11 SLOAD PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x3B29 SWAP2 SWAP1 PUSH2 0x4517 JUMP JUMPDEST PUSH2 0x100 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x3B57 SWAP2 SWAP1 PUSH2 0x447A JUMP JUMPDEST PUSH1 0x40 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3B6B JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3B76 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3B8A JUMPI INVALID JUMPDEST EQ PUSH2 0x3BA6 JUMPI PUSH2 0x3A13 PUSH1 0x9 PUSH1 0x1B DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3A0E JUMPI INVALID JUMPDEST PUSH1 0xE0 DUP2 ADD MLOAD PUSH1 0xE SSTORE PUSH2 0x100 DUP2 ADD MLOAD PUSH1 0x11 SSTORE PUSH1 0x20 DUP1 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x12 DUP6 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 DUP7 ADD MLOAD SWAP3 DUP12 AND DUP1 DUP3 MSTORE SWAP1 DUP5 SWAP1 KECCAK256 SWAP3 SWAP1 SWAP3 SSTORE PUSH1 0x60 DUP6 ADD MLOAD DUP4 MLOAD SWAP1 DUP2 MSTORE SWAP3 MLOAD SWAP2 SWAP4 SWAP1 SWAP3 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5EEB DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD ADDRESS SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5EEB DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0xE0 DUP3 ADD MLOAD PUSH1 0x40 DUP1 MLOAD ADDRESS DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP3 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE MLOAD PUSH32 0xA91E67C5EA634CD43A12C5A482724B03DE01E85CA68702A53D0C2F45CB7C1DC5 SWAP2 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 PUSH1 0x0 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3CAB DUP2 PUSH2 0x2962 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3CB5 PUSH2 0x1D60 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x3CD3 JUMPI PUSH2 0x1975 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x3CCC JUMPI INVALID JUMPDEST PUSH1 0xA PUSH2 0x3280 JUMP JUMPDEST PUSH2 0x1986 CALLER DUP6 PUSH2 0x4F7A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3CE9 DUP2 PUSH2 0x2962 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3CF3 PUSH2 0x1D60 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x3D0A JUMPI PUSH2 0x1975 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x33DF JUMPI INVALID JUMPDEST PUSH2 0x1986 CALLER DUP6 PUSH1 0x0 PUSH2 0x45D6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x3D24 DUP2 PUSH2 0x2962 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3D2E PUSH2 0x1D60 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x3D59 JUMPI PUSH2 0x3D4C DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x3D45 JUMPI INVALID JUMPDEST PUSH1 0x11 PUSH2 0x3280 JUMP JUMPDEST SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x3DF0 SWAP1 POP JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA6AFED95 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3D94 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3DA8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3DBE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x3DDE JUMPI PUSH2 0x3D4C DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x3DD7 JUMPI INVALID JUMPDEST PUSH1 0x12 PUSH2 0x3280 JUMP JUMPDEST PUSH2 0x3DEA CALLER DUP9 DUP9 DUP9 PUSH2 0x52C0 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP JUMPDEST PUSH2 0x3DF9 DUP2 PUSH2 0x2A2B JUMP JUMPDEST POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x12004531 PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP6 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 DUP5 SWAP4 SWAP2 AND SWAP2 PUSH4 0x24008A62 SWAP2 PUSH1 0x84 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3E6B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3E7F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3E95 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x3EB9 JUMPI PUSH2 0x3EAC PUSH1 0x3 PUSH1 0x43 DUP4 PUSH2 0x43F1 JUMP JUMPDEST SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH2 0x414A SWAP1 POP JUMP JUMPDEST PUSH2 0x3EC1 PUSH2 0x247A JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x3ED5 JUMPI PUSH2 0x3EAC PUSH1 0xA PUSH1 0x44 PUSH2 0x3280 JUMP JUMPDEST PUSH2 0x3EDD PUSH2 0x5CE7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x3F07 DUP7 PUSH2 0x33F2 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3F1E JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3F29 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3F40 JUMPI INVALID JUMPDEST EQ PUSH2 0x3F6A JUMPI PUSH2 0x3F5C PUSH1 0x9 PUSH1 0x42 DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3A0E JUMPI INVALID JUMPDEST SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x414A SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 NOT DUP6 EQ ISZERO PUSH2 0x3F83 JUMPI PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x3F8B JUMP JUMPDEST PUSH1 0x40 DUP2 ADD DUP6 SWAP1 MSTORE JUMPDEST PUSH2 0x3F99 DUP8 DUP3 PUSH1 0x40 ADD MLOAD PUSH2 0x57B2 JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x3FAE SWAP2 PUSH2 0x359D JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3FC5 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3FD0 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3FE7 JUMPI INVALID JUMPDEST EQ PUSH2 0x4023 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5E88 PUSH1 0x3A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x4033 PUSH1 0xD SLOAD DUP3 PUSH1 0xE0 ADD MLOAD PUSH2 0x359D JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x404A JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4055 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x406C JUMPI INVALID JUMPDEST EQ PUSH2 0x40A8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5F0B PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xA0 DUP1 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP11 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 DUP6 SSTORE PUSH1 0xC SLOAD PUSH1 0x1 SWAP1 SWAP6 ADD SWAP5 SWAP1 SWAP5 SSTORE PUSH1 0xC0 DUP8 ADD MLOAD PUSH1 0xD DUP2 SWAP1 SSTORE PUSH1 0xE0 DUP9 ADD MLOAD SWAP6 MLOAD DUP3 MLOAD SWAP5 DUP16 AND DUP6 MSTORE SWAP5 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP2 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x60 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x80 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 MLOAD PUSH32 0x1A2A22CB034D26D1854BDC6666A5B91FE25EFBBB5DCAD3B0355478D6F5C362A1 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0xE0 ADD MLOAD PUSH1 0x0 SWAP4 POP SWAP2 POP POP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xDD86FEA1 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 0x2021 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x41B1 DUP8 DUP8 PUSH2 0x447A JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x41C4 JUMPI INVALID JUMPDEST EQ PUSH2 0x41D5 JUMPI POP SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH2 0x414A JUMP JUMPDEST PUSH2 0x41DF DUP2 DUP7 PUSH2 0x359D JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x41F7 PUSH2 0x5C87 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x420C DUP7 PUSH8 0xDE0B6B3A7640000 PUSH2 0x4AA6 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x421F JUMPI INVALID JUMPDEST EQ PUSH2 0x423E JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x322B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x424B DUP4 DUP9 PUSH2 0x4AE5 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x425E JUMPI INVALID JUMPDEST EQ PUSH2 0x4280 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 SWAP5 POP SWAP3 POP PUSH2 0x322B SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP9 SWAP1 SWAP8 POP SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x16B6 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x60 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x42E2 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x42C3 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x4344 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 0x4349 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x43E8 JUMPI DUP1 MLOAD ISZERO PUSH2 0x4363 JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST DUP4 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x43AD JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4395 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x43DA JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x45B96FE442630264581B197E84BBADA861235052C5A1AADFFF9EA4E40A969AA0 DUP5 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x4420 JUMPI INVALID JUMPDEST DUP5 PUSH1 0x63 DUP2 GT ISZERO PUSH2 0x442C JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 DUP2 ADD DUP6 SWAP1 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 PUSH1 0x3 DUP5 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x4459 JUMPI INVALID JUMPDEST EQ PUSH2 0x446F JUMPI DUP4 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x446A JUMPI INVALID JUMPDEST PUSH2 0x181F JUMP JUMPDEST POP PUSH2 0x3E8 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 DUP4 ADD DUP5 DUP2 LT PUSH2 0x4492 JUMPI PUSH1 0x0 SWAP3 POP SWAP1 POP PUSH2 0x322B JUMP JUMPDEST POP PUSH1 0x2 SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH2 0x322B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x44AA PUSH2 0x5C87 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x44BB DUP7 PUSH1 0x0 ADD MLOAD DUP7 PUSH2 0x4AA6 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x44CE JUMPI INVALID JUMPDEST EQ PUSH2 0x44ED JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x322B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST MLOAD PUSH8 0xDE0B6B3A7640000 SWAP1 DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1BF7 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x15 DUP2 MSTORE PUSH1 0x20 ADD PUSH21 0x7375627472616374696F6E20756E646572666C6F77 PUSH1 0x58 SHL DUP2 MSTORE POP PUSH2 0x598F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xA9059CBB PUSH1 0xE0 SHL OR SWAP1 MSTORE DUP3 MLOAD DUP1 DUP5 ADD SWAP1 SWAP4 MSTORE PUSH1 0x19 DUP4 MSTORE PUSH32 0x544F4B454E5F5452414E534645525F4F55545F4641494C454400000000000000 SWAP1 DUP4 ADD MSTORE PUSH2 0x45D2 SWAP2 PUSH2 0x59E9 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x45E3 JUMPI POP DUP2 ISZERO JUMPDEST PUSH2 0x461E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5FA4 PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x4626 PUSH2 0x5D2D JUMP JUMPDEST PUSH2 0x462E PUSH2 0x2A96 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4645 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4650 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4667 JUMPI INVALID JUMPDEST EQ PUSH2 0x468B JUMPI PUSH2 0x4683 PUSH1 0x9 PUSH1 0x2E DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3A0E JUMPI INVALID JUMPDEST SWAP2 POP POP PUSH2 0x1BF7 JUMP JUMPDEST DUP4 ISZERO PUSH2 0x470C JUMPI PUSH1 0x60 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD DUP3 MSTORE SWAP1 DUP3 ADD MLOAD DUP2 MSTORE PUSH2 0x46B2 SWAP1 DUP6 PUSH2 0x31DE JUMP JUMPDEST PUSH1 0x80 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x46C9 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x46D4 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x46EB JUMPI INVALID JUMPDEST EQ PUSH2 0x4707 JUMPI PUSH2 0x4683 PUSH1 0x9 PUSH1 0x2C DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3A0E JUMPI INVALID JUMPDEST PUSH2 0x4785 JUMP JUMPDEST PUSH2 0x4728 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH1 0x40 ADD MLOAD DUP2 MSTORE POP PUSH2 0x5A71 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x473F JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x474A JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4761 JUMPI INVALID JUMPDEST EQ PUSH2 0x477D JUMPI PUSH2 0x4683 PUSH1 0x9 PUSH1 0x2D DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3A0E JUMPI INVALID JUMPDEST PUSH1 0x80 DUP2 ADD DUP4 SWAP1 MSTORE JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x60 DUP3 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xEABE7D91 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP4 SWAP3 SWAP1 SWAP3 AND SWAP2 PUSH4 0xEABE7D91 SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x47EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x47FE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4814 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x4834 JUMPI PUSH2 0x482B PUSH1 0x3 PUSH1 0x2B DUP4 PUSH2 0x43F1 JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x1BF7 JUMP JUMPDEST PUSH2 0x483C PUSH2 0x247A JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x4850 JUMPI PUSH2 0x482B PUSH1 0xA PUSH1 0x2F PUSH2 0x3280 JUMP JUMPDEST PUSH2 0x4860 PUSH1 0x11 SLOAD DUP4 PUSH1 0x60 ADD MLOAD PUSH2 0x359D JUMP JUMPDEST PUSH1 0xA0 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP5 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4877 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4882 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP3 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4899 JUMPI INVALID JUMPDEST EQ PUSH2 0x48B5 JUMPI PUSH2 0x482B PUSH1 0x9 PUSH1 0x31 DUP5 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3A0E JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 DUP4 ADD MLOAD PUSH2 0x48DD SWAP2 SWAP1 PUSH2 0x359D JUMP JUMPDEST PUSH1 0xC0 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP5 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x48F4 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x48FF JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP3 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4916 JUMPI INVALID JUMPDEST EQ PUSH2 0x4932 JUMPI PUSH2 0x482B PUSH1 0x9 PUSH1 0x30 DUP5 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3A0E JUMPI INVALID JUMPDEST DUP2 PUSH1 0x80 ADD MLOAD PUSH2 0x493F PUSH2 0x3232 JUMP JUMPDEST LT ISZERO PUSH2 0x4951 JUMPI PUSH2 0x482B PUSH1 0xE PUSH1 0x32 PUSH2 0x3280 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MLOAD PUSH1 0x11 SSTORE PUSH1 0xC0 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x4987 SWAP1 DUP8 SWAP1 PUSH2 0x4551 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MLOAD PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD ADDRESS SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5EEB DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 PUSH1 0x80 DUP3 ADD MLOAD PUSH1 0x60 DUP1 DUP5 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP4 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE MLOAD PUSH32 0xE5B754FB1ABB7F01B499791D0B820AE3B6AF3424AC1C59768EDB53F4EC31A929 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x5 SLOAD PUSH1 0x80 DUP4 ADD MLOAD PUSH1 0x60 DUP5 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x51DFF989 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x64 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x51DFF989 SWAP2 PUSH1 0x84 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4A7B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4A8F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x0 SWAP3 POP PUSH2 0x4A9C SWAP2 POP POP JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH2 0x4AB9 JUMPI POP PUSH1 0x0 SWAP1 POP DUP1 PUSH2 0x322B JUMP JUMPDEST DUP4 DUP4 MUL DUP4 DUP6 DUP3 DUP2 PUSH2 0x4AC6 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x4ADA JUMPI POP PUSH1 0x2 SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH2 0x322B JUMP JUMPDEST PUSH1 0x0 SWAP3 POP SWAP1 POP PUSH2 0x322B JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH2 0x4AF9 JUMPI POP PUSH1 0x1 SWAP1 POP PUSH1 0x0 PUSH2 0x322B JUMP JUMPDEST PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x4B04 JUMPI INVALID JUMPDEST DIV SWAP2 POP SWAP2 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x4EF4C3E1 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 DUP5 SWAP4 SWAP2 AND SWAP2 PUSH4 0x4EF4C3E1 SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4B71 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4B85 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4B9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x4BBF JUMPI PUSH2 0x4BB2 PUSH1 0x3 PUSH1 0x21 DUP4 PUSH2 0x43F1 JUMP JUMPDEST SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH2 0x322B SWAP1 POP JUMP JUMPDEST PUSH2 0x4BC7 PUSH2 0x247A JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x4BDB JUMPI PUSH2 0x4BB2 PUSH1 0xA PUSH1 0x24 PUSH2 0x3280 JUMP JUMPDEST PUSH2 0x4BE3 PUSH2 0x5D2D JUMP JUMPDEST PUSH2 0x4BEB PUSH2 0x2A96 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4C02 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4C0D JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4C24 JUMPI INVALID JUMPDEST EQ PUSH2 0x4C4E JUMPI PUSH2 0x4C40 PUSH1 0x9 PUSH1 0x23 DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3A0E JUMPI INVALID JUMPDEST SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x322B SWAP2 POP POP JUMP JUMPDEST PUSH2 0x4C58 DUP7 DUP7 PUSH2 0x57B2 JUMP JUMPDEST PUSH1 0xC0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD DUP3 MSTORE SWAP1 DUP4 ADD MLOAD DUP2 MSTORE PUSH2 0x4C79 SWAP2 SWAP1 PUSH2 0x5A71 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4C90 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4C9B JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4CB2 JUMPI INVALID JUMPDEST EQ PUSH2 0x4D04 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D494E545F45584348414E47455F43414C43554C4154494F4E5F4641494C4544 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x4D14 PUSH1 0x11 SLOAD DUP3 PUSH1 0x60 ADD MLOAD PUSH2 0x3567 JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x4D41 SWAP2 SWAP1 PUSH2 0x3567 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MLOAD PUSH1 0x11 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0xC0 DUP5 ADD MLOAD PUSH1 0x60 DUP1 DUP7 ADD MLOAD DUP4 MLOAD SWAP5 DUP6 MSTORE SWAP5 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE MLOAD PUSH32 0x4C209B5FC8AD50758F13E2E1088BA56A560DFF690A1C6FEF26394F4C03821C4F SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 ADDRESS SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5EEB DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 PUSH1 0x5 SLOAD PUSH1 0xC0 DUP3 ADD MLOAD PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x41C728B9 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x64 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x41C728B9 SWAP2 PUSH1 0x84 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4E59 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4E6D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x0 SWAP3 POP PUSH2 0x4E7A SWAP2 POP POP JUMP JUMPDEST DUP2 PUSH1 0xC0 ADD MLOAD SWAP4 POP SWAP4 POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 ADD DUP3 DUP6 DUP3 LT ISZERO PUSH2 0x16F3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x43AD JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4395 JUMP JUMPDEST PUSH2 0x4EE9 PUSH2 0x5C87 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x4F02 DUP6 PUSH1 0x0 ADD MLOAD DUP6 PUSH2 0x5A88 JUMP JUMPDEST SWAP1 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4F15 PUSH2 0x5C87 JUMP JUMPDEST PUSH2 0x4F1F DUP5 DUP5 PUSH2 0x4EE1 JUMP JUMPDEST SWAP1 POP PUSH2 0x181F DUP2 PUSH2 0x4508 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4F34 PUSH2 0x5C87 JUMP JUMPDEST PUSH2 0x4F3E DUP6 DUP6 PUSH2 0x4EE1 JUMP JUMPDEST SWAP1 POP PUSH2 0x43E8 PUSH2 0x4F4C DUP3 PUSH2 0x4508 JUMP JUMPDEST DUP5 PUSH2 0x3567 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xDE0B6B3A7640000 PUSH2 0x4F6B DUP5 DUP5 PUSH1 0x0 ADD MLOAD PUSH2 0x5A88 JUMP JUMPDEST DUP2 PUSH2 0x4F72 JUMPI INVALID JUMPDEST DIV SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x368F5153 PUSH1 0xE2 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 AND SWAP2 PUSH4 0xDA3D454C SWAP2 PUSH1 0x64 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4FD7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4FEB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5001 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x5020 JUMPI PUSH2 0x5018 PUSH1 0x3 PUSH1 0x10 DUP4 PUSH2 0x43F1 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x10F2 JUMP JUMPDEST PUSH2 0x5028 PUSH2 0x247A JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x503C JUMPI PUSH2 0x5018 PUSH1 0xA PUSH1 0xC PUSH2 0x3280 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5046 PUSH2 0x3232 JUMP JUMPDEST SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x5065 JUMPI PUSH2 0x505C PUSH1 0xE PUSH1 0xB PUSH2 0x3280 JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x10F2 JUMP JUMPDEST PUSH2 0x506D PUSH2 0x5D6B JUMP JUMPDEST PUSH2 0x5076 DUP7 PUSH2 0x33F2 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x508A JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x5095 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x50A9 JUMPI INVALID JUMPDEST EQ PUSH2 0x50CE JUMPI PUSH2 0x50C4 PUSH1 0x9 DUP1 DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3A0E JUMPI INVALID JUMPDEST SWAP4 POP POP POP POP PUSH2 0x10F2 JUMP JUMPDEST PUSH2 0x50DC DUP2 PUSH1 0x20 ADD MLOAD DUP7 PUSH2 0x447A JUMP JUMPDEST PUSH1 0x40 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x50F0 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x50FB JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x510F JUMPI INVALID JUMPDEST EQ PUSH2 0x512B JUMPI PUSH2 0x50C4 PUSH1 0x9 PUSH1 0xE DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3A0E JUMPI INVALID JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 DUP4 ADD MLOAD DUP2 MLOAD PUSH4 0x1DE6C8A5 PUSH1 0xE2 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x779B2294 SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5184 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5198 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x51AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 POP DUP3 ISZERO PUSH2 0x51C5 JUMPI PUSH2 0x50C4 PUSH1 0x3 PUSH1 0x10 DUP6 PUSH2 0x43F1 JUMP JUMPDEST PUSH2 0x51D1 PUSH1 0xD SLOAD DUP7 PUSH2 0x447A JUMP JUMPDEST PUSH1 0x60 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x51E5 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x51F0 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x5204 JUMPI INVALID JUMPDEST EQ PUSH2 0x5220 JUMPI PUSH2 0x50C4 PUSH1 0x9 PUSH1 0xD DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3A0E JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 MSTORE SWAP2 SWAP1 SWAP2 KECCAK256 SWAP1 DUP2 SSTORE PUSH1 0xC SLOAD PUSH1 0x1 SWAP1 SWAP2 ADD SSTORE PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0xD SSTORE PUSH2 0x525C DUP7 DUP7 PUSH2 0x4551 JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 ADD MLOAD PUSH1 0x60 DUP1 DUP5 ADD MLOAD DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP11 SWAP1 MSTORE DUP1 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP1 DUP3 ADD MSTORE SWAP1 MLOAD PUSH32 0x13ED6866D4E1EE6DA46F845C46D7E54120883D75C5EA9A2DACC1C4CA8984AB80 SWAP2 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG1 PUSH1 0x0 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x2FE3F38F PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP8 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE DUP7 DUP2 AND PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x84 DUP3 ADD DUP7 SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 DUP5 SWAP4 SWAP2 AND SWAP2 PUSH4 0x5FC7E71E SWAP2 PUSH1 0xA4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5331 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5345 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x535B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x537F JUMPI PUSH2 0x5372 PUSH1 0x3 PUSH1 0x14 DUP4 PUSH2 0x43F1 JUMP JUMPDEST SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH2 0x57A9 SWAP1 POP JUMP JUMPDEST PUSH2 0x5387 PUSH2 0x247A JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x539B JUMPI PUSH2 0x5372 PUSH1 0xA PUSH1 0x18 PUSH2 0x3280 JUMP JUMPDEST PUSH2 0x53A3 PUSH2 0x247A JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6C540BAF 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 0x53DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x53F0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5406 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD EQ PUSH2 0x5419 JUMPI PUSH2 0x5372 PUSH1 0xA PUSH1 0x13 PUSH2 0x3280 JUMP JUMPDEST DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x543F JUMPI PUSH2 0x5372 PUSH1 0x6 PUSH1 0x19 PUSH2 0x3280 JUMP JUMPDEST DUP5 PUSH2 0x5450 JUMPI PUSH2 0x5372 PUSH1 0x7 PUSH1 0x17 PUSH2 0x3280 JUMP JUMPDEST PUSH1 0x0 NOT DUP6 EQ ISZERO PUSH2 0x5466 JUMPI PUSH2 0x5372 PUSH1 0x7 PUSH1 0x16 PUSH2 0x3280 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x5474 DUP10 DUP10 DUP10 PUSH2 0x3E02 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP DUP2 ISZERO PUSH2 0x54A4 JUMPI PUSH2 0x5495 DUP3 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x548E JUMPI INVALID JUMPDEST PUSH1 0x1A PUSH2 0x3280 JUMP JUMPDEST SWAP5 POP PUSH1 0x0 SWAP4 POP PUSH2 0x57A9 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xC488847B PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP6 SWAP1 MSTORE DUP3 MLOAD PUSH1 0x0 SWAP5 DUP6 SWAP5 SWAP3 AND SWAP3 PUSH4 0xC488847B SWAP3 PUSH1 0x64 DUP1 DUP4 ADD SWAP4 SWAP2 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x54FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5512 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x5528 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 POP SWAP1 POP DUP2 ISZERO PUSH2 0x5573 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x33 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5F3C PUSH1 0x33 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 DUP9 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 DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x55CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x55DE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x55F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT ISZERO PUSH2 0x5649 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C49515549444154455F5345495A455F544F4F5F4D5543480000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND ADDRESS EQ ISZERO PUSH2 0x566F JUMPI PUSH2 0x5668 ADDRESS DUP14 DUP14 DUP6 PUSH2 0x38C0 JUMP JUMPDEST SWAP1 POP PUSH2 0x56F9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xB2A02FF1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP15 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP14 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD SWAP2 DUP12 AND SWAP2 PUSH4 0xB2A02FF1 SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x56CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x56DE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x56F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP JUMPDEST DUP1 ISZERO PUSH2 0x5743 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x1D1BDAD95B881CD95A5E9D5C994819985A5B1959 PUSH1 0x62 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP16 AND DUP3 MSTORE DUP1 DUP15 AND PUSH1 0x20 DUP4 ADD MSTORE DUP2 DUP4 ADD DUP8 SWAP1 MSTORE DUP12 AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP2 ADD DUP5 SWAP1 MSTORE SWAP1 MLOAD PUSH32 0x298637F684DA70674F26509B10F07EC2FBC77A335AB1E7D6215A4B2484D8BB52 SWAP2 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 LOG1 PUSH1 0x0 SWAP8 POP SWAP3 SWAP6 POP POP POP POP POP POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x15 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 DUP4 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5802 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5816 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x582C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x24 DUP3 ADD MSTORE ADDRESS PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP1 DUP3 ADD DUP8 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x23B872DD PUSH1 0xE0 SHL OR SWAP1 MSTORE DUP3 MLOAD DUP1 DUP5 ADD SWAP1 SWAP4 MSTORE PUSH1 0x18 DUP4 MSTORE PUSH32 0x544F4B454E5F5452414E534645525F494E5F4641494C45440000000000000000 SWAP1 DUP4 ADD MSTORE SWAP2 SWAP3 POP PUSH2 0x58B9 SWAP2 SWAP1 PUSH2 0x59E9 JUMP JUMPDEST PUSH1 0x15 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5904 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5918 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x592E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP2 DUP2 LT ISZERO PUSH2 0x5987 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x544F4B454E5F5452414E534645525F494E5F4F564552464C4F57000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SUB SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x59E1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x43AD JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4395 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x15 SLOAD PUSH1 0x60 SWAP1 PUSH2 0x5A03 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 DUP5 PUSH2 0x42A2 JUMP JUMPDEST DUP1 MLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0x16B2 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5A22 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP3 SWAP1 PUSH2 0x18BF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x43AD JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4395 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x5A7E PUSH2 0x5C87 JUMP JUMPDEST PUSH2 0x31F5 DUP7 DUP7 PUSH2 0x5ACA JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1BF7 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x17 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x6D756C7469706C69636174696F6E206F766572666C6F77000000000000000000 DUP2 MSTORE POP PUSH2 0x5B29 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5AD4 PUSH2 0x5C87 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x5AE9 PUSH8 0xDE0B6B3A7640000 DUP8 PUSH2 0x4AA6 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x5AFC JUMPI INVALID JUMPDEST EQ PUSH2 0x5B1B JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x322B JUMP JUMPDEST PUSH2 0x3224 DUP2 DUP7 PUSH1 0x0 ADD MLOAD PUSH2 0x41ED JUMP JUMPDEST PUSH1 0x0 DUP4 ISZERO DUP1 PUSH2 0x5B36 JUMPI POP DUP3 ISZERO JUMPDEST ISZERO PUSH2 0x5B43 JUMPI POP PUSH1 0x0 PUSH2 0x1BF7 JUMP JUMPDEST DUP4 DUP4 MUL DUP4 DUP6 DUP3 DUP2 PUSH2 0x5B50 JUMPI INVALID JUMPDEST DIV EQ DUP4 SWAP1 PUSH2 0x16F3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x43AD JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4395 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x5BE0 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x5C0D JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x5C0D JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x5C0D JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x5BF2 JUMP JUMPDEST POP PUSH2 0x1A42 SWAP3 SWAP2 POP PUSH2 0x5D94 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x5C5A JUMPI DUP3 DUP1 ADD PUSH1 0xFF NOT DUP3 CALLDATALOAD AND OR DUP6 SSTORE PUSH2 0x5C0D JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x5C0D JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x5C0D JUMPI DUP3 CALLDATALOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x5C6C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x120 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x100 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xE0 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH2 0x14A4 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1A42 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x5D9A JUMP INVALID PUSH14 0x61726B6574206D6179206F6E6C79 KECCAK256 PUSH3 0x652069 PUSH15 0x697469616C697A6564206F6E636569 PUSH15 0x697469616C2065786368616E676520 PUSH19 0x617465206D7573742062652067726561746572 KECCAK256 PUSH21 0x68616E207A65726F2E6F6E6C79207468652061646D PUSH10 0x6E206D61792073657420 PUSH21 0x686520636F6D702D6C696B652064656C6567617465 PUSH20 0x657474696E6720696E7465726573742072617465 KECCAK256 PUSH14 0x6F64656C206661696C6564626F72 PUSH19 0x6F7742616C616E636553746F7265643A20626F PUSH19 0x726F7742616C616E636553746F726564496E74 PUSH6 0x726E616C2066 PUSH2 0x696C PUSH6 0x645245504159 0x5F TIMESTAMP 0x4F MSTORE MSTORE 0x4F JUMPI 0x5F 0x4E GASLIMIT JUMPI 0x5F COINBASE NUMBER NUMBER 0x4F SSTORE 0x4E SLOAD 0x5F TIMESTAMP 0x4F MSTORE MSTORE 0x4F JUMPI 0x5F TIMESTAMP COINBASE 0x4C COINBASE 0x4E NUMBER GASLIMIT 0x5F NUMBER COINBASE 0x4C NUMBER SSTORE 0x4C COINBASE SLOAD 0x49 0x4F 0x4E 0x5F CHAINID COINBASE 0x49 0x4C GASLIMIT DIFFICULTY PUSH16 0x6E6C7920467573652061646D696E206D PUSH2 0x7920 PUSH10 0x6E697469616C697A6520 PUSH21 0x6865206D61726B6574DDF252AD1BE2C89B69C2B068 0xFC CALLDATACOPY DUP14 0xAA SWAP6 0x2B 0xA7 CALL PUSH4 0xC4A11628 CREATE2 GAS 0x4D CREATE2 0x23 0xB3 0xEF MSTORE GASLIMIT POP COINBASE MSIZE 0x5F TIMESTAMP 0x4F MSTORE MSTORE 0x4F JUMPI 0x5F 0x4E GASLIMIT JUMPI 0x5F SLOAD 0x4F SLOAD COINBASE 0x4C 0x5F TIMESTAMP COINBASE 0x4C COINBASE 0x4E NUMBER GASLIMIT 0x5F NUMBER COINBASE 0x4C NUMBER SSTORE 0x4C COINBASE SLOAD 0x49 0x4F 0x4E 0x5F CHAINID COINBASE 0x49 0x4C GASLIMIT DIFFICULTY 0x4C 0x49 MLOAD SSTORE 0x49 DIFFICULTY COINBASE SLOAD GASLIMIT 0x5F NUMBER 0x4F 0x4D POP SLOAD MSTORE 0x4F 0x4C 0x4C GASLIMIT MSTORE 0x5F NUMBER COINBASE 0x4C NUMBER SSTORE 0x4C COINBASE SLOAD GASLIMIT 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD 0x5F MSTORE8 GASLIMIT 0x49 GAS GASLIMIT 0x5F CHAINID COINBASE 0x49 0x4C GASLIMIT DIFFICULTY PUSH6 0x786368616E67 PUSH6 0x526174655374 PUSH16 0x7265643A2065786368616E6765526174 PUSH6 0x53746F726564 0x49 PUSH15 0x7465726E616C206661696C65646F6E PUSH6 0x206F66207265 PUSH5 0x65656D546F PUSH12 0x656E73496E206F7220726564 PUSH6 0x656D416D6F75 PUSH15 0x74496E206D757374206265207A6572 PUSH16 0xA265627A7A72315820C5E70DE80F8EAD 0xD 0xD9 DUP11 SWAP11 DUP5 DUP7 SWAP7 CALLDATACOPY BLOCKHASH CALLDATACOPY AND 0xCD 0xCB XOR 0xA9 0x2F KECCAK256 DUP7 CHAINID SWAP2 0xB9 0xB8 PUSH16 0x3BA864736F6C63430005110032000000 ","sourceMap":"194:3704:3:-;;;313:23;8:9:-1;5:2;;;30:1;27;20:12;5:2;313:23:3;194:3704;;;;;;"},"deployedBytecode":{"linkReferences":{},"object":"6080604052600436106103765760003560e01c8063852a12e3116101d1578063ae9d70b011610102578063dc028ab1116100a0578063f5e3c4621161006f578063f5e3c46214610f69578063f8f9da2814610fac578063fca7820b14610fc1578063fe9c44ae14610feb57610376565b8063dc028ab114610ed1578063dd62ed3e14610ee6578063f2b3abbd14610f21578063f3fdb15a14610f5457610376565b8063c37f68e2116100dc578063c37f68e214610e0f578063c5ebeaec14610e68578063db006a7514610e92578063dbfe7c1914610ebc57610376565b8063ae9d70b014610da2578063b2a02ff114610db7578063bd6d894d14610dfa57610376565b8063a0712d681161016f578063a7b820df11610149578063a7b820df14610d15578063a9059cbb14610d3f578063aa5af0fd14610d78578063ac784ddc14610d8d57610376565b8063a0712d6814610b7a578063a0b0d28914610ba4578063a6afed9514610d0057610376565b806391dd36c6116101ab57806391dd36c614610ade57806395d89b4114610b0857806395dd919314610b1d578063a03dce8d14610b5057610376565b8063852a12e314610a8a5780638d02d9a114610ab45780638f840ddd14610ac957610376565b80633b1d21a2116102ab57806361feacff116102495780636f307dc3116102235780636f307dc3146109fa57806370a0823114610a0f57806373acee9814610a425780637f1e06be14610a5757610376565b806361feacff146109bb5780636752e702146109d05780636c540baf146109e557610376565b806356e677281161028557806356e67728146108d05780635c60da1b1461094b5780635fe3b5671461097c578063601a0bf11461099157610376565b80633b1d21a21461081457806347bd37181461082957806350d85b731461083e57610376565b8063182df0f5116103185780632608f818116102f25780632608f818146106b2578063313ce567146106eb57806334154d4c146107165780633af9e669146107e157610376565b8063182df0f5146106525780631db789441461066757806323b872dd1461066f57610376565b80630f8855e8116103545780630f8855e81461048e578063173b9904146105f557806317bfdfbc1461060a57806318160ddd1461063d57610376565b806306fdde031461037b578063095ea7b3146104055780630e75270214610452575b600080fd5b34801561038757600080fd5b50610390611000565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103ca5781810151838201526020016103b2565b50505050905090810190601f1680156103f75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561041157600080fd5b5061043e6004803603604081101561042857600080fd5b506001600160a01b03813516906020013561108b565b604080519115158252519081900360200190f35b34801561045e57600080fd5b5061047c6004803603602081101561047557600080fd5b50356110f8565b60408051918252519081900360200190f35b34801561049a57600080fd5b506105f360048036036101008110156104b257600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b8111156104ec57600080fd5b8201836020820111156104fe57600080fd5b803590602001918460018302840111600160201b8311171561051f57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561057157600080fd5b82018360208201111561058357600080fd5b803590602001918460018302840111600160201b831117156105a457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505060ff833516935050506020810135906040013561110e565b005b34801561060157600080fd5b5061047c6113bc565b34801561061657600080fd5b5061047c6004803603602081101561062d57600080fd5b50356001600160a01b03166113c2565b34801561064957600080fd5b5061047c61143e565b34801561065e57600080fd5b5061047c611444565b6105f36114a7565b34801561067b57600080fd5b5061043e6004803603606081101561069257600080fd5b506001600160a01b038135811691602081013590911690604001356116b8565b3480156106be57600080fd5b5061047c600480360360408110156106d557600080fd5b506001600160a01b0381351690602001356116e6565b3480156106f757600080fd5b506107006116fc565b6040805160ff9092168252519081900360200190f35b34801561072257600080fd5b506105f36004803603604081101561073957600080fd5b810190602081018135600160201b81111561075357600080fd5b82018360208201111561076557600080fd5b803590602001918460018302840111600160201b8311171561078657600080fd5b919390929091602081019035600160201b8111156107a357600080fd5b8201836020820111156107b557600080fd5b803590602001918460018302840111600160201b831117156107d657600080fd5b509092509050611705565b3480156107ed57600080fd5b5061047c6004803603602081101561080457600080fd5b50356001600160a01b0316611771565b34801561082057600080fd5b5061047c611827565b34801561083557600080fd5b5061047c611836565b34801561084a57600080fd5b506105f36004803603606081101561086157600080fd5b6001600160a01b03823516916020810135151591810190606081016040820135600160201b81111561089257600080fd5b8201836020820111156108a457600080fd5b803590602001918460018302840111600160201b831117156108c557600080fd5b50909250905061183c565b3480156108dc57600080fd5b506105f3600480360360208110156108f357600080fd5b810190602081018135600160201b81111561090d57600080fd5b82018360208201111561091f57600080fd5b803590602001918460018302840111600160201b8311171561094057600080fd5b5090925090506118c5565b34801561095757600080fd5b50610960611923565b604080516001600160a01b039092168252519081900360200190f35b34801561098857600080fd5b50610960611932565b34801561099d57600080fd5b5061047c600480360360208110156109b457600080fd5b5035611941565b3480156109c757600080fd5b5061047c611992565b3480156109dc57600080fd5b5061047c611998565b3480156109f157600080fd5b5061047c6119a3565b348015610a0657600080fd5b506109606119a9565b348015610a1b57600080fd5b5061047c60048036036020811015610a3257600080fd5b50356001600160a01b03166119b8565b348015610a4e57600080fd5b5061047c6119d3565b348015610a6357600080fd5b506105f360048036036020811015610a7a57600080fd5b50356001600160a01b0316611a46565b348015610a9657600080fd5b5061047c60048036036020811015610aad57600080fd5b5035611aeb565b348015610ac057600080fd5b5061047c611af6565b348015610ad557600080fd5b5061047c611afc565b348015610aea57600080fd5b5061047c60048036036020811015610b0157600080fd5b5035611b02565b348015610b1457600080fd5b50610390611b3f565b348015610b2957600080fd5b5061047c60048036036020811015610b4057600080fd5b50356001600160a01b0316611b9a565b348015610b5c57600080fd5b5061047c60048036036020811015610b7357600080fd5b5035611bfe565b348015610b8657600080fd5b5061047c60048036036020811015610b9d57600080fd5b5035611c3b565b348015610bb057600080fd5b506105f3600480360360e0811015610bc757600080fd5b6001600160a01b0382358116926020810135821692604082013590921691810190608081016060820135600160201b811115610c0257600080fd5b820183602082011115610c1457600080fd5b803590602001918460018302840111600160201b83111715610c3557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115610c8757600080fd5b820183602082011115610c9957600080fd5b803590602001918460018302840111600160201b83111715610cba57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505082359350505060200135611c47565b348015610d0c57600080fd5b5061047c611d60565b348015610d2157600080fd5b5061047c60048036036020811015610d3857600080fd5b5035611f25565b348015610d4b57600080fd5b5061043e60048036036040811015610d6257600080fd5b506001600160a01b038135169060200135611f62565b348015610d8457600080fd5b5061047c611f8f565b348015610d9957600080fd5b5061043e611f95565b348015610dae57600080fd5b5061047c611f9a565b348015610dc357600080fd5b5061047c60048036036060811015610dda57600080fd5b506001600160a01b03813581169160208101359091169060400135612052565b348015610e0657600080fd5b5061047c612076565b348015610e1b57600080fd5b50610e4260048036036020811015610e3257600080fd5b50356001600160a01b03166120ea565b604080519485526020850193909352838301919091526060830152519081900360800190f35b348015610e7457600080fd5b5061047c60048036036020811015610e8b57600080fd5b503561217f565b348015610e9e57600080fd5b5061047c60048036036020811015610eb557600080fd5b503561218a565b348015610ec857600080fd5b5061047c612195565b348015610edd57600080fd5b5061047c61219b565b348015610ef257600080fd5b5061047c60048036036040811015610f0957600080fd5b506001600160a01b03813581169160200135166121a1565b348015610f2d57600080fd5b5061047c60048036036020811015610f4457600080fd5b50356001600160a01b03166121cc565b348015610f6057600080fd5b50610960612206565b348015610f7557600080fd5b5061047c60048036036060811015610f8c57600080fd5b506001600160a01b03813581169160208101359160409091013516612215565b348015610fb857600080fd5b5061047c61222d565b348015610fcd57600080fd5b5061047c60048036036020811015610fe457600080fd5b50356122a2565b348015610ff757600080fd5b5061043e6122df565b6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156110835780601f1061105857610100808354040283529160200191611083565b820191906000526020600020905b81548152906001019060200180831161106657829003601f168201915b505050505081565b3360008181526013602090815260408083206001600160a01b03871680855290835281842086905581518681529151939493909284927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a360019150505b92915050565b600080611104836122e4565b509150505b919050565b3373a731585ab05fc9f83555cf9bff8f58ee94e18f85146111605760405162461bcd60e51b8152600401808060200182810382526029815260200180615ec26029913960400191505060405180910390fd5b600b541580156111705750600c54155b6111ab5760405162461bcd60e51b8152600401808060200182810382526023815260200180615daf6023913960400191505060405180910390fd5b6007869055856111ec5760405162461bcd60e51b8152600401808060200182810382526030815260200180615dd26030913960400191505060405180910390fd5b60006111f789612347565b9050801561124c576040805162461bcd60e51b815260206004820152601a60248201527f73657474696e6720636f6d7074726f6c6c6572206661696c6564000000000000604482015290519081900360640190fd5b61125461247a565b600b55670de0b6b3a7640000600c5561126c8861247e565b905080156112ab5760405162461bcd60e51b8152600401808060200182810382526022815260200180615e2f6022913960400191505060405180910390fd5b85516112be906002906020890190615b9f565b5084516112d2906003906020880190615b9f565b506004805460ff191660ff86161790556112eb83612784565b90508015611340576040805162461bcd60e51b815260206004820152601d60248201527f73657474696e67207265736572766520666163746f72206661696c6564000000604482015290519081900360640190fd5b6113498261283d565b9050801561139e576040805162461bcd60e51b815260206004820152601860248201527f73657474696e672061646d696e20666565206661696c65640000000000000000604482015290519081900360640190fd5b50506001805460ff60b01b1916600160b01b17905550505050505050565b600a5481565b6000806113ce81612962565b60006113d8611d60565b14611423576040805162461bcd60e51b81526020600482015260166024820152751858d8dc9d59481a5b9d195c995cdd0819985a5b195960521b604482015290519081900360640190fd5b61142c83611b9a565b91505b61143881612a2b565b50919050565b60115481565b6000806000611451612a96565b9092509050600082600381111561146457fe5b146114a05760405162461bcd60e51b8152600401808060200182810382526035815260200180615f6f6035913960400191505060405180910390fd5b9150505b90565b33301480159061152d5750600560009054906101000a90046001600160a01b03166001600160a01b031663dd5cd22c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561150057600080fd5b505afa158015611514573d6000803e3d6000fd5b505050506040513d602081101561152a57600080fd5b50515b156116b65760008054604080516345cc970560e01b81526001600160a01b03909216600483015251829160609173a731585ab05fc9f83555cf9bff8f58ee94e18f85916345cc97059160248083019287929190829003018186803b15801561159457600080fd5b505afa1580156115a8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260608110156115d157600080fd5b81516020830151604080850180519151939592948301929184600160201b8211156115fb57600080fd5b90830190602082018581111561161057600080fd5b8251600160201b81118282018810171561162957600080fd5b82525081516020918201929091019080838360005b8381101561165657818101518382015260200161163e565b50505050905090810190601f1680156116835780820380516001836020036101000a031916815260200191505b5060405250506000549396509194509250506001600160a01b038085169116146116b2576116b2838383612b56565b5050505b565b6000806116c481612962565b60006116d233878787612d72565b1491506116de81612a2b565b509392505050565b6000806116f38484612ffe565b50949350505050565b60045460ff1681565b61170d613063565b611751576040805162461bcd60e51b815260206004820152601060248201526f31b0b63632b9103737ba1030b236b4b760811b604482015290519081900360640190fd5b61175d60028585615c19565b5061176a60038383615c19565b5050505050565b600061177b615c87565b604051806020016040528061178e612076565b90526001600160a01b0384166000908152601260205260408120549192509081906117ba9084906131de565b909250905060008260038111156117cd57fe5b1461181f576040805162461bcd60e51b815260206004820152601f60248201527f62616c616e636520636f756c64206e6f742062652063616c63756c6174656400604482015290519081900360640190fd5b949350505050565b6000611831613232565b905090565b600d5481565b611844613063565b61187e576040805162461bcd60e51b815260206004820152600660248201526510b0b236b4b760d11b604482015290519081900360640190fd5b6118bf848484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612b5692505050565b50505050565b333014806118d657506118d6613063565b61190f576040805162461bcd60e51b815260206004820152600560248201526410b9b2b63360d91b604482015290519081900360640190fd5b5050600180546001600160b01b0319169055565b6000546001600160a01b031681565b6005546001600160a01b031681565b60008061194d81612962565b6000611957611d60565b9050801561197d5761197581601181111561196e57fe5b603b613280565b92505061142f565b611986846132e6565b92505061143881612a2b565b600f5481565b666379da05b6000081565b600b5481565b6015546001600160a01b031681565b6001600160a01b031660009081526012602052604090205490565b6000806119df81612962565b60006119e9611d60565b14611a34576040805162461bcd60e51b81526020600482015260166024820152751858d8dc9d59481a5b9d195c995cdd0819985a5b195960521b604482015290519081900360640190fd5b600d549150611a4281612a2b565b5090565b611a4e613063565b611a895760405162461bcd60e51b815260040180806020018281038252602d815260200180615e02602d913960400191505060405180910390fd5b601554604080516317066a5760e21b81526001600160a01b03848116600483015291519190921691635c19a95c91602480830192600092919082900301818387803b158015611ad757600080fd5b505af115801561176a573d6000803e3d6000fd5b60006110f2826133b2565b60085481565b600e5481565b600080611b0e81612962565b6000611b18611d60565b90508015611b3657611975816011811115611b2f57fe5b6052613280565b6119868461283d565b6003805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156110835780601f1061105857610100808354040283529160200191611083565b6000806000611ba8846133f2565b90925090506000826003811115611bbb57fe5b14611bf75760405162461bcd60e51b8152600401808060200182810382526037815260200180615e516037913960400191505060405180910390fd5b9392505050565b600080611c0a81612962565b6000611c14611d60565b90508015611c3257611975816011811115611c2b57fe5b6033613280565b611986846134a6565b60008061110483613527565b60006702c68af0bb14000090506000886001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015611c8f57600080fd5b505afa158015611ca3573d6000803e3d6000fd5b505050506040513d6020811015611cb957600080fd5b50519050611ccd8888848989868a8a61110e565b601580546001600160a01b0319166001600160a01b038b81169190911791829055604080516318160ddd60e01b8152905192909116916318160ddd91600480820192602092909190829003018186803b158015611d2957600080fd5b505afa158015611d3d573d6000803e3d6000fd5b505050506040513d6020811015611d5357600080fd5b5050505050505050505050565b600080611d6b61247a565b905080600b541415611d815760009150506114a4565b6000611d8b613232565b90506000600660009054906101000a90046001600160a01b03166001600160a01b03166315f2405383600d54611dd0600e54611dcb600f54601054613567565b613567565b6040518463ffffffff1660e01b815260040180848152602001838152602001828152602001935050505060206040518083038186803b158015611e1257600080fd5b505afa158015611e26573d6000803e3d6000fd5b505050506040513d6020811015611e3c57600080fd5b5051905065048c27395000811115611e9b576040805162461bcd60e51b815260206004820152601c60248201527f626f72726f772072617465206973206162737572646c79206869676800000000604482015290519081900360640190fd5b600080611eaa85600b5461359d565b90925090506000826003811115611ebd57fe5b14611f0f576040805162461bcd60e51b815260206004820152601f60248201527f636f756c64206e6f742063616c63756c61746520626c6f636b2064656c746100604482015290519081900360640190fd5b611f1b858585846135c0565b9550505050505090565b600080611f3181612962565b6000611f3b611d60565b90508015611f5957611975816011811115611f5257fe5b6037613280565b611986846137d8565b600080611f6e81612962565b6000611f7c33338787612d72565b149150611f8881612a2b565b5092915050565b600c5481565b600081565b6006546000906001600160a01b031663b8168816611fb6613232565b600d54611fcd600e54611dcb600f54601054613567565b600854600954600a5401016040518563ffffffff1660e01b81526004018085815260200184815260200183815260200182815260200194505050505060206040518083038186803b15801561202157600080fd5b505afa158015612035573d6000803e3d6000fd5b505050506040513d602081101561204b57600080fd5b5051905090565b6000600161205f81612962565b61206b338686866138c0565b91506116de81612a2b565b60008061208281612962565b600061208c611d60565b146120d7576040805162461bcd60e51b81526020600482015260166024820152751858d8dc9d59481a5b9d195c995cdd0819985a5b195960521b604482015290519081900360640190fd5b6120df611444565b9150611a4281612a2b565b6001600160a01b038116600090815260126020526040812054819081908190818080612115896133f2565b93509050600081600381111561212757fe5b146121455760095b9750600096508695508594506121789350505050565b61214d612a96565b92509050600081600381111561215f57fe5b1461216b57600961212f565b5060009650919450925090505b9193509193565b60006110f282613c9f565b60006110f282613cdd565b60095481565b60105481565b6001600160a01b03918216600090815260136020908152604080832093909416825291909152205490565b6000806121d7611d60565b905080156121fd576121f58160118111156121ee57fe5b604b613280565b915050611109565b611bf78361247e565b6006546001600160a01b031681565b600080612223858585613d16565b5095945050505050565b6006546000906001600160a01b03166315f24053612249613232565b600d54612260600e54611dcb600f54601054613567565b6040518463ffffffff1660e01b815260040180848152602001838152602001828152602001935050505060206040518083038186803b15801561202157600080fd5b6000806122ae81612962565b60006122b8611d60565b905080156122d6576119758160118111156122cf57fe5b6059613280565b61198684612784565b600181565b60008060006122f281612962565b60006122fc611d60565b905080156123275761231a81601181111561231357fe5b6041613280565b9350600092506123389050565b612332333387613e02565b93509350505b61234181612a2b565b50915091565b600080600560009054906101000a90046001600160a01b03169050826001600160a01b0316627e3dd26040518163ffffffff1660e01b815260040160206040518083038186803b15801561239a57600080fd5b505afa1580156123ae573d6000803e3d6000fd5b505050506040513d60208110156123c457600080fd5b5051612417576040805162461bcd60e51b815260206004820152601c60248201527f6d61726b6572206d6574686f642072657475726e65642066616c736500000000604482015290519081900360640190fd5b600580546001600160a01b0319166001600160a01b03858116918217909255604080519284168352602083019190915280517f7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d9281900390910190a16000611bf7565b4390565b600080612489613063565b612499576121f56001604d613280565b6124a161247a565b600b54146124b5576121f5600a604c613280565b600660009054906101000a90046001600160a01b03169050826001600160a01b0316632191f92a6040518163ffffffff1660e01b815260040160206040518083038186803b15801561250657600080fd5b505afa15801561251a573d6000803e3d6000fd5b505050506040513d602081101561253057600080fd5b5051612583576040805162461bcd60e51b815260206004820152601c60248201527f6d61726b6572206d6574686f642072657475726e65642066616c736500000000604482015290519081900360640190fd5b600680546001600160a01b0319166001600160a01b03858116918217909255604080519284168352602083019190915280517fedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f9269281900390910190a16001600160a01b038116156126b55760408051600481526024810182526020810180516001600160e01b0316636cc1140b60e11b178152915181516001600160a01b0385169382918083835b6020831061264a5780518252601f19909201916020918201910161262b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146126ac576040519150601f19603f3d011682016040523d82523d6000602084013e6126b1565b606091505b5050505b60408051600481526024810182526020810180516001600160e01b031663742a137b60e11b178152915181516001600160a01b0387169382918083835b602083106127115780518252601f1990920191602091820191016126f2565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612773576040519150601f19603f3d011682016040523d82523d6000602084013e612778565b606091505b5060009150611bf79050565b600061278e613063565b6127a55761279e6001605a613280565b9050611109565b6127ad61247a565b600b54146127c15761279e600a605b613280565b670de0b6b3a76400006127e16127d984600854613567565b600954613567565b11156127f35761279e6002605c613280565b600a805490839055604080518281526020810185905281517faaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460929181900390910190a16000611bf7565b600061284761247a565b600b541461285b5761279e600a6054613280565b60001982141561286b5760085491505b6000612875614152565b9050670de0b6b3a764000061289561288f600a5486613567565b83613567565b11156128a7576121f560026055613280565b826008541461290d576128b8613063565b6128c8576121f560016053613280565b6008805490849055604080518281526020810186905281517fcdd0b588250e1398549f79cfdb8217c186688822905d6715b0834ea1c865594a929181900390910190a1505b806009541461295b576009805490829055604080518281526020810184905281517f92eef861b6533b7d3417f39c2ad7b460eed4e88a32fa3604f30e718b7602e7dc929181900390910190a1505b6000611bf7565b600154600160b01b900460ff166129ad576040805162461bcd60e51b815260206004820152600a6024820152691c994b595b9d195c995960b21b604482015290519081900360640190fd5b80612a1b57600560009054906101000a90046001600160a01b03166001600160a01b031663c90c20b16040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612a0257600080fd5b505af1158015612a16573d6000803e3d6000fd5b505050505b506001805460ff60b01b19169055565b6001805460ff60b01b1916600160b01b17905580612a9357600560009054906101000a90046001600160a01b03166001600160a01b031663632e51426040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611ad757600080fd5b50565b601154600090819080612ab157505060075460009150612b52565b6000612abb613232565b90506000612ac7615c87565b6000612ae984600d54612ae4600e54611dcb600f54601054613567565b6141a1565b935090506000816003811115612afb57fe5b14612b1057955060009450612b529350505050565b612b1a83866141ed565b925090506000816003811115612b2c57fe5b14612b4157955060009450612b529350505050565b5051600095509350612b5292505050565b9091565b600054604080516338e6a07360e11b81526001600160a01b039283166004820152918516602483015283151560448301525173a731585ab05fc9f83555cf9bff8f58ee94e18f85916371cd40e6916064808301926020929190829003018186803b158015612bc357600080fd5b505afa158015612bd7573d6000803e3d6000fd5b505050506040513d6020811015612bed57600080fd5b5051612c28576040805162461bcd60e51b8152602060048201526005602482015264085a5b5c1b60da1b604482015290519081900360640190fd5b8115612c3657612c3661429d565b600080546001600160a01b038581166001600160a01b031983161783556040516020602482018181528651604484015286519390941694612d2394309488949193849360649093019290860191908190849084905b83811015612ca3578181015183820152602001612c8b565b50505050905090810190601f168015612cd05780820380516001836020036101000a031916815260200191505b5060408051601f19818403018152918152602080830180516001600160e01b0316630adccee560e31b17905281518083019092526007825266216265636f6d6560c81b9082015290935091506142a29050565b50600054604080516001600160a01b038085168252909216602083015280517fd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a9281900390910190a150505050565b600554604080516317b9b84b60e31b81523060048201526001600160a01b03868116602483015285811660448301526064820185905291516000938493169163bdcdc25891608480830192602092919082900301818787803b158015612dd757600080fd5b505af1158015612deb573d6000803e3d6000fd5b505050506040513d6020811015612e0157600080fd5b505190508015612e2057612e186003605d836143f1565b91505061181f565b836001600160a01b0316856001600160a01b03161415612e4657612e186002605e613280565b60006001600160a01b038781169087161415612e655750600019612e8d565b506001600160a01b038086166000908152601360209081526040808320938a16835292905220545b600080600080612e9d858961359d565b90945092506000846003811115612eb057fe5b14612ece57612ec16009605e613280565b965050505050505061181f565b6001600160a01b038a16600090815260126020526040902054612ef1908961359d565b90945091506000846003811115612f0457fe5b14612f1557612ec16009605f613280565b6001600160a01b038916600090815260126020526040902054612f38908961447a565b90945090506000846003811115612f4b57fe5b14612f5c57612ec160096060613280565b6001600160a01b03808b16600090815260126020526040808220859055918b168152208190556000198514612fb4576001600160a01b03808b166000908152601360209081526040808320938f168352929052208390555b886001600160a01b03168a6001600160a01b0316600080516020615eeb8339815191528a6040518082815260200191505060405180910390a35060009a9950505050505050505050565b600080600061300c81612962565b6000613016611d60565b905080156130415761303481601181111561302d57fe5b6040613280565b9350600092506130529050565b61304c338787613e02565b93509350505b61305b81612a2b565b509250929050565b600554604080516303e1469160e61b815290516000926001600160a01b031691829163f851a44091600480820192602092909190829003018186803b1580156130ab57600080fd5b505afa1580156130bf573d6000803e3d6000fd5b505050506040513d60208110156130d557600080fd5b50516001600160a01b03163314801561314f5750806001600160a01b0316630a755ec26040518163ffffffff1660e01b815260040160206040518083038186803b15801561312257600080fd5b505afa158015613136573d6000803e3d6000fd5b505050506040513d602081101561314c57600080fd5b50515b806114a057503373a731585ab05fc9f83555cf9bff8f58ee94e18f851480156114a05750806001600160a01b0316632f1069ba6040518163ffffffff1660e01b815260040160206040518083038186803b1580156131ac57600080fd5b505afa1580156131c0573d6000803e3d6000fd5b505050506040513d60208110156131d657600080fd5b505191505090565b60008060006131eb615c87565b6131f586866144a0565b9092509050600082600381111561320857fe5b14613219575091506000905061322b565b600061322482614508565b9350935050505b9250929050565b601554604080516370a0823160e01b815230600482015290516000926001600160a01b03169182916370a0823191602480820192602092909190829003018186803b1580156131ac57600080fd5b60007f45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa08360118111156132af57fe5b8360638111156132bb57fe5b604080519283526020830191909152600082820152519081900360600190a1826011811115611bf757fe5b6000806132f1613063565b613301576121f56001603c613280565b61330961247a565b600b541461331d576121f5600a603e613280565b82613326613232565b1015613338576121f5600e603d613280565b600e5483111561334e576121f56002603f613280565b61335a600e5484614517565b600e819055905061336b3384614551565b604080513381526020810185905280820183905290517f3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e9181900360600190a16000611bf7565b6000806133be81612962565b60006133c8611d60565b905080156133e6576119758160118111156133df57fe5b602a613280565b611986336000866145d6565b6001600160a01b0381166000908152601460205260408120805482918291829182916134295750600094508493506134a192505050565b6134398160000154600c54614aa6565b9094509250600084600381111561344c57fe5b146134615750919350600092506134a1915050565b61346f838260010154614ae5565b9094509150600084600381111561348257fe5b146134975750919350600092506134a1915050565b5060009450925050505b915091565b6000806134b161247a565b600b54146134c5576121f5600a6035613280565b826134ce613232565b10156134e0576121f5600e6034613280565b6010548311156134f6576121f560026036613280565b61350260105484614517565b6010819055905061295b73a731585ab05fc9f83555cf9bff8f58ee94e18f8584614551565b600080600061353581612962565b600061353f611d60565b9050801561355d5761231a81601181111561355657fe5b6020613280565b6123323386614b10565b6000611bf78383604051806040016040528060118152602001706164646974696f6e206f766572666c6f7760781b815250614e8c565b6000808383116135b457506000905081830361322b565b5060039050600061322b565b60006135ca615c87565b6135e260405180602001604052808681525084614ee1565b905060006135f282600d54614f0b565b9050600061360282600d54613567565b905060006136236040518060200160405280600a5481525084600e54614f2a565b90506000613644604051806020016040528060095481525085601054614f2a565b90506000613665604051806020016040528060085481525086600f54614f2a565b9050600061367887600c54600c54614f2a565b600b8d9055600c819055600d869055600e8590556010849055600f839055604080518d8152602081018990528082018390526060810188905290519192507f4dec04e750ca11537cabcd8a9eab06494de08da3735bc8871cd41250e190bc04919081900360800190a16006546040805160248082018e905282518083039091018152604490910182526020810180516001600160e01b0316635efd023360e11b178152915181516001600160a01b0390941693919290918291908083835b602083106137555780518252601f199092019160209182019101613736565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146137b7576040519150601f19603f3d011682016040523d82523d6000602084013e6137bc565b606091505b50600091506137c89050565b9c9b505050505050505050505050565b6000806137e361247a565b600b54146137f7576121f5600a6039613280565b82613800613232565b1015613812576121f5600e6038613280565b600f54831115613828576121f56002603a613280565b613834600f5484614517565b905080600f8190555061295b600560009054906101000a90046001600160a01b03166001600160a01b031663f851a4406040518163ffffffff1660e01b815260040160206040518083038186803b15801561388e57600080fd5b505afa1580156138a2573d6000803e3d6000fd5b505050506040513d60208110156138b857600080fd5b505184614551565b6005546040805163d02f735160e01b81523060048201526001600160a01b038781166024830152868116604483015285811660648301526084820185905291516000938493169163d02f73519160a480830192602092919082900301818787803b15801561392d57600080fd5b505af1158015613941573d6000803e3d6000fd5b505050506040513d602081101561395757600080fd5b50519050801561396e57612e186003601d836143f1565b846001600160a01b0316846001600160a01b0316141561399457612e186006601e613280565b61399c615c9a565b6001600160a01b0385166000908152601260205260409020546139bf908561359d565b60208301819052828260038111156139d357fe5b60038111156139de57fe5b90525060009050815160038111156139f257fe5b14613a1c57613a136009601c83600001516003811115613a0e57fe5b6143f1565b9250505061181f565b613a3b846040518060200160405280666379da05b60000815250614f52565b60808201819052613a4d908590614517565b6060820152613a5a612a96565b60c0830181905282826003811115613a6e57fe5b6003811115613a7957fe5b9052506000905081516003811115613a8d57fe5b14613adf576040805162461bcd60e51b815260206004820152601860248201527f65786368616e67652072617465206d617468206572726f720000000000000000604482015290519081900360640190fd5b613aff60405180602001604052808360c001518152508260800151614f0b565b60a08201819052600e54613b1291613567565b60e08201526011546080820151613b299190614517565b6101008201526001600160a01b0386166000908152601260205260409020546060820151613b57919061447a565b6040830181905282826003811115613b6b57fe5b6003811115613b7657fe5b9052506000905081516003811115613b8a57fe5b14613ba657613a136009601b83600001516003811115613a0e57fe5b60e0810151600e556101008101516011556020808201516001600160a01b0380881660008181526012855260408082209490945583860151928b16808252908490209290925560608501518351908152925191939092600080516020615eeb833981519152929081900390910190a36080810151604080519182525130916001600160a01b03881691600080516020615eeb8339815191529181900360200190a360a081015160e082015160408051308152602081019390935282810191909152517fa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc59181900360600190a16000979650505050505050565b600080613cab81612962565b6000613cb5611d60565b90508015613cd357611975816011811115613ccc57fe5b600a613280565b6119863385614f7a565b600080613ce981612962565b6000613cf3611d60565b90508015613d0a576119758160118111156133df57fe5b611986338560006145d6565b6000806000613d2481612962565b6000613d2e611d60565b90508015613d5957613d4c816011811115613d4557fe5b6011613280565b935060009250613df09050565b846001600160a01b031663a6afed956040518163ffffffff1660e01b8152600401602060405180830381600087803b158015613d9457600080fd5b505af1158015613da8573d6000803e3d6000fd5b505050506040513d6020811015613dbe57600080fd5b505190508015613dde57613d4c816011811115613dd757fe5b6012613280565b613dea338888886152c0565b93509350505b613df981612a2b565b50935093915050565b60055460408051631200453160e11b81523060048201526001600160a01b0386811660248301528581166044830152606482018590529151600093849384939116916324008a629160848082019260209290919082900301818787803b158015613e6b57600080fd5b505af1158015613e7f573d6000803e3d6000fd5b505050506040513d6020811015613e9557600080fd5b505190508015613eb957613eac60036043836143f1565b92506000915061414a9050565b613ec161247a565b600b5414613ed557613eac600a6044613280565b613edd615ce7565b6001600160a01b0386166000908152601460205260409020600101546060820152613f07866133f2565b6080830181905260208301826003811115613f1e57fe5b6003811115613f2957fe5b9052506000905081602001516003811115613f4057fe5b14613f6a57613f5c6009604283602001516003811115613a0e57fe5b93506000925061414a915050565b600019851415613f835760808101516040820152613f8b565b604081018590525b613f998782604001516157b2565b60e082018190526080820151613fae9161359d565b60a0830181905260208301826003811115613fc557fe5b6003811115613fd057fe5b9052506000905081602001516003811115613fe757fe5b146140235760405162461bcd60e51b815260040180806020018281038252603a815260200180615e88603a913960400191505060405180910390fd5b614033600d548260e0015161359d565b60c083018190526020830182600381111561404a57fe5b600381111561405557fe5b905250600090508160200151600381111561406c57fe5b146140a85760405162461bcd60e51b8152600401808060200182810382526031815260200180615f0b6031913960400191505060405180910390fd5b60a080820180516001600160a01b03808a16600081815260146020908152604091829020948555600c5460019095019490945560c0870151600d81905560e088015195518251948f16855294840192909252828101949094526060820192909252608081019190915290517f1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1929181900390910190a160e00151600093509150505b935093915050565b600073a731585ab05fc9f83555cf9bff8f58ee94e18f856001600160a01b031663dd86fea16040518163ffffffff1660e01b815260040160206040518083038186803b15801561202157600080fd5b6000806000806141b1878761447a565b909250905060008260038111156141c457fe5b146141d5575091506000905061414a565b6141df818661359d565b935093505050935093915050565b60006141f7615c87565b60008061420c86670de0b6b3a7640000614aa6565b9092509050600082600381111561421f57fe5b1461423e5750604080516020810190915260008152909250905061322b565b60008061424b8388614ae5565b9092509050600082600381111561425e57fe5b146142805750604080516020810190915260008152909450925061322b915050565b604080516020810190915290815260009890975095505050505050565b6116b6565b606060006060856001600160a01b0316856040518082805190602001908083835b602083106142e25780518252601f1990920191602091820191016142c3565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614344576040519150601f19603f3d011682016040523d82523d6000602084013e614349565b606091505b5091509150816143e8578051156143635780518082602001fd5b8360405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156143ad578181015183820152602001614395565b50505050905090810190601f1680156143da5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b95945050505050565b60007f45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa084601181111561442057fe5b84606381111561442c57fe5b604080519283526020830191909152818101859052519081900360600190a1600384601181111561445957fe5b1461446f5783601181111561446a57fe5b61181f565b506103e80192915050565b6000808383018481106144925760009250905061322b565b50600291506000905061322b565b60006144aa615c87565b6000806144bb866000015186614aa6565b909250905060008260038111156144ce57fe5b146144ed5750604080516020810190915260008152909250905061322b565b60408051602081019091529081526000969095509350505050565b51670de0b6b3a7640000900490565b6000611bf78383604051806040016040528060158152602001747375627472616374696f6e20756e646572666c6f7760581b81525061598f565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091018252602081810180516001600160e01b031663a9059cbb60e01b1790528251808401909352601983527f544f4b454e5f5452414e534645525f4f55545f4641494c454400000000000000908301526145d2916159e9565b5050565b60008215806145e3575081155b61461e5760405162461bcd60e51b8152600401808060200182810382526034815260200180615fa46034913960400191505060405180910390fd5b614626615d2d565b61462e612a96565b604083018190526020830182600381111561464557fe5b600381111561465057fe5b905250600090508160200151600381111561466757fe5b1461468b576146836009602e83602001516003811115613a0e57fe5b915050611bf7565b831561470c5760608101849052604080516020810182529082015181526146b290856131de565b60808301819052602083018260038111156146c957fe5b60038111156146d457fe5b90525060009050816020015160038111156146eb57fe5b14614707576146836009602c83602001516003811115613a0e57fe5b614785565b6147288360405180602001604052808460400151815250615a71565b606083018190526020830182600381111561473f57fe5b600381111561474a57fe5b905250600090508160200151600381111561476157fe5b1461477d576146836009602d83602001516003811115613a0e57fe5b608081018390525b60055460608201516040805163eabe7d9160e01b81523060048201526001600160a01b03898116602483015260448201939093529051600093929092169163eabe7d919160648082019260209290919082900301818787803b1580156147ea57600080fd5b505af11580156147fe573d6000803e3d6000fd5b505050506040513d602081101561481457600080fd5b5051905080156148345761482b6003602b836143f1565b92505050611bf7565b61483c61247a565b600b54146148505761482b600a602f613280565b614860601154836060015161359d565b60a084018190526020840182600381111561487757fe5b600381111561488257fe5b905250600090508260200151600381111561489957fe5b146148b55761482b6009603184602001516003811115613a0e57fe5b6001600160a01b03861660009081526012602052604090205460608301516148dd919061359d565b60c08401819052602084018260038111156148f457fe5b60038111156148ff57fe5b905250600090508260200151600381111561491657fe5b146149325761482b6009603084602001516003811115613a0e57fe5b816080015161493f613232565b10156149515761482b600e6032613280565b60a082015160115560c08201516001600160a01b0387166000908152601260205260409020556080820151614987908790614551565b6060820151604080519182525130916001600160a01b03891691600080516020615eeb8339815191529181900360200190a36080820151606080840151604080516001600160a01b038b168152602081019490945283810191909152517fe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a9299281900390910190a160055460808301516060840151604080516351dff98960e01b81523060048201526001600160a01b038b81166024830152604482019490945260648101929092525191909216916351dff98991608480830192600092919082900301818387803b158015614a7b57600080fd5b505af1158015614a8f573d6000803e3d6000fd5b5060009250614a9c915050565b9695505050505050565b60008083614ab95750600090508061322b565b83830283858281614ac657fe5b0414614ada5750600291506000905061322b565b60009250905061322b565b60008082614af9575060019050600061322b565b6000838581614b0457fe5b04915091509250929050565b60055460408051634ef4c3e160e01b81523060048201526001600160a01b03858116602483015260448201859052915160009384938493911691634ef4c3e19160648082019260209290919082900301818787803b158015614b7157600080fd5b505af1158015614b85573d6000803e3d6000fd5b505050506040513d6020811015614b9b57600080fd5b505190508015614bbf57614bb260036021836143f1565b92506000915061322b9050565b614bc761247a565b600b5414614bdb57614bb2600a6024613280565b614be3615d2d565b614beb612a96565b6040830181905260208301826003811115614c0257fe5b6003811115614c0d57fe5b9052506000905081602001516003811115614c2457fe5b14614c4e57614c406009602383602001516003811115613a0e57fe5b93506000925061322b915050565b614c5886866157b2565b60c0820181905260408051602081018252908301518152614c799190615a71565b6060830181905260208301826003811115614c9057fe5b6003811115614c9b57fe5b9052506000905081602001516003811115614cb257fe5b14614d04576040805162461bcd60e51b815260206004820181905260248201527f4d494e545f45584348414e47455f43414c43554c4154494f4e5f4641494c4544604482015290519081900360640190fd5b614d146011548260600151613567565b60808201526001600160a01b0386166000908152601260205260409020546060820151614d419190613567565b60a0820181905260808201516011556001600160a01b0387166000818152601260209081526040918290209390935560c084015160608086015183519485529484019190915282820193909352517f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f929181900390910190a1606081015160408051918252516001600160a01b038816913091600080516020615eeb8339815191529181900360200190a360055460c08201516060830151604080516341c728b960e01b81523060048201526001600160a01b038b81166024830152604482019490945260648101929092525191909216916341c728b991608480830192600092919082900301818387803b158015614e5957600080fd5b505af1158015614e6d573d6000803e3d6000fd5b5060009250614e7a915050565b8160c001519350935050509250929050565b600083830182858210156116f35760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156143ad578181015183820152602001614395565b614ee9615c87565b6040518060200160405280614f02856000015185615a88565b90529392505050565b6000614f15615c87565b614f1f8484614ee1565b905061181f81614508565b6000614f34615c87565b614f3e8585614ee1565b90506143e8614f4c82614508565b84613567565b6000670de0b6b3a7640000614f6b848460000151615a88565b81614f7257fe5b049392505050565b6005546040805163368f515360e21b81523060048201526001600160a01b0385811660248301526044820185905291516000938493169163da3d454c91606480830192602092919082900301818787803b158015614fd757600080fd5b505af1158015614feb573d6000803e3d6000fd5b505050506040513d602081101561500157600080fd5b5051905080156150205761501860036010836143f1565b9150506110f2565b61502861247a565b600b541461503c57615018600a600c613280565b6000615046613232565b9050838110156150655761505c600e600b613280565b925050506110f2565b61506d615d6b565b615076866133f2565b602083018190528282600381111561508a57fe5b600381111561509557fe5b90525060009050815160038111156150a957fe5b146150ce576150c460098083600001516003811115613a0e57fe5b93505050506110f2565b6150dc81602001518661447a565b60408301819052828260038111156150f057fe5b60038111156150fb57fe5b905250600090508151600381111561510f57fe5b1461512b576150c46009600e83600001516003811115613a0e57fe5b6005546040808301518151631de6c8a560e21b8152306004820152602481019190915290516001600160a01b039092169163779b2294916044808201926020929091908290030181600087803b15801561518457600080fd5b505af1158015615198573d6000803e3d6000fd5b505050506040513d60208110156151ae57600080fd5b5051925082156151c5576150c460036010856143f1565b6151d1600d548661447a565b60608301819052828260038111156151e557fe5b60038111156151f057fe5b905250600090508151600381111561520457fe5b14615220576150c46009600d83600001516003811115613a0e57fe5b6040808201516001600160a01b0388166000908152601460205291909120908155600c546001909101556060810151600d5561525c8686614551565b60408082015160608084015183516001600160a01b038b168152602081018a9052808501939093529082015290517f13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab809181900360800190a160009695505050505050565b60055460408051632fe3f38f60e11b81523060048201526001600160a01b0384811660248301528781166044830152868116606483015260848201869052915160009384938493911691635fc7e71e9160a48082019260209290919082900301818787803b15801561533157600080fd5b505af1158015615345573d6000803e3d6000fd5b505050506040513d602081101561535b57600080fd5b50519050801561537f5761537260036014836143f1565b9250600091506157a99050565b61538761247a565b600b541461539b57615372600a6018613280565b6153a361247a565b846001600160a01b0316636c540baf6040518163ffffffff1660e01b815260040160206040518083038186803b1580156153dc57600080fd5b505afa1580156153f0573d6000803e3d6000fd5b505050506040513d602081101561540657600080fd5b50511461541957615372600a6013613280565b866001600160a01b0316866001600160a01b0316141561543f5761537260066019613280565b846154505761537260076017613280565b6000198514156154665761537260076016613280565b600080615474898989613e02565b909250905081156154a45761549582601181111561548e57fe5b601a613280565b9450600093506157a992505050565b6005546040805163c488847b60e01b81523060048201526001600160a01b038981166024830152604482018590528251600094859492169263c488847b926064808301939192829003018186803b1580156154fe57600080fd5b505afa158015615512573d6000803e3d6000fd5b505050506040513d604081101561552857600080fd5b508051602090910151909250905081156155735760405162461bcd60e51b8152600401808060200182810382526033815260200180615f3c6033913960400191505060405180910390fd5b80886001600160a01b03166370a082318c6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156155ca57600080fd5b505afa1580156155de573d6000803e3d6000fd5b505050506040513d60208110156155f457600080fd5b50511015615649576040805162461bcd60e51b815260206004820152601860248201527f4c49515549444154455f5345495a455f544f4f5f4d5543480000000000000000604482015290519081900360640190fd5b60006001600160a01b03891630141561566f57615668308d8d856138c0565b90506156f9565b6040805163b2a02ff160e01b81526001600160a01b038e811660048301528d81166024830152604482018590529151918b169163b2a02ff1916064808201926020929091908290030181600087803b1580156156ca57600080fd5b505af11580156156de573d6000803e3d6000fd5b505050506040513d60208110156156f457600080fd5b505190505b8015615743576040805162461bcd60e51b81526020600482015260146024820152731d1bdad95b881cd95a5e9d5c994819985a5b195960621b604482015290519081900360640190fd5b604080516001600160a01b03808f168252808e1660208301528183018790528b1660608201526080810184905290517f298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb529181900360a00190a16000975092955050505050505b94509492505050565b601554604080516370a0823160e01b8152306004820152905160009283926001600160a01b03909116916370a0823191602480820192602092909190829003018186803b15801561580257600080fd5b505afa158015615816573d6000803e3d6000fd5b505050506040513d602081101561582c57600080fd5b5051604080516001600160a01b038716602482015230604482015260648082018790528251808303909101815260849091018252602081810180516001600160e01b03166323b872dd60e01b1790528251808401909352601883527f544f4b454e5f5452414e534645525f494e5f4641494c45440000000000000000908301529192506158b991906159e9565b601554604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561590457600080fd5b505afa158015615918573d6000803e3d6000fd5b505050506040513d602081101561592e57600080fd5b5051905081811015615987576040805162461bcd60e51b815260206004820152601a60248201527f544f4b454e5f5452414e534645525f494e5f4f564552464c4f57000000000000604482015290519081900360640190fd5b039392505050565b600081848411156159e15760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156143ad578181015183820152602001614395565b505050900390565b601554606090615a03906001600160a01b031684846142a2565b8051909150156116b257808060200190516020811015615a2257600080fd5b505182906118bf5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156143ad578181015183820152602001614395565b6000806000615a7e615c87565b6131f58686615aca565b6000611bf783836040518060400160405280601781526020017f6d756c7469706c69636174696f6e206f766572666c6f77000000000000000000815250615b29565b6000615ad4615c87565b600080615ae9670de0b6b3a764000087614aa6565b90925090506000826003811115615afc57fe5b14615b1b5750604080516020810190915260008152909250905061322b565b6132248186600001516141ed565b6000831580615b36575082155b15615b4357506000611bf7565b83830283858281615b5057fe5b041483906116f35760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156143ad578181015183820152602001614395565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10615be057805160ff1916838001178555615c0d565b82800160010185558215615c0d579182015b82811115615c0d578251825591602001919060010190615bf2565b50611a42929150615d94565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10615c5a5782800160ff19823516178555615c0d565b82800160010185558215615c0d579182015b82811115615c0d578235825591602001919060010190615c6c565b6040518060200160405280600081525090565b604080516101208101909152806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040805161010081019091528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040805160e0810190915280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b604080516080810190915280600081526020016000815260200160008152602001600081525090565b6114a491905b80821115611a425760008155600101615d9a56fe6d61726b6574206d6179206f6e6c7920626520696e697469616c697a6564206f6e6365696e697469616c2065786368616e67652072617465206d7573742062652067726561746572207468616e207a65726f2e6f6e6c79207468652061646d696e206d6179207365742074686520636f6d702d6c696b652064656c656761746573657474696e6720696e7465726573742072617465206d6f64656c206661696c6564626f72726f7742616c616e636553746f7265643a20626f72726f7742616c616e636553746f726564496e7465726e616c206661696c656452455041595f424f52524f575f4e45575f4143434f554e545f424f52524f575f42414c414e43455f43414c43554c4154494f4e5f4641494c45446f6e6c7920467573652061646d696e206d617920696e697469616c697a6520746865206d61726b6574ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef52455041595f424f52524f575f4e45575f544f54414c5f42414c414e43455f43414c43554c4154494f4e5f4641494c45444c49515549444154455f434f4d5054524f4c4c45525f43414c43554c4154455f414d4f554e545f5345495a455f4641494c454465786368616e67655261746553746f7265643a2065786368616e67655261746553746f726564496e7465726e616c206661696c65646f6e65206f662072656465656d546f6b656e73496e206f722072656465656d416d6f756e74496e206d757374206265207a65726fa265627a7a72315820c5e70de80f8ead0dd98a9a84869637403716cdcb18a92f20864691b9b86f3ba864736f6c63430005110032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x376 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x852A12E3 GT PUSH2 0x1D1 JUMPI DUP1 PUSH4 0xAE9D70B0 GT PUSH2 0x102 JUMPI DUP1 PUSH4 0xDC028AB1 GT PUSH2 0xA0 JUMPI DUP1 PUSH4 0xF5E3C462 GT PUSH2 0x6F JUMPI DUP1 PUSH4 0xF5E3C462 EQ PUSH2 0xF69 JUMPI DUP1 PUSH4 0xF8F9DA28 EQ PUSH2 0xFAC JUMPI DUP1 PUSH4 0xFCA7820B EQ PUSH2 0xFC1 JUMPI DUP1 PUSH4 0xFE9C44AE EQ PUSH2 0xFEB JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0xDC028AB1 EQ PUSH2 0xED1 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0xEE6 JUMPI DUP1 PUSH4 0xF2B3ABBD EQ PUSH2 0xF21 JUMPI DUP1 PUSH4 0xF3FDB15A EQ PUSH2 0xF54 JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0xC37F68E2 GT PUSH2 0xDC JUMPI DUP1 PUSH4 0xC37F68E2 EQ PUSH2 0xE0F JUMPI DUP1 PUSH4 0xC5EBEAEC EQ PUSH2 0xE68 JUMPI DUP1 PUSH4 0xDB006A75 EQ PUSH2 0xE92 JUMPI DUP1 PUSH4 0xDBFE7C19 EQ PUSH2 0xEBC JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0xAE9D70B0 EQ PUSH2 0xDA2 JUMPI DUP1 PUSH4 0xB2A02FF1 EQ PUSH2 0xDB7 JUMPI DUP1 PUSH4 0xBD6D894D EQ PUSH2 0xDFA JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0xA0712D68 GT PUSH2 0x16F JUMPI DUP1 PUSH4 0xA7B820DF GT PUSH2 0x149 JUMPI DUP1 PUSH4 0xA7B820DF EQ PUSH2 0xD15 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0xD3F JUMPI DUP1 PUSH4 0xAA5AF0FD EQ PUSH2 0xD78 JUMPI DUP1 PUSH4 0xAC784DDC EQ PUSH2 0xD8D JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0xA0712D68 EQ PUSH2 0xB7A JUMPI DUP1 PUSH4 0xA0B0D289 EQ PUSH2 0xBA4 JUMPI DUP1 PUSH4 0xA6AFED95 EQ PUSH2 0xD00 JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0x91DD36C6 GT PUSH2 0x1AB JUMPI DUP1 PUSH4 0x91DD36C6 EQ PUSH2 0xADE JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0xB08 JUMPI DUP1 PUSH4 0x95DD9193 EQ PUSH2 0xB1D JUMPI DUP1 PUSH4 0xA03DCE8D EQ PUSH2 0xB50 JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0x852A12E3 EQ PUSH2 0xA8A JUMPI DUP1 PUSH4 0x8D02D9A1 EQ PUSH2 0xAB4 JUMPI DUP1 PUSH4 0x8F840DDD EQ PUSH2 0xAC9 JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0x3B1D21A2 GT PUSH2 0x2AB JUMPI DUP1 PUSH4 0x61FEACFF GT PUSH2 0x249 JUMPI DUP1 PUSH4 0x6F307DC3 GT PUSH2 0x223 JUMPI DUP1 PUSH4 0x6F307DC3 EQ PUSH2 0x9FA JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0xA0F JUMPI DUP1 PUSH4 0x73ACEE98 EQ PUSH2 0xA42 JUMPI DUP1 PUSH4 0x7F1E06BE EQ PUSH2 0xA57 JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0x61FEACFF EQ PUSH2 0x9BB JUMPI DUP1 PUSH4 0x6752E702 EQ PUSH2 0x9D0 JUMPI DUP1 PUSH4 0x6C540BAF EQ PUSH2 0x9E5 JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0x56E67728 GT PUSH2 0x285 JUMPI DUP1 PUSH4 0x56E67728 EQ PUSH2 0x8D0 JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x94B JUMPI DUP1 PUSH4 0x5FE3B567 EQ PUSH2 0x97C JUMPI DUP1 PUSH4 0x601A0BF1 EQ PUSH2 0x991 JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0x3B1D21A2 EQ PUSH2 0x814 JUMPI DUP1 PUSH4 0x47BD3718 EQ PUSH2 0x829 JUMPI DUP1 PUSH4 0x50D85B73 EQ PUSH2 0x83E JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0x182DF0F5 GT PUSH2 0x318 JUMPI DUP1 PUSH4 0x2608F818 GT PUSH2 0x2F2 JUMPI DUP1 PUSH4 0x2608F818 EQ PUSH2 0x6B2 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x6EB JUMPI DUP1 PUSH4 0x34154D4C EQ PUSH2 0x716 JUMPI DUP1 PUSH4 0x3AF9E669 EQ PUSH2 0x7E1 JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0x182DF0F5 EQ PUSH2 0x652 JUMPI DUP1 PUSH4 0x1DB78944 EQ PUSH2 0x667 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x66F JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0xF8855E8 GT PUSH2 0x354 JUMPI DUP1 PUSH4 0xF8855E8 EQ PUSH2 0x48E JUMPI DUP1 PUSH4 0x173B9904 EQ PUSH2 0x5F5 JUMPI DUP1 PUSH4 0x17BFDFBC EQ PUSH2 0x60A JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x63D JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x37B JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x405 JUMPI DUP1 PUSH4 0xE752702 EQ PUSH2 0x452 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x387 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x390 PUSH2 0x1000 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3CA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3B2 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x3F7 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x411 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x43E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x428 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x108B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x45E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x475 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x10F8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x49A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5F3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x4B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x4EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x4FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x51F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x571 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x583 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x5A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP POP PUSH1 0xFF DUP4 CALLDATALOAD AND SWAP4 POP POP POP PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x110E JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x601 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x13BC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x616 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x62D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x13C2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x649 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x143E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x65E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x1444 JUMP JUMPDEST PUSH2 0x5F3 PUSH2 0x14A7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x67B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x43E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x692 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x16B8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x6D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x16E6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x700 PUSH2 0x16FC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x722 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5F3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x739 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x753 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x765 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x786 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x7A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x7B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x7D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1705 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x804 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1771 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x820 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x1827 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x835 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x1836 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x84A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5F3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x861 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x892 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x8A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x8C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x183C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5F3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x90D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x91F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x940 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x18C5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x957 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x960 PUSH2 0x1923 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x988 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x960 PUSH2 0x1932 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x99D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1941 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x1992 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x1998 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x19A3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA06 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x960 PUSH2 0x19A9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA1B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA32 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x19B8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA4E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x19D3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA63 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5F3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA7A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1A46 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAAD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1AEB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x1AF6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAD5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x1AFC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB01 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1B02 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x390 PUSH2 0x1B3F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB29 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB40 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1B9A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB73 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1BFE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1C3B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBB0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5F3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0xBC7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP3 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP1 SWAP3 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xC02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xC14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0xC35 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xC87 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xC99 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0xCBA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP POP DUP3 CALLDATALOAD SWAP4 POP POP POP PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1C47 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD0C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x1D60 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD21 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1F25 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD4B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x43E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xD62 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1F62 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD84 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x1F8F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD99 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x43E PUSH2 0x1F95 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xDAE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x1F9A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xDC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xDDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x2052 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE06 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x2076 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE1B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE42 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE32 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x20EA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP5 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP4 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE74 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x217F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE9E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xEB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x218A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEC8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x2195 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEDD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x219B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xF09 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x21A1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF2D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF44 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x21CC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF60 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x960 PUSH2 0x2206 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF75 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xF8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 SWAP1 SWAP2 ADD CALLDATALOAD AND PUSH2 0x2215 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xFB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x222D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xFCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xFE4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x22A2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xFF7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x43E PUSH2 0x22DF JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP4 AND DUP5 SWAP1 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x1083 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1058 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1083 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1066 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP7 SWAP1 SSTORE DUP2 MLOAD DUP7 DUP2 MSTORE SWAP2 MLOAD SWAP4 SWAP5 SWAP4 SWAP1 SWAP3 DUP5 SWAP3 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1104 DUP4 PUSH2 0x22E4 JUMP JUMPDEST POP SWAP2 POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST CALLER PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 EQ PUSH2 0x1160 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5EC2 PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xB SLOAD ISZERO DUP1 ISZERO PUSH2 0x1170 JUMPI POP PUSH1 0xC SLOAD ISZERO JUMPDEST PUSH2 0x11AB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5DAF PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x7 DUP7 SWAP1 SSTORE DUP6 PUSH2 0x11EC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x30 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5DD2 PUSH1 0x30 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x11F7 DUP10 PUSH2 0x2347 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x124C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x73657474696E6720636F6D7074726F6C6C6572206661696C6564000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1254 PUSH2 0x247A JUMP JUMPDEST PUSH1 0xB SSTORE PUSH8 0xDE0B6B3A7640000 PUSH1 0xC SSTORE PUSH2 0x126C DUP9 PUSH2 0x247E JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x12AB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5E2F PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP6 MLOAD PUSH2 0x12BE SWAP1 PUSH1 0x2 SWAP1 PUSH1 0x20 DUP10 ADD SWAP1 PUSH2 0x5B9F JUMP JUMPDEST POP DUP5 MLOAD PUSH2 0x12D2 SWAP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP9 ADD SWAP1 PUSH2 0x5B9F JUMP JUMPDEST POP PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF DUP7 AND OR SWAP1 SSTORE PUSH2 0x12EB DUP4 PUSH2 0x2784 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1340 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x73657474696E67207265736572766520666163746F72206661696C6564000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1349 DUP3 PUSH2 0x283D JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x139E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x73657474696E672061646D696E20666565206661696C65640000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF PUSH1 0xB0 SHL NOT AND PUSH1 0x1 PUSH1 0xB0 SHL OR SWAP1 SSTORE POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0xA SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x13CE DUP2 PUSH2 0x2962 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x13D8 PUSH2 0x1D60 JUMP JUMPDEST EQ PUSH2 0x1423 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x1858D8DC9D59481A5B9D195C995CDD0819985A5B1959 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x142C DUP4 PUSH2 0x1B9A JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH2 0x1438 DUP2 PUSH2 0x2A2B JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x11 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1451 PUSH2 0x2A96 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1464 JUMPI INVALID JUMPDEST EQ PUSH2 0x14A0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x35 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5F6F PUSH1 0x35 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP2 POP POP JUMPDEST SWAP1 JUMP JUMPDEST CALLER ADDRESS EQ DUP1 ISZERO SWAP1 PUSH2 0x152D JUMPI POP PUSH1 0x5 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 PUSH4 0xDD5CD22C 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 0x1500 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1514 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x152A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST ISZERO PUSH2 0x16B6 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x45CC9705 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE MLOAD DUP3 SWAP2 PUSH1 0x60 SWAP2 PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 SWAP2 PUSH4 0x45CC9705 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 DUP8 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1594 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x15A8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x15D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP1 DUP6 ADD DUP1 MLOAD SWAP2 MLOAD SWAP4 SWAP6 SWAP3 SWAP5 DUP4 ADD SWAP3 SWAP2 DUP5 PUSH1 0x1 PUSH1 0x20 SHL DUP3 GT ISZERO PUSH2 0x15FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x1610 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH2 0x1629 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1656 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x163E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1683 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE POP POP PUSH1 0x0 SLOAD SWAP4 SWAP7 POP SWAP2 SWAP5 POP SWAP3 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP2 AND EQ PUSH2 0x16B2 JUMPI PUSH2 0x16B2 DUP4 DUP4 DUP4 PUSH2 0x2B56 JUMP JUMPDEST POP POP POP JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x16C4 DUP2 PUSH2 0x2962 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x16D2 CALLER DUP8 DUP8 DUP8 PUSH2 0x2D72 JUMP JUMPDEST EQ SWAP2 POP PUSH2 0x16DE DUP2 PUSH2 0x2A2B JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x16F3 DUP5 DUP5 PUSH2 0x2FFE JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x170D PUSH2 0x3063 JUMP JUMPDEST PUSH2 0x1751 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x31B0B63632B9103737BA1030B236B4B7 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x175D PUSH1 0x2 DUP6 DUP6 PUSH2 0x5C19 JUMP JUMPDEST POP PUSH2 0x176A PUSH1 0x3 DUP4 DUP4 PUSH2 0x5C19 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x177B PUSH2 0x5C87 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x178E PUSH2 0x2076 JUMP JUMPDEST SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP SWAP1 DUP2 SWAP1 PUSH2 0x17BA SWAP1 DUP5 SWAP1 PUSH2 0x31DE JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x17CD JUMPI INVALID JUMPDEST EQ PUSH2 0x181F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x62616C616E636520636F756C64206E6F742062652063616C63756C6174656400 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1831 PUSH2 0x3232 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0xD SLOAD DUP2 JUMP JUMPDEST PUSH2 0x1844 PUSH2 0x3063 JUMP JUMPDEST PUSH2 0x187E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x10B0B236B4B7 PUSH1 0xD1 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x18BF DUP5 DUP5 DUP5 DUP5 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x2B56 SWAP3 POP POP POP JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST CALLER ADDRESS EQ DUP1 PUSH2 0x18D6 JUMPI POP PUSH2 0x18D6 PUSH2 0x3063 JUMP JUMPDEST PUSH2 0x190F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x5 PUSH1 0x24 DUP3 ADD MSTORE PUSH5 0x10B9B2B633 PUSH1 0xD9 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xB0 SHL SUB NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 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 0x0 DUP1 PUSH2 0x194D DUP2 PUSH2 0x2962 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1957 PUSH2 0x1D60 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x197D JUMPI PUSH2 0x1975 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x196E JUMPI INVALID JUMPDEST PUSH1 0x3B PUSH2 0x3280 JUMP JUMPDEST SWAP3 POP POP PUSH2 0x142F JUMP JUMPDEST PUSH2 0x1986 DUP5 PUSH2 0x32E6 JUMP JUMPDEST SWAP3 POP POP PUSH2 0x1438 DUP2 PUSH2 0x2A2B JUMP JUMPDEST PUSH1 0xF SLOAD DUP2 JUMP JUMPDEST PUSH7 0x6379DA05B60000 DUP2 JUMP JUMPDEST PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH1 0x15 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x19DF DUP2 PUSH2 0x2962 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x19E9 PUSH2 0x1D60 JUMP JUMPDEST EQ PUSH2 0x1A34 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x1858D8DC9D59481A5B9D195C995CDD0819985A5B1959 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0xD SLOAD SWAP2 POP PUSH2 0x1A42 DUP2 PUSH2 0x2A2B JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0x1A4E PUSH2 0x3063 JUMP JUMPDEST PUSH2 0x1A89 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5E02 PUSH1 0x2D SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x15 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x17066A57 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x5C19A95C SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1AD7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x176A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x10F2 DUP3 PUSH2 0x33B2 JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xE SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1B0E DUP2 PUSH2 0x2962 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B18 PUSH2 0x1D60 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1B36 JUMPI PUSH2 0x1975 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x1B2F JUMPI INVALID JUMPDEST PUSH1 0x52 PUSH2 0x3280 JUMP JUMPDEST PUSH2 0x1986 DUP5 PUSH2 0x283D JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x1083 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1058 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1083 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1BA8 DUP5 PUSH2 0x33F2 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1BBB JUMPI INVALID JUMPDEST EQ PUSH2 0x1BF7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x37 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5E51 PUSH1 0x37 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1C0A DUP2 PUSH2 0x2962 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C14 PUSH2 0x1D60 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1C32 JUMPI PUSH2 0x1975 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x1C2B JUMPI INVALID JUMPDEST PUSH1 0x33 PUSH2 0x3280 JUMP JUMPDEST PUSH2 0x1986 DUP5 PUSH2 0x34A6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1104 DUP4 PUSH2 0x3527 JUMP JUMPDEST PUSH1 0x0 PUSH8 0x2C68AF0BB140000 SWAP1 POP PUSH1 0x0 DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x313CE567 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 0x1C8F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1CA3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1CB9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH2 0x1CCD DUP9 DUP9 DUP5 DUP10 DUP10 DUP7 DUP11 DUP11 PUSH2 0x110E JUMP JUMPDEST PUSH1 0x15 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP2 DUP3 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x18160DDD PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP1 SWAP2 AND SWAP2 PUSH4 0x18160DDD SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1D29 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1D3D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1D53 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1D6B PUSH2 0x247A JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0xB SLOAD EQ ISZERO PUSH2 0x1D81 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x14A4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D8B PUSH2 0x3232 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x6 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 PUSH4 0x15F24053 DUP4 PUSH1 0xD SLOAD PUSH2 0x1DD0 PUSH1 0xE SLOAD PUSH2 0x1DCB PUSH1 0xF SLOAD PUSH1 0x10 SLOAD PUSH2 0x3567 JUMP JUMPDEST PUSH2 0x3567 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1E12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1E26 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1E3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH6 0x48C27395000 DUP2 GT ISZERO PUSH2 0x1E9B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x626F72726F772072617465206973206162737572646C79206869676800000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1EAA DUP6 PUSH1 0xB SLOAD PUSH2 0x359D JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1EBD JUMPI INVALID JUMPDEST EQ PUSH2 0x1F0F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x636F756C64206E6F742063616C63756C61746520626C6F636B2064656C746100 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1F1B DUP6 DUP6 DUP6 DUP5 PUSH2 0x35C0 JUMP JUMPDEST SWAP6 POP POP POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1F31 DUP2 PUSH2 0x2962 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F3B PUSH2 0x1D60 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1F59 JUMPI PUSH2 0x1975 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x1F52 JUMPI INVALID JUMPDEST PUSH1 0x37 PUSH2 0x3280 JUMP JUMPDEST PUSH2 0x1986 DUP5 PUSH2 0x37D8 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1F6E DUP2 PUSH2 0x2962 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F7C CALLER CALLER DUP8 DUP8 PUSH2 0x2D72 JUMP JUMPDEST EQ SWAP2 POP PUSH2 0x1F88 DUP2 PUSH2 0x2A2B JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xC SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xB8168816 PUSH2 0x1FB6 PUSH2 0x3232 JUMP JUMPDEST PUSH1 0xD SLOAD PUSH2 0x1FCD PUSH1 0xE SLOAD PUSH2 0x1DCB PUSH1 0xF SLOAD PUSH1 0x10 SLOAD PUSH2 0x3567 JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x9 SLOAD PUSH1 0xA SLOAD ADD ADD PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2021 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2035 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x204B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH2 0x205F DUP2 PUSH2 0x2962 JUMP JUMPDEST PUSH2 0x206B CALLER DUP7 DUP7 DUP7 PUSH2 0x38C0 JUMP JUMPDEST SWAP2 POP PUSH2 0x16DE DUP2 PUSH2 0x2A2B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2082 DUP2 PUSH2 0x2962 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x208C PUSH2 0x1D60 JUMP JUMPDEST EQ PUSH2 0x20D7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x1858D8DC9D59481A5B9D195C995CDD0819985A5B1959 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x20DF PUSH2 0x1444 JUMP JUMPDEST SWAP2 POP PUSH2 0x1A42 DUP2 PUSH2 0x2A2B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP2 SWAP1 DUP2 SWAP1 DUP2 SWAP1 DUP2 DUP1 DUP1 PUSH2 0x2115 DUP10 PUSH2 0x33F2 JUMP JUMPDEST SWAP4 POP SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2127 JUMPI INVALID JUMPDEST EQ PUSH2 0x2145 JUMPI PUSH1 0x9 JUMPDEST SWAP8 POP PUSH1 0x0 SWAP7 POP DUP7 SWAP6 POP DUP6 SWAP5 POP PUSH2 0x2178 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x214D PUSH2 0x2A96 JUMP JUMPDEST SWAP3 POP SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x215F JUMPI INVALID JUMPDEST EQ PUSH2 0x216B JUMPI PUSH1 0x9 PUSH2 0x212F JUMP JUMPDEST POP PUSH1 0x0 SWAP7 POP SWAP2 SWAP5 POP SWAP3 POP SWAP1 POP JUMPDEST SWAP2 SWAP4 POP SWAP2 SWAP4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10F2 DUP3 PUSH2 0x3C9F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10F2 DUP3 PUSH2 0x3CDD JUMP JUMPDEST PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x10 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x21D7 PUSH2 0x1D60 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x21FD JUMPI PUSH2 0x21F5 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x21EE JUMPI INVALID JUMPDEST PUSH1 0x4B PUSH2 0x3280 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1109 JUMP JUMPDEST PUSH2 0x1BF7 DUP4 PUSH2 0x247E JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2223 DUP6 DUP6 DUP6 PUSH2 0x3D16 JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x15F24053 PUSH2 0x2249 PUSH2 0x3232 JUMP JUMPDEST PUSH1 0xD SLOAD PUSH2 0x2260 PUSH1 0xE SLOAD PUSH2 0x1DCB PUSH1 0xF SLOAD PUSH1 0x10 SLOAD PUSH2 0x3567 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2021 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x22AE DUP2 PUSH2 0x2962 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x22B8 PUSH2 0x1D60 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x22D6 JUMPI PUSH2 0x1975 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x22CF JUMPI INVALID JUMPDEST PUSH1 0x59 PUSH2 0x3280 JUMP JUMPDEST PUSH2 0x1986 DUP5 PUSH2 0x2784 JUMP JUMPDEST PUSH1 0x1 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x22F2 DUP2 PUSH2 0x2962 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x22FC PUSH2 0x1D60 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x2327 JUMPI PUSH2 0x231A DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x2313 JUMPI INVALID JUMPDEST PUSH1 0x41 PUSH2 0x3280 JUMP JUMPDEST SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x2338 SWAP1 POP JUMP JUMPDEST PUSH2 0x2332 CALLER CALLER DUP8 PUSH2 0x3E02 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP JUMPDEST PUSH2 0x2341 DUP2 PUSH2 0x2A2B JUMP JUMPDEST POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH3 0x7E3DD2 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 0x239A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x23AE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x23C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x2417 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6D61726B6572206D6574686F642072657475726E65642066616C736500000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP3 DUP5 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD PUSH32 0x7AC369DBD14FA5EA3F473ED67CC9D598964A77501540BA6751EB0B3DECF5870D SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x0 PUSH2 0x1BF7 JUMP JUMPDEST NUMBER SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2489 PUSH2 0x3063 JUMP JUMPDEST PUSH2 0x2499 JUMPI PUSH2 0x21F5 PUSH1 0x1 PUSH1 0x4D PUSH2 0x3280 JUMP JUMPDEST PUSH2 0x24A1 PUSH2 0x247A JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x24B5 JUMPI PUSH2 0x21F5 PUSH1 0xA PUSH1 0x4C PUSH2 0x3280 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x2191F92A 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 0x2506 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x251A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2530 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x2583 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6D61726B6572206D6574686F642072657475726E65642066616C736500000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP3 DUP5 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD PUSH32 0xEDFFC32E068C7C95DFD4BDFD5C4D939A084D6B11C4199EAC8436ED234D72F926 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0x26B5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x6CC1140B PUSH1 0xE1 SHL OR DUP2 MSTORE SWAP2 MLOAD DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP4 DUP3 SWAP2 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x264A JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x262B JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x26AC 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 0x26B1 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP POP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x742A137B PUSH1 0xE1 SHL OR DUP2 MSTORE SWAP2 MLOAD DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP4 DUP3 SWAP2 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x2711 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x26F2 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2773 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 0x2778 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP PUSH1 0x0 SWAP2 POP PUSH2 0x1BF7 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x278E PUSH2 0x3063 JUMP JUMPDEST PUSH2 0x27A5 JUMPI PUSH2 0x279E PUSH1 0x1 PUSH1 0x5A PUSH2 0x3280 JUMP JUMPDEST SWAP1 POP PUSH2 0x1109 JUMP JUMPDEST PUSH2 0x27AD PUSH2 0x247A JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x27C1 JUMPI PUSH2 0x279E PUSH1 0xA PUSH1 0x5B PUSH2 0x3280 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH2 0x27E1 PUSH2 0x27D9 DUP5 PUSH1 0x8 SLOAD PUSH2 0x3567 JUMP JUMPDEST PUSH1 0x9 SLOAD PUSH2 0x3567 JUMP JUMPDEST GT ISZERO PUSH2 0x27F3 JUMPI PUSH2 0x279E PUSH1 0x2 PUSH1 0x5C PUSH2 0x3280 JUMP JUMPDEST PUSH1 0xA DUP1 SLOAD SWAP1 DUP4 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP6 SWAP1 MSTORE DUP2 MLOAD PUSH32 0xAAA68312E2EA9D50E16AF5068410AB56E1A1FD06037B1A35664812C30F821460 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x0 PUSH2 0x1BF7 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2847 PUSH2 0x247A JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x285B JUMPI PUSH2 0x279E PUSH1 0xA PUSH1 0x54 PUSH2 0x3280 JUMP JUMPDEST PUSH1 0x0 NOT DUP3 EQ ISZERO PUSH2 0x286B JUMPI PUSH1 0x8 SLOAD SWAP2 POP JUMPDEST PUSH1 0x0 PUSH2 0x2875 PUSH2 0x4152 JUMP JUMPDEST SWAP1 POP PUSH8 0xDE0B6B3A7640000 PUSH2 0x2895 PUSH2 0x288F PUSH1 0xA SLOAD DUP7 PUSH2 0x3567 JUMP JUMPDEST DUP4 PUSH2 0x3567 JUMP JUMPDEST GT ISZERO PUSH2 0x28A7 JUMPI PUSH2 0x21F5 PUSH1 0x2 PUSH1 0x55 PUSH2 0x3280 JUMP JUMPDEST DUP3 PUSH1 0x8 SLOAD EQ PUSH2 0x290D JUMPI PUSH2 0x28B8 PUSH2 0x3063 JUMP JUMPDEST PUSH2 0x28C8 JUMPI PUSH2 0x21F5 PUSH1 0x1 PUSH1 0x53 PUSH2 0x3280 JUMP JUMPDEST PUSH1 0x8 DUP1 SLOAD SWAP1 DUP5 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP7 SWAP1 MSTORE DUP2 MLOAD PUSH32 0xCDD0B588250E1398549F79CFDB8217C186688822905D6715B0834EA1C865594A SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMPDEST DUP1 PUSH1 0x9 SLOAD EQ PUSH2 0x295B JUMPI PUSH1 0x9 DUP1 SLOAD SWAP1 DUP3 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP2 MLOAD PUSH32 0x92EEF861B6533B7D3417F39C2AD7B460EED4E88A32FA3604F30E718B7602E7DC SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMPDEST PUSH1 0x0 PUSH2 0x1BF7 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0xB0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x29AD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xA PUSH1 0x24 DUP3 ADD MSTORE PUSH10 0x1C994B595B9D195C9959 PUSH1 0xB2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x2A1B JUMPI PUSH1 0x5 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 PUSH4 0xC90C20B1 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2A02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2A16 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF PUSH1 0xB0 SHL NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF PUSH1 0xB0 SHL NOT AND PUSH1 0x1 PUSH1 0xB0 SHL OR SWAP1 SSTORE DUP1 PUSH2 0x2A93 JUMPI PUSH1 0x5 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 PUSH4 0x632E5142 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1AD7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x11 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP1 PUSH2 0x2AB1 JUMPI POP POP PUSH1 0x7 SLOAD PUSH1 0x0 SWAP2 POP PUSH2 0x2B52 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2ABB PUSH2 0x3232 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2AC7 PUSH2 0x5C87 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2AE9 DUP5 PUSH1 0xD SLOAD PUSH2 0x2AE4 PUSH1 0xE SLOAD PUSH2 0x1DCB PUSH1 0xF SLOAD PUSH1 0x10 SLOAD PUSH2 0x3567 JUMP JUMPDEST PUSH2 0x41A1 JUMP JUMPDEST SWAP4 POP SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2AFB JUMPI INVALID JUMPDEST EQ PUSH2 0x2B10 JUMPI SWAP6 POP PUSH1 0x0 SWAP5 POP PUSH2 0x2B52 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x2B1A DUP4 DUP7 PUSH2 0x41ED JUMP JUMPDEST SWAP3 POP SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2B2C JUMPI INVALID JUMPDEST EQ PUSH2 0x2B41 JUMPI SWAP6 POP PUSH1 0x0 SWAP5 POP PUSH2 0x2B52 SWAP4 POP POP POP POP JUMP JUMPDEST POP MLOAD PUSH1 0x0 SWAP6 POP SWAP4 POP PUSH2 0x2B52 SWAP3 POP POP POP JUMP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x38E6A073 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP2 DUP6 AND PUSH1 0x24 DUP4 ADD MSTORE DUP4 ISZERO ISZERO PUSH1 0x44 DUP4 ADD MSTORE MLOAD PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 SWAP2 PUSH4 0x71CD40E6 SWAP2 PUSH1 0x64 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2BC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2BD7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2BED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x2C28 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x5 PUSH1 0x24 DUP3 ADD MSTORE PUSH5 0x85A5B5C1B PUSH1 0xDA SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 ISZERO PUSH2 0x2C36 JUMPI PUSH2 0x2C36 PUSH2 0x429D JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND OR DUP4 SSTORE PUSH1 0x40 MLOAD PUSH1 0x20 PUSH1 0x24 DUP3 ADD DUP2 DUP2 MSTORE DUP7 MLOAD PUSH1 0x44 DUP5 ADD MSTORE DUP7 MLOAD SWAP4 SWAP1 SWAP5 AND SWAP5 PUSH2 0x2D23 SWAP5 ADDRESS SWAP5 DUP9 SWAP5 SWAP2 SWAP4 DUP5 SWAP4 PUSH1 0x64 SWAP1 SWAP4 ADD SWAP3 SWAP1 DUP7 ADD SWAP2 SWAP1 DUP2 SWAP1 DUP5 SWAP1 DUP5 SWAP1 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2CA3 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2C8B JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x2CD0 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xADCCEE5 PUSH1 0xE3 SHL OR SWAP1 MSTORE DUP2 MLOAD DUP1 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x7 DUP3 MSTORE PUSH7 0x216265636F6D65 PUSH1 0xC8 SHL SWAP1 DUP3 ADD MSTORE SWAP1 SWAP4 POP SWAP2 POP PUSH2 0x42A2 SWAP1 POP JUMP JUMPDEST POP PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND DUP3 MSTORE SWAP1 SWAP3 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD PUSH32 0xD604DE94D45953F9138079EC1B82D533CB2160C906D1076D1F7ED54BEFBCA97A SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x17B9B84B PUSH1 0xE3 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP6 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 AND SWAP2 PUSH4 0xBDCDC258 SWAP2 PUSH1 0x84 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2DD7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2DEB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2E01 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x2E20 JUMPI PUSH2 0x2E18 PUSH1 0x3 PUSH1 0x5D DUP4 PUSH2 0x43F1 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x181F JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x2E46 JUMPI PUSH2 0x2E18 PUSH1 0x2 PUSH1 0x5E PUSH2 0x3280 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND SWAP1 DUP8 AND EQ ISZERO PUSH2 0x2E65 JUMPI POP PUSH1 0x0 NOT PUSH2 0x2E8D JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP11 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x2E9D DUP6 DUP10 PUSH2 0x359D JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP PUSH1 0x0 DUP5 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2EB0 JUMPI INVALID JUMPDEST EQ PUSH2 0x2ECE JUMPI PUSH2 0x2EC1 PUSH1 0x9 PUSH1 0x5E PUSH2 0x3280 JUMP JUMPDEST SWAP7 POP POP POP POP POP POP POP PUSH2 0x181F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2EF1 SWAP1 DUP10 PUSH2 0x359D JUMP JUMPDEST SWAP1 SWAP5 POP SWAP2 POP PUSH1 0x0 DUP5 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2F04 JUMPI INVALID JUMPDEST EQ PUSH2 0x2F15 JUMPI PUSH2 0x2EC1 PUSH1 0x9 PUSH1 0x5F PUSH2 0x3280 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2F38 SWAP1 DUP10 PUSH2 0x447A JUMP JUMPDEST SWAP1 SWAP5 POP SWAP1 POP PUSH1 0x0 DUP5 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2F4B JUMPI INVALID JUMPDEST EQ PUSH2 0x2F5C JUMPI PUSH2 0x2EC1 PUSH1 0x9 PUSH1 0x60 PUSH2 0x3280 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP6 SWAP1 SSTORE SWAP2 DUP12 AND DUP2 MSTORE KECCAK256 DUP2 SWAP1 SSTORE PUSH1 0x0 NOT DUP6 EQ PUSH2 0x2FB4 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP16 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP4 SWAP1 SSTORE JUMPDEST DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5EEB DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP11 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x0 SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x300C DUP2 PUSH2 0x2962 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3016 PUSH2 0x1D60 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x3041 JUMPI PUSH2 0x3034 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x302D JUMPI INVALID JUMPDEST PUSH1 0x40 PUSH2 0x3280 JUMP JUMPDEST SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x3052 SWAP1 POP JUMP JUMPDEST PUSH2 0x304C CALLER DUP8 DUP8 PUSH2 0x3E02 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP JUMPDEST PUSH2 0x305B DUP2 PUSH2 0x2A2B JUMP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x3E14691 PUSH1 0xE6 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 DUP3 SWAP2 PUSH4 0xF851A440 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x30AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x30BF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x30D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ DUP1 ISZERO PUSH2 0x314F JUMPI POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA755EC2 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 0x3122 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3136 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x314C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST DUP1 PUSH2 0x14A0 JUMPI POP CALLER PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 EQ DUP1 ISZERO PUSH2 0x14A0 JUMPI POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x2F1069BA 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 0x31AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x31C0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x31D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x31EB PUSH2 0x5C87 JUMP JUMPDEST PUSH2 0x31F5 DUP7 DUP7 PUSH2 0x44A0 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3208 JUMPI INVALID JUMPDEST EQ PUSH2 0x3219 JUMPI POP SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH2 0x322B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3224 DUP3 PUSH2 0x4508 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x15 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 DUP3 SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x31AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0x45B96FE442630264581B197E84BBADA861235052C5A1AADFFF9EA4E40A969AA0 DUP4 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x32AF JUMPI INVALID JUMPDEST DUP4 PUSH1 0x63 DUP2 GT ISZERO PUSH2 0x32BB JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 DUP3 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x1BF7 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x32F1 PUSH2 0x3063 JUMP JUMPDEST PUSH2 0x3301 JUMPI PUSH2 0x21F5 PUSH1 0x1 PUSH1 0x3C PUSH2 0x3280 JUMP JUMPDEST PUSH2 0x3309 PUSH2 0x247A JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x331D JUMPI PUSH2 0x21F5 PUSH1 0xA PUSH1 0x3E PUSH2 0x3280 JUMP JUMPDEST DUP3 PUSH2 0x3326 PUSH2 0x3232 JUMP JUMPDEST LT ISZERO PUSH2 0x3338 JUMPI PUSH2 0x21F5 PUSH1 0xE PUSH1 0x3D PUSH2 0x3280 JUMP JUMPDEST PUSH1 0xE SLOAD DUP4 GT ISZERO PUSH2 0x334E JUMPI PUSH2 0x21F5 PUSH1 0x2 PUSH1 0x3F PUSH2 0x3280 JUMP JUMPDEST PUSH2 0x335A PUSH1 0xE SLOAD DUP5 PUSH2 0x4517 JUMP JUMPDEST PUSH1 0xE DUP2 SWAP1 SSTORE SWAP1 POP PUSH2 0x336B CALLER DUP5 PUSH2 0x4551 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP6 SWAP1 MSTORE DUP1 DUP3 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD PUSH32 0x3BAD0C59CF2F06E7314077049F48A93578CD16F5EF92329F1DAB1420A99C177E SWAP2 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 PUSH1 0x0 PUSH2 0x1BF7 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x33BE DUP2 PUSH2 0x2962 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x33C8 PUSH2 0x1D60 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x33E6 JUMPI PUSH2 0x1975 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x33DF JUMPI INVALID JUMPDEST PUSH1 0x2A PUSH2 0x3280 JUMP JUMPDEST PUSH2 0x1986 CALLER PUSH1 0x0 DUP7 PUSH2 0x45D6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 PUSH2 0x3429 JUMPI POP PUSH1 0x0 SWAP5 POP DUP5 SWAP4 POP PUSH2 0x34A1 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x3439 DUP2 PUSH1 0x0 ADD SLOAD PUSH1 0xC SLOAD PUSH2 0x4AA6 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP PUSH1 0x0 DUP5 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x344C JUMPI INVALID JUMPDEST EQ PUSH2 0x3461 JUMPI POP SWAP2 SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x34A1 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x346F DUP4 DUP3 PUSH1 0x1 ADD SLOAD PUSH2 0x4AE5 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP2 POP PUSH1 0x0 DUP5 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3482 JUMPI INVALID JUMPDEST EQ PUSH2 0x3497 JUMPI POP SWAP2 SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x34A1 SWAP2 POP POP JUMP JUMPDEST POP PUSH1 0x0 SWAP5 POP SWAP3 POP POP POP JUMPDEST SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x34B1 PUSH2 0x247A JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x34C5 JUMPI PUSH2 0x21F5 PUSH1 0xA PUSH1 0x35 PUSH2 0x3280 JUMP JUMPDEST DUP3 PUSH2 0x34CE PUSH2 0x3232 JUMP JUMPDEST LT ISZERO PUSH2 0x34E0 JUMPI PUSH2 0x21F5 PUSH1 0xE PUSH1 0x34 PUSH2 0x3280 JUMP JUMPDEST PUSH1 0x10 SLOAD DUP4 GT ISZERO PUSH2 0x34F6 JUMPI PUSH2 0x21F5 PUSH1 0x2 PUSH1 0x36 PUSH2 0x3280 JUMP JUMPDEST PUSH2 0x3502 PUSH1 0x10 SLOAD DUP5 PUSH2 0x4517 JUMP JUMPDEST PUSH1 0x10 DUP2 SWAP1 SSTORE SWAP1 POP PUSH2 0x295B PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 DUP5 PUSH2 0x4551 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x3535 DUP2 PUSH2 0x2962 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x353F PUSH2 0x1D60 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x355D JUMPI PUSH2 0x231A DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x3556 JUMPI INVALID JUMPDEST PUSH1 0x20 PUSH2 0x3280 JUMP JUMPDEST PUSH2 0x2332 CALLER DUP7 PUSH2 0x4B10 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1BF7 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x11 DUP2 MSTORE PUSH1 0x20 ADD PUSH17 0x6164646974696F6E206F766572666C6F77 PUSH1 0x78 SHL DUP2 MSTORE POP PUSH2 0x4E8C JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 DUP4 GT PUSH2 0x35B4 JUMPI POP PUSH1 0x0 SWAP1 POP DUP2 DUP4 SUB PUSH2 0x322B JUMP JUMPDEST POP PUSH1 0x3 SWAP1 POP PUSH1 0x0 PUSH2 0x322B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x35CA PUSH2 0x5C87 JUMP JUMPDEST PUSH2 0x35E2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP7 DUP2 MSTORE POP DUP5 PUSH2 0x4EE1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x35F2 DUP3 PUSH1 0xD SLOAD PUSH2 0x4F0B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3602 DUP3 PUSH1 0xD SLOAD PUSH2 0x3567 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3623 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xA SLOAD DUP2 MSTORE POP DUP5 PUSH1 0xE SLOAD PUSH2 0x4F2A JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3644 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x9 SLOAD DUP2 MSTORE POP DUP6 PUSH1 0x10 SLOAD PUSH2 0x4F2A JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3665 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x8 SLOAD DUP2 MSTORE POP DUP7 PUSH1 0xF SLOAD PUSH2 0x4F2A JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3678 DUP8 PUSH1 0xC SLOAD PUSH1 0xC SLOAD PUSH2 0x4F2A JUMP JUMPDEST PUSH1 0xB DUP14 SWAP1 SSTORE PUSH1 0xC DUP2 SWAP1 SSTORE PUSH1 0xD DUP7 SWAP1 SSTORE PUSH1 0xE DUP6 SWAP1 SSTORE PUSH1 0x10 DUP5 SWAP1 SSTORE PUSH1 0xF DUP4 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP14 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP10 SWAP1 MSTORE DUP1 DUP3 ADD DUP4 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP9 SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH32 0x4DEC04E750CA11537CABCD8A9EAB06494DE08DA3735BC8871CD41250E190BC04 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG1 PUSH1 0x6 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x24 DUP1 DUP3 ADD DUP15 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x5EFD0233 PUSH1 0xE1 SHL OR DUP2 MSTORE SWAP2 MLOAD DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP5 AND SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x3755 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x3736 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x37B7 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 0x37BC JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP PUSH1 0x0 SWAP2 POP PUSH2 0x37C8 SWAP1 POP JUMP JUMPDEST SWAP13 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x37E3 PUSH2 0x247A JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x37F7 JUMPI PUSH2 0x21F5 PUSH1 0xA PUSH1 0x39 PUSH2 0x3280 JUMP JUMPDEST DUP3 PUSH2 0x3800 PUSH2 0x3232 JUMP JUMPDEST LT ISZERO PUSH2 0x3812 JUMPI PUSH2 0x21F5 PUSH1 0xE PUSH1 0x38 PUSH2 0x3280 JUMP JUMPDEST PUSH1 0xF SLOAD DUP4 GT ISZERO PUSH2 0x3828 JUMPI PUSH2 0x21F5 PUSH1 0x2 PUSH1 0x3A PUSH2 0x3280 JUMP JUMPDEST PUSH2 0x3834 PUSH1 0xF SLOAD DUP5 PUSH2 0x4517 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0xF DUP2 SWAP1 SSTORE POP PUSH2 0x295B PUSH1 0x5 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 PUSH4 0xF851A440 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 0x388E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x38A2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x38B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP5 PUSH2 0x4551 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xD02F7351 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP7 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE DUP6 DUP2 AND PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x84 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 AND SWAP2 PUSH4 0xD02F7351 SWAP2 PUSH1 0xA4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x392D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3941 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3957 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x396E JUMPI PUSH2 0x2E18 PUSH1 0x3 PUSH1 0x1D DUP4 PUSH2 0x43F1 JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x3994 JUMPI PUSH2 0x2E18 PUSH1 0x6 PUSH1 0x1E PUSH2 0x3280 JUMP JUMPDEST PUSH2 0x399C PUSH2 0x5C9A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x39BF SWAP1 DUP6 PUSH2 0x359D JUMP JUMPDEST PUSH1 0x20 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x39D3 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x39DE JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x39F2 JUMPI INVALID JUMPDEST EQ PUSH2 0x3A1C JUMPI PUSH2 0x3A13 PUSH1 0x9 PUSH1 0x1C DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3A0E JUMPI INVALID JUMPDEST PUSH2 0x43F1 JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x181F JUMP JUMPDEST PUSH2 0x3A3B DUP5 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH7 0x6379DA05B60000 DUP2 MSTORE POP PUSH2 0x4F52 JUMP JUMPDEST PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x3A4D SWAP1 DUP6 SWAP1 PUSH2 0x4517 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x3A5A PUSH2 0x2A96 JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3A6E JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3A79 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3A8D JUMPI INVALID JUMPDEST EQ PUSH2 0x3ADF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x65786368616E67652072617465206D617468206572726F720000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x3AFF PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP4 PUSH1 0xC0 ADD MLOAD DUP2 MSTORE POP DUP3 PUSH1 0x80 ADD MLOAD PUSH2 0x4F0B JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xE SLOAD PUSH2 0x3B12 SWAP2 PUSH2 0x3567 JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD MSTORE PUSH1 0x11 SLOAD PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x3B29 SWAP2 SWAP1 PUSH2 0x4517 JUMP JUMPDEST PUSH2 0x100 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x3B57 SWAP2 SWAP1 PUSH2 0x447A JUMP JUMPDEST PUSH1 0x40 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3B6B JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3B76 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3B8A JUMPI INVALID JUMPDEST EQ PUSH2 0x3BA6 JUMPI PUSH2 0x3A13 PUSH1 0x9 PUSH1 0x1B DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3A0E JUMPI INVALID JUMPDEST PUSH1 0xE0 DUP2 ADD MLOAD PUSH1 0xE SSTORE PUSH2 0x100 DUP2 ADD MLOAD PUSH1 0x11 SSTORE PUSH1 0x20 DUP1 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x12 DUP6 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 DUP7 ADD MLOAD SWAP3 DUP12 AND DUP1 DUP3 MSTORE SWAP1 DUP5 SWAP1 KECCAK256 SWAP3 SWAP1 SWAP3 SSTORE PUSH1 0x60 DUP6 ADD MLOAD DUP4 MLOAD SWAP1 DUP2 MSTORE SWAP3 MLOAD SWAP2 SWAP4 SWAP1 SWAP3 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5EEB DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD ADDRESS SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5EEB DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0xE0 DUP3 ADD MLOAD PUSH1 0x40 DUP1 MLOAD ADDRESS DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP3 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE MLOAD PUSH32 0xA91E67C5EA634CD43A12C5A482724B03DE01E85CA68702A53D0C2F45CB7C1DC5 SWAP2 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 PUSH1 0x0 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3CAB DUP2 PUSH2 0x2962 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3CB5 PUSH2 0x1D60 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x3CD3 JUMPI PUSH2 0x1975 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x3CCC JUMPI INVALID JUMPDEST PUSH1 0xA PUSH2 0x3280 JUMP JUMPDEST PUSH2 0x1986 CALLER DUP6 PUSH2 0x4F7A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3CE9 DUP2 PUSH2 0x2962 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3CF3 PUSH2 0x1D60 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x3D0A JUMPI PUSH2 0x1975 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x33DF JUMPI INVALID JUMPDEST PUSH2 0x1986 CALLER DUP6 PUSH1 0x0 PUSH2 0x45D6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x3D24 DUP2 PUSH2 0x2962 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3D2E PUSH2 0x1D60 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x3D59 JUMPI PUSH2 0x3D4C DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x3D45 JUMPI INVALID JUMPDEST PUSH1 0x11 PUSH2 0x3280 JUMP JUMPDEST SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x3DF0 SWAP1 POP JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA6AFED95 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3D94 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3DA8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3DBE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x3DDE JUMPI PUSH2 0x3D4C DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x3DD7 JUMPI INVALID JUMPDEST PUSH1 0x12 PUSH2 0x3280 JUMP JUMPDEST PUSH2 0x3DEA CALLER DUP9 DUP9 DUP9 PUSH2 0x52C0 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP JUMPDEST PUSH2 0x3DF9 DUP2 PUSH2 0x2A2B JUMP JUMPDEST POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x12004531 PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP6 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 DUP5 SWAP4 SWAP2 AND SWAP2 PUSH4 0x24008A62 SWAP2 PUSH1 0x84 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3E6B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3E7F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3E95 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x3EB9 JUMPI PUSH2 0x3EAC PUSH1 0x3 PUSH1 0x43 DUP4 PUSH2 0x43F1 JUMP JUMPDEST SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH2 0x414A SWAP1 POP JUMP JUMPDEST PUSH2 0x3EC1 PUSH2 0x247A JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x3ED5 JUMPI PUSH2 0x3EAC PUSH1 0xA PUSH1 0x44 PUSH2 0x3280 JUMP JUMPDEST PUSH2 0x3EDD PUSH2 0x5CE7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x3F07 DUP7 PUSH2 0x33F2 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3F1E JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3F29 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3F40 JUMPI INVALID JUMPDEST EQ PUSH2 0x3F6A JUMPI PUSH2 0x3F5C PUSH1 0x9 PUSH1 0x42 DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3A0E JUMPI INVALID JUMPDEST SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x414A SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 NOT DUP6 EQ ISZERO PUSH2 0x3F83 JUMPI PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x3F8B JUMP JUMPDEST PUSH1 0x40 DUP2 ADD DUP6 SWAP1 MSTORE JUMPDEST PUSH2 0x3F99 DUP8 DUP3 PUSH1 0x40 ADD MLOAD PUSH2 0x57B2 JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x3FAE SWAP2 PUSH2 0x359D JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3FC5 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3FD0 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3FE7 JUMPI INVALID JUMPDEST EQ PUSH2 0x4023 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5E88 PUSH1 0x3A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x4033 PUSH1 0xD SLOAD DUP3 PUSH1 0xE0 ADD MLOAD PUSH2 0x359D JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x404A JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4055 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x406C JUMPI INVALID JUMPDEST EQ PUSH2 0x40A8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5F0B PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xA0 DUP1 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP11 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 DUP6 SSTORE PUSH1 0xC SLOAD PUSH1 0x1 SWAP1 SWAP6 ADD SWAP5 SWAP1 SWAP5 SSTORE PUSH1 0xC0 DUP8 ADD MLOAD PUSH1 0xD DUP2 SWAP1 SSTORE PUSH1 0xE0 DUP9 ADD MLOAD SWAP6 MLOAD DUP3 MLOAD SWAP5 DUP16 AND DUP6 MSTORE SWAP5 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP2 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x60 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x80 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 MLOAD PUSH32 0x1A2A22CB034D26D1854BDC6666A5B91FE25EFBBB5DCAD3B0355478D6F5C362A1 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0xE0 ADD MLOAD PUSH1 0x0 SWAP4 POP SWAP2 POP POP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xDD86FEA1 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 0x2021 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x41B1 DUP8 DUP8 PUSH2 0x447A JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x41C4 JUMPI INVALID JUMPDEST EQ PUSH2 0x41D5 JUMPI POP SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH2 0x414A JUMP JUMPDEST PUSH2 0x41DF DUP2 DUP7 PUSH2 0x359D JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x41F7 PUSH2 0x5C87 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x420C DUP7 PUSH8 0xDE0B6B3A7640000 PUSH2 0x4AA6 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x421F JUMPI INVALID JUMPDEST EQ PUSH2 0x423E JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x322B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x424B DUP4 DUP9 PUSH2 0x4AE5 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x425E JUMPI INVALID JUMPDEST EQ PUSH2 0x4280 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 SWAP5 POP SWAP3 POP PUSH2 0x322B SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP9 SWAP1 SWAP8 POP SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x16B6 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x60 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x42E2 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x42C3 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x4344 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 0x4349 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x43E8 JUMPI DUP1 MLOAD ISZERO PUSH2 0x4363 JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST DUP4 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x43AD JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4395 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x43DA JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x45B96FE442630264581B197E84BBADA861235052C5A1AADFFF9EA4E40A969AA0 DUP5 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x4420 JUMPI INVALID JUMPDEST DUP5 PUSH1 0x63 DUP2 GT ISZERO PUSH2 0x442C JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 DUP2 ADD DUP6 SWAP1 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 PUSH1 0x3 DUP5 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x4459 JUMPI INVALID JUMPDEST EQ PUSH2 0x446F JUMPI DUP4 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x446A JUMPI INVALID JUMPDEST PUSH2 0x181F JUMP JUMPDEST POP PUSH2 0x3E8 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 DUP4 ADD DUP5 DUP2 LT PUSH2 0x4492 JUMPI PUSH1 0x0 SWAP3 POP SWAP1 POP PUSH2 0x322B JUMP JUMPDEST POP PUSH1 0x2 SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH2 0x322B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x44AA PUSH2 0x5C87 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x44BB DUP7 PUSH1 0x0 ADD MLOAD DUP7 PUSH2 0x4AA6 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x44CE JUMPI INVALID JUMPDEST EQ PUSH2 0x44ED JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x322B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST MLOAD PUSH8 0xDE0B6B3A7640000 SWAP1 DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1BF7 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x15 DUP2 MSTORE PUSH1 0x20 ADD PUSH21 0x7375627472616374696F6E20756E646572666C6F77 PUSH1 0x58 SHL DUP2 MSTORE POP PUSH2 0x598F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xA9059CBB PUSH1 0xE0 SHL OR SWAP1 MSTORE DUP3 MLOAD DUP1 DUP5 ADD SWAP1 SWAP4 MSTORE PUSH1 0x19 DUP4 MSTORE PUSH32 0x544F4B454E5F5452414E534645525F4F55545F4641494C454400000000000000 SWAP1 DUP4 ADD MSTORE PUSH2 0x45D2 SWAP2 PUSH2 0x59E9 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x45E3 JUMPI POP DUP2 ISZERO JUMPDEST PUSH2 0x461E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5FA4 PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x4626 PUSH2 0x5D2D JUMP JUMPDEST PUSH2 0x462E PUSH2 0x2A96 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4645 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4650 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4667 JUMPI INVALID JUMPDEST EQ PUSH2 0x468B JUMPI PUSH2 0x4683 PUSH1 0x9 PUSH1 0x2E DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3A0E JUMPI INVALID JUMPDEST SWAP2 POP POP PUSH2 0x1BF7 JUMP JUMPDEST DUP4 ISZERO PUSH2 0x470C JUMPI PUSH1 0x60 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD DUP3 MSTORE SWAP1 DUP3 ADD MLOAD DUP2 MSTORE PUSH2 0x46B2 SWAP1 DUP6 PUSH2 0x31DE JUMP JUMPDEST PUSH1 0x80 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x46C9 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x46D4 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x46EB JUMPI INVALID JUMPDEST EQ PUSH2 0x4707 JUMPI PUSH2 0x4683 PUSH1 0x9 PUSH1 0x2C DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3A0E JUMPI INVALID JUMPDEST PUSH2 0x4785 JUMP JUMPDEST PUSH2 0x4728 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH1 0x40 ADD MLOAD DUP2 MSTORE POP PUSH2 0x5A71 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x473F JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x474A JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4761 JUMPI INVALID JUMPDEST EQ PUSH2 0x477D JUMPI PUSH2 0x4683 PUSH1 0x9 PUSH1 0x2D DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3A0E JUMPI INVALID JUMPDEST PUSH1 0x80 DUP2 ADD DUP4 SWAP1 MSTORE JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x60 DUP3 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xEABE7D91 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP4 SWAP3 SWAP1 SWAP3 AND SWAP2 PUSH4 0xEABE7D91 SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x47EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x47FE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4814 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x4834 JUMPI PUSH2 0x482B PUSH1 0x3 PUSH1 0x2B DUP4 PUSH2 0x43F1 JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x1BF7 JUMP JUMPDEST PUSH2 0x483C PUSH2 0x247A JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x4850 JUMPI PUSH2 0x482B PUSH1 0xA PUSH1 0x2F PUSH2 0x3280 JUMP JUMPDEST PUSH2 0x4860 PUSH1 0x11 SLOAD DUP4 PUSH1 0x60 ADD MLOAD PUSH2 0x359D JUMP JUMPDEST PUSH1 0xA0 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP5 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4877 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4882 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP3 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4899 JUMPI INVALID JUMPDEST EQ PUSH2 0x48B5 JUMPI PUSH2 0x482B PUSH1 0x9 PUSH1 0x31 DUP5 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3A0E JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 DUP4 ADD MLOAD PUSH2 0x48DD SWAP2 SWAP1 PUSH2 0x359D JUMP JUMPDEST PUSH1 0xC0 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP5 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x48F4 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x48FF JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP3 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4916 JUMPI INVALID JUMPDEST EQ PUSH2 0x4932 JUMPI PUSH2 0x482B PUSH1 0x9 PUSH1 0x30 DUP5 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3A0E JUMPI INVALID JUMPDEST DUP2 PUSH1 0x80 ADD MLOAD PUSH2 0x493F PUSH2 0x3232 JUMP JUMPDEST LT ISZERO PUSH2 0x4951 JUMPI PUSH2 0x482B PUSH1 0xE PUSH1 0x32 PUSH2 0x3280 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MLOAD PUSH1 0x11 SSTORE PUSH1 0xC0 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x4987 SWAP1 DUP8 SWAP1 PUSH2 0x4551 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MLOAD PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD ADDRESS SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5EEB DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 PUSH1 0x80 DUP3 ADD MLOAD PUSH1 0x60 DUP1 DUP5 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP4 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE MLOAD PUSH32 0xE5B754FB1ABB7F01B499791D0B820AE3B6AF3424AC1C59768EDB53F4EC31A929 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x5 SLOAD PUSH1 0x80 DUP4 ADD MLOAD PUSH1 0x60 DUP5 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x51DFF989 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x64 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x51DFF989 SWAP2 PUSH1 0x84 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4A7B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4A8F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x0 SWAP3 POP PUSH2 0x4A9C SWAP2 POP POP JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH2 0x4AB9 JUMPI POP PUSH1 0x0 SWAP1 POP DUP1 PUSH2 0x322B JUMP JUMPDEST DUP4 DUP4 MUL DUP4 DUP6 DUP3 DUP2 PUSH2 0x4AC6 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x4ADA JUMPI POP PUSH1 0x2 SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH2 0x322B JUMP JUMPDEST PUSH1 0x0 SWAP3 POP SWAP1 POP PUSH2 0x322B JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH2 0x4AF9 JUMPI POP PUSH1 0x1 SWAP1 POP PUSH1 0x0 PUSH2 0x322B JUMP JUMPDEST PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x4B04 JUMPI INVALID JUMPDEST DIV SWAP2 POP SWAP2 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x4EF4C3E1 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 DUP5 SWAP4 SWAP2 AND SWAP2 PUSH4 0x4EF4C3E1 SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4B71 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4B85 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4B9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x4BBF JUMPI PUSH2 0x4BB2 PUSH1 0x3 PUSH1 0x21 DUP4 PUSH2 0x43F1 JUMP JUMPDEST SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH2 0x322B SWAP1 POP JUMP JUMPDEST PUSH2 0x4BC7 PUSH2 0x247A JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x4BDB JUMPI PUSH2 0x4BB2 PUSH1 0xA PUSH1 0x24 PUSH2 0x3280 JUMP JUMPDEST PUSH2 0x4BE3 PUSH2 0x5D2D JUMP JUMPDEST PUSH2 0x4BEB PUSH2 0x2A96 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4C02 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4C0D JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4C24 JUMPI INVALID JUMPDEST EQ PUSH2 0x4C4E JUMPI PUSH2 0x4C40 PUSH1 0x9 PUSH1 0x23 DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3A0E JUMPI INVALID JUMPDEST SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x322B SWAP2 POP POP JUMP JUMPDEST PUSH2 0x4C58 DUP7 DUP7 PUSH2 0x57B2 JUMP JUMPDEST PUSH1 0xC0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD DUP3 MSTORE SWAP1 DUP4 ADD MLOAD DUP2 MSTORE PUSH2 0x4C79 SWAP2 SWAP1 PUSH2 0x5A71 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4C90 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4C9B JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4CB2 JUMPI INVALID JUMPDEST EQ PUSH2 0x4D04 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D494E545F45584348414E47455F43414C43554C4154494F4E5F4641494C4544 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x4D14 PUSH1 0x11 SLOAD DUP3 PUSH1 0x60 ADD MLOAD PUSH2 0x3567 JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x4D41 SWAP2 SWAP1 PUSH2 0x3567 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MLOAD PUSH1 0x11 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0xC0 DUP5 ADD MLOAD PUSH1 0x60 DUP1 DUP7 ADD MLOAD DUP4 MLOAD SWAP5 DUP6 MSTORE SWAP5 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE MLOAD PUSH32 0x4C209B5FC8AD50758F13E2E1088BA56A560DFF690A1C6FEF26394F4C03821C4F SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 ADDRESS SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5EEB DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 PUSH1 0x5 SLOAD PUSH1 0xC0 DUP3 ADD MLOAD PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x41C728B9 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x64 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x41C728B9 SWAP2 PUSH1 0x84 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4E59 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4E6D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x0 SWAP3 POP PUSH2 0x4E7A SWAP2 POP POP JUMP JUMPDEST DUP2 PUSH1 0xC0 ADD MLOAD SWAP4 POP SWAP4 POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 ADD DUP3 DUP6 DUP3 LT ISZERO PUSH2 0x16F3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x43AD JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4395 JUMP JUMPDEST PUSH2 0x4EE9 PUSH2 0x5C87 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x4F02 DUP6 PUSH1 0x0 ADD MLOAD DUP6 PUSH2 0x5A88 JUMP JUMPDEST SWAP1 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4F15 PUSH2 0x5C87 JUMP JUMPDEST PUSH2 0x4F1F DUP5 DUP5 PUSH2 0x4EE1 JUMP JUMPDEST SWAP1 POP PUSH2 0x181F DUP2 PUSH2 0x4508 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4F34 PUSH2 0x5C87 JUMP JUMPDEST PUSH2 0x4F3E DUP6 DUP6 PUSH2 0x4EE1 JUMP JUMPDEST SWAP1 POP PUSH2 0x43E8 PUSH2 0x4F4C DUP3 PUSH2 0x4508 JUMP JUMPDEST DUP5 PUSH2 0x3567 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xDE0B6B3A7640000 PUSH2 0x4F6B DUP5 DUP5 PUSH1 0x0 ADD MLOAD PUSH2 0x5A88 JUMP JUMPDEST DUP2 PUSH2 0x4F72 JUMPI INVALID JUMPDEST DIV SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x368F5153 PUSH1 0xE2 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 AND SWAP2 PUSH4 0xDA3D454C SWAP2 PUSH1 0x64 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4FD7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4FEB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5001 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x5020 JUMPI PUSH2 0x5018 PUSH1 0x3 PUSH1 0x10 DUP4 PUSH2 0x43F1 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x10F2 JUMP JUMPDEST PUSH2 0x5028 PUSH2 0x247A JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x503C JUMPI PUSH2 0x5018 PUSH1 0xA PUSH1 0xC PUSH2 0x3280 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5046 PUSH2 0x3232 JUMP JUMPDEST SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x5065 JUMPI PUSH2 0x505C PUSH1 0xE PUSH1 0xB PUSH2 0x3280 JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x10F2 JUMP JUMPDEST PUSH2 0x506D PUSH2 0x5D6B JUMP JUMPDEST PUSH2 0x5076 DUP7 PUSH2 0x33F2 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x508A JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x5095 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x50A9 JUMPI INVALID JUMPDEST EQ PUSH2 0x50CE JUMPI PUSH2 0x50C4 PUSH1 0x9 DUP1 DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3A0E JUMPI INVALID JUMPDEST SWAP4 POP POP POP POP PUSH2 0x10F2 JUMP JUMPDEST PUSH2 0x50DC DUP2 PUSH1 0x20 ADD MLOAD DUP7 PUSH2 0x447A JUMP JUMPDEST PUSH1 0x40 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x50F0 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x50FB JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x510F JUMPI INVALID JUMPDEST EQ PUSH2 0x512B JUMPI PUSH2 0x50C4 PUSH1 0x9 PUSH1 0xE DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3A0E JUMPI INVALID JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 DUP4 ADD MLOAD DUP2 MLOAD PUSH4 0x1DE6C8A5 PUSH1 0xE2 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x779B2294 SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5184 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5198 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x51AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 POP DUP3 ISZERO PUSH2 0x51C5 JUMPI PUSH2 0x50C4 PUSH1 0x3 PUSH1 0x10 DUP6 PUSH2 0x43F1 JUMP JUMPDEST PUSH2 0x51D1 PUSH1 0xD SLOAD DUP7 PUSH2 0x447A JUMP JUMPDEST PUSH1 0x60 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x51E5 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x51F0 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x5204 JUMPI INVALID JUMPDEST EQ PUSH2 0x5220 JUMPI PUSH2 0x50C4 PUSH1 0x9 PUSH1 0xD DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3A0E JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 MSTORE SWAP2 SWAP1 SWAP2 KECCAK256 SWAP1 DUP2 SSTORE PUSH1 0xC SLOAD PUSH1 0x1 SWAP1 SWAP2 ADD SSTORE PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0xD SSTORE PUSH2 0x525C DUP7 DUP7 PUSH2 0x4551 JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 ADD MLOAD PUSH1 0x60 DUP1 DUP5 ADD MLOAD DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP11 SWAP1 MSTORE DUP1 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP1 DUP3 ADD MSTORE SWAP1 MLOAD PUSH32 0x13ED6866D4E1EE6DA46F845C46D7E54120883D75C5EA9A2DACC1C4CA8984AB80 SWAP2 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG1 PUSH1 0x0 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x2FE3F38F PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP8 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE DUP7 DUP2 AND PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x84 DUP3 ADD DUP7 SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 DUP5 SWAP4 SWAP2 AND SWAP2 PUSH4 0x5FC7E71E SWAP2 PUSH1 0xA4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5331 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5345 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x535B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x537F JUMPI PUSH2 0x5372 PUSH1 0x3 PUSH1 0x14 DUP4 PUSH2 0x43F1 JUMP JUMPDEST SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH2 0x57A9 SWAP1 POP JUMP JUMPDEST PUSH2 0x5387 PUSH2 0x247A JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x539B JUMPI PUSH2 0x5372 PUSH1 0xA PUSH1 0x18 PUSH2 0x3280 JUMP JUMPDEST PUSH2 0x53A3 PUSH2 0x247A JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6C540BAF 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 0x53DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x53F0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5406 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD EQ PUSH2 0x5419 JUMPI PUSH2 0x5372 PUSH1 0xA PUSH1 0x13 PUSH2 0x3280 JUMP JUMPDEST DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x543F JUMPI PUSH2 0x5372 PUSH1 0x6 PUSH1 0x19 PUSH2 0x3280 JUMP JUMPDEST DUP5 PUSH2 0x5450 JUMPI PUSH2 0x5372 PUSH1 0x7 PUSH1 0x17 PUSH2 0x3280 JUMP JUMPDEST PUSH1 0x0 NOT DUP6 EQ ISZERO PUSH2 0x5466 JUMPI PUSH2 0x5372 PUSH1 0x7 PUSH1 0x16 PUSH2 0x3280 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x5474 DUP10 DUP10 DUP10 PUSH2 0x3E02 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP DUP2 ISZERO PUSH2 0x54A4 JUMPI PUSH2 0x5495 DUP3 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x548E JUMPI INVALID JUMPDEST PUSH1 0x1A PUSH2 0x3280 JUMP JUMPDEST SWAP5 POP PUSH1 0x0 SWAP4 POP PUSH2 0x57A9 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xC488847B PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP6 SWAP1 MSTORE DUP3 MLOAD PUSH1 0x0 SWAP5 DUP6 SWAP5 SWAP3 AND SWAP3 PUSH4 0xC488847B SWAP3 PUSH1 0x64 DUP1 DUP4 ADD SWAP4 SWAP2 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x54FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5512 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x5528 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 POP SWAP1 POP DUP2 ISZERO PUSH2 0x5573 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x33 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5F3C PUSH1 0x33 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 DUP9 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 DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x55CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x55DE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x55F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT ISZERO PUSH2 0x5649 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C49515549444154455F5345495A455F544F4F5F4D5543480000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND ADDRESS EQ ISZERO PUSH2 0x566F JUMPI PUSH2 0x5668 ADDRESS DUP14 DUP14 DUP6 PUSH2 0x38C0 JUMP JUMPDEST SWAP1 POP PUSH2 0x56F9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xB2A02FF1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP15 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP14 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD SWAP2 DUP12 AND SWAP2 PUSH4 0xB2A02FF1 SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x56CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x56DE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x56F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP JUMPDEST DUP1 ISZERO PUSH2 0x5743 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x1D1BDAD95B881CD95A5E9D5C994819985A5B1959 PUSH1 0x62 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP16 AND DUP3 MSTORE DUP1 DUP15 AND PUSH1 0x20 DUP4 ADD MSTORE DUP2 DUP4 ADD DUP8 SWAP1 MSTORE DUP12 AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP2 ADD DUP5 SWAP1 MSTORE SWAP1 MLOAD PUSH32 0x298637F684DA70674F26509B10F07EC2FBC77A335AB1E7D6215A4B2484D8BB52 SWAP2 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 LOG1 PUSH1 0x0 SWAP8 POP SWAP3 SWAP6 POP POP POP POP POP POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x15 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 DUP4 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5802 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5816 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x582C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x24 DUP3 ADD MSTORE ADDRESS PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP1 DUP3 ADD DUP8 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x23B872DD PUSH1 0xE0 SHL OR SWAP1 MSTORE DUP3 MLOAD DUP1 DUP5 ADD SWAP1 SWAP4 MSTORE PUSH1 0x18 DUP4 MSTORE PUSH32 0x544F4B454E5F5452414E534645525F494E5F4641494C45440000000000000000 SWAP1 DUP4 ADD MSTORE SWAP2 SWAP3 POP PUSH2 0x58B9 SWAP2 SWAP1 PUSH2 0x59E9 JUMP JUMPDEST PUSH1 0x15 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5904 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5918 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x592E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP2 DUP2 LT ISZERO PUSH2 0x5987 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x544F4B454E5F5452414E534645525F494E5F4F564552464C4F57000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SUB SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x59E1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x43AD JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4395 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x15 SLOAD PUSH1 0x60 SWAP1 PUSH2 0x5A03 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 DUP5 PUSH2 0x42A2 JUMP JUMPDEST DUP1 MLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0x16B2 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5A22 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP3 SWAP1 PUSH2 0x18BF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x43AD JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4395 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x5A7E PUSH2 0x5C87 JUMP JUMPDEST PUSH2 0x31F5 DUP7 DUP7 PUSH2 0x5ACA JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1BF7 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x17 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x6D756C7469706C69636174696F6E206F766572666C6F77000000000000000000 DUP2 MSTORE POP PUSH2 0x5B29 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5AD4 PUSH2 0x5C87 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x5AE9 PUSH8 0xDE0B6B3A7640000 DUP8 PUSH2 0x4AA6 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x5AFC JUMPI INVALID JUMPDEST EQ PUSH2 0x5B1B JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x322B JUMP JUMPDEST PUSH2 0x3224 DUP2 DUP7 PUSH1 0x0 ADD MLOAD PUSH2 0x41ED JUMP JUMPDEST PUSH1 0x0 DUP4 ISZERO DUP1 PUSH2 0x5B36 JUMPI POP DUP3 ISZERO JUMPDEST ISZERO PUSH2 0x5B43 JUMPI POP PUSH1 0x0 PUSH2 0x1BF7 JUMP JUMPDEST DUP4 DUP4 MUL DUP4 DUP6 DUP3 DUP2 PUSH2 0x5B50 JUMPI INVALID JUMPDEST DIV EQ DUP4 SWAP1 PUSH2 0x16F3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x43AD JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4395 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x5BE0 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x5C0D JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x5C0D JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x5C0D JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x5BF2 JUMP JUMPDEST POP PUSH2 0x1A42 SWAP3 SWAP2 POP PUSH2 0x5D94 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x5C5A JUMPI DUP3 DUP1 ADD PUSH1 0xFF NOT DUP3 CALLDATALOAD AND OR DUP6 SSTORE PUSH2 0x5C0D JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x5C0D JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x5C0D JUMPI DUP3 CALLDATALOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x5C6C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x120 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x100 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xE0 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH2 0x14A4 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1A42 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x5D9A JUMP INVALID PUSH14 0x61726B6574206D6179206F6E6C79 KECCAK256 PUSH3 0x652069 PUSH15 0x697469616C697A6564206F6E636569 PUSH15 0x697469616C2065786368616E676520 PUSH19 0x617465206D7573742062652067726561746572 KECCAK256 PUSH21 0x68616E207A65726F2E6F6E6C79207468652061646D PUSH10 0x6E206D61792073657420 PUSH21 0x686520636F6D702D6C696B652064656C6567617465 PUSH20 0x657474696E6720696E7465726573742072617465 KECCAK256 PUSH14 0x6F64656C206661696C6564626F72 PUSH19 0x6F7742616C616E636553746F7265643A20626F PUSH19 0x726F7742616C616E636553746F726564496E74 PUSH6 0x726E616C2066 PUSH2 0x696C PUSH6 0x645245504159 0x5F TIMESTAMP 0x4F MSTORE MSTORE 0x4F JUMPI 0x5F 0x4E GASLIMIT JUMPI 0x5F COINBASE NUMBER NUMBER 0x4F SSTORE 0x4E SLOAD 0x5F TIMESTAMP 0x4F MSTORE MSTORE 0x4F JUMPI 0x5F TIMESTAMP COINBASE 0x4C COINBASE 0x4E NUMBER GASLIMIT 0x5F NUMBER COINBASE 0x4C NUMBER SSTORE 0x4C COINBASE SLOAD 0x49 0x4F 0x4E 0x5F CHAINID COINBASE 0x49 0x4C GASLIMIT DIFFICULTY PUSH16 0x6E6C7920467573652061646D696E206D PUSH2 0x7920 PUSH10 0x6E697469616C697A6520 PUSH21 0x6865206D61726B6574DDF252AD1BE2C89B69C2B068 0xFC CALLDATACOPY DUP14 0xAA SWAP6 0x2B 0xA7 CALL PUSH4 0xC4A11628 CREATE2 GAS 0x4D CREATE2 0x23 0xB3 0xEF MSTORE GASLIMIT POP COINBASE MSIZE 0x5F TIMESTAMP 0x4F MSTORE MSTORE 0x4F JUMPI 0x5F 0x4E GASLIMIT JUMPI 0x5F SLOAD 0x4F SLOAD COINBASE 0x4C 0x5F TIMESTAMP COINBASE 0x4C COINBASE 0x4E NUMBER GASLIMIT 0x5F NUMBER COINBASE 0x4C NUMBER SSTORE 0x4C COINBASE SLOAD 0x49 0x4F 0x4E 0x5F CHAINID COINBASE 0x49 0x4C GASLIMIT DIFFICULTY 0x4C 0x49 MLOAD SSTORE 0x49 DIFFICULTY COINBASE SLOAD GASLIMIT 0x5F NUMBER 0x4F 0x4D POP SLOAD MSTORE 0x4F 0x4C 0x4C GASLIMIT MSTORE 0x5F NUMBER COINBASE 0x4C NUMBER SSTORE 0x4C COINBASE SLOAD GASLIMIT 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD 0x5F MSTORE8 GASLIMIT 0x49 GAS GASLIMIT 0x5F CHAINID COINBASE 0x49 0x4C GASLIMIT DIFFICULTY PUSH6 0x786368616E67 PUSH6 0x526174655374 PUSH16 0x7265643A2065786368616E6765526174 PUSH6 0x53746F726564 0x49 PUSH15 0x7465726E616C206661696C65646F6E PUSH6 0x206F66207265 PUSH5 0x65656D546F PUSH12 0x656E73496E206F7220726564 PUSH6 0x656D416D6F75 PUSH15 0x74496E206D757374206265207A6572 PUSH16 0xA265627A7A72315820C5E70DE80F8EAD 0xD 0xD9 DUP11 SWAP11 DUP5 DUP7 SWAP7 CALLDATACOPY BLOCKHASH CALLDATACOPY AND 0xCD 0xCB XOR 0xA9 0x2F KECCAK256 DUP7 CHAINID SWAP2 0xB9 0xB8 PUSH16 0x3BA864736F6C63430005110032000000 ","sourceMap":"194:3704:3:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;960:18:11;;8:9:-1;5:2;;;30:1;27;20:12;5:2;960:18:11;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;960:18:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7552:232:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7552:232:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7552:232:10;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3661:146:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3661:146:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3661:146:2;;:::i;:::-;;;;;;;;;;;;;;;;1302:1947:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1302:1947:10;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;1302:1947:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;1302:1947:10;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1302:1947:10;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1302:1947:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1302:1947:10;;;;;;;;-1:-1:-1;1302:1947:10;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;1302:1947:10;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1302:1947:10;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1302:1947:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1302:1947:10;;-1:-1:-1;;1302:1947:10;;;;;-1:-1:-1;;;1302:1947:10;;;;;;;;;:::i;:::-;;2390:33:11;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2390:33:11;;;:::i;11828:228:10:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11828:228:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11828:228:10;-1:-1:-1;;;;;11828:228:10;;:::i;3266:23:11:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3266:23:11;;;:::i;14620:257:10:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14620:257:10;;;:::i;3437:459:3:-;;;:::i;6892:200:10:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6892:200:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6892:200:10;;;;;;;;;;;;;;;;;:::i;4087:186:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4087:186:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4087:186:2;;;;;;;;:::i;1146:21:11:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1146:21:11;;;:::i;:::-;;;;;;;;;;;;;;;;;;;70024:265:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;70024:265:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;70024:265:10;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;70024:265:10;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;70024:265:10;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;70024:265:10;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;70024:265:10;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;70024:265:10;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;70024:265:10;;-1:-1:-1;70024:265:10;-1:-1:-1;70024:265:10;:::i;8788:349::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8788:349:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8788:349:10;-1:-1:-1;;;;;8788:349:10;;:::i;16532:86::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16532:86:10;;;:::i;2784:24:11:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2784:24:11;;;:::i;2928:330:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2928:330:3;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;2928:330:3;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;2928:330:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2928:330:3;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;2928:330:3;;-1:-1:-1;2928:330:3;-1:-1:-1;2928:330:3;:::i;502:489::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;502:489:3;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;502:489:3;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;502:489:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;502:489:3;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;502:489:3;;-1:-1:-1;502:489:3;-1:-1:-1;502:489:3;:::i;9773:29:11:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9773:29:11;;;:::i;:::-;;;;-1:-1:-1;;;;;9773:29:11;;;;;;;;;;;;;;1713:39;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1713:39:11;;;:::i;59156:570:10:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;59156:570:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;59156:570:10;;:::i;3037:26:11:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3037:26:11;;;:::i;4209:56::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4209:56:11;;;:::i;2508:30::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2508:30:11;;;:::i;8834:25::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8834:25:11;;;:::i;8430:110:10:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8430:110:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8430:110:10;-1:-1:-1;;;;;8430:110:10;;:::i;11348:196::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11348:196:10;;;:::i;8473:214:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8473:214:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8473:214:2;-1:-1:-1;;;;;8473:214:2;;:::i;2957:131::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2957:131:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2957:131:2;;:::i;2150:28:11:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2150:28:11;;;:::i;2909:25::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2909:25:11;;;:::i;54184:571:10:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;54184:571:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;54184:571:10;;:::i;1051:20:11:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1051:20:11;;;:::i;12258:283:10:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12258:283:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12258:283:10;-1:-1:-1;;;;;12258:283:10;;:::i;61865:587::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;61865:587:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;61865:587:10;;:::i;2025:130:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2025:130:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2025:130:2;;:::i;803:842::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;803:842:2;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;803:842:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;803:842:2;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;803:842:2;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;803:842:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;803:842:2;;;;;;;;-1:-1:-1;803:842:2;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;803:842:2;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;803:842:2;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;803:842:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;803:842:2;;-1:-1:-1;;803:842:2;;;-1:-1:-1;;;803:842:2;;;;:::i;16859:1071:10:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16859:1071:10;;;:::i;64387:592::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;64387:592:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;64387:592:10;;:::i;6404:190::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6404:190:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6404:190:10;;;;;;;;:::i;2654:23:11:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2654:23:11;;;:::i;4556:37::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4556:37:11;;;:::i;10946:262:10:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10946:262:10;;;:::i;48862:198::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;48862:198:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;48862:198:10;;;;;;;;;;;;;;;;;:::i;14175:202::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14175:202:10;;;:::i;9475:685::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9475:685:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9475:685:10;-1:-1:-1;;;;;9475:685:10;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3349:111:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3349:111:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3349:111:2;;:::i;2498:::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2498:111:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2498:111:2;;:::i;2271:27:11:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2271:27:11;;;:::i;3165:25::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3165:25:11;;;:::i;8106:141:10:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8106:141:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;8106:141:10;;;;;;;;;;:::i;67100:625::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;67100:625:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;67100:625:10;-1:-1:-1;;;;;67100:625:10;;:::i;1849:42:11:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1849:42:11;;;:::i;4745:234:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4745:234:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4745:234:2;;;;;;;;;;;;;;;;;:::i;10574:202:10:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10574:202:10;;;:::i;57039:606::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;57039:606:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;57039:606:10;;:::i;4414:36:11:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4414:36:11;;;:::i;960:18::-;;;;;;;;;;;;;;-1:-1:-1;;960:18:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7552:232:10:-;7650:10;7620:4;7670:23;;;:18;:23;;;;;;;;-1:-1:-1;;;;;7670:32:10;;;;;;;;;;;:41;;;7726:30;;;;;;;7620:4;;7650:10;7670:32;;7650:10;;7726:30;;;;;;;;;;;7773:4;7766:11;;;7552:232;;;;;:::o;3661:146:2:-;3718:4;3735:8;3748:32;3768:11;3748:19;:32::i;:::-;-1:-1:-1;3734:46:2;-1:-1:-1;;3661:146:2;;;;:::o;1302:1947:10:-;1743:10;326:42:11;1743:32:10;1735:86;;;;-1:-1:-1;;;1735:86:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1839:18;;:23;:43;;;;-1:-1:-1;1866:11:10;;:16;1839:43;1831:91;;;;-1:-1:-1;;;1831:91:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1970:27;:58;;;2046:31;2038:92;;;;-1:-1:-1;;;2038:92:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2172:8;2183:29;2199:12;2183:15;:29::i;:::-;2172:40;-1:-1:-1;2230:27:10;;2222:66;;;;;-1:-1:-1;;;2222:66:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;2425:16;:14;:16::i;:::-;2404:18;:37;409:4:22;2451:11:10;:25;2573:46;2600:18;2573:26;:46::i;:::-;2567:52;-1:-1:-1;2637:27:10;;2629:74;;;;-1:-1:-1;;;2629:74:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2714:12;;;;:4;;:12;;;;;:::i;:::-;-1:-1:-1;2736:16:10;;;;:6;;:16;;;;;:::i;:::-;-1:-1:-1;2762:8:10;:20;;-1:-1:-1;;2762:20:10;;;;;;;2829:46;2852:22;2829;:46::i;:::-;2823:52;-1:-1:-1;2893:27:10;;2885:69;;;;;-1:-1:-1;;;2885:69:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;2996:36;3014:17;2996;:36::i;:::-;2990:42;-1:-1:-1;3050:27:10;;3042:64;;;;;-1:-1:-1;;;3042:64:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3238:4:10;3224:18;;-1:-1:-1;;;;3224:18:10;-1:-1:-1;;;3224:18:10;;;-1:-1:-1;;;;;;;1302:1947:10:o;2390:33:11:-;;;;:::o;11828:228:10:-;11913:4;11897:5;71531:30;71551:9;71531:19;:30::i;:::-;11962:14;11937:16;:14;:16::i;:::-;:40;11929:75;;;;;-1:-1:-1;;;11929:75:10;;;;;;;;;;;;-1:-1:-1;;;11929:75:10;;;;;;;;;;;;;;;12021:28;12041:7;12021:19;:28::i;:::-;12014:35;;71571:1;71582:29;71601:9;71582:18;:29::i;:::-;11828:228;;;;:::o;3266:23:11:-;;;;:::o;14620:257:10:-;14671:4;14688:13;14703:11;14718:28;:26;:28::i;:::-;14687:59;;-1:-1:-1;14687:59:10;-1:-1:-1;14771:18:10;14764:3;:25;;;;;;;;;14756:91;;;;-1:-1:-1;;;14756:91:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14864:6;-1:-1:-1;;14620:257:10;;:::o;3437:459:3:-;3488:10;3510:4;3488:27;;;;:94;;;3548:11;;;;;;;;;-1:-1:-1;;;;;3548:11:3;-1:-1:-1;;;;;3519:61:3;;:63;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3519:63:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3519:63:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3519:63:3;3488:94;3484:406;;;3599:28;3719:14;;3688:46;;;-1:-1:-1;;;3688:46:3;;-1:-1:-1;;;;;3719:14:3;;;3688:46;;;;;3599:28;;3647:37;;326:42:11;;3688:30:3;;:46;;;;;3599:28;;3688:46;;;;;;;326:42:11;3688:46:3;;;5:2:-1;;;;30:1;27;20:12;5:2;3688:46:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3688:46:3;;;;;;39:16:-1;36:1;17:17;2:54;101:4;3688:46:3;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;3688:46:3;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:20;;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;3688:46:3;;420:4:-1;411:14;;;;3688:46:3;;;;;411:14:-1;3688:46:3;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3688:46:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3688:46:3;;-1:-1:-1;;3752:14:3;;3598:136;;-1:-1:-1;3598:136:3;;-1:-1:-1;3598:136:3;-1:-1:-1;;;;;;;3752:38:3;;;:14;;:38;3748:131;;3792:87;3819:20;3841:11;3854:24;3792:26;:87::i;:::-;3484:406;;;;3437:459::o;6892:200:10:-;6994:4;6978:5;71531:30;71551:9;71531:19;:30::i;:::-;7070:14;7017:44;7032:10;7044:3;7049;7054:6;7017:14;:44::i;:::-;:68;7010:75;;71582:29;71601:9;71582:18;:29::i;:::-;6892:200;;;;;;:::o;4087:186:2:-;4168:4;4185:8;4198:48;4224:8;4234:11;4198:25;:48::i;:::-;-1:-1:-1;4184:62:2;4087:186;-1:-1:-1;;;;4087:186:2:o;1146:21:11:-;;;;;;:::o;70024:265:10:-;70159:16;:14;:16::i;:::-;70151:45;;;;;-1:-1:-1;;;70151:45:10;;;;;;;;;;;;-1:-1:-1;;;70151:45:10;;;;;;;;;;;;;;;70244:12;:4;70251:5;;70244:12;:::i;:::-;-1:-1:-1;70266:16:10;:6;70275:7;;70266:16;:::i;:::-;;70024:265;;;;:::o;8788:349::-;8850:4;8866:23;;:::i;:::-;8892:38;;;;;;;;8907:21;:19;:21::i;:::-;8892:38;;-1:-1:-1;;;;;9005:20:10;;8941:14;9005:20;;;:13;:20;;;;;;8866:64;;-1:-1:-1;8941:14:10;;;8973:53;;8866:64;;8973:17;:53::i;:::-;8940:86;;-1:-1:-1;8940:86:10;-1:-1:-1;9052:18:10;9044:4;:26;;;;;;;;;9036:70;;;;;-1:-1:-1;;;9036:70:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;9123:7;8788:349;-1:-1:-1;;;;8788:349:10:o;16532:86::-;16574:4;16597:14;:12;:14::i;:::-;16590:21;;16532:86;:::o;2784:24:11:-;;;;:::o;2928:330:3:-;3101:16;:14;:16::i;:::-;3093:35;;;;;-1:-1:-1;;;3093:35:3;;;;;;;;;;;;-1:-1:-1;;;3093:35:3;;;;;;;;;;;;;;;3169:82;3196:15;3213:11;3226:24;;3169:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;3169:26:3;;-1:-1:-1;;;3169:82:3:i;:::-;2928:330;;;;:::o;502:489::-;769:10;791:4;769:27;;:47;;;800:16;:14;:16::i;:::-;761:65;;;;;-1:-1:-1;;;761:65:3;;;;;;;;;;;;-1:-1:-1;;;761:65:3;;;;;;;;;;;;;;;-1:-1:-1;;892:7:3;:20;;-1:-1:-1;;;;;;956:28:3;;;502:489::o;9773:29:11:-;;;-1:-1:-1;;;;;9773:29:11;;:::o;1713:39::-;;;-1:-1:-1;;;;;1713:39:11;;:::o;59156:570:10:-;59238:4;59222:5;71531:30;71551:9;71531:19;:30::i;:::-;59254:10;59267:16;:14;:16::i;:::-;59254:29;-1:-1:-1;59297:29:10;;59293:274;;59486:70;59497:5;59491:12;;;;;;;;59505:50;59486:4;:70::i;:::-;59479:77;;;;;59293:274;59685:34;59706:12;59685:20;:34::i;:::-;59678:41;;;71582:29;71601:9;71582:18;:29::i;3037:26:11:-;;;;:::o;4209:56::-;4259:6;4209:56;:::o;2508:30::-;;;;:::o;8834:25::-;;;-1:-1:-1;;;;;8834:25:11;;:::o;8430:110:10:-;-1:-1:-1;;;;;8513:20:10;8487:7;8513:20;;;:13;:20;;;;;;;8430:110::o;11348:196::-;11417:4;11401:5;71531:30;71551:9;71531:19;:30::i;:::-;11466:14;11441:16;:14;:16::i;:::-;:40;11433:75;;;;;-1:-1:-1;;;11433:75:10;;;;;;;;;;;;-1:-1:-1;;;11433:75:10;;;;;;;;;;;;;;;11525:12;;11518:19;;71582:29;71601:9;71582:18;:29::i;:::-;11348:196;;:::o;8473:214:2:-;8556:16;:14;:16::i;:::-;8548:74;;;;-1:-1:-1;;;8548:74:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8641:10;;8632:48;;;-1:-1:-1;;;8632:48:2;;-1:-1:-1;;;;;8632:48:2;;;;;;;;;8641:10;;;;;8632:29;;:48;;;;;8641:10;;8632:48;;;;;;;8641:10;;8632:48;;;5:2:-1;;;;30:1;27;20:12;5:2;8632:48:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;2957:131:2;3020:4;3043:38;3068:12;3043:24;:38::i;2150:28:11:-;;;;:::o;2909:25::-;;;;:::o;54184:571:10:-;54270:4;54254:5;71531:30;71551:9;71531:19;:30::i;:::-;54286:10;54299:16;:14;:16::i;:::-;54286:29;-1:-1:-1;54329:29:10;;54325:273;;54519:68;54530:5;54524:12;;;;;;;;54538:48;54519:4;:68::i;54325:273::-;54710:38;54728:19;54710:17;:38::i;1051:20:11:-;;;;;;;;;;;;;;;-1:-1:-1;;1051:20:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12258:283:10;12325:4;12342:13;12357:11;12372:36;12400:7;12372:27;:36::i;:::-;12341:67;;-1:-1:-1;12341:67:10;-1:-1:-1;12433:18:10;12426:3;:25;;;;;;;;;12418:93;;;;-1:-1:-1;;;12418:93:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12528:6;12258:283;-1:-1:-1;;;12258:283:10:o;61865:587::-;61951:4;61935:5;71531:30;71551:9;71531:19;:30::i;:::-;61967:10;61980:16;:14;:16::i;:::-;61967:29;-1:-1:-1;62010:29:10;;62006:281;;62203:73;62214:5;62208:12;;;;;;;;62222:53;62203:4;:73::i;62006:281::-;62407:38;62430:14;62407:22;:38::i;2025:130:2:-;2074:4;2091:8;2104:24;2117:10;2104:12;:24::i;803:842::-;1236:36;1275:6;1236:45;;1291:15;1324:11;-1:-1:-1;;;;;1309:36:2;;:38;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1309:38:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1309:38:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1309:38:2;;-1:-1:-1;1357:150:2;1374:12;1388:18;1408:28;1438:5;1445:7;1309:38;1465:22;1489:17;1357:16;:150::i;:::-;1564:10;:24;;-1:-1:-1;;;;;;1564:24:2;-1:-1:-1;;;;;1564:24:2;;;;;;;;;;;1598:40;;;-1:-1:-1;;;1598:40:2;;;;1613:10;;;;;1598:38;;:40;;;;;;;;;;;;;;;1613:10;1598:40;;;5:2:-1;;;;30:1;27;20:12;5:2;1598:40:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1598:40:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;;;;;;803:842:2:o;16859:1071:10:-;16901:4;16965:23;16991:16;:14;:16::i;:::-;16965:42;;17096:18;17074;;:40;17070:98;;;17142:14;17130:27;;;;;17070:98;17232:14;17249;:12;:14::i;:::-;17232:31;;17331:23;17357:17;;;;;;;;;-1:-1:-1;;;;;17357:17:10;-1:-1:-1;;;;;17357:31:10;;17389:9;17400:12;;17414:56;17419:13;;17434:35;17439:14;;17455:13;;17434:4;:35::i;:::-;17414:4;:56::i;:::-;17357:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17357:114:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17357:114:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17357:114:10;;-1:-1:-1;1314:9:11;17489:43:10;;;17481:84;;;;;-1:-1:-1;;;17481:84:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;17653:17;17672:15;17691:47;17699:18;17719;;17691:7;:47::i;:::-;17652:86;;-1:-1:-1;17652:86:10;-1:-1:-1;17767:18:10;17756:7;:29;;;;;;;;;17748:73;;;;;-1:-1:-1;;;17748:73:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;17839:84;17861:18;17881:9;17892:18;17912:10;17839:21;:84::i;:::-;17832:91;;;;;;;16859:1071;:::o;64387:592::-;64474:4;64458:5;71531:30;71551:9;71531:19;:30::i;:::-;64490:10;64503:16;:14;:16::i;:::-;64490:29;-1:-1:-1;64533:29:10;;64529:283;;64727:74;64738:5;64732:12;;;;;;;;64746:54;64727:4;:74::i;64529:283::-;64933:39;64957:14;64933:23;:39::i;6404:190::-;6489:4;6473:5;71531:30;71551:9;71531:19;:30::i;:::-;6572:14;6512:51;6527:10;6539;6551:3;6556:6;6512:14;:51::i;:::-;:75;6505:82;;71582:29;71601:9;71582:18;:29::i;:::-;6404:190;;;;;:::o;2654:23:11:-;;;;:::o;4556:37::-;4588:5;4556:37;:::o;10946:262:10:-;11022:17;;10999:4;;-1:-1:-1;;;;;11022:17:10;:31;11054:14;:12;:14::i;:::-;11070:12;;11084:56;11089:13;;11104:35;11109:14;;11125:13;;11104:4;:35::i;11084:56::-;11184:16;;11166:15;;11142:21;;:39;:58;11022:179;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11022:179:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11022:179:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11022:179:10;;-1:-1:-1;10946:262:10;:::o;48862:198::-;48970:4;48955;71531:30;71551:9;71531:19;:30::i;:::-;48993:60;49007:10;49019;49031:8;49041:11;48993:13;:60::i;:::-;48986:67;;71582:29;71601:9;71582:18;:29::i;14175:202::-;14242:4;14226:5;71531:30;71551:9;71531:19;:30::i;:::-;14291:14;14266:16;:14;:16::i;:::-;:40;14258:75;;;;;-1:-1:-1;;;14258:75:10;;;;;;;;;;;;-1:-1:-1;;;14258:75:10;;;;;;;;;;;;;;;14350:20;:18;:20::i;:::-;14343:27;;71582:29;71601:9;71582:18;:29::i;9475:685::-;-1:-1:-1;;;;;9598:22:10;;9543:4;9598:22;;;:13;:22;;;;;;9543:4;;;;;;;;;9743:36;9612:7;9743:27;:36::i;:::-;9719:60;-1:-1:-1;9719:60:10;-1:-1:-1;9801:18:10;9793:4;:26;;;;;;;;;9789:97;;9848:16;9843:22;9835:40;-1:-1:-1;9867:1:10;;-1:-1:-1;9867:1:10;;-1:-1:-1;9867:1:10;;-1:-1:-1;9835:40:10;;-1:-1:-1;;;;9835:40:10;9789:97;9927:28;:26;:28::i;:::-;9896:59;-1:-1:-1;9896:59:10;-1:-1:-1;9977:18:10;9969:4;:26;;;;;;;;;9965:97;;10024:16;10019:22;;9965:97;-1:-1:-1;10085:14:10;;-1:-1:-1;10102:13:10;;-1:-1:-1;10117:13:10;-1:-1:-1;10117:13:10;-1:-1:-1;9475:685:10;;;;;;:::o;3349:111:2:-;3402:4;3425:28;3440:12;3425:14;:28::i;2498:111::-;2551:4;2574:28;2589:12;2574:14;:28::i;2271:27:11:-;;;;:::o;3165:25::-;;;;:::o;8106:141:10:-;-1:-1:-1;;;;;8206:25:10;;;8180:7;8206:25;;;:18;:25;;;;;;;;:34;;;;;;;;;;;;;8106:141::o;67100:625::-;67187:4;67203:10;67216:16;:14;:16::i;:::-;67203:29;-1:-1:-1;67246:29:10;;67242:295;;67448:78;67459:5;67453:12;;;;;;;;67467:58;67448:4;:78::i;:::-;67441:85;;;;;67242:295;67670:48;67697:20;67670:26;:48::i;1849:42:11:-;;;-1:-1:-1;;;;;1849:42:11;;:::o;4745:234:2:-;4858:4;4875:8;4888:64;4912:8;4922:11;4935:16;4888:23;:64::i;:::-;-1:-1:-1;4874:78:2;4745:234;-1:-1:-1;;;;;4745:234:2:o;10574:202:10:-;10650:17;;10627:4;;-1:-1:-1;;;;;10650:17:10;:31;10682:14;:12;:14::i;:::-;10698:12;;10712:56;10717:13;;10732:35;10737:14;;10753:13;;10732:4;:35::i;10712:56::-;10650:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;57039:606:10;57135:4;57119:5;71531:30;71551:9;71531:19;:30::i;:::-;57151:10;57164:16;:14;:16::i;:::-;57151:29;-1:-1:-1;57194:29:10;;57190:283;;57389:73;57400:5;57394:12;;;;;;;;57408:53;57389:4;:73::i;57190:283::-;57590:48;57613:24;57590:22;:48::i;4414:36:11:-;4446:4;4414:36;:::o;37117:571:10:-;37202:4;37208;37186:5;71531:30;71551:9;71531:19;:30::i;:::-;37224:10;37237:16;:14;:16::i;:::-;37224:29;-1:-1:-1;37267:29:10;;37263:257;;37438:67;37449:5;37443:12;;;;;;;;37457:47;37438:4;:67::i;:::-;37430:79;-1:-1:-1;37507:1:10;;-1:-1:-1;37430:79:10;;-1:-1:-1;37430:79:10;37263:257;37628:53;37645:10;37657;37669:11;37628:16;:53::i;:::-;37621:60;;;;;71571:1;71582:29;71601:9;71582:18;:29::i;:::-;37117:571;;;;:::o;53348:555::-;53428:4;53444:35;53482:11;;;;;;;;;-1:-1:-1;;;;;53482:11:10;53444:49;;53577:14;-1:-1:-1;;;;;53577:28:10;;:30;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;53577:30:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;53577:30:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;53577:30:10;53569:71;;;;;-1:-1:-1;;;53569:71:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;53705:11;:28;;-1:-1:-1;;;;;;53705:28:10;-1:-1:-1;;;;;53705:28:10;;;;;;;;;53812:46;;;;;;;;;;;;;;;;;;;;;;;;;;;53881:14;53876:20;;10313:91;10385:12;10313:91;:::o;68047:1634::-;68141:4;68240:38;68327:16;:14;:16::i;:::-;68322:128;;68366:73;68371:18;68391:47;68366:4;:73::i;68322:128::-;68573:16;:14;:16::i;:::-;68551:18;;:38;68547:153;;68612:77;68617:22;68641:47;68612:4;:77::i;68547:153::-;68791:17;;;;;;;;;-1:-1:-1;;;;;68791:17:10;68768:40;;68908:20;-1:-1:-1;;;;;68908:40:10;;:42;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;68908:42:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;68908:42:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;68908:42:10;68900:83;;;;;-1:-1:-1;;;68900:83:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;69057:17;:40;;-1:-1:-1;;;;;;69057:40:10;-1:-1:-1;;;;;69057:40:10;;;;;;;;;69200:70;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;69345:43:10;;;69341:138;;69425:53;;;22:32:-1;6:49;;69425:53:10;;;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;69390:89:10;;;;-1:-1:-1;;;;;69390:34:10;;;:89;;;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;69390:89:10;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;69390:89:10;;69341:138;69588:47;;;22:32:-1;6:49;;69588:47:10;;;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;69553:83:10;;;;-1:-1:-1;;;;;69553:34:10;;;:83;;;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;69553:83:10;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;-1:-1;69659:14:10;;-1:-1:-1;69654:20:10;;-1:-1:-1;69654:20:10;57906:1004;57987:4;58041:16;:14;:16::i;:::-;58036:123;;58080:68;58085:18;58105:42;58080:4;:68::i;:::-;58073:75;;;;58036:123;58263:16;:14;:16::i;:::-;58241:18;;:38;58237:148;;58302:72;58307:22;58331:42;58302:4;:72::i;58237:148::-;1490:4:11;58454:71:10;58459:48;58464:24;58490:16;;58459:4;:48::i;:::-;58509:15;;58454:4;:71::i;:::-;:106;58450:210;;;58583:66;58588:15;58605:43;58583:4;:66::i;58450:210::-;58702:21;;;58733:48;;;;58797:68;;;;;;;;;;;;;;;;;;;;;;;;;58888:14;58883:20;;55006:1737;55077:4;55187:16;:14;:16::i;:::-;55165:18;;:38;55161:143;;55226:67;55231:22;55255:37;55226:4;:67::i;55161:143::-;-1:-1:-1;;55358:19:10;:31;55354:75;;;55413:16;;55391:38;;55354:75;55471:23;55497:28;:26;:28::i;:::-;55471:54;;1490:4:11;55659:74:10;55664:48;55669:21;;55692:19;55664:4;:48::i;:::-;55714:18;55659:4;:74::i;:::-;:109;55655:208;;;55791:61;55796:15;55813:38;55791:4;:61::i;55655:208::-;55929:19;55909:16;;:39;55905:470;;56006:16;:14;:16::i;:::-;56001:126;;56049:63;56054:18;56074:37;56049:4;:63::i;56001:126::-;56197:16;;;56227:38;;;;56311:53;;;;;;;;;;;;;;;;;;;;;;;;;55905:470;;56439:18;56420:15;;:37;56416:283;;56527:15;;;56556:36;;;;56638:50;;;;;;;;;;;;;;;;;;;;;;;;;56416:283;;56721:14;56716:20;;71931:192;72002:11;;-1:-1:-1;;;72002:11:10;;;;71994:34;;;;;-1:-1:-1;;;71994:34:10;;;;;;;;;;;;-1:-1:-1;;;71994:34:10;;;;;;;;;;;;;;;72043:9;72038:49;;72054:11;;;;;;;;;-1:-1:-1;;;;;72054:11:10;-1:-1:-1;;;;;72054:31:10;;:33;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;72054:33:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;72054:33:10;;;;72038:49;-1:-1:-1;72097:11:10;:19;;-1:-1:-1;;;;72097:19:10;;;71931:192::o;72435:179::-;72511:4;72497:18;;-1:-1:-1;;;;72497:18:10;-1:-1:-1;;;72497:18:10;;;72564:9;72559:48;;72575:11;;;;;;;;;-1:-1:-1;;;;;72575:11:10;-1:-1:-1;;;;;72575:30:10;;:32;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;72559:48:10;72435:179;:::o;15134:1234::-;15242:11;;15195:9;;;;15267:17;15263:1099;;-1:-1:-1;;15456:27:10;;15436:18;;-1:-1:-1;15428:56:10;;15263:1099;15695:14;15712;:12;:14::i;:::-;15695:31;;15740:33;15787:23;;:::i;:::-;15824:17;15898:97;15913:9;15924:12;;15938:56;15943:13;;15958:35;15963:14;;15979:13;;15958:4;:35::i;15938:56::-;15898:14;:97::i;:::-;15856:139;-1:-1:-1;15856:139:10;-1:-1:-1;16024:18:10;16013:7;:29;;;;;;;;;16009:87;;16070:7;-1:-1:-1;16079:1:10;;-1:-1:-1;16062:19:10;;-1:-1:-1;;;;16062:19:10;16009:87;16136:50;16143:28;16173:12;16136:6;:50::i;:::-;16110:76;-1:-1:-1;16110:76:10;-1:-1:-1;16215:18:10;16204:7;:29;;;;;;;;;16200:87;;16261:7;-1:-1:-1;16270:1:10;;-1:-1:-1;16253:19:10;;-1:-1:-1;;;;16253:19:10;16200:87;-1:-1:-1;16329:21:10;16309:18;;-1:-1:-1;16329:21:10;-1:-1:-1;16301:50:10;;-1:-1:-1;;;16301:50:10;15134:1234;;;:::o;1670:865:3:-;1876:14;;1842:79;;;-1:-1:-1;;;1842:79:3;;-1:-1:-1;;;;;1876:14:3;;;1842:79;;;;;;;;;;;;;;;;;;;326:42:11;;1842:33:3;;:79;;;;;;;;;;;;;;326:42:11;1842:79:3;;;5:2:-1;;;;30:1;27;20:12;5:2;1842:79:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1842:79:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1842:79:3;1834:97;;;;;-1:-1:-1;;;1834:97:3;;;;;;;;;;;;-1:-1:-1;;;1834:97:3;;;;;;;;;;;;;;;2018:11;2014:40;;;2031:23;:21;:23::i;:::-;2099:25;2127:14;;-1:-1:-1;;;;;2188:32:3;;;-1:-1:-1;;;;;;2188:32:3;;;;;2345:81;;;;;;;;;;;;;;;;;2127:14;;;;;2316:122;;2338:4;;2401:24;;2345:81;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2345:81:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2345:81:3;;;-1:-1:-1;;26:21;;;22:32;6:49;;2345:81:3;;;49:4:-1;25:18;;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2316:122:3;;;;;;;;;;;-1:-1:-1;;;2316:122:3;;;;2345:81;;-1:-1:-1;2316:122:3;-1:-1:-1;2316:13:3;;-1:-1:-1;2316:122:3:i;:::-;-1:-1:-1;2513:14:3;;2476:52;;;-1:-1:-1;;;;;2476:52:3;;;;;2513:14;;;2476:52;;;;;;;;;;;;;;;;1670:865;;;;:::o;3925:2226:10:-;4097:11;;:60;;;-1:-1:-1;;;4097:60:10;;4133:4;4097:60;;;;-1:-1:-1;;;;;4097:60:10;;;;;;;;;;;;;;;;;;;;;;4023:4;;;;4097:11;;:27;;:60;;;;;;;;;;;;;;4023:4;4097:11;:60;;;5:2:-1;;;;30:1;27;20:12;5:2;4097:60:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4097:60:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4097:60:10;;-1:-1:-1;4171:12:10;;4167:142;;4206:92;4217:27;4246:42;4290:7;4206:10;:92::i;:::-;4199:99;;;;;4167:142;4372:3;-1:-1:-1;;;;;4365:10:10;:3;-1:-1:-1;;;;;4365:10:10;;4361:103;;;4398:55;4403:15;4420:32;4398:4;:55::i;4361:103::-;4538:22;-1:-1:-1;;;;;4578:14:10;;;;;;;4574:156;;;-1:-1:-1;;;4574:156:10;;;-1:-1:-1;;;;;;4687:23:10;;;;;;;:18;:23;;;;;;;;:32;;;;;;;;;;4574:156;4805:17;4832;4859;4886;4940:34;4948:17;4967:6;4940:7;:34::i;:::-;4914:60;;-1:-1:-1;4914:60:10;-1:-1:-1;4999:18:10;4988:7;:29;;;;;;;;;4984:123;;5040:56;5045:16;5063:32;5040:4;:56::i;:::-;5033:63;;;;;;;;;;4984:123;-1:-1:-1;;;;;5151:18:10;;;;;;:13;:18;;;;;;5143:35;;5171:6;5143:7;:35::i;:::-;5117:61;;-1:-1:-1;5117:61:10;-1:-1:-1;5203:18:10;5192:7;:29;;;;;;;;;5188:122;;5244:55;5249:16;5267:31;5244:4;:55::i;5188:122::-;-1:-1:-1;;;;;5354:18:10;;;;;;:13;:18;;;;;;5346:35;;5374:6;5346:7;:35::i;:::-;5320:61;;-1:-1:-1;5320:61:10;-1:-1:-1;5406:18:10;5395:7;:29;;;;;;;;;5391:120;;5447:53;5452:16;5470:29;5447:4;:53::i;5391:120::-;-1:-1:-1;;;;;5638:18:10;;;;;;;:13;:18;;;;;;:33;;;5681:18;;;;;;:33;;;-1:-1:-1;;5784:29:10;;5780:107;;-1:-1:-1;;;;;5829:23:10;;;;;;;:18;:23;;;;;;;;:32;;;;;;;;;:47;;;5780:107;5955:3;-1:-1:-1;;;;;5941:26:10;5950:3;-1:-1:-1;;;;;5941:26:10;-1:-1:-1;;;;;;;;;;;5960:6:10;5941:26;;;;;;;;;;;;;;;;;;-1:-1:-1;6129:14:10;;3925:2226;-1:-1:-1;;;;;;;;;;3925:2226:10:o;38013:593::-;38122:4;38128;38106:5;71531:30;71551:9;71531:19;:30::i;:::-;38144:10;38157:16;:14;:16::i;:::-;38144:29;-1:-1:-1;38187:29:10;;38183:257;;38358:67;38369:5;38363:12;;;;;;;;38377:47;38358:4;:67::i;:::-;38350:79;-1:-1:-1;38427:1:10;;-1:-1:-1;38350:79:10;;-1:-1:-1;38350:79:10;38183:257;38548:51;38565:10;38577:8;38587:11;38548:16;:51::i;:::-;38541:58;;;;;71571:1;71582:29;71601:9;71582:18;:29::i;:::-;38013:593;;;;;;:::o;528:335::-;664:11;;709:26;;;-1:-1:-1;;;709:26:10;;;;577:4;;-1:-1:-1;;;;;664:11:10;;;;709:24;;:26;;;;;;;;;;;;;;;664:11;709:26;;;5:2:-1;;;;30:1;27;20:12;5:2;709:26:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;709:26:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;709:26:10;-1:-1:-1;;;;;695:40:10;:10;:40;:79;;;;;739:18;-1:-1:-1;;;;;739:33:10;;:35;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;739:35:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;739:35:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;739:35:10;695:79;694:162;;;-1:-1:-1;780:10:10;326:42:11;780:32:10;:75;;;;;816:18;-1:-1:-1;;;;;816:37:10;;:39;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;816:39:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;816:39:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;816:39:10;687:169;;;528:335;:::o;2431:306:21:-;2508:9;2519:4;2536:13;2551:18;;:::i;:::-;2573:20;2583:1;2586:6;2573:9;:20::i;:::-;2535:58;;-1:-1:-1;2535:58:21;-1:-1:-1;2614:18:21;2607:3;:25;;;;;;;;;2603:71;;-1:-1:-1;2656:3:21;-1:-1:-1;2661:1:21;;-1:-1:-1;2648:15:21;;2603:71;2692:18;2712:17;2721:7;2712:8;:17::i;:::-;2684:46;;;;;;2431:306;;;;;;:::o;5238:166:2:-;5339:10;;5367:30;;;-1:-1:-1;;;5367:30:2;;5391:4;5367:30;;;;;;5285:4;;-1:-1:-1;;;;;5339:10:2;;;;5367:15;;:30;;;;;;;;;;;;;;;5339:10;5367:30;;;5:2:-1;;;;30:1;27;20:12;8568:149:20;8629:4;8650:33;8663:3;8658:9;;;;;;;;8674:4;8669:10;;;;;;;;8650:33;;;;;;;;;;;;;8681:1;8650:33;;;;;;;;;;;;;8706:3;8701:9;;;;;;;59995:1627:10;60062:4;60118:21;60188:16;:14;:16::i;:::-;60183:120;;60227:65;60232:18;60252:39;60227:4;:65::i;60183:120::-;60426:16;:14;:16::i;:::-;60404:18;;:38;60400:145;;60465:69;60470:22;60494:39;60465:4;:69::i;60400:145::-;60648:12;60631:14;:12;:14::i;:::-;:29;60627:150;;;60683:83;60688:29;60719:46;60683:4;:83::i;60627:150::-;60868:13;;60853:12;:28;60849:127;;;60904:61;60909:15;60926:38;60904:4;:61::i;60849:127::-;61210:33;61215:13;;61230:12;61210:4;:33::i;:::-;61314:13;:32;;;61191:52;-1:-1:-1;61463:39:10;61477:10;61489:12;61463:13;:39::i;:::-;61518:59;;;61534:10;61518:59;;;;;;;;;;;;;;;;;;;;;;;;;61600:14;61595:20;;26431:536;26522:4;26506:5;71531:30;71551:9;71531:19;:30::i;:::-;26538:10;26551:16;:14;:16::i;:::-;26538:29;-1:-1:-1;26581:29:10;;26577:246;;26751:61;26762:5;26756:12;;;;;;;;26770:41;26751:4;:61::i;26577:246::-;26920:40;26932:10;26944:1;26947:12;26920:11;:40::i;12788:1238::-;-1:-1:-1;;;;;13130:23:10;;12865:9;13130:23;;;:14;:23;;;;;13354:24;;12865:9;;;;;;;;13350:90;;-1:-1:-1;13407:18:10;;-1:-1:-1;13407:18:10;;-1:-1:-1;13399:30:10;;-1:-1:-1;;;13399:30:10;13350:90;13662:46;13670:14;:24;;;13696:11;;13662:7;:46::i;:::-;13629:79;;-1:-1:-1;13629:79:10;-1:-1:-1;13733:18:10;13722:7;:29;;;;;;;;;13718:79;;-1:-1:-1;13775:7:10;;-1:-1:-1;13784:1:10;;-1:-1:-1;13767:19:10;;-1:-1:-1;;13767:19:10;13718:79;13827:58;13835:19;13856:14;:28;;;13827:7;:58::i;:::-;13807:78;;-1:-1:-1;13807:78:10;-1:-1:-1;13910:18:10;13899:7;:29;;;;;;;;;13895:79;;-1:-1:-1;13952:7:10;;-1:-1:-1;13961:1:10;;-1:-1:-1;13944:19:10;;-1:-1:-1;;13944:19:10;13895:79;-1:-1:-1;13992:18:10;;-1:-1:-1;14012:6:10;-1:-1:-1;;;12788:1238:10;;;;:::o;62718:1424::-;62789:4;62845:21;62990:16;:14;:16::i;:::-;62968:18;;:38;62964:148;;63029:72;63034:22;63058:42;63029:4;:72::i;62964:148::-;63215:14;63198;:12;:14::i;:::-;:31;63194:155;;;63252:86;63257:29;63288:49;63252:4;:86::i;63194:155::-;63444:13;;63427:14;:30;63423:132;;;63480:64;63485:15;63502:41;63480:4;:64::i;63423:132::-;63791:35;63796:13;;63811:14;63791:4;:35::i;:::-;63899:13;:32;;;63772:54;-1:-1:-1;64048:49:10;326:42:11;64082:14:10;64048:13;:49::i;20737:546::-;20814:4;20820;20798:5;71531:30;71551:9;71531:19;:30::i;:::-;20836:10;20849:16;:14;:16::i;:::-;20836:29;-1:-1:-1;20879:29:10;;20875:249;;21050:59;21061:5;21055:12;;;;;;;;21069:39;21050:4;:59::i;20875:249::-;21243:33;21253:10;21265;21243:9;:33::i;3095:114:22:-;3148:4;3171:31;3176:1;3179;3171:31;;;;;;;;;;;;;-1:-1:-1;;;3171:31:22;;;:4;:31::i;1302:230:12:-;1358:9;1369:4;1394:1;1389;:6;1385:141;;-1:-1:-1;1419:18:12;;-1:-1:-1;1439:5:12;;;1411:34;;1385:141;-1:-1:-1;1484:27:12;;-1:-1:-1;1513:1:12;1476:39;;18030:2317:10;18161:4;18804:31;;:::i;:::-;18838:53;18843:35;;;;;;;;18858:18;18843:35;;;18880:10;18838:4;:53::i;:::-;18804:87;;18901:24;18928:54;18947:20;18969:12;;18928:18;:54::i;:::-;18901:81;;18992:20;19015:39;19020:19;19041:12;;19015:4;:39::i;:::-;18992:62;;19064:21;19088:101;19114:38;;;;;;;;19129:21;;19114:38;;;19154:19;19175:13;;19088:25;:101::i;:::-;19064:125;;19199:21;19223:95;19249:32;;;;;;;;19264:15;;19249:32;;;19283:19;19304:13;;19223:25;:95::i;:::-;19199:119;;19328:22;19353:97;19379:33;;;;;;;;19394:16;;19379:33;;;19414:19;19435:14;;19353:25;:97::i;:::-;19328:122;;19460:19;19482:73;19508:20;19530:11;;19543;;19482:25;:73::i;:::-;19752:18;:39;;;19801:11;:28;;;19839:12;:30;;;19879:13;:32;;;19921:13;:32;;;19963:14;:34;;;20059:79;;;;;;;;;;;;;;;;;;;;;;;;;;19460:95;;-1:-1:-1;20059:79:10;;;;;;;;;;20203:17;;20227:74;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;20227:74:10;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;20195:107:10;;;;-1:-1:-1;;;;;20203:17:10;;;;20227:74;;20195:107;;;;25:18:-1;20195:107:10;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;20195:107:10;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;-1:-1;20325:14:10;;-1:-1:-1;20320:20:10;;-1:-1:-1;20320:20:10;;20313:27;18030:2317;-1:-1:-1;;;;;;;;;;;;18030:2317:10:o;65247:1492::-;65319:4;65376:22;65522:16;:14;:16::i;:::-;65500:18;;:38;65496:149;;65561:73;65566:22;65590:43;65561:4;:73::i;65496:149::-;65748:14;65731;:12;:14::i;:::-;:31;65727:156;;;65785:87;65790:29;65821:50;65785:4;:87::i;65727:156::-;65980:14;;65963;:31;65959:134;;;66017:65;66022:15;66039:42;66017:4;:65::i;65959:134::-;66331:36;66336:14;;66352;66331:4;:36::i;:::-;66311:56;;66459:17;66442:14;:34;;;;66593:101;66654:11;;;;;;;;;-1:-1:-1;;;;;66654:11:10;-1:-1:-1;;;;;66623:50:10;;:52;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;66623:52:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;66623:52:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;66623:52:10;66679:14;66593:13;:101::i;50058:3037::-;50247:11;;:87;;;-1:-1:-1;;;50247:87:10;;50280:4;50247:87;;;;-1:-1:-1;;;;;50247:87:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;50176:4;;;;50247:11;;:24;;:87;;;;;;;;;;;;;;50176:4;50247:11;:87;;;5:2:-1;;;;30:1;27;20:12;5:2;50247:87:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;50247:87:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;50247:87:10;;-1:-1:-1;50348:12:10;;50344:149;;50383:99;50394:27;50423:49;50474:7;50383:10;:99::i;50344:149::-;50563:10;-1:-1:-1;;;;;50551:22:10;:8;-1:-1:-1;;;;;50551:22:10;;50547:144;;;50596:84;50601:26;50629:50;50596:4;:84::i;50547:144::-;50701:34;;:::i;:::-;-1:-1:-1;;;;;51065:23:10;;;;;;:13;:23;;;;;;51057:45;;51090:11;51057:7;:45::i;:::-;51031:22;;;51016:86;;;51017:4;51016:86;;;;;;;;;;;;;;;;;;;-1:-1:-1;51132:18:10;;-1:-1:-1;51116:12:10;;:34;;;;;;;;;51112:174;;51173:102;51184:16;51202:52;51261:4;:12;;;51256:18;;;;;;;;51173:10;:102::i;:::-;51166:109;;;;;;51112:174;51323:62;51328:11;51341:43;;;;;;;;4259:6:11;51341:43:10;;;51323:4;:62::i;:::-;51296:24;;;:89;;;51424:43;;51429:11;;51424:4;:43::i;:::-;51395:26;;;:72;51522:28;:26;:28::i;:::-;51493:25;;;51478:72;;;51479:4;51478:72;;;;;;;;;;;;;;;;;;;-1:-1:-1;51584:18:10;;-1:-1:-1;51568:12:10;;:34;;;;;;;;;51560:71;;;;;-1:-1:-1;;;51560:71:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;51669:88;51688:42;;;;;;;;51703:4;:25;;;51688:42;;;51732:4;:24;;;51669:18;:88::i;:::-;51642:24;;;:115;;;51797:13;;51792:45;;:4;:45::i;:::-;51768:21;;;:69;51874:11;;51887:24;;;;51869:43;;51874:11;51869:4;:43::i;:::-;51847:19;;;:65;-1:-1:-1;;;;;51974:25:10;;;;;;:13;:25;;;;;;52001:26;;;;51966:62;;51974:25;51966:7;:62::i;:::-;51938:24;;;51923:105;;;51924:4;51923:105;;;;;;;;;;;;;;;;;;;-1:-1:-1;52058:18:10;;-1:-1:-1;52042:12:10;;:34;;;;;;;;;52038:174;;52099:102;52110:16;52128:52;52187:4;:12;;;52182:18;;;;;;;52038:174;52424:21;;;;52408:13;:37;52469:19;;;;52455:11;:33;52524:22;;;;;-1:-1:-1;;;;;52498:23:10;;;-1:-1:-1;52498:23:10;;;:13;:23;;;;;;:48;;;;52584:24;;;;52556:25;;;;;;;;;;:52;;;;52691:26;;;;52660:58;;;;;;;52556:25;;52498:23;;-1:-1:-1;;;;;;;;;;;52660:58:10;;;;;;;;;;52767:24;;;;52733:59;;;;;;;52760:4;;-1:-1:-1;;;;;52733:59:10;;;-1:-1:-1;;;;;;;;;;;52733:59:10;;;;;;;;52836:24;;;;52862:21;;;;52807:77;;;52829:4;52807:77;;;;;;;;;;;;;;;;;;;;;;;;;;53073:14;53061:27;50058:3037;-1:-1:-1;;;;;;;50058:3037:10:o;32601:523::-;32682:4;32666:5;71531:30;71551:9;71531:19;:30::i;:::-;32698:10;32711:16;:14;:16::i;:::-;32698:29;-1:-1:-1;32741:29:10;;32737:246;;32911:61;32922:5;32916:12;;;;;;;;32930:41;32911:4;:61::i;32737:246::-;33080:37;33092:10;33104:12;33080:11;:37::i;25533:526::-;25614:4;25598:5;71531:30;71551:9;71531:19;:30::i;:::-;25630:10;25643:16;:14;:16::i;:::-;25630:29;-1:-1:-1;25673:29:10;;25669:246;;25843:61;25854:5;25848:12;;;;;;;25669:246;26012:40;26024:10;26036:12;26050:1;26012:11;:40::i;43181:986::-;43322:4;43328;43306:5;71531:30;71551:9;71531:19;:30::i;:::-;43344:10;43357:16;:14;:16::i;:::-;43344:29;-1:-1:-1;43387:29:10;;43383:266;;43563:71;43574:5;43568:12;;;;;;;;43582:51;43563:4;:71::i;:::-;43555:83;-1:-1:-1;43636:1:10;;-1:-1:-1;43555:83:10;;-1:-1:-1;43555:83:10;43383:266;43667:16;-1:-1:-1;;;;;43667:31:10;;:33;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;43667:33:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;43667:33:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;43667:33:10;;-1:-1:-1;43714:29:10;;43710:270;;43890:75;43901:5;43895:12;;;;;;;;43909:55;43890:4;:75::i;43710:270::-;44087:73;44108:10;44120:8;44130:11;44143:16;44087:20;:73::i;:::-;44080:80;;;;;71571:1;71582:29;71601:9;71582:18;:29::i;:::-;43181:986;;;;;;;:::o;39291:3373::-;39469:11;;:75;;;-1:-1:-1;;;39469:75:10;;39508:4;39469:75;;;;-1:-1:-1;;;;;39469:75:10;;;;;;;;;;;;;;;;;;;;;;39386:4;;;;;;39469:11;;;:30;;:75;;;;;;;;;;;;;;;39386:4;39469:11;:75;;;5:2:-1;;;;30:1;27;20:12;5:2;39469:75:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;39469:75:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;39469:75:10;;-1:-1:-1;39558:12:10;;39554:151;;39594:96;39605:27;39634:46;39682:7;39594:10;:96::i;:::-;39586:108;-1:-1:-1;39692:1:10;;-1:-1:-1;39586:108:10;;-1:-1:-1;39586:108:10;39554:151;39812:16;:14;:16::i;:::-;39790:18;;:38;39786:151;;39852:70;39857:22;39881:40;39852:4;:70::i;39786:151::-;39947:32;;:::i;:::-;-1:-1:-1;;;;;40090:24:10;;;;;;:14;:24;;;;;:38;;;40069:18;;;:59;40256:37;40105:8;40256:27;:37::i;:::-;40233:19;;;40218:75;;;40219:12;;;40218:75;;;;;;;;;;;;;;;;;;;-1:-1:-1;40323:18:10;;-1:-1:-1;40307:4:10;:12;;;:34;;;;;;;;;40303:190;;40365:113;40376:16;40394:63;40464:4;:12;;;40459:18;;;;;;;40365:113;40357:125;-1:-1:-1;40480:1:10;;-1:-1:-1;40357:125:10;;-1:-1:-1;;40357:125:10;40303:190;-1:-1:-1;;40572:11:10;:23;40568:153;;;40630:19;;;;40611:16;;;:38;40568:153;;;40680:16;;;:30;;;40568:153;41306:37;41319:5;41326:4;:16;;;41306:12;:37::i;:::-;41281:22;;;:62;;;41646:19;;;;41638:52;;:7;:52::i;:::-;41612:22;;;41597:93;;;41598:12;;;41597:93;;;;;;;;;;;;;;;;;;;-1:-1:-1;41724:18:10;;-1:-1:-1;41708:4:10;:12;;;:34;;;;;;;;;41700:105;;;;-1:-1:-1;;;41700:105:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41855:45;41863:12;;41877:4;:22;;;41855:7;:45::i;:::-;41831:20;;;41816:84;;;41817:12;;;41816:84;;;;;;;;;;;;;;;;;;;-1:-1:-1;41934:18:10;;-1:-1:-1;41918:4:10;:12;;;:34;;;;;;;;;41910:96;;;;-1:-1:-1;;;41910:96:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42123:22;;;;;;-1:-1:-1;;;;;42086:24:10;;;;;;;:14;:24;;;;;;;;;:59;;;42196:11;;42155:38;;;;:52;;;;42232:20;;;;42217:12;:35;;;42339:22;;;;42363;;42310:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42634:22;;;42617:14;;-1:-1:-1;42634:22:10;-1:-1:-1;;39291:3373:10;;;;;;;:::o;3355:118::-;3416:4;326:42:11;-1:-1:-1;;;;;3439:25:10;;:27;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;1926:263:12;1997:9;2008:4;2025:14;2041:8;2053:13;2061:1;2064;2053:7;:13::i;:::-;2024:42;;-1:-1:-1;2024:42:12;-1:-1:-1;2089:18:12;2081:4;:26;;;;;;;;;2077:73;;-1:-1:-1;2131:4:12;-1:-1:-1;2137:1:12;;-1:-1:-1;2123:16:12;;2077:73;2167:15;2175:3;2180:1;2167:7;:15::i;:::-;2160:22;;;;;;1926:263;;;;;;:::o;771:503:21:-;832:9;843:10;;:::i;:::-;866:14;882:20;906:22;914:3;409:4:22;906:7:21;:22::i;:::-;865:63;;-1:-1:-1;865:63:21;-1:-1:-1;950:18:21;942:4;:26;;;;;;;;;938:90;;-1:-1:-1;998:18:21;;;;;;;;;-1:-1:-1;998:18:21;;992:4;;-1:-1:-1;998:18:21;-1:-1:-1;984:33:21;;938:90;1039:14;1055:13;1072:31;1080:15;1097:5;1072:7;:31::i;:::-;1038:65;;-1:-1:-1;1038:65:21;-1:-1:-1;1125:18:21;1117:4;:26;;;;;;;;;1113:90;;-1:-1:-1;1173:18:21;;;;;;;;;-1:-1:-1;1173:18:21;;1167:4;;-1:-1:-1;1173:18:21;-1:-1:-1;1159:33:21;;-1:-1:-1;;1159:33:21;1113:90;1241:25;;;;;;;;;;;;-1:-1:-1;;1241:25:21;;-1:-1:-1;771:503:21;-1:-1:-1;;;;;;771:503:21:o;1096:186:3:-;1213:63;;73327:765:10;73431:12;73456;73470:23;73497:6;-1:-1:-1;;;;;73497:11:10;73509:4;73497:17;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;73497:17:10;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;73455:59:10;;;;73530:7;73525:533;;73623:17;;:21;73619:429;;73881:10;73875:17;73941:15;73928:10;73924:2;73920:19;73913:44;73830:145;74020:12;74013:20;;-1:-1:-1;;;74013:20:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;74013:20:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;73619:429;74075:10;73327:765;-1:-1:-1;;;;;73327:765:10:o;8835:241:20:-;8920:4;8941:43;8954:3;8949:9;;;;;;;;8965:4;8960:10;;;;;;;;8941:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;9009:27;9002:3;:34;;;;;;;;;:67;;9065:3;9060:9;;;;;;;;9002:67;;;-1:-1:-1;9039:4:20;:18;;8995:74;-1:-1:-1;;8835:241:20:o;1612:250:12:-;1668:9;;1704:5;;;1724:6;;;1720:136;;1754:18;;-1:-1:-1;1774:1:12;-1:-1:-1;1746:30:12;;1720:136;-1:-1:-1;1815:26:12;;-1:-1:-1;1843:1:12;;-1:-1:-1;1807:38:12;;1977:346:21;2046:9;2057:10;;:::i;:::-;2080:14;2096:19;2119:27;2127:1;:10;;;2139:6;2119:7;:27::i;:::-;2079:67;;-1:-1:-1;2079:67:21;-1:-1:-1;2168:18:21;2160:4;:26;;;;;;;;;2156:90;;-1:-1:-1;2216:18:21;;;;;;;;;-1:-1:-1;2216:18:21;;2210:4;;-1:-1:-1;2216:18:21;-1:-1:-1;2202:33:21;;2156:90;2284:31;;;;;;;;;;;;-1:-1:-1;;2284:31:21;;-1:-1:-1;1977:346:21;-1:-1:-1;;;;1977:346:21:o;788:210:22:-;968:12;409:4;968:23;;;788:210::o;3712:118::-;3765:4;3788:35;3793:1;3796;3788:35;;;;;;;;;;;;;-1:-1:-1;;;3788:35:22;;;:4;:35::i;7357:223:2:-;7452:91;;;-1:-1:-1;;;;;7452:91:2;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;7452:91:2;;;;;;;25:18:-1;;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;7432:141:2;;;;;;;;;;;;;;;;;;:19;:141::i;:::-;7357:223;;:::o;27836:4504:10:-;27943:4;27967:19;;;:42;;-1:-1:-1;27990:19:10;;27967:42;27959:107;;;;-1:-1:-1;;;27959:107:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28077:27;;:::i;:::-;28218:28;:26;:28::i;:::-;28189:25;;;28174:72;;;28175:12;;;28174:72;;;;;;;;;;;;;;;;;;;-1:-1:-1;28276:18:10;;-1:-1:-1;28260:4:10;:12;;;:34;;;;;;;;;28256:166;;28317:94;28328:16;28346:44;28397:4;:12;;;28392:18;;;;;;;28317:94;28310:101;;;;;28256:166;28473:18;;28469:1265;;28743:17;;;:34;;;28846:42;;;;;;;;28861:25;;;;28846:42;;28828:77;;28763:14;28828:17;:77::i;:::-;28807:17;;;28792:113;;;28793:12;;;28792:113;;;;;;;;;;;;;;;;;;;-1:-1:-1;28939:18:10;;-1:-1:-1;28923:4:10;:12;;;:34;;;;;;;;;28919:183;;28984:103;28995:16;29013:53;29073:4;:12;;;29068:18;;;;;;;28919:183;28469:1265;;;29396:82;29419:14;29435:42;;;;;;;;29450:4;:25;;;29435:42;;;29396:22;:82::i;:::-;29375:17;;;29360:118;;;29361:12;;;29360:118;;;;;;;;;;;;;;;;;;;-1:-1:-1;29512:18:10;;-1:-1:-1;29496:4:10;:12;;;:34;;;;;;;;;29492:183;;29557:103;29568:16;29586:53;29646:4;:12;;;29641:18;;;;;;;29492:183;29689:17;;;:34;;;28469:1265;29800:11;;29851:17;;;;29800:69;;;-1:-1:-1;;;29800:69:10;;29834:4;29800:69;;;;-1:-1:-1;;;;;29800:69:10;;;;;;;;;;;;;;;;29785:12;;29800:11;;;;;:25;;:69;;;;;;;;;;;;;;;29785:12;29800:11;:69;;;5:2:-1;;;;30:1;27;20:12;5:2;29800:69:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29800:69:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;29800:69:10;;-1:-1:-1;29883:12:10;;29879:140;;29918:90;29929:27;29958:40;30000:7;29918:10;:90::i;:::-;29911:97;;;;;;29879:140;30126:16;:14;:16::i;:::-;30104:18;;:38;30100:140;;30165:64;30170:22;30194:34;30165:4;:64::i;30100:140::-;30528:39;30536:11;;30549:4;:17;;;30528:7;:39::i;:::-;30505:19;;;30490:77;;;30491:12;;;30490:77;;;;;;;;;;;;;;;;;;;-1:-1:-1;30597:18:10;;-1:-1:-1;30581:4:10;:12;;;:34;;;;;;;;;30577:176;;30638:104;30649:16;30667:54;30728:4;:12;;;30723:18;;;;;;;30577:176;-1:-1:-1;;;;;30811:23:10;;;;;;:13;:23;;;;;;30836:17;;;;30803:51;;30811:23;30803:7;:51::i;:::-;30778:21;;;30763:91;;;30764:12;;;30763:91;;;;;;;;;;;;;;;;;;;-1:-1:-1;30884:18:10;;-1:-1:-1;30868:4:10;:12;;;:34;;;;;;;;;30864:179;;30925:107;30936:16;30954:57;31018:4;:12;;;31013:18;;;;;;;30864:179;31138:4;:17;;;31121:14;:12;:14::i;:::-;:34;31117:153;;;31178:81;31183:29;31214:44;31178:4;:81::i;31117:153::-;31476:19;;;;31462:11;:33;31531:21;;;;-1:-1:-1;;;;;31505:23:10;;;;;;:13;:23;;;;;:47;31944:17;;;;31920:42;;31519:8;;31920:13;:42::i;:::-;32071:17;;;;32037:52;;;;;;;32064:4;;-1:-1:-1;;;;;32037:52:10;;;-1:-1:-1;;;;;;;;;;;32037:52:10;;;;;;;;32121:17;;;;32140;;;;;32104:54;;;-1:-1:-1;;;;;32104:54:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32208:11;;32258:17;;;;32277;;;;32208:87;;;-1:-1:-1;;;32208:87:10;;32241:4;32208:87;;;;-1:-1:-1;;;;;32208:87:10;;;;;;;;;;;;;;;;;;;;;;:11;;;;;:24;;:87;;;;;:11;;:87;;;;;;;:11;;:87;;;5:2:-1;;;;30:1;27;20:12;5:2;32208:87:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;32318:14:10;;-1:-1:-1;32313:20:10;;-1:-1:-1;;32313:20:10;;32306:27;27836:4504;-1:-1:-1;;;;;;27836:4504:10:o;542:331:12:-;598:9;;629:6;625:67;;-1:-1:-1;659:18:12;;-1:-1:-1;659:18:12;651:30;;625:67;711:5;;;715:1;711;:5;:1;731:5;;;;;:10;727:140;;-1:-1:-1;765:26:12;;-1:-1:-1;793:1:12;;-1:-1:-1;757:38:12;;727:140;834:18;;-1:-1:-1;854:1:12;-1:-1:-1;826:30:12;;963:209;1019:9;;1050:6;1046:75;;-1:-1:-1;1080:26:12;;-1:-1:-1;1108:1:12;1072:38;;1046:75;1139:18;1163:1;1159;:5;;;;;;1131:34;;;;963:209;;;;;:::o;21974:3216:10:-;22120:11;;:58;;;-1:-1:-1;;;22120:58:10;;22152:4;22120:58;;;;-1:-1:-1;;;;;22120:58:10;;;;;;;;;;;;;;;22044:4;;;;;;22120:11;;;:23;;:58;;;;;;;;;;;;;;;22044:4;22120:11;:58;;;5:2:-1;;;;30:1;27;20:12;5:2;22120:58:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22120:58:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22120:58:10;;-1:-1:-1;22192:12:10;;22188:143;;22228:88;22239:27;22268:38;22308:7;22228:10;:88::i;:::-;22220:100;-1:-1:-1;22318:1:10;;-1:-1:-1;22220:100:10;;-1:-1:-1;22220:100:10;22188:143;22438:16;:14;:16::i;:::-;22416:18;;:38;22412:143;;22478:62;22483:22;22507:32;22478:4;:62::i;22412:143::-;22565:25;;:::i;:::-;22645:28;:26;:28::i;:::-;22616:25;;;22601:72;;;22602:12;;;22601:72;;;;;;;;;;;;;;;;;;;-1:-1:-1;22703:18:10;;-1:-1:-1;22687:4:10;:12;;;:34;;;;;;;;;22683:169;;22745:92;22756:16;22774:42;22823:4;:12;;;22818:18;;;;;;;22745:92;22737:104;-1:-1:-1;22839:1:10;;-1:-1:-1;22737:104:10;;-1:-1:-1;;22737:104:10;22683:169;23809:32;23822:6;23830:10;23809:12;:32::i;:::-;23785:21;;;:56;;;24107:42;;;;;;;;24122:25;;;;24107:42;;24061:89;;23785:56;24061:22;:89::i;:::-;24042:15;;;24027:123;;;24028:12;;;24027:123;;;;;;;;;;;;;;;;;;;-1:-1:-1;24184:18:10;;-1:-1:-1;24168:4:10;:12;;;:34;;;;;;;;;24160:79;;;;;-1:-1:-1;;;24160:79:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24520:34;24525:11;;24538:4;:15;;;24520:4;:34::i;:::-;24498:19;;;:56;-1:-1:-1;;;;;24594:21:10;;;;;;:13;:21;;;;;;24617:15;;;;24589:44;;24594:21;24589:4;:44::i;:::-;24565:21;;;:68;;;24723:19;;;;24709:11;:33;-1:-1:-1;;;;;24752:21:10;;;;;;:13;:21;;;;;;;;;:45;;;;24883:21;;;;24906:15;;;;;24870:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24969:15;;;;24937:48;;;;;;;-1:-1:-1;;;;;24937:48:10;;;24954:4;;-1:-1:-1;;;;;;;;;;;24937:48:10;;;;;;;;25035:11;;25081:21;;;;25104:15;;;;25035:85;;;-1:-1:-1;;;25035:85:10;;25066:4;25035:85;;;;-1:-1:-1;;;;;25035:85:10;;;;;;;;;;;;;;;;;;;;;;:11;;;;;:22;;:85;;;;;:11;;:85;;;;;;;:11;;:85;;;5:2:-1;;;;30:1;27;20:12;5:2;25035:85:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;25144:14:10;;-1:-1:-1;25139:20:10;;-1:-1:-1;;25139:20:10;;25161:4;:21;;;25131:52;;;;;;21974:3216;;;;;:::o;3215:175:22:-;3296:4;3321:5;;;3352:12;3344:6;;;;3336:29;;;;-1:-1:-1;;;3336:29:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;4160:131:22;4219:10;;:::i;:::-;4248:36;;;;;;;;4263:19;4268:1;:10;;;4280:1;4263:4;:19::i;:::-;4248:36;;4241:43;4160:131;-1:-1:-1;;;4160:131:22:o;1106:171::-;1184:4;1200:18;;:::i;:::-;1221:15;1226:1;1229:6;1221:4;:15::i;:::-;1200:36;;1253:17;1262:7;1253:8;:17::i;1417:205::-;1515:4;1531:18;;:::i;:::-;1552:15;1557:1;1560:6;1552:4;:15::i;:::-;1531:36;;1584:31;1589:17;1598:7;1589:8;:17::i;:::-;1608:6;1584:4;:31::i;4297:119::-;4356:4;409;4379:19;4384:1;4387;:10;;;4379:4;:19::i;:::-;:30;;;;;;;4297:119;-1:-1:-1;;;4297:119:22:o;33537:3334:10:-;33693:11;;:64;;;-1:-1:-1;;;33693:64:10;;33727:4;33693:64;;;;-1:-1:-1;;;;;33693:64:10;;;;;;;;;;;;;;;33621:4;;;;33693:11;;:25;;:64;;;;;;;;;;;;;;33621:4;33693:11;:64;;;5:2:-1;;;;30:1;27;20:12;5:2;33693:64:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;33693:64:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;33693:64:10;;-1:-1:-1;33771:12:10;;33767:140;;33806:90;33817:27;33846:40;33888:7;33806:10;:90::i;:::-;33799:97;;;;;33767:140;34014:16;:14;:16::i;:::-;33992:18;;:38;33988:140;;34053:64;34058:22;34082:34;34053:4;:64::i;33988:140::-;34213:14;34230;:12;:14::i;:::-;34213:31;;34271:12;34259:9;:24;34255:136;;;34306:74;34311:29;34342:37;34306:4;:74::i;:::-;34299:81;;;;;;34255:136;34401:27;;:::i;:::-;34709:37;34737:8;34709:27;:37::i;:::-;34686:19;;;34671:75;;;34672:4;34671:75;;;;;;;;;;;;;;;;;;;-1:-1:-1;34776:18:10;;-1:-1:-1;34760:12:10;;:34;;;;;;;;;34756:179;;34817:107;34828:16;34846:57;34910:4;:12;;;34905:18;;;;;;;34817:107;34810:114;;;;;;;34756:179;34986:42;34994:4;:19;;;35015:12;34986:7;:42::i;:::-;34960:22;;;34945:83;;;34946:4;34945:83;;;;;;;;;;;;;;;;;;;-1:-1:-1;35058:18:10;;-1:-1:-1;35042:12:10;;:34;;;;;;;;;35038:186;;35099:114;35110:16;35128:64;35199:4;:12;;;35194:18;;;;;;;35038:186;35301:11;;35347:22;;;;;35301:69;;-1:-1:-1;;;35301:69:10;;35340:4;35301:69;;;;;;;;;;;;;-1:-1:-1;;;;;35301:11:10;;;;:30;;:69;;;;;;;;;;;;;;;:11;;:69;;;5:2:-1;;;;30:1;27;20:12;5:2;35301:69:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;35301:69:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;35301:69:10;;-1:-1:-1;35384:12:10;;35380:140;;35419:90;35430:27;35459:40;35501:7;35419:10;:90::i;35380:140::-;35569:35;35577:12;;35591;35569:7;:35::i;:::-;35545:20;;;35530:74;;;35531:4;35530:74;;;;;;;;;;;;;;;;;;;-1:-1:-1;35634:18:10;;-1:-1:-1;35618:12:10;;:34;;;;;;;;;35614:177;;35675:105;35686:16;35704:55;35766:4;:12;;;35761:18;;;;;;;35614:177;36024:22;;;;;-1:-1:-1;;;;;35987:24:10;;;;;;:14;:24;;;;;;:59;;;36097:11;;36056:38;;;;:52;36133:20;;;;36118:12;:35;36517:37;36002:8;36541:12;36517:13;:37::i;:::-;36638:22;;;;;36662:20;;;;;36607:76;;-1:-1:-1;;;;;36607:76:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36849:14;36837:27;33537:3334;-1:-1:-1;;;;;;33537:3334:10:o;44768:3544::-;44987:11;;:111;;;-1:-1:-1;;;44987:111:10;;45030:4;44987:111;;;;-1:-1:-1;;;;;44987:111:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44906:4;;;;;;44987:11;;;:34;;:111;;;;;;;;;;;;;;;44906:4;44987:11;:111;;;5:2:-1;;;;30:1;27;20:12;5:2;44987:111:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;44987:111:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;44987:111:10;;-1:-1:-1;45112:12:10;;45108:148;;45148:93;45159:27;45188:43;45233:7;45148:10;:93::i;:::-;45140:105;-1:-1:-1;45243:1:10;;-1:-1:-1;45140:105:10;;-1:-1:-1;45140:105:10;45108:148;45363:16;:14;:16::i;:::-;45341:18;;:38;45337:148;;45403:67;45408:22;45432:37;45403:4;:67::i;45337:148::-;45628:16;:14;:16::i;:::-;45587;-1:-1:-1;;;;;45587:35:10;;:37;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;45587:37:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;45587:37:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;45587:37:10;:57;45583:178;;45668:78;45673:22;45697:48;45668:4;:78::i;45583:178::-;45831:10;-1:-1:-1;;;;;45819:22:10;:8;-1:-1:-1;;;;;45819:22:10;;45815:143;;;45865:78;45870:26;45898:44;45865:4;:78::i;45815:143::-;46010:16;46006:145;;46050:86;46055:36;46093:42;46050:4;:86::i;46006:145::-;-1:-1:-1;;46204:11:10;:23;46200:156;;;46251:90;46256:36;46294:46;46251:4;:90::i;46200:156::-;46408:21;46431:22;46457:51;46474:10;46486:8;46496:11;46457:16;:51::i;:::-;46407:101;;-1:-1:-1;46407:101:10;-1:-1:-1;46522:40:10;;46518:161;;46586:78;46597:16;46591:23;;;;;;;;46616:47;46586:4;:78::i;:::-;46578:90;-1:-1:-1;46666:1:10;;-1:-1:-1;46578:90:10;;-1:-1:-1;;;46578:90:10;46518:161;46929:11;;:102;;;-1:-1:-1;;;46929:102:10;;46979:4;46929:102;;;;-1:-1:-1;;;;;46929:102:10;;;;;;;;;;;;;;;46886:21;;;;46929:11;;;:41;;:102;;;;;;;;;;;;:11;:102;;;5:2:-1;;;;30:1;27;20:12;5:2;46929:102:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;46929:102:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;46929:102:10;;;;;;;;;-1:-1:-1;46929:102:10;-1:-1:-1;47049:40:10;;47041:104;;;;-1:-1:-1;;;47041:104:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;47276:11;47236:16;-1:-1:-1;;;;;47236:26:10;;47263:8;47236:36;;;;;;;;;;;;;-1:-1:-1;;;;;47236:36:10;-1:-1:-1;;;;;47236:36:10;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;47236:36:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;47236:36:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;47236:36:10;:51;;47228:88;;;;;-1:-1:-1;;;47228:88:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;47442:15;-1:-1:-1;;;;;47471:42:10;;47508:4;47471:42;47467:250;;;47542:63;47564:4;47571:10;47583:8;47593:11;47542:13;:63::i;:::-;47529:76;;47467:250;;;47649:57;;;-1:-1:-1;;;47649:57:10;;-1:-1:-1;;;;;47649:57:10;;;;;;;;;;;;;;;;;;;;;;:22;;;;;;:57;;;;;;;;;;;;;;;-1:-1:-1;47649:22:10;:57;;;5:2:-1;;;;30:1;27;20:12;5:2;47649:57:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;47649:57:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;47649:57:10;;-1:-1:-1;47467:250:10;47820:34;;47812:67;;;;;-1:-1:-1;;;47812:67:10;;;;;;;;;;;;-1:-1:-1;;;47812:67:10;;;;;;;;;;;;;;;47941:96;;;-1:-1:-1;;;;;47941:96:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48270:14;48257:48;-1:-1:-1;48287:17:10;;-1:-1:-1;;;;;;44768:3544:10;;;;;;;;:::o;6010:654:2:-;6129:10;;6114:51;;;-1:-1:-1;;;6114:51:2;;6159:4;6114:51;;;;;;6077:4;;;;-1:-1:-1;;;;;6129:10:2;;;;6114:36;;:51;;;;;;;;;;;;;;;6129:10;6114:51;;;5:2:-1;;;;30:1;27;20:12;5:2;6114:51:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6114:51:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6114:51:2;6195:112;;;-1:-1:-1;;;;;6195:112:2;;;;;;6293:4;6195:112;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;6195:112:2;;;;;;6114:51;25:18:-1;;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;6175:161:2;;;;;;;;;;;;;;;;6114:51;;-1:-1:-1;6175:161:2;;6195:112;6175:19;:161::i;:::-;6446:10;;6431:51;;;-1:-1:-1;;;6431:51:2;;6476:4;6431:51;;;;;;6411:17;;-1:-1:-1;;;;;6446:10:2;;6431:36;;:51;;;;;;;;;;;;;;6446:10;6431:51;;;5:2:-1;;;;30:1;27;20:12;5:2;6431:51:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6431:51:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6431:51:2;;-1:-1:-1;6500:29:2;;;;6492:68;;;;;-1:-1:-1;;;6492:68:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;6577:28;;6010:654;-1:-1:-1;;;6010:654:2:o;3836:155:22:-;3917:4;3949:12;3941:6;;;;3933:29;;;;-1:-1:-1;;;3933:29:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;3933:29:22;-1:-1:-1;;;3979:5:22;;;3836:155::o;7978:263:2:-;8113:10;;8073:23;;8099:45;;-1:-1:-1;;;;;8113:10:2;8125:4;8131:12;8099:13;:45::i;:::-;8158:17;;8073:71;;-1:-1:-1;8158:21:2;8154:80;;8200:10;8189:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8189:30:2;8221:12;;8181:53;;;;-1:-1:-1;;;8181:53:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;4423:330:21;4511:9;4522:4;4539:13;4554:19;;:::i;:::-;4577:31;4592:6;4600:7;4577:14;:31::i;4877:120:22:-;4930:4;4953:37;4958:1;4961;4953:37;;;;;;;;;;;;;;;;;:4;:37::i;3712:605:21:-;3792:9;3803:10;;:::i;:::-;4100:14;4116;4134:25;409:4:22;4152:6:21;4134:7;:25::i;:::-;4099:60;;-1:-1:-1;4099:60:21;-1:-1:-1;4181:18:21;4173:4;:26;;;;;;;;;4169:90;;-1:-1:-1;4229:18:21;;;;;;;;;-1:-1:-1;4229:18:21;;4223:4;;-1:-1:-1;4229:18:21;-1:-1:-1;4215:33:21;;4169:90;4275:35;4282:9;4293:7;:16;;;4275:6;:35::i;5003:243:22:-;5084:4;5104:6;;;:16;;-1:-1:-1;5114:6:22;;5104:16;5100:55;;;-1:-1:-1;5143:1:22;5136:8;;5100:55;5173:5;;;5177:1;5173;:5;:1;5196:5;;;;;:10;5208:12;5188:33;;;;;-1:-1:-1;;;5188:33:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;194:3704:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;194:3704:3;;;-1:-1:-1;194:3704:3;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;194:3704:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;194:3704:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;194:3704:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;194:3704:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;194:3704:3;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;"},"methodIdentifiers":{"_becomeImplementation(bytes)":"56e67728","_delegateCompLikeTo(address)":"7f1e06be","_prepare()":"1db78944","_reduceReserves(uint256)":"601a0bf1","_setAdminFee(uint256)":"91dd36c6","_setImplementationSafe(address,bool,bytes)":"50d85b73","_setInterestRateModel(address)":"f2b3abbd","_setNameAndSymbol(string,string)":"34154d4c","_setReserveFactor(uint256)":"fca7820b","_withdrawAdminFees(uint256)":"a7b820df","_withdrawFuseFees(uint256)":"a03dce8d","accrualBlockNumber()":"6c540baf","accrueInterest()":"a6afed95","adminFeeMantissa()":"8d02d9a1","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","balanceOfUnderlying(address)":"3af9e669","borrow(uint256)":"c5ebeaec","borrowBalanceCurrent(address)":"17bfdfbc","borrowBalanceStored(address)":"95dd9193","borrowIndex()":"aa5af0fd","borrowRatePerBlock()":"f8f9da28","comptroller()":"5fe3b567","decimals()":"313ce567","exchangeRateCurrent()":"bd6d894d","exchangeRateStored()":"182df0f5","fuseFeeMantissa()":"dbfe7c19","getAccountSnapshot(address)":"c37f68e2","getCash()":"3b1d21a2","implementation()":"5c60da1b","initialize(address,address,address,string,string,uint256,uint256)":"a0b0d289","initialize(address,address,uint256,string,string,uint8,uint256,uint256)":"0f8855e8","interestRateModel()":"f3fdb15a","isCEther()":"ac784ddc","isCToken()":"fe9c44ae","liquidateBorrow(address,uint256,address)":"f5e3c462","mint(uint256)":"a0712d68","name()":"06fdde03","protocolSeizeShareMantissa()":"6752e702","redeem(uint256)":"db006a75","redeemUnderlying(uint256)":"852a12e3","repayBorrow(uint256)":"0e752702","repayBorrowBehalf(address,uint256)":"2608f818","reserveFactorMantissa()":"173b9904","seize(address,address,uint256)":"b2a02ff1","supplyRatePerBlock()":"ae9d70b0","symbol()":"95d89b41","totalAdminFees()":"61feacff","totalBorrows()":"47bd3718","totalBorrowsCurrent()":"73acee98","totalFuseFees()":"dc028ab1","totalReserves()":"8f840ddd","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","underlying()":"6f307dc3"}},"metadata":"{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"cashPrior\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"interestAccumulated\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"borrowIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalBorrows\",\"type\":\"uint256\"}],\"name\":\"AccrueInterest\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"borrowAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"accountBorrows\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalBorrows\",\"type\":\"uint256\"}],\"name\":\"Borrow\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"error\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"info\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"detail\",\"type\":\"uint256\"}],\"name\":\"Failure\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"liquidator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"repayAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"cTokenCollateral\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"seizeTokens\",\"type\":\"uint256\"}],\"name\":\"LiquidateBorrow\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"mintAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"mintTokens\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldAdminFeeMantissa\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newAdminFeeMantissa\",\"type\":\"uint256\"}],\"name\":\"NewAdminFee\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract ComptrollerInterface\",\"name\":\"oldComptroller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract ComptrollerInterface\",\"name\":\"newComptroller\",\"type\":\"address\"}],\"name\":\"NewComptroller\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldFuseFeeMantissa\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newFuseFeeMantissa\",\"type\":\"uint256\"}],\"name\":\"NewFuseFee\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldImplementation\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"NewImplementation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract InterestRateModel\",\"name\":\"oldInterestRateModel\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract InterestRateModel\",\"name\":\"newInterestRateModel\",\"type\":\"address\"}],\"name\":\"NewMarketInterestRateModel\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldReserveFactorMantissa\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newReserveFactorMantissa\",\"type\":\"uint256\"}],\"name\":\"NewReserveFactor\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"redeemer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"redeemAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"redeemTokens\",\"type\":\"uint256\"}],\"name\":\"Redeem\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"repayAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"accountBorrows\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalBorrows\",\"type\":\"uint256\"}],\"name\":\"RepayBorrow\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"benefactor\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"addAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newTotalReserves\",\"type\":\"uint256\"}],\"name\":\"ReservesAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reduceAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newTotalReserves\",\"type\":\"uint256\"}],\"name\":\"ReservesReduced\",\"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\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"_becomeImplementation\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"compLikeDelegatee\",\"type\":\"address\"}],\"name\":\"_delegateCompLikeTo\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"_prepare\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"reduceAmount\",\"type\":\"uint256\"}],\"name\":\"_reduceReserves\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newAdminFeeMantissa\",\"type\":\"uint256\"}],\"name\":\"_setAdminFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation_\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"allowResign\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"becomeImplementationData\",\"type\":\"bytes\"}],\"name\":\"_setImplementationSafe\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contract InterestRateModel\",\"name\":\"newInterestRateModel\",\"type\":\"address\"}],\"name\":\"_setInterestRateModel\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"}],\"name\":\"_setNameAndSymbol\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newReserveFactorMantissa\",\"type\":\"uint256\"}],\"name\":\"_setReserveFactor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"withdrawAmount\",\"type\":\"uint256\"}],\"name\":\"_withdrawAdminFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"withdrawAmount\",\"type\":\"uint256\"}],\"name\":\"_withdrawFuseFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"accrualBlockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"accrueInterest\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"adminFeeMantissa\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOfUnderlying\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"borrowAmount\",\"type\":\"uint256\"}],\"name\":\"borrow\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"borrowBalanceCurrent\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"borrowBalanceStored\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"borrowIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"borrowRatePerBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"comptroller\",\"outputs\":[{\"internalType\":\"contract ComptrollerInterface\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"exchangeRateCurrent\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"exchangeRateStored\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"fuseFeeMantissa\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getAccountSnapshot\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getCash\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contract ComptrollerInterface\",\"name\":\"comptroller_\",\"type\":\"address\"},{\"internalType\":\"contract InterestRateModel\",\"name\":\"interestRateModel_\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"initialExchangeRateMantissa_\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"decimals_\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"reserveFactorMantissa_\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"adminFeeMantissa_\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"underlying_\",\"type\":\"address\"},{\"internalType\":\"contract ComptrollerInterface\",\"name\":\"comptroller_\",\"type\":\"address\"},{\"internalType\":\"contract InterestRateModel\",\"name\":\"interestRateModel_\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"reserveFactorMantissa_\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"adminFeeMantissa_\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"interestRateModel\",\"outputs\":[{\"internalType\":\"contract InterestRateModel\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isCEther\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isCToken\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"repayAmount\",\"type\":\"uint256\"},{\"internalType\":\"contract CTokenInterface\",\"name\":\"cTokenCollateral\",\"type\":\"address\"}],\"name\":\"liquidateBorrow\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"mintAmount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"protocolSeizeShareMantissa\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"redeemTokens\",\"type\":\"uint256\"}],\"name\":\"redeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"redeemAmount\",\"type\":\"uint256\"}],\"name\":\"redeemUnderlying\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"repayAmount\",\"type\":\"uint256\"}],\"name\":\"repayBorrow\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"repayAmount\",\"type\":\"uint256\"}],\"name\":\"repayBorrowBehalf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"reserveFactorMantissa\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"liquidator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"seizeTokens\",\"type\":\"uint256\"}],\"name\":\"seize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"supplyRatePerBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalAdminFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalBorrows\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"totalBorrowsCurrent\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalFuseFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalReserves\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"underlying\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Compound\",\"methods\":{\"_becomeImplementation(bytes)\":{\"params\":{\"data\":\"The encoded bytes data for any initialization\"}},\"_delegateCompLikeTo(address)\":{\"details\":\"CTokens whose underlying are not CompLike should revert here\",\"params\":{\"compLikeDelegatee\":\"The address to delegate votes to\"}},\"_prepare()\":{\"details\":\"Checks comptroller.autoImplementation and upgrades the implementation if necessary\"},\"_reduceReserves(uint256)\":{\"params\":{\"reduceAmount\":\"Amount of reduction to reserves\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"_setAdminFee(uint256)\":{\"details\":\"Admin function to accrue interest and set a new admin fee\",\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"_setImplementationSafe(address,bool,bytes)\":{\"params\":{\"allowResign\":\"Flag to indicate whether to call _resignImplementation on the old implementation\",\"becomeImplementationData\":\"The encoded bytes data to be passed to _becomeImplementation\",\"implementation_\":\"The address of the new implementation for delegation\"}},\"_setInterestRateModel(address)\":{\"details\":\"Admin function to accrue interest and update the interest rate model\",\"params\":{\"newInterestRateModel\":\"the new interest rate model to use\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"_setNameAndSymbol(string,string)\":{\"details\":\"Admin function to update the cToken ERC20 name and symbol\",\"params\":{\"_name\":\"the new ERC20 token name to use\",\"_symbol\":\"the new ERC20 token symbol to use\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"_setReserveFactor(uint256)\":{\"details\":\"Admin function to accrue interest and set a new reserve factor\",\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"_withdrawAdminFees(uint256)\":{\"params\":{\"withdrawAmount\":\"Amount of fees to withdraw\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"_withdrawFuseFees(uint256)\":{\"params\":{\"withdrawAmount\":\"Amount of fees to withdraw\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"accrueInterest()\":{\"details\":\"This calculates interest accrued from the last checkpointed block up to the current block and writes new checkpoint to storage.\"},\"allowance(address,address)\":{\"params\":{\"owner\":\"The address of the account which owns the tokens to be spent\",\"spender\":\"The address of the account which may transfer tokens\"},\"return\":\"The number of tokens allowed to be spent (-1 means infinite)\"},\"approve(address,uint256)\":{\"details\":\"This will overwrite the approval amount for `spender` and is subject to issues noted [here](https://eips.ethereum.org/EIPS/eip-20#approve)\",\"params\":{\"amount\":\"The number of tokens that are approved (-1 means infinite)\",\"spender\":\"The address of the account which may transfer tokens\"},\"return\":\"Whether or not the approval succeeded\"},\"balanceOf(address)\":{\"params\":{\"owner\":\"The address of the account to query\"},\"return\":\"The number of tokens owned by `owner`\"},\"balanceOfUnderlying(address)\":{\"details\":\"This also accrues interest in a transaction\",\"params\":{\"owner\":\"The address of the account to query\"},\"return\":\"The amount of underlying owned by `owner`\"},\"borrow(uint256)\":{\"params\":{\"borrowAmount\":\"The amount of the underlying asset to borrow\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"borrowBalanceCurrent(address)\":{\"params\":{\"account\":\"The address whose balance should be calculated after updating borrowIndex\"},\"return\":\"The calculated balance\"},\"borrowBalanceStored(address)\":{\"params\":{\"account\":\"The address whose balance should be calculated\"},\"return\":\"The calculated balance\"},\"borrowRatePerBlock()\":{\"return\":\"The borrow interest rate per block, scaled by 1e18\"},\"exchangeRateCurrent()\":{\"return\":\"Calculated exchange rate scaled by 1e18\"},\"exchangeRateStored()\":{\"details\":\"This function does not accrue interest before calculating the exchange rate\",\"return\":\"Calculated exchange rate scaled by 1e18\"},\"getAccountSnapshot(address)\":{\"details\":\"This is used by comptroller to more efficiently perform liquidity checks.\",\"params\":{\"account\":\"Address of the account to snapshot\"},\"return\":\"(possible error, token balance, borrow balance, exchange rate mantissa)\"},\"getCash()\":{\"return\":\"The quantity of underlying asset owned by this contract\"},\"initialize(address,address,address,string,string,uint256,uint256)\":{\"params\":{\"comptroller_\":\"The address of the Comptroller\",\"interestRateModel_\":\"The address of the interest rate model\",\"name_\":\"ERC-20 name of this token\",\"symbol_\":\"ERC-20 symbol of this token\",\"underlying_\":\"The address of the underlying asset\"}},\"initialize(address,address,uint256,string,string,uint8,uint256,uint256)\":{\"params\":{\"comptroller_\":\"The address of the Comptroller\",\"decimals_\":\"EIP-20 decimal precision of this token\",\"initialExchangeRateMantissa_\":\"The initial exchange rate, scaled by 1e18\",\"interestRateModel_\":\"The address of the interest rate model\",\"name_\":\"EIP-20 name of this token\",\"symbol_\":\"EIP-20 symbol of this token\"}},\"liquidateBorrow(address,uint256,address)\":{\"params\":{\"borrower\":\"The borrower of this cToken to be liquidated\",\"cTokenCollateral\":\"The market in which to seize collateral from the borrower\",\"repayAmount\":\"The amount of the underlying borrowed asset to repay\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"mint(uint256)\":{\"details\":\"Accrues interest whether or not the operation succeeds, unless reverted\",\"params\":{\"mintAmount\":\"The amount of the underlying asset to supply\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"redeem(uint256)\":{\"details\":\"Accrues interest whether or not the operation succeeds, unless reverted\",\"params\":{\"redeemTokens\":\"The number of cTokens to redeem into underlying\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"redeemUnderlying(uint256)\":{\"details\":\"Accrues interest whether or not the operation succeeds, unless reverted\",\"params\":{\"redeemAmount\":\"The amount of underlying to redeem\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"repayBorrow(uint256)\":{\"params\":{\"repayAmount\":\"The amount to repay\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"repayBorrowBehalf(address,uint256)\":{\"params\":{\"borrower\":\"the account with the debt being payed off\",\"repayAmount\":\"The amount to repay\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"seize(address,address,uint256)\":{\"details\":\"Will fail unless called by another cToken during the process of liquidation. Its absolutely critical to use msg.sender as the borrowed cToken and not a parameter.\",\"params\":{\"borrower\":\"The account having collateral seized\",\"liquidator\":\"The account receiving seized collateral\",\"seizeTokens\":\"The number of cTokens to seize\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"supplyRatePerBlock()\":{\"return\":\"The supply interest rate per block, scaled by 1e18\"},\"totalBorrowsCurrent()\":{\"return\":\"The total borrows with interest\"},\"transfer(address,uint256)\":{\"params\":{\"amount\":\"The number of tokens to transfer\",\"dst\":\"The address of the destination account\"},\"return\":\"Whether or not the transfer succeeded\"},\"transferFrom(address,address,uint256)\":{\"params\":{\"amount\":\"The number of tokens to transfer\",\"dst\":\"The address of the destination account\",\"src\":\"The address of the source account\"},\"return\":\"Whether or not the transfer succeeded\"}},\"title\":\"Compound's CErc20Delegate Contract\"},\"userdoc\":{\"methods\":{\"_becomeImplementation(bytes)\":{\"notice\":\"Called by the delegator on a delegate to initialize it for duty\"},\"_delegateCompLikeTo(address)\":{\"notice\":\"Admin call to delegate the votes of the COMP-like underlying\"},\"_prepare()\":{\"notice\":\"Function called before all delegator functions\"},\"_reduceReserves(uint256)\":{\"notice\":\"Accrues interest and reduces reserves by transferring to admin\"},\"_setAdminFee(uint256)\":{\"notice\":\"accrues interest and sets a new admin fee for the protocol using _setAdminFeeFresh\"},\"_setImplementationSafe(address,bool,bytes)\":{\"notice\":\"Called by the admin to update the implementation of the delegator\"},\"_setInterestRateModel(address)\":{\"notice\":\"accrues interest and updates the interest rate model using _setInterestRateModelFresh\"},\"_setNameAndSymbol(string,string)\":{\"notice\":\"updates the cToken ERC20 name and symbol\"},\"_setReserveFactor(uint256)\":{\"notice\":\"accrues interest and sets a new reserve factor for the protocol using _setReserveFactorFresh\"},\"_withdrawAdminFees(uint256)\":{\"notice\":\"Accrues interest and reduces admin fees by transferring to admin\"},\"_withdrawFuseFees(uint256)\":{\"notice\":\"Accrues interest and reduces Fuse fees by transferring to Fuse\"},\"accrueInterest()\":{\"notice\":\"Applies accrued interest to total borrows and reserves\"},\"allowance(address,address)\":{\"notice\":\"Get the current allowance from `owner` for `spender`\"},\"approve(address,uint256)\":{\"notice\":\"Approve `spender` to transfer up to `amount` from `src`\"},\"balanceOf(address)\":{\"notice\":\"Get the token balance of the `owner`\"},\"balanceOfUnderlying(address)\":{\"notice\":\"Get the underlying balance of the `owner`\"},\"borrow(uint256)\":{\"notice\":\"Sender borrows assets from the protocol to their own address\"},\"borrowBalanceCurrent(address)\":{\"notice\":\"Accrue interest to updated borrowIndex and then calculate account's borrow balance using the updated borrowIndex\"},\"borrowBalanceStored(address)\":{\"notice\":\"Return the borrow balance of account based on stored data\"},\"borrowRatePerBlock()\":{\"notice\":\"Returns the current per-block borrow interest rate for this cToken\"},\"constructor\":\"Construct an empty delegate\",\"exchangeRateCurrent()\":{\"notice\":\"Accrue interest then return the up-to-date exchange rate\"},\"exchangeRateStored()\":{\"notice\":\"Calculates the exchange rate from the underlying to the CToken\"},\"getAccountSnapshot(address)\":{\"notice\":\"Get a snapshot of the account's balances, and the cached exchange rate\"},\"getCash()\":{\"notice\":\"Get cash balance of this cToken in the underlying asset\"},\"initialize(address,address,address,string,string,uint256,uint256)\":{\"notice\":\"Initialize the new money market\"},\"initialize(address,address,uint256,string,string,uint8,uint256,uint256)\":{\"notice\":\"Initialize the money market\"},\"liquidateBorrow(address,uint256,address)\":{\"notice\":\"The sender liquidates the borrowers collateral. The collateral seized is transferred to the liquidator.\"},\"mint(uint256)\":{\"notice\":\"Sender supplies assets into the market and receives cTokens in exchange\"},\"redeem(uint256)\":{\"notice\":\"Sender redeems cTokens in exchange for the underlying asset\"},\"redeemUnderlying(uint256)\":{\"notice\":\"Sender redeems cTokens in exchange for a specified amount of underlying asset\"},\"repayBorrow(uint256)\":{\"notice\":\"Sender repays their own borrow\"},\"repayBorrowBehalf(address,uint256)\":{\"notice\":\"Sender repays a borrow belonging to borrower\"},\"seize(address,address,uint256)\":{\"notice\":\"Transfers collateral tokens (this market) to the liquidator.\"},\"supplyRatePerBlock()\":{\"notice\":\"Returns the current per-block supply interest rate for this cToken\"},\"totalBorrowsCurrent()\":{\"notice\":\"Returns the current total borrows plus accrued interest\"},\"transfer(address,uint256)\":{\"notice\":\"Transfer `amount` tokens from `msg.sender` to `dst`\"},\"transferFrom(address,address,uint256)\":{\"notice\":\"Transfer `amount` tokens from `src` to `dst`\"}},\"notice\":\"CTokens which wrap an EIP-20 underlying and are delegated to\"}},\"settings\":{\"compilationTarget\":{\"contracts/CErc20Delegate.sol\":\"CErc20Delegate\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/CErc20.sol\":{\"keccak256\":\"0x37e284e3ca9a2821c3ad1001d110ca529820646f65dd441f5907070408b20bc2\",\"urls\":[\"bzz-raw://cb025aa0f581e05f023e5aef44cfcd47cdece7ec4cf53973d89834f5037666d2\",\"dweb:/ipfs/QmaY78mEyhUCuvbMVdGzpKmkw9yKoHz5noSg5REZgipupY\"]},\"contracts/CErc20Delegate.sol\":{\"keccak256\":\"0xc50f6bf192d43be4958d56a210e1b3e978a86be8f2da7463aa63dcf5a21754ad\",\"urls\":[\"bzz-raw://9258ab0d8a3c994e99a5cab314f10a84da47d32a59d1d8cd4ad772e1195dc8cd\",\"dweb:/ipfs/QmWYYn1BFVjELtm8zoxHvqWWDojXma7NpCAMk7VMruSkjJ\"]},\"contracts/CToken.sol\":{\"keccak256\":\"0xc3a5a827241528049e20a24cc446558c8a9272909f75ce5d1cf14ae3ab5feba3\",\"urls\":[\"bzz-raw://a403db2bf1a8e5e9384df19600bd18d4251056818b094afcdab418e683bb5cb8\",\"dweb:/ipfs/QmdkRbFGtKP67tNNqyH7BraDRGerwRNA7ktscbFV9LioM2\"]},\"contracts/CTokenInterfaces.sol\":{\"keccak256\":\"0xc8a056c724ef4f0215ece6011e7ac1007c9dc7611ce5160d470ec858bbb06bd3\",\"urls\":[\"bzz-raw://58951693d1b53d2722e55b068bab2b570f4b044d89c28ed6b53bac6e95aeb662\",\"dweb:/ipfs/QmQiNTw5jZR74WjKfX2bPiuTT4tuFuq8rx7QxEVyVvdGLn\"]},\"contracts/CarefulMath.sol\":{\"keccak256\":\"0x1487237dbbbb73ad43c8eff16e78311753719a94a5065f574de5c91b672c56f8\",\"urls\":[\"bzz-raw://349966a236f313b2cb42e1942832e6bd7e134f65f6654e6c4d46788e65cc4a9b\",\"dweb:/ipfs/Qmebpv8i5jLR4fLgpZHQZRLu6aefVAbLC2yUk9ABEekquz\"]},\"contracts/ComptrollerInterface.sol\":{\"keccak256\":\"0xecfb84fabc9792d0b1c912886249c67bc42c39eb065d962d0b9a5f3736af5892\",\"urls\":[\"bzz-raw://711547ebc1a7f18b271118dd98276771953a9d7b3674716f67d247be9b907372\",\"dweb:/ipfs/QmbVZNvkBp8miByATrL6y5j8MePdcQ8uTAUZMpKrhpLgoa\"]},\"contracts/ComptrollerStorage.sol\":{\"keccak256\":\"0x83961d3c12984fe4afc72717fc44b2d868563d053a0eceda0cbf17ec6b255913\",\"urls\":[\"bzz-raw://ea667c2de43881f9be19f4f75dec348632273178965fc9b3655705d853b032bb\",\"dweb:/ipfs/QmZP6sbNFSgFZrAEvfRjhp1NtGj6U6Sea3JGiKG96AHyeP\"]},\"contracts/EIP20Interface.sol\":{\"keccak256\":\"0xee33b8b333743308a9153a59f22da2cadb22cedef4403fe039bf9e057c9c729a\",\"urls\":[\"bzz-raw://5427fdb941300d36a424da0a0a5800e3b2ca51c9c922831dbfce2f6637402b43\",\"dweb:/ipfs/QmTrvmLynqSUPjsGW2dpiQ91dSmn4xzccQiwr8qaBtyvjH\"]},\"contracts/EIP20NonStandardInterface.sol\":{\"keccak256\":\"0x469899442dd9640bfc2c670d404ad3027e48df5df8e5aeab0e25cc6b6aae05f5\",\"urls\":[\"bzz-raw://d8c4498abaf539eb413a2f1a916d75945adc8bd4ef437f8450cb67e07be3f38d\",\"dweb:/ipfs/QmaFpWfnhAMYW21rbT5PEszn4TGHdGU58Eq5AfZsCuapZ3\"]},\"contracts/ErrorReporter.sol\":{\"keccak256\":\"0xe9587478bc9efad203cab02b8aecae32828cfc9a271b13ae3c018e38e44aab32\",\"urls\":[\"bzz-raw://2eb34bdbbbc410fb401d50ddca44a7421a1d8191711c569ed5bcec1c1b07a05c\",\"dweb:/ipfs/QmYKNCYppyx3NGiwtjdLEmxUMgfnFBqT4pnvnhnBrPgrxS\"]},\"contracts/Exponential.sol\":{\"keccak256\":\"0xfda0e2b610541cf1cf316a0000c89a1069ccc21f1566affc0a058810e2b835d3\",\"urls\":[\"bzz-raw://fe319f184f1b5f27019d3d890124cd24e466d27153ac38eb9ff6b16efbad48b9\",\"dweb:/ipfs/Qmcev6jCmtdCviJxUQvUCmesPDShRDSvdfUEfvsqd4GEJA\"]},\"contracts/ExponentialNoError.sol\":{\"keccak256\":\"0x713a089f4bbcaec1d3924fc7d9a2154904a39f46cb6f25b713167dbe5f21623e\",\"urls\":[\"bzz-raw://d7108d68af7c5effd4272615ceba54e79e585f6b8be5aabc7602245c84c7b9e0\",\"dweb:/ipfs/QmQZo2XpxW7w5viVEg71mi9eKaAYD7HUqfCMB5yCCPVnc5\"]},\"contracts/IFuseFeeDistributor.sol\":{\"keccak256\":\"0xb5d287b8e05574d38bd5d0b413f44b4c5d312f28188573ac60abe78123fbd92c\",\"urls\":[\"bzz-raw://84c2bbf746a82aaa100bee90c7dd40411c723bded124bb1775bf72bf7fda8a2c\",\"dweb:/ipfs/QmToQzDtz9BV2tvU71YsfWjdaZu5qpP1xKFZ1TkQgubhDb\"]},\"contracts/InterestRateModel.sol\":{\"keccak256\":\"0x0cc0dbd1991e5dcdcff58b0c82a9471a0fb9df26763e5e7415e1d081b7332409\",\"urls\":[\"bzz-raw://f4d7936aefc43ea2724f0e472b8f1517f1ca40170258ab9d5bbd0862dd0c4f13\",\"dweb:/ipfs/QmfYjG1Sm3kNwbhomHCWhMqw9LvaJVWVzBe4Te5BHRbTQS\"]},\"contracts/PriceOracle.sol\":{\"keccak256\":\"0x62ba3a5ec8f06d456ab089d6ca7f9d14d3a6ce6814923271ca60a6990918fb41\",\"urls\":[\"bzz-raw://aa6d2f20efdd5389161eb15bdab98b5628dc8cd5354394bbed35bb14d3612506\",\"dweb:/ipfs/QmVfo4eCDuk8LMSywpBjZBxCv7zLCNsG6u3nyD1d4CYwsD\"]}},\"version\":1}"}},"contracts/CErc20DelegateDAIAggregatorFix.sol":{"CErc20DelegateUSDCAggregatorFix":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"cashPrior","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"interestAccumulated","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"borrowIndex","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalBorrows","type":"uint256"}],"name":"AccrueInterest","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"borrower","type":"address"},{"indexed":false,"internalType":"uint256","name":"borrowAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"accountBorrows","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalBorrows","type":"uint256"}],"name":"Borrow","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"error","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"info","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"detail","type":"uint256"}],"name":"Failure","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"liquidator","type":"address"},{"indexed":false,"internalType":"address","name":"borrower","type":"address"},{"indexed":false,"internalType":"uint256","name":"repayAmount","type":"uint256"},{"indexed":false,"internalType":"address","name":"cTokenCollateral","type":"address"},{"indexed":false,"internalType":"uint256","name":"seizeTokens","type":"uint256"}],"name":"LiquidateBorrow","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"minter","type":"address"},{"indexed":false,"internalType":"uint256","name":"mintAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"mintTokens","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldAdminFeeMantissa","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newAdminFeeMantissa","type":"uint256"}],"name":"NewAdminFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract ComptrollerInterface","name":"oldComptroller","type":"address"},{"indexed":false,"internalType":"contract ComptrollerInterface","name":"newComptroller","type":"address"}],"name":"NewComptroller","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldFuseFeeMantissa","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newFuseFeeMantissa","type":"uint256"}],"name":"NewFuseFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldImplementation","type":"address"},{"indexed":false,"internalType":"address","name":"newImplementation","type":"address"}],"name":"NewImplementation","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract InterestRateModel","name":"oldInterestRateModel","type":"address"},{"indexed":false,"internalType":"contract InterestRateModel","name":"newInterestRateModel","type":"address"}],"name":"NewMarketInterestRateModel","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldReserveFactorMantissa","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newReserveFactorMantissa","type":"uint256"}],"name":"NewReserveFactor","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"redeemer","type":"address"},{"indexed":false,"internalType":"uint256","name":"redeemAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"redeemTokens","type":"uint256"}],"name":"Redeem","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"payer","type":"address"},{"indexed":false,"internalType":"address","name":"borrower","type":"address"},{"indexed":false,"internalType":"uint256","name":"repayAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"accountBorrows","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalBorrows","type":"uint256"}],"name":"RepayBorrow","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"benefactor","type":"address"},{"indexed":false,"internalType":"uint256","name":"addAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newTotalReserves","type":"uint256"}],"name":"ReservesAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"admin","type":"address"},{"indexed":false,"internalType":"uint256","name":"reduceAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newTotalReserves","type":"uint256"}],"name":"ReservesReduced","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":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"constant":false,"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"name":"_becomeImplementation","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"compLikeDelegatee","type":"address"}],"name":"_delegateCompLikeTo","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"_prepare","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"reduceAmount","type":"uint256"}],"name":"_reduceReserves","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"newAdminFeeMantissa","type":"uint256"}],"name":"_setAdminFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"implementation_","type":"address"},{"internalType":"bool","name":"allowResign","type":"bool"},{"internalType":"bytes","name":"becomeImplementationData","type":"bytes"}],"name":"_setImplementationSafe","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"contract InterestRateModel","name":"newInterestRateModel","type":"address"}],"name":"_setInterestRateModel","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"}],"name":"_setNameAndSymbol","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"newReserveFactorMantissa","type":"uint256"}],"name":"_setReserveFactor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"withdrawAmount","type":"uint256"}],"name":"_withdrawAdminFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"withdrawAmount","type":"uint256"}],"name":"_withdrawFuseFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"accrualBlockNumber","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"accrueInterest","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"adminFeeMantissa","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOfUnderlying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"borrowAmount","type":"uint256"}],"name":"borrow","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"borrowBalanceCurrent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"borrowBalanceStored","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"borrowIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"borrowRatePerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"comptroller","outputs":[{"internalType":"contract ComptrollerInterface","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"exchangeRateCurrent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"exchangeRateStored","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"fuseFeeMantissa","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getAccountSnapshot","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getCash","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"contract ComptrollerInterface","name":"comptroller_","type":"address"},{"internalType":"contract InterestRateModel","name":"interestRateModel_","type":"address"},{"internalType":"uint256","name":"initialExchangeRateMantissa_","type":"uint256"},{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"uint8","name":"decimals_","type":"uint8"},{"internalType":"uint256","name":"reserveFactorMantissa_","type":"uint256"},{"internalType":"uint256","name":"adminFeeMantissa_","type":"uint256"}],"name":"initialize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"underlying_","type":"address"},{"internalType":"contract ComptrollerInterface","name":"comptroller_","type":"address"},{"internalType":"contract InterestRateModel","name":"interestRateModel_","type":"address"},{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"uint256","name":"reserveFactorMantissa_","type":"uint256"},{"internalType":"uint256","name":"adminFeeMantissa_","type":"uint256"}],"name":"initialize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"interestRateModel","outputs":[{"internalType":"contract InterestRateModel","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isCEther","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isCToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"borrower","type":"address"},{"internalType":"uint256","name":"repayAmount","type":"uint256"},{"internalType":"contract CTokenInterface","name":"cTokenCollateral","type":"address"}],"name":"liquidateBorrow","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"mintAmount","type":"uint256"}],"name":"mint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"protocolSeizeShareMantissa","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"redeemTokens","type":"uint256"}],"name":"redeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"redeemAmount","type":"uint256"}],"name":"redeemUnderlying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"repayAmount","type":"uint256"}],"name":"repayBorrow","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"borrower","type":"address"},{"internalType":"uint256","name":"repayAmount","type":"uint256"}],"name":"repayBorrowBehalf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"reserveFactorMantissa","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"liquidator","type":"address"},{"internalType":"address","name":"borrower","type":"address"},{"internalType":"uint256","name":"seizeTokens","type":"uint256"}],"name":"seize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"supplyRatePerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalAdminFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalBorrows","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"totalBorrowsCurrent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalFuseFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalReserves","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"src","type":"address"},{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"underlying","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"6080604052615eb7806100136000396000f3fe6080604052600436106103765760003560e01c8063852a12e3116101d1578063ae9d70b011610102578063dc028ab1116100a0578063f5e3c4621161006f578063f5e3c46214610f69578063f8f9da2814610fac578063fca7820b14610fc1578063fe9c44ae14610feb57610376565b8063dc028ab114610ed1578063dd62ed3e14610ee6578063f2b3abbd14610f21578063f3fdb15a14610f5457610376565b8063c37f68e2116100dc578063c37f68e214610e0f578063c5ebeaec14610e68578063db006a7514610e92578063dbfe7c1914610ebc57610376565b8063ae9d70b014610da2578063b2a02ff114610db7578063bd6d894d14610dfa57610376565b8063a0712d681161016f578063a7b820df11610149578063a7b820df14610d15578063a9059cbb14610d3f578063aa5af0fd14610d78578063ac784ddc14610d8d57610376565b8063a0712d6814610b7a578063a0b0d28914610ba4578063a6afed9514610d0057610376565b806391dd36c6116101ab57806391dd36c614610ade57806395d89b4114610b0857806395dd919314610b1d578063a03dce8d14610b5057610376565b8063852a12e314610a8a5780638d02d9a114610ab45780638f840ddd14610ac957610376565b80633b1d21a2116102ab57806361feacff116102495780636f307dc3116102235780636f307dc3146109fa57806370a0823114610a0f57806373acee9814610a425780637f1e06be14610a5757610376565b806361feacff146109bb5780636752e702146109d05780636c540baf146109e557610376565b806356e677281161028557806356e67728146108d05780635c60da1b1461094b5780635fe3b5671461097c578063601a0bf11461099157610376565b80633b1d21a21461081457806347bd37181461082957806350d85b731461083e57610376565b8063182df0f5116103185780632608f818116102f25780632608f818146106b2578063313ce567146106eb57806334154d4c146107165780633af9e669146107e157610376565b8063182df0f5146106525780631db789441461066757806323b872dd1461066f57610376565b80630f8855e8116103545780630f8855e81461048e578063173b9904146105f557806317bfdfbc1461060a57806318160ddd1461063d57610376565b806306fdde031461037b578063095ea7b3146104055780630e75270214610452575b600080fd5b34801561038757600080fd5b50610390611000565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103ca5781810151838201526020016103b2565b50505050905090810190601f1680156103f75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561041157600080fd5b5061043e6004803603604081101561042857600080fd5b506001600160a01b03813516906020013561108b565b604080519115158252519081900360200190f35b34801561045e57600080fd5b5061047c6004803603602081101561047557600080fd5b50356110f8565b60408051918252519081900360200190f35b34801561049a57600080fd5b506105f360048036036101008110156104b257600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b8111156104ec57600080fd5b8201836020820111156104fe57600080fd5b803590602001918460018302840111600160201b8311171561051f57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561057157600080fd5b82018360208201111561058357600080fd5b803590602001918460018302840111600160201b831117156105a457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505060ff833516935050506020810135906040013561110e565b005b34801561060157600080fd5b5061047c6113bc565b34801561061657600080fd5b5061047c6004803603602081101561062d57600080fd5b50356001600160a01b03166113c2565b34801561064957600080fd5b5061047c61143e565b34801561065e57600080fd5b5061047c611444565b6105f36114a7565b34801561067b57600080fd5b5061043e6004803603606081101561069257600080fd5b506001600160a01b038135811691602081013590911690604001356114a9565b3480156106be57600080fd5b5061047c600480360360408110156106d557600080fd5b506001600160a01b0381351690602001356114d7565b3480156106f757600080fd5b506107006114ed565b6040805160ff9092168252519081900360200190f35b34801561072257600080fd5b506105f36004803603604081101561073957600080fd5b810190602081018135600160201b81111561075357600080fd5b82018360208201111561076557600080fd5b803590602001918460018302840111600160201b8311171561078657600080fd5b919390929091602081019035600160201b8111156107a357600080fd5b8201836020820111156107b557600080fd5b803590602001918460018302840111600160201b831117156107d657600080fd5b5090925090506114f6565b3480156107ed57600080fd5b5061047c6004803603602081101561080457600080fd5b50356001600160a01b0316611562565b34801561082057600080fd5b5061047c611618565b34801561083557600080fd5b5061047c611627565b34801561084a57600080fd5b506105f36004803603606081101561086157600080fd5b6001600160a01b03823516916020810135151591810190606081016040820135600160201b81111561089257600080fd5b8201836020820111156108a457600080fd5b803590602001918460018302840111600160201b831117156108c557600080fd5b50909250905061162d565b3480156108dc57600080fd5b506105f3600480360360208110156108f357600080fd5b810190602081018135600160201b81111561090d57600080fd5b82018360208201111561091f57600080fd5b803590602001918460018302840111600160201b8311171561094057600080fd5b5090925090506116b6565b34801561095757600080fd5b506109606117c9565b604080516001600160a01b039092168252519081900360200190f35b34801561098857600080fd5b506109606117d8565b34801561099d57600080fd5b5061047c600480360360208110156109b457600080fd5b50356117e7565b3480156109c757600080fd5b5061047c611838565b3480156109dc57600080fd5b5061047c61183e565b3480156109f157600080fd5b5061047c611849565b348015610a0657600080fd5b5061096061184f565b348015610a1b57600080fd5b5061047c60048036036020811015610a3257600080fd5b50356001600160a01b031661185e565b348015610a4e57600080fd5b5061047c611879565b348015610a6357600080fd5b506105f360048036036020811015610a7a57600080fd5b50356001600160a01b03166118ec565b348015610a9657600080fd5b5061047c60048036036020811015610aad57600080fd5b5035611991565b348015610ac057600080fd5b5061047c61199c565b348015610ad557600080fd5b5061047c6119a2565b348015610aea57600080fd5b5061047c60048036036020811015610b0157600080fd5b50356119a8565b348015610b1457600080fd5b506103906119e5565b348015610b2957600080fd5b5061047c60048036036020811015610b4057600080fd5b50356001600160a01b0316611a40565b348015610b5c57600080fd5b5061047c60048036036020811015610b7357600080fd5b5035611aa4565b348015610b8657600080fd5b5061047c60048036036020811015610b9d57600080fd5b5035611ae1565b348015610bb057600080fd5b506105f3600480360360e0811015610bc757600080fd5b6001600160a01b0382358116926020810135821692604082013590921691810190608081016060820135600160201b811115610c0257600080fd5b820183602082011115610c1457600080fd5b803590602001918460018302840111600160201b83111715610c3557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115610c8757600080fd5b820183602082011115610c9957600080fd5b803590602001918460018302840111600160201b83111715610cba57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505082359350505060200135611aed565b348015610d0c57600080fd5b5061047c611c06565b348015610d2157600080fd5b5061047c60048036036020811015610d3857600080fd5b5035611dcb565b348015610d4b57600080fd5b5061043e60048036036040811015610d6257600080fd5b506001600160a01b038135169060200135611e08565b348015610d8457600080fd5b5061047c611e35565b348015610d9957600080fd5b5061043e611e3b565b348015610dae57600080fd5b5061047c611e40565b348015610dc357600080fd5b5061047c60048036036060811015610dda57600080fd5b506001600160a01b03813581169160208101359091169060400135611ef8565b348015610e0657600080fd5b5061047c611f1c565b348015610e1b57600080fd5b50610e4260048036036020811015610e3257600080fd5b50356001600160a01b0316611f90565b604080519485526020850193909352838301919091526060830152519081900360800190f35b348015610e7457600080fd5b5061047c60048036036020811015610e8b57600080fd5b5035612025565b348015610e9e57600080fd5b5061047c60048036036020811015610eb557600080fd5b5035612030565b348015610ec857600080fd5b5061047c61203b565b348015610edd57600080fd5b5061047c612041565b348015610ef257600080fd5b5061047c60048036036040811015610f0957600080fd5b506001600160a01b0381358116916020013516612047565b348015610f2d57600080fd5b5061047c60048036036020811015610f4457600080fd5b50356001600160a01b0316612072565b348015610f6057600080fd5b506109606120ac565b348015610f7557600080fd5b5061047c60048036036060811015610f8c57600080fd5b506001600160a01b038135811691602081013591604090910135166120bb565b348015610fb857600080fd5b5061047c6120d3565b348015610fcd57600080fd5b5061047c60048036036020811015610fe457600080fd5b5035612148565b348015610ff757600080fd5b5061043e612185565b6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156110835780601f1061105857610100808354040283529160200191611083565b820191906000526020600020905b81548152906001019060200180831161106657829003601f168201915b505050505081565b3360008181526013602090815260408083206001600160a01b03871680855290835281842086905581518681529151939493909284927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a360019150505b92915050565b6000806111048361218a565b509150505b919050565b3373a731585ab05fc9f83555cf9bff8f58ee94e18f85146111605760405162461bcd60e51b8152600401808060200182810382526029815260200180615d6d6029913960400191505060405180910390fd5b600b541580156111705750600c54155b6111ab5760405162461bcd60e51b8152600401808060200182810382526023815260200180615c5a6023913960400191505060405180910390fd5b6007869055856111ec5760405162461bcd60e51b8152600401808060200182810382526030815260200180615c7d6030913960400191505060405180910390fd5b60006111f7896121ed565b9050801561124c576040805162461bcd60e51b815260206004820152601a60248201527f73657474696e6720636f6d7074726f6c6c6572206661696c6564000000000000604482015290519081900360640190fd5b611254612320565b600b55670de0b6b3a7640000600c5561126c88612324565b905080156112ab5760405162461bcd60e51b8152600401808060200182810382526022815260200180615cda6022913960400191505060405180910390fd5b85516112be906002906020890190615a4a565b5084516112d2906003906020880190615a4a565b506004805460ff191660ff86161790556112eb8361262a565b90508015611340576040805162461bcd60e51b815260206004820152601d60248201527f73657474696e67207265736572766520666163746f72206661696c6564000000604482015290519081900360640190fd5b611349826126e3565b9050801561139e576040805162461bcd60e51b815260206004820152601860248201527f73657474696e672061646d696e20666565206661696c65640000000000000000604482015290519081900360640190fd5b50506001805460ff60b01b1916600160b01b17905550505050505050565b600a5481565b6000806113ce81612808565b60006113d8611c06565b14611423576040805162461bcd60e51b81526020600482015260166024820152751858d8dc9d59481a5b9d195c995cdd0819985a5b195960521b604482015290519081900360640190fd5b61142c83611a40565b91505b611438816128d1565b50919050565b60115481565b600080600061145161293c565b9092509050600082600381111561146457fe5b146114a05760405162461bcd60e51b8152600401808060200182810382526035815260200180615e1a6035913960400191505060405180910390fd5b9150505b90565b565b6000806114b581612808565b60006114c3338787876129fc565b1491506114cf816128d1565b509392505050565b6000806114e48484612c88565b50949350505050565b60045460ff1681565b6114fe612ced565b611542576040805162461bcd60e51b815260206004820152601060248201526f31b0b63632b9103737ba1030b236b4b760811b604482015290519081900360640190fd5b61154e60028585615ac4565b5061155b60038383615ac4565b5050505050565b600061156c615b32565b604051806020016040528061157f611f1c565b90526001600160a01b0384166000908152601260205260408120549192509081906115ab908490612e68565b909250905060008260038111156115be57fe5b14611610576040805162461bcd60e51b815260206004820152601f60248201527f62616c616e636520636f756c64206e6f742062652063616c63756c6174656400604482015290519081900360640190fd5b949350505050565b6000611622612ebc565b905090565b600d5481565b611635612ced565b61166f576040805162461bcd60e51b815260206004820152600660248201526510b0b236b4b760d11b604482015290519081900360640190fd5b6116b0848484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612f0a92505050565b50505050565b73afd2aade64e6ea690173f6de59fc09f5c9190d7473cae4210e6676727ea4e0fd9ba5dfb95831356a16333014806116f157506116f1612ced565b61172a576040805162461bcd60e51b815260206004820152600560248201526410b9b2b63360d91b604482015290519081900360640190fd5b6000611734611c06565b14611770576040805162461bcd60e51b81526020600482015260076024820152662161636372756560c81b604482015290519081900360640190fd5b6001600160a01b0380831660008181526012602090815260408083208054908490559486168084529281902085905580518581529051929392600080516020615d96833981519152929181900390910190a35050505050565b6000546001600160a01b031681565b6005546001600160a01b031681565b6000806117f381612808565b60006117fd611c06565b905080156118235761181b81601181111561181457fe5b603b613126565b92505061142f565b61182c8461318c565b925050611438816128d1565b600f5481565b666379da05b6000081565b600b5481565b6015546001600160a01b031681565b6001600160a01b031660009081526012602052604090205490565b60008061188581612808565b600061188f611c06565b146118da576040805162461bcd60e51b81526020600482015260166024820152751858d8dc9d59481a5b9d195c995cdd0819985a5b195960521b604482015290519081900360640190fd5b600d5491506118e8816128d1565b5090565b6118f4612ced565b61192f5760405162461bcd60e51b815260040180806020018281038252602d815260200180615cad602d913960400191505060405180910390fd5b601554604080516317066a5760e21b81526001600160a01b03848116600483015291519190921691635c19a95c91602480830192600092919082900301818387803b15801561197d57600080fd5b505af115801561155b573d6000803e3d6000fd5b60006110f282613258565b60085481565b600e5481565b6000806119b481612808565b60006119be611c06565b905080156119dc5761181b8160118111156119d557fe5b6052613126565b61182c846126e3565b6003805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156110835780601f1061105857610100808354040283529160200191611083565b6000806000611a4e84613298565b90925090506000826003811115611a6157fe5b14611a9d5760405162461bcd60e51b8152600401808060200182810382526037815260200180615cfc6037913960400191505060405180910390fd5b9392505050565b600080611ab081612808565b6000611aba611c06565b90508015611ad85761181b816011811115611ad157fe5b6033613126565b61182c8461334c565b600080611104836133cd565b60006702c68af0bb14000090506000886001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015611b3557600080fd5b505afa158015611b49573d6000803e3d6000fd5b505050506040513d6020811015611b5f57600080fd5b50519050611b738888848989868a8a61110e565b601580546001600160a01b0319166001600160a01b038b81169190911791829055604080516318160ddd60e01b8152905192909116916318160ddd91600480820192602092909190829003018186803b158015611bcf57600080fd5b505afa158015611be3573d6000803e3d6000fd5b505050506040513d6020811015611bf957600080fd5b5050505050505050505050565b600080611c11612320565b905080600b541415611c275760009150506114a4565b6000611c31612ebc565b90506000600660009054906101000a90046001600160a01b03166001600160a01b03166315f2405383600d54611c76600e54611c71600f5460105461340d565b61340d565b6040518463ffffffff1660e01b815260040180848152602001838152602001828152602001935050505060206040518083038186803b158015611cb857600080fd5b505afa158015611ccc573d6000803e3d6000fd5b505050506040513d6020811015611ce257600080fd5b5051905065048c27395000811115611d41576040805162461bcd60e51b815260206004820152601c60248201527f626f72726f772072617465206973206162737572646c79206869676800000000604482015290519081900360640190fd5b600080611d5085600b54613443565b90925090506000826003811115611d6357fe5b14611db5576040805162461bcd60e51b815260206004820152601f60248201527f636f756c64206e6f742063616c63756c61746520626c6f636b2064656c746100604482015290519081900360640190fd5b611dc185858584613466565b9550505050505090565b600080611dd781612808565b6000611de1611c06565b90508015611dff5761181b816011811115611df857fe5b6037613126565b61182c8461367e565b600080611e1481612808565b6000611e22333387876129fc565b149150611e2e816128d1565b5092915050565b600c5481565b600081565b6006546000906001600160a01b031663b8168816611e5c612ebc565b600d54611e73600e54611c71600f5460105461340d565b600854600954600a5401016040518563ffffffff1660e01b81526004018085815260200184815260200183815260200182815260200194505050505060206040518083038186803b158015611ec757600080fd5b505afa158015611edb573d6000803e3d6000fd5b505050506040513d6020811015611ef157600080fd5b5051905090565b60006001611f0581612808565b611f1133868686613766565b91506114cf816128d1565b600080611f2881612808565b6000611f32611c06565b14611f7d576040805162461bcd60e51b81526020600482015260166024820152751858d8dc9d59481a5b9d195c995cdd0819985a5b195960521b604482015290519081900360640190fd5b611f85611444565b91506118e8816128d1565b6001600160a01b038116600090815260126020526040812054819081908190818080611fbb89613298565b935090506000816003811115611fcd57fe5b14611feb5760095b97506000965086955085945061201e9350505050565b611ff361293c565b92509050600081600381111561200557fe5b14612011576009611fd5565b5060009650919450925090505b9193509193565b60006110f282613b45565b60006110f282613b83565b60095481565b60105481565b6001600160a01b03918216600090815260136020908152604080832093909416825291909152205490565b60008061207d611c06565b905080156120a35761209b81601181111561209457fe5b604b613126565b915050611109565b611a9d83612324565b6006546001600160a01b031681565b6000806120c9858585613bbc565b5095945050505050565b6006546000906001600160a01b03166315f240536120ef612ebc565b600d54612106600e54611c71600f5460105461340d565b6040518463ffffffff1660e01b815260040180848152602001838152602001828152602001935050505060206040518083038186803b158015611ec757600080fd5b60008061215481612808565b600061215e611c06565b9050801561217c5761181b81601181111561217557fe5b6059613126565b61182c8461262a565b600181565b600080600061219881612808565b60006121a2611c06565b905080156121cd576121c08160118111156121b957fe5b6041613126565b9350600092506121de9050565b6121d8333387613ca8565b93509350505b6121e7816128d1565b50915091565b600080600560009054906101000a90046001600160a01b03169050826001600160a01b0316627e3dd26040518163ffffffff1660e01b815260040160206040518083038186803b15801561224057600080fd5b505afa158015612254573d6000803e3d6000fd5b505050506040513d602081101561226a57600080fd5b50516122bd576040805162461bcd60e51b815260206004820152601c60248201527f6d61726b6572206d6574686f642072657475726e65642066616c736500000000604482015290519081900360640190fd5b600580546001600160a01b0319166001600160a01b03858116918217909255604080519284168352602083019190915280517f7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d9281900390910190a16000611a9d565b4390565b60008061232f612ced565b61233f5761209b6001604d613126565b612347612320565b600b541461235b5761209b600a604c613126565b600660009054906101000a90046001600160a01b03169050826001600160a01b0316632191f92a6040518163ffffffff1660e01b815260040160206040518083038186803b1580156123ac57600080fd5b505afa1580156123c0573d6000803e3d6000fd5b505050506040513d60208110156123d657600080fd5b5051612429576040805162461bcd60e51b815260206004820152601c60248201527f6d61726b6572206d6574686f642072657475726e65642066616c736500000000604482015290519081900360640190fd5b600680546001600160a01b0319166001600160a01b03858116918217909255604080519284168352602083019190915280517fedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f9269281900390910190a16001600160a01b0381161561255b5760408051600481526024810182526020810180516001600160e01b0316636cc1140b60e11b178152915181516001600160a01b0385169382918083835b602083106124f05780518252601f1990920191602091820191016124d1565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612552576040519150601f19603f3d011682016040523d82523d6000602084013e612557565b606091505b5050505b60408051600481526024810182526020810180516001600160e01b031663742a137b60e11b178152915181516001600160a01b0387169382918083835b602083106125b75780518252601f199092019160209182019101612598565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612619576040519150601f19603f3d011682016040523d82523d6000602084013e61261e565b606091505b5060009150611a9d9050565b6000612634612ced565b61264b576126446001605a613126565b9050611109565b612653612320565b600b541461266757612644600a605b613126565b670de0b6b3a764000061268761267f8460085461340d565b60095461340d565b1115612699576126446002605c613126565b600a805490839055604080518281526020810185905281517faaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460929181900390910190a16000611a9d565b60006126ed612320565b600b541461270157612644600a6054613126565b6000198214156127115760085491505b600061271b613ff8565b9050670de0b6b3a764000061273b612735600a548661340d565b8361340d565b111561274d5761209b60026055613126565b82600854146127b35761275e612ced565b61276e5761209b60016053613126565b6008805490849055604080518281526020810186905281517fcdd0b588250e1398549f79cfdb8217c186688822905d6715b0834ea1c865594a929181900390910190a1505b8060095414612801576009805490829055604080518281526020810184905281517f92eef861b6533b7d3417f39c2ad7b460eed4e88a32fa3604f30e718b7602e7dc929181900390910190a1505b6000611a9d565b600154600160b01b900460ff16612853576040805162461bcd60e51b815260206004820152600a6024820152691c994b595b9d195c995960b21b604482015290519081900360640190fd5b806128c157600560009054906101000a90046001600160a01b03166001600160a01b031663c90c20b16040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156128a857600080fd5b505af11580156128bc573d6000803e3d6000fd5b505050505b506001805460ff60b01b19169055565b6001805460ff60b01b1916600160b01b1790558061293957600560009054906101000a90046001600160a01b03166001600160a01b031663632e51426040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561197d57600080fd5b50565b601154600090819080612957575050600754600091506129f8565b6000612961612ebc565b9050600061296d615b32565b600061298f84600d5461298a600e54611c71600f5460105461340d565b614047565b9350905060008160038111156129a157fe5b146129b6579550600094506129f89350505050565b6129c08386614093565b9250905060008160038111156129d257fe5b146129e7579550600094506129f89350505050565b50516000955093506129f892505050565b9091565b600554604080516317b9b84b60e31b81523060048201526001600160a01b03868116602483015285811660448301526064820185905291516000938493169163bdcdc25891608480830192602092919082900301818787803b158015612a6157600080fd5b505af1158015612a75573d6000803e3d6000fd5b505050506040513d6020811015612a8b57600080fd5b505190508015612aaa57612aa26003605d83614143565b915050611610565b836001600160a01b0316856001600160a01b03161415612ad057612aa26002605e613126565b60006001600160a01b038781169087161415612aef5750600019612b17565b506001600160a01b038086166000908152601360209081526040808320938a16835292905220545b600080600080612b278589613443565b90945092506000846003811115612b3a57fe5b14612b5857612b4b6009605e613126565b9650505050505050611610565b6001600160a01b038a16600090815260126020526040902054612b7b9089613443565b90945091506000846003811115612b8e57fe5b14612b9f57612b4b6009605f613126565b6001600160a01b038916600090815260126020526040902054612bc290896141cc565b90945090506000846003811115612bd557fe5b14612be657612b4b60096060613126565b6001600160a01b03808b16600090815260126020526040808220859055918b168152208190556000198514612c3e576001600160a01b03808b166000908152601360209081526040808320938f168352929052208390555b886001600160a01b03168a6001600160a01b0316600080516020615d968339815191528a6040518082815260200191505060405180910390a35060009a9950505050505050505050565b6000806000612c9681612808565b6000612ca0611c06565b90508015612ccb57612cbe816011811115612cb757fe5b6040613126565b935060009250612cdc9050565b612cd6338787613ca8565b93509350505b612ce5816128d1565b509250929050565b600554604080516303e1469160e61b815290516000926001600160a01b031691829163f851a44091600480820192602092909190829003018186803b158015612d3557600080fd5b505afa158015612d49573d6000803e3d6000fd5b505050506040513d6020811015612d5f57600080fd5b50516001600160a01b031633148015612dd95750806001600160a01b0316630a755ec26040518163ffffffff1660e01b815260040160206040518083038186803b158015612dac57600080fd5b505afa158015612dc0573d6000803e3d6000fd5b505050506040513d6020811015612dd657600080fd5b50515b806114a057503373a731585ab05fc9f83555cf9bff8f58ee94e18f851480156114a05750806001600160a01b0316632f1069ba6040518163ffffffff1660e01b815260040160206040518083038186803b158015612e3657600080fd5b505afa158015612e4a573d6000803e3d6000fd5b505050506040513d6020811015612e6057600080fd5b505191505090565b6000806000612e75615b32565b612e7f86866141f2565b90925090506000826003811115612e9257fe5b14612ea35750915060009050612eb5565b6000612eae8261425a565b9350935050505b9250929050565b601554604080516370a0823160e01b815230600482015290516000926001600160a01b03169182916370a0823191602480820192602092909190829003018186803b158015612e3657600080fd5b600054604080516338e6a07360e11b81526001600160a01b039283166004820152918516602483015283151560448301525173a731585ab05fc9f83555cf9bff8f58ee94e18f85916371cd40e6916064808301926020929190829003018186803b158015612f7757600080fd5b505afa158015612f8b573d6000803e3d6000fd5b505050506040513d6020811015612fa157600080fd5b5051612fdc576040805162461bcd60e51b8152602060048201526005602482015264085a5b5c1b60da1b604482015290519081900360640190fd5b8115612fea57612fea614269565b600080546001600160a01b038581166001600160a01b0319831617835560405160206024820181815286516044840152865193909416946130d794309488949193849360649093019290860191908190849084905b8381101561305757818101518382015260200161303f565b50505050905090810190601f1680156130845780820380516001836020036101000a031916815260200191505b5060408051601f19818403018152918152602080830180516001600160e01b0316630adccee560e31b17905281518083019092526007825266216265636f6d6560c81b90820152909350915061426e9050565b50600054604080516001600160a01b038085168252909216602083015280517fd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a9281900390910190a150505050565b60007f45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa083601181111561315557fe5b83606381111561316157fe5b604080519283526020830191909152600082820152519081900360600190a1826011811115611a9d57fe5b600080613197612ced565b6131a75761209b6001603c613126565b6131af612320565b600b54146131c35761209b600a603e613126565b826131cc612ebc565b10156131de5761209b600e603d613126565b600e548311156131f45761209b6002603f613126565b613200600e54846143bd565b600e819055905061321133846143f7565b604080513381526020810185905280820183905290517f3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e9181900360600190a16000611a9d565b60008061326481612808565b600061326e611c06565b9050801561328c5761181b81601181111561328557fe5b602a613126565b61182c3360008661447c565b6001600160a01b0381166000908152601460205260408120805482918291829182916132cf57506000945084935061334792505050565b6132df8160000154600c5461494c565b909450925060008460038111156132f257fe5b14613307575091935060009250613347915050565b61331583826001015461498b565b9094509150600084600381111561332857fe5b1461333d575091935060009250613347915050565b5060009450925050505b915091565b600080613357612320565b600b541461336b5761209b600a6035613126565b82613374612ebc565b10156133865761209b600e6034613126565b60105483111561339c5761209b60026036613126565b6133a8601054846143bd565b6010819055905061280173a731585ab05fc9f83555cf9bff8f58ee94e18f85846143f7565b60008060006133db81612808565b60006133e5611c06565b90508015613403576121c08160118111156133fc57fe5b6020613126565b6121d833866149b6565b6000611a9d8383604051806040016040528060118152602001706164646974696f6e206f766572666c6f7760781b815250614d32565b60008083831161345a575060009050818303612eb5565b50600390506000612eb5565b6000613470615b32565b61348860405180602001604052808681525084614d87565b9050600061349882600d54614db1565b905060006134a882600d5461340d565b905060006134c96040518060200160405280600a5481525084600e54614dd0565b905060006134ea604051806020016040528060095481525085601054614dd0565b9050600061350b604051806020016040528060085481525086600f54614dd0565b9050600061351e87600c54600c54614dd0565b600b8d9055600c819055600d869055600e8590556010849055600f839055604080518d8152602081018990528082018390526060810188905290519192507f4dec04e750ca11537cabcd8a9eab06494de08da3735bc8871cd41250e190bc04919081900360800190a16006546040805160248082018e905282518083039091018152604490910182526020810180516001600160e01b0316635efd023360e11b178152915181516001600160a01b0390941693919290918291908083835b602083106135fb5780518252601f1990920191602091820191016135dc565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461365d576040519150601f19603f3d011682016040523d82523d6000602084013e613662565b606091505b506000915061366e9050565b9c9b505050505050505050505050565b600080613689612320565b600b541461369d5761209b600a6039613126565b826136a6612ebc565b10156136b85761209b600e6038613126565b600f548311156136ce5761209b6002603a613126565b6136da600f54846143bd565b905080600f81905550612801600560009054906101000a90046001600160a01b03166001600160a01b031663f851a4406040518163ffffffff1660e01b815260040160206040518083038186803b15801561373457600080fd5b505afa158015613748573d6000803e3d6000fd5b505050506040513d602081101561375e57600080fd5b5051846143f7565b6005546040805163d02f735160e01b81523060048201526001600160a01b038781166024830152868116604483015285811660648301526084820185905291516000938493169163d02f73519160a480830192602092919082900301818787803b1580156137d357600080fd5b505af11580156137e7573d6000803e3d6000fd5b505050506040513d60208110156137fd57600080fd5b50519050801561381457612aa26003601d83614143565b846001600160a01b0316846001600160a01b0316141561383a57612aa26006601e613126565b613842615b45565b6001600160a01b0385166000908152601260205260409020546138659085613443565b602083018190528282600381111561387957fe5b600381111561388457fe5b905250600090508151600381111561389857fe5b146138c2576138b96009601c836000015160038111156138b457fe5b614143565b92505050611610565b6138e1846040518060200160405280666379da05b60000815250614df8565b608082018190526138f39085906143bd565b606082015261390061293c565b60c083018190528282600381111561391457fe5b600381111561391f57fe5b905250600090508151600381111561393357fe5b14613985576040805162461bcd60e51b815260206004820152601860248201527f65786368616e67652072617465206d617468206572726f720000000000000000604482015290519081900360640190fd5b6139a560405180602001604052808360c001518152508260800151614db1565b60a08201819052600e546139b89161340d565b60e082015260115460808201516139cf91906143bd565b6101008201526001600160a01b03861660009081526012602052604090205460608201516139fd91906141cc565b6040830181905282826003811115613a1157fe5b6003811115613a1c57fe5b9052506000905081516003811115613a3057fe5b14613a4c576138b96009601b836000015160038111156138b457fe5b60e0810151600e556101008101516011556020808201516001600160a01b0380881660008181526012855260408082209490945583860151928b16808252908490209290925560608501518351908152925191939092600080516020615d96833981519152929081900390910190a36080810151604080519182525130916001600160a01b03881691600080516020615d968339815191529181900360200190a360a081015160e082015160408051308152602081019390935282810191909152517fa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc59181900360600190a16000979650505050505050565b600080613b5181612808565b6000613b5b611c06565b90508015613b795761181b816011811115613b7257fe5b600a613126565b61182c3385614e20565b600080613b8f81612808565b6000613b99611c06565b90508015613bb05761181b81601181111561328557fe5b61182c3385600061447c565b6000806000613bca81612808565b6000613bd4611c06565b90508015613bff57613bf2816011811115613beb57fe5b6011613126565b935060009250613c969050565b846001600160a01b031663a6afed956040518163ffffffff1660e01b8152600401602060405180830381600087803b158015613c3a57600080fd5b505af1158015613c4e573d6000803e3d6000fd5b505050506040513d6020811015613c6457600080fd5b505190508015613c8457613bf2816011811115613c7d57fe5b6012613126565b613c9033888888615166565b93509350505b613c9f816128d1565b50935093915050565b60055460408051631200453160e11b81523060048201526001600160a01b0386811660248301528581166044830152606482018590529151600093849384939116916324008a629160848082019260209290919082900301818787803b158015613d1157600080fd5b505af1158015613d25573d6000803e3d6000fd5b505050506040513d6020811015613d3b57600080fd5b505190508015613d5f57613d526003604383614143565b925060009150613ff09050565b613d67612320565b600b5414613d7b57613d52600a6044613126565b613d83615b92565b6001600160a01b0386166000908152601460205260409020600101546060820152613dad86613298565b6080830181905260208301826003811115613dc457fe5b6003811115613dcf57fe5b9052506000905081602001516003811115613de657fe5b14613e1057613e0260096042836020015160038111156138b457fe5b935060009250613ff0915050565b600019851415613e295760808101516040820152613e31565b604081018590525b613e3f878260400151615658565b60e082018190526080820151613e5491613443565b60a0830181905260208301826003811115613e6b57fe5b6003811115613e7657fe5b9052506000905081602001516003811115613e8d57fe5b14613ec95760405162461bcd60e51b815260040180806020018281038252603a815260200180615d33603a913960400191505060405180910390fd5b613ed9600d548260e00151613443565b60c0830181905260208301826003811115613ef057fe5b6003811115613efb57fe5b9052506000905081602001516003811115613f1257fe5b14613f4e5760405162461bcd60e51b8152600401808060200182810382526031815260200180615db66031913960400191505060405180910390fd5b60a080820180516001600160a01b03808a16600081815260146020908152604091829020948555600c5460019095019490945560c0870151600d81905560e088015195518251948f16855294840192909252828101949094526060820192909252608081019190915290517f1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1929181900390910190a160e00151600093509150505b935093915050565b600073a731585ab05fc9f83555cf9bff8f58ee94e18f856001600160a01b031663dd86fea16040518163ffffffff1660e01b815260040160206040518083038186803b158015611ec757600080fd5b60008060008061405787876141cc565b9092509050600082600381111561406a57fe5b1461407b5750915060009050613ff0565b6140858186613443565b935093505050935093915050565b600061409d615b32565b6000806140b286670de0b6b3a764000061494c565b909250905060008260038111156140c557fe5b146140e457506040805160208101909152600081529092509050612eb5565b6000806140f1838861498b565b9092509050600082600381111561410457fe5b1461412657506040805160208101909152600081529094509250612eb5915050565b604080516020810190915290815260009890975095505050505050565b60007f45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa084601181111561417257fe5b84606381111561417e57fe5b604080519283526020830191909152818101859052519081900360600190a160038460118111156141ab57fe5b146141c1578360118111156141bc57fe5b611610565b506103e80192915050565b6000808383018481106141e457600092509050612eb5565b506002915060009050612eb5565b60006141fc615b32565b60008061420d86600001518661494c565b9092509050600082600381111561422057fe5b1461423f57506040805160208101909152600081529092509050612eb5565b60408051602081019091529081526000969095509350505050565b51670de0b6b3a7640000900490565b6114a7565b606060006060856001600160a01b0316856040518082805190602001908083835b602083106142ae5780518252601f19909201916020918201910161428f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614310576040519150601f19603f3d011682016040523d82523d6000602084013e614315565b606091505b5091509150816143b45780511561432f5780518082602001fd5b8360405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614379578181015183820152602001614361565b50505050905090810190601f1680156143a65780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b95945050505050565b6000611a9d8383604051806040016040528060158152602001747375627472616374696f6e20756e646572666c6f7760581b815250615835565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091018252602081810180516001600160e01b031663a9059cbb60e01b1790528251808401909352601983527f544f4b454e5f5452414e534645525f4f55545f4641494c454400000000000000908301526144789161588f565b5050565b6000821580614489575081155b6144c45760405162461bcd60e51b8152600401808060200182810382526034815260200180615e4f6034913960400191505060405180910390fd5b6144cc615bd8565b6144d461293c565b60408301819052602083018260038111156144eb57fe5b60038111156144f657fe5b905250600090508160200151600381111561450d57fe5b14614531576145296009602e836020015160038111156138b457fe5b915050611a9d565b83156145b25760608101849052604080516020810182529082015181526145589085612e68565b608083018190526020830182600381111561456f57fe5b600381111561457a57fe5b905250600090508160200151600381111561459157fe5b146145ad576145296009602c836020015160038111156138b457fe5b61462b565b6145ce836040518060200160405280846040015181525061591c565b60608301819052602083018260038111156145e557fe5b60038111156145f057fe5b905250600090508160200151600381111561460757fe5b14614623576145296009602d836020015160038111156138b457fe5b608081018390525b60055460608201516040805163eabe7d9160e01b81523060048201526001600160a01b03898116602483015260448201939093529051600093929092169163eabe7d919160648082019260209290919082900301818787803b15801561469057600080fd5b505af11580156146a4573d6000803e3d6000fd5b505050506040513d60208110156146ba57600080fd5b5051905080156146da576146d16003602b83614143565b92505050611a9d565b6146e2612320565b600b54146146f6576146d1600a602f613126565b6147066011548360600151613443565b60a084018190526020840182600381111561471d57fe5b600381111561472857fe5b905250600090508260200151600381111561473f57fe5b1461475b576146d160096031846020015160038111156138b457fe5b6001600160a01b03861660009081526012602052604090205460608301516147839190613443565b60c084018190526020840182600381111561479a57fe5b60038111156147a557fe5b90525060009050826020015160038111156147bc57fe5b146147d8576146d160096030846020015160038111156138b457fe5b81608001516147e5612ebc565b10156147f7576146d1600e6032613126565b60a082015160115560c08201516001600160a01b038716600090815260126020526040902055608082015161482d9087906143f7565b6060820151604080519182525130916001600160a01b03891691600080516020615d968339815191529181900360200190a36080820151606080840151604080516001600160a01b038b168152602081019490945283810191909152517fe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a9299281900390910190a160055460808301516060840151604080516351dff98960e01b81523060048201526001600160a01b038b81166024830152604482019490945260648101929092525191909216916351dff98991608480830192600092919082900301818387803b15801561492157600080fd5b505af1158015614935573d6000803e3d6000fd5b5060009250614942915050565b9695505050505050565b6000808361495f57506000905080612eb5565b8383028385828161496c57fe5b041461498057506002915060009050612eb5565b600092509050612eb5565b6000808261499f5750600190506000612eb5565b60008385816149aa57fe5b04915091509250929050565b60055460408051634ef4c3e160e01b81523060048201526001600160a01b03858116602483015260448201859052915160009384938493911691634ef4c3e19160648082019260209290919082900301818787803b158015614a1757600080fd5b505af1158015614a2b573d6000803e3d6000fd5b505050506040513d6020811015614a4157600080fd5b505190508015614a6557614a586003602183614143565b925060009150612eb59050565b614a6d612320565b600b5414614a8157614a58600a6024613126565b614a89615bd8565b614a9161293c565b6040830181905260208301826003811115614aa857fe5b6003811115614ab357fe5b9052506000905081602001516003811115614aca57fe5b14614af457614ae660096023836020015160038111156138b457fe5b935060009250612eb5915050565b614afe8686615658565b60c0820181905260408051602081018252908301518152614b1f919061591c565b6060830181905260208301826003811115614b3657fe5b6003811115614b4157fe5b9052506000905081602001516003811115614b5857fe5b14614baa576040805162461bcd60e51b815260206004820181905260248201527f4d494e545f45584348414e47455f43414c43554c4154494f4e5f4641494c4544604482015290519081900360640190fd5b614bba601154826060015161340d565b60808201526001600160a01b0386166000908152601260205260409020546060820151614be7919061340d565b60a0820181905260808201516011556001600160a01b0387166000818152601260209081526040918290209390935560c084015160608086015183519485529484019190915282820193909352517f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f929181900390910190a1606081015160408051918252516001600160a01b038816913091600080516020615d968339815191529181900360200190a360055460c08201516060830151604080516341c728b960e01b81523060048201526001600160a01b038b81166024830152604482019490945260648101929092525191909216916341c728b991608480830192600092919082900301818387803b158015614cff57600080fd5b505af1158015614d13573d6000803e3d6000fd5b5060009250614d20915050565b8160c001519350935050509250929050565b600083830182858210156114e45760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315614379578181015183820152602001614361565b614d8f615b32565b6040518060200160405280614da8856000015185615933565b90529392505050565b6000614dbb615b32565b614dc58484614d87565b90506116108161425a565b6000614dda615b32565b614de48585614d87565b90506143b4614df28261425a565b8461340d565b6000670de0b6b3a7640000614e11848460000151615933565b81614e1857fe5b049392505050565b6005546040805163368f515360e21b81523060048201526001600160a01b0385811660248301526044820185905291516000938493169163da3d454c91606480830192602092919082900301818787803b158015614e7d57600080fd5b505af1158015614e91573d6000803e3d6000fd5b505050506040513d6020811015614ea757600080fd5b505190508015614ec657614ebe6003601083614143565b9150506110f2565b614ece612320565b600b5414614ee257614ebe600a600c613126565b6000614eec612ebc565b905083811015614f0b57614f02600e600b613126565b925050506110f2565b614f13615c16565b614f1c86613298565b6020830181905282826003811115614f3057fe5b6003811115614f3b57fe5b9052506000905081516003811115614f4f57fe5b14614f7457614f6a600980836000015160038111156138b457fe5b93505050506110f2565b614f828160200151866141cc565b6040830181905282826003811115614f9657fe5b6003811115614fa157fe5b9052506000905081516003811115614fb557fe5b14614fd157614f6a6009600e836000015160038111156138b457fe5b6005546040808301518151631de6c8a560e21b8152306004820152602481019190915290516001600160a01b039092169163779b2294916044808201926020929091908290030181600087803b15801561502a57600080fd5b505af115801561503e573d6000803e3d6000fd5b505050506040513d602081101561505457600080fd5b50519250821561506b57614f6a6003601085614143565b615077600d54866141cc565b606083018190528282600381111561508b57fe5b600381111561509657fe5b90525060009050815160038111156150aa57fe5b146150c657614f6a6009600d836000015160038111156138b457fe5b6040808201516001600160a01b0388166000908152601460205291909120908155600c546001909101556060810151600d5561510286866143f7565b60408082015160608084015183516001600160a01b038b168152602081018a9052808501939093529082015290517f13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab809181900360800190a160009695505050505050565b60055460408051632fe3f38f60e11b81523060048201526001600160a01b0384811660248301528781166044830152868116606483015260848201869052915160009384938493911691635fc7e71e9160a48082019260209290919082900301818787803b1580156151d757600080fd5b505af11580156151eb573d6000803e3d6000fd5b505050506040513d602081101561520157600080fd5b505190508015615225576152186003601483614143565b92506000915061564f9050565b61522d612320565b600b541461524157615218600a6018613126565b615249612320565b846001600160a01b0316636c540baf6040518163ffffffff1660e01b815260040160206040518083038186803b15801561528257600080fd5b505afa158015615296573d6000803e3d6000fd5b505050506040513d60208110156152ac57600080fd5b5051146152bf57615218600a6013613126565b866001600160a01b0316866001600160a01b031614156152e55761521860066019613126565b846152f65761521860076017613126565b60001985141561530c5761521860076016613126565b60008061531a898989613ca8565b9092509050811561534a5761533b82601181111561533457fe5b601a613126565b94506000935061564f92505050565b6005546040805163c488847b60e01b81523060048201526001600160a01b038981166024830152604482018590528251600094859492169263c488847b926064808301939192829003018186803b1580156153a457600080fd5b505afa1580156153b8573d6000803e3d6000fd5b505050506040513d60408110156153ce57600080fd5b508051602090910151909250905081156154195760405162461bcd60e51b8152600401808060200182810382526033815260200180615de76033913960400191505060405180910390fd5b80886001600160a01b03166370a082318c6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561547057600080fd5b505afa158015615484573d6000803e3d6000fd5b505050506040513d602081101561549a57600080fd5b505110156154ef576040805162461bcd60e51b815260206004820152601860248201527f4c49515549444154455f5345495a455f544f4f5f4d5543480000000000000000604482015290519081900360640190fd5b60006001600160a01b0389163014156155155761550e308d8d85613766565b905061559f565b6040805163b2a02ff160e01b81526001600160a01b038e811660048301528d81166024830152604482018590529151918b169163b2a02ff1916064808201926020929091908290030181600087803b15801561557057600080fd5b505af1158015615584573d6000803e3d6000fd5b505050506040513d602081101561559a57600080fd5b505190505b80156155e9576040805162461bcd60e51b81526020600482015260146024820152731d1bdad95b881cd95a5e9d5c994819985a5b195960621b604482015290519081900360640190fd5b604080516001600160a01b03808f168252808e1660208301528183018790528b1660608201526080810184905290517f298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb529181900360a00190a16000975092955050505050505b94509492505050565b601554604080516370a0823160e01b8152306004820152905160009283926001600160a01b03909116916370a0823191602480820192602092909190829003018186803b1580156156a857600080fd5b505afa1580156156bc573d6000803e3d6000fd5b505050506040513d60208110156156d257600080fd5b5051604080516001600160a01b038716602482015230604482015260648082018790528251808303909101815260849091018252602081810180516001600160e01b03166323b872dd60e01b1790528251808401909352601883527f544f4b454e5f5452414e534645525f494e5f4641494c454400000000000000009083015291925061575f919061588f565b601554604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156157aa57600080fd5b505afa1580156157be573d6000803e3d6000fd5b505050506040513d60208110156157d457600080fd5b505190508181101561582d576040805162461bcd60e51b815260206004820152601a60248201527f544f4b454e5f5452414e534645525f494e5f4f564552464c4f57000000000000604482015290519081900360640190fd5b039392505050565b600081848411156158875760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315614379578181015183820152602001614361565b505050900390565b6015546060906158a9906001600160a01b0316848461426e565b805190915015615917578080602001905160208110156158c857600080fd5b505182906116b05760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315614379578181015183820152602001614361565b505050565b6000806000615929615b32565b612e7f8686615975565b6000611a9d83836040518060400160405280601781526020017f6d756c7469706c69636174696f6e206f766572666c6f770000000000000000008152506159d4565b600061597f615b32565b600080615994670de0b6b3a76400008761494c565b909250905060008260038111156159a757fe5b146159c657506040805160208101909152600081529092509050612eb5565b612eae818660000151614093565b60008315806159e1575082155b156159ee57506000611a9d565b838302838582816159fb57fe5b041483906114e45760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315614379578181015183820152602001614361565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10615a8b57805160ff1916838001178555615ab8565b82800160010185558215615ab8579182015b82811115615ab8578251825591602001919060010190615a9d565b506118e8929150615c3f565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10615b055782800160ff19823516178555615ab8565b82800160010185558215615ab8579182015b82811115615ab8578235825591602001919060010190615b17565b6040518060200160405280600081525090565b604080516101208101909152806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040805161010081019091528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040805160e0810190915280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b604080516080810190915280600081526020016000815260200160008152602001600081525090565b6114a491905b808211156118e85760008155600101615c4556fe6d61726b6574206d6179206f6e6c7920626520696e697469616c697a6564206f6e6365696e697469616c2065786368616e67652072617465206d7573742062652067726561746572207468616e207a65726f2e6f6e6c79207468652061646d696e206d6179207365742074686520636f6d702d6c696b652064656c656761746573657474696e6720696e7465726573742072617465206d6f64656c206661696c6564626f72726f7742616c616e636553746f7265643a20626f72726f7742616c616e636553746f726564496e7465726e616c206661696c656452455041595f424f52524f575f4e45575f4143434f554e545f424f52524f575f42414c414e43455f43414c43554c4154494f4e5f4641494c45446f6e6c7920467573652061646d696e206d617920696e697469616c697a6520746865206d61726b6574ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef52455041595f424f52524f575f4e45575f544f54414c5f42414c414e43455f43414c43554c4154494f4e5f4641494c45444c49515549444154455f434f4d5054524f4c4c45525f43414c43554c4154455f414d4f554e545f5345495a455f4641494c454465786368616e67655261746553746f7265643a2065786368616e67655261746553746f726564496e7465726e616c206661696c65646f6e65206f662072656465656d546f6b656e73496e206f722072656465656d416d6f756e74496e206d757374206265207a65726fa265627a7a72315820345834ea73eea58be7ba68700da98535b7a57f02e7c6c5859483e4dc77f12c4364736f6c63430005110032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH2 0x5EB7 DUP1 PUSH2 0x13 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x376 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x852A12E3 GT PUSH2 0x1D1 JUMPI DUP1 PUSH4 0xAE9D70B0 GT PUSH2 0x102 JUMPI DUP1 PUSH4 0xDC028AB1 GT PUSH2 0xA0 JUMPI DUP1 PUSH4 0xF5E3C462 GT PUSH2 0x6F JUMPI DUP1 PUSH4 0xF5E3C462 EQ PUSH2 0xF69 JUMPI DUP1 PUSH4 0xF8F9DA28 EQ PUSH2 0xFAC JUMPI DUP1 PUSH4 0xFCA7820B EQ PUSH2 0xFC1 JUMPI DUP1 PUSH4 0xFE9C44AE EQ PUSH2 0xFEB JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0xDC028AB1 EQ PUSH2 0xED1 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0xEE6 JUMPI DUP1 PUSH4 0xF2B3ABBD EQ PUSH2 0xF21 JUMPI DUP1 PUSH4 0xF3FDB15A EQ PUSH2 0xF54 JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0xC37F68E2 GT PUSH2 0xDC JUMPI DUP1 PUSH4 0xC37F68E2 EQ PUSH2 0xE0F JUMPI DUP1 PUSH4 0xC5EBEAEC EQ PUSH2 0xE68 JUMPI DUP1 PUSH4 0xDB006A75 EQ PUSH2 0xE92 JUMPI DUP1 PUSH4 0xDBFE7C19 EQ PUSH2 0xEBC JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0xAE9D70B0 EQ PUSH2 0xDA2 JUMPI DUP1 PUSH4 0xB2A02FF1 EQ PUSH2 0xDB7 JUMPI DUP1 PUSH4 0xBD6D894D EQ PUSH2 0xDFA JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0xA0712D68 GT PUSH2 0x16F JUMPI DUP1 PUSH4 0xA7B820DF GT PUSH2 0x149 JUMPI DUP1 PUSH4 0xA7B820DF EQ PUSH2 0xD15 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0xD3F JUMPI DUP1 PUSH4 0xAA5AF0FD EQ PUSH2 0xD78 JUMPI DUP1 PUSH4 0xAC784DDC EQ PUSH2 0xD8D JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0xA0712D68 EQ PUSH2 0xB7A JUMPI DUP1 PUSH4 0xA0B0D289 EQ PUSH2 0xBA4 JUMPI DUP1 PUSH4 0xA6AFED95 EQ PUSH2 0xD00 JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0x91DD36C6 GT PUSH2 0x1AB JUMPI DUP1 PUSH4 0x91DD36C6 EQ PUSH2 0xADE JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0xB08 JUMPI DUP1 PUSH4 0x95DD9193 EQ PUSH2 0xB1D JUMPI DUP1 PUSH4 0xA03DCE8D EQ PUSH2 0xB50 JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0x852A12E3 EQ PUSH2 0xA8A JUMPI DUP1 PUSH4 0x8D02D9A1 EQ PUSH2 0xAB4 JUMPI DUP1 PUSH4 0x8F840DDD EQ PUSH2 0xAC9 JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0x3B1D21A2 GT PUSH2 0x2AB JUMPI DUP1 PUSH4 0x61FEACFF GT PUSH2 0x249 JUMPI DUP1 PUSH4 0x6F307DC3 GT PUSH2 0x223 JUMPI DUP1 PUSH4 0x6F307DC3 EQ PUSH2 0x9FA JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0xA0F JUMPI DUP1 PUSH4 0x73ACEE98 EQ PUSH2 0xA42 JUMPI DUP1 PUSH4 0x7F1E06BE EQ PUSH2 0xA57 JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0x61FEACFF EQ PUSH2 0x9BB JUMPI DUP1 PUSH4 0x6752E702 EQ PUSH2 0x9D0 JUMPI DUP1 PUSH4 0x6C540BAF EQ PUSH2 0x9E5 JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0x56E67728 GT PUSH2 0x285 JUMPI DUP1 PUSH4 0x56E67728 EQ PUSH2 0x8D0 JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x94B JUMPI DUP1 PUSH4 0x5FE3B567 EQ PUSH2 0x97C JUMPI DUP1 PUSH4 0x601A0BF1 EQ PUSH2 0x991 JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0x3B1D21A2 EQ PUSH2 0x814 JUMPI DUP1 PUSH4 0x47BD3718 EQ PUSH2 0x829 JUMPI DUP1 PUSH4 0x50D85B73 EQ PUSH2 0x83E JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0x182DF0F5 GT PUSH2 0x318 JUMPI DUP1 PUSH4 0x2608F818 GT PUSH2 0x2F2 JUMPI DUP1 PUSH4 0x2608F818 EQ PUSH2 0x6B2 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x6EB JUMPI DUP1 PUSH4 0x34154D4C EQ PUSH2 0x716 JUMPI DUP1 PUSH4 0x3AF9E669 EQ PUSH2 0x7E1 JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0x182DF0F5 EQ PUSH2 0x652 JUMPI DUP1 PUSH4 0x1DB78944 EQ PUSH2 0x667 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x66F JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0xF8855E8 GT PUSH2 0x354 JUMPI DUP1 PUSH4 0xF8855E8 EQ PUSH2 0x48E JUMPI DUP1 PUSH4 0x173B9904 EQ PUSH2 0x5F5 JUMPI DUP1 PUSH4 0x17BFDFBC EQ PUSH2 0x60A JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x63D JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x37B JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x405 JUMPI DUP1 PUSH4 0xE752702 EQ PUSH2 0x452 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x387 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x390 PUSH2 0x1000 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3CA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3B2 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x3F7 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x411 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x43E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x428 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x108B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x45E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x475 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x10F8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x49A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5F3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x4B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x4EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x4FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x51F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x571 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x583 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x5A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP POP PUSH1 0xFF DUP4 CALLDATALOAD AND SWAP4 POP POP POP PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x110E JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x601 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x13BC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x616 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x62D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x13C2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x649 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x143E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x65E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x1444 JUMP JUMPDEST PUSH2 0x5F3 PUSH2 0x14A7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x67B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x43E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x692 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x14A9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x6D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x14D7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x700 PUSH2 0x14ED JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x722 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5F3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x739 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x753 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x765 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x786 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x7A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x7B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x7D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x14F6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x804 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1562 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x820 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x1618 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x835 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x1627 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x84A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5F3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x861 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x892 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x8A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x8C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x162D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5F3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x90D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x91F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x940 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x16B6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x957 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x960 PUSH2 0x17C9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x988 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x960 PUSH2 0x17D8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x99D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x17E7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x1838 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x183E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x1849 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA06 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x960 PUSH2 0x184F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA1B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA32 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x185E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA4E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x1879 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA63 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5F3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA7A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x18EC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAAD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1991 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x199C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAD5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x19A2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB01 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x19A8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x390 PUSH2 0x19E5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB29 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB40 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1A40 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB73 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1AA4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1AE1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBB0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5F3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0xBC7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP3 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP1 SWAP3 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xC02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xC14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0xC35 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xC87 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xC99 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0xCBA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP POP DUP3 CALLDATALOAD SWAP4 POP POP POP PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1AED JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD0C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x1C06 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD21 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1DCB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD4B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x43E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xD62 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1E08 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD84 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x1E35 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD99 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x43E PUSH2 0x1E3B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xDAE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x1E40 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xDC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xDDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x1EF8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE06 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x1F1C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE1B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE42 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE32 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1F90 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP5 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP4 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE74 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x2025 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE9E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xEB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x2030 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEC8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x203B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEDD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x2041 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xF09 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x2047 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF2D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF44 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2072 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF60 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x960 PUSH2 0x20AC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF75 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xF8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 SWAP1 SWAP2 ADD CALLDATALOAD AND PUSH2 0x20BB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xFB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x20D3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xFCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xFE4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x2148 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xFF7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x43E PUSH2 0x2185 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP4 AND DUP5 SWAP1 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x1083 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1058 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1083 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1066 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP7 SWAP1 SSTORE DUP2 MLOAD DUP7 DUP2 MSTORE SWAP2 MLOAD SWAP4 SWAP5 SWAP4 SWAP1 SWAP3 DUP5 SWAP3 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1104 DUP4 PUSH2 0x218A JUMP JUMPDEST POP SWAP2 POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST CALLER PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 EQ PUSH2 0x1160 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5D6D PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xB SLOAD ISZERO DUP1 ISZERO PUSH2 0x1170 JUMPI POP PUSH1 0xC SLOAD ISZERO JUMPDEST PUSH2 0x11AB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5C5A PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x7 DUP7 SWAP1 SSTORE DUP6 PUSH2 0x11EC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x30 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5C7D PUSH1 0x30 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x11F7 DUP10 PUSH2 0x21ED JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x124C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x73657474696E6720636F6D7074726F6C6C6572206661696C6564000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1254 PUSH2 0x2320 JUMP JUMPDEST PUSH1 0xB SSTORE PUSH8 0xDE0B6B3A7640000 PUSH1 0xC SSTORE PUSH2 0x126C DUP9 PUSH2 0x2324 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x12AB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5CDA PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP6 MLOAD PUSH2 0x12BE SWAP1 PUSH1 0x2 SWAP1 PUSH1 0x20 DUP10 ADD SWAP1 PUSH2 0x5A4A JUMP JUMPDEST POP DUP5 MLOAD PUSH2 0x12D2 SWAP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP9 ADD SWAP1 PUSH2 0x5A4A JUMP JUMPDEST POP PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF DUP7 AND OR SWAP1 SSTORE PUSH2 0x12EB DUP4 PUSH2 0x262A JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1340 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x73657474696E67207265736572766520666163746F72206661696C6564000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1349 DUP3 PUSH2 0x26E3 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x139E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x73657474696E672061646D696E20666565206661696C65640000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF PUSH1 0xB0 SHL NOT AND PUSH1 0x1 PUSH1 0xB0 SHL OR SWAP1 SSTORE POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0xA SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x13CE DUP2 PUSH2 0x2808 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x13D8 PUSH2 0x1C06 JUMP JUMPDEST EQ PUSH2 0x1423 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x1858D8DC9D59481A5B9D195C995CDD0819985A5B1959 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x142C DUP4 PUSH2 0x1A40 JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH2 0x1438 DUP2 PUSH2 0x28D1 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x11 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1451 PUSH2 0x293C JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1464 JUMPI INVALID JUMPDEST EQ PUSH2 0x14A0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x35 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5E1A PUSH1 0x35 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP2 POP POP JUMPDEST SWAP1 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x14B5 DUP2 PUSH2 0x2808 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14C3 CALLER DUP8 DUP8 DUP8 PUSH2 0x29FC JUMP JUMPDEST EQ SWAP2 POP PUSH2 0x14CF DUP2 PUSH2 0x28D1 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x14E4 DUP5 DUP5 PUSH2 0x2C88 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x14FE PUSH2 0x2CED JUMP JUMPDEST PUSH2 0x1542 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x31B0B63632B9103737BA1030B236B4B7 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x154E PUSH1 0x2 DUP6 DUP6 PUSH2 0x5AC4 JUMP JUMPDEST POP PUSH2 0x155B PUSH1 0x3 DUP4 DUP4 PUSH2 0x5AC4 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x156C PUSH2 0x5B32 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x157F PUSH2 0x1F1C JUMP JUMPDEST SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP SWAP1 DUP2 SWAP1 PUSH2 0x15AB SWAP1 DUP5 SWAP1 PUSH2 0x2E68 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x15BE JUMPI INVALID JUMPDEST EQ PUSH2 0x1610 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x62616C616E636520636F756C64206E6F742062652063616C63756C6174656400 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1622 PUSH2 0x2EBC JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0xD SLOAD DUP2 JUMP JUMPDEST PUSH2 0x1635 PUSH2 0x2CED JUMP JUMPDEST PUSH2 0x166F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x10B0B236B4B7 PUSH1 0xD1 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x16B0 DUP5 DUP5 DUP5 DUP5 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x2F0A SWAP3 POP POP POP JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH20 0xAFD2AADE64E6EA690173F6DE59FC09F5C9190D74 PUSH20 0xCAE4210E6676727EA4E0FD9BA5DFB95831356A16 CALLER ADDRESS EQ DUP1 PUSH2 0x16F1 JUMPI POP PUSH2 0x16F1 PUSH2 0x2CED JUMP JUMPDEST PUSH2 0x172A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x5 PUSH1 0x24 DUP3 ADD MSTORE PUSH5 0x10B9B2B633 PUSH1 0xD9 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1734 PUSH2 0x1C06 JUMP JUMPDEST EQ PUSH2 0x1770 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x7 PUSH1 0x24 DUP3 ADD MSTORE PUSH7 0x21616363727565 PUSH1 0xC8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD SWAP1 DUP5 SWAP1 SSTORE SWAP5 DUP7 AND DUP1 DUP5 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP4 SWAP3 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5D96 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 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 0x0 DUP1 PUSH2 0x17F3 DUP2 PUSH2 0x2808 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x17FD PUSH2 0x1C06 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1823 JUMPI PUSH2 0x181B DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x1814 JUMPI INVALID JUMPDEST PUSH1 0x3B PUSH2 0x3126 JUMP JUMPDEST SWAP3 POP POP PUSH2 0x142F JUMP JUMPDEST PUSH2 0x182C DUP5 PUSH2 0x318C JUMP JUMPDEST SWAP3 POP POP PUSH2 0x1438 DUP2 PUSH2 0x28D1 JUMP JUMPDEST PUSH1 0xF SLOAD DUP2 JUMP JUMPDEST PUSH7 0x6379DA05B60000 DUP2 JUMP JUMPDEST PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH1 0x15 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1885 DUP2 PUSH2 0x2808 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x188F PUSH2 0x1C06 JUMP JUMPDEST EQ PUSH2 0x18DA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x1858D8DC9D59481A5B9D195C995CDD0819985A5B1959 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0xD SLOAD SWAP2 POP PUSH2 0x18E8 DUP2 PUSH2 0x28D1 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0x18F4 PUSH2 0x2CED JUMP JUMPDEST PUSH2 0x192F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5CAD PUSH1 0x2D SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x15 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x17066A57 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x5C19A95C SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x197D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x155B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x10F2 DUP3 PUSH2 0x3258 JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xE SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x19B4 DUP2 PUSH2 0x2808 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x19BE PUSH2 0x1C06 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x19DC JUMPI PUSH2 0x181B DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x19D5 JUMPI INVALID JUMPDEST PUSH1 0x52 PUSH2 0x3126 JUMP JUMPDEST PUSH2 0x182C DUP5 PUSH2 0x26E3 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x1083 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1058 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1083 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1A4E DUP5 PUSH2 0x3298 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1A61 JUMPI INVALID JUMPDEST EQ PUSH2 0x1A9D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x37 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5CFC PUSH1 0x37 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1AB0 DUP2 PUSH2 0x2808 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1ABA PUSH2 0x1C06 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1AD8 JUMPI PUSH2 0x181B DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x1AD1 JUMPI INVALID JUMPDEST PUSH1 0x33 PUSH2 0x3126 JUMP JUMPDEST PUSH2 0x182C DUP5 PUSH2 0x334C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1104 DUP4 PUSH2 0x33CD JUMP JUMPDEST PUSH1 0x0 PUSH8 0x2C68AF0BB140000 SWAP1 POP PUSH1 0x0 DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x313CE567 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 0x1B35 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1B49 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1B5F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH2 0x1B73 DUP9 DUP9 DUP5 DUP10 DUP10 DUP7 DUP11 DUP11 PUSH2 0x110E JUMP JUMPDEST PUSH1 0x15 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP2 DUP3 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x18160DDD PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP1 SWAP2 AND SWAP2 PUSH4 0x18160DDD SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1BCF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1BE3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1BF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1C11 PUSH2 0x2320 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0xB SLOAD EQ ISZERO PUSH2 0x1C27 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x14A4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C31 PUSH2 0x2EBC JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x6 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 PUSH4 0x15F24053 DUP4 PUSH1 0xD SLOAD PUSH2 0x1C76 PUSH1 0xE SLOAD PUSH2 0x1C71 PUSH1 0xF SLOAD PUSH1 0x10 SLOAD PUSH2 0x340D JUMP JUMPDEST PUSH2 0x340D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1CB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1CCC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1CE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH6 0x48C27395000 DUP2 GT ISZERO PUSH2 0x1D41 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x626F72726F772072617465206973206162737572646C79206869676800000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1D50 DUP6 PUSH1 0xB SLOAD PUSH2 0x3443 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1D63 JUMPI INVALID JUMPDEST EQ PUSH2 0x1DB5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x636F756C64206E6F742063616C63756C61746520626C6F636B2064656C746100 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1DC1 DUP6 DUP6 DUP6 DUP5 PUSH2 0x3466 JUMP JUMPDEST SWAP6 POP POP POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1DD7 DUP2 PUSH2 0x2808 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1DE1 PUSH2 0x1C06 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1DFF JUMPI PUSH2 0x181B DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x1DF8 JUMPI INVALID JUMPDEST PUSH1 0x37 PUSH2 0x3126 JUMP JUMPDEST PUSH2 0x182C DUP5 PUSH2 0x367E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1E14 DUP2 PUSH2 0x2808 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E22 CALLER CALLER DUP8 DUP8 PUSH2 0x29FC JUMP JUMPDEST EQ SWAP2 POP PUSH2 0x1E2E DUP2 PUSH2 0x28D1 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xC SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xB8168816 PUSH2 0x1E5C PUSH2 0x2EBC JUMP JUMPDEST PUSH1 0xD SLOAD PUSH2 0x1E73 PUSH1 0xE SLOAD PUSH2 0x1C71 PUSH1 0xF SLOAD PUSH1 0x10 SLOAD PUSH2 0x340D JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x9 SLOAD PUSH1 0xA SLOAD ADD ADD PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1EC7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1EDB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1EF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH2 0x1F05 DUP2 PUSH2 0x2808 JUMP JUMPDEST PUSH2 0x1F11 CALLER DUP7 DUP7 DUP7 PUSH2 0x3766 JUMP JUMPDEST SWAP2 POP PUSH2 0x14CF DUP2 PUSH2 0x28D1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1F28 DUP2 PUSH2 0x2808 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F32 PUSH2 0x1C06 JUMP JUMPDEST EQ PUSH2 0x1F7D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x1858D8DC9D59481A5B9D195C995CDD0819985A5B1959 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1F85 PUSH2 0x1444 JUMP JUMPDEST SWAP2 POP PUSH2 0x18E8 DUP2 PUSH2 0x28D1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP2 SWAP1 DUP2 SWAP1 DUP2 SWAP1 DUP2 DUP1 DUP1 PUSH2 0x1FBB DUP10 PUSH2 0x3298 JUMP JUMPDEST SWAP4 POP SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1FCD JUMPI INVALID JUMPDEST EQ PUSH2 0x1FEB JUMPI PUSH1 0x9 JUMPDEST SWAP8 POP PUSH1 0x0 SWAP7 POP DUP7 SWAP6 POP DUP6 SWAP5 POP PUSH2 0x201E SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x1FF3 PUSH2 0x293C JUMP JUMPDEST SWAP3 POP SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2005 JUMPI INVALID JUMPDEST EQ PUSH2 0x2011 JUMPI PUSH1 0x9 PUSH2 0x1FD5 JUMP JUMPDEST POP PUSH1 0x0 SWAP7 POP SWAP2 SWAP5 POP SWAP3 POP SWAP1 POP JUMPDEST SWAP2 SWAP4 POP SWAP2 SWAP4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10F2 DUP3 PUSH2 0x3B45 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10F2 DUP3 PUSH2 0x3B83 JUMP JUMPDEST PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x10 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x207D PUSH2 0x1C06 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x20A3 JUMPI PUSH2 0x209B DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x2094 JUMPI INVALID JUMPDEST PUSH1 0x4B PUSH2 0x3126 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1109 JUMP JUMPDEST PUSH2 0x1A9D DUP4 PUSH2 0x2324 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x20C9 DUP6 DUP6 DUP6 PUSH2 0x3BBC JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x15F24053 PUSH2 0x20EF PUSH2 0x2EBC JUMP JUMPDEST PUSH1 0xD SLOAD PUSH2 0x2106 PUSH1 0xE SLOAD PUSH2 0x1C71 PUSH1 0xF SLOAD PUSH1 0x10 SLOAD PUSH2 0x340D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1EC7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2154 DUP2 PUSH2 0x2808 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x215E PUSH2 0x1C06 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x217C JUMPI PUSH2 0x181B DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x2175 JUMPI INVALID JUMPDEST PUSH1 0x59 PUSH2 0x3126 JUMP JUMPDEST PUSH2 0x182C DUP5 PUSH2 0x262A JUMP JUMPDEST PUSH1 0x1 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x2198 DUP2 PUSH2 0x2808 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x21A2 PUSH2 0x1C06 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x21CD JUMPI PUSH2 0x21C0 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x21B9 JUMPI INVALID JUMPDEST PUSH1 0x41 PUSH2 0x3126 JUMP JUMPDEST SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x21DE SWAP1 POP JUMP JUMPDEST PUSH2 0x21D8 CALLER CALLER DUP8 PUSH2 0x3CA8 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP JUMPDEST PUSH2 0x21E7 DUP2 PUSH2 0x28D1 JUMP JUMPDEST POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH3 0x7E3DD2 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 0x2240 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2254 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x226A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x22BD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6D61726B6572206D6574686F642072657475726E65642066616C736500000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP3 DUP5 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD PUSH32 0x7AC369DBD14FA5EA3F473ED67CC9D598964A77501540BA6751EB0B3DECF5870D SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x0 PUSH2 0x1A9D JUMP JUMPDEST NUMBER SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x232F PUSH2 0x2CED JUMP JUMPDEST PUSH2 0x233F JUMPI PUSH2 0x209B PUSH1 0x1 PUSH1 0x4D PUSH2 0x3126 JUMP JUMPDEST PUSH2 0x2347 PUSH2 0x2320 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x235B JUMPI PUSH2 0x209B PUSH1 0xA PUSH1 0x4C PUSH2 0x3126 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x2191F92A 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 0x23AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x23C0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x23D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x2429 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6D61726B6572206D6574686F642072657475726E65642066616C736500000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP3 DUP5 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD PUSH32 0xEDFFC32E068C7C95DFD4BDFD5C4D939A084D6B11C4199EAC8436ED234D72F926 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0x255B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x6CC1140B PUSH1 0xE1 SHL OR DUP2 MSTORE SWAP2 MLOAD DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP4 DUP3 SWAP2 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x24F0 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x24D1 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2552 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 0x2557 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP POP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x742A137B PUSH1 0xE1 SHL OR DUP2 MSTORE SWAP2 MLOAD DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP4 DUP3 SWAP2 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x25B7 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x2598 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2619 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 0x261E JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP PUSH1 0x0 SWAP2 POP PUSH2 0x1A9D SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2634 PUSH2 0x2CED JUMP JUMPDEST PUSH2 0x264B JUMPI PUSH2 0x2644 PUSH1 0x1 PUSH1 0x5A PUSH2 0x3126 JUMP JUMPDEST SWAP1 POP PUSH2 0x1109 JUMP JUMPDEST PUSH2 0x2653 PUSH2 0x2320 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x2667 JUMPI PUSH2 0x2644 PUSH1 0xA PUSH1 0x5B PUSH2 0x3126 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH2 0x2687 PUSH2 0x267F DUP5 PUSH1 0x8 SLOAD PUSH2 0x340D JUMP JUMPDEST PUSH1 0x9 SLOAD PUSH2 0x340D JUMP JUMPDEST GT ISZERO PUSH2 0x2699 JUMPI PUSH2 0x2644 PUSH1 0x2 PUSH1 0x5C PUSH2 0x3126 JUMP JUMPDEST PUSH1 0xA DUP1 SLOAD SWAP1 DUP4 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP6 SWAP1 MSTORE DUP2 MLOAD PUSH32 0xAAA68312E2EA9D50E16AF5068410AB56E1A1FD06037B1A35664812C30F821460 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x0 PUSH2 0x1A9D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x26ED PUSH2 0x2320 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x2701 JUMPI PUSH2 0x2644 PUSH1 0xA PUSH1 0x54 PUSH2 0x3126 JUMP JUMPDEST PUSH1 0x0 NOT DUP3 EQ ISZERO PUSH2 0x2711 JUMPI PUSH1 0x8 SLOAD SWAP2 POP JUMPDEST PUSH1 0x0 PUSH2 0x271B PUSH2 0x3FF8 JUMP JUMPDEST SWAP1 POP PUSH8 0xDE0B6B3A7640000 PUSH2 0x273B PUSH2 0x2735 PUSH1 0xA SLOAD DUP7 PUSH2 0x340D JUMP JUMPDEST DUP4 PUSH2 0x340D JUMP JUMPDEST GT ISZERO PUSH2 0x274D JUMPI PUSH2 0x209B PUSH1 0x2 PUSH1 0x55 PUSH2 0x3126 JUMP JUMPDEST DUP3 PUSH1 0x8 SLOAD EQ PUSH2 0x27B3 JUMPI PUSH2 0x275E PUSH2 0x2CED JUMP JUMPDEST PUSH2 0x276E JUMPI PUSH2 0x209B PUSH1 0x1 PUSH1 0x53 PUSH2 0x3126 JUMP JUMPDEST PUSH1 0x8 DUP1 SLOAD SWAP1 DUP5 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP7 SWAP1 MSTORE DUP2 MLOAD PUSH32 0xCDD0B588250E1398549F79CFDB8217C186688822905D6715B0834EA1C865594A SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMPDEST DUP1 PUSH1 0x9 SLOAD EQ PUSH2 0x2801 JUMPI PUSH1 0x9 DUP1 SLOAD SWAP1 DUP3 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP2 MLOAD PUSH32 0x92EEF861B6533B7D3417F39C2AD7B460EED4E88A32FA3604F30E718B7602E7DC SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMPDEST PUSH1 0x0 PUSH2 0x1A9D JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0xB0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2853 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xA PUSH1 0x24 DUP3 ADD MSTORE PUSH10 0x1C994B595B9D195C9959 PUSH1 0xB2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x28C1 JUMPI PUSH1 0x5 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 PUSH4 0xC90C20B1 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x28A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x28BC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF PUSH1 0xB0 SHL NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF PUSH1 0xB0 SHL NOT AND PUSH1 0x1 PUSH1 0xB0 SHL OR SWAP1 SSTORE DUP1 PUSH2 0x2939 JUMPI PUSH1 0x5 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 PUSH4 0x632E5142 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x197D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x11 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP1 PUSH2 0x2957 JUMPI POP POP PUSH1 0x7 SLOAD PUSH1 0x0 SWAP2 POP PUSH2 0x29F8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2961 PUSH2 0x2EBC JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x296D PUSH2 0x5B32 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x298F DUP5 PUSH1 0xD SLOAD PUSH2 0x298A PUSH1 0xE SLOAD PUSH2 0x1C71 PUSH1 0xF SLOAD PUSH1 0x10 SLOAD PUSH2 0x340D JUMP JUMPDEST PUSH2 0x4047 JUMP JUMPDEST SWAP4 POP SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x29A1 JUMPI INVALID JUMPDEST EQ PUSH2 0x29B6 JUMPI SWAP6 POP PUSH1 0x0 SWAP5 POP PUSH2 0x29F8 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x29C0 DUP4 DUP7 PUSH2 0x4093 JUMP JUMPDEST SWAP3 POP SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x29D2 JUMPI INVALID JUMPDEST EQ PUSH2 0x29E7 JUMPI SWAP6 POP PUSH1 0x0 SWAP5 POP PUSH2 0x29F8 SWAP4 POP POP POP POP JUMP JUMPDEST POP MLOAD PUSH1 0x0 SWAP6 POP SWAP4 POP PUSH2 0x29F8 SWAP3 POP POP POP JUMP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x17B9B84B PUSH1 0xE3 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP6 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 AND SWAP2 PUSH4 0xBDCDC258 SWAP2 PUSH1 0x84 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2A61 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2A75 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2A8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x2AAA JUMPI PUSH2 0x2AA2 PUSH1 0x3 PUSH1 0x5D DUP4 PUSH2 0x4143 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1610 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x2AD0 JUMPI PUSH2 0x2AA2 PUSH1 0x2 PUSH1 0x5E PUSH2 0x3126 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND SWAP1 DUP8 AND EQ ISZERO PUSH2 0x2AEF JUMPI POP PUSH1 0x0 NOT PUSH2 0x2B17 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP11 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x2B27 DUP6 DUP10 PUSH2 0x3443 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP PUSH1 0x0 DUP5 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2B3A JUMPI INVALID JUMPDEST EQ PUSH2 0x2B58 JUMPI PUSH2 0x2B4B PUSH1 0x9 PUSH1 0x5E PUSH2 0x3126 JUMP JUMPDEST SWAP7 POP POP POP POP POP POP POP PUSH2 0x1610 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2B7B SWAP1 DUP10 PUSH2 0x3443 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP2 POP PUSH1 0x0 DUP5 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2B8E JUMPI INVALID JUMPDEST EQ PUSH2 0x2B9F JUMPI PUSH2 0x2B4B PUSH1 0x9 PUSH1 0x5F PUSH2 0x3126 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2BC2 SWAP1 DUP10 PUSH2 0x41CC JUMP JUMPDEST SWAP1 SWAP5 POP SWAP1 POP PUSH1 0x0 DUP5 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2BD5 JUMPI INVALID JUMPDEST EQ PUSH2 0x2BE6 JUMPI PUSH2 0x2B4B PUSH1 0x9 PUSH1 0x60 PUSH2 0x3126 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP6 SWAP1 SSTORE SWAP2 DUP12 AND DUP2 MSTORE KECCAK256 DUP2 SWAP1 SSTORE PUSH1 0x0 NOT DUP6 EQ PUSH2 0x2C3E JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP16 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP4 SWAP1 SSTORE JUMPDEST DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5D96 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP11 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x0 SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x2C96 DUP2 PUSH2 0x2808 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2CA0 PUSH2 0x1C06 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x2CCB JUMPI PUSH2 0x2CBE DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x2CB7 JUMPI INVALID JUMPDEST PUSH1 0x40 PUSH2 0x3126 JUMP JUMPDEST SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x2CDC SWAP1 POP JUMP JUMPDEST PUSH2 0x2CD6 CALLER DUP8 DUP8 PUSH2 0x3CA8 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP JUMPDEST PUSH2 0x2CE5 DUP2 PUSH2 0x28D1 JUMP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x3E14691 PUSH1 0xE6 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 DUP3 SWAP2 PUSH4 0xF851A440 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2D35 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2D49 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2D5F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ DUP1 ISZERO PUSH2 0x2DD9 JUMPI POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA755EC2 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 0x2DAC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2DC0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2DD6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST DUP1 PUSH2 0x14A0 JUMPI POP CALLER PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 EQ DUP1 ISZERO PUSH2 0x14A0 JUMPI POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x2F1069BA 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 0x2E36 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2E4A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2E60 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x2E75 PUSH2 0x5B32 JUMP JUMPDEST PUSH2 0x2E7F DUP7 DUP7 PUSH2 0x41F2 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2E92 JUMPI INVALID JUMPDEST EQ PUSH2 0x2EA3 JUMPI POP SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH2 0x2EB5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2EAE DUP3 PUSH2 0x425A JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x15 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 DUP3 SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2E36 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x38E6A073 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP2 DUP6 AND PUSH1 0x24 DUP4 ADD MSTORE DUP4 ISZERO ISZERO PUSH1 0x44 DUP4 ADD MSTORE MLOAD PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 SWAP2 PUSH4 0x71CD40E6 SWAP2 PUSH1 0x64 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2F77 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2F8B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2FA1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x2FDC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x5 PUSH1 0x24 DUP3 ADD MSTORE PUSH5 0x85A5B5C1B PUSH1 0xDA SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 ISZERO PUSH2 0x2FEA JUMPI PUSH2 0x2FEA PUSH2 0x4269 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND OR DUP4 SSTORE PUSH1 0x40 MLOAD PUSH1 0x20 PUSH1 0x24 DUP3 ADD DUP2 DUP2 MSTORE DUP7 MLOAD PUSH1 0x44 DUP5 ADD MSTORE DUP7 MLOAD SWAP4 SWAP1 SWAP5 AND SWAP5 PUSH2 0x30D7 SWAP5 ADDRESS SWAP5 DUP9 SWAP5 SWAP2 SWAP4 DUP5 SWAP4 PUSH1 0x64 SWAP1 SWAP4 ADD SWAP3 SWAP1 DUP7 ADD SWAP2 SWAP1 DUP2 SWAP1 DUP5 SWAP1 DUP5 SWAP1 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3057 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x303F JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x3084 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xADCCEE5 PUSH1 0xE3 SHL OR SWAP1 MSTORE DUP2 MLOAD DUP1 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x7 DUP3 MSTORE PUSH7 0x216265636F6D65 PUSH1 0xC8 SHL SWAP1 DUP3 ADD MSTORE SWAP1 SWAP4 POP SWAP2 POP PUSH2 0x426E SWAP1 POP JUMP JUMPDEST POP PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND DUP3 MSTORE SWAP1 SWAP3 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD PUSH32 0xD604DE94D45953F9138079EC1B82D533CB2160C906D1076D1F7ED54BEFBCA97A SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x45B96FE442630264581B197E84BBADA861235052C5A1AADFFF9EA4E40A969AA0 DUP4 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x3155 JUMPI INVALID JUMPDEST DUP4 PUSH1 0x63 DUP2 GT ISZERO PUSH2 0x3161 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 DUP3 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x1A9D JUMPI INVALID JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3197 PUSH2 0x2CED JUMP JUMPDEST PUSH2 0x31A7 JUMPI PUSH2 0x209B PUSH1 0x1 PUSH1 0x3C PUSH2 0x3126 JUMP JUMPDEST PUSH2 0x31AF PUSH2 0x2320 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x31C3 JUMPI PUSH2 0x209B PUSH1 0xA PUSH1 0x3E PUSH2 0x3126 JUMP JUMPDEST DUP3 PUSH2 0x31CC PUSH2 0x2EBC JUMP JUMPDEST LT ISZERO PUSH2 0x31DE JUMPI PUSH2 0x209B PUSH1 0xE PUSH1 0x3D PUSH2 0x3126 JUMP JUMPDEST PUSH1 0xE SLOAD DUP4 GT ISZERO PUSH2 0x31F4 JUMPI PUSH2 0x209B PUSH1 0x2 PUSH1 0x3F PUSH2 0x3126 JUMP JUMPDEST PUSH2 0x3200 PUSH1 0xE SLOAD DUP5 PUSH2 0x43BD JUMP JUMPDEST PUSH1 0xE DUP2 SWAP1 SSTORE SWAP1 POP PUSH2 0x3211 CALLER DUP5 PUSH2 0x43F7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP6 SWAP1 MSTORE DUP1 DUP3 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD PUSH32 0x3BAD0C59CF2F06E7314077049F48A93578CD16F5EF92329F1DAB1420A99C177E SWAP2 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 PUSH1 0x0 PUSH2 0x1A9D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3264 DUP2 PUSH2 0x2808 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x326E PUSH2 0x1C06 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x328C JUMPI PUSH2 0x181B DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x3285 JUMPI INVALID JUMPDEST PUSH1 0x2A PUSH2 0x3126 JUMP JUMPDEST PUSH2 0x182C CALLER PUSH1 0x0 DUP7 PUSH2 0x447C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 PUSH2 0x32CF JUMPI POP PUSH1 0x0 SWAP5 POP DUP5 SWAP4 POP PUSH2 0x3347 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x32DF DUP2 PUSH1 0x0 ADD SLOAD PUSH1 0xC SLOAD PUSH2 0x494C JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP PUSH1 0x0 DUP5 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x32F2 JUMPI INVALID JUMPDEST EQ PUSH2 0x3307 JUMPI POP SWAP2 SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x3347 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x3315 DUP4 DUP3 PUSH1 0x1 ADD SLOAD PUSH2 0x498B JUMP JUMPDEST SWAP1 SWAP5 POP SWAP2 POP PUSH1 0x0 DUP5 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3328 JUMPI INVALID JUMPDEST EQ PUSH2 0x333D JUMPI POP SWAP2 SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x3347 SWAP2 POP POP JUMP JUMPDEST POP PUSH1 0x0 SWAP5 POP SWAP3 POP POP POP JUMPDEST SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3357 PUSH2 0x2320 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x336B JUMPI PUSH2 0x209B PUSH1 0xA PUSH1 0x35 PUSH2 0x3126 JUMP JUMPDEST DUP3 PUSH2 0x3374 PUSH2 0x2EBC JUMP JUMPDEST LT ISZERO PUSH2 0x3386 JUMPI PUSH2 0x209B PUSH1 0xE PUSH1 0x34 PUSH2 0x3126 JUMP JUMPDEST PUSH1 0x10 SLOAD DUP4 GT ISZERO PUSH2 0x339C JUMPI PUSH2 0x209B PUSH1 0x2 PUSH1 0x36 PUSH2 0x3126 JUMP JUMPDEST PUSH2 0x33A8 PUSH1 0x10 SLOAD DUP5 PUSH2 0x43BD JUMP JUMPDEST PUSH1 0x10 DUP2 SWAP1 SSTORE SWAP1 POP PUSH2 0x2801 PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 DUP5 PUSH2 0x43F7 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x33DB DUP2 PUSH2 0x2808 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x33E5 PUSH2 0x1C06 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x3403 JUMPI PUSH2 0x21C0 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x33FC JUMPI INVALID JUMPDEST PUSH1 0x20 PUSH2 0x3126 JUMP JUMPDEST PUSH2 0x21D8 CALLER DUP7 PUSH2 0x49B6 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1A9D DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x11 DUP2 MSTORE PUSH1 0x20 ADD PUSH17 0x6164646974696F6E206F766572666C6F77 PUSH1 0x78 SHL DUP2 MSTORE POP PUSH2 0x4D32 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 DUP4 GT PUSH2 0x345A JUMPI POP PUSH1 0x0 SWAP1 POP DUP2 DUP4 SUB PUSH2 0x2EB5 JUMP JUMPDEST POP PUSH1 0x3 SWAP1 POP PUSH1 0x0 PUSH2 0x2EB5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3470 PUSH2 0x5B32 JUMP JUMPDEST PUSH2 0x3488 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP7 DUP2 MSTORE POP DUP5 PUSH2 0x4D87 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3498 DUP3 PUSH1 0xD SLOAD PUSH2 0x4DB1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x34A8 DUP3 PUSH1 0xD SLOAD PUSH2 0x340D JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x34C9 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xA SLOAD DUP2 MSTORE POP DUP5 PUSH1 0xE SLOAD PUSH2 0x4DD0 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x34EA PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x9 SLOAD DUP2 MSTORE POP DUP6 PUSH1 0x10 SLOAD PUSH2 0x4DD0 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x350B PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x8 SLOAD DUP2 MSTORE POP DUP7 PUSH1 0xF SLOAD PUSH2 0x4DD0 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x351E DUP8 PUSH1 0xC SLOAD PUSH1 0xC SLOAD PUSH2 0x4DD0 JUMP JUMPDEST PUSH1 0xB DUP14 SWAP1 SSTORE PUSH1 0xC DUP2 SWAP1 SSTORE PUSH1 0xD DUP7 SWAP1 SSTORE PUSH1 0xE DUP6 SWAP1 SSTORE PUSH1 0x10 DUP5 SWAP1 SSTORE PUSH1 0xF DUP4 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP14 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP10 SWAP1 MSTORE DUP1 DUP3 ADD DUP4 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP9 SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH32 0x4DEC04E750CA11537CABCD8A9EAB06494DE08DA3735BC8871CD41250E190BC04 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG1 PUSH1 0x6 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x24 DUP1 DUP3 ADD DUP15 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x5EFD0233 PUSH1 0xE1 SHL OR DUP2 MSTORE SWAP2 MLOAD DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP5 AND SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x35FB JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x35DC JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x365D 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 0x3662 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP PUSH1 0x0 SWAP2 POP PUSH2 0x366E SWAP1 POP JUMP JUMPDEST SWAP13 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3689 PUSH2 0x2320 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x369D JUMPI PUSH2 0x209B PUSH1 0xA PUSH1 0x39 PUSH2 0x3126 JUMP JUMPDEST DUP3 PUSH2 0x36A6 PUSH2 0x2EBC JUMP JUMPDEST LT ISZERO PUSH2 0x36B8 JUMPI PUSH2 0x209B PUSH1 0xE PUSH1 0x38 PUSH2 0x3126 JUMP JUMPDEST PUSH1 0xF SLOAD DUP4 GT ISZERO PUSH2 0x36CE JUMPI PUSH2 0x209B PUSH1 0x2 PUSH1 0x3A PUSH2 0x3126 JUMP JUMPDEST PUSH2 0x36DA PUSH1 0xF SLOAD DUP5 PUSH2 0x43BD JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0xF DUP2 SWAP1 SSTORE POP PUSH2 0x2801 PUSH1 0x5 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 PUSH4 0xF851A440 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 0x3734 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3748 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x375E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP5 PUSH2 0x43F7 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xD02F7351 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP7 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE DUP6 DUP2 AND PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x84 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 AND SWAP2 PUSH4 0xD02F7351 SWAP2 PUSH1 0xA4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x37D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x37E7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x37FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x3814 JUMPI PUSH2 0x2AA2 PUSH1 0x3 PUSH1 0x1D DUP4 PUSH2 0x4143 JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x383A JUMPI PUSH2 0x2AA2 PUSH1 0x6 PUSH1 0x1E PUSH2 0x3126 JUMP JUMPDEST PUSH2 0x3842 PUSH2 0x5B45 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x3865 SWAP1 DUP6 PUSH2 0x3443 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3879 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3884 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3898 JUMPI INVALID JUMPDEST EQ PUSH2 0x38C2 JUMPI PUSH2 0x38B9 PUSH1 0x9 PUSH1 0x1C DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x38B4 JUMPI INVALID JUMPDEST PUSH2 0x4143 JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x1610 JUMP JUMPDEST PUSH2 0x38E1 DUP5 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH7 0x6379DA05B60000 DUP2 MSTORE POP PUSH2 0x4DF8 JUMP JUMPDEST PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x38F3 SWAP1 DUP6 SWAP1 PUSH2 0x43BD JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x3900 PUSH2 0x293C JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3914 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x391F JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3933 JUMPI INVALID JUMPDEST EQ PUSH2 0x3985 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x65786368616E67652072617465206D617468206572726F720000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x39A5 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP4 PUSH1 0xC0 ADD MLOAD DUP2 MSTORE POP DUP3 PUSH1 0x80 ADD MLOAD PUSH2 0x4DB1 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xE SLOAD PUSH2 0x39B8 SWAP2 PUSH2 0x340D JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD MSTORE PUSH1 0x11 SLOAD PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x39CF SWAP2 SWAP1 PUSH2 0x43BD JUMP JUMPDEST PUSH2 0x100 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x39FD SWAP2 SWAP1 PUSH2 0x41CC JUMP JUMPDEST PUSH1 0x40 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3A11 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3A1C JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3A30 JUMPI INVALID JUMPDEST EQ PUSH2 0x3A4C JUMPI PUSH2 0x38B9 PUSH1 0x9 PUSH1 0x1B DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x38B4 JUMPI INVALID JUMPDEST PUSH1 0xE0 DUP2 ADD MLOAD PUSH1 0xE SSTORE PUSH2 0x100 DUP2 ADD MLOAD PUSH1 0x11 SSTORE PUSH1 0x20 DUP1 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x12 DUP6 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 DUP7 ADD MLOAD SWAP3 DUP12 AND DUP1 DUP3 MSTORE SWAP1 DUP5 SWAP1 KECCAK256 SWAP3 SWAP1 SWAP3 SSTORE PUSH1 0x60 DUP6 ADD MLOAD DUP4 MLOAD SWAP1 DUP2 MSTORE SWAP3 MLOAD SWAP2 SWAP4 SWAP1 SWAP3 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5D96 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD ADDRESS SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5D96 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0xE0 DUP3 ADD MLOAD PUSH1 0x40 DUP1 MLOAD ADDRESS DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP3 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE MLOAD PUSH32 0xA91E67C5EA634CD43A12C5A482724B03DE01E85CA68702A53D0C2F45CB7C1DC5 SWAP2 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 PUSH1 0x0 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3B51 DUP2 PUSH2 0x2808 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3B5B PUSH2 0x1C06 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x3B79 JUMPI PUSH2 0x181B DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x3B72 JUMPI INVALID JUMPDEST PUSH1 0xA PUSH2 0x3126 JUMP JUMPDEST PUSH2 0x182C CALLER DUP6 PUSH2 0x4E20 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3B8F DUP2 PUSH2 0x2808 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3B99 PUSH2 0x1C06 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x3BB0 JUMPI PUSH2 0x181B DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x3285 JUMPI INVALID JUMPDEST PUSH2 0x182C CALLER DUP6 PUSH1 0x0 PUSH2 0x447C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x3BCA DUP2 PUSH2 0x2808 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3BD4 PUSH2 0x1C06 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x3BFF JUMPI PUSH2 0x3BF2 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x3BEB JUMPI INVALID JUMPDEST PUSH1 0x11 PUSH2 0x3126 JUMP JUMPDEST SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x3C96 SWAP1 POP JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA6AFED95 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3C3A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3C4E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3C64 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x3C84 JUMPI PUSH2 0x3BF2 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x3C7D JUMPI INVALID JUMPDEST PUSH1 0x12 PUSH2 0x3126 JUMP JUMPDEST PUSH2 0x3C90 CALLER DUP9 DUP9 DUP9 PUSH2 0x5166 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP JUMPDEST PUSH2 0x3C9F DUP2 PUSH2 0x28D1 JUMP JUMPDEST POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x12004531 PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP6 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 DUP5 SWAP4 SWAP2 AND SWAP2 PUSH4 0x24008A62 SWAP2 PUSH1 0x84 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3D11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3D25 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3D3B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x3D5F JUMPI PUSH2 0x3D52 PUSH1 0x3 PUSH1 0x43 DUP4 PUSH2 0x4143 JUMP JUMPDEST SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH2 0x3FF0 SWAP1 POP JUMP JUMPDEST PUSH2 0x3D67 PUSH2 0x2320 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x3D7B JUMPI PUSH2 0x3D52 PUSH1 0xA PUSH1 0x44 PUSH2 0x3126 JUMP JUMPDEST PUSH2 0x3D83 PUSH2 0x5B92 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x3DAD DUP7 PUSH2 0x3298 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3DC4 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3DCF JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3DE6 JUMPI INVALID JUMPDEST EQ PUSH2 0x3E10 JUMPI PUSH2 0x3E02 PUSH1 0x9 PUSH1 0x42 DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x38B4 JUMPI INVALID JUMPDEST SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x3FF0 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 NOT DUP6 EQ ISZERO PUSH2 0x3E29 JUMPI PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x3E31 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD DUP6 SWAP1 MSTORE JUMPDEST PUSH2 0x3E3F DUP8 DUP3 PUSH1 0x40 ADD MLOAD PUSH2 0x5658 JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x3E54 SWAP2 PUSH2 0x3443 JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3E6B JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3E76 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3E8D JUMPI INVALID JUMPDEST EQ PUSH2 0x3EC9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5D33 PUSH1 0x3A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x3ED9 PUSH1 0xD SLOAD DUP3 PUSH1 0xE0 ADD MLOAD PUSH2 0x3443 JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3EF0 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3EFB JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3F12 JUMPI INVALID JUMPDEST EQ PUSH2 0x3F4E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5DB6 PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xA0 DUP1 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP11 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 DUP6 SSTORE PUSH1 0xC SLOAD PUSH1 0x1 SWAP1 SWAP6 ADD SWAP5 SWAP1 SWAP5 SSTORE PUSH1 0xC0 DUP8 ADD MLOAD PUSH1 0xD DUP2 SWAP1 SSTORE PUSH1 0xE0 DUP9 ADD MLOAD SWAP6 MLOAD DUP3 MLOAD SWAP5 DUP16 AND DUP6 MSTORE SWAP5 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP2 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x60 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x80 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 MLOAD PUSH32 0x1A2A22CB034D26D1854BDC6666A5B91FE25EFBBB5DCAD3B0355478D6F5C362A1 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0xE0 ADD MLOAD PUSH1 0x0 SWAP4 POP SWAP2 POP POP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xDD86FEA1 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 0x1EC7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x4057 DUP8 DUP8 PUSH2 0x41CC JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x406A JUMPI INVALID JUMPDEST EQ PUSH2 0x407B JUMPI POP SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH2 0x3FF0 JUMP JUMPDEST PUSH2 0x4085 DUP2 DUP7 PUSH2 0x3443 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x409D PUSH2 0x5B32 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x40B2 DUP7 PUSH8 0xDE0B6B3A7640000 PUSH2 0x494C JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x40C5 JUMPI INVALID JUMPDEST EQ PUSH2 0x40E4 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x2EB5 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x40F1 DUP4 DUP9 PUSH2 0x498B JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4104 JUMPI INVALID JUMPDEST EQ PUSH2 0x4126 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 SWAP5 POP SWAP3 POP PUSH2 0x2EB5 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP9 SWAP1 SWAP8 POP SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x45B96FE442630264581B197E84BBADA861235052C5A1AADFFF9EA4E40A969AA0 DUP5 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x4172 JUMPI INVALID JUMPDEST DUP5 PUSH1 0x63 DUP2 GT ISZERO PUSH2 0x417E JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 DUP2 ADD DUP6 SWAP1 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 PUSH1 0x3 DUP5 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x41AB JUMPI INVALID JUMPDEST EQ PUSH2 0x41C1 JUMPI DUP4 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x41BC JUMPI INVALID JUMPDEST PUSH2 0x1610 JUMP JUMPDEST POP PUSH2 0x3E8 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 DUP4 ADD DUP5 DUP2 LT PUSH2 0x41E4 JUMPI PUSH1 0x0 SWAP3 POP SWAP1 POP PUSH2 0x2EB5 JUMP JUMPDEST POP PUSH1 0x2 SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH2 0x2EB5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x41FC PUSH2 0x5B32 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x420D DUP7 PUSH1 0x0 ADD MLOAD DUP7 PUSH2 0x494C JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4220 JUMPI INVALID JUMPDEST EQ PUSH2 0x423F JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x2EB5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST MLOAD PUSH8 0xDE0B6B3A7640000 SWAP1 DIV SWAP1 JUMP JUMPDEST PUSH2 0x14A7 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x60 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x42AE JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x428F JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x4310 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 0x4315 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x43B4 JUMPI DUP1 MLOAD ISZERO PUSH2 0x432F JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST DUP4 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4379 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4361 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x43A6 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1A9D DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x15 DUP2 MSTORE PUSH1 0x20 ADD PUSH21 0x7375627472616374696F6E20756E646572666C6F77 PUSH1 0x58 SHL DUP2 MSTORE POP PUSH2 0x5835 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xA9059CBB PUSH1 0xE0 SHL OR SWAP1 MSTORE DUP3 MLOAD DUP1 DUP5 ADD SWAP1 SWAP4 MSTORE PUSH1 0x19 DUP4 MSTORE PUSH32 0x544F4B454E5F5452414E534645525F4F55545F4641494C454400000000000000 SWAP1 DUP4 ADD MSTORE PUSH2 0x4478 SWAP2 PUSH2 0x588F JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x4489 JUMPI POP DUP2 ISZERO JUMPDEST PUSH2 0x44C4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5E4F PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x44CC PUSH2 0x5BD8 JUMP JUMPDEST PUSH2 0x44D4 PUSH2 0x293C JUMP JUMPDEST PUSH1 0x40 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x44EB JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x44F6 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x450D JUMPI INVALID JUMPDEST EQ PUSH2 0x4531 JUMPI PUSH2 0x4529 PUSH1 0x9 PUSH1 0x2E DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x38B4 JUMPI INVALID JUMPDEST SWAP2 POP POP PUSH2 0x1A9D JUMP JUMPDEST DUP4 ISZERO PUSH2 0x45B2 JUMPI PUSH1 0x60 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD DUP3 MSTORE SWAP1 DUP3 ADD MLOAD DUP2 MSTORE PUSH2 0x4558 SWAP1 DUP6 PUSH2 0x2E68 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x456F JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x457A JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4591 JUMPI INVALID JUMPDEST EQ PUSH2 0x45AD JUMPI PUSH2 0x4529 PUSH1 0x9 PUSH1 0x2C DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x38B4 JUMPI INVALID JUMPDEST PUSH2 0x462B JUMP JUMPDEST PUSH2 0x45CE DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH1 0x40 ADD MLOAD DUP2 MSTORE POP PUSH2 0x591C JUMP JUMPDEST PUSH1 0x60 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x45E5 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x45F0 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4607 JUMPI INVALID JUMPDEST EQ PUSH2 0x4623 JUMPI PUSH2 0x4529 PUSH1 0x9 PUSH1 0x2D DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x38B4 JUMPI INVALID JUMPDEST PUSH1 0x80 DUP2 ADD DUP4 SWAP1 MSTORE JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x60 DUP3 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xEABE7D91 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP4 SWAP3 SWAP1 SWAP3 AND SWAP2 PUSH4 0xEABE7D91 SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4690 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x46A4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x46BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x46DA JUMPI PUSH2 0x46D1 PUSH1 0x3 PUSH1 0x2B DUP4 PUSH2 0x4143 JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x1A9D JUMP JUMPDEST PUSH2 0x46E2 PUSH2 0x2320 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x46F6 JUMPI PUSH2 0x46D1 PUSH1 0xA PUSH1 0x2F PUSH2 0x3126 JUMP JUMPDEST PUSH2 0x4706 PUSH1 0x11 SLOAD DUP4 PUSH1 0x60 ADD MLOAD PUSH2 0x3443 JUMP JUMPDEST PUSH1 0xA0 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP5 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x471D JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4728 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP3 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x473F JUMPI INVALID JUMPDEST EQ PUSH2 0x475B JUMPI PUSH2 0x46D1 PUSH1 0x9 PUSH1 0x31 DUP5 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x38B4 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 DUP4 ADD MLOAD PUSH2 0x4783 SWAP2 SWAP1 PUSH2 0x3443 JUMP JUMPDEST PUSH1 0xC0 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP5 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x479A JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x47A5 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP3 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x47BC JUMPI INVALID JUMPDEST EQ PUSH2 0x47D8 JUMPI PUSH2 0x46D1 PUSH1 0x9 PUSH1 0x30 DUP5 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x38B4 JUMPI INVALID JUMPDEST DUP2 PUSH1 0x80 ADD MLOAD PUSH2 0x47E5 PUSH2 0x2EBC JUMP JUMPDEST LT ISZERO PUSH2 0x47F7 JUMPI PUSH2 0x46D1 PUSH1 0xE PUSH1 0x32 PUSH2 0x3126 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MLOAD PUSH1 0x11 SSTORE PUSH1 0xC0 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x482D SWAP1 DUP8 SWAP1 PUSH2 0x43F7 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MLOAD PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD ADDRESS SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5D96 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 PUSH1 0x80 DUP3 ADD MLOAD PUSH1 0x60 DUP1 DUP5 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP4 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE MLOAD PUSH32 0xE5B754FB1ABB7F01B499791D0B820AE3B6AF3424AC1C59768EDB53F4EC31A929 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x5 SLOAD PUSH1 0x80 DUP4 ADD MLOAD PUSH1 0x60 DUP5 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x51DFF989 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x64 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x51DFF989 SWAP2 PUSH1 0x84 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4921 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4935 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x0 SWAP3 POP PUSH2 0x4942 SWAP2 POP POP JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH2 0x495F JUMPI POP PUSH1 0x0 SWAP1 POP DUP1 PUSH2 0x2EB5 JUMP JUMPDEST DUP4 DUP4 MUL DUP4 DUP6 DUP3 DUP2 PUSH2 0x496C JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x4980 JUMPI POP PUSH1 0x2 SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH2 0x2EB5 JUMP JUMPDEST PUSH1 0x0 SWAP3 POP SWAP1 POP PUSH2 0x2EB5 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH2 0x499F JUMPI POP PUSH1 0x1 SWAP1 POP PUSH1 0x0 PUSH2 0x2EB5 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x49AA JUMPI INVALID JUMPDEST DIV SWAP2 POP SWAP2 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x4EF4C3E1 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 DUP5 SWAP4 SWAP2 AND SWAP2 PUSH4 0x4EF4C3E1 SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4A17 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4A2B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4A41 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x4A65 JUMPI PUSH2 0x4A58 PUSH1 0x3 PUSH1 0x21 DUP4 PUSH2 0x4143 JUMP JUMPDEST SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH2 0x2EB5 SWAP1 POP JUMP JUMPDEST PUSH2 0x4A6D PUSH2 0x2320 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x4A81 JUMPI PUSH2 0x4A58 PUSH1 0xA PUSH1 0x24 PUSH2 0x3126 JUMP JUMPDEST PUSH2 0x4A89 PUSH2 0x5BD8 JUMP JUMPDEST PUSH2 0x4A91 PUSH2 0x293C JUMP JUMPDEST PUSH1 0x40 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4AA8 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4AB3 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4ACA JUMPI INVALID JUMPDEST EQ PUSH2 0x4AF4 JUMPI PUSH2 0x4AE6 PUSH1 0x9 PUSH1 0x23 DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x38B4 JUMPI INVALID JUMPDEST SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x2EB5 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x4AFE DUP7 DUP7 PUSH2 0x5658 JUMP JUMPDEST PUSH1 0xC0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD DUP3 MSTORE SWAP1 DUP4 ADD MLOAD DUP2 MSTORE PUSH2 0x4B1F SWAP2 SWAP1 PUSH2 0x591C JUMP JUMPDEST PUSH1 0x60 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4B36 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4B41 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4B58 JUMPI INVALID JUMPDEST EQ PUSH2 0x4BAA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D494E545F45584348414E47455F43414C43554C4154494F4E5F4641494C4544 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x4BBA PUSH1 0x11 SLOAD DUP3 PUSH1 0x60 ADD MLOAD PUSH2 0x340D JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x4BE7 SWAP2 SWAP1 PUSH2 0x340D JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MLOAD PUSH1 0x11 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0xC0 DUP5 ADD MLOAD PUSH1 0x60 DUP1 DUP7 ADD MLOAD DUP4 MLOAD SWAP5 DUP6 MSTORE SWAP5 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE MLOAD PUSH32 0x4C209B5FC8AD50758F13E2E1088BA56A560DFF690A1C6FEF26394F4C03821C4F SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 ADDRESS SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5D96 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 PUSH1 0x5 SLOAD PUSH1 0xC0 DUP3 ADD MLOAD PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x41C728B9 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x64 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x41C728B9 SWAP2 PUSH1 0x84 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4CFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4D13 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x0 SWAP3 POP PUSH2 0x4D20 SWAP2 POP POP JUMP JUMPDEST DUP2 PUSH1 0xC0 ADD MLOAD SWAP4 POP SWAP4 POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 ADD DUP3 DUP6 DUP3 LT ISZERO PUSH2 0x14E4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x4379 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4361 JUMP JUMPDEST PUSH2 0x4D8F PUSH2 0x5B32 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x4DA8 DUP6 PUSH1 0x0 ADD MLOAD DUP6 PUSH2 0x5933 JUMP JUMPDEST SWAP1 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4DBB PUSH2 0x5B32 JUMP JUMPDEST PUSH2 0x4DC5 DUP5 DUP5 PUSH2 0x4D87 JUMP JUMPDEST SWAP1 POP PUSH2 0x1610 DUP2 PUSH2 0x425A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4DDA PUSH2 0x5B32 JUMP JUMPDEST PUSH2 0x4DE4 DUP6 DUP6 PUSH2 0x4D87 JUMP JUMPDEST SWAP1 POP PUSH2 0x43B4 PUSH2 0x4DF2 DUP3 PUSH2 0x425A JUMP JUMPDEST DUP5 PUSH2 0x340D JUMP JUMPDEST PUSH1 0x0 PUSH8 0xDE0B6B3A7640000 PUSH2 0x4E11 DUP5 DUP5 PUSH1 0x0 ADD MLOAD PUSH2 0x5933 JUMP JUMPDEST DUP2 PUSH2 0x4E18 JUMPI INVALID JUMPDEST DIV SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x368F5153 PUSH1 0xE2 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 AND SWAP2 PUSH4 0xDA3D454C SWAP2 PUSH1 0x64 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4E7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4E91 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4EA7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x4EC6 JUMPI PUSH2 0x4EBE PUSH1 0x3 PUSH1 0x10 DUP4 PUSH2 0x4143 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x10F2 JUMP JUMPDEST PUSH2 0x4ECE PUSH2 0x2320 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x4EE2 JUMPI PUSH2 0x4EBE PUSH1 0xA PUSH1 0xC PUSH2 0x3126 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4EEC PUSH2 0x2EBC JUMP JUMPDEST SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x4F0B JUMPI PUSH2 0x4F02 PUSH1 0xE PUSH1 0xB PUSH2 0x3126 JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x10F2 JUMP JUMPDEST PUSH2 0x4F13 PUSH2 0x5C16 JUMP JUMPDEST PUSH2 0x4F1C DUP7 PUSH2 0x3298 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4F30 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4F3B JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4F4F JUMPI INVALID JUMPDEST EQ PUSH2 0x4F74 JUMPI PUSH2 0x4F6A PUSH1 0x9 DUP1 DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x38B4 JUMPI INVALID JUMPDEST SWAP4 POP POP POP POP PUSH2 0x10F2 JUMP JUMPDEST PUSH2 0x4F82 DUP2 PUSH1 0x20 ADD MLOAD DUP7 PUSH2 0x41CC JUMP JUMPDEST PUSH1 0x40 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4F96 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4FA1 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4FB5 JUMPI INVALID JUMPDEST EQ PUSH2 0x4FD1 JUMPI PUSH2 0x4F6A PUSH1 0x9 PUSH1 0xE DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x38B4 JUMPI INVALID JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 DUP4 ADD MLOAD DUP2 MLOAD PUSH4 0x1DE6C8A5 PUSH1 0xE2 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x779B2294 SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x502A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x503E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5054 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 POP DUP3 ISZERO PUSH2 0x506B JUMPI PUSH2 0x4F6A PUSH1 0x3 PUSH1 0x10 DUP6 PUSH2 0x4143 JUMP JUMPDEST PUSH2 0x5077 PUSH1 0xD SLOAD DUP7 PUSH2 0x41CC JUMP JUMPDEST PUSH1 0x60 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x508B JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x5096 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x50AA JUMPI INVALID JUMPDEST EQ PUSH2 0x50C6 JUMPI PUSH2 0x4F6A PUSH1 0x9 PUSH1 0xD DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x38B4 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 MSTORE SWAP2 SWAP1 SWAP2 KECCAK256 SWAP1 DUP2 SSTORE PUSH1 0xC SLOAD PUSH1 0x1 SWAP1 SWAP2 ADD SSTORE PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0xD SSTORE PUSH2 0x5102 DUP7 DUP7 PUSH2 0x43F7 JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 ADD MLOAD PUSH1 0x60 DUP1 DUP5 ADD MLOAD DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP11 SWAP1 MSTORE DUP1 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP1 DUP3 ADD MSTORE SWAP1 MLOAD PUSH32 0x13ED6866D4E1EE6DA46F845C46D7E54120883D75C5EA9A2DACC1C4CA8984AB80 SWAP2 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG1 PUSH1 0x0 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x2FE3F38F PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP8 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE DUP7 DUP2 AND PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x84 DUP3 ADD DUP7 SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 DUP5 SWAP4 SWAP2 AND SWAP2 PUSH4 0x5FC7E71E SWAP2 PUSH1 0xA4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x51D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x51EB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5201 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x5225 JUMPI PUSH2 0x5218 PUSH1 0x3 PUSH1 0x14 DUP4 PUSH2 0x4143 JUMP JUMPDEST SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH2 0x564F SWAP1 POP JUMP JUMPDEST PUSH2 0x522D PUSH2 0x2320 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x5241 JUMPI PUSH2 0x5218 PUSH1 0xA PUSH1 0x18 PUSH2 0x3126 JUMP JUMPDEST PUSH2 0x5249 PUSH2 0x2320 JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6C540BAF 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 0x5282 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5296 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x52AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD EQ PUSH2 0x52BF JUMPI PUSH2 0x5218 PUSH1 0xA PUSH1 0x13 PUSH2 0x3126 JUMP JUMPDEST DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x52E5 JUMPI PUSH2 0x5218 PUSH1 0x6 PUSH1 0x19 PUSH2 0x3126 JUMP JUMPDEST DUP5 PUSH2 0x52F6 JUMPI PUSH2 0x5218 PUSH1 0x7 PUSH1 0x17 PUSH2 0x3126 JUMP JUMPDEST PUSH1 0x0 NOT DUP6 EQ ISZERO PUSH2 0x530C JUMPI PUSH2 0x5218 PUSH1 0x7 PUSH1 0x16 PUSH2 0x3126 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x531A DUP10 DUP10 DUP10 PUSH2 0x3CA8 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP DUP2 ISZERO PUSH2 0x534A JUMPI PUSH2 0x533B DUP3 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x5334 JUMPI INVALID JUMPDEST PUSH1 0x1A PUSH2 0x3126 JUMP JUMPDEST SWAP5 POP PUSH1 0x0 SWAP4 POP PUSH2 0x564F SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xC488847B PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP6 SWAP1 MSTORE DUP3 MLOAD PUSH1 0x0 SWAP5 DUP6 SWAP5 SWAP3 AND SWAP3 PUSH4 0xC488847B SWAP3 PUSH1 0x64 DUP1 DUP4 ADD SWAP4 SWAP2 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x53A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x53B8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x53CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 POP SWAP1 POP DUP2 ISZERO PUSH2 0x5419 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x33 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5DE7 PUSH1 0x33 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 DUP9 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 DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5470 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5484 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x549A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT ISZERO PUSH2 0x54EF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C49515549444154455F5345495A455F544F4F5F4D5543480000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND ADDRESS EQ ISZERO PUSH2 0x5515 JUMPI PUSH2 0x550E ADDRESS DUP14 DUP14 DUP6 PUSH2 0x3766 JUMP JUMPDEST SWAP1 POP PUSH2 0x559F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xB2A02FF1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP15 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP14 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD SWAP2 DUP12 AND SWAP2 PUSH4 0xB2A02FF1 SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5570 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5584 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x559A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP JUMPDEST DUP1 ISZERO PUSH2 0x55E9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x1D1BDAD95B881CD95A5E9D5C994819985A5B1959 PUSH1 0x62 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP16 AND DUP3 MSTORE DUP1 DUP15 AND PUSH1 0x20 DUP4 ADD MSTORE DUP2 DUP4 ADD DUP8 SWAP1 MSTORE DUP12 AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP2 ADD DUP5 SWAP1 MSTORE SWAP1 MLOAD PUSH32 0x298637F684DA70674F26509B10F07EC2FBC77A335AB1E7D6215A4B2484D8BB52 SWAP2 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 LOG1 PUSH1 0x0 SWAP8 POP SWAP3 SWAP6 POP POP POP POP POP POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x15 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 DUP4 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x56A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x56BC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x56D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x24 DUP3 ADD MSTORE ADDRESS PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP1 DUP3 ADD DUP8 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x23B872DD PUSH1 0xE0 SHL OR SWAP1 MSTORE DUP3 MLOAD DUP1 DUP5 ADD SWAP1 SWAP4 MSTORE PUSH1 0x18 DUP4 MSTORE PUSH32 0x544F4B454E5F5452414E534645525F494E5F4641494C45440000000000000000 SWAP1 DUP4 ADD MSTORE SWAP2 SWAP3 POP PUSH2 0x575F SWAP2 SWAP1 PUSH2 0x588F JUMP JUMPDEST PUSH1 0x15 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x57AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x57BE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x57D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP2 DUP2 LT ISZERO PUSH2 0x582D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x544F4B454E5F5452414E534645525F494E5F4F564552464C4F57000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SUB SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x5887 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x4379 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4361 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x15 SLOAD PUSH1 0x60 SWAP1 PUSH2 0x58A9 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 DUP5 PUSH2 0x426E JUMP JUMPDEST DUP1 MLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0x5917 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x58C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP3 SWAP1 PUSH2 0x16B0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x4379 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4361 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x5929 PUSH2 0x5B32 JUMP JUMPDEST PUSH2 0x2E7F DUP7 DUP7 PUSH2 0x5975 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1A9D DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x17 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x6D756C7469706C69636174696F6E206F766572666C6F77000000000000000000 DUP2 MSTORE POP PUSH2 0x59D4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x597F PUSH2 0x5B32 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x5994 PUSH8 0xDE0B6B3A7640000 DUP8 PUSH2 0x494C JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x59A7 JUMPI INVALID JUMPDEST EQ PUSH2 0x59C6 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x2EB5 JUMP JUMPDEST PUSH2 0x2EAE DUP2 DUP7 PUSH1 0x0 ADD MLOAD PUSH2 0x4093 JUMP JUMPDEST PUSH1 0x0 DUP4 ISZERO DUP1 PUSH2 0x59E1 JUMPI POP DUP3 ISZERO JUMPDEST ISZERO PUSH2 0x59EE JUMPI POP PUSH1 0x0 PUSH2 0x1A9D JUMP JUMPDEST DUP4 DUP4 MUL DUP4 DUP6 DUP3 DUP2 PUSH2 0x59FB JUMPI INVALID JUMPDEST DIV EQ DUP4 SWAP1 PUSH2 0x14E4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x4379 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4361 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x5A8B JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x5AB8 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x5AB8 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x5AB8 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x5A9D JUMP JUMPDEST POP PUSH2 0x18E8 SWAP3 SWAP2 POP PUSH2 0x5C3F JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x5B05 JUMPI DUP3 DUP1 ADD PUSH1 0xFF NOT DUP3 CALLDATALOAD AND OR DUP6 SSTORE PUSH2 0x5AB8 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x5AB8 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x5AB8 JUMPI DUP3 CALLDATALOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x5B17 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x120 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x100 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xE0 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH2 0x14A4 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x18E8 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x5C45 JUMP INVALID PUSH14 0x61726B6574206D6179206F6E6C79 KECCAK256 PUSH3 0x652069 PUSH15 0x697469616C697A6564206F6E636569 PUSH15 0x697469616C2065786368616E676520 PUSH19 0x617465206D7573742062652067726561746572 KECCAK256 PUSH21 0x68616E207A65726F2E6F6E6C79207468652061646D PUSH10 0x6E206D61792073657420 PUSH21 0x686520636F6D702D6C696B652064656C6567617465 PUSH20 0x657474696E6720696E7465726573742072617465 KECCAK256 PUSH14 0x6F64656C206661696C6564626F72 PUSH19 0x6F7742616C616E636553746F7265643A20626F PUSH19 0x726F7742616C616E636553746F726564496E74 PUSH6 0x726E616C2066 PUSH2 0x696C PUSH6 0x645245504159 0x5F TIMESTAMP 0x4F MSTORE MSTORE 0x4F JUMPI 0x5F 0x4E GASLIMIT JUMPI 0x5F COINBASE NUMBER NUMBER 0x4F SSTORE 0x4E SLOAD 0x5F TIMESTAMP 0x4F MSTORE MSTORE 0x4F JUMPI 0x5F TIMESTAMP COINBASE 0x4C COINBASE 0x4E NUMBER GASLIMIT 0x5F NUMBER COINBASE 0x4C NUMBER SSTORE 0x4C COINBASE SLOAD 0x49 0x4F 0x4E 0x5F CHAINID COINBASE 0x49 0x4C GASLIMIT DIFFICULTY PUSH16 0x6E6C7920467573652061646D696E206D PUSH2 0x7920 PUSH10 0x6E697469616C697A6520 PUSH21 0x6865206D61726B6574DDF252AD1BE2C89B69C2B068 0xFC CALLDATACOPY DUP14 0xAA SWAP6 0x2B 0xA7 CALL PUSH4 0xC4A11628 CREATE2 GAS 0x4D CREATE2 0x23 0xB3 0xEF MSTORE GASLIMIT POP COINBASE MSIZE 0x5F TIMESTAMP 0x4F MSTORE MSTORE 0x4F JUMPI 0x5F 0x4E GASLIMIT JUMPI 0x5F SLOAD 0x4F SLOAD COINBASE 0x4C 0x5F TIMESTAMP COINBASE 0x4C COINBASE 0x4E NUMBER GASLIMIT 0x5F NUMBER COINBASE 0x4C NUMBER SSTORE 0x4C COINBASE SLOAD 0x49 0x4F 0x4E 0x5F CHAINID COINBASE 0x49 0x4C GASLIMIT DIFFICULTY 0x4C 0x49 MLOAD SSTORE 0x49 DIFFICULTY COINBASE SLOAD GASLIMIT 0x5F NUMBER 0x4F 0x4D POP SLOAD MSTORE 0x4F 0x4C 0x4C GASLIMIT MSTORE 0x5F NUMBER COINBASE 0x4C NUMBER SSTORE 0x4C COINBASE SLOAD GASLIMIT 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD 0x5F MSTORE8 GASLIMIT 0x49 GAS GASLIMIT 0x5F CHAINID COINBASE 0x49 0x4C GASLIMIT DIFFICULTY PUSH6 0x786368616E67 PUSH6 0x526174655374 PUSH16 0x7265643A2065786368616E6765526174 PUSH6 0x53746F726564 0x49 PUSH15 0x7465726E616C206661696C65646F6E PUSH6 0x206F66207265 PUSH5 0x65656D546F PUSH12 0x656E73496E206F7220726564 PUSH6 0x656D416D6F75 PUSH15 0x74496E206D757374206265207A6572 PUSH16 0xA265627A7A72315820345834EA73EEA5 DUP12 0xE7 0xBA PUSH9 0x700DA98535B7A57F02 0xE7 0xC6 0xC5 DUP6 SWAP5 DUP4 0xE4 0xDC PUSH24 0xF12C4364736F6C6343000511003200000000000000000000 ","sourceMap":"187:1059:4:-;;;;;;;;;"},"deployedBytecode":{"linkReferences":{},"object":"6080604052600436106103765760003560e01c8063852a12e3116101d1578063ae9d70b011610102578063dc028ab1116100a0578063f5e3c4621161006f578063f5e3c46214610f69578063f8f9da2814610fac578063fca7820b14610fc1578063fe9c44ae14610feb57610376565b8063dc028ab114610ed1578063dd62ed3e14610ee6578063f2b3abbd14610f21578063f3fdb15a14610f5457610376565b8063c37f68e2116100dc578063c37f68e214610e0f578063c5ebeaec14610e68578063db006a7514610e92578063dbfe7c1914610ebc57610376565b8063ae9d70b014610da2578063b2a02ff114610db7578063bd6d894d14610dfa57610376565b8063a0712d681161016f578063a7b820df11610149578063a7b820df14610d15578063a9059cbb14610d3f578063aa5af0fd14610d78578063ac784ddc14610d8d57610376565b8063a0712d6814610b7a578063a0b0d28914610ba4578063a6afed9514610d0057610376565b806391dd36c6116101ab57806391dd36c614610ade57806395d89b4114610b0857806395dd919314610b1d578063a03dce8d14610b5057610376565b8063852a12e314610a8a5780638d02d9a114610ab45780638f840ddd14610ac957610376565b80633b1d21a2116102ab57806361feacff116102495780636f307dc3116102235780636f307dc3146109fa57806370a0823114610a0f57806373acee9814610a425780637f1e06be14610a5757610376565b806361feacff146109bb5780636752e702146109d05780636c540baf146109e557610376565b806356e677281161028557806356e67728146108d05780635c60da1b1461094b5780635fe3b5671461097c578063601a0bf11461099157610376565b80633b1d21a21461081457806347bd37181461082957806350d85b731461083e57610376565b8063182df0f5116103185780632608f818116102f25780632608f818146106b2578063313ce567146106eb57806334154d4c146107165780633af9e669146107e157610376565b8063182df0f5146106525780631db789441461066757806323b872dd1461066f57610376565b80630f8855e8116103545780630f8855e81461048e578063173b9904146105f557806317bfdfbc1461060a57806318160ddd1461063d57610376565b806306fdde031461037b578063095ea7b3146104055780630e75270214610452575b600080fd5b34801561038757600080fd5b50610390611000565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103ca5781810151838201526020016103b2565b50505050905090810190601f1680156103f75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561041157600080fd5b5061043e6004803603604081101561042857600080fd5b506001600160a01b03813516906020013561108b565b604080519115158252519081900360200190f35b34801561045e57600080fd5b5061047c6004803603602081101561047557600080fd5b50356110f8565b60408051918252519081900360200190f35b34801561049a57600080fd5b506105f360048036036101008110156104b257600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b8111156104ec57600080fd5b8201836020820111156104fe57600080fd5b803590602001918460018302840111600160201b8311171561051f57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561057157600080fd5b82018360208201111561058357600080fd5b803590602001918460018302840111600160201b831117156105a457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505060ff833516935050506020810135906040013561110e565b005b34801561060157600080fd5b5061047c6113bc565b34801561061657600080fd5b5061047c6004803603602081101561062d57600080fd5b50356001600160a01b03166113c2565b34801561064957600080fd5b5061047c61143e565b34801561065e57600080fd5b5061047c611444565b6105f36114a7565b34801561067b57600080fd5b5061043e6004803603606081101561069257600080fd5b506001600160a01b038135811691602081013590911690604001356114a9565b3480156106be57600080fd5b5061047c600480360360408110156106d557600080fd5b506001600160a01b0381351690602001356114d7565b3480156106f757600080fd5b506107006114ed565b6040805160ff9092168252519081900360200190f35b34801561072257600080fd5b506105f36004803603604081101561073957600080fd5b810190602081018135600160201b81111561075357600080fd5b82018360208201111561076557600080fd5b803590602001918460018302840111600160201b8311171561078657600080fd5b919390929091602081019035600160201b8111156107a357600080fd5b8201836020820111156107b557600080fd5b803590602001918460018302840111600160201b831117156107d657600080fd5b5090925090506114f6565b3480156107ed57600080fd5b5061047c6004803603602081101561080457600080fd5b50356001600160a01b0316611562565b34801561082057600080fd5b5061047c611618565b34801561083557600080fd5b5061047c611627565b34801561084a57600080fd5b506105f36004803603606081101561086157600080fd5b6001600160a01b03823516916020810135151591810190606081016040820135600160201b81111561089257600080fd5b8201836020820111156108a457600080fd5b803590602001918460018302840111600160201b831117156108c557600080fd5b50909250905061162d565b3480156108dc57600080fd5b506105f3600480360360208110156108f357600080fd5b810190602081018135600160201b81111561090d57600080fd5b82018360208201111561091f57600080fd5b803590602001918460018302840111600160201b8311171561094057600080fd5b5090925090506116b6565b34801561095757600080fd5b506109606117c9565b604080516001600160a01b039092168252519081900360200190f35b34801561098857600080fd5b506109606117d8565b34801561099d57600080fd5b5061047c600480360360208110156109b457600080fd5b50356117e7565b3480156109c757600080fd5b5061047c611838565b3480156109dc57600080fd5b5061047c61183e565b3480156109f157600080fd5b5061047c611849565b348015610a0657600080fd5b5061096061184f565b348015610a1b57600080fd5b5061047c60048036036020811015610a3257600080fd5b50356001600160a01b031661185e565b348015610a4e57600080fd5b5061047c611879565b348015610a6357600080fd5b506105f360048036036020811015610a7a57600080fd5b50356001600160a01b03166118ec565b348015610a9657600080fd5b5061047c60048036036020811015610aad57600080fd5b5035611991565b348015610ac057600080fd5b5061047c61199c565b348015610ad557600080fd5b5061047c6119a2565b348015610aea57600080fd5b5061047c60048036036020811015610b0157600080fd5b50356119a8565b348015610b1457600080fd5b506103906119e5565b348015610b2957600080fd5b5061047c60048036036020811015610b4057600080fd5b50356001600160a01b0316611a40565b348015610b5c57600080fd5b5061047c60048036036020811015610b7357600080fd5b5035611aa4565b348015610b8657600080fd5b5061047c60048036036020811015610b9d57600080fd5b5035611ae1565b348015610bb057600080fd5b506105f3600480360360e0811015610bc757600080fd5b6001600160a01b0382358116926020810135821692604082013590921691810190608081016060820135600160201b811115610c0257600080fd5b820183602082011115610c1457600080fd5b803590602001918460018302840111600160201b83111715610c3557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115610c8757600080fd5b820183602082011115610c9957600080fd5b803590602001918460018302840111600160201b83111715610cba57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505082359350505060200135611aed565b348015610d0c57600080fd5b5061047c611c06565b348015610d2157600080fd5b5061047c60048036036020811015610d3857600080fd5b5035611dcb565b348015610d4b57600080fd5b5061043e60048036036040811015610d6257600080fd5b506001600160a01b038135169060200135611e08565b348015610d8457600080fd5b5061047c611e35565b348015610d9957600080fd5b5061043e611e3b565b348015610dae57600080fd5b5061047c611e40565b348015610dc357600080fd5b5061047c60048036036060811015610dda57600080fd5b506001600160a01b03813581169160208101359091169060400135611ef8565b348015610e0657600080fd5b5061047c611f1c565b348015610e1b57600080fd5b50610e4260048036036020811015610e3257600080fd5b50356001600160a01b0316611f90565b604080519485526020850193909352838301919091526060830152519081900360800190f35b348015610e7457600080fd5b5061047c60048036036020811015610e8b57600080fd5b5035612025565b348015610e9e57600080fd5b5061047c60048036036020811015610eb557600080fd5b5035612030565b348015610ec857600080fd5b5061047c61203b565b348015610edd57600080fd5b5061047c612041565b348015610ef257600080fd5b5061047c60048036036040811015610f0957600080fd5b506001600160a01b0381358116916020013516612047565b348015610f2d57600080fd5b5061047c60048036036020811015610f4457600080fd5b50356001600160a01b0316612072565b348015610f6057600080fd5b506109606120ac565b348015610f7557600080fd5b5061047c60048036036060811015610f8c57600080fd5b506001600160a01b038135811691602081013591604090910135166120bb565b348015610fb857600080fd5b5061047c6120d3565b348015610fcd57600080fd5b5061047c60048036036020811015610fe457600080fd5b5035612148565b348015610ff757600080fd5b5061043e612185565b6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156110835780601f1061105857610100808354040283529160200191611083565b820191906000526020600020905b81548152906001019060200180831161106657829003601f168201915b505050505081565b3360008181526013602090815260408083206001600160a01b03871680855290835281842086905581518681529151939493909284927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a360019150505b92915050565b6000806111048361218a565b509150505b919050565b3373a731585ab05fc9f83555cf9bff8f58ee94e18f85146111605760405162461bcd60e51b8152600401808060200182810382526029815260200180615d6d6029913960400191505060405180910390fd5b600b541580156111705750600c54155b6111ab5760405162461bcd60e51b8152600401808060200182810382526023815260200180615c5a6023913960400191505060405180910390fd5b6007869055856111ec5760405162461bcd60e51b8152600401808060200182810382526030815260200180615c7d6030913960400191505060405180910390fd5b60006111f7896121ed565b9050801561124c576040805162461bcd60e51b815260206004820152601a60248201527f73657474696e6720636f6d7074726f6c6c6572206661696c6564000000000000604482015290519081900360640190fd5b611254612320565b600b55670de0b6b3a7640000600c5561126c88612324565b905080156112ab5760405162461bcd60e51b8152600401808060200182810382526022815260200180615cda6022913960400191505060405180910390fd5b85516112be906002906020890190615a4a565b5084516112d2906003906020880190615a4a565b506004805460ff191660ff86161790556112eb8361262a565b90508015611340576040805162461bcd60e51b815260206004820152601d60248201527f73657474696e67207265736572766520666163746f72206661696c6564000000604482015290519081900360640190fd5b611349826126e3565b9050801561139e576040805162461bcd60e51b815260206004820152601860248201527f73657474696e672061646d696e20666565206661696c65640000000000000000604482015290519081900360640190fd5b50506001805460ff60b01b1916600160b01b17905550505050505050565b600a5481565b6000806113ce81612808565b60006113d8611c06565b14611423576040805162461bcd60e51b81526020600482015260166024820152751858d8dc9d59481a5b9d195c995cdd0819985a5b195960521b604482015290519081900360640190fd5b61142c83611a40565b91505b611438816128d1565b50919050565b60115481565b600080600061145161293c565b9092509050600082600381111561146457fe5b146114a05760405162461bcd60e51b8152600401808060200182810382526035815260200180615e1a6035913960400191505060405180910390fd5b9150505b90565b565b6000806114b581612808565b60006114c3338787876129fc565b1491506114cf816128d1565b509392505050565b6000806114e48484612c88565b50949350505050565b60045460ff1681565b6114fe612ced565b611542576040805162461bcd60e51b815260206004820152601060248201526f31b0b63632b9103737ba1030b236b4b760811b604482015290519081900360640190fd5b61154e60028585615ac4565b5061155b60038383615ac4565b5050505050565b600061156c615b32565b604051806020016040528061157f611f1c565b90526001600160a01b0384166000908152601260205260408120549192509081906115ab908490612e68565b909250905060008260038111156115be57fe5b14611610576040805162461bcd60e51b815260206004820152601f60248201527f62616c616e636520636f756c64206e6f742062652063616c63756c6174656400604482015290519081900360640190fd5b949350505050565b6000611622612ebc565b905090565b600d5481565b611635612ced565b61166f576040805162461bcd60e51b815260206004820152600660248201526510b0b236b4b760d11b604482015290519081900360640190fd5b6116b0848484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612f0a92505050565b50505050565b73afd2aade64e6ea690173f6de59fc09f5c9190d7473cae4210e6676727ea4e0fd9ba5dfb95831356a16333014806116f157506116f1612ced565b61172a576040805162461bcd60e51b815260206004820152600560248201526410b9b2b63360d91b604482015290519081900360640190fd5b6000611734611c06565b14611770576040805162461bcd60e51b81526020600482015260076024820152662161636372756560c81b604482015290519081900360640190fd5b6001600160a01b0380831660008181526012602090815260408083208054908490559486168084529281902085905580518581529051929392600080516020615d96833981519152929181900390910190a35050505050565b6000546001600160a01b031681565b6005546001600160a01b031681565b6000806117f381612808565b60006117fd611c06565b905080156118235761181b81601181111561181457fe5b603b613126565b92505061142f565b61182c8461318c565b925050611438816128d1565b600f5481565b666379da05b6000081565b600b5481565b6015546001600160a01b031681565b6001600160a01b031660009081526012602052604090205490565b60008061188581612808565b600061188f611c06565b146118da576040805162461bcd60e51b81526020600482015260166024820152751858d8dc9d59481a5b9d195c995cdd0819985a5b195960521b604482015290519081900360640190fd5b600d5491506118e8816128d1565b5090565b6118f4612ced565b61192f5760405162461bcd60e51b815260040180806020018281038252602d815260200180615cad602d913960400191505060405180910390fd5b601554604080516317066a5760e21b81526001600160a01b03848116600483015291519190921691635c19a95c91602480830192600092919082900301818387803b15801561197d57600080fd5b505af115801561155b573d6000803e3d6000fd5b60006110f282613258565b60085481565b600e5481565b6000806119b481612808565b60006119be611c06565b905080156119dc5761181b8160118111156119d557fe5b6052613126565b61182c846126e3565b6003805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156110835780601f1061105857610100808354040283529160200191611083565b6000806000611a4e84613298565b90925090506000826003811115611a6157fe5b14611a9d5760405162461bcd60e51b8152600401808060200182810382526037815260200180615cfc6037913960400191505060405180910390fd5b9392505050565b600080611ab081612808565b6000611aba611c06565b90508015611ad85761181b816011811115611ad157fe5b6033613126565b61182c8461334c565b600080611104836133cd565b60006702c68af0bb14000090506000886001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015611b3557600080fd5b505afa158015611b49573d6000803e3d6000fd5b505050506040513d6020811015611b5f57600080fd5b50519050611b738888848989868a8a61110e565b601580546001600160a01b0319166001600160a01b038b81169190911791829055604080516318160ddd60e01b8152905192909116916318160ddd91600480820192602092909190829003018186803b158015611bcf57600080fd5b505afa158015611be3573d6000803e3d6000fd5b505050506040513d6020811015611bf957600080fd5b5050505050505050505050565b600080611c11612320565b905080600b541415611c275760009150506114a4565b6000611c31612ebc565b90506000600660009054906101000a90046001600160a01b03166001600160a01b03166315f2405383600d54611c76600e54611c71600f5460105461340d565b61340d565b6040518463ffffffff1660e01b815260040180848152602001838152602001828152602001935050505060206040518083038186803b158015611cb857600080fd5b505afa158015611ccc573d6000803e3d6000fd5b505050506040513d6020811015611ce257600080fd5b5051905065048c27395000811115611d41576040805162461bcd60e51b815260206004820152601c60248201527f626f72726f772072617465206973206162737572646c79206869676800000000604482015290519081900360640190fd5b600080611d5085600b54613443565b90925090506000826003811115611d6357fe5b14611db5576040805162461bcd60e51b815260206004820152601f60248201527f636f756c64206e6f742063616c63756c61746520626c6f636b2064656c746100604482015290519081900360640190fd5b611dc185858584613466565b9550505050505090565b600080611dd781612808565b6000611de1611c06565b90508015611dff5761181b816011811115611df857fe5b6037613126565b61182c8461367e565b600080611e1481612808565b6000611e22333387876129fc565b149150611e2e816128d1565b5092915050565b600c5481565b600081565b6006546000906001600160a01b031663b8168816611e5c612ebc565b600d54611e73600e54611c71600f5460105461340d565b600854600954600a5401016040518563ffffffff1660e01b81526004018085815260200184815260200183815260200182815260200194505050505060206040518083038186803b158015611ec757600080fd5b505afa158015611edb573d6000803e3d6000fd5b505050506040513d6020811015611ef157600080fd5b5051905090565b60006001611f0581612808565b611f1133868686613766565b91506114cf816128d1565b600080611f2881612808565b6000611f32611c06565b14611f7d576040805162461bcd60e51b81526020600482015260166024820152751858d8dc9d59481a5b9d195c995cdd0819985a5b195960521b604482015290519081900360640190fd5b611f85611444565b91506118e8816128d1565b6001600160a01b038116600090815260126020526040812054819081908190818080611fbb89613298565b935090506000816003811115611fcd57fe5b14611feb5760095b97506000965086955085945061201e9350505050565b611ff361293c565b92509050600081600381111561200557fe5b14612011576009611fd5565b5060009650919450925090505b9193509193565b60006110f282613b45565b60006110f282613b83565b60095481565b60105481565b6001600160a01b03918216600090815260136020908152604080832093909416825291909152205490565b60008061207d611c06565b905080156120a35761209b81601181111561209457fe5b604b613126565b915050611109565b611a9d83612324565b6006546001600160a01b031681565b6000806120c9858585613bbc565b5095945050505050565b6006546000906001600160a01b03166315f240536120ef612ebc565b600d54612106600e54611c71600f5460105461340d565b6040518463ffffffff1660e01b815260040180848152602001838152602001828152602001935050505060206040518083038186803b158015611ec757600080fd5b60008061215481612808565b600061215e611c06565b9050801561217c5761181b81601181111561217557fe5b6059613126565b61182c8461262a565b600181565b600080600061219881612808565b60006121a2611c06565b905080156121cd576121c08160118111156121b957fe5b6041613126565b9350600092506121de9050565b6121d8333387613ca8565b93509350505b6121e7816128d1565b50915091565b600080600560009054906101000a90046001600160a01b03169050826001600160a01b0316627e3dd26040518163ffffffff1660e01b815260040160206040518083038186803b15801561224057600080fd5b505afa158015612254573d6000803e3d6000fd5b505050506040513d602081101561226a57600080fd5b50516122bd576040805162461bcd60e51b815260206004820152601c60248201527f6d61726b6572206d6574686f642072657475726e65642066616c736500000000604482015290519081900360640190fd5b600580546001600160a01b0319166001600160a01b03858116918217909255604080519284168352602083019190915280517f7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d9281900390910190a16000611a9d565b4390565b60008061232f612ced565b61233f5761209b6001604d613126565b612347612320565b600b541461235b5761209b600a604c613126565b600660009054906101000a90046001600160a01b03169050826001600160a01b0316632191f92a6040518163ffffffff1660e01b815260040160206040518083038186803b1580156123ac57600080fd5b505afa1580156123c0573d6000803e3d6000fd5b505050506040513d60208110156123d657600080fd5b5051612429576040805162461bcd60e51b815260206004820152601c60248201527f6d61726b6572206d6574686f642072657475726e65642066616c736500000000604482015290519081900360640190fd5b600680546001600160a01b0319166001600160a01b03858116918217909255604080519284168352602083019190915280517fedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f9269281900390910190a16001600160a01b0381161561255b5760408051600481526024810182526020810180516001600160e01b0316636cc1140b60e11b178152915181516001600160a01b0385169382918083835b602083106124f05780518252601f1990920191602091820191016124d1565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612552576040519150601f19603f3d011682016040523d82523d6000602084013e612557565b606091505b5050505b60408051600481526024810182526020810180516001600160e01b031663742a137b60e11b178152915181516001600160a01b0387169382918083835b602083106125b75780518252601f199092019160209182019101612598565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612619576040519150601f19603f3d011682016040523d82523d6000602084013e61261e565b606091505b5060009150611a9d9050565b6000612634612ced565b61264b576126446001605a613126565b9050611109565b612653612320565b600b541461266757612644600a605b613126565b670de0b6b3a764000061268761267f8460085461340d565b60095461340d565b1115612699576126446002605c613126565b600a805490839055604080518281526020810185905281517faaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460929181900390910190a16000611a9d565b60006126ed612320565b600b541461270157612644600a6054613126565b6000198214156127115760085491505b600061271b613ff8565b9050670de0b6b3a764000061273b612735600a548661340d565b8361340d565b111561274d5761209b60026055613126565b82600854146127b35761275e612ced565b61276e5761209b60016053613126565b6008805490849055604080518281526020810186905281517fcdd0b588250e1398549f79cfdb8217c186688822905d6715b0834ea1c865594a929181900390910190a1505b8060095414612801576009805490829055604080518281526020810184905281517f92eef861b6533b7d3417f39c2ad7b460eed4e88a32fa3604f30e718b7602e7dc929181900390910190a1505b6000611a9d565b600154600160b01b900460ff16612853576040805162461bcd60e51b815260206004820152600a6024820152691c994b595b9d195c995960b21b604482015290519081900360640190fd5b806128c157600560009054906101000a90046001600160a01b03166001600160a01b031663c90c20b16040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156128a857600080fd5b505af11580156128bc573d6000803e3d6000fd5b505050505b506001805460ff60b01b19169055565b6001805460ff60b01b1916600160b01b1790558061293957600560009054906101000a90046001600160a01b03166001600160a01b031663632e51426040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561197d57600080fd5b50565b601154600090819080612957575050600754600091506129f8565b6000612961612ebc565b9050600061296d615b32565b600061298f84600d5461298a600e54611c71600f5460105461340d565b614047565b9350905060008160038111156129a157fe5b146129b6579550600094506129f89350505050565b6129c08386614093565b9250905060008160038111156129d257fe5b146129e7579550600094506129f89350505050565b50516000955093506129f892505050565b9091565b600554604080516317b9b84b60e31b81523060048201526001600160a01b03868116602483015285811660448301526064820185905291516000938493169163bdcdc25891608480830192602092919082900301818787803b158015612a6157600080fd5b505af1158015612a75573d6000803e3d6000fd5b505050506040513d6020811015612a8b57600080fd5b505190508015612aaa57612aa26003605d83614143565b915050611610565b836001600160a01b0316856001600160a01b03161415612ad057612aa26002605e613126565b60006001600160a01b038781169087161415612aef5750600019612b17565b506001600160a01b038086166000908152601360209081526040808320938a16835292905220545b600080600080612b278589613443565b90945092506000846003811115612b3a57fe5b14612b5857612b4b6009605e613126565b9650505050505050611610565b6001600160a01b038a16600090815260126020526040902054612b7b9089613443565b90945091506000846003811115612b8e57fe5b14612b9f57612b4b6009605f613126565b6001600160a01b038916600090815260126020526040902054612bc290896141cc565b90945090506000846003811115612bd557fe5b14612be657612b4b60096060613126565b6001600160a01b03808b16600090815260126020526040808220859055918b168152208190556000198514612c3e576001600160a01b03808b166000908152601360209081526040808320938f168352929052208390555b886001600160a01b03168a6001600160a01b0316600080516020615d968339815191528a6040518082815260200191505060405180910390a35060009a9950505050505050505050565b6000806000612c9681612808565b6000612ca0611c06565b90508015612ccb57612cbe816011811115612cb757fe5b6040613126565b935060009250612cdc9050565b612cd6338787613ca8565b93509350505b612ce5816128d1565b509250929050565b600554604080516303e1469160e61b815290516000926001600160a01b031691829163f851a44091600480820192602092909190829003018186803b158015612d3557600080fd5b505afa158015612d49573d6000803e3d6000fd5b505050506040513d6020811015612d5f57600080fd5b50516001600160a01b031633148015612dd95750806001600160a01b0316630a755ec26040518163ffffffff1660e01b815260040160206040518083038186803b158015612dac57600080fd5b505afa158015612dc0573d6000803e3d6000fd5b505050506040513d6020811015612dd657600080fd5b50515b806114a057503373a731585ab05fc9f83555cf9bff8f58ee94e18f851480156114a05750806001600160a01b0316632f1069ba6040518163ffffffff1660e01b815260040160206040518083038186803b158015612e3657600080fd5b505afa158015612e4a573d6000803e3d6000fd5b505050506040513d6020811015612e6057600080fd5b505191505090565b6000806000612e75615b32565b612e7f86866141f2565b90925090506000826003811115612e9257fe5b14612ea35750915060009050612eb5565b6000612eae8261425a565b9350935050505b9250929050565b601554604080516370a0823160e01b815230600482015290516000926001600160a01b03169182916370a0823191602480820192602092909190829003018186803b158015612e3657600080fd5b600054604080516338e6a07360e11b81526001600160a01b039283166004820152918516602483015283151560448301525173a731585ab05fc9f83555cf9bff8f58ee94e18f85916371cd40e6916064808301926020929190829003018186803b158015612f7757600080fd5b505afa158015612f8b573d6000803e3d6000fd5b505050506040513d6020811015612fa157600080fd5b5051612fdc576040805162461bcd60e51b8152602060048201526005602482015264085a5b5c1b60da1b604482015290519081900360640190fd5b8115612fea57612fea614269565b600080546001600160a01b038581166001600160a01b0319831617835560405160206024820181815286516044840152865193909416946130d794309488949193849360649093019290860191908190849084905b8381101561305757818101518382015260200161303f565b50505050905090810190601f1680156130845780820380516001836020036101000a031916815260200191505b5060408051601f19818403018152918152602080830180516001600160e01b0316630adccee560e31b17905281518083019092526007825266216265636f6d6560c81b90820152909350915061426e9050565b50600054604080516001600160a01b038085168252909216602083015280517fd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a9281900390910190a150505050565b60007f45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa083601181111561315557fe5b83606381111561316157fe5b604080519283526020830191909152600082820152519081900360600190a1826011811115611a9d57fe5b600080613197612ced565b6131a75761209b6001603c613126565b6131af612320565b600b54146131c35761209b600a603e613126565b826131cc612ebc565b10156131de5761209b600e603d613126565b600e548311156131f45761209b6002603f613126565b613200600e54846143bd565b600e819055905061321133846143f7565b604080513381526020810185905280820183905290517f3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e9181900360600190a16000611a9d565b60008061326481612808565b600061326e611c06565b9050801561328c5761181b81601181111561328557fe5b602a613126565b61182c3360008661447c565b6001600160a01b0381166000908152601460205260408120805482918291829182916132cf57506000945084935061334792505050565b6132df8160000154600c5461494c565b909450925060008460038111156132f257fe5b14613307575091935060009250613347915050565b61331583826001015461498b565b9094509150600084600381111561332857fe5b1461333d575091935060009250613347915050565b5060009450925050505b915091565b600080613357612320565b600b541461336b5761209b600a6035613126565b82613374612ebc565b10156133865761209b600e6034613126565b60105483111561339c5761209b60026036613126565b6133a8601054846143bd565b6010819055905061280173a731585ab05fc9f83555cf9bff8f58ee94e18f85846143f7565b60008060006133db81612808565b60006133e5611c06565b90508015613403576121c08160118111156133fc57fe5b6020613126565b6121d833866149b6565b6000611a9d8383604051806040016040528060118152602001706164646974696f6e206f766572666c6f7760781b815250614d32565b60008083831161345a575060009050818303612eb5565b50600390506000612eb5565b6000613470615b32565b61348860405180602001604052808681525084614d87565b9050600061349882600d54614db1565b905060006134a882600d5461340d565b905060006134c96040518060200160405280600a5481525084600e54614dd0565b905060006134ea604051806020016040528060095481525085601054614dd0565b9050600061350b604051806020016040528060085481525086600f54614dd0565b9050600061351e87600c54600c54614dd0565b600b8d9055600c819055600d869055600e8590556010849055600f839055604080518d8152602081018990528082018390526060810188905290519192507f4dec04e750ca11537cabcd8a9eab06494de08da3735bc8871cd41250e190bc04919081900360800190a16006546040805160248082018e905282518083039091018152604490910182526020810180516001600160e01b0316635efd023360e11b178152915181516001600160a01b0390941693919290918291908083835b602083106135fb5780518252601f1990920191602091820191016135dc565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461365d576040519150601f19603f3d011682016040523d82523d6000602084013e613662565b606091505b506000915061366e9050565b9c9b505050505050505050505050565b600080613689612320565b600b541461369d5761209b600a6039613126565b826136a6612ebc565b10156136b85761209b600e6038613126565b600f548311156136ce5761209b6002603a613126565b6136da600f54846143bd565b905080600f81905550612801600560009054906101000a90046001600160a01b03166001600160a01b031663f851a4406040518163ffffffff1660e01b815260040160206040518083038186803b15801561373457600080fd5b505afa158015613748573d6000803e3d6000fd5b505050506040513d602081101561375e57600080fd5b5051846143f7565b6005546040805163d02f735160e01b81523060048201526001600160a01b038781166024830152868116604483015285811660648301526084820185905291516000938493169163d02f73519160a480830192602092919082900301818787803b1580156137d357600080fd5b505af11580156137e7573d6000803e3d6000fd5b505050506040513d60208110156137fd57600080fd5b50519050801561381457612aa26003601d83614143565b846001600160a01b0316846001600160a01b0316141561383a57612aa26006601e613126565b613842615b45565b6001600160a01b0385166000908152601260205260409020546138659085613443565b602083018190528282600381111561387957fe5b600381111561388457fe5b905250600090508151600381111561389857fe5b146138c2576138b96009601c836000015160038111156138b457fe5b614143565b92505050611610565b6138e1846040518060200160405280666379da05b60000815250614df8565b608082018190526138f39085906143bd565b606082015261390061293c565b60c083018190528282600381111561391457fe5b600381111561391f57fe5b905250600090508151600381111561393357fe5b14613985576040805162461bcd60e51b815260206004820152601860248201527f65786368616e67652072617465206d617468206572726f720000000000000000604482015290519081900360640190fd5b6139a560405180602001604052808360c001518152508260800151614db1565b60a08201819052600e546139b89161340d565b60e082015260115460808201516139cf91906143bd565b6101008201526001600160a01b03861660009081526012602052604090205460608201516139fd91906141cc565b6040830181905282826003811115613a1157fe5b6003811115613a1c57fe5b9052506000905081516003811115613a3057fe5b14613a4c576138b96009601b836000015160038111156138b457fe5b60e0810151600e556101008101516011556020808201516001600160a01b0380881660008181526012855260408082209490945583860151928b16808252908490209290925560608501518351908152925191939092600080516020615d96833981519152929081900390910190a36080810151604080519182525130916001600160a01b03881691600080516020615d968339815191529181900360200190a360a081015160e082015160408051308152602081019390935282810191909152517fa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc59181900360600190a16000979650505050505050565b600080613b5181612808565b6000613b5b611c06565b90508015613b795761181b816011811115613b7257fe5b600a613126565b61182c3385614e20565b600080613b8f81612808565b6000613b99611c06565b90508015613bb05761181b81601181111561328557fe5b61182c3385600061447c565b6000806000613bca81612808565b6000613bd4611c06565b90508015613bff57613bf2816011811115613beb57fe5b6011613126565b935060009250613c969050565b846001600160a01b031663a6afed956040518163ffffffff1660e01b8152600401602060405180830381600087803b158015613c3a57600080fd5b505af1158015613c4e573d6000803e3d6000fd5b505050506040513d6020811015613c6457600080fd5b505190508015613c8457613bf2816011811115613c7d57fe5b6012613126565b613c9033888888615166565b93509350505b613c9f816128d1565b50935093915050565b60055460408051631200453160e11b81523060048201526001600160a01b0386811660248301528581166044830152606482018590529151600093849384939116916324008a629160848082019260209290919082900301818787803b158015613d1157600080fd5b505af1158015613d25573d6000803e3d6000fd5b505050506040513d6020811015613d3b57600080fd5b505190508015613d5f57613d526003604383614143565b925060009150613ff09050565b613d67612320565b600b5414613d7b57613d52600a6044613126565b613d83615b92565b6001600160a01b0386166000908152601460205260409020600101546060820152613dad86613298565b6080830181905260208301826003811115613dc457fe5b6003811115613dcf57fe5b9052506000905081602001516003811115613de657fe5b14613e1057613e0260096042836020015160038111156138b457fe5b935060009250613ff0915050565b600019851415613e295760808101516040820152613e31565b604081018590525b613e3f878260400151615658565b60e082018190526080820151613e5491613443565b60a0830181905260208301826003811115613e6b57fe5b6003811115613e7657fe5b9052506000905081602001516003811115613e8d57fe5b14613ec95760405162461bcd60e51b815260040180806020018281038252603a815260200180615d33603a913960400191505060405180910390fd5b613ed9600d548260e00151613443565b60c0830181905260208301826003811115613ef057fe5b6003811115613efb57fe5b9052506000905081602001516003811115613f1257fe5b14613f4e5760405162461bcd60e51b8152600401808060200182810382526031815260200180615db66031913960400191505060405180910390fd5b60a080820180516001600160a01b03808a16600081815260146020908152604091829020948555600c5460019095019490945560c0870151600d81905560e088015195518251948f16855294840192909252828101949094526060820192909252608081019190915290517f1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1929181900390910190a160e00151600093509150505b935093915050565b600073a731585ab05fc9f83555cf9bff8f58ee94e18f856001600160a01b031663dd86fea16040518163ffffffff1660e01b815260040160206040518083038186803b158015611ec757600080fd5b60008060008061405787876141cc565b9092509050600082600381111561406a57fe5b1461407b5750915060009050613ff0565b6140858186613443565b935093505050935093915050565b600061409d615b32565b6000806140b286670de0b6b3a764000061494c565b909250905060008260038111156140c557fe5b146140e457506040805160208101909152600081529092509050612eb5565b6000806140f1838861498b565b9092509050600082600381111561410457fe5b1461412657506040805160208101909152600081529094509250612eb5915050565b604080516020810190915290815260009890975095505050505050565b60007f45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa084601181111561417257fe5b84606381111561417e57fe5b604080519283526020830191909152818101859052519081900360600190a160038460118111156141ab57fe5b146141c1578360118111156141bc57fe5b611610565b506103e80192915050565b6000808383018481106141e457600092509050612eb5565b506002915060009050612eb5565b60006141fc615b32565b60008061420d86600001518661494c565b9092509050600082600381111561422057fe5b1461423f57506040805160208101909152600081529092509050612eb5565b60408051602081019091529081526000969095509350505050565b51670de0b6b3a7640000900490565b6114a7565b606060006060856001600160a01b0316856040518082805190602001908083835b602083106142ae5780518252601f19909201916020918201910161428f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614310576040519150601f19603f3d011682016040523d82523d6000602084013e614315565b606091505b5091509150816143b45780511561432f5780518082602001fd5b8360405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614379578181015183820152602001614361565b50505050905090810190601f1680156143a65780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b95945050505050565b6000611a9d8383604051806040016040528060158152602001747375627472616374696f6e20756e646572666c6f7760581b815250615835565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091018252602081810180516001600160e01b031663a9059cbb60e01b1790528251808401909352601983527f544f4b454e5f5452414e534645525f4f55545f4641494c454400000000000000908301526144789161588f565b5050565b6000821580614489575081155b6144c45760405162461bcd60e51b8152600401808060200182810382526034815260200180615e4f6034913960400191505060405180910390fd5b6144cc615bd8565b6144d461293c565b60408301819052602083018260038111156144eb57fe5b60038111156144f657fe5b905250600090508160200151600381111561450d57fe5b14614531576145296009602e836020015160038111156138b457fe5b915050611a9d565b83156145b25760608101849052604080516020810182529082015181526145589085612e68565b608083018190526020830182600381111561456f57fe5b600381111561457a57fe5b905250600090508160200151600381111561459157fe5b146145ad576145296009602c836020015160038111156138b457fe5b61462b565b6145ce836040518060200160405280846040015181525061591c565b60608301819052602083018260038111156145e557fe5b60038111156145f057fe5b905250600090508160200151600381111561460757fe5b14614623576145296009602d836020015160038111156138b457fe5b608081018390525b60055460608201516040805163eabe7d9160e01b81523060048201526001600160a01b03898116602483015260448201939093529051600093929092169163eabe7d919160648082019260209290919082900301818787803b15801561469057600080fd5b505af11580156146a4573d6000803e3d6000fd5b505050506040513d60208110156146ba57600080fd5b5051905080156146da576146d16003602b83614143565b92505050611a9d565b6146e2612320565b600b54146146f6576146d1600a602f613126565b6147066011548360600151613443565b60a084018190526020840182600381111561471d57fe5b600381111561472857fe5b905250600090508260200151600381111561473f57fe5b1461475b576146d160096031846020015160038111156138b457fe5b6001600160a01b03861660009081526012602052604090205460608301516147839190613443565b60c084018190526020840182600381111561479a57fe5b60038111156147a557fe5b90525060009050826020015160038111156147bc57fe5b146147d8576146d160096030846020015160038111156138b457fe5b81608001516147e5612ebc565b10156147f7576146d1600e6032613126565b60a082015160115560c08201516001600160a01b038716600090815260126020526040902055608082015161482d9087906143f7565b6060820151604080519182525130916001600160a01b03891691600080516020615d968339815191529181900360200190a36080820151606080840151604080516001600160a01b038b168152602081019490945283810191909152517fe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a9299281900390910190a160055460808301516060840151604080516351dff98960e01b81523060048201526001600160a01b038b81166024830152604482019490945260648101929092525191909216916351dff98991608480830192600092919082900301818387803b15801561492157600080fd5b505af1158015614935573d6000803e3d6000fd5b5060009250614942915050565b9695505050505050565b6000808361495f57506000905080612eb5565b8383028385828161496c57fe5b041461498057506002915060009050612eb5565b600092509050612eb5565b6000808261499f5750600190506000612eb5565b60008385816149aa57fe5b04915091509250929050565b60055460408051634ef4c3e160e01b81523060048201526001600160a01b03858116602483015260448201859052915160009384938493911691634ef4c3e19160648082019260209290919082900301818787803b158015614a1757600080fd5b505af1158015614a2b573d6000803e3d6000fd5b505050506040513d6020811015614a4157600080fd5b505190508015614a6557614a586003602183614143565b925060009150612eb59050565b614a6d612320565b600b5414614a8157614a58600a6024613126565b614a89615bd8565b614a9161293c565b6040830181905260208301826003811115614aa857fe5b6003811115614ab357fe5b9052506000905081602001516003811115614aca57fe5b14614af457614ae660096023836020015160038111156138b457fe5b935060009250612eb5915050565b614afe8686615658565b60c0820181905260408051602081018252908301518152614b1f919061591c565b6060830181905260208301826003811115614b3657fe5b6003811115614b4157fe5b9052506000905081602001516003811115614b5857fe5b14614baa576040805162461bcd60e51b815260206004820181905260248201527f4d494e545f45584348414e47455f43414c43554c4154494f4e5f4641494c4544604482015290519081900360640190fd5b614bba601154826060015161340d565b60808201526001600160a01b0386166000908152601260205260409020546060820151614be7919061340d565b60a0820181905260808201516011556001600160a01b0387166000818152601260209081526040918290209390935560c084015160608086015183519485529484019190915282820193909352517f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f929181900390910190a1606081015160408051918252516001600160a01b038816913091600080516020615d968339815191529181900360200190a360055460c08201516060830151604080516341c728b960e01b81523060048201526001600160a01b038b81166024830152604482019490945260648101929092525191909216916341c728b991608480830192600092919082900301818387803b158015614cff57600080fd5b505af1158015614d13573d6000803e3d6000fd5b5060009250614d20915050565b8160c001519350935050509250929050565b600083830182858210156114e45760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315614379578181015183820152602001614361565b614d8f615b32565b6040518060200160405280614da8856000015185615933565b90529392505050565b6000614dbb615b32565b614dc58484614d87565b90506116108161425a565b6000614dda615b32565b614de48585614d87565b90506143b4614df28261425a565b8461340d565b6000670de0b6b3a7640000614e11848460000151615933565b81614e1857fe5b049392505050565b6005546040805163368f515360e21b81523060048201526001600160a01b0385811660248301526044820185905291516000938493169163da3d454c91606480830192602092919082900301818787803b158015614e7d57600080fd5b505af1158015614e91573d6000803e3d6000fd5b505050506040513d6020811015614ea757600080fd5b505190508015614ec657614ebe6003601083614143565b9150506110f2565b614ece612320565b600b5414614ee257614ebe600a600c613126565b6000614eec612ebc565b905083811015614f0b57614f02600e600b613126565b925050506110f2565b614f13615c16565b614f1c86613298565b6020830181905282826003811115614f3057fe5b6003811115614f3b57fe5b9052506000905081516003811115614f4f57fe5b14614f7457614f6a600980836000015160038111156138b457fe5b93505050506110f2565b614f828160200151866141cc565b6040830181905282826003811115614f9657fe5b6003811115614fa157fe5b9052506000905081516003811115614fb557fe5b14614fd157614f6a6009600e836000015160038111156138b457fe5b6005546040808301518151631de6c8a560e21b8152306004820152602481019190915290516001600160a01b039092169163779b2294916044808201926020929091908290030181600087803b15801561502a57600080fd5b505af115801561503e573d6000803e3d6000fd5b505050506040513d602081101561505457600080fd5b50519250821561506b57614f6a6003601085614143565b615077600d54866141cc565b606083018190528282600381111561508b57fe5b600381111561509657fe5b90525060009050815160038111156150aa57fe5b146150c657614f6a6009600d836000015160038111156138b457fe5b6040808201516001600160a01b0388166000908152601460205291909120908155600c546001909101556060810151600d5561510286866143f7565b60408082015160608084015183516001600160a01b038b168152602081018a9052808501939093529082015290517f13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab809181900360800190a160009695505050505050565b60055460408051632fe3f38f60e11b81523060048201526001600160a01b0384811660248301528781166044830152868116606483015260848201869052915160009384938493911691635fc7e71e9160a48082019260209290919082900301818787803b1580156151d757600080fd5b505af11580156151eb573d6000803e3d6000fd5b505050506040513d602081101561520157600080fd5b505190508015615225576152186003601483614143565b92506000915061564f9050565b61522d612320565b600b541461524157615218600a6018613126565b615249612320565b846001600160a01b0316636c540baf6040518163ffffffff1660e01b815260040160206040518083038186803b15801561528257600080fd5b505afa158015615296573d6000803e3d6000fd5b505050506040513d60208110156152ac57600080fd5b5051146152bf57615218600a6013613126565b866001600160a01b0316866001600160a01b031614156152e55761521860066019613126565b846152f65761521860076017613126565b60001985141561530c5761521860076016613126565b60008061531a898989613ca8565b9092509050811561534a5761533b82601181111561533457fe5b601a613126565b94506000935061564f92505050565b6005546040805163c488847b60e01b81523060048201526001600160a01b038981166024830152604482018590528251600094859492169263c488847b926064808301939192829003018186803b1580156153a457600080fd5b505afa1580156153b8573d6000803e3d6000fd5b505050506040513d60408110156153ce57600080fd5b508051602090910151909250905081156154195760405162461bcd60e51b8152600401808060200182810382526033815260200180615de76033913960400191505060405180910390fd5b80886001600160a01b03166370a082318c6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561547057600080fd5b505afa158015615484573d6000803e3d6000fd5b505050506040513d602081101561549a57600080fd5b505110156154ef576040805162461bcd60e51b815260206004820152601860248201527f4c49515549444154455f5345495a455f544f4f5f4d5543480000000000000000604482015290519081900360640190fd5b60006001600160a01b0389163014156155155761550e308d8d85613766565b905061559f565b6040805163b2a02ff160e01b81526001600160a01b038e811660048301528d81166024830152604482018590529151918b169163b2a02ff1916064808201926020929091908290030181600087803b15801561557057600080fd5b505af1158015615584573d6000803e3d6000fd5b505050506040513d602081101561559a57600080fd5b505190505b80156155e9576040805162461bcd60e51b81526020600482015260146024820152731d1bdad95b881cd95a5e9d5c994819985a5b195960621b604482015290519081900360640190fd5b604080516001600160a01b03808f168252808e1660208301528183018790528b1660608201526080810184905290517f298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb529181900360a00190a16000975092955050505050505b94509492505050565b601554604080516370a0823160e01b8152306004820152905160009283926001600160a01b03909116916370a0823191602480820192602092909190829003018186803b1580156156a857600080fd5b505afa1580156156bc573d6000803e3d6000fd5b505050506040513d60208110156156d257600080fd5b5051604080516001600160a01b038716602482015230604482015260648082018790528251808303909101815260849091018252602081810180516001600160e01b03166323b872dd60e01b1790528251808401909352601883527f544f4b454e5f5452414e534645525f494e5f4641494c454400000000000000009083015291925061575f919061588f565b601554604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156157aa57600080fd5b505afa1580156157be573d6000803e3d6000fd5b505050506040513d60208110156157d457600080fd5b505190508181101561582d576040805162461bcd60e51b815260206004820152601a60248201527f544f4b454e5f5452414e534645525f494e5f4f564552464c4f57000000000000604482015290519081900360640190fd5b039392505050565b600081848411156158875760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315614379578181015183820152602001614361565b505050900390565b6015546060906158a9906001600160a01b0316848461426e565b805190915015615917578080602001905160208110156158c857600080fd5b505182906116b05760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315614379578181015183820152602001614361565b505050565b6000806000615929615b32565b612e7f8686615975565b6000611a9d83836040518060400160405280601781526020017f6d756c7469706c69636174696f6e206f766572666c6f770000000000000000008152506159d4565b600061597f615b32565b600080615994670de0b6b3a76400008761494c565b909250905060008260038111156159a757fe5b146159c657506040805160208101909152600081529092509050612eb5565b612eae818660000151614093565b60008315806159e1575082155b156159ee57506000611a9d565b838302838582816159fb57fe5b041483906114e45760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315614379578181015183820152602001614361565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10615a8b57805160ff1916838001178555615ab8565b82800160010185558215615ab8579182015b82811115615ab8578251825591602001919060010190615a9d565b506118e8929150615c3f565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10615b055782800160ff19823516178555615ab8565b82800160010185558215615ab8579182015b82811115615ab8578235825591602001919060010190615b17565b6040518060200160405280600081525090565b604080516101208101909152806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040805161010081019091528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040805160e0810190915280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b604080516080810190915280600081526020016000815260200160008152602001600081525090565b6114a491905b808211156118e85760008155600101615c4556fe6d61726b6574206d6179206f6e6c7920626520696e697469616c697a6564206f6e6365696e697469616c2065786368616e67652072617465206d7573742062652067726561746572207468616e207a65726f2e6f6e6c79207468652061646d696e206d6179207365742074686520636f6d702d6c696b652064656c656761746573657474696e6720696e7465726573742072617465206d6f64656c206661696c6564626f72726f7742616c616e636553746f7265643a20626f72726f7742616c616e636553746f726564496e7465726e616c206661696c656452455041595f424f52524f575f4e45575f4143434f554e545f424f52524f575f42414c414e43455f43414c43554c4154494f4e5f4641494c45446f6e6c7920467573652061646d696e206d617920696e697469616c697a6520746865206d61726b6574ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef52455041595f424f52524f575f4e45575f544f54414c5f42414c414e43455f43414c43554c4154494f4e5f4641494c45444c49515549444154455f434f4d5054524f4c4c45525f43414c43554c4154455f414d4f554e545f5345495a455f4641494c454465786368616e67655261746553746f7265643a2065786368616e67655261746553746f726564496e7465726e616c206661696c65646f6e65206f662072656465656d546f6b656e73496e206f722072656465656d416d6f756e74496e206d757374206265207a65726fa265627a7a72315820345834ea73eea58be7ba68700da98535b7a57f02e7c6c5859483e4dc77f12c4364736f6c63430005110032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x376 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x852A12E3 GT PUSH2 0x1D1 JUMPI DUP1 PUSH4 0xAE9D70B0 GT PUSH2 0x102 JUMPI DUP1 PUSH4 0xDC028AB1 GT PUSH2 0xA0 JUMPI DUP1 PUSH4 0xF5E3C462 GT PUSH2 0x6F JUMPI DUP1 PUSH4 0xF5E3C462 EQ PUSH2 0xF69 JUMPI DUP1 PUSH4 0xF8F9DA28 EQ PUSH2 0xFAC JUMPI DUP1 PUSH4 0xFCA7820B EQ PUSH2 0xFC1 JUMPI DUP1 PUSH4 0xFE9C44AE EQ PUSH2 0xFEB JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0xDC028AB1 EQ PUSH2 0xED1 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0xEE6 JUMPI DUP1 PUSH4 0xF2B3ABBD EQ PUSH2 0xF21 JUMPI DUP1 PUSH4 0xF3FDB15A EQ PUSH2 0xF54 JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0xC37F68E2 GT PUSH2 0xDC JUMPI DUP1 PUSH4 0xC37F68E2 EQ PUSH2 0xE0F JUMPI DUP1 PUSH4 0xC5EBEAEC EQ PUSH2 0xE68 JUMPI DUP1 PUSH4 0xDB006A75 EQ PUSH2 0xE92 JUMPI DUP1 PUSH4 0xDBFE7C19 EQ PUSH2 0xEBC JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0xAE9D70B0 EQ PUSH2 0xDA2 JUMPI DUP1 PUSH4 0xB2A02FF1 EQ PUSH2 0xDB7 JUMPI DUP1 PUSH4 0xBD6D894D EQ PUSH2 0xDFA JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0xA0712D68 GT PUSH2 0x16F JUMPI DUP1 PUSH4 0xA7B820DF GT PUSH2 0x149 JUMPI DUP1 PUSH4 0xA7B820DF EQ PUSH2 0xD15 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0xD3F JUMPI DUP1 PUSH4 0xAA5AF0FD EQ PUSH2 0xD78 JUMPI DUP1 PUSH4 0xAC784DDC EQ PUSH2 0xD8D JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0xA0712D68 EQ PUSH2 0xB7A JUMPI DUP1 PUSH4 0xA0B0D289 EQ PUSH2 0xBA4 JUMPI DUP1 PUSH4 0xA6AFED95 EQ PUSH2 0xD00 JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0x91DD36C6 GT PUSH2 0x1AB JUMPI DUP1 PUSH4 0x91DD36C6 EQ PUSH2 0xADE JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0xB08 JUMPI DUP1 PUSH4 0x95DD9193 EQ PUSH2 0xB1D JUMPI DUP1 PUSH4 0xA03DCE8D EQ PUSH2 0xB50 JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0x852A12E3 EQ PUSH2 0xA8A JUMPI DUP1 PUSH4 0x8D02D9A1 EQ PUSH2 0xAB4 JUMPI DUP1 PUSH4 0x8F840DDD EQ PUSH2 0xAC9 JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0x3B1D21A2 GT PUSH2 0x2AB JUMPI DUP1 PUSH4 0x61FEACFF GT PUSH2 0x249 JUMPI DUP1 PUSH4 0x6F307DC3 GT PUSH2 0x223 JUMPI DUP1 PUSH4 0x6F307DC3 EQ PUSH2 0x9FA JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0xA0F JUMPI DUP1 PUSH4 0x73ACEE98 EQ PUSH2 0xA42 JUMPI DUP1 PUSH4 0x7F1E06BE EQ PUSH2 0xA57 JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0x61FEACFF EQ PUSH2 0x9BB JUMPI DUP1 PUSH4 0x6752E702 EQ PUSH2 0x9D0 JUMPI DUP1 PUSH4 0x6C540BAF EQ PUSH2 0x9E5 JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0x56E67728 GT PUSH2 0x285 JUMPI DUP1 PUSH4 0x56E67728 EQ PUSH2 0x8D0 JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x94B JUMPI DUP1 PUSH4 0x5FE3B567 EQ PUSH2 0x97C JUMPI DUP1 PUSH4 0x601A0BF1 EQ PUSH2 0x991 JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0x3B1D21A2 EQ PUSH2 0x814 JUMPI DUP1 PUSH4 0x47BD3718 EQ PUSH2 0x829 JUMPI DUP1 PUSH4 0x50D85B73 EQ PUSH2 0x83E JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0x182DF0F5 GT PUSH2 0x318 JUMPI DUP1 PUSH4 0x2608F818 GT PUSH2 0x2F2 JUMPI DUP1 PUSH4 0x2608F818 EQ PUSH2 0x6B2 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x6EB JUMPI DUP1 PUSH4 0x34154D4C EQ PUSH2 0x716 JUMPI DUP1 PUSH4 0x3AF9E669 EQ PUSH2 0x7E1 JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0x182DF0F5 EQ PUSH2 0x652 JUMPI DUP1 PUSH4 0x1DB78944 EQ PUSH2 0x667 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x66F JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0xF8855E8 GT PUSH2 0x354 JUMPI DUP1 PUSH4 0xF8855E8 EQ PUSH2 0x48E JUMPI DUP1 PUSH4 0x173B9904 EQ PUSH2 0x5F5 JUMPI DUP1 PUSH4 0x17BFDFBC EQ PUSH2 0x60A JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x63D JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x37B JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x405 JUMPI DUP1 PUSH4 0xE752702 EQ PUSH2 0x452 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x387 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x390 PUSH2 0x1000 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3CA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3B2 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x3F7 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x411 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x43E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x428 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x108B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x45E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x475 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x10F8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x49A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5F3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x4B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x4EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x4FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x51F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x571 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x583 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x5A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP POP PUSH1 0xFF DUP4 CALLDATALOAD AND SWAP4 POP POP POP PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x110E JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x601 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x13BC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x616 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x62D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x13C2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x649 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x143E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x65E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x1444 JUMP JUMPDEST PUSH2 0x5F3 PUSH2 0x14A7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x67B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x43E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x692 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x14A9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x6D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x14D7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x700 PUSH2 0x14ED JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x722 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5F3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x739 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x753 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x765 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x786 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x7A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x7B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x7D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x14F6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x804 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1562 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x820 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x1618 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x835 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x1627 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x84A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5F3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x861 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x892 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x8A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x8C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x162D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5F3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x90D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x91F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x940 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x16B6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x957 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x960 PUSH2 0x17C9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x988 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x960 PUSH2 0x17D8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x99D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x17E7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x1838 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x183E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x1849 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA06 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x960 PUSH2 0x184F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA1B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA32 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x185E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA4E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x1879 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA63 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5F3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA7A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x18EC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAAD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1991 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x199C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAD5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x19A2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB01 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x19A8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x390 PUSH2 0x19E5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB29 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB40 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1A40 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB73 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1AA4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1AE1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBB0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5F3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0xBC7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP3 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP1 SWAP3 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xC02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xC14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0xC35 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xC87 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xC99 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0xCBA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP POP DUP3 CALLDATALOAD SWAP4 POP POP POP PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1AED JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD0C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x1C06 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD21 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1DCB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD4B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x43E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xD62 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1E08 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD84 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x1E35 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD99 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x43E PUSH2 0x1E3B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xDAE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x1E40 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xDC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xDDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x1EF8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE06 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x1F1C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE1B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE42 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE32 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1F90 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP5 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP4 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE74 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x2025 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE9E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xEB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x2030 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEC8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x203B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEDD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x2041 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xF09 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x2047 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF2D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF44 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2072 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF60 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x960 PUSH2 0x20AC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF75 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xF8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 SWAP1 SWAP2 ADD CALLDATALOAD AND PUSH2 0x20BB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xFB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x20D3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xFCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xFE4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x2148 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xFF7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x43E PUSH2 0x2185 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP4 AND DUP5 SWAP1 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x1083 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1058 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1083 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1066 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP7 SWAP1 SSTORE DUP2 MLOAD DUP7 DUP2 MSTORE SWAP2 MLOAD SWAP4 SWAP5 SWAP4 SWAP1 SWAP3 DUP5 SWAP3 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1104 DUP4 PUSH2 0x218A JUMP JUMPDEST POP SWAP2 POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST CALLER PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 EQ PUSH2 0x1160 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5D6D PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xB SLOAD ISZERO DUP1 ISZERO PUSH2 0x1170 JUMPI POP PUSH1 0xC SLOAD ISZERO JUMPDEST PUSH2 0x11AB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5C5A PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x7 DUP7 SWAP1 SSTORE DUP6 PUSH2 0x11EC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x30 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5C7D PUSH1 0x30 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x11F7 DUP10 PUSH2 0x21ED JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x124C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x73657474696E6720636F6D7074726F6C6C6572206661696C6564000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1254 PUSH2 0x2320 JUMP JUMPDEST PUSH1 0xB SSTORE PUSH8 0xDE0B6B3A7640000 PUSH1 0xC SSTORE PUSH2 0x126C DUP9 PUSH2 0x2324 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x12AB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5CDA PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP6 MLOAD PUSH2 0x12BE SWAP1 PUSH1 0x2 SWAP1 PUSH1 0x20 DUP10 ADD SWAP1 PUSH2 0x5A4A JUMP JUMPDEST POP DUP5 MLOAD PUSH2 0x12D2 SWAP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP9 ADD SWAP1 PUSH2 0x5A4A JUMP JUMPDEST POP PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF DUP7 AND OR SWAP1 SSTORE PUSH2 0x12EB DUP4 PUSH2 0x262A JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1340 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x73657474696E67207265736572766520666163746F72206661696C6564000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1349 DUP3 PUSH2 0x26E3 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x139E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x73657474696E672061646D696E20666565206661696C65640000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF PUSH1 0xB0 SHL NOT AND PUSH1 0x1 PUSH1 0xB0 SHL OR SWAP1 SSTORE POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0xA SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x13CE DUP2 PUSH2 0x2808 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x13D8 PUSH2 0x1C06 JUMP JUMPDEST EQ PUSH2 0x1423 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x1858D8DC9D59481A5B9D195C995CDD0819985A5B1959 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x142C DUP4 PUSH2 0x1A40 JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH2 0x1438 DUP2 PUSH2 0x28D1 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x11 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1451 PUSH2 0x293C JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1464 JUMPI INVALID JUMPDEST EQ PUSH2 0x14A0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x35 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5E1A PUSH1 0x35 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP2 POP POP JUMPDEST SWAP1 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x14B5 DUP2 PUSH2 0x2808 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14C3 CALLER DUP8 DUP8 DUP8 PUSH2 0x29FC JUMP JUMPDEST EQ SWAP2 POP PUSH2 0x14CF DUP2 PUSH2 0x28D1 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x14E4 DUP5 DUP5 PUSH2 0x2C88 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x14FE PUSH2 0x2CED JUMP JUMPDEST PUSH2 0x1542 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x31B0B63632B9103737BA1030B236B4B7 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x154E PUSH1 0x2 DUP6 DUP6 PUSH2 0x5AC4 JUMP JUMPDEST POP PUSH2 0x155B PUSH1 0x3 DUP4 DUP4 PUSH2 0x5AC4 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x156C PUSH2 0x5B32 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x157F PUSH2 0x1F1C JUMP JUMPDEST SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP SWAP1 DUP2 SWAP1 PUSH2 0x15AB SWAP1 DUP5 SWAP1 PUSH2 0x2E68 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x15BE JUMPI INVALID JUMPDEST EQ PUSH2 0x1610 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x62616C616E636520636F756C64206E6F742062652063616C63756C6174656400 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1622 PUSH2 0x2EBC JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0xD SLOAD DUP2 JUMP JUMPDEST PUSH2 0x1635 PUSH2 0x2CED JUMP JUMPDEST PUSH2 0x166F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x10B0B236B4B7 PUSH1 0xD1 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x16B0 DUP5 DUP5 DUP5 DUP5 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x2F0A SWAP3 POP POP POP JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH20 0xAFD2AADE64E6EA690173F6DE59FC09F5C9190D74 PUSH20 0xCAE4210E6676727EA4E0FD9BA5DFB95831356A16 CALLER ADDRESS EQ DUP1 PUSH2 0x16F1 JUMPI POP PUSH2 0x16F1 PUSH2 0x2CED JUMP JUMPDEST PUSH2 0x172A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x5 PUSH1 0x24 DUP3 ADD MSTORE PUSH5 0x10B9B2B633 PUSH1 0xD9 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1734 PUSH2 0x1C06 JUMP JUMPDEST EQ PUSH2 0x1770 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x7 PUSH1 0x24 DUP3 ADD MSTORE PUSH7 0x21616363727565 PUSH1 0xC8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD SWAP1 DUP5 SWAP1 SSTORE SWAP5 DUP7 AND DUP1 DUP5 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP4 SWAP3 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5D96 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 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 0x0 DUP1 PUSH2 0x17F3 DUP2 PUSH2 0x2808 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x17FD PUSH2 0x1C06 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1823 JUMPI PUSH2 0x181B DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x1814 JUMPI INVALID JUMPDEST PUSH1 0x3B PUSH2 0x3126 JUMP JUMPDEST SWAP3 POP POP PUSH2 0x142F JUMP JUMPDEST PUSH2 0x182C DUP5 PUSH2 0x318C JUMP JUMPDEST SWAP3 POP POP PUSH2 0x1438 DUP2 PUSH2 0x28D1 JUMP JUMPDEST PUSH1 0xF SLOAD DUP2 JUMP JUMPDEST PUSH7 0x6379DA05B60000 DUP2 JUMP JUMPDEST PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH1 0x15 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1885 DUP2 PUSH2 0x2808 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x188F PUSH2 0x1C06 JUMP JUMPDEST EQ PUSH2 0x18DA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x1858D8DC9D59481A5B9D195C995CDD0819985A5B1959 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0xD SLOAD SWAP2 POP PUSH2 0x18E8 DUP2 PUSH2 0x28D1 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0x18F4 PUSH2 0x2CED JUMP JUMPDEST PUSH2 0x192F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5CAD PUSH1 0x2D SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x15 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x17066A57 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x5C19A95C SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x197D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x155B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x10F2 DUP3 PUSH2 0x3258 JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xE SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x19B4 DUP2 PUSH2 0x2808 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x19BE PUSH2 0x1C06 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x19DC JUMPI PUSH2 0x181B DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x19D5 JUMPI INVALID JUMPDEST PUSH1 0x52 PUSH2 0x3126 JUMP JUMPDEST PUSH2 0x182C DUP5 PUSH2 0x26E3 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x1083 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1058 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1083 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1A4E DUP5 PUSH2 0x3298 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1A61 JUMPI INVALID JUMPDEST EQ PUSH2 0x1A9D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x37 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5CFC PUSH1 0x37 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1AB0 DUP2 PUSH2 0x2808 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1ABA PUSH2 0x1C06 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1AD8 JUMPI PUSH2 0x181B DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x1AD1 JUMPI INVALID JUMPDEST PUSH1 0x33 PUSH2 0x3126 JUMP JUMPDEST PUSH2 0x182C DUP5 PUSH2 0x334C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1104 DUP4 PUSH2 0x33CD JUMP JUMPDEST PUSH1 0x0 PUSH8 0x2C68AF0BB140000 SWAP1 POP PUSH1 0x0 DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x313CE567 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 0x1B35 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1B49 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1B5F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH2 0x1B73 DUP9 DUP9 DUP5 DUP10 DUP10 DUP7 DUP11 DUP11 PUSH2 0x110E JUMP JUMPDEST PUSH1 0x15 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP2 DUP3 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x18160DDD PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP1 SWAP2 AND SWAP2 PUSH4 0x18160DDD SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1BCF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1BE3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1BF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1C11 PUSH2 0x2320 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0xB SLOAD EQ ISZERO PUSH2 0x1C27 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x14A4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C31 PUSH2 0x2EBC JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x6 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 PUSH4 0x15F24053 DUP4 PUSH1 0xD SLOAD PUSH2 0x1C76 PUSH1 0xE SLOAD PUSH2 0x1C71 PUSH1 0xF SLOAD PUSH1 0x10 SLOAD PUSH2 0x340D JUMP JUMPDEST PUSH2 0x340D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1CB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1CCC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1CE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH6 0x48C27395000 DUP2 GT ISZERO PUSH2 0x1D41 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x626F72726F772072617465206973206162737572646C79206869676800000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1D50 DUP6 PUSH1 0xB SLOAD PUSH2 0x3443 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1D63 JUMPI INVALID JUMPDEST EQ PUSH2 0x1DB5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x636F756C64206E6F742063616C63756C61746520626C6F636B2064656C746100 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1DC1 DUP6 DUP6 DUP6 DUP5 PUSH2 0x3466 JUMP JUMPDEST SWAP6 POP POP POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1DD7 DUP2 PUSH2 0x2808 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1DE1 PUSH2 0x1C06 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1DFF JUMPI PUSH2 0x181B DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x1DF8 JUMPI INVALID JUMPDEST PUSH1 0x37 PUSH2 0x3126 JUMP JUMPDEST PUSH2 0x182C DUP5 PUSH2 0x367E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1E14 DUP2 PUSH2 0x2808 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E22 CALLER CALLER DUP8 DUP8 PUSH2 0x29FC JUMP JUMPDEST EQ SWAP2 POP PUSH2 0x1E2E DUP2 PUSH2 0x28D1 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xC SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xB8168816 PUSH2 0x1E5C PUSH2 0x2EBC JUMP JUMPDEST PUSH1 0xD SLOAD PUSH2 0x1E73 PUSH1 0xE SLOAD PUSH2 0x1C71 PUSH1 0xF SLOAD PUSH1 0x10 SLOAD PUSH2 0x340D JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x9 SLOAD PUSH1 0xA SLOAD ADD ADD PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1EC7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1EDB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1EF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH2 0x1F05 DUP2 PUSH2 0x2808 JUMP JUMPDEST PUSH2 0x1F11 CALLER DUP7 DUP7 DUP7 PUSH2 0x3766 JUMP JUMPDEST SWAP2 POP PUSH2 0x14CF DUP2 PUSH2 0x28D1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1F28 DUP2 PUSH2 0x2808 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F32 PUSH2 0x1C06 JUMP JUMPDEST EQ PUSH2 0x1F7D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x1858D8DC9D59481A5B9D195C995CDD0819985A5B1959 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1F85 PUSH2 0x1444 JUMP JUMPDEST SWAP2 POP PUSH2 0x18E8 DUP2 PUSH2 0x28D1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP2 SWAP1 DUP2 SWAP1 DUP2 SWAP1 DUP2 DUP1 DUP1 PUSH2 0x1FBB DUP10 PUSH2 0x3298 JUMP JUMPDEST SWAP4 POP SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1FCD JUMPI INVALID JUMPDEST EQ PUSH2 0x1FEB JUMPI PUSH1 0x9 JUMPDEST SWAP8 POP PUSH1 0x0 SWAP7 POP DUP7 SWAP6 POP DUP6 SWAP5 POP PUSH2 0x201E SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x1FF3 PUSH2 0x293C JUMP JUMPDEST SWAP3 POP SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2005 JUMPI INVALID JUMPDEST EQ PUSH2 0x2011 JUMPI PUSH1 0x9 PUSH2 0x1FD5 JUMP JUMPDEST POP PUSH1 0x0 SWAP7 POP SWAP2 SWAP5 POP SWAP3 POP SWAP1 POP JUMPDEST SWAP2 SWAP4 POP SWAP2 SWAP4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10F2 DUP3 PUSH2 0x3B45 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10F2 DUP3 PUSH2 0x3B83 JUMP JUMPDEST PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x10 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x207D PUSH2 0x1C06 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x20A3 JUMPI PUSH2 0x209B DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x2094 JUMPI INVALID JUMPDEST PUSH1 0x4B PUSH2 0x3126 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1109 JUMP JUMPDEST PUSH2 0x1A9D DUP4 PUSH2 0x2324 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x20C9 DUP6 DUP6 DUP6 PUSH2 0x3BBC JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x15F24053 PUSH2 0x20EF PUSH2 0x2EBC JUMP JUMPDEST PUSH1 0xD SLOAD PUSH2 0x2106 PUSH1 0xE SLOAD PUSH2 0x1C71 PUSH1 0xF SLOAD PUSH1 0x10 SLOAD PUSH2 0x340D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1EC7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2154 DUP2 PUSH2 0x2808 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x215E PUSH2 0x1C06 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x217C JUMPI PUSH2 0x181B DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x2175 JUMPI INVALID JUMPDEST PUSH1 0x59 PUSH2 0x3126 JUMP JUMPDEST PUSH2 0x182C DUP5 PUSH2 0x262A JUMP JUMPDEST PUSH1 0x1 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x2198 DUP2 PUSH2 0x2808 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x21A2 PUSH2 0x1C06 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x21CD JUMPI PUSH2 0x21C0 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x21B9 JUMPI INVALID JUMPDEST PUSH1 0x41 PUSH2 0x3126 JUMP JUMPDEST SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x21DE SWAP1 POP JUMP JUMPDEST PUSH2 0x21D8 CALLER CALLER DUP8 PUSH2 0x3CA8 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP JUMPDEST PUSH2 0x21E7 DUP2 PUSH2 0x28D1 JUMP JUMPDEST POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH3 0x7E3DD2 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 0x2240 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2254 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x226A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x22BD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6D61726B6572206D6574686F642072657475726E65642066616C736500000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP3 DUP5 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD PUSH32 0x7AC369DBD14FA5EA3F473ED67CC9D598964A77501540BA6751EB0B3DECF5870D SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x0 PUSH2 0x1A9D JUMP JUMPDEST NUMBER SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x232F PUSH2 0x2CED JUMP JUMPDEST PUSH2 0x233F JUMPI PUSH2 0x209B PUSH1 0x1 PUSH1 0x4D PUSH2 0x3126 JUMP JUMPDEST PUSH2 0x2347 PUSH2 0x2320 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x235B JUMPI PUSH2 0x209B PUSH1 0xA PUSH1 0x4C PUSH2 0x3126 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x2191F92A 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 0x23AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x23C0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x23D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x2429 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6D61726B6572206D6574686F642072657475726E65642066616C736500000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP3 DUP5 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD PUSH32 0xEDFFC32E068C7C95DFD4BDFD5C4D939A084D6B11C4199EAC8436ED234D72F926 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0x255B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x6CC1140B PUSH1 0xE1 SHL OR DUP2 MSTORE SWAP2 MLOAD DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP4 DUP3 SWAP2 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x24F0 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x24D1 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2552 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 0x2557 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP POP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x742A137B PUSH1 0xE1 SHL OR DUP2 MSTORE SWAP2 MLOAD DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP4 DUP3 SWAP2 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x25B7 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x2598 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2619 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 0x261E JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP PUSH1 0x0 SWAP2 POP PUSH2 0x1A9D SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2634 PUSH2 0x2CED JUMP JUMPDEST PUSH2 0x264B JUMPI PUSH2 0x2644 PUSH1 0x1 PUSH1 0x5A PUSH2 0x3126 JUMP JUMPDEST SWAP1 POP PUSH2 0x1109 JUMP JUMPDEST PUSH2 0x2653 PUSH2 0x2320 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x2667 JUMPI PUSH2 0x2644 PUSH1 0xA PUSH1 0x5B PUSH2 0x3126 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH2 0x2687 PUSH2 0x267F DUP5 PUSH1 0x8 SLOAD PUSH2 0x340D JUMP JUMPDEST PUSH1 0x9 SLOAD PUSH2 0x340D JUMP JUMPDEST GT ISZERO PUSH2 0x2699 JUMPI PUSH2 0x2644 PUSH1 0x2 PUSH1 0x5C PUSH2 0x3126 JUMP JUMPDEST PUSH1 0xA DUP1 SLOAD SWAP1 DUP4 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP6 SWAP1 MSTORE DUP2 MLOAD PUSH32 0xAAA68312E2EA9D50E16AF5068410AB56E1A1FD06037B1A35664812C30F821460 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x0 PUSH2 0x1A9D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x26ED PUSH2 0x2320 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x2701 JUMPI PUSH2 0x2644 PUSH1 0xA PUSH1 0x54 PUSH2 0x3126 JUMP JUMPDEST PUSH1 0x0 NOT DUP3 EQ ISZERO PUSH2 0x2711 JUMPI PUSH1 0x8 SLOAD SWAP2 POP JUMPDEST PUSH1 0x0 PUSH2 0x271B PUSH2 0x3FF8 JUMP JUMPDEST SWAP1 POP PUSH8 0xDE0B6B3A7640000 PUSH2 0x273B PUSH2 0x2735 PUSH1 0xA SLOAD DUP7 PUSH2 0x340D JUMP JUMPDEST DUP4 PUSH2 0x340D JUMP JUMPDEST GT ISZERO PUSH2 0x274D JUMPI PUSH2 0x209B PUSH1 0x2 PUSH1 0x55 PUSH2 0x3126 JUMP JUMPDEST DUP3 PUSH1 0x8 SLOAD EQ PUSH2 0x27B3 JUMPI PUSH2 0x275E PUSH2 0x2CED JUMP JUMPDEST PUSH2 0x276E JUMPI PUSH2 0x209B PUSH1 0x1 PUSH1 0x53 PUSH2 0x3126 JUMP JUMPDEST PUSH1 0x8 DUP1 SLOAD SWAP1 DUP5 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP7 SWAP1 MSTORE DUP2 MLOAD PUSH32 0xCDD0B588250E1398549F79CFDB8217C186688822905D6715B0834EA1C865594A SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMPDEST DUP1 PUSH1 0x9 SLOAD EQ PUSH2 0x2801 JUMPI PUSH1 0x9 DUP1 SLOAD SWAP1 DUP3 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP2 MLOAD PUSH32 0x92EEF861B6533B7D3417F39C2AD7B460EED4E88A32FA3604F30E718B7602E7DC SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMPDEST PUSH1 0x0 PUSH2 0x1A9D JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0xB0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2853 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xA PUSH1 0x24 DUP3 ADD MSTORE PUSH10 0x1C994B595B9D195C9959 PUSH1 0xB2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x28C1 JUMPI PUSH1 0x5 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 PUSH4 0xC90C20B1 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x28A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x28BC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF PUSH1 0xB0 SHL NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF PUSH1 0xB0 SHL NOT AND PUSH1 0x1 PUSH1 0xB0 SHL OR SWAP1 SSTORE DUP1 PUSH2 0x2939 JUMPI PUSH1 0x5 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 PUSH4 0x632E5142 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x197D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x11 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP1 PUSH2 0x2957 JUMPI POP POP PUSH1 0x7 SLOAD PUSH1 0x0 SWAP2 POP PUSH2 0x29F8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2961 PUSH2 0x2EBC JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x296D PUSH2 0x5B32 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x298F DUP5 PUSH1 0xD SLOAD PUSH2 0x298A PUSH1 0xE SLOAD PUSH2 0x1C71 PUSH1 0xF SLOAD PUSH1 0x10 SLOAD PUSH2 0x340D JUMP JUMPDEST PUSH2 0x4047 JUMP JUMPDEST SWAP4 POP SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x29A1 JUMPI INVALID JUMPDEST EQ PUSH2 0x29B6 JUMPI SWAP6 POP PUSH1 0x0 SWAP5 POP PUSH2 0x29F8 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x29C0 DUP4 DUP7 PUSH2 0x4093 JUMP JUMPDEST SWAP3 POP SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x29D2 JUMPI INVALID JUMPDEST EQ PUSH2 0x29E7 JUMPI SWAP6 POP PUSH1 0x0 SWAP5 POP PUSH2 0x29F8 SWAP4 POP POP POP POP JUMP JUMPDEST POP MLOAD PUSH1 0x0 SWAP6 POP SWAP4 POP PUSH2 0x29F8 SWAP3 POP POP POP JUMP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x17B9B84B PUSH1 0xE3 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP6 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 AND SWAP2 PUSH4 0xBDCDC258 SWAP2 PUSH1 0x84 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2A61 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2A75 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2A8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x2AAA JUMPI PUSH2 0x2AA2 PUSH1 0x3 PUSH1 0x5D DUP4 PUSH2 0x4143 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1610 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x2AD0 JUMPI PUSH2 0x2AA2 PUSH1 0x2 PUSH1 0x5E PUSH2 0x3126 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND SWAP1 DUP8 AND EQ ISZERO PUSH2 0x2AEF JUMPI POP PUSH1 0x0 NOT PUSH2 0x2B17 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP11 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x2B27 DUP6 DUP10 PUSH2 0x3443 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP PUSH1 0x0 DUP5 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2B3A JUMPI INVALID JUMPDEST EQ PUSH2 0x2B58 JUMPI PUSH2 0x2B4B PUSH1 0x9 PUSH1 0x5E PUSH2 0x3126 JUMP JUMPDEST SWAP7 POP POP POP POP POP POP POP PUSH2 0x1610 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2B7B SWAP1 DUP10 PUSH2 0x3443 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP2 POP PUSH1 0x0 DUP5 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2B8E JUMPI INVALID JUMPDEST EQ PUSH2 0x2B9F JUMPI PUSH2 0x2B4B PUSH1 0x9 PUSH1 0x5F PUSH2 0x3126 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2BC2 SWAP1 DUP10 PUSH2 0x41CC JUMP JUMPDEST SWAP1 SWAP5 POP SWAP1 POP PUSH1 0x0 DUP5 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2BD5 JUMPI INVALID JUMPDEST EQ PUSH2 0x2BE6 JUMPI PUSH2 0x2B4B PUSH1 0x9 PUSH1 0x60 PUSH2 0x3126 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP6 SWAP1 SSTORE SWAP2 DUP12 AND DUP2 MSTORE KECCAK256 DUP2 SWAP1 SSTORE PUSH1 0x0 NOT DUP6 EQ PUSH2 0x2C3E JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP16 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP4 SWAP1 SSTORE JUMPDEST DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5D96 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP11 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x0 SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x2C96 DUP2 PUSH2 0x2808 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2CA0 PUSH2 0x1C06 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x2CCB JUMPI PUSH2 0x2CBE DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x2CB7 JUMPI INVALID JUMPDEST PUSH1 0x40 PUSH2 0x3126 JUMP JUMPDEST SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x2CDC SWAP1 POP JUMP JUMPDEST PUSH2 0x2CD6 CALLER DUP8 DUP8 PUSH2 0x3CA8 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP JUMPDEST PUSH2 0x2CE5 DUP2 PUSH2 0x28D1 JUMP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x3E14691 PUSH1 0xE6 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 DUP3 SWAP2 PUSH4 0xF851A440 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2D35 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2D49 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2D5F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ DUP1 ISZERO PUSH2 0x2DD9 JUMPI POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA755EC2 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 0x2DAC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2DC0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2DD6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST DUP1 PUSH2 0x14A0 JUMPI POP CALLER PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 EQ DUP1 ISZERO PUSH2 0x14A0 JUMPI POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x2F1069BA 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 0x2E36 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2E4A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2E60 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x2E75 PUSH2 0x5B32 JUMP JUMPDEST PUSH2 0x2E7F DUP7 DUP7 PUSH2 0x41F2 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2E92 JUMPI INVALID JUMPDEST EQ PUSH2 0x2EA3 JUMPI POP SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH2 0x2EB5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2EAE DUP3 PUSH2 0x425A JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x15 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 DUP3 SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2E36 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x38E6A073 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP2 DUP6 AND PUSH1 0x24 DUP4 ADD MSTORE DUP4 ISZERO ISZERO PUSH1 0x44 DUP4 ADD MSTORE MLOAD PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 SWAP2 PUSH4 0x71CD40E6 SWAP2 PUSH1 0x64 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2F77 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2F8B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2FA1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x2FDC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x5 PUSH1 0x24 DUP3 ADD MSTORE PUSH5 0x85A5B5C1B PUSH1 0xDA SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 ISZERO PUSH2 0x2FEA JUMPI PUSH2 0x2FEA PUSH2 0x4269 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND OR DUP4 SSTORE PUSH1 0x40 MLOAD PUSH1 0x20 PUSH1 0x24 DUP3 ADD DUP2 DUP2 MSTORE DUP7 MLOAD PUSH1 0x44 DUP5 ADD MSTORE DUP7 MLOAD SWAP4 SWAP1 SWAP5 AND SWAP5 PUSH2 0x30D7 SWAP5 ADDRESS SWAP5 DUP9 SWAP5 SWAP2 SWAP4 DUP5 SWAP4 PUSH1 0x64 SWAP1 SWAP4 ADD SWAP3 SWAP1 DUP7 ADD SWAP2 SWAP1 DUP2 SWAP1 DUP5 SWAP1 DUP5 SWAP1 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3057 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x303F JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x3084 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xADCCEE5 PUSH1 0xE3 SHL OR SWAP1 MSTORE DUP2 MLOAD DUP1 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x7 DUP3 MSTORE PUSH7 0x216265636F6D65 PUSH1 0xC8 SHL SWAP1 DUP3 ADD MSTORE SWAP1 SWAP4 POP SWAP2 POP PUSH2 0x426E SWAP1 POP JUMP JUMPDEST POP PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND DUP3 MSTORE SWAP1 SWAP3 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD PUSH32 0xD604DE94D45953F9138079EC1B82D533CB2160C906D1076D1F7ED54BEFBCA97A SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x45B96FE442630264581B197E84BBADA861235052C5A1AADFFF9EA4E40A969AA0 DUP4 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x3155 JUMPI INVALID JUMPDEST DUP4 PUSH1 0x63 DUP2 GT ISZERO PUSH2 0x3161 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 DUP3 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x1A9D JUMPI INVALID JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3197 PUSH2 0x2CED JUMP JUMPDEST PUSH2 0x31A7 JUMPI PUSH2 0x209B PUSH1 0x1 PUSH1 0x3C PUSH2 0x3126 JUMP JUMPDEST PUSH2 0x31AF PUSH2 0x2320 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x31C3 JUMPI PUSH2 0x209B PUSH1 0xA PUSH1 0x3E PUSH2 0x3126 JUMP JUMPDEST DUP3 PUSH2 0x31CC PUSH2 0x2EBC JUMP JUMPDEST LT ISZERO PUSH2 0x31DE JUMPI PUSH2 0x209B PUSH1 0xE PUSH1 0x3D PUSH2 0x3126 JUMP JUMPDEST PUSH1 0xE SLOAD DUP4 GT ISZERO PUSH2 0x31F4 JUMPI PUSH2 0x209B PUSH1 0x2 PUSH1 0x3F PUSH2 0x3126 JUMP JUMPDEST PUSH2 0x3200 PUSH1 0xE SLOAD DUP5 PUSH2 0x43BD JUMP JUMPDEST PUSH1 0xE DUP2 SWAP1 SSTORE SWAP1 POP PUSH2 0x3211 CALLER DUP5 PUSH2 0x43F7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP6 SWAP1 MSTORE DUP1 DUP3 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD PUSH32 0x3BAD0C59CF2F06E7314077049F48A93578CD16F5EF92329F1DAB1420A99C177E SWAP2 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 PUSH1 0x0 PUSH2 0x1A9D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3264 DUP2 PUSH2 0x2808 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x326E PUSH2 0x1C06 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x328C JUMPI PUSH2 0x181B DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x3285 JUMPI INVALID JUMPDEST PUSH1 0x2A PUSH2 0x3126 JUMP JUMPDEST PUSH2 0x182C CALLER PUSH1 0x0 DUP7 PUSH2 0x447C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 PUSH2 0x32CF JUMPI POP PUSH1 0x0 SWAP5 POP DUP5 SWAP4 POP PUSH2 0x3347 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x32DF DUP2 PUSH1 0x0 ADD SLOAD PUSH1 0xC SLOAD PUSH2 0x494C JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP PUSH1 0x0 DUP5 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x32F2 JUMPI INVALID JUMPDEST EQ PUSH2 0x3307 JUMPI POP SWAP2 SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x3347 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x3315 DUP4 DUP3 PUSH1 0x1 ADD SLOAD PUSH2 0x498B JUMP JUMPDEST SWAP1 SWAP5 POP SWAP2 POP PUSH1 0x0 DUP5 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3328 JUMPI INVALID JUMPDEST EQ PUSH2 0x333D JUMPI POP SWAP2 SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x3347 SWAP2 POP POP JUMP JUMPDEST POP PUSH1 0x0 SWAP5 POP SWAP3 POP POP POP JUMPDEST SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3357 PUSH2 0x2320 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x336B JUMPI PUSH2 0x209B PUSH1 0xA PUSH1 0x35 PUSH2 0x3126 JUMP JUMPDEST DUP3 PUSH2 0x3374 PUSH2 0x2EBC JUMP JUMPDEST LT ISZERO PUSH2 0x3386 JUMPI PUSH2 0x209B PUSH1 0xE PUSH1 0x34 PUSH2 0x3126 JUMP JUMPDEST PUSH1 0x10 SLOAD DUP4 GT ISZERO PUSH2 0x339C JUMPI PUSH2 0x209B PUSH1 0x2 PUSH1 0x36 PUSH2 0x3126 JUMP JUMPDEST PUSH2 0x33A8 PUSH1 0x10 SLOAD DUP5 PUSH2 0x43BD JUMP JUMPDEST PUSH1 0x10 DUP2 SWAP1 SSTORE SWAP1 POP PUSH2 0x2801 PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 DUP5 PUSH2 0x43F7 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x33DB DUP2 PUSH2 0x2808 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x33E5 PUSH2 0x1C06 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x3403 JUMPI PUSH2 0x21C0 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x33FC JUMPI INVALID JUMPDEST PUSH1 0x20 PUSH2 0x3126 JUMP JUMPDEST PUSH2 0x21D8 CALLER DUP7 PUSH2 0x49B6 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1A9D DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x11 DUP2 MSTORE PUSH1 0x20 ADD PUSH17 0x6164646974696F6E206F766572666C6F77 PUSH1 0x78 SHL DUP2 MSTORE POP PUSH2 0x4D32 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 DUP4 GT PUSH2 0x345A JUMPI POP PUSH1 0x0 SWAP1 POP DUP2 DUP4 SUB PUSH2 0x2EB5 JUMP JUMPDEST POP PUSH1 0x3 SWAP1 POP PUSH1 0x0 PUSH2 0x2EB5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3470 PUSH2 0x5B32 JUMP JUMPDEST PUSH2 0x3488 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP7 DUP2 MSTORE POP DUP5 PUSH2 0x4D87 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3498 DUP3 PUSH1 0xD SLOAD PUSH2 0x4DB1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x34A8 DUP3 PUSH1 0xD SLOAD PUSH2 0x340D JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x34C9 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xA SLOAD DUP2 MSTORE POP DUP5 PUSH1 0xE SLOAD PUSH2 0x4DD0 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x34EA PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x9 SLOAD DUP2 MSTORE POP DUP6 PUSH1 0x10 SLOAD PUSH2 0x4DD0 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x350B PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x8 SLOAD DUP2 MSTORE POP DUP7 PUSH1 0xF SLOAD PUSH2 0x4DD0 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x351E DUP8 PUSH1 0xC SLOAD PUSH1 0xC SLOAD PUSH2 0x4DD0 JUMP JUMPDEST PUSH1 0xB DUP14 SWAP1 SSTORE PUSH1 0xC DUP2 SWAP1 SSTORE PUSH1 0xD DUP7 SWAP1 SSTORE PUSH1 0xE DUP6 SWAP1 SSTORE PUSH1 0x10 DUP5 SWAP1 SSTORE PUSH1 0xF DUP4 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP14 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP10 SWAP1 MSTORE DUP1 DUP3 ADD DUP4 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP9 SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH32 0x4DEC04E750CA11537CABCD8A9EAB06494DE08DA3735BC8871CD41250E190BC04 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG1 PUSH1 0x6 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x24 DUP1 DUP3 ADD DUP15 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x5EFD0233 PUSH1 0xE1 SHL OR DUP2 MSTORE SWAP2 MLOAD DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP5 AND SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x35FB JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x35DC JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x365D 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 0x3662 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP PUSH1 0x0 SWAP2 POP PUSH2 0x366E SWAP1 POP JUMP JUMPDEST SWAP13 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3689 PUSH2 0x2320 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x369D JUMPI PUSH2 0x209B PUSH1 0xA PUSH1 0x39 PUSH2 0x3126 JUMP JUMPDEST DUP3 PUSH2 0x36A6 PUSH2 0x2EBC JUMP JUMPDEST LT ISZERO PUSH2 0x36B8 JUMPI PUSH2 0x209B PUSH1 0xE PUSH1 0x38 PUSH2 0x3126 JUMP JUMPDEST PUSH1 0xF SLOAD DUP4 GT ISZERO PUSH2 0x36CE JUMPI PUSH2 0x209B PUSH1 0x2 PUSH1 0x3A PUSH2 0x3126 JUMP JUMPDEST PUSH2 0x36DA PUSH1 0xF SLOAD DUP5 PUSH2 0x43BD JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0xF DUP2 SWAP1 SSTORE POP PUSH2 0x2801 PUSH1 0x5 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 PUSH4 0xF851A440 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 0x3734 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3748 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x375E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP5 PUSH2 0x43F7 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xD02F7351 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP7 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE DUP6 DUP2 AND PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x84 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 AND SWAP2 PUSH4 0xD02F7351 SWAP2 PUSH1 0xA4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x37D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x37E7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x37FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x3814 JUMPI PUSH2 0x2AA2 PUSH1 0x3 PUSH1 0x1D DUP4 PUSH2 0x4143 JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x383A JUMPI PUSH2 0x2AA2 PUSH1 0x6 PUSH1 0x1E PUSH2 0x3126 JUMP JUMPDEST PUSH2 0x3842 PUSH2 0x5B45 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x3865 SWAP1 DUP6 PUSH2 0x3443 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3879 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3884 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3898 JUMPI INVALID JUMPDEST EQ PUSH2 0x38C2 JUMPI PUSH2 0x38B9 PUSH1 0x9 PUSH1 0x1C DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x38B4 JUMPI INVALID JUMPDEST PUSH2 0x4143 JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x1610 JUMP JUMPDEST PUSH2 0x38E1 DUP5 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH7 0x6379DA05B60000 DUP2 MSTORE POP PUSH2 0x4DF8 JUMP JUMPDEST PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x38F3 SWAP1 DUP6 SWAP1 PUSH2 0x43BD JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x3900 PUSH2 0x293C JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3914 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x391F JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3933 JUMPI INVALID JUMPDEST EQ PUSH2 0x3985 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x65786368616E67652072617465206D617468206572726F720000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x39A5 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP4 PUSH1 0xC0 ADD MLOAD DUP2 MSTORE POP DUP3 PUSH1 0x80 ADD MLOAD PUSH2 0x4DB1 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xE SLOAD PUSH2 0x39B8 SWAP2 PUSH2 0x340D JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD MSTORE PUSH1 0x11 SLOAD PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x39CF SWAP2 SWAP1 PUSH2 0x43BD JUMP JUMPDEST PUSH2 0x100 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x39FD SWAP2 SWAP1 PUSH2 0x41CC JUMP JUMPDEST PUSH1 0x40 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3A11 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3A1C JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3A30 JUMPI INVALID JUMPDEST EQ PUSH2 0x3A4C JUMPI PUSH2 0x38B9 PUSH1 0x9 PUSH1 0x1B DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x38B4 JUMPI INVALID JUMPDEST PUSH1 0xE0 DUP2 ADD MLOAD PUSH1 0xE SSTORE PUSH2 0x100 DUP2 ADD MLOAD PUSH1 0x11 SSTORE PUSH1 0x20 DUP1 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x12 DUP6 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 DUP7 ADD MLOAD SWAP3 DUP12 AND DUP1 DUP3 MSTORE SWAP1 DUP5 SWAP1 KECCAK256 SWAP3 SWAP1 SWAP3 SSTORE PUSH1 0x60 DUP6 ADD MLOAD DUP4 MLOAD SWAP1 DUP2 MSTORE SWAP3 MLOAD SWAP2 SWAP4 SWAP1 SWAP3 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5D96 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD ADDRESS SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5D96 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0xE0 DUP3 ADD MLOAD PUSH1 0x40 DUP1 MLOAD ADDRESS DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP3 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE MLOAD PUSH32 0xA91E67C5EA634CD43A12C5A482724B03DE01E85CA68702A53D0C2F45CB7C1DC5 SWAP2 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 PUSH1 0x0 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3B51 DUP2 PUSH2 0x2808 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3B5B PUSH2 0x1C06 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x3B79 JUMPI PUSH2 0x181B DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x3B72 JUMPI INVALID JUMPDEST PUSH1 0xA PUSH2 0x3126 JUMP JUMPDEST PUSH2 0x182C CALLER DUP6 PUSH2 0x4E20 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3B8F DUP2 PUSH2 0x2808 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3B99 PUSH2 0x1C06 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x3BB0 JUMPI PUSH2 0x181B DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x3285 JUMPI INVALID JUMPDEST PUSH2 0x182C CALLER DUP6 PUSH1 0x0 PUSH2 0x447C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x3BCA DUP2 PUSH2 0x2808 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3BD4 PUSH2 0x1C06 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x3BFF JUMPI PUSH2 0x3BF2 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x3BEB JUMPI INVALID JUMPDEST PUSH1 0x11 PUSH2 0x3126 JUMP JUMPDEST SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x3C96 SWAP1 POP JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA6AFED95 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3C3A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3C4E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3C64 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x3C84 JUMPI PUSH2 0x3BF2 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x3C7D JUMPI INVALID JUMPDEST PUSH1 0x12 PUSH2 0x3126 JUMP JUMPDEST PUSH2 0x3C90 CALLER DUP9 DUP9 DUP9 PUSH2 0x5166 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP JUMPDEST PUSH2 0x3C9F DUP2 PUSH2 0x28D1 JUMP JUMPDEST POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x12004531 PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP6 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 DUP5 SWAP4 SWAP2 AND SWAP2 PUSH4 0x24008A62 SWAP2 PUSH1 0x84 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3D11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3D25 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3D3B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x3D5F JUMPI PUSH2 0x3D52 PUSH1 0x3 PUSH1 0x43 DUP4 PUSH2 0x4143 JUMP JUMPDEST SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH2 0x3FF0 SWAP1 POP JUMP JUMPDEST PUSH2 0x3D67 PUSH2 0x2320 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x3D7B JUMPI PUSH2 0x3D52 PUSH1 0xA PUSH1 0x44 PUSH2 0x3126 JUMP JUMPDEST PUSH2 0x3D83 PUSH2 0x5B92 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x3DAD DUP7 PUSH2 0x3298 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3DC4 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3DCF JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3DE6 JUMPI INVALID JUMPDEST EQ PUSH2 0x3E10 JUMPI PUSH2 0x3E02 PUSH1 0x9 PUSH1 0x42 DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x38B4 JUMPI INVALID JUMPDEST SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x3FF0 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 NOT DUP6 EQ ISZERO PUSH2 0x3E29 JUMPI PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x3E31 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD DUP6 SWAP1 MSTORE JUMPDEST PUSH2 0x3E3F DUP8 DUP3 PUSH1 0x40 ADD MLOAD PUSH2 0x5658 JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x3E54 SWAP2 PUSH2 0x3443 JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3E6B JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3E76 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3E8D JUMPI INVALID JUMPDEST EQ PUSH2 0x3EC9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5D33 PUSH1 0x3A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x3ED9 PUSH1 0xD SLOAD DUP3 PUSH1 0xE0 ADD MLOAD PUSH2 0x3443 JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3EF0 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3EFB JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3F12 JUMPI INVALID JUMPDEST EQ PUSH2 0x3F4E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5DB6 PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xA0 DUP1 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP11 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 DUP6 SSTORE PUSH1 0xC SLOAD PUSH1 0x1 SWAP1 SWAP6 ADD SWAP5 SWAP1 SWAP5 SSTORE PUSH1 0xC0 DUP8 ADD MLOAD PUSH1 0xD DUP2 SWAP1 SSTORE PUSH1 0xE0 DUP9 ADD MLOAD SWAP6 MLOAD DUP3 MLOAD SWAP5 DUP16 AND DUP6 MSTORE SWAP5 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP2 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x60 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x80 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 MLOAD PUSH32 0x1A2A22CB034D26D1854BDC6666A5B91FE25EFBBB5DCAD3B0355478D6F5C362A1 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0xE0 ADD MLOAD PUSH1 0x0 SWAP4 POP SWAP2 POP POP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xDD86FEA1 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 0x1EC7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x4057 DUP8 DUP8 PUSH2 0x41CC JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x406A JUMPI INVALID JUMPDEST EQ PUSH2 0x407B JUMPI POP SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH2 0x3FF0 JUMP JUMPDEST PUSH2 0x4085 DUP2 DUP7 PUSH2 0x3443 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x409D PUSH2 0x5B32 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x40B2 DUP7 PUSH8 0xDE0B6B3A7640000 PUSH2 0x494C JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x40C5 JUMPI INVALID JUMPDEST EQ PUSH2 0x40E4 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x2EB5 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x40F1 DUP4 DUP9 PUSH2 0x498B JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4104 JUMPI INVALID JUMPDEST EQ PUSH2 0x4126 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 SWAP5 POP SWAP3 POP PUSH2 0x2EB5 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP9 SWAP1 SWAP8 POP SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x45B96FE442630264581B197E84BBADA861235052C5A1AADFFF9EA4E40A969AA0 DUP5 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x4172 JUMPI INVALID JUMPDEST DUP5 PUSH1 0x63 DUP2 GT ISZERO PUSH2 0x417E JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 DUP2 ADD DUP6 SWAP1 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 PUSH1 0x3 DUP5 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x41AB JUMPI INVALID JUMPDEST EQ PUSH2 0x41C1 JUMPI DUP4 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x41BC JUMPI INVALID JUMPDEST PUSH2 0x1610 JUMP JUMPDEST POP PUSH2 0x3E8 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 DUP4 ADD DUP5 DUP2 LT PUSH2 0x41E4 JUMPI PUSH1 0x0 SWAP3 POP SWAP1 POP PUSH2 0x2EB5 JUMP JUMPDEST POP PUSH1 0x2 SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH2 0x2EB5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x41FC PUSH2 0x5B32 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x420D DUP7 PUSH1 0x0 ADD MLOAD DUP7 PUSH2 0x494C JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4220 JUMPI INVALID JUMPDEST EQ PUSH2 0x423F JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x2EB5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST MLOAD PUSH8 0xDE0B6B3A7640000 SWAP1 DIV SWAP1 JUMP JUMPDEST PUSH2 0x14A7 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x60 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x42AE JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x428F JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x4310 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 0x4315 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x43B4 JUMPI DUP1 MLOAD ISZERO PUSH2 0x432F JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST DUP4 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4379 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4361 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x43A6 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1A9D DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x15 DUP2 MSTORE PUSH1 0x20 ADD PUSH21 0x7375627472616374696F6E20756E646572666C6F77 PUSH1 0x58 SHL DUP2 MSTORE POP PUSH2 0x5835 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xA9059CBB PUSH1 0xE0 SHL OR SWAP1 MSTORE DUP3 MLOAD DUP1 DUP5 ADD SWAP1 SWAP4 MSTORE PUSH1 0x19 DUP4 MSTORE PUSH32 0x544F4B454E5F5452414E534645525F4F55545F4641494C454400000000000000 SWAP1 DUP4 ADD MSTORE PUSH2 0x4478 SWAP2 PUSH2 0x588F JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x4489 JUMPI POP DUP2 ISZERO JUMPDEST PUSH2 0x44C4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5E4F PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x44CC PUSH2 0x5BD8 JUMP JUMPDEST PUSH2 0x44D4 PUSH2 0x293C JUMP JUMPDEST PUSH1 0x40 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x44EB JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x44F6 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x450D JUMPI INVALID JUMPDEST EQ PUSH2 0x4531 JUMPI PUSH2 0x4529 PUSH1 0x9 PUSH1 0x2E DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x38B4 JUMPI INVALID JUMPDEST SWAP2 POP POP PUSH2 0x1A9D JUMP JUMPDEST DUP4 ISZERO PUSH2 0x45B2 JUMPI PUSH1 0x60 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD DUP3 MSTORE SWAP1 DUP3 ADD MLOAD DUP2 MSTORE PUSH2 0x4558 SWAP1 DUP6 PUSH2 0x2E68 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x456F JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x457A JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4591 JUMPI INVALID JUMPDEST EQ PUSH2 0x45AD JUMPI PUSH2 0x4529 PUSH1 0x9 PUSH1 0x2C DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x38B4 JUMPI INVALID JUMPDEST PUSH2 0x462B JUMP JUMPDEST PUSH2 0x45CE DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH1 0x40 ADD MLOAD DUP2 MSTORE POP PUSH2 0x591C JUMP JUMPDEST PUSH1 0x60 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x45E5 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x45F0 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4607 JUMPI INVALID JUMPDEST EQ PUSH2 0x4623 JUMPI PUSH2 0x4529 PUSH1 0x9 PUSH1 0x2D DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x38B4 JUMPI INVALID JUMPDEST PUSH1 0x80 DUP2 ADD DUP4 SWAP1 MSTORE JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x60 DUP3 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xEABE7D91 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP4 SWAP3 SWAP1 SWAP3 AND SWAP2 PUSH4 0xEABE7D91 SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4690 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x46A4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x46BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x46DA JUMPI PUSH2 0x46D1 PUSH1 0x3 PUSH1 0x2B DUP4 PUSH2 0x4143 JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x1A9D JUMP JUMPDEST PUSH2 0x46E2 PUSH2 0x2320 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x46F6 JUMPI PUSH2 0x46D1 PUSH1 0xA PUSH1 0x2F PUSH2 0x3126 JUMP JUMPDEST PUSH2 0x4706 PUSH1 0x11 SLOAD DUP4 PUSH1 0x60 ADD MLOAD PUSH2 0x3443 JUMP JUMPDEST PUSH1 0xA0 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP5 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x471D JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4728 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP3 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x473F JUMPI INVALID JUMPDEST EQ PUSH2 0x475B JUMPI PUSH2 0x46D1 PUSH1 0x9 PUSH1 0x31 DUP5 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x38B4 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 DUP4 ADD MLOAD PUSH2 0x4783 SWAP2 SWAP1 PUSH2 0x3443 JUMP JUMPDEST PUSH1 0xC0 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP5 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x479A JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x47A5 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP3 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x47BC JUMPI INVALID JUMPDEST EQ PUSH2 0x47D8 JUMPI PUSH2 0x46D1 PUSH1 0x9 PUSH1 0x30 DUP5 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x38B4 JUMPI INVALID JUMPDEST DUP2 PUSH1 0x80 ADD MLOAD PUSH2 0x47E5 PUSH2 0x2EBC JUMP JUMPDEST LT ISZERO PUSH2 0x47F7 JUMPI PUSH2 0x46D1 PUSH1 0xE PUSH1 0x32 PUSH2 0x3126 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MLOAD PUSH1 0x11 SSTORE PUSH1 0xC0 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x482D SWAP1 DUP8 SWAP1 PUSH2 0x43F7 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MLOAD PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD ADDRESS SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5D96 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 PUSH1 0x80 DUP3 ADD MLOAD PUSH1 0x60 DUP1 DUP5 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP4 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE MLOAD PUSH32 0xE5B754FB1ABB7F01B499791D0B820AE3B6AF3424AC1C59768EDB53F4EC31A929 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x5 SLOAD PUSH1 0x80 DUP4 ADD MLOAD PUSH1 0x60 DUP5 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x51DFF989 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x64 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x51DFF989 SWAP2 PUSH1 0x84 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4921 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4935 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x0 SWAP3 POP PUSH2 0x4942 SWAP2 POP POP JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH2 0x495F JUMPI POP PUSH1 0x0 SWAP1 POP DUP1 PUSH2 0x2EB5 JUMP JUMPDEST DUP4 DUP4 MUL DUP4 DUP6 DUP3 DUP2 PUSH2 0x496C JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x4980 JUMPI POP PUSH1 0x2 SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH2 0x2EB5 JUMP JUMPDEST PUSH1 0x0 SWAP3 POP SWAP1 POP PUSH2 0x2EB5 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH2 0x499F JUMPI POP PUSH1 0x1 SWAP1 POP PUSH1 0x0 PUSH2 0x2EB5 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x49AA JUMPI INVALID JUMPDEST DIV SWAP2 POP SWAP2 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x4EF4C3E1 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 DUP5 SWAP4 SWAP2 AND SWAP2 PUSH4 0x4EF4C3E1 SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4A17 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4A2B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4A41 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x4A65 JUMPI PUSH2 0x4A58 PUSH1 0x3 PUSH1 0x21 DUP4 PUSH2 0x4143 JUMP JUMPDEST SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH2 0x2EB5 SWAP1 POP JUMP JUMPDEST PUSH2 0x4A6D PUSH2 0x2320 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x4A81 JUMPI PUSH2 0x4A58 PUSH1 0xA PUSH1 0x24 PUSH2 0x3126 JUMP JUMPDEST PUSH2 0x4A89 PUSH2 0x5BD8 JUMP JUMPDEST PUSH2 0x4A91 PUSH2 0x293C JUMP JUMPDEST PUSH1 0x40 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4AA8 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4AB3 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4ACA JUMPI INVALID JUMPDEST EQ PUSH2 0x4AF4 JUMPI PUSH2 0x4AE6 PUSH1 0x9 PUSH1 0x23 DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x38B4 JUMPI INVALID JUMPDEST SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x2EB5 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x4AFE DUP7 DUP7 PUSH2 0x5658 JUMP JUMPDEST PUSH1 0xC0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD DUP3 MSTORE SWAP1 DUP4 ADD MLOAD DUP2 MSTORE PUSH2 0x4B1F SWAP2 SWAP1 PUSH2 0x591C JUMP JUMPDEST PUSH1 0x60 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4B36 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4B41 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4B58 JUMPI INVALID JUMPDEST EQ PUSH2 0x4BAA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D494E545F45584348414E47455F43414C43554C4154494F4E5F4641494C4544 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x4BBA PUSH1 0x11 SLOAD DUP3 PUSH1 0x60 ADD MLOAD PUSH2 0x340D JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x4BE7 SWAP2 SWAP1 PUSH2 0x340D JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MLOAD PUSH1 0x11 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0xC0 DUP5 ADD MLOAD PUSH1 0x60 DUP1 DUP7 ADD MLOAD DUP4 MLOAD SWAP5 DUP6 MSTORE SWAP5 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE MLOAD PUSH32 0x4C209B5FC8AD50758F13E2E1088BA56A560DFF690A1C6FEF26394F4C03821C4F SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 ADDRESS SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5D96 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 PUSH1 0x5 SLOAD PUSH1 0xC0 DUP3 ADD MLOAD PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x41C728B9 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x64 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x41C728B9 SWAP2 PUSH1 0x84 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4CFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4D13 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x0 SWAP3 POP PUSH2 0x4D20 SWAP2 POP POP JUMP JUMPDEST DUP2 PUSH1 0xC0 ADD MLOAD SWAP4 POP SWAP4 POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 ADD DUP3 DUP6 DUP3 LT ISZERO PUSH2 0x14E4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x4379 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4361 JUMP JUMPDEST PUSH2 0x4D8F PUSH2 0x5B32 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x4DA8 DUP6 PUSH1 0x0 ADD MLOAD DUP6 PUSH2 0x5933 JUMP JUMPDEST SWAP1 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4DBB PUSH2 0x5B32 JUMP JUMPDEST PUSH2 0x4DC5 DUP5 DUP5 PUSH2 0x4D87 JUMP JUMPDEST SWAP1 POP PUSH2 0x1610 DUP2 PUSH2 0x425A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4DDA PUSH2 0x5B32 JUMP JUMPDEST PUSH2 0x4DE4 DUP6 DUP6 PUSH2 0x4D87 JUMP JUMPDEST SWAP1 POP PUSH2 0x43B4 PUSH2 0x4DF2 DUP3 PUSH2 0x425A JUMP JUMPDEST DUP5 PUSH2 0x340D JUMP JUMPDEST PUSH1 0x0 PUSH8 0xDE0B6B3A7640000 PUSH2 0x4E11 DUP5 DUP5 PUSH1 0x0 ADD MLOAD PUSH2 0x5933 JUMP JUMPDEST DUP2 PUSH2 0x4E18 JUMPI INVALID JUMPDEST DIV SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x368F5153 PUSH1 0xE2 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 AND SWAP2 PUSH4 0xDA3D454C SWAP2 PUSH1 0x64 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4E7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4E91 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4EA7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x4EC6 JUMPI PUSH2 0x4EBE PUSH1 0x3 PUSH1 0x10 DUP4 PUSH2 0x4143 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x10F2 JUMP JUMPDEST PUSH2 0x4ECE PUSH2 0x2320 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x4EE2 JUMPI PUSH2 0x4EBE PUSH1 0xA PUSH1 0xC PUSH2 0x3126 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4EEC PUSH2 0x2EBC JUMP JUMPDEST SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x4F0B JUMPI PUSH2 0x4F02 PUSH1 0xE PUSH1 0xB PUSH2 0x3126 JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x10F2 JUMP JUMPDEST PUSH2 0x4F13 PUSH2 0x5C16 JUMP JUMPDEST PUSH2 0x4F1C DUP7 PUSH2 0x3298 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4F30 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4F3B JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4F4F JUMPI INVALID JUMPDEST EQ PUSH2 0x4F74 JUMPI PUSH2 0x4F6A PUSH1 0x9 DUP1 DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x38B4 JUMPI INVALID JUMPDEST SWAP4 POP POP POP POP PUSH2 0x10F2 JUMP JUMPDEST PUSH2 0x4F82 DUP2 PUSH1 0x20 ADD MLOAD DUP7 PUSH2 0x41CC JUMP JUMPDEST PUSH1 0x40 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4F96 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4FA1 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4FB5 JUMPI INVALID JUMPDEST EQ PUSH2 0x4FD1 JUMPI PUSH2 0x4F6A PUSH1 0x9 PUSH1 0xE DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x38B4 JUMPI INVALID JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 DUP4 ADD MLOAD DUP2 MLOAD PUSH4 0x1DE6C8A5 PUSH1 0xE2 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x779B2294 SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x502A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x503E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5054 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 POP DUP3 ISZERO PUSH2 0x506B JUMPI PUSH2 0x4F6A PUSH1 0x3 PUSH1 0x10 DUP6 PUSH2 0x4143 JUMP JUMPDEST PUSH2 0x5077 PUSH1 0xD SLOAD DUP7 PUSH2 0x41CC JUMP JUMPDEST PUSH1 0x60 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x508B JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x5096 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x50AA JUMPI INVALID JUMPDEST EQ PUSH2 0x50C6 JUMPI PUSH2 0x4F6A PUSH1 0x9 PUSH1 0xD DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x38B4 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 MSTORE SWAP2 SWAP1 SWAP2 KECCAK256 SWAP1 DUP2 SSTORE PUSH1 0xC SLOAD PUSH1 0x1 SWAP1 SWAP2 ADD SSTORE PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0xD SSTORE PUSH2 0x5102 DUP7 DUP7 PUSH2 0x43F7 JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 ADD MLOAD PUSH1 0x60 DUP1 DUP5 ADD MLOAD DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP11 SWAP1 MSTORE DUP1 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP1 DUP3 ADD MSTORE SWAP1 MLOAD PUSH32 0x13ED6866D4E1EE6DA46F845C46D7E54120883D75C5EA9A2DACC1C4CA8984AB80 SWAP2 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG1 PUSH1 0x0 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x2FE3F38F PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP8 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE DUP7 DUP2 AND PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x84 DUP3 ADD DUP7 SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 DUP5 SWAP4 SWAP2 AND SWAP2 PUSH4 0x5FC7E71E SWAP2 PUSH1 0xA4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x51D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x51EB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5201 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x5225 JUMPI PUSH2 0x5218 PUSH1 0x3 PUSH1 0x14 DUP4 PUSH2 0x4143 JUMP JUMPDEST SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH2 0x564F SWAP1 POP JUMP JUMPDEST PUSH2 0x522D PUSH2 0x2320 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x5241 JUMPI PUSH2 0x5218 PUSH1 0xA PUSH1 0x18 PUSH2 0x3126 JUMP JUMPDEST PUSH2 0x5249 PUSH2 0x2320 JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6C540BAF 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 0x5282 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5296 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x52AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD EQ PUSH2 0x52BF JUMPI PUSH2 0x5218 PUSH1 0xA PUSH1 0x13 PUSH2 0x3126 JUMP JUMPDEST DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x52E5 JUMPI PUSH2 0x5218 PUSH1 0x6 PUSH1 0x19 PUSH2 0x3126 JUMP JUMPDEST DUP5 PUSH2 0x52F6 JUMPI PUSH2 0x5218 PUSH1 0x7 PUSH1 0x17 PUSH2 0x3126 JUMP JUMPDEST PUSH1 0x0 NOT DUP6 EQ ISZERO PUSH2 0x530C JUMPI PUSH2 0x5218 PUSH1 0x7 PUSH1 0x16 PUSH2 0x3126 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x531A DUP10 DUP10 DUP10 PUSH2 0x3CA8 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP DUP2 ISZERO PUSH2 0x534A JUMPI PUSH2 0x533B DUP3 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x5334 JUMPI INVALID JUMPDEST PUSH1 0x1A PUSH2 0x3126 JUMP JUMPDEST SWAP5 POP PUSH1 0x0 SWAP4 POP PUSH2 0x564F SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xC488847B PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP6 SWAP1 MSTORE DUP3 MLOAD PUSH1 0x0 SWAP5 DUP6 SWAP5 SWAP3 AND SWAP3 PUSH4 0xC488847B SWAP3 PUSH1 0x64 DUP1 DUP4 ADD SWAP4 SWAP2 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x53A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x53B8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x53CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 POP SWAP1 POP DUP2 ISZERO PUSH2 0x5419 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x33 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5DE7 PUSH1 0x33 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 DUP9 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 DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5470 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5484 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x549A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT ISZERO PUSH2 0x54EF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C49515549444154455F5345495A455F544F4F5F4D5543480000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND ADDRESS EQ ISZERO PUSH2 0x5515 JUMPI PUSH2 0x550E ADDRESS DUP14 DUP14 DUP6 PUSH2 0x3766 JUMP JUMPDEST SWAP1 POP PUSH2 0x559F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xB2A02FF1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP15 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP14 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD SWAP2 DUP12 AND SWAP2 PUSH4 0xB2A02FF1 SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5570 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5584 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x559A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP JUMPDEST DUP1 ISZERO PUSH2 0x55E9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x1D1BDAD95B881CD95A5E9D5C994819985A5B1959 PUSH1 0x62 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP16 AND DUP3 MSTORE DUP1 DUP15 AND PUSH1 0x20 DUP4 ADD MSTORE DUP2 DUP4 ADD DUP8 SWAP1 MSTORE DUP12 AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP2 ADD DUP5 SWAP1 MSTORE SWAP1 MLOAD PUSH32 0x298637F684DA70674F26509B10F07EC2FBC77A335AB1E7D6215A4B2484D8BB52 SWAP2 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 LOG1 PUSH1 0x0 SWAP8 POP SWAP3 SWAP6 POP POP POP POP POP POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x15 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 DUP4 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x56A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x56BC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x56D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x24 DUP3 ADD MSTORE ADDRESS PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP1 DUP3 ADD DUP8 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x23B872DD PUSH1 0xE0 SHL OR SWAP1 MSTORE DUP3 MLOAD DUP1 DUP5 ADD SWAP1 SWAP4 MSTORE PUSH1 0x18 DUP4 MSTORE PUSH32 0x544F4B454E5F5452414E534645525F494E5F4641494C45440000000000000000 SWAP1 DUP4 ADD MSTORE SWAP2 SWAP3 POP PUSH2 0x575F SWAP2 SWAP1 PUSH2 0x588F JUMP JUMPDEST PUSH1 0x15 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x57AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x57BE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x57D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP2 DUP2 LT ISZERO PUSH2 0x582D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x544F4B454E5F5452414E534645525F494E5F4F564552464C4F57000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SUB SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x5887 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x4379 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4361 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x15 SLOAD PUSH1 0x60 SWAP1 PUSH2 0x58A9 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 DUP5 PUSH2 0x426E JUMP JUMPDEST DUP1 MLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0x5917 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x58C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP3 SWAP1 PUSH2 0x16B0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x4379 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4361 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x5929 PUSH2 0x5B32 JUMP JUMPDEST PUSH2 0x2E7F DUP7 DUP7 PUSH2 0x5975 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1A9D DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x17 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x6D756C7469706C69636174696F6E206F766572666C6F77000000000000000000 DUP2 MSTORE POP PUSH2 0x59D4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x597F PUSH2 0x5B32 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x5994 PUSH8 0xDE0B6B3A7640000 DUP8 PUSH2 0x494C JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x59A7 JUMPI INVALID JUMPDEST EQ PUSH2 0x59C6 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x2EB5 JUMP JUMPDEST PUSH2 0x2EAE DUP2 DUP7 PUSH1 0x0 ADD MLOAD PUSH2 0x4093 JUMP JUMPDEST PUSH1 0x0 DUP4 ISZERO DUP1 PUSH2 0x59E1 JUMPI POP DUP3 ISZERO JUMPDEST ISZERO PUSH2 0x59EE JUMPI POP PUSH1 0x0 PUSH2 0x1A9D JUMP JUMPDEST DUP4 DUP4 MUL DUP4 DUP6 DUP3 DUP2 PUSH2 0x59FB JUMPI INVALID JUMPDEST DIV EQ DUP4 SWAP1 PUSH2 0x14E4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x4379 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4361 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x5A8B JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x5AB8 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x5AB8 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x5AB8 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x5A9D JUMP JUMPDEST POP PUSH2 0x18E8 SWAP3 SWAP2 POP PUSH2 0x5C3F JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x5B05 JUMPI DUP3 DUP1 ADD PUSH1 0xFF NOT DUP3 CALLDATALOAD AND OR DUP6 SSTORE PUSH2 0x5AB8 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x5AB8 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x5AB8 JUMPI DUP3 CALLDATALOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x5B17 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x120 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x100 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xE0 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH2 0x14A4 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x18E8 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x5C45 JUMP INVALID PUSH14 0x61726B6574206D6179206F6E6C79 KECCAK256 PUSH3 0x652069 PUSH15 0x697469616C697A6564206F6E636569 PUSH15 0x697469616C2065786368616E676520 PUSH19 0x617465206D7573742062652067726561746572 KECCAK256 PUSH21 0x68616E207A65726F2E6F6E6C79207468652061646D PUSH10 0x6E206D61792073657420 PUSH21 0x686520636F6D702D6C696B652064656C6567617465 PUSH20 0x657474696E6720696E7465726573742072617465 KECCAK256 PUSH14 0x6F64656C206661696C6564626F72 PUSH19 0x6F7742616C616E636553746F7265643A20626F PUSH19 0x726F7742616C616E636553746F726564496E74 PUSH6 0x726E616C2066 PUSH2 0x696C PUSH6 0x645245504159 0x5F TIMESTAMP 0x4F MSTORE MSTORE 0x4F JUMPI 0x5F 0x4E GASLIMIT JUMPI 0x5F COINBASE NUMBER NUMBER 0x4F SSTORE 0x4E SLOAD 0x5F TIMESTAMP 0x4F MSTORE MSTORE 0x4F JUMPI 0x5F TIMESTAMP COINBASE 0x4C COINBASE 0x4E NUMBER GASLIMIT 0x5F NUMBER COINBASE 0x4C NUMBER SSTORE 0x4C COINBASE SLOAD 0x49 0x4F 0x4E 0x5F CHAINID COINBASE 0x49 0x4C GASLIMIT DIFFICULTY PUSH16 0x6E6C7920467573652061646D696E206D PUSH2 0x7920 PUSH10 0x6E697469616C697A6520 PUSH21 0x6865206D61726B6574DDF252AD1BE2C89B69C2B068 0xFC CALLDATACOPY DUP14 0xAA SWAP6 0x2B 0xA7 CALL PUSH4 0xC4A11628 CREATE2 GAS 0x4D CREATE2 0x23 0xB3 0xEF MSTORE GASLIMIT POP COINBASE MSIZE 0x5F TIMESTAMP 0x4F MSTORE MSTORE 0x4F JUMPI 0x5F 0x4E GASLIMIT JUMPI 0x5F SLOAD 0x4F SLOAD COINBASE 0x4C 0x5F TIMESTAMP COINBASE 0x4C COINBASE 0x4E NUMBER GASLIMIT 0x5F NUMBER COINBASE 0x4C NUMBER SSTORE 0x4C COINBASE SLOAD 0x49 0x4F 0x4E 0x5F CHAINID COINBASE 0x49 0x4C GASLIMIT DIFFICULTY 0x4C 0x49 MLOAD SSTORE 0x49 DIFFICULTY COINBASE SLOAD GASLIMIT 0x5F NUMBER 0x4F 0x4D POP SLOAD MSTORE 0x4F 0x4C 0x4C GASLIMIT MSTORE 0x5F NUMBER COINBASE 0x4C NUMBER SSTORE 0x4C COINBASE SLOAD GASLIMIT 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD 0x5F MSTORE8 GASLIMIT 0x49 GAS GASLIMIT 0x5F CHAINID COINBASE 0x49 0x4C GASLIMIT DIFFICULTY PUSH6 0x786368616E67 PUSH6 0x526174655374 PUSH16 0x7265643A2065786368616E6765526174 PUSH6 0x53746F726564 0x49 PUSH15 0x7465726E616C206661696C65646F6E PUSH6 0x206F66207265 PUSH5 0x65656D546F PUSH12 0x656E73496E206F7220726564 PUSH6 0x656D416D6F75 PUSH15 0x74496E206D757374206265207A6572 PUSH16 0xA265627A7A72315820345834EA73EEA5 DUP12 0xE7 0xBA PUSH9 0x700DA98535B7A57F02 0xE7 0xC6 0xC5 DUP6 SWAP5 DUP4 0xE4 0xDC PUSH24 0xF12C4364736F6C6343000511003200000000000000000000 ","sourceMap":"187:1059:4:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;960:18:11;;8:9:-1;5:2;;;30:1;27;20:12;5:2;960:18:11;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;960:18:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7552:232:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7552:232:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7552:232:10;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3661:146:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3661:146:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3661:146:2;;:::i;:::-;;;;;;;;;;;;;;;;1302:1947:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1302:1947:10;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;1302:1947:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;1302:1947:10;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1302:1947:10;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1302:1947:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1302:1947:10;;;;;;;;-1:-1:-1;1302:1947:10;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;1302:1947:10;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1302:1947:10;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1302:1947:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1302:1947:10;;-1:-1:-1;;1302:1947:10;;;;;-1:-1:-1;;;1302:1947:10;;;;;;;;;:::i;:::-;;2390:33:11;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2390:33:11;;;:::i;11828:228:10:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11828:228:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11828:228:10;-1:-1:-1;;;;;11828:228:10;;:::i;3266:23:11:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3266:23:11;;;:::i;14620:257:10:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14620:257:10;;;:::i;1205:39:4:-;;;:::i;6892:200:10:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6892:200:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6892:200:10;;;;;;;;;;;;;;;;;:::i;4087:186:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4087:186:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4087:186:2;;;;;;;;:::i;1146:21:11:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1146:21:11;;;:::i;:::-;;;;;;;;;;;;;;;;;;;70024:265:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;70024:265:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;70024:265:10;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;70024:265:10;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;70024:265:10;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;70024:265:10;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;70024:265:10;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;70024:265:10;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;70024:265:10;;-1:-1:-1;70024:265:10;-1:-1:-1;70024:265:10;:::i;8788:349::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8788:349:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8788:349:10;-1:-1:-1;;;;;8788:349:10;;:::i;16532:86::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16532:86:10;;;:::i;2784:24:11:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2784:24:11;;;:::i;2928:330:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2928:330:3;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;2928:330:3;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;2928:330:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2928:330:3;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;2928:330:3;;-1:-1:-1;2928:330:3;-1:-1:-1;2928:330:3;:::i;412:709:4:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;412:709:4;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;412:709:4;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;412:709:4;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;412:709:4;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;412:709:4;;-1:-1:-1;412:709:4;-1:-1:-1;412:709:4;:::i;9773:29:11:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9773:29:11;;;:::i;:::-;;;;-1:-1:-1;;;;;9773:29:11;;;;;;;;;;;;;;1713:39;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1713:39:11;;;:::i;59156:570:10:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;59156:570:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;59156:570:10;;:::i;3037:26:11:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3037:26:11;;;:::i;4209:56::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4209:56:11;;;:::i;2508:30::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2508:30:11;;;:::i;8834:25::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8834:25:11;;;:::i;8430:110:10:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8430:110:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8430:110:10;-1:-1:-1;;;;;8430:110:10;;:::i;11348:196::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11348:196:10;;;:::i;8473:214:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8473:214:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8473:214:2;-1:-1:-1;;;;;8473:214:2;;:::i;2957:131::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2957:131:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2957:131:2;;:::i;2150:28:11:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2150:28:11;;;:::i;2909:25::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2909:25:11;;;:::i;54184:571:10:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;54184:571:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;54184:571:10;;:::i;1051:20:11:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1051:20:11;;;:::i;12258:283:10:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12258:283:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12258:283:10;-1:-1:-1;;;;;12258:283:10;;:::i;61865:587::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;61865:587:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;61865:587:10;;:::i;2025:130:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2025:130:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2025:130:2;;:::i;803:842::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;803:842:2;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;803:842:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;803:842:2;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;803:842:2;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;803:842:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;803:842:2;;;;;;;;-1:-1:-1;803:842:2;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;803:842:2;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;803:842:2;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;803:842:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;803:842:2;;-1:-1:-1;;803:842:2;;;-1:-1:-1;;;803:842:2;;;;:::i;16859:1071:10:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16859:1071:10;;;:::i;64387:592::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;64387:592:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;64387:592:10;;:::i;6404:190::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6404:190:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6404:190:10;;;;;;;;:::i;2654:23:11:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2654:23:11;;;:::i;4556:37::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4556:37:11;;;:::i;10946:262:10:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10946:262:10;;;:::i;48862:198::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;48862:198:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;48862:198:10;;;;;;;;;;;;;;;;;:::i;14175:202::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14175:202:10;;;:::i;9475:685::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9475:685:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9475:685:10;-1:-1:-1;;;;;9475:685:10;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3349:111:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3349:111:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3349:111:2;;:::i;2498:::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2498:111:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2498:111:2;;:::i;2271:27:11:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2271:27:11;;;:::i;3165:25::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3165:25:11;;;:::i;8106:141:10:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8106:141:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;8106:141:10;;;;;;;;;;:::i;67100:625::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;67100:625:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;67100:625:10;-1:-1:-1;;;;;67100:625:10;;:::i;1849:42:11:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1849:42:11;;;:::i;4745:234:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4745:234:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4745:234:2;;;;;;;;;;;;;;;;;:::i;10574:202:10:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10574:202:10;;;:::i;57039:606::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;57039:606:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;57039:606:10;;:::i;4414:36:11:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4414:36:11;;;:::i;960:18::-;;;;;;;;;;;;;;-1:-1:-1;;960:18:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7552:232:10:-;7650:10;7620:4;7670:23;;;:18;:23;;;;;;;;-1:-1:-1;;;;;7670:32:10;;;;;;;;;;;:41;;;7726:30;;;;;;;7620:4;;7650:10;7670:32;;7650:10;;7726:30;;;;;;;;;;;7773:4;7766:11;;;7552:232;;;;;:::o;3661:146:2:-;3718:4;3735:8;3748:32;3768:11;3748:19;:32::i;:::-;-1:-1:-1;3734:46:2;-1:-1:-1;;3661:146:2;;;;:::o;1302:1947:10:-;1743:10;326:42:11;1743:32:10;1735:86;;;;-1:-1:-1;;;1735:86:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1839:18;;:23;:43;;;;-1:-1:-1;1866:11:10;;:16;1839:43;1831:91;;;;-1:-1:-1;;;1831:91:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1970:27;:58;;;2046:31;2038:92;;;;-1:-1:-1;;;2038:92:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2172:8;2183:29;2199:12;2183:15;:29::i;:::-;2172:40;-1:-1:-1;2230:27:10;;2222:66;;;;;-1:-1:-1;;;2222:66:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;2425:16;:14;:16::i;:::-;2404:18;:37;409:4:22;2451:11:10;:25;2573:46;2600:18;2573:26;:46::i;:::-;2567:52;-1:-1:-1;2637:27:10;;2629:74;;;;-1:-1:-1;;;2629:74:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2714:12;;;;:4;;:12;;;;;:::i;:::-;-1:-1:-1;2736:16:10;;;;:6;;:16;;;;;:::i;:::-;-1:-1:-1;2762:8:10;:20;;-1:-1:-1;;2762:20:10;;;;;;;2829:46;2852:22;2829;:46::i;:::-;2823:52;-1:-1:-1;2893:27:10;;2885:69;;;;;-1:-1:-1;;;2885:69:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;2996:36;3014:17;2996;:36::i;:::-;2990:42;-1:-1:-1;3050:27:10;;3042:64;;;;;-1:-1:-1;;;3042:64:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3238:4:10;3224:18;;-1:-1:-1;;;;3224:18:10;-1:-1:-1;;;3224:18:10;;;-1:-1:-1;;;;;;;1302:1947:10:o;2390:33:11:-;;;;:::o;11828:228:10:-;11913:4;11897:5;71531:30;71551:9;71531:19;:30::i;:::-;11962:14;11937:16;:14;:16::i;:::-;:40;11929:75;;;;;-1:-1:-1;;;11929:75:10;;;;;;;;;;;;-1:-1:-1;;;11929:75:10;;;;;;;;;;;;;;;12021:28;12041:7;12021:19;:28::i;:::-;12014:35;;71571:1;71582:29;71601:9;71582:18;:29::i;:::-;11828:228;;;;:::o;3266:23:11:-;;;;:::o;14620:257:10:-;14671:4;14688:13;14703:11;14718:28;:26;:28::i;:::-;14687:59;;-1:-1:-1;14687:59:10;-1:-1:-1;14771:18:10;14764:3;:25;;;;;;;;;14756:91;;;;-1:-1:-1;;;14756:91:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14864:6;-1:-1:-1;;14620:257:10;;:::o;1205:39:4:-;:::o;6892:200:10:-;6994:4;6978:5;71531:30;71551:9;71531:19;:30::i;:::-;7070:14;7017:44;7032:10;7044:3;7049;7054:6;7017:14;:44::i;:::-;:68;7010:75;;71582:29;71601:9;71582:18;:29::i;:::-;6892:200;;;;;;:::o;4087:186:2:-;4168:4;4185:8;4198:48;4224:8;4234:11;4198:25;:48::i;:::-;-1:-1:-1;4184:62:2;4087:186;-1:-1:-1;;;;4087:186:2:o;1146:21:11:-;;;;;;:::o;70024:265:10:-;70159:16;:14;:16::i;:::-;70151:45;;;;;-1:-1:-1;;;70151:45:10;;;;;;;;;;;;-1:-1:-1;;;70151:45:10;;;;;;;;;;;;;;;70244:12;:4;70251:5;;70244:12;:::i;:::-;-1:-1:-1;70266:16:10;:6;70275:7;;70266:16;:::i;:::-;;70024:265;;;;:::o;8788:349::-;8850:4;8866:23;;:::i;:::-;8892:38;;;;;;;;8907:21;:19;:21::i;:::-;8892:38;;-1:-1:-1;;;;;9005:20:10;;8941:14;9005:20;;;:13;:20;;;;;;8866:64;;-1:-1:-1;8941:14:10;;;8973:53;;8866:64;;8973:17;:53::i;:::-;8940:86;;-1:-1:-1;8940:86:10;-1:-1:-1;9052:18:10;9044:4;:26;;;;;;;;;9036:70;;;;;-1:-1:-1;;;9036:70:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;9123:7;8788:349;-1:-1:-1;;;;8788:349:10:o;16532:86::-;16574:4;16597:14;:12;:14::i;:::-;16590:21;;16532:86;:::o;2784:24:11:-;;;;:::o;2928:330:3:-;3101:16;:14;:16::i;:::-;3093:35;;;;;-1:-1:-1;;;3093:35:3;;;;;;;;;;;;-1:-1:-1;;;3093:35:3;;;;;;;;;;;;;;;3169:82;3196:15;3213:11;3226:24;;3169:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;3169:26:3;;-1:-1:-1;;;3169:82:3:i;:::-;2928:330;;;;:::o;412:709:4:-;508:42;586;647:10;669:4;647:27;;:47;;;678:16;:14;:16::i;:::-;639:65;;;;;-1:-1:-1;;;639:65:4;;;;;;;;;;;;-1:-1:-1;;;639:65:4;;;;;;;;;;;;;;;747:14;722:16;:14;:16::i;:::-;:40;714:60;;;;;-1:-1:-1;;;714:60:4;;;;;;;;;;;;-1:-1:-1;;;714:60:4;;;;;;;;;;;;;;;-1:-1:-1;;;;;857:29:4;;;826:28;857:29;;;:13;:29;;;;;;;;;;939:33;;;;982:30;;;;;;;;;;:53;;;1051:63;;;;;;;982:30;;857:29;-1:-1:-1;;;;;;;;;;;1051:63:4;;;;;;;;;;412:709;;;;;:::o;9773:29:11:-;;;-1:-1:-1;;;;;9773:29:11;;:::o;1713:39::-;;;-1:-1:-1;;;;;1713:39:11;;:::o;59156:570:10:-;59238:4;59222:5;71531:30;71551:9;71531:19;:30::i;:::-;59254:10;59267:16;:14;:16::i;:::-;59254:29;-1:-1:-1;59297:29:10;;59293:274;;59486:70;59497:5;59491:12;;;;;;;;59505:50;59486:4;:70::i;:::-;59479:77;;;;;59293:274;59685:34;59706:12;59685:20;:34::i;:::-;59678:41;;;71582:29;71601:9;71582:18;:29::i;3037:26:11:-;;;;:::o;4209:56::-;4259:6;4209:56;:::o;2508:30::-;;;;:::o;8834:25::-;;;-1:-1:-1;;;;;8834:25:11;;:::o;8430:110:10:-;-1:-1:-1;;;;;8513:20:10;8487:7;8513:20;;;:13;:20;;;;;;;8430:110::o;11348:196::-;11417:4;11401:5;71531:30;71551:9;71531:19;:30::i;:::-;11466:14;11441:16;:14;:16::i;:::-;:40;11433:75;;;;;-1:-1:-1;;;11433:75:10;;;;;;;;;;;;-1:-1:-1;;;11433:75:10;;;;;;;;;;;;;;;11525:12;;11518:19;;71582:29;71601:9;71582:18;:29::i;:::-;11348:196;;:::o;8473:214:2:-;8556:16;:14;:16::i;:::-;8548:74;;;;-1:-1:-1;;;8548:74:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8641:10;;8632:48;;;-1:-1:-1;;;8632:48:2;;-1:-1:-1;;;;;8632:48:2;;;;;;;;;8641:10;;;;;8632:29;;:48;;;;;8641:10;;8632:48;;;;;;;8641:10;;8632:48;;;5:2:-1;;;;30:1;27;20:12;5:2;8632:48:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;2957:131:2;3020:4;3043:38;3068:12;3043:24;:38::i;2150:28:11:-;;;;:::o;2909:25::-;;;;:::o;54184:571:10:-;54270:4;54254:5;71531:30;71551:9;71531:19;:30::i;:::-;54286:10;54299:16;:14;:16::i;:::-;54286:29;-1:-1:-1;54329:29:10;;54325:273;;54519:68;54530:5;54524:12;;;;;;;;54538:48;54519:4;:68::i;54325:273::-;54710:38;54728:19;54710:17;:38::i;1051:20:11:-;;;;;;;;;;;;;;;-1:-1:-1;;1051:20:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12258:283:10;12325:4;12342:13;12357:11;12372:36;12400:7;12372:27;:36::i;:::-;12341:67;;-1:-1:-1;12341:67:10;-1:-1:-1;12433:18:10;12426:3;:25;;;;;;;;;12418:93;;;;-1:-1:-1;;;12418:93:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12528:6;12258:283;-1:-1:-1;;;12258:283:10:o;61865:587::-;61951:4;61935:5;71531:30;71551:9;71531:19;:30::i;:::-;61967:10;61980:16;:14;:16::i;:::-;61967:29;-1:-1:-1;62010:29:10;;62006:281;;62203:73;62214:5;62208:12;;;;;;;;62222:53;62203:4;:73::i;62006:281::-;62407:38;62430:14;62407:22;:38::i;2025:130:2:-;2074:4;2091:8;2104:24;2117:10;2104:12;:24::i;803:842::-;1236:36;1275:6;1236:45;;1291:15;1324:11;-1:-1:-1;;;;;1309:36:2;;:38;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1309:38:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1309:38:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1309:38:2;;-1:-1:-1;1357:150:2;1374:12;1388:18;1408:28;1438:5;1445:7;1309:38;1465:22;1489:17;1357:16;:150::i;:::-;1564:10;:24;;-1:-1:-1;;;;;;1564:24:2;-1:-1:-1;;;;;1564:24:2;;;;;;;;;;;1598:40;;;-1:-1:-1;;;1598:40:2;;;;1613:10;;;;;1598:38;;:40;;;;;;;;;;;;;;;1613:10;1598:40;;;5:2:-1;;;;30:1;27;20:12;5:2;1598:40:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1598:40:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;;;;;;803:842:2:o;16859:1071:10:-;16901:4;16965:23;16991:16;:14;:16::i;:::-;16965:42;;17096:18;17074;;:40;17070:98;;;17142:14;17130:27;;;;;17070:98;17232:14;17249;:12;:14::i;:::-;17232:31;;17331:23;17357:17;;;;;;;;;-1:-1:-1;;;;;17357:17:10;-1:-1:-1;;;;;17357:31:10;;17389:9;17400:12;;17414:56;17419:13;;17434:35;17439:14;;17455:13;;17434:4;:35::i;:::-;17414:4;:56::i;:::-;17357:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17357:114:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17357:114:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17357:114:10;;-1:-1:-1;1314:9:11;17489:43:10;;;17481:84;;;;;-1:-1:-1;;;17481:84:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;17653:17;17672:15;17691:47;17699:18;17719;;17691:7;:47::i;:::-;17652:86;;-1:-1:-1;17652:86:10;-1:-1:-1;17767:18:10;17756:7;:29;;;;;;;;;17748:73;;;;;-1:-1:-1;;;17748:73:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;17839:84;17861:18;17881:9;17892:18;17912:10;17839:21;:84::i;:::-;17832:91;;;;;;;16859:1071;:::o;64387:592::-;64474:4;64458:5;71531:30;71551:9;71531:19;:30::i;:::-;64490:10;64503:16;:14;:16::i;:::-;64490:29;-1:-1:-1;64533:29:10;;64529:283;;64727:74;64738:5;64732:12;;;;;;;;64746:54;64727:4;:74::i;64529:283::-;64933:39;64957:14;64933:23;:39::i;6404:190::-;6489:4;6473:5;71531:30;71551:9;71531:19;:30::i;:::-;6572:14;6512:51;6527:10;6539;6551:3;6556:6;6512:14;:51::i;:::-;:75;6505:82;;71582:29;71601:9;71582:18;:29::i;:::-;6404:190;;;;;:::o;2654:23:11:-;;;;:::o;4556:37::-;4588:5;4556:37;:::o;10946:262:10:-;11022:17;;10999:4;;-1:-1:-1;;;;;11022:17:10;:31;11054:14;:12;:14::i;:::-;11070:12;;11084:56;11089:13;;11104:35;11109:14;;11125:13;;11104:4;:35::i;11084:56::-;11184:16;;11166:15;;11142:21;;:39;:58;11022:179;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11022:179:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11022:179:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11022:179:10;;-1:-1:-1;10946:262:10;:::o;48862:198::-;48970:4;48955;71531:30;71551:9;71531:19;:30::i;:::-;48993:60;49007:10;49019;49031:8;49041:11;48993:13;:60::i;:::-;48986:67;;71582:29;71601:9;71582:18;:29::i;14175:202::-;14242:4;14226:5;71531:30;71551:9;71531:19;:30::i;:::-;14291:14;14266:16;:14;:16::i;:::-;:40;14258:75;;;;;-1:-1:-1;;;14258:75:10;;;;;;;;;;;;-1:-1:-1;;;14258:75:10;;;;;;;;;;;;;;;14350:20;:18;:20::i;:::-;14343:27;;71582:29;71601:9;71582:18;:29::i;9475:685::-;-1:-1:-1;;;;;9598:22:10;;9543:4;9598:22;;;:13;:22;;;;;;9543:4;;;;;;;;;9743:36;9612:7;9743:27;:36::i;:::-;9719:60;-1:-1:-1;9719:60:10;-1:-1:-1;9801:18:10;9793:4;:26;;;;;;;;;9789:97;;9848:16;9843:22;9835:40;-1:-1:-1;9867:1:10;;-1:-1:-1;9867:1:10;;-1:-1:-1;9867:1:10;;-1:-1:-1;9835:40:10;;-1:-1:-1;;;;9835:40:10;9789:97;9927:28;:26;:28::i;:::-;9896:59;-1:-1:-1;9896:59:10;-1:-1:-1;9977:18:10;9969:4;:26;;;;;;;;;9965:97;;10024:16;10019:22;;9965:97;-1:-1:-1;10085:14:10;;-1:-1:-1;10102:13:10;;-1:-1:-1;10117:13:10;-1:-1:-1;10117:13:10;-1:-1:-1;9475:685:10;;;;;;:::o;3349:111:2:-;3402:4;3425:28;3440:12;3425:14;:28::i;2498:111::-;2551:4;2574:28;2589:12;2574:14;:28::i;2271:27:11:-;;;;:::o;3165:25::-;;;;:::o;8106:141:10:-;-1:-1:-1;;;;;8206:25:10;;;8180:7;8206:25;;;:18;:25;;;;;;;;:34;;;;;;;;;;;;;8106:141::o;67100:625::-;67187:4;67203:10;67216:16;:14;:16::i;:::-;67203:29;-1:-1:-1;67246:29:10;;67242:295;;67448:78;67459:5;67453:12;;;;;;;;67467:58;67448:4;:78::i;:::-;67441:85;;;;;67242:295;67670:48;67697:20;67670:26;:48::i;1849:42:11:-;;;-1:-1:-1;;;;;1849:42:11;;:::o;4745:234:2:-;4858:4;4875:8;4888:64;4912:8;4922:11;4935:16;4888:23;:64::i;:::-;-1:-1:-1;4874:78:2;4745:234;-1:-1:-1;;;;;4745:234:2:o;10574:202:10:-;10650:17;;10627:4;;-1:-1:-1;;;;;10650:17:10;:31;10682:14;:12;:14::i;:::-;10698:12;;10712:56;10717:13;;10732:35;10737:14;;10753:13;;10732:4;:35::i;10712:56::-;10650:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;57039:606:10;57135:4;57119:5;71531:30;71551:9;71531:19;:30::i;:::-;57151:10;57164:16;:14;:16::i;:::-;57151:29;-1:-1:-1;57194:29:10;;57190:283;;57389:73;57400:5;57394:12;;;;;;;;57408:53;57389:4;:73::i;57190:283::-;57590:48;57613:24;57590:22;:48::i;4414:36:11:-;4446:4;4414:36;:::o;37117:571:10:-;37202:4;37208;37186:5;71531:30;71551:9;71531:19;:30::i;:::-;37224:10;37237:16;:14;:16::i;:::-;37224:29;-1:-1:-1;37267:29:10;;37263:257;;37438:67;37449:5;37443:12;;;;;;;;37457:47;37438:4;:67::i;:::-;37430:79;-1:-1:-1;37507:1:10;;-1:-1:-1;37430:79:10;;-1:-1:-1;37430:79:10;37263:257;37628:53;37645:10;37657;37669:11;37628:16;:53::i;:::-;37621:60;;;;;71571:1;71582:29;71601:9;71582:18;:29::i;:::-;37117:571;;;;:::o;53348:555::-;53428:4;53444:35;53482:11;;;;;;;;;-1:-1:-1;;;;;53482:11:10;53444:49;;53577:14;-1:-1:-1;;;;;53577:28:10;;:30;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;53577:30:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;53577:30:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;53577:30:10;53569:71;;;;;-1:-1:-1;;;53569:71:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;53705:11;:28;;-1:-1:-1;;;;;;53705:28:10;-1:-1:-1;;;;;53705:28:10;;;;;;;;;53812:46;;;;;;;;;;;;;;;;;;;;;;;;;;;53881:14;53876:20;;10313:91;10385:12;10313:91;:::o;68047:1634::-;68141:4;68240:38;68327:16;:14;:16::i;:::-;68322:128;;68366:73;68371:18;68391:47;68366:4;:73::i;68322:128::-;68573:16;:14;:16::i;:::-;68551:18;;:38;68547:153;;68612:77;68617:22;68641:47;68612:4;:77::i;68547:153::-;68791:17;;;;;;;;;-1:-1:-1;;;;;68791:17:10;68768:40;;68908:20;-1:-1:-1;;;;;68908:40:10;;:42;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;68908:42:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;68908:42:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;68908:42:10;68900:83;;;;;-1:-1:-1;;;68900:83:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;69057:17;:40;;-1:-1:-1;;;;;;69057:40:10;-1:-1:-1;;;;;69057:40:10;;;;;;;;;69200:70;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;69345:43:10;;;69341:138;;69425:53;;;22:32:-1;6:49;;69425:53:10;;;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;69390:89:10;;;;-1:-1:-1;;;;;69390:34:10;;;:89;;;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;69390:89:10;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;69390:89:10;;69341:138;69588:47;;;22:32:-1;6:49;;69588:47:10;;;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;69553:83:10;;;;-1:-1:-1;;;;;69553:34:10;;;:83;;;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;69553:83:10;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;-1:-1;69659:14:10;;-1:-1:-1;69654:20:10;;-1:-1:-1;69654:20:10;57906:1004;57987:4;58041:16;:14;:16::i;:::-;58036:123;;58080:68;58085:18;58105:42;58080:4;:68::i;:::-;58073:75;;;;58036:123;58263:16;:14;:16::i;:::-;58241:18;;:38;58237:148;;58302:72;58307:22;58331:42;58302:4;:72::i;58237:148::-;1490:4:11;58454:71:10;58459:48;58464:24;58490:16;;58459:4;:48::i;:::-;58509:15;;58454:4;:71::i;:::-;:106;58450:210;;;58583:66;58588:15;58605:43;58583:4;:66::i;58450:210::-;58702:21;;;58733:48;;;;58797:68;;;;;;;;;;;;;;;;;;;;;;;;;58888:14;58883:20;;55006:1737;55077:4;55187:16;:14;:16::i;:::-;55165:18;;:38;55161:143;;55226:67;55231:22;55255:37;55226:4;:67::i;55161:143::-;-1:-1:-1;;55358:19:10;:31;55354:75;;;55413:16;;55391:38;;55354:75;55471:23;55497:28;:26;:28::i;:::-;55471:54;;1490:4:11;55659:74:10;55664:48;55669:21;;55692:19;55664:4;:48::i;:::-;55714:18;55659:4;:74::i;:::-;:109;55655:208;;;55791:61;55796:15;55813:38;55791:4;:61::i;55655:208::-;55929:19;55909:16;;:39;55905:470;;56006:16;:14;:16::i;:::-;56001:126;;56049:63;56054:18;56074:37;56049:4;:63::i;56001:126::-;56197:16;;;56227:38;;;;56311:53;;;;;;;;;;;;;;;;;;;;;;;;;55905:470;;56439:18;56420:15;;:37;56416:283;;56527:15;;;56556:36;;;;56638:50;;;;;;;;;;;;;;;;;;;;;;;;;56416:283;;56721:14;56716:20;;71931:192;72002:11;;-1:-1:-1;;;72002:11:10;;;;71994:34;;;;;-1:-1:-1;;;71994:34:10;;;;;;;;;;;;-1:-1:-1;;;71994:34:10;;;;;;;;;;;;;;;72043:9;72038:49;;72054:11;;;;;;;;;-1:-1:-1;;;;;72054:11:10;-1:-1:-1;;;;;72054:31:10;;:33;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;72054:33:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;72054:33:10;;;;72038:49;-1:-1:-1;72097:11:10;:19;;-1:-1:-1;;;;72097:19:10;;;71931:192::o;72435:179::-;72511:4;72497:18;;-1:-1:-1;;;;72497:18:10;-1:-1:-1;;;72497:18:10;;;72564:9;72559:48;;72575:11;;;;;;;;;-1:-1:-1;;;;;72575:11:10;-1:-1:-1;;;;;72575:30:10;;:32;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;72559:48:10;72435:179;:::o;15134:1234::-;15242:11;;15195:9;;;;15267:17;15263:1099;;-1:-1:-1;;15456:27:10;;15436:18;;-1:-1:-1;15428:56:10;;15263:1099;15695:14;15712;:12;:14::i;:::-;15695:31;;15740:33;15787:23;;:::i;:::-;15824:17;15898:97;15913:9;15924:12;;15938:56;15943:13;;15958:35;15963:14;;15979:13;;15958:4;:35::i;15938:56::-;15898:14;:97::i;:::-;15856:139;-1:-1:-1;15856:139:10;-1:-1:-1;16024:18:10;16013:7;:29;;;;;;;;;16009:87;;16070:7;-1:-1:-1;16079:1:10;;-1:-1:-1;16062:19:10;;-1:-1:-1;;;;16062:19:10;16009:87;16136:50;16143:28;16173:12;16136:6;:50::i;:::-;16110:76;-1:-1:-1;16110:76:10;-1:-1:-1;16215:18:10;16204:7;:29;;;;;;;;;16200:87;;16261:7;-1:-1:-1;16270:1:10;;-1:-1:-1;16253:19:10;;-1:-1:-1;;;;16253:19:10;16200:87;-1:-1:-1;16329:21:10;16309:18;;-1:-1:-1;16329:21:10;-1:-1:-1;16301:50:10;;-1:-1:-1;;;16301:50:10;15134:1234;;;:::o;3925:2226::-;4097:11;;:60;;;-1:-1:-1;;;4097:60:10;;4133:4;4097:60;;;;-1:-1:-1;;;;;4097:60:10;;;;;;;;;;;;;;;;;;;;;;4023:4;;;;4097:11;;:27;;:60;;;;;;;;;;;;;;4023:4;4097:11;:60;;;5:2:-1;;;;30:1;27;20:12;5:2;4097:60:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4097:60:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4097:60:10;;-1:-1:-1;4171:12:10;;4167:142;;4206:92;4217:27;4246:42;4290:7;4206:10;:92::i;:::-;4199:99;;;;;4167:142;4372:3;-1:-1:-1;;;;;4365:10:10;:3;-1:-1:-1;;;;;4365:10:10;;4361:103;;;4398:55;4403:15;4420:32;4398:4;:55::i;4361:103::-;4538:22;-1:-1:-1;;;;;4578:14:10;;;;;;;4574:156;;;-1:-1:-1;;;4574:156:10;;;-1:-1:-1;;;;;;4687:23:10;;;;;;;:18;:23;;;;;;;;:32;;;;;;;;;;4574:156;4805:17;4832;4859;4886;4940:34;4948:17;4967:6;4940:7;:34::i;:::-;4914:60;;-1:-1:-1;4914:60:10;-1:-1:-1;4999:18:10;4988:7;:29;;;;;;;;;4984:123;;5040:56;5045:16;5063:32;5040:4;:56::i;:::-;5033:63;;;;;;;;;;4984:123;-1:-1:-1;;;;;5151:18:10;;;;;;:13;:18;;;;;;5143:35;;5171:6;5143:7;:35::i;:::-;5117:61;;-1:-1:-1;5117:61:10;-1:-1:-1;5203:18:10;5192:7;:29;;;;;;;;;5188:122;;5244:55;5249:16;5267:31;5244:4;:55::i;5188:122::-;-1:-1:-1;;;;;5354:18:10;;;;;;:13;:18;;;;;;5346:35;;5374:6;5346:7;:35::i;:::-;5320:61;;-1:-1:-1;5320:61:10;-1:-1:-1;5406:18:10;5395:7;:29;;;;;;;;;5391:120;;5447:53;5452:16;5470:29;5447:4;:53::i;5391:120::-;-1:-1:-1;;;;;5638:18:10;;;;;;;:13;:18;;;;;;:33;;;5681:18;;;;;;:33;;;-1:-1:-1;;5784:29:10;;5780:107;;-1:-1:-1;;;;;5829:23:10;;;;;;;:18;:23;;;;;;;;:32;;;;;;;;;:47;;;5780:107;5955:3;-1:-1:-1;;;;;5941:26:10;5950:3;-1:-1:-1;;;;;5941:26:10;-1:-1:-1;;;;;;;;;;;5960:6:10;5941:26;;;;;;;;;;;;;;;;;;-1:-1:-1;6129:14:10;;3925:2226;-1:-1:-1;;;;;;;;;;3925:2226:10:o;38013:593::-;38122:4;38128;38106:5;71531:30;71551:9;71531:19;:30::i;:::-;38144:10;38157:16;:14;:16::i;:::-;38144:29;-1:-1:-1;38187:29:10;;38183:257;;38358:67;38369:5;38363:12;;;;;;;;38377:47;38358:4;:67::i;:::-;38350:79;-1:-1:-1;38427:1:10;;-1:-1:-1;38350:79:10;;-1:-1:-1;38350:79:10;38183:257;38548:51;38565:10;38577:8;38587:11;38548:16;:51::i;:::-;38541:58;;;;;71571:1;71582:29;71601:9;71582:18;:29::i;:::-;38013:593;;;;;;:::o;528:335::-;664:11;;709:26;;;-1:-1:-1;;;709:26:10;;;;577:4;;-1:-1:-1;;;;;664:11:10;;;;709:24;;:26;;;;;;;;;;;;;;;664:11;709:26;;;5:2:-1;;;;30:1;27;20:12;5:2;709:26:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;709:26:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;709:26:10;-1:-1:-1;;;;;695:40:10;:10;:40;:79;;;;;739:18;-1:-1:-1;;;;;739:33:10;;:35;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;739:35:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;739:35:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;739:35:10;695:79;694:162;;;-1:-1:-1;780:10:10;326:42:11;780:32:10;:75;;;;;816:18;-1:-1:-1;;;;;816:37:10;;:39;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;816:39:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;816:39:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;816:39:10;687:169;;;528:335;:::o;2431:306:21:-;2508:9;2519:4;2536:13;2551:18;;:::i;:::-;2573:20;2583:1;2586:6;2573:9;:20::i;:::-;2535:58;;-1:-1:-1;2535:58:21;-1:-1:-1;2614:18:21;2607:3;:25;;;;;;;;;2603:71;;-1:-1:-1;2656:3:21;-1:-1:-1;2661:1:21;;-1:-1:-1;2648:15:21;;2603:71;2692:18;2712:17;2721:7;2712:8;:17::i;:::-;2684:46;;;;;;2431:306;;;;;;:::o;5238:166:2:-;5339:10;;5367:30;;;-1:-1:-1;;;5367:30:2;;5391:4;5367:30;;;;;;5285:4;;-1:-1:-1;;;;;5339:10:2;;;;5367:15;;:30;;;;;;;;;;;;;;;5339:10;5367:30;;;5:2:-1;;;;30:1;27;20:12;1670:865:3;1876:14;;1842:79;;;-1:-1:-1;;;1842:79:3;;-1:-1:-1;;;;;1876:14:3;;;1842:79;;;;;;;;;;;;;;;;;;;326:42:11;;1842:33:3;;:79;;;;;;;;;;;;;;326:42:11;1842:79:3;;;5:2:-1;;;;30:1;27;20:12;5:2;1842:79:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1842:79:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1842:79:3;1834:97;;;;;-1:-1:-1;;;1834:97:3;;;;;;;;;;;;-1:-1:-1;;;1834:97:3;;;;;;;;;;;;;;;2018:11;2014:40;;;2031:23;:21;:23::i;:::-;2099:25;2127:14;;-1:-1:-1;;;;;2188:32:3;;;-1:-1:-1;;;;;;2188:32:3;;;;;2345:81;;;;;;;;;;;;;;;;;2127:14;;;;;2316:122;;2338:4;;2401:24;;2345:81;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2345:81:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2345:81:3;;;-1:-1:-1;;26:21;;;22:32;6:49;;2345:81:3;;;49:4:-1;25:18;;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2316:122:3;;;;;;;;;;;-1:-1:-1;;;2316:122:3;;;;2345:81;;-1:-1:-1;2316:122:3;-1:-1:-1;2316:13:3;;-1:-1:-1;2316:122:3:i;:::-;-1:-1:-1;2513:14:3;;2476:52;;;-1:-1:-1;;;;;2476:52:3;;;;;2513:14;;;2476:52;;;;;;;;;;;;;;;;1670:865;;;;:::o;8568:149:20:-;8629:4;8650:33;8663:3;8658:9;;;;;;;;8674:4;8669:10;;;;;;;;8650:33;;;;;;;;;;;;;8681:1;8650:33;;;;;;;;;;;;;8706:3;8701:9;;;;;;;59995:1627:10;60062:4;60118:21;60188:16;:14;:16::i;:::-;60183:120;;60227:65;60232:18;60252:39;60227:4;:65::i;60183:120::-;60426:16;:14;:16::i;:::-;60404:18;;:38;60400:145;;60465:69;60470:22;60494:39;60465:4;:69::i;60400:145::-;60648:12;60631:14;:12;:14::i;:::-;:29;60627:150;;;60683:83;60688:29;60719:46;60683:4;:83::i;60627:150::-;60868:13;;60853:12;:28;60849:127;;;60904:61;60909:15;60926:38;60904:4;:61::i;60849:127::-;61210:33;61215:13;;61230:12;61210:4;:33::i;:::-;61314:13;:32;;;61191:52;-1:-1:-1;61463:39:10;61477:10;61489:12;61463:13;:39::i;:::-;61518:59;;;61534:10;61518:59;;;;;;;;;;;;;;;;;;;;;;;;;61600:14;61595:20;;26431:536;26522:4;26506:5;71531:30;71551:9;71531:19;:30::i;:::-;26538:10;26551:16;:14;:16::i;:::-;26538:29;-1:-1:-1;26581:29:10;;26577:246;;26751:61;26762:5;26756:12;;;;;;;;26770:41;26751:4;:61::i;26577:246::-;26920:40;26932:10;26944:1;26947:12;26920:11;:40::i;12788:1238::-;-1:-1:-1;;;;;13130:23:10;;12865:9;13130:23;;;:14;:23;;;;;13354:24;;12865:9;;;;;;;;13350:90;;-1:-1:-1;13407:18:10;;-1:-1:-1;13407:18:10;;-1:-1:-1;13399:30:10;;-1:-1:-1;;;13399:30:10;13350:90;13662:46;13670:14;:24;;;13696:11;;13662:7;:46::i;:::-;13629:79;;-1:-1:-1;13629:79:10;-1:-1:-1;13733:18:10;13722:7;:29;;;;;;;;;13718:79;;-1:-1:-1;13775:7:10;;-1:-1:-1;13784:1:10;;-1:-1:-1;13767:19:10;;-1:-1:-1;;13767:19:10;13718:79;13827:58;13835:19;13856:14;:28;;;13827:7;:58::i;:::-;13807:78;;-1:-1:-1;13807:78:10;-1:-1:-1;13910:18:10;13899:7;:29;;;;;;;;;13895:79;;-1:-1:-1;13952:7:10;;-1:-1:-1;13961:1:10;;-1:-1:-1;13944:19:10;;-1:-1:-1;;13944:19:10;13895:79;-1:-1:-1;13992:18:10;;-1:-1:-1;14012:6:10;-1:-1:-1;;;12788:1238:10;;;;:::o;62718:1424::-;62789:4;62845:21;62990:16;:14;:16::i;:::-;62968:18;;:38;62964:148;;63029:72;63034:22;63058:42;63029:4;:72::i;62964:148::-;63215:14;63198;:12;:14::i;:::-;:31;63194:155;;;63252:86;63257:29;63288:49;63252:4;:86::i;63194:155::-;63444:13;;63427:14;:30;63423:132;;;63480:64;63485:15;63502:41;63480:4;:64::i;63423:132::-;63791:35;63796:13;;63811:14;63791:4;:35::i;:::-;63899:13;:32;;;63772:54;-1:-1:-1;64048:49:10;326:42:11;64082:14:10;64048:13;:49::i;20737:546::-;20814:4;20820;20798:5;71531:30;71551:9;71531:19;:30::i;:::-;20836:10;20849:16;:14;:16::i;:::-;20836:29;-1:-1:-1;20879:29:10;;20875:249;;21050:59;21061:5;21055:12;;;;;;;;21069:39;21050:4;:59::i;20875:249::-;21243:33;21253:10;21265;21243:9;:33::i;3095:114:22:-;3148:4;3171:31;3176:1;3179;3171:31;;;;;;;;;;;;;-1:-1:-1;;;3171:31:22;;;:4;:31::i;1302:230:12:-;1358:9;1369:4;1394:1;1389;:6;1385:141;;-1:-1:-1;1419:18:12;;-1:-1:-1;1439:5:12;;;1411:34;;1385:141;-1:-1:-1;1484:27:12;;-1:-1:-1;1513:1:12;1476:39;;18030:2317:10;18161:4;18804:31;;:::i;:::-;18838:53;18843:35;;;;;;;;18858:18;18843:35;;;18880:10;18838:4;:53::i;:::-;18804:87;;18901:24;18928:54;18947:20;18969:12;;18928:18;:54::i;:::-;18901:81;;18992:20;19015:39;19020:19;19041:12;;19015:4;:39::i;:::-;18992:62;;19064:21;19088:101;19114:38;;;;;;;;19129:21;;19114:38;;;19154:19;19175:13;;19088:25;:101::i;:::-;19064:125;;19199:21;19223:95;19249:32;;;;;;;;19264:15;;19249:32;;;19283:19;19304:13;;19223:25;:95::i;:::-;19199:119;;19328:22;19353:97;19379:33;;;;;;;;19394:16;;19379:33;;;19414:19;19435:14;;19353:25;:97::i;:::-;19328:122;;19460:19;19482:73;19508:20;19530:11;;19543;;19482:25;:73::i;:::-;19752:18;:39;;;19801:11;:28;;;19839:12;:30;;;19879:13;:32;;;19921:13;:32;;;19963:14;:34;;;20059:79;;;;;;;;;;;;;;;;;;;;;;;;;;19460:95;;-1:-1:-1;20059:79:10;;;;;;;;;;20203:17;;20227:74;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;20227:74:10;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;20195:107:10;;;;-1:-1:-1;;;;;20203:17:10;;;;20227:74;;20195:107;;;;25:18:-1;20195:107:10;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;20195:107:10;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;-1:-1;20325:14:10;;-1:-1:-1;20320:20:10;;-1:-1:-1;20320:20:10;;20313:27;18030:2317;-1:-1:-1;;;;;;;;;;;;18030:2317:10:o;65247:1492::-;65319:4;65376:22;65522:16;:14;:16::i;:::-;65500:18;;:38;65496:149;;65561:73;65566:22;65590:43;65561:4;:73::i;65496:149::-;65748:14;65731;:12;:14::i;:::-;:31;65727:156;;;65785:87;65790:29;65821:50;65785:4;:87::i;65727:156::-;65980:14;;65963;:31;65959:134;;;66017:65;66022:15;66039:42;66017:4;:65::i;65959:134::-;66331:36;66336:14;;66352;66331:4;:36::i;:::-;66311:56;;66459:17;66442:14;:34;;;;66593:101;66654:11;;;;;;;;;-1:-1:-1;;;;;66654:11:10;-1:-1:-1;;;;;66623:50:10;;:52;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;66623:52:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;66623:52:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;66623:52:10;66679:14;66593:13;:101::i;50058:3037::-;50247:11;;:87;;;-1:-1:-1;;;50247:87:10;;50280:4;50247:87;;;;-1:-1:-1;;;;;50247:87:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;50176:4;;;;50247:11;;:24;;:87;;;;;;;;;;;;;;50176:4;50247:11;:87;;;5:2:-1;;;;30:1;27;20:12;5:2;50247:87:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;50247:87:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;50247:87:10;;-1:-1:-1;50348:12:10;;50344:149;;50383:99;50394:27;50423:49;50474:7;50383:10;:99::i;50344:149::-;50563:10;-1:-1:-1;;;;;50551:22:10;:8;-1:-1:-1;;;;;50551:22:10;;50547:144;;;50596:84;50601:26;50629:50;50596:4;:84::i;50547:144::-;50701:34;;:::i;:::-;-1:-1:-1;;;;;51065:23:10;;;;;;:13;:23;;;;;;51057:45;;51090:11;51057:7;:45::i;:::-;51031:22;;;51016:86;;;51017:4;51016:86;;;;;;;;;;;;;;;;;;;-1:-1:-1;51132:18:10;;-1:-1:-1;51116:12:10;;:34;;;;;;;;;51112:174;;51173:102;51184:16;51202:52;51261:4;:12;;;51256:18;;;;;;;;51173:10;:102::i;:::-;51166:109;;;;;;51112:174;51323:62;51328:11;51341:43;;;;;;;;4259:6:11;51341:43:10;;;51323:4;:62::i;:::-;51296:24;;;:89;;;51424:43;;51429:11;;51424:4;:43::i;:::-;51395:26;;;:72;51522:28;:26;:28::i;:::-;51493:25;;;51478:72;;;51479:4;51478:72;;;;;;;;;;;;;;;;;;;-1:-1:-1;51584:18:10;;-1:-1:-1;51568:12:10;;:34;;;;;;;;;51560:71;;;;;-1:-1:-1;;;51560:71:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;51669:88;51688:42;;;;;;;;51703:4;:25;;;51688:42;;;51732:4;:24;;;51669:18;:88::i;:::-;51642:24;;;:115;;;51797:13;;51792:45;;:4;:45::i;:::-;51768:21;;;:69;51874:11;;51887:24;;;;51869:43;;51874:11;51869:4;:43::i;:::-;51847:19;;;:65;-1:-1:-1;;;;;51974:25:10;;;;;;:13;:25;;;;;;52001:26;;;;51966:62;;51974:25;51966:7;:62::i;:::-;51938:24;;;51923:105;;;51924:4;51923:105;;;;;;;;;;;;;;;;;;;-1:-1:-1;52058:18:10;;-1:-1:-1;52042:12:10;;:34;;;;;;;;;52038:174;;52099:102;52110:16;52128:52;52187:4;:12;;;52182:18;;;;;;;52038:174;52424:21;;;;52408:13;:37;52469:19;;;;52455:11;:33;52524:22;;;;;-1:-1:-1;;;;;52498:23:10;;;-1:-1:-1;52498:23:10;;;:13;:23;;;;;;:48;;;;52584:24;;;;52556:25;;;;;;;;;;:52;;;;52691:26;;;;52660:58;;;;;;;52556:25;;52498:23;;-1:-1:-1;;;;;;;;;;;52660:58:10;;;;;;;;;;52767:24;;;;52733:59;;;;;;;52760:4;;-1:-1:-1;;;;;52733:59:10;;;-1:-1:-1;;;;;;;;;;;52733:59:10;;;;;;;;52836:24;;;;52862:21;;;;52807:77;;;52829:4;52807:77;;;;;;;;;;;;;;;;;;;;;;;;;;53073:14;53061:27;50058:3037;-1:-1:-1;;;;;;;50058:3037:10:o;32601:523::-;32682:4;32666:5;71531:30;71551:9;71531:19;:30::i;:::-;32698:10;32711:16;:14;:16::i;:::-;32698:29;-1:-1:-1;32741:29:10;;32737:246;;32911:61;32922:5;32916:12;;;;;;;;32930:41;32911:4;:61::i;32737:246::-;33080:37;33092:10;33104:12;33080:11;:37::i;25533:526::-;25614:4;25598:5;71531:30;71551:9;71531:19;:30::i;:::-;25630:10;25643:16;:14;:16::i;:::-;25630:29;-1:-1:-1;25673:29:10;;25669:246;;25843:61;25854:5;25848:12;;;;;;;25669:246;26012:40;26024:10;26036:12;26050:1;26012:11;:40::i;43181:986::-;43322:4;43328;43306:5;71531:30;71551:9;71531:19;:30::i;:::-;43344:10;43357:16;:14;:16::i;:::-;43344:29;-1:-1:-1;43387:29:10;;43383:266;;43563:71;43574:5;43568:12;;;;;;;;43582:51;43563:4;:71::i;:::-;43555:83;-1:-1:-1;43636:1:10;;-1:-1:-1;43555:83:10;;-1:-1:-1;43555:83:10;43383:266;43667:16;-1:-1:-1;;;;;43667:31:10;;:33;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;43667:33:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;43667:33:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;43667:33:10;;-1:-1:-1;43714:29:10;;43710:270;;43890:75;43901:5;43895:12;;;;;;;;43909:55;43890:4;:75::i;43710:270::-;44087:73;44108:10;44120:8;44130:11;44143:16;44087:20;:73::i;:::-;44080:80;;;;;71571:1;71582:29;71601:9;71582:18;:29::i;:::-;43181:986;;;;;;;:::o;39291:3373::-;39469:11;;:75;;;-1:-1:-1;;;39469:75:10;;39508:4;39469:75;;;;-1:-1:-1;;;;;39469:75:10;;;;;;;;;;;;;;;;;;;;;;39386:4;;;;;;39469:11;;;:30;;:75;;;;;;;;;;;;;;;39386:4;39469:11;:75;;;5:2:-1;;;;30:1;27;20:12;5:2;39469:75:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;39469:75:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;39469:75:10;;-1:-1:-1;39558:12:10;;39554:151;;39594:96;39605:27;39634:46;39682:7;39594:10;:96::i;:::-;39586:108;-1:-1:-1;39692:1:10;;-1:-1:-1;39586:108:10;;-1:-1:-1;39586:108:10;39554:151;39812:16;:14;:16::i;:::-;39790:18;;:38;39786:151;;39852:70;39857:22;39881:40;39852:4;:70::i;39786:151::-;39947:32;;:::i;:::-;-1:-1:-1;;;;;40090:24:10;;;;;;:14;:24;;;;;:38;;;40069:18;;;:59;40256:37;40105:8;40256:27;:37::i;:::-;40233:19;;;40218:75;;;40219:12;;;40218:75;;;;;;;;;;;;;;;;;;;-1:-1:-1;40323:18:10;;-1:-1:-1;40307:4:10;:12;;;:34;;;;;;;;;40303:190;;40365:113;40376:16;40394:63;40464:4;:12;;;40459:18;;;;;;;40365:113;40357:125;-1:-1:-1;40480:1:10;;-1:-1:-1;40357:125:10;;-1:-1:-1;;40357:125:10;40303:190;-1:-1:-1;;40572:11:10;:23;40568:153;;;40630:19;;;;40611:16;;;:38;40568:153;;;40680:16;;;:30;;;40568:153;41306:37;41319:5;41326:4;:16;;;41306:12;:37::i;:::-;41281:22;;;:62;;;41646:19;;;;41638:52;;:7;:52::i;:::-;41612:22;;;41597:93;;;41598:12;;;41597:93;;;;;;;;;;;;;;;;;;;-1:-1:-1;41724:18:10;;-1:-1:-1;41708:4:10;:12;;;:34;;;;;;;;;41700:105;;;;-1:-1:-1;;;41700:105:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41855:45;41863:12;;41877:4;:22;;;41855:7;:45::i;:::-;41831:20;;;41816:84;;;41817:12;;;41816:84;;;;;;;;;;;;;;;;;;;-1:-1:-1;41934:18:10;;-1:-1:-1;41918:4:10;:12;;;:34;;;;;;;;;41910:96;;;;-1:-1:-1;;;41910:96:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42123:22;;;;;;-1:-1:-1;;;;;42086:24:10;;;;;;;:14;:24;;;;;;;;;:59;;;42196:11;;42155:38;;;;:52;;;;42232:20;;;;42217:12;:35;;;42339:22;;;;42363;;42310:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42634:22;;;42617:14;;-1:-1:-1;42634:22:10;-1:-1:-1;;39291:3373:10;;;;;;;:::o;3355:118::-;3416:4;326:42:11;-1:-1:-1;;;;;3439:25:10;;:27;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;1926:263:12;1997:9;2008:4;2025:14;2041:8;2053:13;2061:1;2064;2053:7;:13::i;:::-;2024:42;;-1:-1:-1;2024:42:12;-1:-1:-1;2089:18:12;2081:4;:26;;;;;;;;;2077:73;;-1:-1:-1;2131:4:12;-1:-1:-1;2137:1:12;;-1:-1:-1;2123:16:12;;2077:73;2167:15;2175:3;2180:1;2167:7;:15::i;:::-;2160:22;;;;;;1926:263;;;;;;:::o;771:503:21:-;832:9;843:10;;:::i;:::-;866:14;882:20;906:22;914:3;409:4:22;906:7:21;:22::i;:::-;865:63;;-1:-1:-1;865:63:21;-1:-1:-1;950:18:21;942:4;:26;;;;;;;;;938:90;;-1:-1:-1;998:18:21;;;;;;;;;-1:-1:-1;998:18:21;;992:4;;-1:-1:-1;998:18:21;-1:-1:-1;984:33:21;;938:90;1039:14;1055:13;1072:31;1080:15;1097:5;1072:7;:31::i;:::-;1038:65;;-1:-1:-1;1038:65:21;-1:-1:-1;1125:18:21;1117:4;:26;;;;;;;;;1113:90;;-1:-1:-1;1173:18:21;;;;;;;;;-1:-1:-1;1173:18:21;;1167:4;;-1:-1:-1;1173:18:21;-1:-1:-1;1159:33:21;;-1:-1:-1;;1159:33:21;1113:90;1241:25;;;;;;;;;;;;-1:-1:-1;;1241:25:21;;-1:-1:-1;771:503:21;-1:-1:-1;;;;;;771:503:21:o;8835:241:20:-;8920:4;8941:43;8954:3;8949:9;;;;;;;;8965:4;8960:10;;;;;;;;8941:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;9009:27;9002:3;:34;;;;;;;;;:67;;9065:3;9060:9;;;;;;;;9002:67;;;-1:-1:-1;9039:4:20;:18;;8995:74;-1:-1:-1;;8835:241:20:o;1612:250:12:-;1668:9;;1704:5;;;1724:6;;;1720:136;;1754:18;;-1:-1:-1;1774:1:12;-1:-1:-1;1746:30:12;;1720:136;-1:-1:-1;1815:26:12;;-1:-1:-1;1843:1:12;;-1:-1:-1;1807:38:12;;1977:346:21;2046:9;2057:10;;:::i;:::-;2080:14;2096:19;2119:27;2127:1;:10;;;2139:6;2119:7;:27::i;:::-;2079:67;;-1:-1:-1;2079:67:21;-1:-1:-1;2168:18:21;2160:4;:26;;;;;;;;;2156:90;;-1:-1:-1;2216:18:21;;;;;;;;;-1:-1:-1;2216:18:21;;2210:4;;-1:-1:-1;2216:18:21;-1:-1:-1;2202:33:21;;2156:90;2284:31;;;;;;;;;;;;-1:-1:-1;;2284:31:21;;-1:-1:-1;1977:346:21;-1:-1:-1;;;;1977:346:21:o;788:210:22:-;968:12;409:4;968:23;;;788:210::o;1096:186:3:-;1213:63;;73327:765:10;73431:12;73456;73470:23;73497:6;-1:-1:-1;;;;;73497:11:10;73509:4;73497:17;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;73497:17:10;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;73455:59:10;;;;73530:7;73525:533;;73623:17;;:21;73619:429;;73881:10;73875:17;73941:15;73928:10;73924:2;73920:19;73913:44;73830:145;74020:12;74013:20;;-1:-1:-1;;;74013:20:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;74013:20:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;73619:429;74075:10;73327:765;-1:-1:-1;;;;;73327:765:10:o;3712:118:22:-;3765:4;3788:35;3793:1;3796;3788:35;;;;;;;;;;;;;-1:-1:-1;;;3788:35:22;;;:4;:35::i;7357:223:2:-;7452:91;;;-1:-1:-1;;;;;7452:91:2;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;7452:91:2;;;;;;;25:18:-1;;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;7432:141:2;;;;;;;;;;;;;;;;;;:19;:141::i;:::-;7357:223;;:::o;27836:4504:10:-;27943:4;27967:19;;;:42;;-1:-1:-1;27990:19:10;;27967:42;27959:107;;;;-1:-1:-1;;;27959:107:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28077:27;;:::i;:::-;28218:28;:26;:28::i;:::-;28189:25;;;28174:72;;;28175:12;;;28174:72;;;;;;;;;;;;;;;;;;;-1:-1:-1;28276:18:10;;-1:-1:-1;28260:4:10;:12;;;:34;;;;;;;;;28256:166;;28317:94;28328:16;28346:44;28397:4;:12;;;28392:18;;;;;;;28317:94;28310:101;;;;;28256:166;28473:18;;28469:1265;;28743:17;;;:34;;;28846:42;;;;;;;;28861:25;;;;28846:42;;28828:77;;28763:14;28828:17;:77::i;:::-;28807:17;;;28792:113;;;28793:12;;;28792:113;;;;;;;;;;;;;;;;;;;-1:-1:-1;28939:18:10;;-1:-1:-1;28923:4:10;:12;;;:34;;;;;;;;;28919:183;;28984:103;28995:16;29013:53;29073:4;:12;;;29068:18;;;;;;;28919:183;28469:1265;;;29396:82;29419:14;29435:42;;;;;;;;29450:4;:25;;;29435:42;;;29396:22;:82::i;:::-;29375:17;;;29360:118;;;29361:12;;;29360:118;;;;;;;;;;;;;;;;;;;-1:-1:-1;29512:18:10;;-1:-1:-1;29496:4:10;:12;;;:34;;;;;;;;;29492:183;;29557:103;29568:16;29586:53;29646:4;:12;;;29641:18;;;;;;;29492:183;29689:17;;;:34;;;28469:1265;29800:11;;29851:17;;;;29800:69;;;-1:-1:-1;;;29800:69:10;;29834:4;29800:69;;;;-1:-1:-1;;;;;29800:69:10;;;;;;;;;;;;;;;;29785:12;;29800:11;;;;;:25;;:69;;;;;;;;;;;;;;;29785:12;29800:11;:69;;;5:2:-1;;;;30:1;27;20:12;5:2;29800:69:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29800:69:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;29800:69:10;;-1:-1:-1;29883:12:10;;29879:140;;29918:90;29929:27;29958:40;30000:7;29918:10;:90::i;:::-;29911:97;;;;;;29879:140;30126:16;:14;:16::i;:::-;30104:18;;:38;30100:140;;30165:64;30170:22;30194:34;30165:4;:64::i;30100:140::-;30528:39;30536:11;;30549:4;:17;;;30528:7;:39::i;:::-;30505:19;;;30490:77;;;30491:12;;;30490:77;;;;;;;;;;;;;;;;;;;-1:-1:-1;30597:18:10;;-1:-1:-1;30581:4:10;:12;;;:34;;;;;;;;;30577:176;;30638:104;30649:16;30667:54;30728:4;:12;;;30723:18;;;;;;;30577:176;-1:-1:-1;;;;;30811:23:10;;;;;;:13;:23;;;;;;30836:17;;;;30803:51;;30811:23;30803:7;:51::i;:::-;30778:21;;;30763:91;;;30764:12;;;30763:91;;;;;;;;;;;;;;;;;;;-1:-1:-1;30884:18:10;;-1:-1:-1;30868:4:10;:12;;;:34;;;;;;;;;30864:179;;30925:107;30936:16;30954:57;31018:4;:12;;;31013:18;;;;;;;30864:179;31138:4;:17;;;31121:14;:12;:14::i;:::-;:34;31117:153;;;31178:81;31183:29;31214:44;31178:4;:81::i;31117:153::-;31476:19;;;;31462:11;:33;31531:21;;;;-1:-1:-1;;;;;31505:23:10;;;;;;:13;:23;;;;;:47;31944:17;;;;31920:42;;31519:8;;31920:13;:42::i;:::-;32071:17;;;;32037:52;;;;;;;32064:4;;-1:-1:-1;;;;;32037:52:10;;;-1:-1:-1;;;;;;;;;;;32037:52:10;;;;;;;;32121:17;;;;32140;;;;;32104:54;;;-1:-1:-1;;;;;32104:54:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32208:11;;32258:17;;;;32277;;;;32208:87;;;-1:-1:-1;;;32208:87:10;;32241:4;32208:87;;;;-1:-1:-1;;;;;32208:87:10;;;;;;;;;;;;;;;;;;;;;;:11;;;;;:24;;:87;;;;;:11;;:87;;;;;;;:11;;:87;;;5:2:-1;;;;30:1;27;20:12;5:2;32208:87:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;32318:14:10;;-1:-1:-1;32313:20:10;;-1:-1:-1;;32313:20:10;;32306:27;27836:4504;-1:-1:-1;;;;;;27836:4504:10:o;542:331:12:-;598:9;;629:6;625:67;;-1:-1:-1;659:18:12;;-1:-1:-1;659:18:12;651:30;;625:67;711:5;;;715:1;711;:5;:1;731:5;;;;;:10;727:140;;-1:-1:-1;765:26:12;;-1:-1:-1;793:1:12;;-1:-1:-1;757:38:12;;727:140;834:18;;-1:-1:-1;854:1:12;-1:-1:-1;826:30:12;;963:209;1019:9;;1050:6;1046:75;;-1:-1:-1;1080:26:12;;-1:-1:-1;1108:1:12;1072:38;;1046:75;1139:18;1163:1;1159;:5;;;;;;1131:34;;;;963:209;;;;;:::o;21974:3216:10:-;22120:11;;:58;;;-1:-1:-1;;;22120:58:10;;22152:4;22120:58;;;;-1:-1:-1;;;;;22120:58:10;;;;;;;;;;;;;;;22044:4;;;;;;22120:11;;;:23;;:58;;;;;;;;;;;;;;;22044:4;22120:11;:58;;;5:2:-1;;;;30:1;27;20:12;5:2;22120:58:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22120:58:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22120:58:10;;-1:-1:-1;22192:12:10;;22188:143;;22228:88;22239:27;22268:38;22308:7;22228:10;:88::i;:::-;22220:100;-1:-1:-1;22318:1:10;;-1:-1:-1;22220:100:10;;-1:-1:-1;22220:100:10;22188:143;22438:16;:14;:16::i;:::-;22416:18;;:38;22412:143;;22478:62;22483:22;22507:32;22478:4;:62::i;22412:143::-;22565:25;;:::i;:::-;22645:28;:26;:28::i;:::-;22616:25;;;22601:72;;;22602:12;;;22601:72;;;;;;;;;;;;;;;;;;;-1:-1:-1;22703:18:10;;-1:-1:-1;22687:4:10;:12;;;:34;;;;;;;;;22683:169;;22745:92;22756:16;22774:42;22823:4;:12;;;22818:18;;;;;;;22745:92;22737:104;-1:-1:-1;22839:1:10;;-1:-1:-1;22737:104:10;;-1:-1:-1;;22737:104:10;22683:169;23809:32;23822:6;23830:10;23809:12;:32::i;:::-;23785:21;;;:56;;;24107:42;;;;;;;;24122:25;;;;24107:42;;24061:89;;23785:56;24061:22;:89::i;:::-;24042:15;;;24027:123;;;24028:12;;;24027:123;;;;;;;;;;;;;;;;;;;-1:-1:-1;24184:18:10;;-1:-1:-1;24168:4:10;:12;;;:34;;;;;;;;;24160:79;;;;;-1:-1:-1;;;24160:79:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24520:34;24525:11;;24538:4;:15;;;24520:4;:34::i;:::-;24498:19;;;:56;-1:-1:-1;;;;;24594:21:10;;;;;;:13;:21;;;;;;24617:15;;;;24589:44;;24594:21;24589:4;:44::i;:::-;24565:21;;;:68;;;24723:19;;;;24709:11;:33;-1:-1:-1;;;;;24752:21:10;;;;;;:13;:21;;;;;;;;;:45;;;;24883:21;;;;24906:15;;;;;24870:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24969:15;;;;24937:48;;;;;;;-1:-1:-1;;;;;24937:48:10;;;24954:4;;-1:-1:-1;;;;;;;;;;;24937:48:10;;;;;;;;25035:11;;25081:21;;;;25104:15;;;;25035:85;;;-1:-1:-1;;;25035:85:10;;25066:4;25035:85;;;;-1:-1:-1;;;;;25035:85:10;;;;;;;;;;;;;;;;;;;;;;:11;;;;;:22;;:85;;;;;:11;;:85;;;;;;;:11;;:85;;;5:2:-1;;;;30:1;27;20:12;5:2;25035:85:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;25144:14:10;;-1:-1:-1;25139:20:10;;-1:-1:-1;;25139:20:10;;25161:4;:21;;;25131:52;;;;;;21974:3216;;;;;:::o;3215:175:22:-;3296:4;3321:5;;;3352:12;3344:6;;;;3336:29;;;;-1:-1:-1;;;3336:29:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;4160:131:22;4219:10;;:::i;:::-;4248:36;;;;;;;;4263:19;4268:1;:10;;;4280:1;4263:4;:19::i;:::-;4248:36;;4241:43;4160:131;-1:-1:-1;;;4160:131:22:o;1106:171::-;1184:4;1200:18;;:::i;:::-;1221:15;1226:1;1229:6;1221:4;:15::i;:::-;1200:36;;1253:17;1262:7;1253:8;:17::i;1417:205::-;1515:4;1531:18;;:::i;:::-;1552:15;1557:1;1560:6;1552:4;:15::i;:::-;1531:36;;1584:31;1589:17;1598:7;1589:8;:17::i;:::-;1608:6;1584:4;:31::i;4297:119::-;4356:4;409;4379:19;4384:1;4387;:10;;;4379:4;:19::i;:::-;:30;;;;;;;4297:119;-1:-1:-1;;;4297:119:22:o;33537:3334:10:-;33693:11;;:64;;;-1:-1:-1;;;33693:64:10;;33727:4;33693:64;;;;-1:-1:-1;;;;;33693:64:10;;;;;;;;;;;;;;;33621:4;;;;33693:11;;:25;;:64;;;;;;;;;;;;;;33621:4;33693:11;:64;;;5:2:-1;;;;30:1;27;20:12;5:2;33693:64:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;33693:64:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;33693:64:10;;-1:-1:-1;33771:12:10;;33767:140;;33806:90;33817:27;33846:40;33888:7;33806:10;:90::i;:::-;33799:97;;;;;33767:140;34014:16;:14;:16::i;:::-;33992:18;;:38;33988:140;;34053:64;34058:22;34082:34;34053:4;:64::i;33988:140::-;34213:14;34230;:12;:14::i;:::-;34213:31;;34271:12;34259:9;:24;34255:136;;;34306:74;34311:29;34342:37;34306:4;:74::i;:::-;34299:81;;;;;;34255:136;34401:27;;:::i;:::-;34709:37;34737:8;34709:27;:37::i;:::-;34686:19;;;34671:75;;;34672:4;34671:75;;;;;;;;;;;;;;;;;;;-1:-1:-1;34776:18:10;;-1:-1:-1;34760:12:10;;:34;;;;;;;;;34756:179;;34817:107;34828:16;34846:57;34910:4;:12;;;34905:18;;;;;;;34817:107;34810:114;;;;;;;34756:179;34986:42;34994:4;:19;;;35015:12;34986:7;:42::i;:::-;34960:22;;;34945:83;;;34946:4;34945:83;;;;;;;;;;;;;;;;;;;-1:-1:-1;35058:18:10;;-1:-1:-1;35042:12:10;;:34;;;;;;;;;35038:186;;35099:114;35110:16;35128:64;35199:4;:12;;;35194:18;;;;;;;35038:186;35301:11;;35347:22;;;;;35301:69;;-1:-1:-1;;;35301:69:10;;35340:4;35301:69;;;;;;;;;;;;;-1:-1:-1;;;;;35301:11:10;;;;:30;;:69;;;;;;;;;;;;;;;:11;;:69;;;5:2:-1;;;;30:1;27;20:12;5:2;35301:69:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;35301:69:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;35301:69:10;;-1:-1:-1;35384:12:10;;35380:140;;35419:90;35430:27;35459:40;35501:7;35419:10;:90::i;35380:140::-;35569:35;35577:12;;35591;35569:7;:35::i;:::-;35545:20;;;35530:74;;;35531:4;35530:74;;;;;;;;;;;;;;;;;;;-1:-1:-1;35634:18:10;;-1:-1:-1;35618:12:10;;:34;;;;;;;;;35614:177;;35675:105;35686:16;35704:55;35766:4;:12;;;35761:18;;;;;;;35614:177;36024:22;;;;;-1:-1:-1;;;;;35987:24:10;;;;;;:14;:24;;;;;;:59;;;36097:11;;36056:38;;;;:52;36133:20;;;;36118:12;:35;36517:37;36002:8;36541:12;36517:13;:37::i;:::-;36638:22;;;;;36662:20;;;;;36607:76;;-1:-1:-1;;;;;36607:76:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36849:14;36837:27;33537:3334;-1:-1:-1;;;;;;33537:3334:10:o;44768:3544::-;44987:11;;:111;;;-1:-1:-1;;;44987:111:10;;45030:4;44987:111;;;;-1:-1:-1;;;;;44987:111:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44906:4;;;;;;44987:11;;;:34;;:111;;;;;;;;;;;;;;;44906:4;44987:11;:111;;;5:2:-1;;;;30:1;27;20:12;5:2;44987:111:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;44987:111:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;44987:111:10;;-1:-1:-1;45112:12:10;;45108:148;;45148:93;45159:27;45188:43;45233:7;45148:10;:93::i;:::-;45140:105;-1:-1:-1;45243:1:10;;-1:-1:-1;45140:105:10;;-1:-1:-1;45140:105:10;45108:148;45363:16;:14;:16::i;:::-;45341:18;;:38;45337:148;;45403:67;45408:22;45432:37;45403:4;:67::i;45337:148::-;45628:16;:14;:16::i;:::-;45587;-1:-1:-1;;;;;45587:35:10;;:37;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;45587:37:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;45587:37:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;45587:37:10;:57;45583:178;;45668:78;45673:22;45697:48;45668:4;:78::i;45583:178::-;45831:10;-1:-1:-1;;;;;45819:22:10;:8;-1:-1:-1;;;;;45819:22:10;;45815:143;;;45865:78;45870:26;45898:44;45865:4;:78::i;45815:143::-;46010:16;46006:145;;46050:86;46055:36;46093:42;46050:4;:86::i;46006:145::-;-1:-1:-1;;46204:11:10;:23;46200:156;;;46251:90;46256:36;46294:46;46251:4;:90::i;46200:156::-;46408:21;46431:22;46457:51;46474:10;46486:8;46496:11;46457:16;:51::i;:::-;46407:101;;-1:-1:-1;46407:101:10;-1:-1:-1;46522:40:10;;46518:161;;46586:78;46597:16;46591:23;;;;;;;;46616:47;46586:4;:78::i;:::-;46578:90;-1:-1:-1;46666:1:10;;-1:-1:-1;46578:90:10;;-1:-1:-1;;;46578:90:10;46518:161;46929:11;;:102;;;-1:-1:-1;;;46929:102:10;;46979:4;46929:102;;;;-1:-1:-1;;;;;46929:102:10;;;;;;;;;;;;;;;46886:21;;;;46929:11;;;:41;;:102;;;;;;;;;;;;:11;:102;;;5:2:-1;;;;30:1;27;20:12;5:2;46929:102:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;46929:102:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;46929:102:10;;;;;;;;;-1:-1:-1;46929:102:10;-1:-1:-1;47049:40:10;;47041:104;;;;-1:-1:-1;;;47041:104:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;47276:11;47236:16;-1:-1:-1;;;;;47236:26:10;;47263:8;47236:36;;;;;;;;;;;;;-1:-1:-1;;;;;47236:36:10;-1:-1:-1;;;;;47236:36:10;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;47236:36:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;47236:36:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;47236:36:10;:51;;47228:88;;;;;-1:-1:-1;;;47228:88:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;47442:15;-1:-1:-1;;;;;47471:42:10;;47508:4;47471:42;47467:250;;;47542:63;47564:4;47571:10;47583:8;47593:11;47542:13;:63::i;:::-;47529:76;;47467:250;;;47649:57;;;-1:-1:-1;;;47649:57:10;;-1:-1:-1;;;;;47649:57:10;;;;;;;;;;;;;;;;;;;;;;:22;;;;;;:57;;;;;;;;;;;;;;;-1:-1:-1;47649:22:10;:57;;;5:2:-1;;;;30:1;27;20:12;5:2;47649:57:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;47649:57:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;47649:57:10;;-1:-1:-1;47467:250:10;47820:34;;47812:67;;;;;-1:-1:-1;;;47812:67:10;;;;;;;;;;;;-1:-1:-1;;;47812:67:10;;;;;;;;;;;;;;;47941:96;;;-1:-1:-1;;;;;47941:96:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48270:14;48257:48;-1:-1:-1;48287:17:10;;-1:-1:-1;;;;;;44768:3544:10;;;;;;;;:::o;6010:654:2:-;6129:10;;6114:51;;;-1:-1:-1;;;6114:51:2;;6159:4;6114:51;;;;;;6077:4;;;;-1:-1:-1;;;;;6129:10:2;;;;6114:36;;:51;;;;;;;;;;;;;;;6129:10;6114:51;;;5:2:-1;;;;30:1;27;20:12;5:2;6114:51:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6114:51:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6114:51:2;6195:112;;;-1:-1:-1;;;;;6195:112:2;;;;;;6293:4;6195:112;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;6195:112:2;;;;;;6114:51;25:18:-1;;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;6175:161:2;;;;;;;;;;;;;;;;6114:51;;-1:-1:-1;6175:161:2;;6195:112;6175:19;:161::i;:::-;6446:10;;6431:51;;;-1:-1:-1;;;6431:51:2;;6476:4;6431:51;;;;;;6411:17;;-1:-1:-1;;;;;6446:10:2;;6431:36;;:51;;;;;;;;;;;;;;6446:10;6431:51;;;5:2:-1;;;;30:1;27;20:12;5:2;6431:51:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6431:51:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6431:51:2;;-1:-1:-1;6500:29:2;;;;6492:68;;;;;-1:-1:-1;;;6492:68:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;6577:28;;6010:654;-1:-1:-1;;;6010:654:2:o;3836:155:22:-;3917:4;3949:12;3941:6;;;;3933:29;;;;-1:-1:-1;;;3933:29:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;3933:29:22;-1:-1:-1;;;3979:5:22;;;3836:155::o;7978:263:2:-;8113:10;;8073:23;;8099:45;;-1:-1:-1;;;;;8113:10:2;8125:4;8131:12;8099:13;:45::i;:::-;8158:17;;8073:71;;-1:-1:-1;8158:21:2;8154:80;;8200:10;8189:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8189:30:2;8221:12;;8181:53;;;;-1:-1:-1;;;8181:53:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;8154:80:2;7978:263;;;:::o;4423:330:21:-;4511:9;4522:4;4539:13;4554:19;;:::i;:::-;4577:31;4592:6;4600:7;4577:14;:31::i;4877:120:22:-;4930:4;4953:37;4958:1;4961;4953:37;;;;;;;;;;;;;;;;;:4;:37::i;3712:605:21:-;3792:9;3803:10;;:::i;:::-;4100:14;4116;4134:25;409:4:22;4152:6:21;4134:7;:25::i;:::-;4099:60;;-1:-1:-1;4099:60:21;-1:-1:-1;4181:18:21;4173:4;:26;;;;;;;;;4169:90;;-1:-1:-1;4229:18:21;;;;;;;;;-1:-1:-1;4229:18:21;;4223:4;;-1:-1:-1;4229:18:21;-1:-1:-1;4215:33:21;;4169:90;4275:35;4282:9;4293:7;:16;;;4275:6;:35::i;5003:243:22:-;5084:4;5104:6;;;:16;;-1:-1:-1;5114:6:22;;5104:16;5100:55;;;-1:-1:-1;5143:1:22;5136:8;;5100:55;5173:5;;;5177:1;5173;:5;:1;5196:5;;;;;:10;5208:12;5188:33;;;;;-1:-1:-1;;;5188:33:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;187:1059:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;187:1059:4;;;-1:-1:-1;187:1059:4;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;187:1059:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;187:1059:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;187:1059:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;187:1059:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;187:1059:4;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;"},"methodIdentifiers":{"_becomeImplementation(bytes)":"56e67728","_delegateCompLikeTo(address)":"7f1e06be","_prepare()":"1db78944","_reduceReserves(uint256)":"601a0bf1","_setAdminFee(uint256)":"91dd36c6","_setImplementationSafe(address,bool,bytes)":"50d85b73","_setInterestRateModel(address)":"f2b3abbd","_setNameAndSymbol(string,string)":"34154d4c","_setReserveFactor(uint256)":"fca7820b","_withdrawAdminFees(uint256)":"a7b820df","_withdrawFuseFees(uint256)":"a03dce8d","accrualBlockNumber()":"6c540baf","accrueInterest()":"a6afed95","adminFeeMantissa()":"8d02d9a1","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","balanceOfUnderlying(address)":"3af9e669","borrow(uint256)":"c5ebeaec","borrowBalanceCurrent(address)":"17bfdfbc","borrowBalanceStored(address)":"95dd9193","borrowIndex()":"aa5af0fd","borrowRatePerBlock()":"f8f9da28","comptroller()":"5fe3b567","decimals()":"313ce567","exchangeRateCurrent()":"bd6d894d","exchangeRateStored()":"182df0f5","fuseFeeMantissa()":"dbfe7c19","getAccountSnapshot(address)":"c37f68e2","getCash()":"3b1d21a2","implementation()":"5c60da1b","initialize(address,address,address,string,string,uint256,uint256)":"a0b0d289","initialize(address,address,uint256,string,string,uint8,uint256,uint256)":"0f8855e8","interestRateModel()":"f3fdb15a","isCEther()":"ac784ddc","isCToken()":"fe9c44ae","liquidateBorrow(address,uint256,address)":"f5e3c462","mint(uint256)":"a0712d68","name()":"06fdde03","protocolSeizeShareMantissa()":"6752e702","redeem(uint256)":"db006a75","redeemUnderlying(uint256)":"852a12e3","repayBorrow(uint256)":"0e752702","repayBorrowBehalf(address,uint256)":"2608f818","reserveFactorMantissa()":"173b9904","seize(address,address,uint256)":"b2a02ff1","supplyRatePerBlock()":"ae9d70b0","symbol()":"95d89b41","totalAdminFees()":"61feacff","totalBorrows()":"47bd3718","totalBorrowsCurrent()":"73acee98","totalFuseFees()":"dc028ab1","totalReserves()":"8f840ddd","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","underlying()":"6f307dc3"}},"metadata":"{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"cashPrior\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"interestAccumulated\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"borrowIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalBorrows\",\"type\":\"uint256\"}],\"name\":\"AccrueInterest\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"borrowAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"accountBorrows\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalBorrows\",\"type\":\"uint256\"}],\"name\":\"Borrow\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"error\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"info\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"detail\",\"type\":\"uint256\"}],\"name\":\"Failure\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"liquidator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"repayAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"cTokenCollateral\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"seizeTokens\",\"type\":\"uint256\"}],\"name\":\"LiquidateBorrow\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"mintAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"mintTokens\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldAdminFeeMantissa\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newAdminFeeMantissa\",\"type\":\"uint256\"}],\"name\":\"NewAdminFee\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract ComptrollerInterface\",\"name\":\"oldComptroller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract ComptrollerInterface\",\"name\":\"newComptroller\",\"type\":\"address\"}],\"name\":\"NewComptroller\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldFuseFeeMantissa\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newFuseFeeMantissa\",\"type\":\"uint256\"}],\"name\":\"NewFuseFee\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldImplementation\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"NewImplementation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract InterestRateModel\",\"name\":\"oldInterestRateModel\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract InterestRateModel\",\"name\":\"newInterestRateModel\",\"type\":\"address\"}],\"name\":\"NewMarketInterestRateModel\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldReserveFactorMantissa\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newReserveFactorMantissa\",\"type\":\"uint256\"}],\"name\":\"NewReserveFactor\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"redeemer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"redeemAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"redeemTokens\",\"type\":\"uint256\"}],\"name\":\"Redeem\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"repayAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"accountBorrows\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalBorrows\",\"type\":\"uint256\"}],\"name\":\"RepayBorrow\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"benefactor\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"addAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newTotalReserves\",\"type\":\"uint256\"}],\"name\":\"ReservesAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reduceAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newTotalReserves\",\"type\":\"uint256\"}],\"name\":\"ReservesReduced\",\"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\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"_becomeImplementation\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"compLikeDelegatee\",\"type\":\"address\"}],\"name\":\"_delegateCompLikeTo\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"_prepare\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"reduceAmount\",\"type\":\"uint256\"}],\"name\":\"_reduceReserves\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newAdminFeeMantissa\",\"type\":\"uint256\"}],\"name\":\"_setAdminFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation_\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"allowResign\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"becomeImplementationData\",\"type\":\"bytes\"}],\"name\":\"_setImplementationSafe\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contract InterestRateModel\",\"name\":\"newInterestRateModel\",\"type\":\"address\"}],\"name\":\"_setInterestRateModel\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"}],\"name\":\"_setNameAndSymbol\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newReserveFactorMantissa\",\"type\":\"uint256\"}],\"name\":\"_setReserveFactor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"withdrawAmount\",\"type\":\"uint256\"}],\"name\":\"_withdrawAdminFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"withdrawAmount\",\"type\":\"uint256\"}],\"name\":\"_withdrawFuseFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"accrualBlockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"accrueInterest\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"adminFeeMantissa\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOfUnderlying\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"borrowAmount\",\"type\":\"uint256\"}],\"name\":\"borrow\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"borrowBalanceCurrent\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"borrowBalanceStored\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"borrowIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"borrowRatePerBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"comptroller\",\"outputs\":[{\"internalType\":\"contract ComptrollerInterface\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"exchangeRateCurrent\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"exchangeRateStored\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"fuseFeeMantissa\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getAccountSnapshot\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getCash\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contract ComptrollerInterface\",\"name\":\"comptroller_\",\"type\":\"address\"},{\"internalType\":\"contract InterestRateModel\",\"name\":\"interestRateModel_\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"initialExchangeRateMantissa_\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"decimals_\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"reserveFactorMantissa_\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"adminFeeMantissa_\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"underlying_\",\"type\":\"address\"},{\"internalType\":\"contract ComptrollerInterface\",\"name\":\"comptroller_\",\"type\":\"address\"},{\"internalType\":\"contract InterestRateModel\",\"name\":\"interestRateModel_\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"reserveFactorMantissa_\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"adminFeeMantissa_\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"interestRateModel\",\"outputs\":[{\"internalType\":\"contract InterestRateModel\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isCEther\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isCToken\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"repayAmount\",\"type\":\"uint256\"},{\"internalType\":\"contract CTokenInterface\",\"name\":\"cTokenCollateral\",\"type\":\"address\"}],\"name\":\"liquidateBorrow\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"mintAmount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"protocolSeizeShareMantissa\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"redeemTokens\",\"type\":\"uint256\"}],\"name\":\"redeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"redeemAmount\",\"type\":\"uint256\"}],\"name\":\"redeemUnderlying\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"repayAmount\",\"type\":\"uint256\"}],\"name\":\"repayBorrow\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"repayAmount\",\"type\":\"uint256\"}],\"name\":\"repayBorrowBehalf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"reserveFactorMantissa\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"liquidator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"seizeTokens\",\"type\":\"uint256\"}],\"name\":\"seize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"supplyRatePerBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalAdminFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalBorrows\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"totalBorrowsCurrent\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalFuseFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalReserves\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"underlying\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Compound\",\"methods\":{\"_becomeImplementation(bytes)\":{\"params\":{\"data\":\"The encoded bytes data for any initialization\"}},\"_delegateCompLikeTo(address)\":{\"details\":\"CTokens whose underlying are not CompLike should revert here\",\"params\":{\"compLikeDelegatee\":\"The address to delegate votes to\"}},\"_reduceReserves(uint256)\":{\"params\":{\"reduceAmount\":\"Amount of reduction to reserves\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"_setAdminFee(uint256)\":{\"details\":\"Admin function to accrue interest and set a new admin fee\",\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"_setImplementationSafe(address,bool,bytes)\":{\"params\":{\"allowResign\":\"Flag to indicate whether to call _resignImplementation on the old implementation\",\"becomeImplementationData\":\"The encoded bytes data to be passed to _becomeImplementation\",\"implementation_\":\"The address of the new implementation for delegation\"}},\"_setInterestRateModel(address)\":{\"details\":\"Admin function to accrue interest and update the interest rate model\",\"params\":{\"newInterestRateModel\":\"the new interest rate model to use\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"_setNameAndSymbol(string,string)\":{\"details\":\"Admin function to update the cToken ERC20 name and symbol\",\"params\":{\"_name\":\"the new ERC20 token name to use\",\"_symbol\":\"the new ERC20 token symbol to use\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"_setReserveFactor(uint256)\":{\"details\":\"Admin function to accrue interest and set a new reserve factor\",\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"_withdrawAdminFees(uint256)\":{\"params\":{\"withdrawAmount\":\"Amount of fees to withdraw\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"_withdrawFuseFees(uint256)\":{\"params\":{\"withdrawAmount\":\"Amount of fees to withdraw\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"accrueInterest()\":{\"details\":\"This calculates interest accrued from the last checkpointed block up to the current block and writes new checkpoint to storage.\"},\"allowance(address,address)\":{\"params\":{\"owner\":\"The address of the account which owns the tokens to be spent\",\"spender\":\"The address of the account which may transfer tokens\"},\"return\":\"The number of tokens allowed to be spent (-1 means infinite)\"},\"approve(address,uint256)\":{\"details\":\"This will overwrite the approval amount for `spender` and is subject to issues noted [here](https://eips.ethereum.org/EIPS/eip-20#approve)\",\"params\":{\"amount\":\"The number of tokens that are approved (-1 means infinite)\",\"spender\":\"The address of the account which may transfer tokens\"},\"return\":\"Whether or not the approval succeeded\"},\"balanceOf(address)\":{\"params\":{\"owner\":\"The address of the account to query\"},\"return\":\"The number of tokens owned by `owner`\"},\"balanceOfUnderlying(address)\":{\"details\":\"This also accrues interest in a transaction\",\"params\":{\"owner\":\"The address of the account to query\"},\"return\":\"The amount of underlying owned by `owner`\"},\"borrow(uint256)\":{\"params\":{\"borrowAmount\":\"The amount of the underlying asset to borrow\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"borrowBalanceCurrent(address)\":{\"params\":{\"account\":\"The address whose balance should be calculated after updating borrowIndex\"},\"return\":\"The calculated balance\"},\"borrowBalanceStored(address)\":{\"params\":{\"account\":\"The address whose balance should be calculated\"},\"return\":\"The calculated balance\"},\"borrowRatePerBlock()\":{\"return\":\"The borrow interest rate per block, scaled by 1e18\"},\"exchangeRateCurrent()\":{\"return\":\"Calculated exchange rate scaled by 1e18\"},\"exchangeRateStored()\":{\"details\":\"This function does not accrue interest before calculating the exchange rate\",\"return\":\"Calculated exchange rate scaled by 1e18\"},\"getAccountSnapshot(address)\":{\"details\":\"This is used by comptroller to more efficiently perform liquidity checks.\",\"params\":{\"account\":\"Address of the account to snapshot\"},\"return\":\"(possible error, token balance, borrow balance, exchange rate mantissa)\"},\"getCash()\":{\"return\":\"The quantity of underlying asset owned by this contract\"},\"initialize(address,address,address,string,string,uint256,uint256)\":{\"params\":{\"comptroller_\":\"The address of the Comptroller\",\"interestRateModel_\":\"The address of the interest rate model\",\"name_\":\"ERC-20 name of this token\",\"symbol_\":\"ERC-20 symbol of this token\",\"underlying_\":\"The address of the underlying asset\"}},\"initialize(address,address,uint256,string,string,uint8,uint256,uint256)\":{\"params\":{\"comptroller_\":\"The address of the Comptroller\",\"decimals_\":\"EIP-20 decimal precision of this token\",\"initialExchangeRateMantissa_\":\"The initial exchange rate, scaled by 1e18\",\"interestRateModel_\":\"The address of the interest rate model\",\"name_\":\"EIP-20 name of this token\",\"symbol_\":\"EIP-20 symbol of this token\"}},\"liquidateBorrow(address,uint256,address)\":{\"params\":{\"borrower\":\"The borrower of this cToken to be liquidated\",\"cTokenCollateral\":\"The market in which to seize collateral from the borrower\",\"repayAmount\":\"The amount of the underlying borrowed asset to repay\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"mint(uint256)\":{\"details\":\"Accrues interest whether or not the operation succeeds, unless reverted\",\"params\":{\"mintAmount\":\"The amount of the underlying asset to supply\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"redeem(uint256)\":{\"details\":\"Accrues interest whether or not the operation succeeds, unless reverted\",\"params\":{\"redeemTokens\":\"The number of cTokens to redeem into underlying\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"redeemUnderlying(uint256)\":{\"details\":\"Accrues interest whether or not the operation succeeds, unless reverted\",\"params\":{\"redeemAmount\":\"The amount of underlying to redeem\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"repayBorrow(uint256)\":{\"params\":{\"repayAmount\":\"The amount to repay\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"repayBorrowBehalf(address,uint256)\":{\"params\":{\"borrower\":\"the account with the debt being payed off\",\"repayAmount\":\"The amount to repay\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"seize(address,address,uint256)\":{\"details\":\"Will fail unless called by another cToken during the process of liquidation. Its absolutely critical to use msg.sender as the borrowed cToken and not a parameter.\",\"params\":{\"borrower\":\"The account having collateral seized\",\"liquidator\":\"The account receiving seized collateral\",\"seizeTokens\":\"The number of cTokens to seize\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"supplyRatePerBlock()\":{\"return\":\"The supply interest rate per block, scaled by 1e18\"},\"totalBorrowsCurrent()\":{\"return\":\"The total borrows with interest\"},\"transfer(address,uint256)\":{\"params\":{\"amount\":\"The number of tokens to transfer\",\"dst\":\"The address of the destination account\"},\"return\":\"Whether or not the transfer succeeded\"},\"transferFrom(address,address,uint256)\":{\"params\":{\"amount\":\"The number of tokens to transfer\",\"dst\":\"The address of the destination account\",\"src\":\"The address of the source account\"},\"return\":\"Whether or not the transfer succeeded\"}},\"title\":\"Compound's CErc20Delegate Contract\"},\"userdoc\":{\"methods\":{\"_becomeImplementation(bytes)\":{\"notice\":\"Called by the delegator on a delegate to initialize it for duty\"},\"_delegateCompLikeTo(address)\":{\"notice\":\"Admin call to delegate the votes of the COMP-like underlying\"},\"_prepare()\":{\"notice\":\"Function called before all delegator functions\"},\"_reduceReserves(uint256)\":{\"notice\":\"Accrues interest and reduces reserves by transferring to admin\"},\"_setAdminFee(uint256)\":{\"notice\":\"accrues interest and sets a new admin fee for the protocol using _setAdminFeeFresh\"},\"_setImplementationSafe(address,bool,bytes)\":{\"notice\":\"Called by the admin to update the implementation of the delegator\"},\"_setInterestRateModel(address)\":{\"notice\":\"accrues interest and updates the interest rate model using _setInterestRateModelFresh\"},\"_setNameAndSymbol(string,string)\":{\"notice\":\"updates the cToken ERC20 name and symbol\"},\"_setReserveFactor(uint256)\":{\"notice\":\"accrues interest and sets a new reserve factor for the protocol using _setReserveFactorFresh\"},\"_withdrawAdminFees(uint256)\":{\"notice\":\"Accrues interest and reduces admin fees by transferring to admin\"},\"_withdrawFuseFees(uint256)\":{\"notice\":\"Accrues interest and reduces Fuse fees by transferring to Fuse\"},\"accrueInterest()\":{\"notice\":\"Applies accrued interest to total borrows and reserves\"},\"allowance(address,address)\":{\"notice\":\"Get the current allowance from `owner` for `spender`\"},\"approve(address,uint256)\":{\"notice\":\"Approve `spender` to transfer up to `amount` from `src`\"},\"balanceOf(address)\":{\"notice\":\"Get the token balance of the `owner`\"},\"balanceOfUnderlying(address)\":{\"notice\":\"Get the underlying balance of the `owner`\"},\"borrow(uint256)\":{\"notice\":\"Sender borrows assets from the protocol to their own address\"},\"borrowBalanceCurrent(address)\":{\"notice\":\"Accrue interest to updated borrowIndex and then calculate account's borrow balance using the updated borrowIndex\"},\"borrowBalanceStored(address)\":{\"notice\":\"Return the borrow balance of account based on stored data\"},\"borrowRatePerBlock()\":{\"notice\":\"Returns the current per-block borrow interest rate for this cToken\"},\"exchangeRateCurrent()\":{\"notice\":\"Accrue interest then return the up-to-date exchange rate\"},\"exchangeRateStored()\":{\"notice\":\"Calculates the exchange rate from the underlying to the CToken\"},\"getAccountSnapshot(address)\":{\"notice\":\"Get a snapshot of the account's balances, and the cached exchange rate\"},\"getCash()\":{\"notice\":\"Get cash balance of this cToken in the underlying asset\"},\"initialize(address,address,address,string,string,uint256,uint256)\":{\"notice\":\"Initialize the new money market\"},\"initialize(address,address,uint256,string,string,uint8,uint256,uint256)\":{\"notice\":\"Initialize the money market\"},\"liquidateBorrow(address,uint256,address)\":{\"notice\":\"The sender liquidates the borrowers collateral. The collateral seized is transferred to the liquidator.\"},\"mint(uint256)\":{\"notice\":\"Sender supplies assets into the market and receives cTokens in exchange\"},\"redeem(uint256)\":{\"notice\":\"Sender redeems cTokens in exchange for the underlying asset\"},\"redeemUnderlying(uint256)\":{\"notice\":\"Sender redeems cTokens in exchange for a specified amount of underlying asset\"},\"repayBorrow(uint256)\":{\"notice\":\"Sender repays their own borrow\"},\"repayBorrowBehalf(address,uint256)\":{\"notice\":\"Sender repays a borrow belonging to borrower\"},\"seize(address,address,uint256)\":{\"notice\":\"Transfers collateral tokens (this market) to the liquidator.\"},\"supplyRatePerBlock()\":{\"notice\":\"Returns the current per-block supply interest rate for this cToken\"},\"totalBorrowsCurrent()\":{\"notice\":\"Returns the current total borrows plus accrued interest\"},\"transfer(address,uint256)\":{\"notice\":\"Transfer `amount` tokens from `msg.sender` to `dst`\"},\"transferFrom(address,address,uint256)\":{\"notice\":\"Transfer `amount` tokens from `src` to `dst`\"}},\"notice\":\"CTokens which wrap Ether and are delegated to\"}},\"settings\":{\"compilationTarget\":{\"contracts/CErc20DelegateDAIAggregatorFix.sol\":\"CErc20DelegateUSDCAggregatorFix\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/CErc20.sol\":{\"keccak256\":\"0x37e284e3ca9a2821c3ad1001d110ca529820646f65dd441f5907070408b20bc2\",\"urls\":[\"bzz-raw://cb025aa0f581e05f023e5aef44cfcd47cdece7ec4cf53973d89834f5037666d2\",\"dweb:/ipfs/QmaY78mEyhUCuvbMVdGzpKmkw9yKoHz5noSg5REZgipupY\"]},\"contracts/CErc20Delegate.sol\":{\"keccak256\":\"0xc50f6bf192d43be4958d56a210e1b3e978a86be8f2da7463aa63dcf5a21754ad\",\"urls\":[\"bzz-raw://9258ab0d8a3c994e99a5cab314f10a84da47d32a59d1d8cd4ad772e1195dc8cd\",\"dweb:/ipfs/QmWYYn1BFVjELtm8zoxHvqWWDojXma7NpCAMk7VMruSkjJ\"]},\"contracts/CErc20DelegateDAIAggregatorFix.sol\":{\"keccak256\":\"0xd7f914bd005f49e956a9275fe33c713cb14b312a9469ed137b63f45c8b719ac0\",\"urls\":[\"bzz-raw://02c5fbd375ed71deed866d72f3526940f845437ddc8ef0375f0cffee1c05f873\",\"dweb:/ipfs/QmYZniLxzrGVn2SicYvH87iG437CkGoTZ6T1eSTJnndgim\"]},\"contracts/CToken.sol\":{\"keccak256\":\"0xc3a5a827241528049e20a24cc446558c8a9272909f75ce5d1cf14ae3ab5feba3\",\"urls\":[\"bzz-raw://a403db2bf1a8e5e9384df19600bd18d4251056818b094afcdab418e683bb5cb8\",\"dweb:/ipfs/QmdkRbFGtKP67tNNqyH7BraDRGerwRNA7ktscbFV9LioM2\"]},\"contracts/CTokenInterfaces.sol\":{\"keccak256\":\"0xc8a056c724ef4f0215ece6011e7ac1007c9dc7611ce5160d470ec858bbb06bd3\",\"urls\":[\"bzz-raw://58951693d1b53d2722e55b068bab2b570f4b044d89c28ed6b53bac6e95aeb662\",\"dweb:/ipfs/QmQiNTw5jZR74WjKfX2bPiuTT4tuFuq8rx7QxEVyVvdGLn\"]},\"contracts/CarefulMath.sol\":{\"keccak256\":\"0x1487237dbbbb73ad43c8eff16e78311753719a94a5065f574de5c91b672c56f8\",\"urls\":[\"bzz-raw://349966a236f313b2cb42e1942832e6bd7e134f65f6654e6c4d46788e65cc4a9b\",\"dweb:/ipfs/Qmebpv8i5jLR4fLgpZHQZRLu6aefVAbLC2yUk9ABEekquz\"]},\"contracts/ComptrollerInterface.sol\":{\"keccak256\":\"0xecfb84fabc9792d0b1c912886249c67bc42c39eb065d962d0b9a5f3736af5892\",\"urls\":[\"bzz-raw://711547ebc1a7f18b271118dd98276771953a9d7b3674716f67d247be9b907372\",\"dweb:/ipfs/QmbVZNvkBp8miByATrL6y5j8MePdcQ8uTAUZMpKrhpLgoa\"]},\"contracts/ComptrollerStorage.sol\":{\"keccak256\":\"0x83961d3c12984fe4afc72717fc44b2d868563d053a0eceda0cbf17ec6b255913\",\"urls\":[\"bzz-raw://ea667c2de43881f9be19f4f75dec348632273178965fc9b3655705d853b032bb\",\"dweb:/ipfs/QmZP6sbNFSgFZrAEvfRjhp1NtGj6U6Sea3JGiKG96AHyeP\"]},\"contracts/EIP20Interface.sol\":{\"keccak256\":\"0xee33b8b333743308a9153a59f22da2cadb22cedef4403fe039bf9e057c9c729a\",\"urls\":[\"bzz-raw://5427fdb941300d36a424da0a0a5800e3b2ca51c9c922831dbfce2f6637402b43\",\"dweb:/ipfs/QmTrvmLynqSUPjsGW2dpiQ91dSmn4xzccQiwr8qaBtyvjH\"]},\"contracts/EIP20NonStandardInterface.sol\":{\"keccak256\":\"0x469899442dd9640bfc2c670d404ad3027e48df5df8e5aeab0e25cc6b6aae05f5\",\"urls\":[\"bzz-raw://d8c4498abaf539eb413a2f1a916d75945adc8bd4ef437f8450cb67e07be3f38d\",\"dweb:/ipfs/QmaFpWfnhAMYW21rbT5PEszn4TGHdGU58Eq5AfZsCuapZ3\"]},\"contracts/ErrorReporter.sol\":{\"keccak256\":\"0xe9587478bc9efad203cab02b8aecae32828cfc9a271b13ae3c018e38e44aab32\",\"urls\":[\"bzz-raw://2eb34bdbbbc410fb401d50ddca44a7421a1d8191711c569ed5bcec1c1b07a05c\",\"dweb:/ipfs/QmYKNCYppyx3NGiwtjdLEmxUMgfnFBqT4pnvnhnBrPgrxS\"]},\"contracts/Exponential.sol\":{\"keccak256\":\"0xfda0e2b610541cf1cf316a0000c89a1069ccc21f1566affc0a058810e2b835d3\",\"urls\":[\"bzz-raw://fe319f184f1b5f27019d3d890124cd24e466d27153ac38eb9ff6b16efbad48b9\",\"dweb:/ipfs/Qmcev6jCmtdCviJxUQvUCmesPDShRDSvdfUEfvsqd4GEJA\"]},\"contracts/ExponentialNoError.sol\":{\"keccak256\":\"0x713a089f4bbcaec1d3924fc7d9a2154904a39f46cb6f25b713167dbe5f21623e\",\"urls\":[\"bzz-raw://d7108d68af7c5effd4272615ceba54e79e585f6b8be5aabc7602245c84c7b9e0\",\"dweb:/ipfs/QmQZo2XpxW7w5viVEg71mi9eKaAYD7HUqfCMB5yCCPVnc5\"]},\"contracts/IFuseFeeDistributor.sol\":{\"keccak256\":\"0xb5d287b8e05574d38bd5d0b413f44b4c5d312f28188573ac60abe78123fbd92c\",\"urls\":[\"bzz-raw://84c2bbf746a82aaa100bee90c7dd40411c723bded124bb1775bf72bf7fda8a2c\",\"dweb:/ipfs/QmToQzDtz9BV2tvU71YsfWjdaZu5qpP1xKFZ1TkQgubhDb\"]},\"contracts/InterestRateModel.sol\":{\"keccak256\":\"0x0cc0dbd1991e5dcdcff58b0c82a9471a0fb9df26763e5e7415e1d081b7332409\",\"urls\":[\"bzz-raw://f4d7936aefc43ea2724f0e472b8f1517f1ca40170258ab9d5bbd0862dd0c4f13\",\"dweb:/ipfs/QmfYjG1Sm3kNwbhomHCWhMqw9LvaJVWVzBe4Te5BHRbTQS\"]},\"contracts/PriceOracle.sol\":{\"keccak256\":\"0x62ba3a5ec8f06d456ab089d6ca7f9d14d3a6ce6814923271ca60a6990918fb41\",\"urls\":[\"bzz-raw://aa6d2f20efdd5389161eb15bdab98b5628dc8cd5354394bbed35bb14d3612506\",\"dweb:/ipfs/QmVfo4eCDuk8LMSywpBjZBxCv7zLCNsG6u3nyD1d4CYwsD\"]}},\"version\":1}"}},"contracts/CErc20DelegateUSDCAggregatorFix.sol":{"CErc20DelegateUSDCAggregatorFix":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"cashPrior","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"interestAccumulated","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"borrowIndex","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalBorrows","type":"uint256"}],"name":"AccrueInterest","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"borrower","type":"address"},{"indexed":false,"internalType":"uint256","name":"borrowAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"accountBorrows","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalBorrows","type":"uint256"}],"name":"Borrow","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"error","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"info","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"detail","type":"uint256"}],"name":"Failure","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"liquidator","type":"address"},{"indexed":false,"internalType":"address","name":"borrower","type":"address"},{"indexed":false,"internalType":"uint256","name":"repayAmount","type":"uint256"},{"indexed":false,"internalType":"address","name":"cTokenCollateral","type":"address"},{"indexed":false,"internalType":"uint256","name":"seizeTokens","type":"uint256"}],"name":"LiquidateBorrow","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"minter","type":"address"},{"indexed":false,"internalType":"uint256","name":"mintAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"mintTokens","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldAdminFeeMantissa","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newAdminFeeMantissa","type":"uint256"}],"name":"NewAdminFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract ComptrollerInterface","name":"oldComptroller","type":"address"},{"indexed":false,"internalType":"contract ComptrollerInterface","name":"newComptroller","type":"address"}],"name":"NewComptroller","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldFuseFeeMantissa","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newFuseFeeMantissa","type":"uint256"}],"name":"NewFuseFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldImplementation","type":"address"},{"indexed":false,"internalType":"address","name":"newImplementation","type":"address"}],"name":"NewImplementation","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract InterestRateModel","name":"oldInterestRateModel","type":"address"},{"indexed":false,"internalType":"contract InterestRateModel","name":"newInterestRateModel","type":"address"}],"name":"NewMarketInterestRateModel","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldReserveFactorMantissa","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newReserveFactorMantissa","type":"uint256"}],"name":"NewReserveFactor","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"redeemer","type":"address"},{"indexed":false,"internalType":"uint256","name":"redeemAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"redeemTokens","type":"uint256"}],"name":"Redeem","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"payer","type":"address"},{"indexed":false,"internalType":"address","name":"borrower","type":"address"},{"indexed":false,"internalType":"uint256","name":"repayAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"accountBorrows","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalBorrows","type":"uint256"}],"name":"RepayBorrow","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"benefactor","type":"address"},{"indexed":false,"internalType":"uint256","name":"addAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newTotalReserves","type":"uint256"}],"name":"ReservesAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"admin","type":"address"},{"indexed":false,"internalType":"uint256","name":"reduceAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newTotalReserves","type":"uint256"}],"name":"ReservesReduced","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":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"constant":false,"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"name":"_becomeImplementation","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"compLikeDelegatee","type":"address"}],"name":"_delegateCompLikeTo","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"_prepare","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"reduceAmount","type":"uint256"}],"name":"_reduceReserves","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"newAdminFeeMantissa","type":"uint256"}],"name":"_setAdminFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"implementation_","type":"address"},{"internalType":"bool","name":"allowResign","type":"bool"},{"internalType":"bytes","name":"becomeImplementationData","type":"bytes"}],"name":"_setImplementationSafe","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"contract InterestRateModel","name":"newInterestRateModel","type":"address"}],"name":"_setInterestRateModel","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"}],"name":"_setNameAndSymbol","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"newReserveFactorMantissa","type":"uint256"}],"name":"_setReserveFactor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"withdrawAmount","type":"uint256"}],"name":"_withdrawAdminFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"withdrawAmount","type":"uint256"}],"name":"_withdrawFuseFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"accrualBlockNumber","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"accrueInterest","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"adminFeeMantissa","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOfUnderlying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"borrowAmount","type":"uint256"}],"name":"borrow","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"borrowBalanceCurrent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"borrowBalanceStored","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"borrowIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"borrowRatePerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"comptroller","outputs":[{"internalType":"contract ComptrollerInterface","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"exchangeRateCurrent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"exchangeRateStored","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"fuseFeeMantissa","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getAccountSnapshot","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getCash","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"contract ComptrollerInterface","name":"comptroller_","type":"address"},{"internalType":"contract InterestRateModel","name":"interestRateModel_","type":"address"},{"internalType":"uint256","name":"initialExchangeRateMantissa_","type":"uint256"},{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"uint8","name":"decimals_","type":"uint8"},{"internalType":"uint256","name":"reserveFactorMantissa_","type":"uint256"},{"internalType":"uint256","name":"adminFeeMantissa_","type":"uint256"}],"name":"initialize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"underlying_","type":"address"},{"internalType":"contract ComptrollerInterface","name":"comptroller_","type":"address"},{"internalType":"contract InterestRateModel","name":"interestRateModel_","type":"address"},{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"uint256","name":"reserveFactorMantissa_","type":"uint256"},{"internalType":"uint256","name":"adminFeeMantissa_","type":"uint256"}],"name":"initialize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"interestRateModel","outputs":[{"internalType":"contract InterestRateModel","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isCEther","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isCToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"borrower","type":"address"},{"internalType":"uint256","name":"repayAmount","type":"uint256"},{"internalType":"contract CTokenInterface","name":"cTokenCollateral","type":"address"}],"name":"liquidateBorrow","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"mintAmount","type":"uint256"}],"name":"mint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"protocolSeizeShareMantissa","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"redeemTokens","type":"uint256"}],"name":"redeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"redeemAmount","type":"uint256"}],"name":"redeemUnderlying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"repayAmount","type":"uint256"}],"name":"repayBorrow","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"borrower","type":"address"},{"internalType":"uint256","name":"repayAmount","type":"uint256"}],"name":"repayBorrowBehalf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"reserveFactorMantissa","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"liquidator","type":"address"},{"internalType":"address","name":"borrower","type":"address"},{"internalType":"uint256","name":"seizeTokens","type":"uint256"}],"name":"seize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"supplyRatePerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalAdminFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalBorrows","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"totalBorrowsCurrent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalFuseFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalReserves","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"src","type":"address"},{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"underlying","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"6080604052615eb7806100136000396000f3fe6080604052600436106103765760003560e01c8063852a12e3116101d1578063ae9d70b011610102578063dc028ab1116100a0578063f5e3c4621161006f578063f5e3c46214610f69578063f8f9da2814610fac578063fca7820b14610fc1578063fe9c44ae14610feb57610376565b8063dc028ab114610ed1578063dd62ed3e14610ee6578063f2b3abbd14610f21578063f3fdb15a14610f5457610376565b8063c37f68e2116100dc578063c37f68e214610e0f578063c5ebeaec14610e68578063db006a7514610e92578063dbfe7c1914610ebc57610376565b8063ae9d70b014610da2578063b2a02ff114610db7578063bd6d894d14610dfa57610376565b8063a0712d681161016f578063a7b820df11610149578063a7b820df14610d15578063a9059cbb14610d3f578063aa5af0fd14610d78578063ac784ddc14610d8d57610376565b8063a0712d6814610b7a578063a0b0d28914610ba4578063a6afed9514610d0057610376565b806391dd36c6116101ab57806391dd36c614610ade57806395d89b4114610b0857806395dd919314610b1d578063a03dce8d14610b5057610376565b8063852a12e314610a8a5780638d02d9a114610ab45780638f840ddd14610ac957610376565b80633b1d21a2116102ab57806361feacff116102495780636f307dc3116102235780636f307dc3146109fa57806370a0823114610a0f57806373acee9814610a425780637f1e06be14610a5757610376565b806361feacff146109bb5780636752e702146109d05780636c540baf146109e557610376565b806356e677281161028557806356e67728146108d05780635c60da1b1461094b5780635fe3b5671461097c578063601a0bf11461099157610376565b80633b1d21a21461081457806347bd37181461082957806350d85b731461083e57610376565b8063182df0f5116103185780632608f818116102f25780632608f818146106b2578063313ce567146106eb57806334154d4c146107165780633af9e669146107e157610376565b8063182df0f5146106525780631db789441461066757806323b872dd1461066f57610376565b80630f8855e8116103545780630f8855e81461048e578063173b9904146105f557806317bfdfbc1461060a57806318160ddd1461063d57610376565b806306fdde031461037b578063095ea7b3146104055780630e75270214610452575b600080fd5b34801561038757600080fd5b50610390611000565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103ca5781810151838201526020016103b2565b50505050905090810190601f1680156103f75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561041157600080fd5b5061043e6004803603604081101561042857600080fd5b506001600160a01b03813516906020013561108b565b604080519115158252519081900360200190f35b34801561045e57600080fd5b5061047c6004803603602081101561047557600080fd5b50356110f8565b60408051918252519081900360200190f35b34801561049a57600080fd5b506105f360048036036101008110156104b257600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b8111156104ec57600080fd5b8201836020820111156104fe57600080fd5b803590602001918460018302840111600160201b8311171561051f57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561057157600080fd5b82018360208201111561058357600080fd5b803590602001918460018302840111600160201b831117156105a457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505060ff833516935050506020810135906040013561110e565b005b34801561060157600080fd5b5061047c6113bc565b34801561061657600080fd5b5061047c6004803603602081101561062d57600080fd5b50356001600160a01b03166113c2565b34801561064957600080fd5b5061047c61143e565b34801561065e57600080fd5b5061047c611444565b6105f36114a7565b34801561067b57600080fd5b5061043e6004803603606081101561069257600080fd5b506001600160a01b038135811691602081013590911690604001356114a9565b3480156106be57600080fd5b5061047c600480360360408110156106d557600080fd5b506001600160a01b0381351690602001356114d7565b3480156106f757600080fd5b506107006114ed565b6040805160ff9092168252519081900360200190f35b34801561072257600080fd5b506105f36004803603604081101561073957600080fd5b810190602081018135600160201b81111561075357600080fd5b82018360208201111561076557600080fd5b803590602001918460018302840111600160201b8311171561078657600080fd5b919390929091602081019035600160201b8111156107a357600080fd5b8201836020820111156107b557600080fd5b803590602001918460018302840111600160201b831117156107d657600080fd5b5090925090506114f6565b3480156107ed57600080fd5b5061047c6004803603602081101561080457600080fd5b50356001600160a01b0316611562565b34801561082057600080fd5b5061047c611618565b34801561083557600080fd5b5061047c611627565b34801561084a57600080fd5b506105f36004803603606081101561086157600080fd5b6001600160a01b03823516916020810135151591810190606081016040820135600160201b81111561089257600080fd5b8201836020820111156108a457600080fd5b803590602001918460018302840111600160201b831117156108c557600080fd5b50909250905061162d565b3480156108dc57600080fd5b506105f3600480360360208110156108f357600080fd5b810190602081018135600160201b81111561090d57600080fd5b82018360208201111561091f57600080fd5b803590602001918460018302840111600160201b8311171561094057600080fd5b5090925090506116b6565b34801561095757600080fd5b506109606117c9565b604080516001600160a01b039092168252519081900360200190f35b34801561098857600080fd5b506109606117d8565b34801561099d57600080fd5b5061047c600480360360208110156109b457600080fd5b50356117e7565b3480156109c757600080fd5b5061047c611838565b3480156109dc57600080fd5b5061047c61183e565b3480156109f157600080fd5b5061047c611849565b348015610a0657600080fd5b5061096061184f565b348015610a1b57600080fd5b5061047c60048036036020811015610a3257600080fd5b50356001600160a01b031661185e565b348015610a4e57600080fd5b5061047c611879565b348015610a6357600080fd5b506105f360048036036020811015610a7a57600080fd5b50356001600160a01b03166118ec565b348015610a9657600080fd5b5061047c60048036036020811015610aad57600080fd5b5035611991565b348015610ac057600080fd5b5061047c61199c565b348015610ad557600080fd5b5061047c6119a2565b348015610aea57600080fd5b5061047c60048036036020811015610b0157600080fd5b50356119a8565b348015610b1457600080fd5b506103906119e5565b348015610b2957600080fd5b5061047c60048036036020811015610b4057600080fd5b50356001600160a01b0316611a40565b348015610b5c57600080fd5b5061047c60048036036020811015610b7357600080fd5b5035611aa4565b348015610b8657600080fd5b5061047c60048036036020811015610b9d57600080fd5b5035611ae1565b348015610bb057600080fd5b506105f3600480360360e0811015610bc757600080fd5b6001600160a01b0382358116926020810135821692604082013590921691810190608081016060820135600160201b811115610c0257600080fd5b820183602082011115610c1457600080fd5b803590602001918460018302840111600160201b83111715610c3557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115610c8757600080fd5b820183602082011115610c9957600080fd5b803590602001918460018302840111600160201b83111715610cba57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505082359350505060200135611aed565b348015610d0c57600080fd5b5061047c611c06565b348015610d2157600080fd5b5061047c60048036036020811015610d3857600080fd5b5035611dcb565b348015610d4b57600080fd5b5061043e60048036036040811015610d6257600080fd5b506001600160a01b038135169060200135611e08565b348015610d8457600080fd5b5061047c611e35565b348015610d9957600080fd5b5061043e611e3b565b348015610dae57600080fd5b5061047c611e40565b348015610dc357600080fd5b5061047c60048036036060811015610dda57600080fd5b506001600160a01b03813581169160208101359091169060400135611ef8565b348015610e0657600080fd5b5061047c611f1c565b348015610e1b57600080fd5b50610e4260048036036020811015610e3257600080fd5b50356001600160a01b0316611f90565b604080519485526020850193909352838301919091526060830152519081900360800190f35b348015610e7457600080fd5b5061047c60048036036020811015610e8b57600080fd5b5035612025565b348015610e9e57600080fd5b5061047c60048036036020811015610eb557600080fd5b5035612030565b348015610ec857600080fd5b5061047c61203b565b348015610edd57600080fd5b5061047c612041565b348015610ef257600080fd5b5061047c60048036036040811015610f0957600080fd5b506001600160a01b0381358116916020013516612047565b348015610f2d57600080fd5b5061047c60048036036020811015610f4457600080fd5b50356001600160a01b0316612072565b348015610f6057600080fd5b506109606120ac565b348015610f7557600080fd5b5061047c60048036036060811015610f8c57600080fd5b506001600160a01b038135811691602081013591604090910135166120bb565b348015610fb857600080fd5b5061047c6120d3565b348015610fcd57600080fd5b5061047c60048036036020811015610fe457600080fd5b5035612148565b348015610ff757600080fd5b5061043e612185565b6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156110835780601f1061105857610100808354040283529160200191611083565b820191906000526020600020905b81548152906001019060200180831161106657829003601f168201915b505050505081565b3360008181526013602090815260408083206001600160a01b03871680855290835281842086905581518681529151939493909284927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a360019150505b92915050565b6000806111048361218a565b509150505b919050565b3373a731585ab05fc9f83555cf9bff8f58ee94e18f85146111605760405162461bcd60e51b8152600401808060200182810382526029815260200180615d6d6029913960400191505060405180910390fd5b600b541580156111705750600c54155b6111ab5760405162461bcd60e51b8152600401808060200182810382526023815260200180615c5a6023913960400191505060405180910390fd5b6007869055856111ec5760405162461bcd60e51b8152600401808060200182810382526030815260200180615c7d6030913960400191505060405180910390fd5b60006111f7896121ed565b9050801561124c576040805162461bcd60e51b815260206004820152601a60248201527f73657474696e6720636f6d7074726f6c6c6572206661696c6564000000000000604482015290519081900360640190fd5b611254612320565b600b55670de0b6b3a7640000600c5561126c88612324565b905080156112ab5760405162461bcd60e51b8152600401808060200182810382526022815260200180615cda6022913960400191505060405180910390fd5b85516112be906002906020890190615a4a565b5084516112d2906003906020880190615a4a565b506004805460ff191660ff86161790556112eb8361262a565b90508015611340576040805162461bcd60e51b815260206004820152601d60248201527f73657474696e67207265736572766520666163746f72206661696c6564000000604482015290519081900360640190fd5b611349826126e3565b9050801561139e576040805162461bcd60e51b815260206004820152601860248201527f73657474696e672061646d696e20666565206661696c65640000000000000000604482015290519081900360640190fd5b50506001805460ff60b01b1916600160b01b17905550505050505050565b600a5481565b6000806113ce81612808565b60006113d8611c06565b14611423576040805162461bcd60e51b81526020600482015260166024820152751858d8dc9d59481a5b9d195c995cdd0819985a5b195960521b604482015290519081900360640190fd5b61142c83611a40565b91505b611438816128d1565b50919050565b60115481565b600080600061145161293c565b9092509050600082600381111561146457fe5b146114a05760405162461bcd60e51b8152600401808060200182810382526035815260200180615e1a6035913960400191505060405180910390fd5b9150505b90565b565b6000806114b581612808565b60006114c3338787876129fc565b1491506114cf816128d1565b509392505050565b6000806114e48484612c88565b50949350505050565b60045460ff1681565b6114fe612ced565b611542576040805162461bcd60e51b815260206004820152601060248201526f31b0b63632b9103737ba1030b236b4b760811b604482015290519081900360640190fd5b61154e60028585615ac4565b5061155b60038383615ac4565b5050505050565b600061156c615b32565b604051806020016040528061157f611f1c565b90526001600160a01b0384166000908152601260205260408120549192509081906115ab908490612e68565b909250905060008260038111156115be57fe5b14611610576040805162461bcd60e51b815260206004820152601f60248201527f62616c616e636520636f756c64206e6f742062652063616c63756c6174656400604482015290519081900360640190fd5b949350505050565b6000611622612ebc565b905090565b600d5481565b611635612ced565b61166f576040805162461bcd60e51b815260206004820152600660248201526510b0b236b4b760d11b604482015290519081900360640190fd5b6116b0848484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612f0a92505050565b50505050565b7366f4856f1bbd1eb09e1c8d9d646f5a3a193da56973cae4210e6676727ea4e0fd9ba5dfb95831356a16333014806116f157506116f1612ced565b61172a576040805162461bcd60e51b815260206004820152600560248201526410b9b2b63360d91b604482015290519081900360640190fd5b6000611734611c06565b14611770576040805162461bcd60e51b81526020600482015260076024820152662161636372756560c81b604482015290519081900360640190fd5b6001600160a01b0380831660008181526012602090815260408083208054908490559486168084529281902085905580518581529051929392600080516020615d96833981519152929181900390910190a35050505050565b6000546001600160a01b031681565b6005546001600160a01b031681565b6000806117f381612808565b60006117fd611c06565b905080156118235761181b81601181111561181457fe5b603b613126565b92505061142f565b61182c8461318c565b925050611438816128d1565b600f5481565b666379da05b6000081565b600b5481565b6015546001600160a01b031681565b6001600160a01b031660009081526012602052604090205490565b60008061188581612808565b600061188f611c06565b146118da576040805162461bcd60e51b81526020600482015260166024820152751858d8dc9d59481a5b9d195c995cdd0819985a5b195960521b604482015290519081900360640190fd5b600d5491506118e8816128d1565b5090565b6118f4612ced565b61192f5760405162461bcd60e51b815260040180806020018281038252602d815260200180615cad602d913960400191505060405180910390fd5b601554604080516317066a5760e21b81526001600160a01b03848116600483015291519190921691635c19a95c91602480830192600092919082900301818387803b15801561197d57600080fd5b505af115801561155b573d6000803e3d6000fd5b60006110f282613258565b60085481565b600e5481565b6000806119b481612808565b60006119be611c06565b905080156119dc5761181b8160118111156119d557fe5b6052613126565b61182c846126e3565b6003805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156110835780601f1061105857610100808354040283529160200191611083565b6000806000611a4e84613298565b90925090506000826003811115611a6157fe5b14611a9d5760405162461bcd60e51b8152600401808060200182810382526037815260200180615cfc6037913960400191505060405180910390fd5b9392505050565b600080611ab081612808565b6000611aba611c06565b90508015611ad85761181b816011811115611ad157fe5b6033613126565b61182c8461334c565b600080611104836133cd565b60006702c68af0bb14000090506000886001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015611b3557600080fd5b505afa158015611b49573d6000803e3d6000fd5b505050506040513d6020811015611b5f57600080fd5b50519050611b738888848989868a8a61110e565b601580546001600160a01b0319166001600160a01b038b81169190911791829055604080516318160ddd60e01b8152905192909116916318160ddd91600480820192602092909190829003018186803b158015611bcf57600080fd5b505afa158015611be3573d6000803e3d6000fd5b505050506040513d6020811015611bf957600080fd5b5050505050505050505050565b600080611c11612320565b905080600b541415611c275760009150506114a4565b6000611c31612ebc565b90506000600660009054906101000a90046001600160a01b03166001600160a01b03166315f2405383600d54611c76600e54611c71600f5460105461340d565b61340d565b6040518463ffffffff1660e01b815260040180848152602001838152602001828152602001935050505060206040518083038186803b158015611cb857600080fd5b505afa158015611ccc573d6000803e3d6000fd5b505050506040513d6020811015611ce257600080fd5b5051905065048c27395000811115611d41576040805162461bcd60e51b815260206004820152601c60248201527f626f72726f772072617465206973206162737572646c79206869676800000000604482015290519081900360640190fd5b600080611d5085600b54613443565b90925090506000826003811115611d6357fe5b14611db5576040805162461bcd60e51b815260206004820152601f60248201527f636f756c64206e6f742063616c63756c61746520626c6f636b2064656c746100604482015290519081900360640190fd5b611dc185858584613466565b9550505050505090565b600080611dd781612808565b6000611de1611c06565b90508015611dff5761181b816011811115611df857fe5b6037613126565b61182c8461367e565b600080611e1481612808565b6000611e22333387876129fc565b149150611e2e816128d1565b5092915050565b600c5481565b600081565b6006546000906001600160a01b031663b8168816611e5c612ebc565b600d54611e73600e54611c71600f5460105461340d565b600854600954600a5401016040518563ffffffff1660e01b81526004018085815260200184815260200183815260200182815260200194505050505060206040518083038186803b158015611ec757600080fd5b505afa158015611edb573d6000803e3d6000fd5b505050506040513d6020811015611ef157600080fd5b5051905090565b60006001611f0581612808565b611f1133868686613766565b91506114cf816128d1565b600080611f2881612808565b6000611f32611c06565b14611f7d576040805162461bcd60e51b81526020600482015260166024820152751858d8dc9d59481a5b9d195c995cdd0819985a5b195960521b604482015290519081900360640190fd5b611f85611444565b91506118e8816128d1565b6001600160a01b038116600090815260126020526040812054819081908190818080611fbb89613298565b935090506000816003811115611fcd57fe5b14611feb5760095b97506000965086955085945061201e9350505050565b611ff361293c565b92509050600081600381111561200557fe5b14612011576009611fd5565b5060009650919450925090505b9193509193565b60006110f282613b45565b60006110f282613b83565b60095481565b60105481565b6001600160a01b03918216600090815260136020908152604080832093909416825291909152205490565b60008061207d611c06565b905080156120a35761209b81601181111561209457fe5b604b613126565b915050611109565b611a9d83612324565b6006546001600160a01b031681565b6000806120c9858585613bbc565b5095945050505050565b6006546000906001600160a01b03166315f240536120ef612ebc565b600d54612106600e54611c71600f5460105461340d565b6040518463ffffffff1660e01b815260040180848152602001838152602001828152602001935050505060206040518083038186803b158015611ec757600080fd5b60008061215481612808565b600061215e611c06565b9050801561217c5761181b81601181111561217557fe5b6059613126565b61182c8461262a565b600181565b600080600061219881612808565b60006121a2611c06565b905080156121cd576121c08160118111156121b957fe5b6041613126565b9350600092506121de9050565b6121d8333387613ca8565b93509350505b6121e7816128d1565b50915091565b600080600560009054906101000a90046001600160a01b03169050826001600160a01b0316627e3dd26040518163ffffffff1660e01b815260040160206040518083038186803b15801561224057600080fd5b505afa158015612254573d6000803e3d6000fd5b505050506040513d602081101561226a57600080fd5b50516122bd576040805162461bcd60e51b815260206004820152601c60248201527f6d61726b6572206d6574686f642072657475726e65642066616c736500000000604482015290519081900360640190fd5b600580546001600160a01b0319166001600160a01b03858116918217909255604080519284168352602083019190915280517f7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d9281900390910190a16000611a9d565b4390565b60008061232f612ced565b61233f5761209b6001604d613126565b612347612320565b600b541461235b5761209b600a604c613126565b600660009054906101000a90046001600160a01b03169050826001600160a01b0316632191f92a6040518163ffffffff1660e01b815260040160206040518083038186803b1580156123ac57600080fd5b505afa1580156123c0573d6000803e3d6000fd5b505050506040513d60208110156123d657600080fd5b5051612429576040805162461bcd60e51b815260206004820152601c60248201527f6d61726b6572206d6574686f642072657475726e65642066616c736500000000604482015290519081900360640190fd5b600680546001600160a01b0319166001600160a01b03858116918217909255604080519284168352602083019190915280517fedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f9269281900390910190a16001600160a01b0381161561255b5760408051600481526024810182526020810180516001600160e01b0316636cc1140b60e11b178152915181516001600160a01b0385169382918083835b602083106124f05780518252601f1990920191602091820191016124d1565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612552576040519150601f19603f3d011682016040523d82523d6000602084013e612557565b606091505b5050505b60408051600481526024810182526020810180516001600160e01b031663742a137b60e11b178152915181516001600160a01b0387169382918083835b602083106125b75780518252601f199092019160209182019101612598565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612619576040519150601f19603f3d011682016040523d82523d6000602084013e61261e565b606091505b5060009150611a9d9050565b6000612634612ced565b61264b576126446001605a613126565b9050611109565b612653612320565b600b541461266757612644600a605b613126565b670de0b6b3a764000061268761267f8460085461340d565b60095461340d565b1115612699576126446002605c613126565b600a805490839055604080518281526020810185905281517faaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460929181900390910190a16000611a9d565b60006126ed612320565b600b541461270157612644600a6054613126565b6000198214156127115760085491505b600061271b613ff8565b9050670de0b6b3a764000061273b612735600a548661340d565b8361340d565b111561274d5761209b60026055613126565b82600854146127b35761275e612ced565b61276e5761209b60016053613126565b6008805490849055604080518281526020810186905281517fcdd0b588250e1398549f79cfdb8217c186688822905d6715b0834ea1c865594a929181900390910190a1505b8060095414612801576009805490829055604080518281526020810184905281517f92eef861b6533b7d3417f39c2ad7b460eed4e88a32fa3604f30e718b7602e7dc929181900390910190a1505b6000611a9d565b600154600160b01b900460ff16612853576040805162461bcd60e51b815260206004820152600a6024820152691c994b595b9d195c995960b21b604482015290519081900360640190fd5b806128c157600560009054906101000a90046001600160a01b03166001600160a01b031663c90c20b16040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156128a857600080fd5b505af11580156128bc573d6000803e3d6000fd5b505050505b506001805460ff60b01b19169055565b6001805460ff60b01b1916600160b01b1790558061293957600560009054906101000a90046001600160a01b03166001600160a01b031663632e51426040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561197d57600080fd5b50565b601154600090819080612957575050600754600091506129f8565b6000612961612ebc565b9050600061296d615b32565b600061298f84600d5461298a600e54611c71600f5460105461340d565b614047565b9350905060008160038111156129a157fe5b146129b6579550600094506129f89350505050565b6129c08386614093565b9250905060008160038111156129d257fe5b146129e7579550600094506129f89350505050565b50516000955093506129f892505050565b9091565b600554604080516317b9b84b60e31b81523060048201526001600160a01b03868116602483015285811660448301526064820185905291516000938493169163bdcdc25891608480830192602092919082900301818787803b158015612a6157600080fd5b505af1158015612a75573d6000803e3d6000fd5b505050506040513d6020811015612a8b57600080fd5b505190508015612aaa57612aa26003605d83614143565b915050611610565b836001600160a01b0316856001600160a01b03161415612ad057612aa26002605e613126565b60006001600160a01b038781169087161415612aef5750600019612b17565b506001600160a01b038086166000908152601360209081526040808320938a16835292905220545b600080600080612b278589613443565b90945092506000846003811115612b3a57fe5b14612b5857612b4b6009605e613126565b9650505050505050611610565b6001600160a01b038a16600090815260126020526040902054612b7b9089613443565b90945091506000846003811115612b8e57fe5b14612b9f57612b4b6009605f613126565b6001600160a01b038916600090815260126020526040902054612bc290896141cc565b90945090506000846003811115612bd557fe5b14612be657612b4b60096060613126565b6001600160a01b03808b16600090815260126020526040808220859055918b168152208190556000198514612c3e576001600160a01b03808b166000908152601360209081526040808320938f168352929052208390555b886001600160a01b03168a6001600160a01b0316600080516020615d968339815191528a6040518082815260200191505060405180910390a35060009a9950505050505050505050565b6000806000612c9681612808565b6000612ca0611c06565b90508015612ccb57612cbe816011811115612cb757fe5b6040613126565b935060009250612cdc9050565b612cd6338787613ca8565b93509350505b612ce5816128d1565b509250929050565b600554604080516303e1469160e61b815290516000926001600160a01b031691829163f851a44091600480820192602092909190829003018186803b158015612d3557600080fd5b505afa158015612d49573d6000803e3d6000fd5b505050506040513d6020811015612d5f57600080fd5b50516001600160a01b031633148015612dd95750806001600160a01b0316630a755ec26040518163ffffffff1660e01b815260040160206040518083038186803b158015612dac57600080fd5b505afa158015612dc0573d6000803e3d6000fd5b505050506040513d6020811015612dd657600080fd5b50515b806114a057503373a731585ab05fc9f83555cf9bff8f58ee94e18f851480156114a05750806001600160a01b0316632f1069ba6040518163ffffffff1660e01b815260040160206040518083038186803b158015612e3657600080fd5b505afa158015612e4a573d6000803e3d6000fd5b505050506040513d6020811015612e6057600080fd5b505191505090565b6000806000612e75615b32565b612e7f86866141f2565b90925090506000826003811115612e9257fe5b14612ea35750915060009050612eb5565b6000612eae8261425a565b9350935050505b9250929050565b601554604080516370a0823160e01b815230600482015290516000926001600160a01b03169182916370a0823191602480820192602092909190829003018186803b158015612e3657600080fd5b600054604080516338e6a07360e11b81526001600160a01b039283166004820152918516602483015283151560448301525173a731585ab05fc9f83555cf9bff8f58ee94e18f85916371cd40e6916064808301926020929190829003018186803b158015612f7757600080fd5b505afa158015612f8b573d6000803e3d6000fd5b505050506040513d6020811015612fa157600080fd5b5051612fdc576040805162461bcd60e51b8152602060048201526005602482015264085a5b5c1b60da1b604482015290519081900360640190fd5b8115612fea57612fea614269565b600080546001600160a01b038581166001600160a01b0319831617835560405160206024820181815286516044840152865193909416946130d794309488949193849360649093019290860191908190849084905b8381101561305757818101518382015260200161303f565b50505050905090810190601f1680156130845780820380516001836020036101000a031916815260200191505b5060408051601f19818403018152918152602080830180516001600160e01b0316630adccee560e31b17905281518083019092526007825266216265636f6d6560c81b90820152909350915061426e9050565b50600054604080516001600160a01b038085168252909216602083015280517fd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a9281900390910190a150505050565b60007f45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa083601181111561315557fe5b83606381111561316157fe5b604080519283526020830191909152600082820152519081900360600190a1826011811115611a9d57fe5b600080613197612ced565b6131a75761209b6001603c613126565b6131af612320565b600b54146131c35761209b600a603e613126565b826131cc612ebc565b10156131de5761209b600e603d613126565b600e548311156131f45761209b6002603f613126565b613200600e54846143bd565b600e819055905061321133846143f7565b604080513381526020810185905280820183905290517f3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e9181900360600190a16000611a9d565b60008061326481612808565b600061326e611c06565b9050801561328c5761181b81601181111561328557fe5b602a613126565b61182c3360008661447c565b6001600160a01b0381166000908152601460205260408120805482918291829182916132cf57506000945084935061334792505050565b6132df8160000154600c5461494c565b909450925060008460038111156132f257fe5b14613307575091935060009250613347915050565b61331583826001015461498b565b9094509150600084600381111561332857fe5b1461333d575091935060009250613347915050565b5060009450925050505b915091565b600080613357612320565b600b541461336b5761209b600a6035613126565b82613374612ebc565b10156133865761209b600e6034613126565b60105483111561339c5761209b60026036613126565b6133a8601054846143bd565b6010819055905061280173a731585ab05fc9f83555cf9bff8f58ee94e18f85846143f7565b60008060006133db81612808565b60006133e5611c06565b90508015613403576121c08160118111156133fc57fe5b6020613126565b6121d833866149b6565b6000611a9d8383604051806040016040528060118152602001706164646974696f6e206f766572666c6f7760781b815250614d32565b60008083831161345a575060009050818303612eb5565b50600390506000612eb5565b6000613470615b32565b61348860405180602001604052808681525084614d87565b9050600061349882600d54614db1565b905060006134a882600d5461340d565b905060006134c96040518060200160405280600a5481525084600e54614dd0565b905060006134ea604051806020016040528060095481525085601054614dd0565b9050600061350b604051806020016040528060085481525086600f54614dd0565b9050600061351e87600c54600c54614dd0565b600b8d9055600c819055600d869055600e8590556010849055600f839055604080518d8152602081018990528082018390526060810188905290519192507f4dec04e750ca11537cabcd8a9eab06494de08da3735bc8871cd41250e190bc04919081900360800190a16006546040805160248082018e905282518083039091018152604490910182526020810180516001600160e01b0316635efd023360e11b178152915181516001600160a01b0390941693919290918291908083835b602083106135fb5780518252601f1990920191602091820191016135dc565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461365d576040519150601f19603f3d011682016040523d82523d6000602084013e613662565b606091505b506000915061366e9050565b9c9b505050505050505050505050565b600080613689612320565b600b541461369d5761209b600a6039613126565b826136a6612ebc565b10156136b85761209b600e6038613126565b600f548311156136ce5761209b6002603a613126565b6136da600f54846143bd565b905080600f81905550612801600560009054906101000a90046001600160a01b03166001600160a01b031663f851a4406040518163ffffffff1660e01b815260040160206040518083038186803b15801561373457600080fd5b505afa158015613748573d6000803e3d6000fd5b505050506040513d602081101561375e57600080fd5b5051846143f7565b6005546040805163d02f735160e01b81523060048201526001600160a01b038781166024830152868116604483015285811660648301526084820185905291516000938493169163d02f73519160a480830192602092919082900301818787803b1580156137d357600080fd5b505af11580156137e7573d6000803e3d6000fd5b505050506040513d60208110156137fd57600080fd5b50519050801561381457612aa26003601d83614143565b846001600160a01b0316846001600160a01b0316141561383a57612aa26006601e613126565b613842615b45565b6001600160a01b0385166000908152601260205260409020546138659085613443565b602083018190528282600381111561387957fe5b600381111561388457fe5b905250600090508151600381111561389857fe5b146138c2576138b96009601c836000015160038111156138b457fe5b614143565b92505050611610565b6138e1846040518060200160405280666379da05b60000815250614df8565b608082018190526138f39085906143bd565b606082015261390061293c565b60c083018190528282600381111561391457fe5b600381111561391f57fe5b905250600090508151600381111561393357fe5b14613985576040805162461bcd60e51b815260206004820152601860248201527f65786368616e67652072617465206d617468206572726f720000000000000000604482015290519081900360640190fd5b6139a560405180602001604052808360c001518152508260800151614db1565b60a08201819052600e546139b89161340d565b60e082015260115460808201516139cf91906143bd565b6101008201526001600160a01b03861660009081526012602052604090205460608201516139fd91906141cc565b6040830181905282826003811115613a1157fe5b6003811115613a1c57fe5b9052506000905081516003811115613a3057fe5b14613a4c576138b96009601b836000015160038111156138b457fe5b60e0810151600e556101008101516011556020808201516001600160a01b0380881660008181526012855260408082209490945583860151928b16808252908490209290925560608501518351908152925191939092600080516020615d96833981519152929081900390910190a36080810151604080519182525130916001600160a01b03881691600080516020615d968339815191529181900360200190a360a081015160e082015160408051308152602081019390935282810191909152517fa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc59181900360600190a16000979650505050505050565b600080613b5181612808565b6000613b5b611c06565b90508015613b795761181b816011811115613b7257fe5b600a613126565b61182c3385614e20565b600080613b8f81612808565b6000613b99611c06565b90508015613bb05761181b81601181111561328557fe5b61182c3385600061447c565b6000806000613bca81612808565b6000613bd4611c06565b90508015613bff57613bf2816011811115613beb57fe5b6011613126565b935060009250613c969050565b846001600160a01b031663a6afed956040518163ffffffff1660e01b8152600401602060405180830381600087803b158015613c3a57600080fd5b505af1158015613c4e573d6000803e3d6000fd5b505050506040513d6020811015613c6457600080fd5b505190508015613c8457613bf2816011811115613c7d57fe5b6012613126565b613c9033888888615166565b93509350505b613c9f816128d1565b50935093915050565b60055460408051631200453160e11b81523060048201526001600160a01b0386811660248301528581166044830152606482018590529151600093849384939116916324008a629160848082019260209290919082900301818787803b158015613d1157600080fd5b505af1158015613d25573d6000803e3d6000fd5b505050506040513d6020811015613d3b57600080fd5b505190508015613d5f57613d526003604383614143565b925060009150613ff09050565b613d67612320565b600b5414613d7b57613d52600a6044613126565b613d83615b92565b6001600160a01b0386166000908152601460205260409020600101546060820152613dad86613298565b6080830181905260208301826003811115613dc457fe5b6003811115613dcf57fe5b9052506000905081602001516003811115613de657fe5b14613e1057613e0260096042836020015160038111156138b457fe5b935060009250613ff0915050565b600019851415613e295760808101516040820152613e31565b604081018590525b613e3f878260400151615658565b60e082018190526080820151613e5491613443565b60a0830181905260208301826003811115613e6b57fe5b6003811115613e7657fe5b9052506000905081602001516003811115613e8d57fe5b14613ec95760405162461bcd60e51b815260040180806020018281038252603a815260200180615d33603a913960400191505060405180910390fd5b613ed9600d548260e00151613443565b60c0830181905260208301826003811115613ef057fe5b6003811115613efb57fe5b9052506000905081602001516003811115613f1257fe5b14613f4e5760405162461bcd60e51b8152600401808060200182810382526031815260200180615db66031913960400191505060405180910390fd5b60a080820180516001600160a01b03808a16600081815260146020908152604091829020948555600c5460019095019490945560c0870151600d81905560e088015195518251948f16855294840192909252828101949094526060820192909252608081019190915290517f1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1929181900390910190a160e00151600093509150505b935093915050565b600073a731585ab05fc9f83555cf9bff8f58ee94e18f856001600160a01b031663dd86fea16040518163ffffffff1660e01b815260040160206040518083038186803b158015611ec757600080fd5b60008060008061405787876141cc565b9092509050600082600381111561406a57fe5b1461407b5750915060009050613ff0565b6140858186613443565b935093505050935093915050565b600061409d615b32565b6000806140b286670de0b6b3a764000061494c565b909250905060008260038111156140c557fe5b146140e457506040805160208101909152600081529092509050612eb5565b6000806140f1838861498b565b9092509050600082600381111561410457fe5b1461412657506040805160208101909152600081529094509250612eb5915050565b604080516020810190915290815260009890975095505050505050565b60007f45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa084601181111561417257fe5b84606381111561417e57fe5b604080519283526020830191909152818101859052519081900360600190a160038460118111156141ab57fe5b146141c1578360118111156141bc57fe5b611610565b506103e80192915050565b6000808383018481106141e457600092509050612eb5565b506002915060009050612eb5565b60006141fc615b32565b60008061420d86600001518661494c565b9092509050600082600381111561422057fe5b1461423f57506040805160208101909152600081529092509050612eb5565b60408051602081019091529081526000969095509350505050565b51670de0b6b3a7640000900490565b6114a7565b606060006060856001600160a01b0316856040518082805190602001908083835b602083106142ae5780518252601f19909201916020918201910161428f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614310576040519150601f19603f3d011682016040523d82523d6000602084013e614315565b606091505b5091509150816143b45780511561432f5780518082602001fd5b8360405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614379578181015183820152602001614361565b50505050905090810190601f1680156143a65780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b95945050505050565b6000611a9d8383604051806040016040528060158152602001747375627472616374696f6e20756e646572666c6f7760581b815250615835565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091018252602081810180516001600160e01b031663a9059cbb60e01b1790528251808401909352601983527f544f4b454e5f5452414e534645525f4f55545f4641494c454400000000000000908301526144789161588f565b5050565b6000821580614489575081155b6144c45760405162461bcd60e51b8152600401808060200182810382526034815260200180615e4f6034913960400191505060405180910390fd5b6144cc615bd8565b6144d461293c565b60408301819052602083018260038111156144eb57fe5b60038111156144f657fe5b905250600090508160200151600381111561450d57fe5b14614531576145296009602e836020015160038111156138b457fe5b915050611a9d565b83156145b25760608101849052604080516020810182529082015181526145589085612e68565b608083018190526020830182600381111561456f57fe5b600381111561457a57fe5b905250600090508160200151600381111561459157fe5b146145ad576145296009602c836020015160038111156138b457fe5b61462b565b6145ce836040518060200160405280846040015181525061591c565b60608301819052602083018260038111156145e557fe5b60038111156145f057fe5b905250600090508160200151600381111561460757fe5b14614623576145296009602d836020015160038111156138b457fe5b608081018390525b60055460608201516040805163eabe7d9160e01b81523060048201526001600160a01b03898116602483015260448201939093529051600093929092169163eabe7d919160648082019260209290919082900301818787803b15801561469057600080fd5b505af11580156146a4573d6000803e3d6000fd5b505050506040513d60208110156146ba57600080fd5b5051905080156146da576146d16003602b83614143565b92505050611a9d565b6146e2612320565b600b54146146f6576146d1600a602f613126565b6147066011548360600151613443565b60a084018190526020840182600381111561471d57fe5b600381111561472857fe5b905250600090508260200151600381111561473f57fe5b1461475b576146d160096031846020015160038111156138b457fe5b6001600160a01b03861660009081526012602052604090205460608301516147839190613443565b60c084018190526020840182600381111561479a57fe5b60038111156147a557fe5b90525060009050826020015160038111156147bc57fe5b146147d8576146d160096030846020015160038111156138b457fe5b81608001516147e5612ebc565b10156147f7576146d1600e6032613126565b60a082015160115560c08201516001600160a01b038716600090815260126020526040902055608082015161482d9087906143f7565b6060820151604080519182525130916001600160a01b03891691600080516020615d968339815191529181900360200190a36080820151606080840151604080516001600160a01b038b168152602081019490945283810191909152517fe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a9299281900390910190a160055460808301516060840151604080516351dff98960e01b81523060048201526001600160a01b038b81166024830152604482019490945260648101929092525191909216916351dff98991608480830192600092919082900301818387803b15801561492157600080fd5b505af1158015614935573d6000803e3d6000fd5b5060009250614942915050565b9695505050505050565b6000808361495f57506000905080612eb5565b8383028385828161496c57fe5b041461498057506002915060009050612eb5565b600092509050612eb5565b6000808261499f5750600190506000612eb5565b60008385816149aa57fe5b04915091509250929050565b60055460408051634ef4c3e160e01b81523060048201526001600160a01b03858116602483015260448201859052915160009384938493911691634ef4c3e19160648082019260209290919082900301818787803b158015614a1757600080fd5b505af1158015614a2b573d6000803e3d6000fd5b505050506040513d6020811015614a4157600080fd5b505190508015614a6557614a586003602183614143565b925060009150612eb59050565b614a6d612320565b600b5414614a8157614a58600a6024613126565b614a89615bd8565b614a9161293c565b6040830181905260208301826003811115614aa857fe5b6003811115614ab357fe5b9052506000905081602001516003811115614aca57fe5b14614af457614ae660096023836020015160038111156138b457fe5b935060009250612eb5915050565b614afe8686615658565b60c0820181905260408051602081018252908301518152614b1f919061591c565b6060830181905260208301826003811115614b3657fe5b6003811115614b4157fe5b9052506000905081602001516003811115614b5857fe5b14614baa576040805162461bcd60e51b815260206004820181905260248201527f4d494e545f45584348414e47455f43414c43554c4154494f4e5f4641494c4544604482015290519081900360640190fd5b614bba601154826060015161340d565b60808201526001600160a01b0386166000908152601260205260409020546060820151614be7919061340d565b60a0820181905260808201516011556001600160a01b0387166000818152601260209081526040918290209390935560c084015160608086015183519485529484019190915282820193909352517f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f929181900390910190a1606081015160408051918252516001600160a01b038816913091600080516020615d968339815191529181900360200190a360055460c08201516060830151604080516341c728b960e01b81523060048201526001600160a01b038b81166024830152604482019490945260648101929092525191909216916341c728b991608480830192600092919082900301818387803b158015614cff57600080fd5b505af1158015614d13573d6000803e3d6000fd5b5060009250614d20915050565b8160c001519350935050509250929050565b600083830182858210156114e45760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315614379578181015183820152602001614361565b614d8f615b32565b6040518060200160405280614da8856000015185615933565b90529392505050565b6000614dbb615b32565b614dc58484614d87565b90506116108161425a565b6000614dda615b32565b614de48585614d87565b90506143b4614df28261425a565b8461340d565b6000670de0b6b3a7640000614e11848460000151615933565b81614e1857fe5b049392505050565b6005546040805163368f515360e21b81523060048201526001600160a01b0385811660248301526044820185905291516000938493169163da3d454c91606480830192602092919082900301818787803b158015614e7d57600080fd5b505af1158015614e91573d6000803e3d6000fd5b505050506040513d6020811015614ea757600080fd5b505190508015614ec657614ebe6003601083614143565b9150506110f2565b614ece612320565b600b5414614ee257614ebe600a600c613126565b6000614eec612ebc565b905083811015614f0b57614f02600e600b613126565b925050506110f2565b614f13615c16565b614f1c86613298565b6020830181905282826003811115614f3057fe5b6003811115614f3b57fe5b9052506000905081516003811115614f4f57fe5b14614f7457614f6a600980836000015160038111156138b457fe5b93505050506110f2565b614f828160200151866141cc565b6040830181905282826003811115614f9657fe5b6003811115614fa157fe5b9052506000905081516003811115614fb557fe5b14614fd157614f6a6009600e836000015160038111156138b457fe5b6005546040808301518151631de6c8a560e21b8152306004820152602481019190915290516001600160a01b039092169163779b2294916044808201926020929091908290030181600087803b15801561502a57600080fd5b505af115801561503e573d6000803e3d6000fd5b505050506040513d602081101561505457600080fd5b50519250821561506b57614f6a6003601085614143565b615077600d54866141cc565b606083018190528282600381111561508b57fe5b600381111561509657fe5b90525060009050815160038111156150aa57fe5b146150c657614f6a6009600d836000015160038111156138b457fe5b6040808201516001600160a01b0388166000908152601460205291909120908155600c546001909101556060810151600d5561510286866143f7565b60408082015160608084015183516001600160a01b038b168152602081018a9052808501939093529082015290517f13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab809181900360800190a160009695505050505050565b60055460408051632fe3f38f60e11b81523060048201526001600160a01b0384811660248301528781166044830152868116606483015260848201869052915160009384938493911691635fc7e71e9160a48082019260209290919082900301818787803b1580156151d757600080fd5b505af11580156151eb573d6000803e3d6000fd5b505050506040513d602081101561520157600080fd5b505190508015615225576152186003601483614143565b92506000915061564f9050565b61522d612320565b600b541461524157615218600a6018613126565b615249612320565b846001600160a01b0316636c540baf6040518163ffffffff1660e01b815260040160206040518083038186803b15801561528257600080fd5b505afa158015615296573d6000803e3d6000fd5b505050506040513d60208110156152ac57600080fd5b5051146152bf57615218600a6013613126565b866001600160a01b0316866001600160a01b031614156152e55761521860066019613126565b846152f65761521860076017613126565b60001985141561530c5761521860076016613126565b60008061531a898989613ca8565b9092509050811561534a5761533b82601181111561533457fe5b601a613126565b94506000935061564f92505050565b6005546040805163c488847b60e01b81523060048201526001600160a01b038981166024830152604482018590528251600094859492169263c488847b926064808301939192829003018186803b1580156153a457600080fd5b505afa1580156153b8573d6000803e3d6000fd5b505050506040513d60408110156153ce57600080fd5b508051602090910151909250905081156154195760405162461bcd60e51b8152600401808060200182810382526033815260200180615de76033913960400191505060405180910390fd5b80886001600160a01b03166370a082318c6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561547057600080fd5b505afa158015615484573d6000803e3d6000fd5b505050506040513d602081101561549a57600080fd5b505110156154ef576040805162461bcd60e51b815260206004820152601860248201527f4c49515549444154455f5345495a455f544f4f5f4d5543480000000000000000604482015290519081900360640190fd5b60006001600160a01b0389163014156155155761550e308d8d85613766565b905061559f565b6040805163b2a02ff160e01b81526001600160a01b038e811660048301528d81166024830152604482018590529151918b169163b2a02ff1916064808201926020929091908290030181600087803b15801561557057600080fd5b505af1158015615584573d6000803e3d6000fd5b505050506040513d602081101561559a57600080fd5b505190505b80156155e9576040805162461bcd60e51b81526020600482015260146024820152731d1bdad95b881cd95a5e9d5c994819985a5b195960621b604482015290519081900360640190fd5b604080516001600160a01b03808f168252808e1660208301528183018790528b1660608201526080810184905290517f298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb529181900360a00190a16000975092955050505050505b94509492505050565b601554604080516370a0823160e01b8152306004820152905160009283926001600160a01b03909116916370a0823191602480820192602092909190829003018186803b1580156156a857600080fd5b505afa1580156156bc573d6000803e3d6000fd5b505050506040513d60208110156156d257600080fd5b5051604080516001600160a01b038716602482015230604482015260648082018790528251808303909101815260849091018252602081810180516001600160e01b03166323b872dd60e01b1790528251808401909352601883527f544f4b454e5f5452414e534645525f494e5f4641494c454400000000000000009083015291925061575f919061588f565b601554604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156157aa57600080fd5b505afa1580156157be573d6000803e3d6000fd5b505050506040513d60208110156157d457600080fd5b505190508181101561582d576040805162461bcd60e51b815260206004820152601a60248201527f544f4b454e5f5452414e534645525f494e5f4f564552464c4f57000000000000604482015290519081900360640190fd5b039392505050565b600081848411156158875760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315614379578181015183820152602001614361565b505050900390565b6015546060906158a9906001600160a01b0316848461426e565b805190915015615917578080602001905160208110156158c857600080fd5b505182906116b05760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315614379578181015183820152602001614361565b505050565b6000806000615929615b32565b612e7f8686615975565b6000611a9d83836040518060400160405280601781526020017f6d756c7469706c69636174696f6e206f766572666c6f770000000000000000008152506159d4565b600061597f615b32565b600080615994670de0b6b3a76400008761494c565b909250905060008260038111156159a757fe5b146159c657506040805160208101909152600081529092509050612eb5565b612eae818660000151614093565b60008315806159e1575082155b156159ee57506000611a9d565b838302838582816159fb57fe5b041483906114e45760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315614379578181015183820152602001614361565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10615a8b57805160ff1916838001178555615ab8565b82800160010185558215615ab8579182015b82811115615ab8578251825591602001919060010190615a9d565b506118e8929150615c3f565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10615b055782800160ff19823516178555615ab8565b82800160010185558215615ab8579182015b82811115615ab8578235825591602001919060010190615b17565b6040518060200160405280600081525090565b604080516101208101909152806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040805161010081019091528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040805160e0810190915280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b604080516080810190915280600081526020016000815260200160008152602001600081525090565b6114a491905b808211156118e85760008155600101615c4556fe6d61726b6574206d6179206f6e6c7920626520696e697469616c697a6564206f6e6365696e697469616c2065786368616e67652072617465206d7573742062652067726561746572207468616e207a65726f2e6f6e6c79207468652061646d696e206d6179207365742074686520636f6d702d6c696b652064656c656761746573657474696e6720696e7465726573742072617465206d6f64656c206661696c6564626f72726f7742616c616e636553746f7265643a20626f72726f7742616c616e636553746f726564496e7465726e616c206661696c656452455041595f424f52524f575f4e45575f4143434f554e545f424f52524f575f42414c414e43455f43414c43554c4154494f4e5f4641494c45446f6e6c7920467573652061646d696e206d617920696e697469616c697a6520746865206d61726b6574ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef52455041595f424f52524f575f4e45575f544f54414c5f42414c414e43455f43414c43554c4154494f4e5f4641494c45444c49515549444154455f434f4d5054524f4c4c45525f43414c43554c4154455f414d4f554e545f5345495a455f4641494c454465786368616e67655261746553746f7265643a2065786368616e67655261746553746f726564496e7465726e616c206661696c65646f6e65206f662072656465656d546f6b656e73496e206f722072656465656d416d6f756e74496e206d757374206265207a65726fa265627a7a723158206bb55a5746461828ebe5f58429e48351bdca5941845d72ac9a60d0db0eed14ce64736f6c63430005110032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH2 0x5EB7 DUP1 PUSH2 0x13 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x376 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x852A12E3 GT PUSH2 0x1D1 JUMPI DUP1 PUSH4 0xAE9D70B0 GT PUSH2 0x102 JUMPI DUP1 PUSH4 0xDC028AB1 GT PUSH2 0xA0 JUMPI DUP1 PUSH4 0xF5E3C462 GT PUSH2 0x6F JUMPI DUP1 PUSH4 0xF5E3C462 EQ PUSH2 0xF69 JUMPI DUP1 PUSH4 0xF8F9DA28 EQ PUSH2 0xFAC JUMPI DUP1 PUSH4 0xFCA7820B EQ PUSH2 0xFC1 JUMPI DUP1 PUSH4 0xFE9C44AE EQ PUSH2 0xFEB JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0xDC028AB1 EQ PUSH2 0xED1 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0xEE6 JUMPI DUP1 PUSH4 0xF2B3ABBD EQ PUSH2 0xF21 JUMPI DUP1 PUSH4 0xF3FDB15A EQ PUSH2 0xF54 JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0xC37F68E2 GT PUSH2 0xDC JUMPI DUP1 PUSH4 0xC37F68E2 EQ PUSH2 0xE0F JUMPI DUP1 PUSH4 0xC5EBEAEC EQ PUSH2 0xE68 JUMPI DUP1 PUSH4 0xDB006A75 EQ PUSH2 0xE92 JUMPI DUP1 PUSH4 0xDBFE7C19 EQ PUSH2 0xEBC JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0xAE9D70B0 EQ PUSH2 0xDA2 JUMPI DUP1 PUSH4 0xB2A02FF1 EQ PUSH2 0xDB7 JUMPI DUP1 PUSH4 0xBD6D894D EQ PUSH2 0xDFA JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0xA0712D68 GT PUSH2 0x16F JUMPI DUP1 PUSH4 0xA7B820DF GT PUSH2 0x149 JUMPI DUP1 PUSH4 0xA7B820DF EQ PUSH2 0xD15 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0xD3F JUMPI DUP1 PUSH4 0xAA5AF0FD EQ PUSH2 0xD78 JUMPI DUP1 PUSH4 0xAC784DDC EQ PUSH2 0xD8D JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0xA0712D68 EQ PUSH2 0xB7A JUMPI DUP1 PUSH4 0xA0B0D289 EQ PUSH2 0xBA4 JUMPI DUP1 PUSH4 0xA6AFED95 EQ PUSH2 0xD00 JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0x91DD36C6 GT PUSH2 0x1AB JUMPI DUP1 PUSH4 0x91DD36C6 EQ PUSH2 0xADE JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0xB08 JUMPI DUP1 PUSH4 0x95DD9193 EQ PUSH2 0xB1D JUMPI DUP1 PUSH4 0xA03DCE8D EQ PUSH2 0xB50 JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0x852A12E3 EQ PUSH2 0xA8A JUMPI DUP1 PUSH4 0x8D02D9A1 EQ PUSH2 0xAB4 JUMPI DUP1 PUSH4 0x8F840DDD EQ PUSH2 0xAC9 JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0x3B1D21A2 GT PUSH2 0x2AB JUMPI DUP1 PUSH4 0x61FEACFF GT PUSH2 0x249 JUMPI DUP1 PUSH4 0x6F307DC3 GT PUSH2 0x223 JUMPI DUP1 PUSH4 0x6F307DC3 EQ PUSH2 0x9FA JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0xA0F JUMPI DUP1 PUSH4 0x73ACEE98 EQ PUSH2 0xA42 JUMPI DUP1 PUSH4 0x7F1E06BE EQ PUSH2 0xA57 JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0x61FEACFF EQ PUSH2 0x9BB JUMPI DUP1 PUSH4 0x6752E702 EQ PUSH2 0x9D0 JUMPI DUP1 PUSH4 0x6C540BAF EQ PUSH2 0x9E5 JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0x56E67728 GT PUSH2 0x285 JUMPI DUP1 PUSH4 0x56E67728 EQ PUSH2 0x8D0 JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x94B JUMPI DUP1 PUSH4 0x5FE3B567 EQ PUSH2 0x97C JUMPI DUP1 PUSH4 0x601A0BF1 EQ PUSH2 0x991 JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0x3B1D21A2 EQ PUSH2 0x814 JUMPI DUP1 PUSH4 0x47BD3718 EQ PUSH2 0x829 JUMPI DUP1 PUSH4 0x50D85B73 EQ PUSH2 0x83E JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0x182DF0F5 GT PUSH2 0x318 JUMPI DUP1 PUSH4 0x2608F818 GT PUSH2 0x2F2 JUMPI DUP1 PUSH4 0x2608F818 EQ PUSH2 0x6B2 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x6EB JUMPI DUP1 PUSH4 0x34154D4C EQ PUSH2 0x716 JUMPI DUP1 PUSH4 0x3AF9E669 EQ PUSH2 0x7E1 JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0x182DF0F5 EQ PUSH2 0x652 JUMPI DUP1 PUSH4 0x1DB78944 EQ PUSH2 0x667 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x66F JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0xF8855E8 GT PUSH2 0x354 JUMPI DUP1 PUSH4 0xF8855E8 EQ PUSH2 0x48E JUMPI DUP1 PUSH4 0x173B9904 EQ PUSH2 0x5F5 JUMPI DUP1 PUSH4 0x17BFDFBC EQ PUSH2 0x60A JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x63D JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x37B JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x405 JUMPI DUP1 PUSH4 0xE752702 EQ PUSH2 0x452 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x387 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x390 PUSH2 0x1000 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3CA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3B2 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x3F7 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x411 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x43E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x428 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x108B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x45E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x475 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x10F8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x49A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5F3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x4B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x4EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x4FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x51F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x571 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x583 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x5A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP POP PUSH1 0xFF DUP4 CALLDATALOAD AND SWAP4 POP POP POP PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x110E JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x601 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x13BC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x616 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x62D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x13C2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x649 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x143E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x65E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x1444 JUMP JUMPDEST PUSH2 0x5F3 PUSH2 0x14A7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x67B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x43E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x692 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x14A9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x6D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x14D7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x700 PUSH2 0x14ED JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x722 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5F3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x739 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x753 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x765 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x786 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x7A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x7B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x7D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x14F6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x804 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1562 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x820 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x1618 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x835 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x1627 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x84A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5F3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x861 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x892 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x8A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x8C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x162D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5F3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x90D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x91F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x940 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x16B6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x957 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x960 PUSH2 0x17C9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x988 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x960 PUSH2 0x17D8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x99D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x17E7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x1838 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x183E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x1849 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA06 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x960 PUSH2 0x184F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA1B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA32 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x185E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA4E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x1879 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA63 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5F3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA7A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x18EC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAAD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1991 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x199C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAD5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x19A2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB01 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x19A8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x390 PUSH2 0x19E5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB29 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB40 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1A40 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB73 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1AA4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1AE1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBB0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5F3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0xBC7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP3 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP1 SWAP3 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xC02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xC14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0xC35 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xC87 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xC99 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0xCBA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP POP DUP3 CALLDATALOAD SWAP4 POP POP POP PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1AED JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD0C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x1C06 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD21 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1DCB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD4B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x43E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xD62 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1E08 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD84 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x1E35 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD99 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x43E PUSH2 0x1E3B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xDAE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x1E40 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xDC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xDDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x1EF8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE06 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x1F1C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE1B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE42 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE32 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1F90 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP5 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP4 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE74 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x2025 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE9E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xEB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x2030 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEC8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x203B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEDD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x2041 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xF09 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x2047 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF2D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF44 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2072 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF60 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x960 PUSH2 0x20AC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF75 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xF8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 SWAP1 SWAP2 ADD CALLDATALOAD AND PUSH2 0x20BB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xFB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x20D3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xFCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xFE4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x2148 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xFF7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x43E PUSH2 0x2185 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP4 AND DUP5 SWAP1 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x1083 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1058 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1083 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1066 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP7 SWAP1 SSTORE DUP2 MLOAD DUP7 DUP2 MSTORE SWAP2 MLOAD SWAP4 SWAP5 SWAP4 SWAP1 SWAP3 DUP5 SWAP3 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1104 DUP4 PUSH2 0x218A JUMP JUMPDEST POP SWAP2 POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST CALLER PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 EQ PUSH2 0x1160 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5D6D PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xB SLOAD ISZERO DUP1 ISZERO PUSH2 0x1170 JUMPI POP PUSH1 0xC SLOAD ISZERO JUMPDEST PUSH2 0x11AB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5C5A PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x7 DUP7 SWAP1 SSTORE DUP6 PUSH2 0x11EC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x30 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5C7D PUSH1 0x30 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x11F7 DUP10 PUSH2 0x21ED JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x124C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x73657474696E6720636F6D7074726F6C6C6572206661696C6564000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1254 PUSH2 0x2320 JUMP JUMPDEST PUSH1 0xB SSTORE PUSH8 0xDE0B6B3A7640000 PUSH1 0xC SSTORE PUSH2 0x126C DUP9 PUSH2 0x2324 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x12AB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5CDA PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP6 MLOAD PUSH2 0x12BE SWAP1 PUSH1 0x2 SWAP1 PUSH1 0x20 DUP10 ADD SWAP1 PUSH2 0x5A4A JUMP JUMPDEST POP DUP5 MLOAD PUSH2 0x12D2 SWAP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP9 ADD SWAP1 PUSH2 0x5A4A JUMP JUMPDEST POP PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF DUP7 AND OR SWAP1 SSTORE PUSH2 0x12EB DUP4 PUSH2 0x262A JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1340 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x73657474696E67207265736572766520666163746F72206661696C6564000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1349 DUP3 PUSH2 0x26E3 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x139E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x73657474696E672061646D696E20666565206661696C65640000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF PUSH1 0xB0 SHL NOT AND PUSH1 0x1 PUSH1 0xB0 SHL OR SWAP1 SSTORE POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0xA SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x13CE DUP2 PUSH2 0x2808 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x13D8 PUSH2 0x1C06 JUMP JUMPDEST EQ PUSH2 0x1423 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x1858D8DC9D59481A5B9D195C995CDD0819985A5B1959 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x142C DUP4 PUSH2 0x1A40 JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH2 0x1438 DUP2 PUSH2 0x28D1 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x11 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1451 PUSH2 0x293C JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1464 JUMPI INVALID JUMPDEST EQ PUSH2 0x14A0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x35 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5E1A PUSH1 0x35 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP2 POP POP JUMPDEST SWAP1 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x14B5 DUP2 PUSH2 0x2808 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14C3 CALLER DUP8 DUP8 DUP8 PUSH2 0x29FC JUMP JUMPDEST EQ SWAP2 POP PUSH2 0x14CF DUP2 PUSH2 0x28D1 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x14E4 DUP5 DUP5 PUSH2 0x2C88 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x14FE PUSH2 0x2CED JUMP JUMPDEST PUSH2 0x1542 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x31B0B63632B9103737BA1030B236B4B7 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x154E PUSH1 0x2 DUP6 DUP6 PUSH2 0x5AC4 JUMP JUMPDEST POP PUSH2 0x155B PUSH1 0x3 DUP4 DUP4 PUSH2 0x5AC4 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x156C PUSH2 0x5B32 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x157F PUSH2 0x1F1C JUMP JUMPDEST SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP SWAP1 DUP2 SWAP1 PUSH2 0x15AB SWAP1 DUP5 SWAP1 PUSH2 0x2E68 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x15BE JUMPI INVALID JUMPDEST EQ PUSH2 0x1610 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x62616C616E636520636F756C64206E6F742062652063616C63756C6174656400 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1622 PUSH2 0x2EBC JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0xD SLOAD DUP2 JUMP JUMPDEST PUSH2 0x1635 PUSH2 0x2CED JUMP JUMPDEST PUSH2 0x166F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x10B0B236B4B7 PUSH1 0xD1 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x16B0 DUP5 DUP5 DUP5 DUP5 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x2F0A SWAP3 POP POP POP JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH20 0x66F4856F1BBD1EB09E1C8D9D646F5A3A193DA569 PUSH20 0xCAE4210E6676727EA4E0FD9BA5DFB95831356A16 CALLER ADDRESS EQ DUP1 PUSH2 0x16F1 JUMPI POP PUSH2 0x16F1 PUSH2 0x2CED JUMP JUMPDEST PUSH2 0x172A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x5 PUSH1 0x24 DUP3 ADD MSTORE PUSH5 0x10B9B2B633 PUSH1 0xD9 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1734 PUSH2 0x1C06 JUMP JUMPDEST EQ PUSH2 0x1770 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x7 PUSH1 0x24 DUP3 ADD MSTORE PUSH7 0x21616363727565 PUSH1 0xC8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD SWAP1 DUP5 SWAP1 SSTORE SWAP5 DUP7 AND DUP1 DUP5 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP4 SWAP3 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5D96 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 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 0x0 DUP1 PUSH2 0x17F3 DUP2 PUSH2 0x2808 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x17FD PUSH2 0x1C06 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1823 JUMPI PUSH2 0x181B DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x1814 JUMPI INVALID JUMPDEST PUSH1 0x3B PUSH2 0x3126 JUMP JUMPDEST SWAP3 POP POP PUSH2 0x142F JUMP JUMPDEST PUSH2 0x182C DUP5 PUSH2 0x318C JUMP JUMPDEST SWAP3 POP POP PUSH2 0x1438 DUP2 PUSH2 0x28D1 JUMP JUMPDEST PUSH1 0xF SLOAD DUP2 JUMP JUMPDEST PUSH7 0x6379DA05B60000 DUP2 JUMP JUMPDEST PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH1 0x15 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1885 DUP2 PUSH2 0x2808 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x188F PUSH2 0x1C06 JUMP JUMPDEST EQ PUSH2 0x18DA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x1858D8DC9D59481A5B9D195C995CDD0819985A5B1959 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0xD SLOAD SWAP2 POP PUSH2 0x18E8 DUP2 PUSH2 0x28D1 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0x18F4 PUSH2 0x2CED JUMP JUMPDEST PUSH2 0x192F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5CAD PUSH1 0x2D SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x15 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x17066A57 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x5C19A95C SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x197D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x155B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x10F2 DUP3 PUSH2 0x3258 JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xE SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x19B4 DUP2 PUSH2 0x2808 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x19BE PUSH2 0x1C06 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x19DC JUMPI PUSH2 0x181B DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x19D5 JUMPI INVALID JUMPDEST PUSH1 0x52 PUSH2 0x3126 JUMP JUMPDEST PUSH2 0x182C DUP5 PUSH2 0x26E3 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x1083 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1058 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1083 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1A4E DUP5 PUSH2 0x3298 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1A61 JUMPI INVALID JUMPDEST EQ PUSH2 0x1A9D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x37 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5CFC PUSH1 0x37 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1AB0 DUP2 PUSH2 0x2808 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1ABA PUSH2 0x1C06 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1AD8 JUMPI PUSH2 0x181B DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x1AD1 JUMPI INVALID JUMPDEST PUSH1 0x33 PUSH2 0x3126 JUMP JUMPDEST PUSH2 0x182C DUP5 PUSH2 0x334C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1104 DUP4 PUSH2 0x33CD JUMP JUMPDEST PUSH1 0x0 PUSH8 0x2C68AF0BB140000 SWAP1 POP PUSH1 0x0 DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x313CE567 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 0x1B35 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1B49 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1B5F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH2 0x1B73 DUP9 DUP9 DUP5 DUP10 DUP10 DUP7 DUP11 DUP11 PUSH2 0x110E JUMP JUMPDEST PUSH1 0x15 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP2 DUP3 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x18160DDD PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP1 SWAP2 AND SWAP2 PUSH4 0x18160DDD SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1BCF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1BE3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1BF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1C11 PUSH2 0x2320 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0xB SLOAD EQ ISZERO PUSH2 0x1C27 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x14A4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C31 PUSH2 0x2EBC JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x6 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 PUSH4 0x15F24053 DUP4 PUSH1 0xD SLOAD PUSH2 0x1C76 PUSH1 0xE SLOAD PUSH2 0x1C71 PUSH1 0xF SLOAD PUSH1 0x10 SLOAD PUSH2 0x340D JUMP JUMPDEST PUSH2 0x340D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1CB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1CCC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1CE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH6 0x48C27395000 DUP2 GT ISZERO PUSH2 0x1D41 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x626F72726F772072617465206973206162737572646C79206869676800000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1D50 DUP6 PUSH1 0xB SLOAD PUSH2 0x3443 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1D63 JUMPI INVALID JUMPDEST EQ PUSH2 0x1DB5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x636F756C64206E6F742063616C63756C61746520626C6F636B2064656C746100 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1DC1 DUP6 DUP6 DUP6 DUP5 PUSH2 0x3466 JUMP JUMPDEST SWAP6 POP POP POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1DD7 DUP2 PUSH2 0x2808 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1DE1 PUSH2 0x1C06 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1DFF JUMPI PUSH2 0x181B DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x1DF8 JUMPI INVALID JUMPDEST PUSH1 0x37 PUSH2 0x3126 JUMP JUMPDEST PUSH2 0x182C DUP5 PUSH2 0x367E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1E14 DUP2 PUSH2 0x2808 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E22 CALLER CALLER DUP8 DUP8 PUSH2 0x29FC JUMP JUMPDEST EQ SWAP2 POP PUSH2 0x1E2E DUP2 PUSH2 0x28D1 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xC SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xB8168816 PUSH2 0x1E5C PUSH2 0x2EBC JUMP JUMPDEST PUSH1 0xD SLOAD PUSH2 0x1E73 PUSH1 0xE SLOAD PUSH2 0x1C71 PUSH1 0xF SLOAD PUSH1 0x10 SLOAD PUSH2 0x340D JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x9 SLOAD PUSH1 0xA SLOAD ADD ADD PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1EC7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1EDB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1EF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH2 0x1F05 DUP2 PUSH2 0x2808 JUMP JUMPDEST PUSH2 0x1F11 CALLER DUP7 DUP7 DUP7 PUSH2 0x3766 JUMP JUMPDEST SWAP2 POP PUSH2 0x14CF DUP2 PUSH2 0x28D1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1F28 DUP2 PUSH2 0x2808 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F32 PUSH2 0x1C06 JUMP JUMPDEST EQ PUSH2 0x1F7D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x1858D8DC9D59481A5B9D195C995CDD0819985A5B1959 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1F85 PUSH2 0x1444 JUMP JUMPDEST SWAP2 POP PUSH2 0x18E8 DUP2 PUSH2 0x28D1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP2 SWAP1 DUP2 SWAP1 DUP2 SWAP1 DUP2 DUP1 DUP1 PUSH2 0x1FBB DUP10 PUSH2 0x3298 JUMP JUMPDEST SWAP4 POP SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1FCD JUMPI INVALID JUMPDEST EQ PUSH2 0x1FEB JUMPI PUSH1 0x9 JUMPDEST SWAP8 POP PUSH1 0x0 SWAP7 POP DUP7 SWAP6 POP DUP6 SWAP5 POP PUSH2 0x201E SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x1FF3 PUSH2 0x293C JUMP JUMPDEST SWAP3 POP SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2005 JUMPI INVALID JUMPDEST EQ PUSH2 0x2011 JUMPI PUSH1 0x9 PUSH2 0x1FD5 JUMP JUMPDEST POP PUSH1 0x0 SWAP7 POP SWAP2 SWAP5 POP SWAP3 POP SWAP1 POP JUMPDEST SWAP2 SWAP4 POP SWAP2 SWAP4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10F2 DUP3 PUSH2 0x3B45 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10F2 DUP3 PUSH2 0x3B83 JUMP JUMPDEST PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x10 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x207D PUSH2 0x1C06 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x20A3 JUMPI PUSH2 0x209B DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x2094 JUMPI INVALID JUMPDEST PUSH1 0x4B PUSH2 0x3126 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1109 JUMP JUMPDEST PUSH2 0x1A9D DUP4 PUSH2 0x2324 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x20C9 DUP6 DUP6 DUP6 PUSH2 0x3BBC JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x15F24053 PUSH2 0x20EF PUSH2 0x2EBC JUMP JUMPDEST PUSH1 0xD SLOAD PUSH2 0x2106 PUSH1 0xE SLOAD PUSH2 0x1C71 PUSH1 0xF SLOAD PUSH1 0x10 SLOAD PUSH2 0x340D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1EC7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2154 DUP2 PUSH2 0x2808 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x215E PUSH2 0x1C06 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x217C JUMPI PUSH2 0x181B DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x2175 JUMPI INVALID JUMPDEST PUSH1 0x59 PUSH2 0x3126 JUMP JUMPDEST PUSH2 0x182C DUP5 PUSH2 0x262A JUMP JUMPDEST PUSH1 0x1 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x2198 DUP2 PUSH2 0x2808 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x21A2 PUSH2 0x1C06 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x21CD JUMPI PUSH2 0x21C0 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x21B9 JUMPI INVALID JUMPDEST PUSH1 0x41 PUSH2 0x3126 JUMP JUMPDEST SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x21DE SWAP1 POP JUMP JUMPDEST PUSH2 0x21D8 CALLER CALLER DUP8 PUSH2 0x3CA8 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP JUMPDEST PUSH2 0x21E7 DUP2 PUSH2 0x28D1 JUMP JUMPDEST POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH3 0x7E3DD2 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 0x2240 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2254 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x226A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x22BD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6D61726B6572206D6574686F642072657475726E65642066616C736500000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP3 DUP5 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD PUSH32 0x7AC369DBD14FA5EA3F473ED67CC9D598964A77501540BA6751EB0B3DECF5870D SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x0 PUSH2 0x1A9D JUMP JUMPDEST NUMBER SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x232F PUSH2 0x2CED JUMP JUMPDEST PUSH2 0x233F JUMPI PUSH2 0x209B PUSH1 0x1 PUSH1 0x4D PUSH2 0x3126 JUMP JUMPDEST PUSH2 0x2347 PUSH2 0x2320 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x235B JUMPI PUSH2 0x209B PUSH1 0xA PUSH1 0x4C PUSH2 0x3126 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x2191F92A 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 0x23AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x23C0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x23D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x2429 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6D61726B6572206D6574686F642072657475726E65642066616C736500000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP3 DUP5 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD PUSH32 0xEDFFC32E068C7C95DFD4BDFD5C4D939A084D6B11C4199EAC8436ED234D72F926 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0x255B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x6CC1140B PUSH1 0xE1 SHL OR DUP2 MSTORE SWAP2 MLOAD DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP4 DUP3 SWAP2 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x24F0 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x24D1 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2552 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 0x2557 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP POP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x742A137B PUSH1 0xE1 SHL OR DUP2 MSTORE SWAP2 MLOAD DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP4 DUP3 SWAP2 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x25B7 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x2598 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2619 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 0x261E JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP PUSH1 0x0 SWAP2 POP PUSH2 0x1A9D SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2634 PUSH2 0x2CED JUMP JUMPDEST PUSH2 0x264B JUMPI PUSH2 0x2644 PUSH1 0x1 PUSH1 0x5A PUSH2 0x3126 JUMP JUMPDEST SWAP1 POP PUSH2 0x1109 JUMP JUMPDEST PUSH2 0x2653 PUSH2 0x2320 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x2667 JUMPI PUSH2 0x2644 PUSH1 0xA PUSH1 0x5B PUSH2 0x3126 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH2 0x2687 PUSH2 0x267F DUP5 PUSH1 0x8 SLOAD PUSH2 0x340D JUMP JUMPDEST PUSH1 0x9 SLOAD PUSH2 0x340D JUMP JUMPDEST GT ISZERO PUSH2 0x2699 JUMPI PUSH2 0x2644 PUSH1 0x2 PUSH1 0x5C PUSH2 0x3126 JUMP JUMPDEST PUSH1 0xA DUP1 SLOAD SWAP1 DUP4 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP6 SWAP1 MSTORE DUP2 MLOAD PUSH32 0xAAA68312E2EA9D50E16AF5068410AB56E1A1FD06037B1A35664812C30F821460 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x0 PUSH2 0x1A9D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x26ED PUSH2 0x2320 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x2701 JUMPI PUSH2 0x2644 PUSH1 0xA PUSH1 0x54 PUSH2 0x3126 JUMP JUMPDEST PUSH1 0x0 NOT DUP3 EQ ISZERO PUSH2 0x2711 JUMPI PUSH1 0x8 SLOAD SWAP2 POP JUMPDEST PUSH1 0x0 PUSH2 0x271B PUSH2 0x3FF8 JUMP JUMPDEST SWAP1 POP PUSH8 0xDE0B6B3A7640000 PUSH2 0x273B PUSH2 0x2735 PUSH1 0xA SLOAD DUP7 PUSH2 0x340D JUMP JUMPDEST DUP4 PUSH2 0x340D JUMP JUMPDEST GT ISZERO PUSH2 0x274D JUMPI PUSH2 0x209B PUSH1 0x2 PUSH1 0x55 PUSH2 0x3126 JUMP JUMPDEST DUP3 PUSH1 0x8 SLOAD EQ PUSH2 0x27B3 JUMPI PUSH2 0x275E PUSH2 0x2CED JUMP JUMPDEST PUSH2 0x276E JUMPI PUSH2 0x209B PUSH1 0x1 PUSH1 0x53 PUSH2 0x3126 JUMP JUMPDEST PUSH1 0x8 DUP1 SLOAD SWAP1 DUP5 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP7 SWAP1 MSTORE DUP2 MLOAD PUSH32 0xCDD0B588250E1398549F79CFDB8217C186688822905D6715B0834EA1C865594A SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMPDEST DUP1 PUSH1 0x9 SLOAD EQ PUSH2 0x2801 JUMPI PUSH1 0x9 DUP1 SLOAD SWAP1 DUP3 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP2 MLOAD PUSH32 0x92EEF861B6533B7D3417F39C2AD7B460EED4E88A32FA3604F30E718B7602E7DC SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMPDEST PUSH1 0x0 PUSH2 0x1A9D JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0xB0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2853 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xA PUSH1 0x24 DUP3 ADD MSTORE PUSH10 0x1C994B595B9D195C9959 PUSH1 0xB2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x28C1 JUMPI PUSH1 0x5 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 PUSH4 0xC90C20B1 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x28A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x28BC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF PUSH1 0xB0 SHL NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF PUSH1 0xB0 SHL NOT AND PUSH1 0x1 PUSH1 0xB0 SHL OR SWAP1 SSTORE DUP1 PUSH2 0x2939 JUMPI PUSH1 0x5 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 PUSH4 0x632E5142 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x197D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x11 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP1 PUSH2 0x2957 JUMPI POP POP PUSH1 0x7 SLOAD PUSH1 0x0 SWAP2 POP PUSH2 0x29F8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2961 PUSH2 0x2EBC JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x296D PUSH2 0x5B32 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x298F DUP5 PUSH1 0xD SLOAD PUSH2 0x298A PUSH1 0xE SLOAD PUSH2 0x1C71 PUSH1 0xF SLOAD PUSH1 0x10 SLOAD PUSH2 0x340D JUMP JUMPDEST PUSH2 0x4047 JUMP JUMPDEST SWAP4 POP SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x29A1 JUMPI INVALID JUMPDEST EQ PUSH2 0x29B6 JUMPI SWAP6 POP PUSH1 0x0 SWAP5 POP PUSH2 0x29F8 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x29C0 DUP4 DUP7 PUSH2 0x4093 JUMP JUMPDEST SWAP3 POP SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x29D2 JUMPI INVALID JUMPDEST EQ PUSH2 0x29E7 JUMPI SWAP6 POP PUSH1 0x0 SWAP5 POP PUSH2 0x29F8 SWAP4 POP POP POP POP JUMP JUMPDEST POP MLOAD PUSH1 0x0 SWAP6 POP SWAP4 POP PUSH2 0x29F8 SWAP3 POP POP POP JUMP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x17B9B84B PUSH1 0xE3 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP6 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 AND SWAP2 PUSH4 0xBDCDC258 SWAP2 PUSH1 0x84 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2A61 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2A75 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2A8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x2AAA JUMPI PUSH2 0x2AA2 PUSH1 0x3 PUSH1 0x5D DUP4 PUSH2 0x4143 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1610 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x2AD0 JUMPI PUSH2 0x2AA2 PUSH1 0x2 PUSH1 0x5E PUSH2 0x3126 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND SWAP1 DUP8 AND EQ ISZERO PUSH2 0x2AEF JUMPI POP PUSH1 0x0 NOT PUSH2 0x2B17 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP11 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x2B27 DUP6 DUP10 PUSH2 0x3443 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP PUSH1 0x0 DUP5 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2B3A JUMPI INVALID JUMPDEST EQ PUSH2 0x2B58 JUMPI PUSH2 0x2B4B PUSH1 0x9 PUSH1 0x5E PUSH2 0x3126 JUMP JUMPDEST SWAP7 POP POP POP POP POP POP POP PUSH2 0x1610 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2B7B SWAP1 DUP10 PUSH2 0x3443 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP2 POP PUSH1 0x0 DUP5 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2B8E JUMPI INVALID JUMPDEST EQ PUSH2 0x2B9F JUMPI PUSH2 0x2B4B PUSH1 0x9 PUSH1 0x5F PUSH2 0x3126 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2BC2 SWAP1 DUP10 PUSH2 0x41CC JUMP JUMPDEST SWAP1 SWAP5 POP SWAP1 POP PUSH1 0x0 DUP5 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2BD5 JUMPI INVALID JUMPDEST EQ PUSH2 0x2BE6 JUMPI PUSH2 0x2B4B PUSH1 0x9 PUSH1 0x60 PUSH2 0x3126 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP6 SWAP1 SSTORE SWAP2 DUP12 AND DUP2 MSTORE KECCAK256 DUP2 SWAP1 SSTORE PUSH1 0x0 NOT DUP6 EQ PUSH2 0x2C3E JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP16 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP4 SWAP1 SSTORE JUMPDEST DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5D96 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP11 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x0 SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x2C96 DUP2 PUSH2 0x2808 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2CA0 PUSH2 0x1C06 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x2CCB JUMPI PUSH2 0x2CBE DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x2CB7 JUMPI INVALID JUMPDEST PUSH1 0x40 PUSH2 0x3126 JUMP JUMPDEST SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x2CDC SWAP1 POP JUMP JUMPDEST PUSH2 0x2CD6 CALLER DUP8 DUP8 PUSH2 0x3CA8 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP JUMPDEST PUSH2 0x2CE5 DUP2 PUSH2 0x28D1 JUMP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x3E14691 PUSH1 0xE6 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 DUP3 SWAP2 PUSH4 0xF851A440 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2D35 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2D49 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2D5F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ DUP1 ISZERO PUSH2 0x2DD9 JUMPI POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA755EC2 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 0x2DAC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2DC0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2DD6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST DUP1 PUSH2 0x14A0 JUMPI POP CALLER PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 EQ DUP1 ISZERO PUSH2 0x14A0 JUMPI POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x2F1069BA 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 0x2E36 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2E4A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2E60 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x2E75 PUSH2 0x5B32 JUMP JUMPDEST PUSH2 0x2E7F DUP7 DUP7 PUSH2 0x41F2 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2E92 JUMPI INVALID JUMPDEST EQ PUSH2 0x2EA3 JUMPI POP SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH2 0x2EB5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2EAE DUP3 PUSH2 0x425A JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x15 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 DUP3 SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2E36 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x38E6A073 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP2 DUP6 AND PUSH1 0x24 DUP4 ADD MSTORE DUP4 ISZERO ISZERO PUSH1 0x44 DUP4 ADD MSTORE MLOAD PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 SWAP2 PUSH4 0x71CD40E6 SWAP2 PUSH1 0x64 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2F77 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2F8B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2FA1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x2FDC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x5 PUSH1 0x24 DUP3 ADD MSTORE PUSH5 0x85A5B5C1B PUSH1 0xDA SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 ISZERO PUSH2 0x2FEA JUMPI PUSH2 0x2FEA PUSH2 0x4269 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND OR DUP4 SSTORE PUSH1 0x40 MLOAD PUSH1 0x20 PUSH1 0x24 DUP3 ADD DUP2 DUP2 MSTORE DUP7 MLOAD PUSH1 0x44 DUP5 ADD MSTORE DUP7 MLOAD SWAP4 SWAP1 SWAP5 AND SWAP5 PUSH2 0x30D7 SWAP5 ADDRESS SWAP5 DUP9 SWAP5 SWAP2 SWAP4 DUP5 SWAP4 PUSH1 0x64 SWAP1 SWAP4 ADD SWAP3 SWAP1 DUP7 ADD SWAP2 SWAP1 DUP2 SWAP1 DUP5 SWAP1 DUP5 SWAP1 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3057 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x303F JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x3084 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xADCCEE5 PUSH1 0xE3 SHL OR SWAP1 MSTORE DUP2 MLOAD DUP1 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x7 DUP3 MSTORE PUSH7 0x216265636F6D65 PUSH1 0xC8 SHL SWAP1 DUP3 ADD MSTORE SWAP1 SWAP4 POP SWAP2 POP PUSH2 0x426E SWAP1 POP JUMP JUMPDEST POP PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND DUP3 MSTORE SWAP1 SWAP3 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD PUSH32 0xD604DE94D45953F9138079EC1B82D533CB2160C906D1076D1F7ED54BEFBCA97A SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x45B96FE442630264581B197E84BBADA861235052C5A1AADFFF9EA4E40A969AA0 DUP4 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x3155 JUMPI INVALID JUMPDEST DUP4 PUSH1 0x63 DUP2 GT ISZERO PUSH2 0x3161 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 DUP3 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x1A9D JUMPI INVALID JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3197 PUSH2 0x2CED JUMP JUMPDEST PUSH2 0x31A7 JUMPI PUSH2 0x209B PUSH1 0x1 PUSH1 0x3C PUSH2 0x3126 JUMP JUMPDEST PUSH2 0x31AF PUSH2 0x2320 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x31C3 JUMPI PUSH2 0x209B PUSH1 0xA PUSH1 0x3E PUSH2 0x3126 JUMP JUMPDEST DUP3 PUSH2 0x31CC PUSH2 0x2EBC JUMP JUMPDEST LT ISZERO PUSH2 0x31DE JUMPI PUSH2 0x209B PUSH1 0xE PUSH1 0x3D PUSH2 0x3126 JUMP JUMPDEST PUSH1 0xE SLOAD DUP4 GT ISZERO PUSH2 0x31F4 JUMPI PUSH2 0x209B PUSH1 0x2 PUSH1 0x3F PUSH2 0x3126 JUMP JUMPDEST PUSH2 0x3200 PUSH1 0xE SLOAD DUP5 PUSH2 0x43BD JUMP JUMPDEST PUSH1 0xE DUP2 SWAP1 SSTORE SWAP1 POP PUSH2 0x3211 CALLER DUP5 PUSH2 0x43F7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP6 SWAP1 MSTORE DUP1 DUP3 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD PUSH32 0x3BAD0C59CF2F06E7314077049F48A93578CD16F5EF92329F1DAB1420A99C177E SWAP2 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 PUSH1 0x0 PUSH2 0x1A9D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3264 DUP2 PUSH2 0x2808 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x326E PUSH2 0x1C06 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x328C JUMPI PUSH2 0x181B DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x3285 JUMPI INVALID JUMPDEST PUSH1 0x2A PUSH2 0x3126 JUMP JUMPDEST PUSH2 0x182C CALLER PUSH1 0x0 DUP7 PUSH2 0x447C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 PUSH2 0x32CF JUMPI POP PUSH1 0x0 SWAP5 POP DUP5 SWAP4 POP PUSH2 0x3347 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x32DF DUP2 PUSH1 0x0 ADD SLOAD PUSH1 0xC SLOAD PUSH2 0x494C JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP PUSH1 0x0 DUP5 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x32F2 JUMPI INVALID JUMPDEST EQ PUSH2 0x3307 JUMPI POP SWAP2 SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x3347 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x3315 DUP4 DUP3 PUSH1 0x1 ADD SLOAD PUSH2 0x498B JUMP JUMPDEST SWAP1 SWAP5 POP SWAP2 POP PUSH1 0x0 DUP5 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3328 JUMPI INVALID JUMPDEST EQ PUSH2 0x333D JUMPI POP SWAP2 SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x3347 SWAP2 POP POP JUMP JUMPDEST POP PUSH1 0x0 SWAP5 POP SWAP3 POP POP POP JUMPDEST SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3357 PUSH2 0x2320 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x336B JUMPI PUSH2 0x209B PUSH1 0xA PUSH1 0x35 PUSH2 0x3126 JUMP JUMPDEST DUP3 PUSH2 0x3374 PUSH2 0x2EBC JUMP JUMPDEST LT ISZERO PUSH2 0x3386 JUMPI PUSH2 0x209B PUSH1 0xE PUSH1 0x34 PUSH2 0x3126 JUMP JUMPDEST PUSH1 0x10 SLOAD DUP4 GT ISZERO PUSH2 0x339C JUMPI PUSH2 0x209B PUSH1 0x2 PUSH1 0x36 PUSH2 0x3126 JUMP JUMPDEST PUSH2 0x33A8 PUSH1 0x10 SLOAD DUP5 PUSH2 0x43BD JUMP JUMPDEST PUSH1 0x10 DUP2 SWAP1 SSTORE SWAP1 POP PUSH2 0x2801 PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 DUP5 PUSH2 0x43F7 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x33DB DUP2 PUSH2 0x2808 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x33E5 PUSH2 0x1C06 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x3403 JUMPI PUSH2 0x21C0 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x33FC JUMPI INVALID JUMPDEST PUSH1 0x20 PUSH2 0x3126 JUMP JUMPDEST PUSH2 0x21D8 CALLER DUP7 PUSH2 0x49B6 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1A9D DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x11 DUP2 MSTORE PUSH1 0x20 ADD PUSH17 0x6164646974696F6E206F766572666C6F77 PUSH1 0x78 SHL DUP2 MSTORE POP PUSH2 0x4D32 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 DUP4 GT PUSH2 0x345A JUMPI POP PUSH1 0x0 SWAP1 POP DUP2 DUP4 SUB PUSH2 0x2EB5 JUMP JUMPDEST POP PUSH1 0x3 SWAP1 POP PUSH1 0x0 PUSH2 0x2EB5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3470 PUSH2 0x5B32 JUMP JUMPDEST PUSH2 0x3488 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP7 DUP2 MSTORE POP DUP5 PUSH2 0x4D87 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3498 DUP3 PUSH1 0xD SLOAD PUSH2 0x4DB1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x34A8 DUP3 PUSH1 0xD SLOAD PUSH2 0x340D JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x34C9 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xA SLOAD DUP2 MSTORE POP DUP5 PUSH1 0xE SLOAD PUSH2 0x4DD0 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x34EA PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x9 SLOAD DUP2 MSTORE POP DUP6 PUSH1 0x10 SLOAD PUSH2 0x4DD0 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x350B PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x8 SLOAD DUP2 MSTORE POP DUP7 PUSH1 0xF SLOAD PUSH2 0x4DD0 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x351E DUP8 PUSH1 0xC SLOAD PUSH1 0xC SLOAD PUSH2 0x4DD0 JUMP JUMPDEST PUSH1 0xB DUP14 SWAP1 SSTORE PUSH1 0xC DUP2 SWAP1 SSTORE PUSH1 0xD DUP7 SWAP1 SSTORE PUSH1 0xE DUP6 SWAP1 SSTORE PUSH1 0x10 DUP5 SWAP1 SSTORE PUSH1 0xF DUP4 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP14 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP10 SWAP1 MSTORE DUP1 DUP3 ADD DUP4 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP9 SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH32 0x4DEC04E750CA11537CABCD8A9EAB06494DE08DA3735BC8871CD41250E190BC04 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG1 PUSH1 0x6 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x24 DUP1 DUP3 ADD DUP15 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x5EFD0233 PUSH1 0xE1 SHL OR DUP2 MSTORE SWAP2 MLOAD DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP5 AND SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x35FB JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x35DC JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x365D 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 0x3662 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP PUSH1 0x0 SWAP2 POP PUSH2 0x366E SWAP1 POP JUMP JUMPDEST SWAP13 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3689 PUSH2 0x2320 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x369D JUMPI PUSH2 0x209B PUSH1 0xA PUSH1 0x39 PUSH2 0x3126 JUMP JUMPDEST DUP3 PUSH2 0x36A6 PUSH2 0x2EBC JUMP JUMPDEST LT ISZERO PUSH2 0x36B8 JUMPI PUSH2 0x209B PUSH1 0xE PUSH1 0x38 PUSH2 0x3126 JUMP JUMPDEST PUSH1 0xF SLOAD DUP4 GT ISZERO PUSH2 0x36CE JUMPI PUSH2 0x209B PUSH1 0x2 PUSH1 0x3A PUSH2 0x3126 JUMP JUMPDEST PUSH2 0x36DA PUSH1 0xF SLOAD DUP5 PUSH2 0x43BD JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0xF DUP2 SWAP1 SSTORE POP PUSH2 0x2801 PUSH1 0x5 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 PUSH4 0xF851A440 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 0x3734 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3748 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x375E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP5 PUSH2 0x43F7 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xD02F7351 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP7 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE DUP6 DUP2 AND PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x84 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 AND SWAP2 PUSH4 0xD02F7351 SWAP2 PUSH1 0xA4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x37D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x37E7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x37FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x3814 JUMPI PUSH2 0x2AA2 PUSH1 0x3 PUSH1 0x1D DUP4 PUSH2 0x4143 JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x383A JUMPI PUSH2 0x2AA2 PUSH1 0x6 PUSH1 0x1E PUSH2 0x3126 JUMP JUMPDEST PUSH2 0x3842 PUSH2 0x5B45 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x3865 SWAP1 DUP6 PUSH2 0x3443 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3879 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3884 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3898 JUMPI INVALID JUMPDEST EQ PUSH2 0x38C2 JUMPI PUSH2 0x38B9 PUSH1 0x9 PUSH1 0x1C DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x38B4 JUMPI INVALID JUMPDEST PUSH2 0x4143 JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x1610 JUMP JUMPDEST PUSH2 0x38E1 DUP5 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH7 0x6379DA05B60000 DUP2 MSTORE POP PUSH2 0x4DF8 JUMP JUMPDEST PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x38F3 SWAP1 DUP6 SWAP1 PUSH2 0x43BD JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x3900 PUSH2 0x293C JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3914 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x391F JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3933 JUMPI INVALID JUMPDEST EQ PUSH2 0x3985 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x65786368616E67652072617465206D617468206572726F720000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x39A5 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP4 PUSH1 0xC0 ADD MLOAD DUP2 MSTORE POP DUP3 PUSH1 0x80 ADD MLOAD PUSH2 0x4DB1 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xE SLOAD PUSH2 0x39B8 SWAP2 PUSH2 0x340D JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD MSTORE PUSH1 0x11 SLOAD PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x39CF SWAP2 SWAP1 PUSH2 0x43BD JUMP JUMPDEST PUSH2 0x100 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x39FD SWAP2 SWAP1 PUSH2 0x41CC JUMP JUMPDEST PUSH1 0x40 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3A11 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3A1C JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3A30 JUMPI INVALID JUMPDEST EQ PUSH2 0x3A4C JUMPI PUSH2 0x38B9 PUSH1 0x9 PUSH1 0x1B DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x38B4 JUMPI INVALID JUMPDEST PUSH1 0xE0 DUP2 ADD MLOAD PUSH1 0xE SSTORE PUSH2 0x100 DUP2 ADD MLOAD PUSH1 0x11 SSTORE PUSH1 0x20 DUP1 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x12 DUP6 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 DUP7 ADD MLOAD SWAP3 DUP12 AND DUP1 DUP3 MSTORE SWAP1 DUP5 SWAP1 KECCAK256 SWAP3 SWAP1 SWAP3 SSTORE PUSH1 0x60 DUP6 ADD MLOAD DUP4 MLOAD SWAP1 DUP2 MSTORE SWAP3 MLOAD SWAP2 SWAP4 SWAP1 SWAP3 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5D96 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD ADDRESS SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5D96 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0xE0 DUP3 ADD MLOAD PUSH1 0x40 DUP1 MLOAD ADDRESS DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP3 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE MLOAD PUSH32 0xA91E67C5EA634CD43A12C5A482724B03DE01E85CA68702A53D0C2F45CB7C1DC5 SWAP2 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 PUSH1 0x0 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3B51 DUP2 PUSH2 0x2808 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3B5B PUSH2 0x1C06 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x3B79 JUMPI PUSH2 0x181B DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x3B72 JUMPI INVALID JUMPDEST PUSH1 0xA PUSH2 0x3126 JUMP JUMPDEST PUSH2 0x182C CALLER DUP6 PUSH2 0x4E20 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3B8F DUP2 PUSH2 0x2808 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3B99 PUSH2 0x1C06 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x3BB0 JUMPI PUSH2 0x181B DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x3285 JUMPI INVALID JUMPDEST PUSH2 0x182C CALLER DUP6 PUSH1 0x0 PUSH2 0x447C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x3BCA DUP2 PUSH2 0x2808 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3BD4 PUSH2 0x1C06 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x3BFF JUMPI PUSH2 0x3BF2 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x3BEB JUMPI INVALID JUMPDEST PUSH1 0x11 PUSH2 0x3126 JUMP JUMPDEST SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x3C96 SWAP1 POP JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA6AFED95 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3C3A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3C4E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3C64 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x3C84 JUMPI PUSH2 0x3BF2 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x3C7D JUMPI INVALID JUMPDEST PUSH1 0x12 PUSH2 0x3126 JUMP JUMPDEST PUSH2 0x3C90 CALLER DUP9 DUP9 DUP9 PUSH2 0x5166 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP JUMPDEST PUSH2 0x3C9F DUP2 PUSH2 0x28D1 JUMP JUMPDEST POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x12004531 PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP6 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 DUP5 SWAP4 SWAP2 AND SWAP2 PUSH4 0x24008A62 SWAP2 PUSH1 0x84 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3D11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3D25 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3D3B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x3D5F JUMPI PUSH2 0x3D52 PUSH1 0x3 PUSH1 0x43 DUP4 PUSH2 0x4143 JUMP JUMPDEST SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH2 0x3FF0 SWAP1 POP JUMP JUMPDEST PUSH2 0x3D67 PUSH2 0x2320 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x3D7B JUMPI PUSH2 0x3D52 PUSH1 0xA PUSH1 0x44 PUSH2 0x3126 JUMP JUMPDEST PUSH2 0x3D83 PUSH2 0x5B92 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x3DAD DUP7 PUSH2 0x3298 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3DC4 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3DCF JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3DE6 JUMPI INVALID JUMPDEST EQ PUSH2 0x3E10 JUMPI PUSH2 0x3E02 PUSH1 0x9 PUSH1 0x42 DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x38B4 JUMPI INVALID JUMPDEST SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x3FF0 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 NOT DUP6 EQ ISZERO PUSH2 0x3E29 JUMPI PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x3E31 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD DUP6 SWAP1 MSTORE JUMPDEST PUSH2 0x3E3F DUP8 DUP3 PUSH1 0x40 ADD MLOAD PUSH2 0x5658 JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x3E54 SWAP2 PUSH2 0x3443 JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3E6B JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3E76 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3E8D JUMPI INVALID JUMPDEST EQ PUSH2 0x3EC9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5D33 PUSH1 0x3A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x3ED9 PUSH1 0xD SLOAD DUP3 PUSH1 0xE0 ADD MLOAD PUSH2 0x3443 JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3EF0 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3EFB JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3F12 JUMPI INVALID JUMPDEST EQ PUSH2 0x3F4E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5DB6 PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xA0 DUP1 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP11 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 DUP6 SSTORE PUSH1 0xC SLOAD PUSH1 0x1 SWAP1 SWAP6 ADD SWAP5 SWAP1 SWAP5 SSTORE PUSH1 0xC0 DUP8 ADD MLOAD PUSH1 0xD DUP2 SWAP1 SSTORE PUSH1 0xE0 DUP9 ADD MLOAD SWAP6 MLOAD DUP3 MLOAD SWAP5 DUP16 AND DUP6 MSTORE SWAP5 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP2 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x60 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x80 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 MLOAD PUSH32 0x1A2A22CB034D26D1854BDC6666A5B91FE25EFBBB5DCAD3B0355478D6F5C362A1 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0xE0 ADD MLOAD PUSH1 0x0 SWAP4 POP SWAP2 POP POP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xDD86FEA1 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 0x1EC7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x4057 DUP8 DUP8 PUSH2 0x41CC JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x406A JUMPI INVALID JUMPDEST EQ PUSH2 0x407B JUMPI POP SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH2 0x3FF0 JUMP JUMPDEST PUSH2 0x4085 DUP2 DUP7 PUSH2 0x3443 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x409D PUSH2 0x5B32 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x40B2 DUP7 PUSH8 0xDE0B6B3A7640000 PUSH2 0x494C JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x40C5 JUMPI INVALID JUMPDEST EQ PUSH2 0x40E4 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x2EB5 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x40F1 DUP4 DUP9 PUSH2 0x498B JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4104 JUMPI INVALID JUMPDEST EQ PUSH2 0x4126 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 SWAP5 POP SWAP3 POP PUSH2 0x2EB5 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP9 SWAP1 SWAP8 POP SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x45B96FE442630264581B197E84BBADA861235052C5A1AADFFF9EA4E40A969AA0 DUP5 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x4172 JUMPI INVALID JUMPDEST DUP5 PUSH1 0x63 DUP2 GT ISZERO PUSH2 0x417E JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 DUP2 ADD DUP6 SWAP1 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 PUSH1 0x3 DUP5 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x41AB JUMPI INVALID JUMPDEST EQ PUSH2 0x41C1 JUMPI DUP4 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x41BC JUMPI INVALID JUMPDEST PUSH2 0x1610 JUMP JUMPDEST POP PUSH2 0x3E8 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 DUP4 ADD DUP5 DUP2 LT PUSH2 0x41E4 JUMPI PUSH1 0x0 SWAP3 POP SWAP1 POP PUSH2 0x2EB5 JUMP JUMPDEST POP PUSH1 0x2 SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH2 0x2EB5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x41FC PUSH2 0x5B32 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x420D DUP7 PUSH1 0x0 ADD MLOAD DUP7 PUSH2 0x494C JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4220 JUMPI INVALID JUMPDEST EQ PUSH2 0x423F JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x2EB5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST MLOAD PUSH8 0xDE0B6B3A7640000 SWAP1 DIV SWAP1 JUMP JUMPDEST PUSH2 0x14A7 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x60 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x42AE JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x428F JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x4310 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 0x4315 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x43B4 JUMPI DUP1 MLOAD ISZERO PUSH2 0x432F JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST DUP4 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4379 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4361 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x43A6 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1A9D DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x15 DUP2 MSTORE PUSH1 0x20 ADD PUSH21 0x7375627472616374696F6E20756E646572666C6F77 PUSH1 0x58 SHL DUP2 MSTORE POP PUSH2 0x5835 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xA9059CBB PUSH1 0xE0 SHL OR SWAP1 MSTORE DUP3 MLOAD DUP1 DUP5 ADD SWAP1 SWAP4 MSTORE PUSH1 0x19 DUP4 MSTORE PUSH32 0x544F4B454E5F5452414E534645525F4F55545F4641494C454400000000000000 SWAP1 DUP4 ADD MSTORE PUSH2 0x4478 SWAP2 PUSH2 0x588F JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x4489 JUMPI POP DUP2 ISZERO JUMPDEST PUSH2 0x44C4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5E4F PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x44CC PUSH2 0x5BD8 JUMP JUMPDEST PUSH2 0x44D4 PUSH2 0x293C JUMP JUMPDEST PUSH1 0x40 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x44EB JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x44F6 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x450D JUMPI INVALID JUMPDEST EQ PUSH2 0x4531 JUMPI PUSH2 0x4529 PUSH1 0x9 PUSH1 0x2E DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x38B4 JUMPI INVALID JUMPDEST SWAP2 POP POP PUSH2 0x1A9D JUMP JUMPDEST DUP4 ISZERO PUSH2 0x45B2 JUMPI PUSH1 0x60 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD DUP3 MSTORE SWAP1 DUP3 ADD MLOAD DUP2 MSTORE PUSH2 0x4558 SWAP1 DUP6 PUSH2 0x2E68 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x456F JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x457A JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4591 JUMPI INVALID JUMPDEST EQ PUSH2 0x45AD JUMPI PUSH2 0x4529 PUSH1 0x9 PUSH1 0x2C DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x38B4 JUMPI INVALID JUMPDEST PUSH2 0x462B JUMP JUMPDEST PUSH2 0x45CE DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH1 0x40 ADD MLOAD DUP2 MSTORE POP PUSH2 0x591C JUMP JUMPDEST PUSH1 0x60 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x45E5 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x45F0 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4607 JUMPI INVALID JUMPDEST EQ PUSH2 0x4623 JUMPI PUSH2 0x4529 PUSH1 0x9 PUSH1 0x2D DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x38B4 JUMPI INVALID JUMPDEST PUSH1 0x80 DUP2 ADD DUP4 SWAP1 MSTORE JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x60 DUP3 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xEABE7D91 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP4 SWAP3 SWAP1 SWAP3 AND SWAP2 PUSH4 0xEABE7D91 SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4690 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x46A4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x46BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x46DA JUMPI PUSH2 0x46D1 PUSH1 0x3 PUSH1 0x2B DUP4 PUSH2 0x4143 JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x1A9D JUMP JUMPDEST PUSH2 0x46E2 PUSH2 0x2320 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x46F6 JUMPI PUSH2 0x46D1 PUSH1 0xA PUSH1 0x2F PUSH2 0x3126 JUMP JUMPDEST PUSH2 0x4706 PUSH1 0x11 SLOAD DUP4 PUSH1 0x60 ADD MLOAD PUSH2 0x3443 JUMP JUMPDEST PUSH1 0xA0 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP5 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x471D JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4728 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP3 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x473F JUMPI INVALID JUMPDEST EQ PUSH2 0x475B JUMPI PUSH2 0x46D1 PUSH1 0x9 PUSH1 0x31 DUP5 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x38B4 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 DUP4 ADD MLOAD PUSH2 0x4783 SWAP2 SWAP1 PUSH2 0x3443 JUMP JUMPDEST PUSH1 0xC0 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP5 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x479A JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x47A5 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP3 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x47BC JUMPI INVALID JUMPDEST EQ PUSH2 0x47D8 JUMPI PUSH2 0x46D1 PUSH1 0x9 PUSH1 0x30 DUP5 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x38B4 JUMPI INVALID JUMPDEST DUP2 PUSH1 0x80 ADD MLOAD PUSH2 0x47E5 PUSH2 0x2EBC JUMP JUMPDEST LT ISZERO PUSH2 0x47F7 JUMPI PUSH2 0x46D1 PUSH1 0xE PUSH1 0x32 PUSH2 0x3126 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MLOAD PUSH1 0x11 SSTORE PUSH1 0xC0 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x482D SWAP1 DUP8 SWAP1 PUSH2 0x43F7 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MLOAD PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD ADDRESS SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5D96 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 PUSH1 0x80 DUP3 ADD MLOAD PUSH1 0x60 DUP1 DUP5 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP4 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE MLOAD PUSH32 0xE5B754FB1ABB7F01B499791D0B820AE3B6AF3424AC1C59768EDB53F4EC31A929 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x5 SLOAD PUSH1 0x80 DUP4 ADD MLOAD PUSH1 0x60 DUP5 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x51DFF989 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x64 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x51DFF989 SWAP2 PUSH1 0x84 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4921 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4935 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x0 SWAP3 POP PUSH2 0x4942 SWAP2 POP POP JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH2 0x495F JUMPI POP PUSH1 0x0 SWAP1 POP DUP1 PUSH2 0x2EB5 JUMP JUMPDEST DUP4 DUP4 MUL DUP4 DUP6 DUP3 DUP2 PUSH2 0x496C JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x4980 JUMPI POP PUSH1 0x2 SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH2 0x2EB5 JUMP JUMPDEST PUSH1 0x0 SWAP3 POP SWAP1 POP PUSH2 0x2EB5 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH2 0x499F JUMPI POP PUSH1 0x1 SWAP1 POP PUSH1 0x0 PUSH2 0x2EB5 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x49AA JUMPI INVALID JUMPDEST DIV SWAP2 POP SWAP2 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x4EF4C3E1 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 DUP5 SWAP4 SWAP2 AND SWAP2 PUSH4 0x4EF4C3E1 SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4A17 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4A2B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4A41 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x4A65 JUMPI PUSH2 0x4A58 PUSH1 0x3 PUSH1 0x21 DUP4 PUSH2 0x4143 JUMP JUMPDEST SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH2 0x2EB5 SWAP1 POP JUMP JUMPDEST PUSH2 0x4A6D PUSH2 0x2320 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x4A81 JUMPI PUSH2 0x4A58 PUSH1 0xA PUSH1 0x24 PUSH2 0x3126 JUMP JUMPDEST PUSH2 0x4A89 PUSH2 0x5BD8 JUMP JUMPDEST PUSH2 0x4A91 PUSH2 0x293C JUMP JUMPDEST PUSH1 0x40 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4AA8 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4AB3 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4ACA JUMPI INVALID JUMPDEST EQ PUSH2 0x4AF4 JUMPI PUSH2 0x4AE6 PUSH1 0x9 PUSH1 0x23 DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x38B4 JUMPI INVALID JUMPDEST SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x2EB5 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x4AFE DUP7 DUP7 PUSH2 0x5658 JUMP JUMPDEST PUSH1 0xC0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD DUP3 MSTORE SWAP1 DUP4 ADD MLOAD DUP2 MSTORE PUSH2 0x4B1F SWAP2 SWAP1 PUSH2 0x591C JUMP JUMPDEST PUSH1 0x60 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4B36 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4B41 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4B58 JUMPI INVALID JUMPDEST EQ PUSH2 0x4BAA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D494E545F45584348414E47455F43414C43554C4154494F4E5F4641494C4544 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x4BBA PUSH1 0x11 SLOAD DUP3 PUSH1 0x60 ADD MLOAD PUSH2 0x340D JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x4BE7 SWAP2 SWAP1 PUSH2 0x340D JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MLOAD PUSH1 0x11 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0xC0 DUP5 ADD MLOAD PUSH1 0x60 DUP1 DUP7 ADD MLOAD DUP4 MLOAD SWAP5 DUP6 MSTORE SWAP5 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE MLOAD PUSH32 0x4C209B5FC8AD50758F13E2E1088BA56A560DFF690A1C6FEF26394F4C03821C4F SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 ADDRESS SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5D96 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 PUSH1 0x5 SLOAD PUSH1 0xC0 DUP3 ADD MLOAD PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x41C728B9 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x64 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x41C728B9 SWAP2 PUSH1 0x84 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4CFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4D13 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x0 SWAP3 POP PUSH2 0x4D20 SWAP2 POP POP JUMP JUMPDEST DUP2 PUSH1 0xC0 ADD MLOAD SWAP4 POP SWAP4 POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 ADD DUP3 DUP6 DUP3 LT ISZERO PUSH2 0x14E4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x4379 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4361 JUMP JUMPDEST PUSH2 0x4D8F PUSH2 0x5B32 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x4DA8 DUP6 PUSH1 0x0 ADD MLOAD DUP6 PUSH2 0x5933 JUMP JUMPDEST SWAP1 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4DBB PUSH2 0x5B32 JUMP JUMPDEST PUSH2 0x4DC5 DUP5 DUP5 PUSH2 0x4D87 JUMP JUMPDEST SWAP1 POP PUSH2 0x1610 DUP2 PUSH2 0x425A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4DDA PUSH2 0x5B32 JUMP JUMPDEST PUSH2 0x4DE4 DUP6 DUP6 PUSH2 0x4D87 JUMP JUMPDEST SWAP1 POP PUSH2 0x43B4 PUSH2 0x4DF2 DUP3 PUSH2 0x425A JUMP JUMPDEST DUP5 PUSH2 0x340D JUMP JUMPDEST PUSH1 0x0 PUSH8 0xDE0B6B3A7640000 PUSH2 0x4E11 DUP5 DUP5 PUSH1 0x0 ADD MLOAD PUSH2 0x5933 JUMP JUMPDEST DUP2 PUSH2 0x4E18 JUMPI INVALID JUMPDEST DIV SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x368F5153 PUSH1 0xE2 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 AND SWAP2 PUSH4 0xDA3D454C SWAP2 PUSH1 0x64 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4E7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4E91 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4EA7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x4EC6 JUMPI PUSH2 0x4EBE PUSH1 0x3 PUSH1 0x10 DUP4 PUSH2 0x4143 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x10F2 JUMP JUMPDEST PUSH2 0x4ECE PUSH2 0x2320 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x4EE2 JUMPI PUSH2 0x4EBE PUSH1 0xA PUSH1 0xC PUSH2 0x3126 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4EEC PUSH2 0x2EBC JUMP JUMPDEST SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x4F0B JUMPI PUSH2 0x4F02 PUSH1 0xE PUSH1 0xB PUSH2 0x3126 JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x10F2 JUMP JUMPDEST PUSH2 0x4F13 PUSH2 0x5C16 JUMP JUMPDEST PUSH2 0x4F1C DUP7 PUSH2 0x3298 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4F30 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4F3B JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4F4F JUMPI INVALID JUMPDEST EQ PUSH2 0x4F74 JUMPI PUSH2 0x4F6A PUSH1 0x9 DUP1 DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x38B4 JUMPI INVALID JUMPDEST SWAP4 POP POP POP POP PUSH2 0x10F2 JUMP JUMPDEST PUSH2 0x4F82 DUP2 PUSH1 0x20 ADD MLOAD DUP7 PUSH2 0x41CC JUMP JUMPDEST PUSH1 0x40 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4F96 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4FA1 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4FB5 JUMPI INVALID JUMPDEST EQ PUSH2 0x4FD1 JUMPI PUSH2 0x4F6A PUSH1 0x9 PUSH1 0xE DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x38B4 JUMPI INVALID JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 DUP4 ADD MLOAD DUP2 MLOAD PUSH4 0x1DE6C8A5 PUSH1 0xE2 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x779B2294 SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x502A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x503E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5054 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 POP DUP3 ISZERO PUSH2 0x506B JUMPI PUSH2 0x4F6A PUSH1 0x3 PUSH1 0x10 DUP6 PUSH2 0x4143 JUMP JUMPDEST PUSH2 0x5077 PUSH1 0xD SLOAD DUP7 PUSH2 0x41CC JUMP JUMPDEST PUSH1 0x60 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x508B JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x5096 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x50AA JUMPI INVALID JUMPDEST EQ PUSH2 0x50C6 JUMPI PUSH2 0x4F6A PUSH1 0x9 PUSH1 0xD DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x38B4 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 MSTORE SWAP2 SWAP1 SWAP2 KECCAK256 SWAP1 DUP2 SSTORE PUSH1 0xC SLOAD PUSH1 0x1 SWAP1 SWAP2 ADD SSTORE PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0xD SSTORE PUSH2 0x5102 DUP7 DUP7 PUSH2 0x43F7 JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 ADD MLOAD PUSH1 0x60 DUP1 DUP5 ADD MLOAD DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP11 SWAP1 MSTORE DUP1 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP1 DUP3 ADD MSTORE SWAP1 MLOAD PUSH32 0x13ED6866D4E1EE6DA46F845C46D7E54120883D75C5EA9A2DACC1C4CA8984AB80 SWAP2 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG1 PUSH1 0x0 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x2FE3F38F PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP8 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE DUP7 DUP2 AND PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x84 DUP3 ADD DUP7 SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 DUP5 SWAP4 SWAP2 AND SWAP2 PUSH4 0x5FC7E71E SWAP2 PUSH1 0xA4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x51D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x51EB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5201 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x5225 JUMPI PUSH2 0x5218 PUSH1 0x3 PUSH1 0x14 DUP4 PUSH2 0x4143 JUMP JUMPDEST SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH2 0x564F SWAP1 POP JUMP JUMPDEST PUSH2 0x522D PUSH2 0x2320 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x5241 JUMPI PUSH2 0x5218 PUSH1 0xA PUSH1 0x18 PUSH2 0x3126 JUMP JUMPDEST PUSH2 0x5249 PUSH2 0x2320 JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6C540BAF 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 0x5282 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5296 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x52AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD EQ PUSH2 0x52BF JUMPI PUSH2 0x5218 PUSH1 0xA PUSH1 0x13 PUSH2 0x3126 JUMP JUMPDEST DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x52E5 JUMPI PUSH2 0x5218 PUSH1 0x6 PUSH1 0x19 PUSH2 0x3126 JUMP JUMPDEST DUP5 PUSH2 0x52F6 JUMPI PUSH2 0x5218 PUSH1 0x7 PUSH1 0x17 PUSH2 0x3126 JUMP JUMPDEST PUSH1 0x0 NOT DUP6 EQ ISZERO PUSH2 0x530C JUMPI PUSH2 0x5218 PUSH1 0x7 PUSH1 0x16 PUSH2 0x3126 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x531A DUP10 DUP10 DUP10 PUSH2 0x3CA8 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP DUP2 ISZERO PUSH2 0x534A JUMPI PUSH2 0x533B DUP3 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x5334 JUMPI INVALID JUMPDEST PUSH1 0x1A PUSH2 0x3126 JUMP JUMPDEST SWAP5 POP PUSH1 0x0 SWAP4 POP PUSH2 0x564F SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xC488847B PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP6 SWAP1 MSTORE DUP3 MLOAD PUSH1 0x0 SWAP5 DUP6 SWAP5 SWAP3 AND SWAP3 PUSH4 0xC488847B SWAP3 PUSH1 0x64 DUP1 DUP4 ADD SWAP4 SWAP2 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x53A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x53B8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x53CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 POP SWAP1 POP DUP2 ISZERO PUSH2 0x5419 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x33 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5DE7 PUSH1 0x33 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 DUP9 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 DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5470 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5484 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x549A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT ISZERO PUSH2 0x54EF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C49515549444154455F5345495A455F544F4F5F4D5543480000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND ADDRESS EQ ISZERO PUSH2 0x5515 JUMPI PUSH2 0x550E ADDRESS DUP14 DUP14 DUP6 PUSH2 0x3766 JUMP JUMPDEST SWAP1 POP PUSH2 0x559F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xB2A02FF1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP15 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP14 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD SWAP2 DUP12 AND SWAP2 PUSH4 0xB2A02FF1 SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5570 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5584 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x559A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP JUMPDEST DUP1 ISZERO PUSH2 0x55E9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x1D1BDAD95B881CD95A5E9D5C994819985A5B1959 PUSH1 0x62 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP16 AND DUP3 MSTORE DUP1 DUP15 AND PUSH1 0x20 DUP4 ADD MSTORE DUP2 DUP4 ADD DUP8 SWAP1 MSTORE DUP12 AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP2 ADD DUP5 SWAP1 MSTORE SWAP1 MLOAD PUSH32 0x298637F684DA70674F26509B10F07EC2FBC77A335AB1E7D6215A4B2484D8BB52 SWAP2 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 LOG1 PUSH1 0x0 SWAP8 POP SWAP3 SWAP6 POP POP POP POP POP POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x15 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 DUP4 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x56A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x56BC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x56D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x24 DUP3 ADD MSTORE ADDRESS PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP1 DUP3 ADD DUP8 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x23B872DD PUSH1 0xE0 SHL OR SWAP1 MSTORE DUP3 MLOAD DUP1 DUP5 ADD SWAP1 SWAP4 MSTORE PUSH1 0x18 DUP4 MSTORE PUSH32 0x544F4B454E5F5452414E534645525F494E5F4641494C45440000000000000000 SWAP1 DUP4 ADD MSTORE SWAP2 SWAP3 POP PUSH2 0x575F SWAP2 SWAP1 PUSH2 0x588F JUMP JUMPDEST PUSH1 0x15 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x57AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x57BE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x57D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP2 DUP2 LT ISZERO PUSH2 0x582D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x544F4B454E5F5452414E534645525F494E5F4F564552464C4F57000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SUB SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x5887 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x4379 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4361 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x15 SLOAD PUSH1 0x60 SWAP1 PUSH2 0x58A9 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 DUP5 PUSH2 0x426E JUMP JUMPDEST DUP1 MLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0x5917 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x58C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP3 SWAP1 PUSH2 0x16B0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x4379 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4361 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x5929 PUSH2 0x5B32 JUMP JUMPDEST PUSH2 0x2E7F DUP7 DUP7 PUSH2 0x5975 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1A9D DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x17 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x6D756C7469706C69636174696F6E206F766572666C6F77000000000000000000 DUP2 MSTORE POP PUSH2 0x59D4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x597F PUSH2 0x5B32 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x5994 PUSH8 0xDE0B6B3A7640000 DUP8 PUSH2 0x494C JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x59A7 JUMPI INVALID JUMPDEST EQ PUSH2 0x59C6 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x2EB5 JUMP JUMPDEST PUSH2 0x2EAE DUP2 DUP7 PUSH1 0x0 ADD MLOAD PUSH2 0x4093 JUMP JUMPDEST PUSH1 0x0 DUP4 ISZERO DUP1 PUSH2 0x59E1 JUMPI POP DUP3 ISZERO JUMPDEST ISZERO PUSH2 0x59EE JUMPI POP PUSH1 0x0 PUSH2 0x1A9D JUMP JUMPDEST DUP4 DUP4 MUL DUP4 DUP6 DUP3 DUP2 PUSH2 0x59FB JUMPI INVALID JUMPDEST DIV EQ DUP4 SWAP1 PUSH2 0x14E4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x4379 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4361 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x5A8B JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x5AB8 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x5AB8 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x5AB8 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x5A9D JUMP JUMPDEST POP PUSH2 0x18E8 SWAP3 SWAP2 POP PUSH2 0x5C3F JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x5B05 JUMPI DUP3 DUP1 ADD PUSH1 0xFF NOT DUP3 CALLDATALOAD AND OR DUP6 SSTORE PUSH2 0x5AB8 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x5AB8 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x5AB8 JUMPI DUP3 CALLDATALOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x5B17 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x120 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x100 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xE0 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH2 0x14A4 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x18E8 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x5C45 JUMP INVALID PUSH14 0x61726B6574206D6179206F6E6C79 KECCAK256 PUSH3 0x652069 PUSH15 0x697469616C697A6564206F6E636569 PUSH15 0x697469616C2065786368616E676520 PUSH19 0x617465206D7573742062652067726561746572 KECCAK256 PUSH21 0x68616E207A65726F2E6F6E6C79207468652061646D PUSH10 0x6E206D61792073657420 PUSH21 0x686520636F6D702D6C696B652064656C6567617465 PUSH20 0x657474696E6720696E7465726573742072617465 KECCAK256 PUSH14 0x6F64656C206661696C6564626F72 PUSH19 0x6F7742616C616E636553746F7265643A20626F PUSH19 0x726F7742616C616E636553746F726564496E74 PUSH6 0x726E616C2066 PUSH2 0x696C PUSH6 0x645245504159 0x5F TIMESTAMP 0x4F MSTORE MSTORE 0x4F JUMPI 0x5F 0x4E GASLIMIT JUMPI 0x5F COINBASE NUMBER NUMBER 0x4F SSTORE 0x4E SLOAD 0x5F TIMESTAMP 0x4F MSTORE MSTORE 0x4F JUMPI 0x5F TIMESTAMP COINBASE 0x4C COINBASE 0x4E NUMBER GASLIMIT 0x5F NUMBER COINBASE 0x4C NUMBER SSTORE 0x4C COINBASE SLOAD 0x49 0x4F 0x4E 0x5F CHAINID COINBASE 0x49 0x4C GASLIMIT DIFFICULTY PUSH16 0x6E6C7920467573652061646D696E206D PUSH2 0x7920 PUSH10 0x6E697469616C697A6520 PUSH21 0x6865206D61726B6574DDF252AD1BE2C89B69C2B068 0xFC CALLDATACOPY DUP14 0xAA SWAP6 0x2B 0xA7 CALL PUSH4 0xC4A11628 CREATE2 GAS 0x4D CREATE2 0x23 0xB3 0xEF MSTORE GASLIMIT POP COINBASE MSIZE 0x5F TIMESTAMP 0x4F MSTORE MSTORE 0x4F JUMPI 0x5F 0x4E GASLIMIT JUMPI 0x5F SLOAD 0x4F SLOAD COINBASE 0x4C 0x5F TIMESTAMP COINBASE 0x4C COINBASE 0x4E NUMBER GASLIMIT 0x5F NUMBER COINBASE 0x4C NUMBER SSTORE 0x4C COINBASE SLOAD 0x49 0x4F 0x4E 0x5F CHAINID COINBASE 0x49 0x4C GASLIMIT DIFFICULTY 0x4C 0x49 MLOAD SSTORE 0x49 DIFFICULTY COINBASE SLOAD GASLIMIT 0x5F NUMBER 0x4F 0x4D POP SLOAD MSTORE 0x4F 0x4C 0x4C GASLIMIT MSTORE 0x5F NUMBER COINBASE 0x4C NUMBER SSTORE 0x4C COINBASE SLOAD GASLIMIT 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD 0x5F MSTORE8 GASLIMIT 0x49 GAS GASLIMIT 0x5F CHAINID COINBASE 0x49 0x4C GASLIMIT DIFFICULTY PUSH6 0x786368616E67 PUSH6 0x526174655374 PUSH16 0x7265643A2065786368616E6765526174 PUSH6 0x53746F726564 0x49 PUSH15 0x7465726E616C206661696C65646F6E PUSH6 0x206F66207265 PUSH5 0x65656D546F PUSH12 0x656E73496E206F7220726564 PUSH6 0x656D416D6F75 PUSH15 0x74496E206D757374206265207A6572 PUSH16 0xA265627A7A723158206BB55A57464618 0x28 0xEB 0xE5 CREATE2 DUP5 0x29 0xE4 DUP4 MLOAD 0xBD 0xCA MSIZE COINBASE DUP5 0x5D PUSH19 0xAC9A60D0DB0EED14CE64736F6C634300051100 ORIGIN ","sourceMap":"187:1063:5:-;;;;;;;;;"},"deployedBytecode":{"linkReferences":{},"object":"6080604052600436106103765760003560e01c8063852a12e3116101d1578063ae9d70b011610102578063dc028ab1116100a0578063f5e3c4621161006f578063f5e3c46214610f69578063f8f9da2814610fac578063fca7820b14610fc1578063fe9c44ae14610feb57610376565b8063dc028ab114610ed1578063dd62ed3e14610ee6578063f2b3abbd14610f21578063f3fdb15a14610f5457610376565b8063c37f68e2116100dc578063c37f68e214610e0f578063c5ebeaec14610e68578063db006a7514610e92578063dbfe7c1914610ebc57610376565b8063ae9d70b014610da2578063b2a02ff114610db7578063bd6d894d14610dfa57610376565b8063a0712d681161016f578063a7b820df11610149578063a7b820df14610d15578063a9059cbb14610d3f578063aa5af0fd14610d78578063ac784ddc14610d8d57610376565b8063a0712d6814610b7a578063a0b0d28914610ba4578063a6afed9514610d0057610376565b806391dd36c6116101ab57806391dd36c614610ade57806395d89b4114610b0857806395dd919314610b1d578063a03dce8d14610b5057610376565b8063852a12e314610a8a5780638d02d9a114610ab45780638f840ddd14610ac957610376565b80633b1d21a2116102ab57806361feacff116102495780636f307dc3116102235780636f307dc3146109fa57806370a0823114610a0f57806373acee9814610a425780637f1e06be14610a5757610376565b806361feacff146109bb5780636752e702146109d05780636c540baf146109e557610376565b806356e677281161028557806356e67728146108d05780635c60da1b1461094b5780635fe3b5671461097c578063601a0bf11461099157610376565b80633b1d21a21461081457806347bd37181461082957806350d85b731461083e57610376565b8063182df0f5116103185780632608f818116102f25780632608f818146106b2578063313ce567146106eb57806334154d4c146107165780633af9e669146107e157610376565b8063182df0f5146106525780631db789441461066757806323b872dd1461066f57610376565b80630f8855e8116103545780630f8855e81461048e578063173b9904146105f557806317bfdfbc1461060a57806318160ddd1461063d57610376565b806306fdde031461037b578063095ea7b3146104055780630e75270214610452575b600080fd5b34801561038757600080fd5b50610390611000565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103ca5781810151838201526020016103b2565b50505050905090810190601f1680156103f75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561041157600080fd5b5061043e6004803603604081101561042857600080fd5b506001600160a01b03813516906020013561108b565b604080519115158252519081900360200190f35b34801561045e57600080fd5b5061047c6004803603602081101561047557600080fd5b50356110f8565b60408051918252519081900360200190f35b34801561049a57600080fd5b506105f360048036036101008110156104b257600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b8111156104ec57600080fd5b8201836020820111156104fe57600080fd5b803590602001918460018302840111600160201b8311171561051f57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561057157600080fd5b82018360208201111561058357600080fd5b803590602001918460018302840111600160201b831117156105a457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505060ff833516935050506020810135906040013561110e565b005b34801561060157600080fd5b5061047c6113bc565b34801561061657600080fd5b5061047c6004803603602081101561062d57600080fd5b50356001600160a01b03166113c2565b34801561064957600080fd5b5061047c61143e565b34801561065e57600080fd5b5061047c611444565b6105f36114a7565b34801561067b57600080fd5b5061043e6004803603606081101561069257600080fd5b506001600160a01b038135811691602081013590911690604001356114a9565b3480156106be57600080fd5b5061047c600480360360408110156106d557600080fd5b506001600160a01b0381351690602001356114d7565b3480156106f757600080fd5b506107006114ed565b6040805160ff9092168252519081900360200190f35b34801561072257600080fd5b506105f36004803603604081101561073957600080fd5b810190602081018135600160201b81111561075357600080fd5b82018360208201111561076557600080fd5b803590602001918460018302840111600160201b8311171561078657600080fd5b919390929091602081019035600160201b8111156107a357600080fd5b8201836020820111156107b557600080fd5b803590602001918460018302840111600160201b831117156107d657600080fd5b5090925090506114f6565b3480156107ed57600080fd5b5061047c6004803603602081101561080457600080fd5b50356001600160a01b0316611562565b34801561082057600080fd5b5061047c611618565b34801561083557600080fd5b5061047c611627565b34801561084a57600080fd5b506105f36004803603606081101561086157600080fd5b6001600160a01b03823516916020810135151591810190606081016040820135600160201b81111561089257600080fd5b8201836020820111156108a457600080fd5b803590602001918460018302840111600160201b831117156108c557600080fd5b50909250905061162d565b3480156108dc57600080fd5b506105f3600480360360208110156108f357600080fd5b810190602081018135600160201b81111561090d57600080fd5b82018360208201111561091f57600080fd5b803590602001918460018302840111600160201b8311171561094057600080fd5b5090925090506116b6565b34801561095757600080fd5b506109606117c9565b604080516001600160a01b039092168252519081900360200190f35b34801561098857600080fd5b506109606117d8565b34801561099d57600080fd5b5061047c600480360360208110156109b457600080fd5b50356117e7565b3480156109c757600080fd5b5061047c611838565b3480156109dc57600080fd5b5061047c61183e565b3480156109f157600080fd5b5061047c611849565b348015610a0657600080fd5b5061096061184f565b348015610a1b57600080fd5b5061047c60048036036020811015610a3257600080fd5b50356001600160a01b031661185e565b348015610a4e57600080fd5b5061047c611879565b348015610a6357600080fd5b506105f360048036036020811015610a7a57600080fd5b50356001600160a01b03166118ec565b348015610a9657600080fd5b5061047c60048036036020811015610aad57600080fd5b5035611991565b348015610ac057600080fd5b5061047c61199c565b348015610ad557600080fd5b5061047c6119a2565b348015610aea57600080fd5b5061047c60048036036020811015610b0157600080fd5b50356119a8565b348015610b1457600080fd5b506103906119e5565b348015610b2957600080fd5b5061047c60048036036020811015610b4057600080fd5b50356001600160a01b0316611a40565b348015610b5c57600080fd5b5061047c60048036036020811015610b7357600080fd5b5035611aa4565b348015610b8657600080fd5b5061047c60048036036020811015610b9d57600080fd5b5035611ae1565b348015610bb057600080fd5b506105f3600480360360e0811015610bc757600080fd5b6001600160a01b0382358116926020810135821692604082013590921691810190608081016060820135600160201b811115610c0257600080fd5b820183602082011115610c1457600080fd5b803590602001918460018302840111600160201b83111715610c3557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115610c8757600080fd5b820183602082011115610c9957600080fd5b803590602001918460018302840111600160201b83111715610cba57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505082359350505060200135611aed565b348015610d0c57600080fd5b5061047c611c06565b348015610d2157600080fd5b5061047c60048036036020811015610d3857600080fd5b5035611dcb565b348015610d4b57600080fd5b5061043e60048036036040811015610d6257600080fd5b506001600160a01b038135169060200135611e08565b348015610d8457600080fd5b5061047c611e35565b348015610d9957600080fd5b5061043e611e3b565b348015610dae57600080fd5b5061047c611e40565b348015610dc357600080fd5b5061047c60048036036060811015610dda57600080fd5b506001600160a01b03813581169160208101359091169060400135611ef8565b348015610e0657600080fd5b5061047c611f1c565b348015610e1b57600080fd5b50610e4260048036036020811015610e3257600080fd5b50356001600160a01b0316611f90565b604080519485526020850193909352838301919091526060830152519081900360800190f35b348015610e7457600080fd5b5061047c60048036036020811015610e8b57600080fd5b5035612025565b348015610e9e57600080fd5b5061047c60048036036020811015610eb557600080fd5b5035612030565b348015610ec857600080fd5b5061047c61203b565b348015610edd57600080fd5b5061047c612041565b348015610ef257600080fd5b5061047c60048036036040811015610f0957600080fd5b506001600160a01b0381358116916020013516612047565b348015610f2d57600080fd5b5061047c60048036036020811015610f4457600080fd5b50356001600160a01b0316612072565b348015610f6057600080fd5b506109606120ac565b348015610f7557600080fd5b5061047c60048036036060811015610f8c57600080fd5b506001600160a01b038135811691602081013591604090910135166120bb565b348015610fb857600080fd5b5061047c6120d3565b348015610fcd57600080fd5b5061047c60048036036020811015610fe457600080fd5b5035612148565b348015610ff757600080fd5b5061043e612185565b6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156110835780601f1061105857610100808354040283529160200191611083565b820191906000526020600020905b81548152906001019060200180831161106657829003601f168201915b505050505081565b3360008181526013602090815260408083206001600160a01b03871680855290835281842086905581518681529151939493909284927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a360019150505b92915050565b6000806111048361218a565b509150505b919050565b3373a731585ab05fc9f83555cf9bff8f58ee94e18f85146111605760405162461bcd60e51b8152600401808060200182810382526029815260200180615d6d6029913960400191505060405180910390fd5b600b541580156111705750600c54155b6111ab5760405162461bcd60e51b8152600401808060200182810382526023815260200180615c5a6023913960400191505060405180910390fd5b6007869055856111ec5760405162461bcd60e51b8152600401808060200182810382526030815260200180615c7d6030913960400191505060405180910390fd5b60006111f7896121ed565b9050801561124c576040805162461bcd60e51b815260206004820152601a60248201527f73657474696e6720636f6d7074726f6c6c6572206661696c6564000000000000604482015290519081900360640190fd5b611254612320565b600b55670de0b6b3a7640000600c5561126c88612324565b905080156112ab5760405162461bcd60e51b8152600401808060200182810382526022815260200180615cda6022913960400191505060405180910390fd5b85516112be906002906020890190615a4a565b5084516112d2906003906020880190615a4a565b506004805460ff191660ff86161790556112eb8361262a565b90508015611340576040805162461bcd60e51b815260206004820152601d60248201527f73657474696e67207265736572766520666163746f72206661696c6564000000604482015290519081900360640190fd5b611349826126e3565b9050801561139e576040805162461bcd60e51b815260206004820152601860248201527f73657474696e672061646d696e20666565206661696c65640000000000000000604482015290519081900360640190fd5b50506001805460ff60b01b1916600160b01b17905550505050505050565b600a5481565b6000806113ce81612808565b60006113d8611c06565b14611423576040805162461bcd60e51b81526020600482015260166024820152751858d8dc9d59481a5b9d195c995cdd0819985a5b195960521b604482015290519081900360640190fd5b61142c83611a40565b91505b611438816128d1565b50919050565b60115481565b600080600061145161293c565b9092509050600082600381111561146457fe5b146114a05760405162461bcd60e51b8152600401808060200182810382526035815260200180615e1a6035913960400191505060405180910390fd5b9150505b90565b565b6000806114b581612808565b60006114c3338787876129fc565b1491506114cf816128d1565b509392505050565b6000806114e48484612c88565b50949350505050565b60045460ff1681565b6114fe612ced565b611542576040805162461bcd60e51b815260206004820152601060248201526f31b0b63632b9103737ba1030b236b4b760811b604482015290519081900360640190fd5b61154e60028585615ac4565b5061155b60038383615ac4565b5050505050565b600061156c615b32565b604051806020016040528061157f611f1c565b90526001600160a01b0384166000908152601260205260408120549192509081906115ab908490612e68565b909250905060008260038111156115be57fe5b14611610576040805162461bcd60e51b815260206004820152601f60248201527f62616c616e636520636f756c64206e6f742062652063616c63756c6174656400604482015290519081900360640190fd5b949350505050565b6000611622612ebc565b905090565b600d5481565b611635612ced565b61166f576040805162461bcd60e51b815260206004820152600660248201526510b0b236b4b760d11b604482015290519081900360640190fd5b6116b0848484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612f0a92505050565b50505050565b7366f4856f1bbd1eb09e1c8d9d646f5a3a193da56973cae4210e6676727ea4e0fd9ba5dfb95831356a16333014806116f157506116f1612ced565b61172a576040805162461bcd60e51b815260206004820152600560248201526410b9b2b63360d91b604482015290519081900360640190fd5b6000611734611c06565b14611770576040805162461bcd60e51b81526020600482015260076024820152662161636372756560c81b604482015290519081900360640190fd5b6001600160a01b0380831660008181526012602090815260408083208054908490559486168084529281902085905580518581529051929392600080516020615d96833981519152929181900390910190a35050505050565b6000546001600160a01b031681565b6005546001600160a01b031681565b6000806117f381612808565b60006117fd611c06565b905080156118235761181b81601181111561181457fe5b603b613126565b92505061142f565b61182c8461318c565b925050611438816128d1565b600f5481565b666379da05b6000081565b600b5481565b6015546001600160a01b031681565b6001600160a01b031660009081526012602052604090205490565b60008061188581612808565b600061188f611c06565b146118da576040805162461bcd60e51b81526020600482015260166024820152751858d8dc9d59481a5b9d195c995cdd0819985a5b195960521b604482015290519081900360640190fd5b600d5491506118e8816128d1565b5090565b6118f4612ced565b61192f5760405162461bcd60e51b815260040180806020018281038252602d815260200180615cad602d913960400191505060405180910390fd5b601554604080516317066a5760e21b81526001600160a01b03848116600483015291519190921691635c19a95c91602480830192600092919082900301818387803b15801561197d57600080fd5b505af115801561155b573d6000803e3d6000fd5b60006110f282613258565b60085481565b600e5481565b6000806119b481612808565b60006119be611c06565b905080156119dc5761181b8160118111156119d557fe5b6052613126565b61182c846126e3565b6003805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156110835780601f1061105857610100808354040283529160200191611083565b6000806000611a4e84613298565b90925090506000826003811115611a6157fe5b14611a9d5760405162461bcd60e51b8152600401808060200182810382526037815260200180615cfc6037913960400191505060405180910390fd5b9392505050565b600080611ab081612808565b6000611aba611c06565b90508015611ad85761181b816011811115611ad157fe5b6033613126565b61182c8461334c565b600080611104836133cd565b60006702c68af0bb14000090506000886001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015611b3557600080fd5b505afa158015611b49573d6000803e3d6000fd5b505050506040513d6020811015611b5f57600080fd5b50519050611b738888848989868a8a61110e565b601580546001600160a01b0319166001600160a01b038b81169190911791829055604080516318160ddd60e01b8152905192909116916318160ddd91600480820192602092909190829003018186803b158015611bcf57600080fd5b505afa158015611be3573d6000803e3d6000fd5b505050506040513d6020811015611bf957600080fd5b5050505050505050505050565b600080611c11612320565b905080600b541415611c275760009150506114a4565b6000611c31612ebc565b90506000600660009054906101000a90046001600160a01b03166001600160a01b03166315f2405383600d54611c76600e54611c71600f5460105461340d565b61340d565b6040518463ffffffff1660e01b815260040180848152602001838152602001828152602001935050505060206040518083038186803b158015611cb857600080fd5b505afa158015611ccc573d6000803e3d6000fd5b505050506040513d6020811015611ce257600080fd5b5051905065048c27395000811115611d41576040805162461bcd60e51b815260206004820152601c60248201527f626f72726f772072617465206973206162737572646c79206869676800000000604482015290519081900360640190fd5b600080611d5085600b54613443565b90925090506000826003811115611d6357fe5b14611db5576040805162461bcd60e51b815260206004820152601f60248201527f636f756c64206e6f742063616c63756c61746520626c6f636b2064656c746100604482015290519081900360640190fd5b611dc185858584613466565b9550505050505090565b600080611dd781612808565b6000611de1611c06565b90508015611dff5761181b816011811115611df857fe5b6037613126565b61182c8461367e565b600080611e1481612808565b6000611e22333387876129fc565b149150611e2e816128d1565b5092915050565b600c5481565b600081565b6006546000906001600160a01b031663b8168816611e5c612ebc565b600d54611e73600e54611c71600f5460105461340d565b600854600954600a5401016040518563ffffffff1660e01b81526004018085815260200184815260200183815260200182815260200194505050505060206040518083038186803b158015611ec757600080fd5b505afa158015611edb573d6000803e3d6000fd5b505050506040513d6020811015611ef157600080fd5b5051905090565b60006001611f0581612808565b611f1133868686613766565b91506114cf816128d1565b600080611f2881612808565b6000611f32611c06565b14611f7d576040805162461bcd60e51b81526020600482015260166024820152751858d8dc9d59481a5b9d195c995cdd0819985a5b195960521b604482015290519081900360640190fd5b611f85611444565b91506118e8816128d1565b6001600160a01b038116600090815260126020526040812054819081908190818080611fbb89613298565b935090506000816003811115611fcd57fe5b14611feb5760095b97506000965086955085945061201e9350505050565b611ff361293c565b92509050600081600381111561200557fe5b14612011576009611fd5565b5060009650919450925090505b9193509193565b60006110f282613b45565b60006110f282613b83565b60095481565b60105481565b6001600160a01b03918216600090815260136020908152604080832093909416825291909152205490565b60008061207d611c06565b905080156120a35761209b81601181111561209457fe5b604b613126565b915050611109565b611a9d83612324565b6006546001600160a01b031681565b6000806120c9858585613bbc565b5095945050505050565b6006546000906001600160a01b03166315f240536120ef612ebc565b600d54612106600e54611c71600f5460105461340d565b6040518463ffffffff1660e01b815260040180848152602001838152602001828152602001935050505060206040518083038186803b158015611ec757600080fd5b60008061215481612808565b600061215e611c06565b9050801561217c5761181b81601181111561217557fe5b6059613126565b61182c8461262a565b600181565b600080600061219881612808565b60006121a2611c06565b905080156121cd576121c08160118111156121b957fe5b6041613126565b9350600092506121de9050565b6121d8333387613ca8565b93509350505b6121e7816128d1565b50915091565b600080600560009054906101000a90046001600160a01b03169050826001600160a01b0316627e3dd26040518163ffffffff1660e01b815260040160206040518083038186803b15801561224057600080fd5b505afa158015612254573d6000803e3d6000fd5b505050506040513d602081101561226a57600080fd5b50516122bd576040805162461bcd60e51b815260206004820152601c60248201527f6d61726b6572206d6574686f642072657475726e65642066616c736500000000604482015290519081900360640190fd5b600580546001600160a01b0319166001600160a01b03858116918217909255604080519284168352602083019190915280517f7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d9281900390910190a16000611a9d565b4390565b60008061232f612ced565b61233f5761209b6001604d613126565b612347612320565b600b541461235b5761209b600a604c613126565b600660009054906101000a90046001600160a01b03169050826001600160a01b0316632191f92a6040518163ffffffff1660e01b815260040160206040518083038186803b1580156123ac57600080fd5b505afa1580156123c0573d6000803e3d6000fd5b505050506040513d60208110156123d657600080fd5b5051612429576040805162461bcd60e51b815260206004820152601c60248201527f6d61726b6572206d6574686f642072657475726e65642066616c736500000000604482015290519081900360640190fd5b600680546001600160a01b0319166001600160a01b03858116918217909255604080519284168352602083019190915280517fedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f9269281900390910190a16001600160a01b0381161561255b5760408051600481526024810182526020810180516001600160e01b0316636cc1140b60e11b178152915181516001600160a01b0385169382918083835b602083106124f05780518252601f1990920191602091820191016124d1565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612552576040519150601f19603f3d011682016040523d82523d6000602084013e612557565b606091505b5050505b60408051600481526024810182526020810180516001600160e01b031663742a137b60e11b178152915181516001600160a01b0387169382918083835b602083106125b75780518252601f199092019160209182019101612598565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612619576040519150601f19603f3d011682016040523d82523d6000602084013e61261e565b606091505b5060009150611a9d9050565b6000612634612ced565b61264b576126446001605a613126565b9050611109565b612653612320565b600b541461266757612644600a605b613126565b670de0b6b3a764000061268761267f8460085461340d565b60095461340d565b1115612699576126446002605c613126565b600a805490839055604080518281526020810185905281517faaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460929181900390910190a16000611a9d565b60006126ed612320565b600b541461270157612644600a6054613126565b6000198214156127115760085491505b600061271b613ff8565b9050670de0b6b3a764000061273b612735600a548661340d565b8361340d565b111561274d5761209b60026055613126565b82600854146127b35761275e612ced565b61276e5761209b60016053613126565b6008805490849055604080518281526020810186905281517fcdd0b588250e1398549f79cfdb8217c186688822905d6715b0834ea1c865594a929181900390910190a1505b8060095414612801576009805490829055604080518281526020810184905281517f92eef861b6533b7d3417f39c2ad7b460eed4e88a32fa3604f30e718b7602e7dc929181900390910190a1505b6000611a9d565b600154600160b01b900460ff16612853576040805162461bcd60e51b815260206004820152600a6024820152691c994b595b9d195c995960b21b604482015290519081900360640190fd5b806128c157600560009054906101000a90046001600160a01b03166001600160a01b031663c90c20b16040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156128a857600080fd5b505af11580156128bc573d6000803e3d6000fd5b505050505b506001805460ff60b01b19169055565b6001805460ff60b01b1916600160b01b1790558061293957600560009054906101000a90046001600160a01b03166001600160a01b031663632e51426040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561197d57600080fd5b50565b601154600090819080612957575050600754600091506129f8565b6000612961612ebc565b9050600061296d615b32565b600061298f84600d5461298a600e54611c71600f5460105461340d565b614047565b9350905060008160038111156129a157fe5b146129b6579550600094506129f89350505050565b6129c08386614093565b9250905060008160038111156129d257fe5b146129e7579550600094506129f89350505050565b50516000955093506129f892505050565b9091565b600554604080516317b9b84b60e31b81523060048201526001600160a01b03868116602483015285811660448301526064820185905291516000938493169163bdcdc25891608480830192602092919082900301818787803b158015612a6157600080fd5b505af1158015612a75573d6000803e3d6000fd5b505050506040513d6020811015612a8b57600080fd5b505190508015612aaa57612aa26003605d83614143565b915050611610565b836001600160a01b0316856001600160a01b03161415612ad057612aa26002605e613126565b60006001600160a01b038781169087161415612aef5750600019612b17565b506001600160a01b038086166000908152601360209081526040808320938a16835292905220545b600080600080612b278589613443565b90945092506000846003811115612b3a57fe5b14612b5857612b4b6009605e613126565b9650505050505050611610565b6001600160a01b038a16600090815260126020526040902054612b7b9089613443565b90945091506000846003811115612b8e57fe5b14612b9f57612b4b6009605f613126565b6001600160a01b038916600090815260126020526040902054612bc290896141cc565b90945090506000846003811115612bd557fe5b14612be657612b4b60096060613126565b6001600160a01b03808b16600090815260126020526040808220859055918b168152208190556000198514612c3e576001600160a01b03808b166000908152601360209081526040808320938f168352929052208390555b886001600160a01b03168a6001600160a01b0316600080516020615d968339815191528a6040518082815260200191505060405180910390a35060009a9950505050505050505050565b6000806000612c9681612808565b6000612ca0611c06565b90508015612ccb57612cbe816011811115612cb757fe5b6040613126565b935060009250612cdc9050565b612cd6338787613ca8565b93509350505b612ce5816128d1565b509250929050565b600554604080516303e1469160e61b815290516000926001600160a01b031691829163f851a44091600480820192602092909190829003018186803b158015612d3557600080fd5b505afa158015612d49573d6000803e3d6000fd5b505050506040513d6020811015612d5f57600080fd5b50516001600160a01b031633148015612dd95750806001600160a01b0316630a755ec26040518163ffffffff1660e01b815260040160206040518083038186803b158015612dac57600080fd5b505afa158015612dc0573d6000803e3d6000fd5b505050506040513d6020811015612dd657600080fd5b50515b806114a057503373a731585ab05fc9f83555cf9bff8f58ee94e18f851480156114a05750806001600160a01b0316632f1069ba6040518163ffffffff1660e01b815260040160206040518083038186803b158015612e3657600080fd5b505afa158015612e4a573d6000803e3d6000fd5b505050506040513d6020811015612e6057600080fd5b505191505090565b6000806000612e75615b32565b612e7f86866141f2565b90925090506000826003811115612e9257fe5b14612ea35750915060009050612eb5565b6000612eae8261425a565b9350935050505b9250929050565b601554604080516370a0823160e01b815230600482015290516000926001600160a01b03169182916370a0823191602480820192602092909190829003018186803b158015612e3657600080fd5b600054604080516338e6a07360e11b81526001600160a01b039283166004820152918516602483015283151560448301525173a731585ab05fc9f83555cf9bff8f58ee94e18f85916371cd40e6916064808301926020929190829003018186803b158015612f7757600080fd5b505afa158015612f8b573d6000803e3d6000fd5b505050506040513d6020811015612fa157600080fd5b5051612fdc576040805162461bcd60e51b8152602060048201526005602482015264085a5b5c1b60da1b604482015290519081900360640190fd5b8115612fea57612fea614269565b600080546001600160a01b038581166001600160a01b0319831617835560405160206024820181815286516044840152865193909416946130d794309488949193849360649093019290860191908190849084905b8381101561305757818101518382015260200161303f565b50505050905090810190601f1680156130845780820380516001836020036101000a031916815260200191505b5060408051601f19818403018152918152602080830180516001600160e01b0316630adccee560e31b17905281518083019092526007825266216265636f6d6560c81b90820152909350915061426e9050565b50600054604080516001600160a01b038085168252909216602083015280517fd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a9281900390910190a150505050565b60007f45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa083601181111561315557fe5b83606381111561316157fe5b604080519283526020830191909152600082820152519081900360600190a1826011811115611a9d57fe5b600080613197612ced565b6131a75761209b6001603c613126565b6131af612320565b600b54146131c35761209b600a603e613126565b826131cc612ebc565b10156131de5761209b600e603d613126565b600e548311156131f45761209b6002603f613126565b613200600e54846143bd565b600e819055905061321133846143f7565b604080513381526020810185905280820183905290517f3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e9181900360600190a16000611a9d565b60008061326481612808565b600061326e611c06565b9050801561328c5761181b81601181111561328557fe5b602a613126565b61182c3360008661447c565b6001600160a01b0381166000908152601460205260408120805482918291829182916132cf57506000945084935061334792505050565b6132df8160000154600c5461494c565b909450925060008460038111156132f257fe5b14613307575091935060009250613347915050565b61331583826001015461498b565b9094509150600084600381111561332857fe5b1461333d575091935060009250613347915050565b5060009450925050505b915091565b600080613357612320565b600b541461336b5761209b600a6035613126565b82613374612ebc565b10156133865761209b600e6034613126565b60105483111561339c5761209b60026036613126565b6133a8601054846143bd565b6010819055905061280173a731585ab05fc9f83555cf9bff8f58ee94e18f85846143f7565b60008060006133db81612808565b60006133e5611c06565b90508015613403576121c08160118111156133fc57fe5b6020613126565b6121d833866149b6565b6000611a9d8383604051806040016040528060118152602001706164646974696f6e206f766572666c6f7760781b815250614d32565b60008083831161345a575060009050818303612eb5565b50600390506000612eb5565b6000613470615b32565b61348860405180602001604052808681525084614d87565b9050600061349882600d54614db1565b905060006134a882600d5461340d565b905060006134c96040518060200160405280600a5481525084600e54614dd0565b905060006134ea604051806020016040528060095481525085601054614dd0565b9050600061350b604051806020016040528060085481525086600f54614dd0565b9050600061351e87600c54600c54614dd0565b600b8d9055600c819055600d869055600e8590556010849055600f839055604080518d8152602081018990528082018390526060810188905290519192507f4dec04e750ca11537cabcd8a9eab06494de08da3735bc8871cd41250e190bc04919081900360800190a16006546040805160248082018e905282518083039091018152604490910182526020810180516001600160e01b0316635efd023360e11b178152915181516001600160a01b0390941693919290918291908083835b602083106135fb5780518252601f1990920191602091820191016135dc565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461365d576040519150601f19603f3d011682016040523d82523d6000602084013e613662565b606091505b506000915061366e9050565b9c9b505050505050505050505050565b600080613689612320565b600b541461369d5761209b600a6039613126565b826136a6612ebc565b10156136b85761209b600e6038613126565b600f548311156136ce5761209b6002603a613126565b6136da600f54846143bd565b905080600f81905550612801600560009054906101000a90046001600160a01b03166001600160a01b031663f851a4406040518163ffffffff1660e01b815260040160206040518083038186803b15801561373457600080fd5b505afa158015613748573d6000803e3d6000fd5b505050506040513d602081101561375e57600080fd5b5051846143f7565b6005546040805163d02f735160e01b81523060048201526001600160a01b038781166024830152868116604483015285811660648301526084820185905291516000938493169163d02f73519160a480830192602092919082900301818787803b1580156137d357600080fd5b505af11580156137e7573d6000803e3d6000fd5b505050506040513d60208110156137fd57600080fd5b50519050801561381457612aa26003601d83614143565b846001600160a01b0316846001600160a01b0316141561383a57612aa26006601e613126565b613842615b45565b6001600160a01b0385166000908152601260205260409020546138659085613443565b602083018190528282600381111561387957fe5b600381111561388457fe5b905250600090508151600381111561389857fe5b146138c2576138b96009601c836000015160038111156138b457fe5b614143565b92505050611610565b6138e1846040518060200160405280666379da05b60000815250614df8565b608082018190526138f39085906143bd565b606082015261390061293c565b60c083018190528282600381111561391457fe5b600381111561391f57fe5b905250600090508151600381111561393357fe5b14613985576040805162461bcd60e51b815260206004820152601860248201527f65786368616e67652072617465206d617468206572726f720000000000000000604482015290519081900360640190fd5b6139a560405180602001604052808360c001518152508260800151614db1565b60a08201819052600e546139b89161340d565b60e082015260115460808201516139cf91906143bd565b6101008201526001600160a01b03861660009081526012602052604090205460608201516139fd91906141cc565b6040830181905282826003811115613a1157fe5b6003811115613a1c57fe5b9052506000905081516003811115613a3057fe5b14613a4c576138b96009601b836000015160038111156138b457fe5b60e0810151600e556101008101516011556020808201516001600160a01b0380881660008181526012855260408082209490945583860151928b16808252908490209290925560608501518351908152925191939092600080516020615d96833981519152929081900390910190a36080810151604080519182525130916001600160a01b03881691600080516020615d968339815191529181900360200190a360a081015160e082015160408051308152602081019390935282810191909152517fa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc59181900360600190a16000979650505050505050565b600080613b5181612808565b6000613b5b611c06565b90508015613b795761181b816011811115613b7257fe5b600a613126565b61182c3385614e20565b600080613b8f81612808565b6000613b99611c06565b90508015613bb05761181b81601181111561328557fe5b61182c3385600061447c565b6000806000613bca81612808565b6000613bd4611c06565b90508015613bff57613bf2816011811115613beb57fe5b6011613126565b935060009250613c969050565b846001600160a01b031663a6afed956040518163ffffffff1660e01b8152600401602060405180830381600087803b158015613c3a57600080fd5b505af1158015613c4e573d6000803e3d6000fd5b505050506040513d6020811015613c6457600080fd5b505190508015613c8457613bf2816011811115613c7d57fe5b6012613126565b613c9033888888615166565b93509350505b613c9f816128d1565b50935093915050565b60055460408051631200453160e11b81523060048201526001600160a01b0386811660248301528581166044830152606482018590529151600093849384939116916324008a629160848082019260209290919082900301818787803b158015613d1157600080fd5b505af1158015613d25573d6000803e3d6000fd5b505050506040513d6020811015613d3b57600080fd5b505190508015613d5f57613d526003604383614143565b925060009150613ff09050565b613d67612320565b600b5414613d7b57613d52600a6044613126565b613d83615b92565b6001600160a01b0386166000908152601460205260409020600101546060820152613dad86613298565b6080830181905260208301826003811115613dc457fe5b6003811115613dcf57fe5b9052506000905081602001516003811115613de657fe5b14613e1057613e0260096042836020015160038111156138b457fe5b935060009250613ff0915050565b600019851415613e295760808101516040820152613e31565b604081018590525b613e3f878260400151615658565b60e082018190526080820151613e5491613443565b60a0830181905260208301826003811115613e6b57fe5b6003811115613e7657fe5b9052506000905081602001516003811115613e8d57fe5b14613ec95760405162461bcd60e51b815260040180806020018281038252603a815260200180615d33603a913960400191505060405180910390fd5b613ed9600d548260e00151613443565b60c0830181905260208301826003811115613ef057fe5b6003811115613efb57fe5b9052506000905081602001516003811115613f1257fe5b14613f4e5760405162461bcd60e51b8152600401808060200182810382526031815260200180615db66031913960400191505060405180910390fd5b60a080820180516001600160a01b03808a16600081815260146020908152604091829020948555600c5460019095019490945560c0870151600d81905560e088015195518251948f16855294840192909252828101949094526060820192909252608081019190915290517f1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1929181900390910190a160e00151600093509150505b935093915050565b600073a731585ab05fc9f83555cf9bff8f58ee94e18f856001600160a01b031663dd86fea16040518163ffffffff1660e01b815260040160206040518083038186803b158015611ec757600080fd5b60008060008061405787876141cc565b9092509050600082600381111561406a57fe5b1461407b5750915060009050613ff0565b6140858186613443565b935093505050935093915050565b600061409d615b32565b6000806140b286670de0b6b3a764000061494c565b909250905060008260038111156140c557fe5b146140e457506040805160208101909152600081529092509050612eb5565b6000806140f1838861498b565b9092509050600082600381111561410457fe5b1461412657506040805160208101909152600081529094509250612eb5915050565b604080516020810190915290815260009890975095505050505050565b60007f45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa084601181111561417257fe5b84606381111561417e57fe5b604080519283526020830191909152818101859052519081900360600190a160038460118111156141ab57fe5b146141c1578360118111156141bc57fe5b611610565b506103e80192915050565b6000808383018481106141e457600092509050612eb5565b506002915060009050612eb5565b60006141fc615b32565b60008061420d86600001518661494c565b9092509050600082600381111561422057fe5b1461423f57506040805160208101909152600081529092509050612eb5565b60408051602081019091529081526000969095509350505050565b51670de0b6b3a7640000900490565b6114a7565b606060006060856001600160a01b0316856040518082805190602001908083835b602083106142ae5780518252601f19909201916020918201910161428f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614310576040519150601f19603f3d011682016040523d82523d6000602084013e614315565b606091505b5091509150816143b45780511561432f5780518082602001fd5b8360405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614379578181015183820152602001614361565b50505050905090810190601f1680156143a65780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b95945050505050565b6000611a9d8383604051806040016040528060158152602001747375627472616374696f6e20756e646572666c6f7760581b815250615835565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091018252602081810180516001600160e01b031663a9059cbb60e01b1790528251808401909352601983527f544f4b454e5f5452414e534645525f4f55545f4641494c454400000000000000908301526144789161588f565b5050565b6000821580614489575081155b6144c45760405162461bcd60e51b8152600401808060200182810382526034815260200180615e4f6034913960400191505060405180910390fd5b6144cc615bd8565b6144d461293c565b60408301819052602083018260038111156144eb57fe5b60038111156144f657fe5b905250600090508160200151600381111561450d57fe5b14614531576145296009602e836020015160038111156138b457fe5b915050611a9d565b83156145b25760608101849052604080516020810182529082015181526145589085612e68565b608083018190526020830182600381111561456f57fe5b600381111561457a57fe5b905250600090508160200151600381111561459157fe5b146145ad576145296009602c836020015160038111156138b457fe5b61462b565b6145ce836040518060200160405280846040015181525061591c565b60608301819052602083018260038111156145e557fe5b60038111156145f057fe5b905250600090508160200151600381111561460757fe5b14614623576145296009602d836020015160038111156138b457fe5b608081018390525b60055460608201516040805163eabe7d9160e01b81523060048201526001600160a01b03898116602483015260448201939093529051600093929092169163eabe7d919160648082019260209290919082900301818787803b15801561469057600080fd5b505af11580156146a4573d6000803e3d6000fd5b505050506040513d60208110156146ba57600080fd5b5051905080156146da576146d16003602b83614143565b92505050611a9d565b6146e2612320565b600b54146146f6576146d1600a602f613126565b6147066011548360600151613443565b60a084018190526020840182600381111561471d57fe5b600381111561472857fe5b905250600090508260200151600381111561473f57fe5b1461475b576146d160096031846020015160038111156138b457fe5b6001600160a01b03861660009081526012602052604090205460608301516147839190613443565b60c084018190526020840182600381111561479a57fe5b60038111156147a557fe5b90525060009050826020015160038111156147bc57fe5b146147d8576146d160096030846020015160038111156138b457fe5b81608001516147e5612ebc565b10156147f7576146d1600e6032613126565b60a082015160115560c08201516001600160a01b038716600090815260126020526040902055608082015161482d9087906143f7565b6060820151604080519182525130916001600160a01b03891691600080516020615d968339815191529181900360200190a36080820151606080840151604080516001600160a01b038b168152602081019490945283810191909152517fe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a9299281900390910190a160055460808301516060840151604080516351dff98960e01b81523060048201526001600160a01b038b81166024830152604482019490945260648101929092525191909216916351dff98991608480830192600092919082900301818387803b15801561492157600080fd5b505af1158015614935573d6000803e3d6000fd5b5060009250614942915050565b9695505050505050565b6000808361495f57506000905080612eb5565b8383028385828161496c57fe5b041461498057506002915060009050612eb5565b600092509050612eb5565b6000808261499f5750600190506000612eb5565b60008385816149aa57fe5b04915091509250929050565b60055460408051634ef4c3e160e01b81523060048201526001600160a01b03858116602483015260448201859052915160009384938493911691634ef4c3e19160648082019260209290919082900301818787803b158015614a1757600080fd5b505af1158015614a2b573d6000803e3d6000fd5b505050506040513d6020811015614a4157600080fd5b505190508015614a6557614a586003602183614143565b925060009150612eb59050565b614a6d612320565b600b5414614a8157614a58600a6024613126565b614a89615bd8565b614a9161293c565b6040830181905260208301826003811115614aa857fe5b6003811115614ab357fe5b9052506000905081602001516003811115614aca57fe5b14614af457614ae660096023836020015160038111156138b457fe5b935060009250612eb5915050565b614afe8686615658565b60c0820181905260408051602081018252908301518152614b1f919061591c565b6060830181905260208301826003811115614b3657fe5b6003811115614b4157fe5b9052506000905081602001516003811115614b5857fe5b14614baa576040805162461bcd60e51b815260206004820181905260248201527f4d494e545f45584348414e47455f43414c43554c4154494f4e5f4641494c4544604482015290519081900360640190fd5b614bba601154826060015161340d565b60808201526001600160a01b0386166000908152601260205260409020546060820151614be7919061340d565b60a0820181905260808201516011556001600160a01b0387166000818152601260209081526040918290209390935560c084015160608086015183519485529484019190915282820193909352517f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f929181900390910190a1606081015160408051918252516001600160a01b038816913091600080516020615d968339815191529181900360200190a360055460c08201516060830151604080516341c728b960e01b81523060048201526001600160a01b038b81166024830152604482019490945260648101929092525191909216916341c728b991608480830192600092919082900301818387803b158015614cff57600080fd5b505af1158015614d13573d6000803e3d6000fd5b5060009250614d20915050565b8160c001519350935050509250929050565b600083830182858210156114e45760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315614379578181015183820152602001614361565b614d8f615b32565b6040518060200160405280614da8856000015185615933565b90529392505050565b6000614dbb615b32565b614dc58484614d87565b90506116108161425a565b6000614dda615b32565b614de48585614d87565b90506143b4614df28261425a565b8461340d565b6000670de0b6b3a7640000614e11848460000151615933565b81614e1857fe5b049392505050565b6005546040805163368f515360e21b81523060048201526001600160a01b0385811660248301526044820185905291516000938493169163da3d454c91606480830192602092919082900301818787803b158015614e7d57600080fd5b505af1158015614e91573d6000803e3d6000fd5b505050506040513d6020811015614ea757600080fd5b505190508015614ec657614ebe6003601083614143565b9150506110f2565b614ece612320565b600b5414614ee257614ebe600a600c613126565b6000614eec612ebc565b905083811015614f0b57614f02600e600b613126565b925050506110f2565b614f13615c16565b614f1c86613298565b6020830181905282826003811115614f3057fe5b6003811115614f3b57fe5b9052506000905081516003811115614f4f57fe5b14614f7457614f6a600980836000015160038111156138b457fe5b93505050506110f2565b614f828160200151866141cc565b6040830181905282826003811115614f9657fe5b6003811115614fa157fe5b9052506000905081516003811115614fb557fe5b14614fd157614f6a6009600e836000015160038111156138b457fe5b6005546040808301518151631de6c8a560e21b8152306004820152602481019190915290516001600160a01b039092169163779b2294916044808201926020929091908290030181600087803b15801561502a57600080fd5b505af115801561503e573d6000803e3d6000fd5b505050506040513d602081101561505457600080fd5b50519250821561506b57614f6a6003601085614143565b615077600d54866141cc565b606083018190528282600381111561508b57fe5b600381111561509657fe5b90525060009050815160038111156150aa57fe5b146150c657614f6a6009600d836000015160038111156138b457fe5b6040808201516001600160a01b0388166000908152601460205291909120908155600c546001909101556060810151600d5561510286866143f7565b60408082015160608084015183516001600160a01b038b168152602081018a9052808501939093529082015290517f13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab809181900360800190a160009695505050505050565b60055460408051632fe3f38f60e11b81523060048201526001600160a01b0384811660248301528781166044830152868116606483015260848201869052915160009384938493911691635fc7e71e9160a48082019260209290919082900301818787803b1580156151d757600080fd5b505af11580156151eb573d6000803e3d6000fd5b505050506040513d602081101561520157600080fd5b505190508015615225576152186003601483614143565b92506000915061564f9050565b61522d612320565b600b541461524157615218600a6018613126565b615249612320565b846001600160a01b0316636c540baf6040518163ffffffff1660e01b815260040160206040518083038186803b15801561528257600080fd5b505afa158015615296573d6000803e3d6000fd5b505050506040513d60208110156152ac57600080fd5b5051146152bf57615218600a6013613126565b866001600160a01b0316866001600160a01b031614156152e55761521860066019613126565b846152f65761521860076017613126565b60001985141561530c5761521860076016613126565b60008061531a898989613ca8565b9092509050811561534a5761533b82601181111561533457fe5b601a613126565b94506000935061564f92505050565b6005546040805163c488847b60e01b81523060048201526001600160a01b038981166024830152604482018590528251600094859492169263c488847b926064808301939192829003018186803b1580156153a457600080fd5b505afa1580156153b8573d6000803e3d6000fd5b505050506040513d60408110156153ce57600080fd5b508051602090910151909250905081156154195760405162461bcd60e51b8152600401808060200182810382526033815260200180615de76033913960400191505060405180910390fd5b80886001600160a01b03166370a082318c6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561547057600080fd5b505afa158015615484573d6000803e3d6000fd5b505050506040513d602081101561549a57600080fd5b505110156154ef576040805162461bcd60e51b815260206004820152601860248201527f4c49515549444154455f5345495a455f544f4f5f4d5543480000000000000000604482015290519081900360640190fd5b60006001600160a01b0389163014156155155761550e308d8d85613766565b905061559f565b6040805163b2a02ff160e01b81526001600160a01b038e811660048301528d81166024830152604482018590529151918b169163b2a02ff1916064808201926020929091908290030181600087803b15801561557057600080fd5b505af1158015615584573d6000803e3d6000fd5b505050506040513d602081101561559a57600080fd5b505190505b80156155e9576040805162461bcd60e51b81526020600482015260146024820152731d1bdad95b881cd95a5e9d5c994819985a5b195960621b604482015290519081900360640190fd5b604080516001600160a01b03808f168252808e1660208301528183018790528b1660608201526080810184905290517f298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb529181900360a00190a16000975092955050505050505b94509492505050565b601554604080516370a0823160e01b8152306004820152905160009283926001600160a01b03909116916370a0823191602480820192602092909190829003018186803b1580156156a857600080fd5b505afa1580156156bc573d6000803e3d6000fd5b505050506040513d60208110156156d257600080fd5b5051604080516001600160a01b038716602482015230604482015260648082018790528251808303909101815260849091018252602081810180516001600160e01b03166323b872dd60e01b1790528251808401909352601883527f544f4b454e5f5452414e534645525f494e5f4641494c454400000000000000009083015291925061575f919061588f565b601554604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156157aa57600080fd5b505afa1580156157be573d6000803e3d6000fd5b505050506040513d60208110156157d457600080fd5b505190508181101561582d576040805162461bcd60e51b815260206004820152601a60248201527f544f4b454e5f5452414e534645525f494e5f4f564552464c4f57000000000000604482015290519081900360640190fd5b039392505050565b600081848411156158875760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315614379578181015183820152602001614361565b505050900390565b6015546060906158a9906001600160a01b0316848461426e565b805190915015615917578080602001905160208110156158c857600080fd5b505182906116b05760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315614379578181015183820152602001614361565b505050565b6000806000615929615b32565b612e7f8686615975565b6000611a9d83836040518060400160405280601781526020017f6d756c7469706c69636174696f6e206f766572666c6f770000000000000000008152506159d4565b600061597f615b32565b600080615994670de0b6b3a76400008761494c565b909250905060008260038111156159a757fe5b146159c657506040805160208101909152600081529092509050612eb5565b612eae818660000151614093565b60008315806159e1575082155b156159ee57506000611a9d565b838302838582816159fb57fe5b041483906114e45760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315614379578181015183820152602001614361565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10615a8b57805160ff1916838001178555615ab8565b82800160010185558215615ab8579182015b82811115615ab8578251825591602001919060010190615a9d565b506118e8929150615c3f565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10615b055782800160ff19823516178555615ab8565b82800160010185558215615ab8579182015b82811115615ab8578235825591602001919060010190615b17565b6040518060200160405280600081525090565b604080516101208101909152806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040805161010081019091528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040805160e0810190915280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b604080516080810190915280600081526020016000815260200160008152602001600081525090565b6114a491905b808211156118e85760008155600101615c4556fe6d61726b6574206d6179206f6e6c7920626520696e697469616c697a6564206f6e6365696e697469616c2065786368616e67652072617465206d7573742062652067726561746572207468616e207a65726f2e6f6e6c79207468652061646d696e206d6179207365742074686520636f6d702d6c696b652064656c656761746573657474696e6720696e7465726573742072617465206d6f64656c206661696c6564626f72726f7742616c616e636553746f7265643a20626f72726f7742616c616e636553746f726564496e7465726e616c206661696c656452455041595f424f52524f575f4e45575f4143434f554e545f424f52524f575f42414c414e43455f43414c43554c4154494f4e5f4641494c45446f6e6c7920467573652061646d696e206d617920696e697469616c697a6520746865206d61726b6574ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef52455041595f424f52524f575f4e45575f544f54414c5f42414c414e43455f43414c43554c4154494f4e5f4641494c45444c49515549444154455f434f4d5054524f4c4c45525f43414c43554c4154455f414d4f554e545f5345495a455f4641494c454465786368616e67655261746553746f7265643a2065786368616e67655261746553746f726564496e7465726e616c206661696c65646f6e65206f662072656465656d546f6b656e73496e206f722072656465656d416d6f756e74496e206d757374206265207a65726fa265627a7a723158206bb55a5746461828ebe5f58429e48351bdca5941845d72ac9a60d0db0eed14ce64736f6c63430005110032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x376 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x852A12E3 GT PUSH2 0x1D1 JUMPI DUP1 PUSH4 0xAE9D70B0 GT PUSH2 0x102 JUMPI DUP1 PUSH4 0xDC028AB1 GT PUSH2 0xA0 JUMPI DUP1 PUSH4 0xF5E3C462 GT PUSH2 0x6F JUMPI DUP1 PUSH4 0xF5E3C462 EQ PUSH2 0xF69 JUMPI DUP1 PUSH4 0xF8F9DA28 EQ PUSH2 0xFAC JUMPI DUP1 PUSH4 0xFCA7820B EQ PUSH2 0xFC1 JUMPI DUP1 PUSH4 0xFE9C44AE EQ PUSH2 0xFEB JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0xDC028AB1 EQ PUSH2 0xED1 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0xEE6 JUMPI DUP1 PUSH4 0xF2B3ABBD EQ PUSH2 0xF21 JUMPI DUP1 PUSH4 0xF3FDB15A EQ PUSH2 0xF54 JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0xC37F68E2 GT PUSH2 0xDC JUMPI DUP1 PUSH4 0xC37F68E2 EQ PUSH2 0xE0F JUMPI DUP1 PUSH4 0xC5EBEAEC EQ PUSH2 0xE68 JUMPI DUP1 PUSH4 0xDB006A75 EQ PUSH2 0xE92 JUMPI DUP1 PUSH4 0xDBFE7C19 EQ PUSH2 0xEBC JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0xAE9D70B0 EQ PUSH2 0xDA2 JUMPI DUP1 PUSH4 0xB2A02FF1 EQ PUSH2 0xDB7 JUMPI DUP1 PUSH4 0xBD6D894D EQ PUSH2 0xDFA JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0xA0712D68 GT PUSH2 0x16F JUMPI DUP1 PUSH4 0xA7B820DF GT PUSH2 0x149 JUMPI DUP1 PUSH4 0xA7B820DF EQ PUSH2 0xD15 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0xD3F JUMPI DUP1 PUSH4 0xAA5AF0FD EQ PUSH2 0xD78 JUMPI DUP1 PUSH4 0xAC784DDC EQ PUSH2 0xD8D JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0xA0712D68 EQ PUSH2 0xB7A JUMPI DUP1 PUSH4 0xA0B0D289 EQ PUSH2 0xBA4 JUMPI DUP1 PUSH4 0xA6AFED95 EQ PUSH2 0xD00 JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0x91DD36C6 GT PUSH2 0x1AB JUMPI DUP1 PUSH4 0x91DD36C6 EQ PUSH2 0xADE JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0xB08 JUMPI DUP1 PUSH4 0x95DD9193 EQ PUSH2 0xB1D JUMPI DUP1 PUSH4 0xA03DCE8D EQ PUSH2 0xB50 JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0x852A12E3 EQ PUSH2 0xA8A JUMPI DUP1 PUSH4 0x8D02D9A1 EQ PUSH2 0xAB4 JUMPI DUP1 PUSH4 0x8F840DDD EQ PUSH2 0xAC9 JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0x3B1D21A2 GT PUSH2 0x2AB JUMPI DUP1 PUSH4 0x61FEACFF GT PUSH2 0x249 JUMPI DUP1 PUSH4 0x6F307DC3 GT PUSH2 0x223 JUMPI DUP1 PUSH4 0x6F307DC3 EQ PUSH2 0x9FA JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0xA0F JUMPI DUP1 PUSH4 0x73ACEE98 EQ PUSH2 0xA42 JUMPI DUP1 PUSH4 0x7F1E06BE EQ PUSH2 0xA57 JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0x61FEACFF EQ PUSH2 0x9BB JUMPI DUP1 PUSH4 0x6752E702 EQ PUSH2 0x9D0 JUMPI DUP1 PUSH4 0x6C540BAF EQ PUSH2 0x9E5 JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0x56E67728 GT PUSH2 0x285 JUMPI DUP1 PUSH4 0x56E67728 EQ PUSH2 0x8D0 JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x94B JUMPI DUP1 PUSH4 0x5FE3B567 EQ PUSH2 0x97C JUMPI DUP1 PUSH4 0x601A0BF1 EQ PUSH2 0x991 JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0x3B1D21A2 EQ PUSH2 0x814 JUMPI DUP1 PUSH4 0x47BD3718 EQ PUSH2 0x829 JUMPI DUP1 PUSH4 0x50D85B73 EQ PUSH2 0x83E JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0x182DF0F5 GT PUSH2 0x318 JUMPI DUP1 PUSH4 0x2608F818 GT PUSH2 0x2F2 JUMPI DUP1 PUSH4 0x2608F818 EQ PUSH2 0x6B2 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x6EB JUMPI DUP1 PUSH4 0x34154D4C EQ PUSH2 0x716 JUMPI DUP1 PUSH4 0x3AF9E669 EQ PUSH2 0x7E1 JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0x182DF0F5 EQ PUSH2 0x652 JUMPI DUP1 PUSH4 0x1DB78944 EQ PUSH2 0x667 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x66F JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0xF8855E8 GT PUSH2 0x354 JUMPI DUP1 PUSH4 0xF8855E8 EQ PUSH2 0x48E JUMPI DUP1 PUSH4 0x173B9904 EQ PUSH2 0x5F5 JUMPI DUP1 PUSH4 0x17BFDFBC EQ PUSH2 0x60A JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x63D JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x37B JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x405 JUMPI DUP1 PUSH4 0xE752702 EQ PUSH2 0x452 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x387 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x390 PUSH2 0x1000 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3CA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3B2 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x3F7 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x411 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x43E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x428 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x108B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x45E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x475 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x10F8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x49A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5F3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x4B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x4EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x4FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x51F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x571 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x583 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x5A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP POP PUSH1 0xFF DUP4 CALLDATALOAD AND SWAP4 POP POP POP PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x110E JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x601 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x13BC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x616 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x62D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x13C2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x649 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x143E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x65E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x1444 JUMP JUMPDEST PUSH2 0x5F3 PUSH2 0x14A7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x67B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x43E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x692 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x14A9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x6D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x14D7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x700 PUSH2 0x14ED JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x722 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5F3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x739 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x753 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x765 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x786 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x7A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x7B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x7D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x14F6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x804 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1562 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x820 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x1618 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x835 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x1627 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x84A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5F3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x861 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x892 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x8A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x8C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x162D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5F3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x90D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x91F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x940 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x16B6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x957 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x960 PUSH2 0x17C9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x988 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x960 PUSH2 0x17D8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x99D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x17E7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x1838 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x183E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x1849 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA06 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x960 PUSH2 0x184F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA1B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA32 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x185E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA4E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x1879 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA63 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5F3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA7A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x18EC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAAD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1991 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x199C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAD5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x19A2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB01 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x19A8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x390 PUSH2 0x19E5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB29 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB40 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1A40 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB73 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1AA4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1AE1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBB0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5F3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0xBC7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP3 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP1 SWAP3 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xC02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xC14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0xC35 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xC87 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xC99 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0xCBA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP POP DUP3 CALLDATALOAD SWAP4 POP POP POP PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1AED JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD0C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x1C06 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD21 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1DCB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD4B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x43E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xD62 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1E08 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD84 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x1E35 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD99 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x43E PUSH2 0x1E3B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xDAE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x1E40 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xDC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xDDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x1EF8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE06 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x1F1C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE1B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE42 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE32 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1F90 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP5 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP4 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE74 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x2025 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE9E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xEB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x2030 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEC8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x203B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEDD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x2041 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xF09 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x2047 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF2D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF44 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2072 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF60 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x960 PUSH2 0x20AC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF75 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xF8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 SWAP1 SWAP2 ADD CALLDATALOAD AND PUSH2 0x20BB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xFB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH2 0x20D3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xFCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xFE4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x2148 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xFF7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x43E PUSH2 0x2185 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP4 AND DUP5 SWAP1 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x1083 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1058 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1083 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1066 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP7 SWAP1 SSTORE DUP2 MLOAD DUP7 DUP2 MSTORE SWAP2 MLOAD SWAP4 SWAP5 SWAP4 SWAP1 SWAP3 DUP5 SWAP3 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1104 DUP4 PUSH2 0x218A JUMP JUMPDEST POP SWAP2 POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST CALLER PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 EQ PUSH2 0x1160 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5D6D PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xB SLOAD ISZERO DUP1 ISZERO PUSH2 0x1170 JUMPI POP PUSH1 0xC SLOAD ISZERO JUMPDEST PUSH2 0x11AB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5C5A PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x7 DUP7 SWAP1 SSTORE DUP6 PUSH2 0x11EC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x30 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5C7D PUSH1 0x30 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x11F7 DUP10 PUSH2 0x21ED JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x124C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x73657474696E6720636F6D7074726F6C6C6572206661696C6564000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1254 PUSH2 0x2320 JUMP JUMPDEST PUSH1 0xB SSTORE PUSH8 0xDE0B6B3A7640000 PUSH1 0xC SSTORE PUSH2 0x126C DUP9 PUSH2 0x2324 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x12AB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5CDA PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP6 MLOAD PUSH2 0x12BE SWAP1 PUSH1 0x2 SWAP1 PUSH1 0x20 DUP10 ADD SWAP1 PUSH2 0x5A4A JUMP JUMPDEST POP DUP5 MLOAD PUSH2 0x12D2 SWAP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP9 ADD SWAP1 PUSH2 0x5A4A JUMP JUMPDEST POP PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF DUP7 AND OR SWAP1 SSTORE PUSH2 0x12EB DUP4 PUSH2 0x262A JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1340 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x73657474696E67207265736572766520666163746F72206661696C6564000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1349 DUP3 PUSH2 0x26E3 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x139E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x73657474696E672061646D696E20666565206661696C65640000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF PUSH1 0xB0 SHL NOT AND PUSH1 0x1 PUSH1 0xB0 SHL OR SWAP1 SSTORE POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0xA SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x13CE DUP2 PUSH2 0x2808 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x13D8 PUSH2 0x1C06 JUMP JUMPDEST EQ PUSH2 0x1423 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x1858D8DC9D59481A5B9D195C995CDD0819985A5B1959 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x142C DUP4 PUSH2 0x1A40 JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH2 0x1438 DUP2 PUSH2 0x28D1 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x11 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1451 PUSH2 0x293C JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1464 JUMPI INVALID JUMPDEST EQ PUSH2 0x14A0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x35 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5E1A PUSH1 0x35 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP2 POP POP JUMPDEST SWAP1 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x14B5 DUP2 PUSH2 0x2808 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14C3 CALLER DUP8 DUP8 DUP8 PUSH2 0x29FC JUMP JUMPDEST EQ SWAP2 POP PUSH2 0x14CF DUP2 PUSH2 0x28D1 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x14E4 DUP5 DUP5 PUSH2 0x2C88 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x14FE PUSH2 0x2CED JUMP JUMPDEST PUSH2 0x1542 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x31B0B63632B9103737BA1030B236B4B7 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x154E PUSH1 0x2 DUP6 DUP6 PUSH2 0x5AC4 JUMP JUMPDEST POP PUSH2 0x155B PUSH1 0x3 DUP4 DUP4 PUSH2 0x5AC4 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x156C PUSH2 0x5B32 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x157F PUSH2 0x1F1C JUMP JUMPDEST SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP SWAP1 DUP2 SWAP1 PUSH2 0x15AB SWAP1 DUP5 SWAP1 PUSH2 0x2E68 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x15BE JUMPI INVALID JUMPDEST EQ PUSH2 0x1610 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x62616C616E636520636F756C64206E6F742062652063616C63756C6174656400 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1622 PUSH2 0x2EBC JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0xD SLOAD DUP2 JUMP JUMPDEST PUSH2 0x1635 PUSH2 0x2CED JUMP JUMPDEST PUSH2 0x166F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x10B0B236B4B7 PUSH1 0xD1 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x16B0 DUP5 DUP5 DUP5 DUP5 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x2F0A SWAP3 POP POP POP JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH20 0x66F4856F1BBD1EB09E1C8D9D646F5A3A193DA569 PUSH20 0xCAE4210E6676727EA4E0FD9BA5DFB95831356A16 CALLER ADDRESS EQ DUP1 PUSH2 0x16F1 JUMPI POP PUSH2 0x16F1 PUSH2 0x2CED JUMP JUMPDEST PUSH2 0x172A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x5 PUSH1 0x24 DUP3 ADD MSTORE PUSH5 0x10B9B2B633 PUSH1 0xD9 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1734 PUSH2 0x1C06 JUMP JUMPDEST EQ PUSH2 0x1770 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x7 PUSH1 0x24 DUP3 ADD MSTORE PUSH7 0x21616363727565 PUSH1 0xC8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD SWAP1 DUP5 SWAP1 SSTORE SWAP5 DUP7 AND DUP1 DUP5 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP4 SWAP3 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5D96 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 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 0x0 DUP1 PUSH2 0x17F3 DUP2 PUSH2 0x2808 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x17FD PUSH2 0x1C06 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1823 JUMPI PUSH2 0x181B DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x1814 JUMPI INVALID JUMPDEST PUSH1 0x3B PUSH2 0x3126 JUMP JUMPDEST SWAP3 POP POP PUSH2 0x142F JUMP JUMPDEST PUSH2 0x182C DUP5 PUSH2 0x318C JUMP JUMPDEST SWAP3 POP POP PUSH2 0x1438 DUP2 PUSH2 0x28D1 JUMP JUMPDEST PUSH1 0xF SLOAD DUP2 JUMP JUMPDEST PUSH7 0x6379DA05B60000 DUP2 JUMP JUMPDEST PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH1 0x15 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1885 DUP2 PUSH2 0x2808 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x188F PUSH2 0x1C06 JUMP JUMPDEST EQ PUSH2 0x18DA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x1858D8DC9D59481A5B9D195C995CDD0819985A5B1959 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0xD SLOAD SWAP2 POP PUSH2 0x18E8 DUP2 PUSH2 0x28D1 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0x18F4 PUSH2 0x2CED JUMP JUMPDEST PUSH2 0x192F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5CAD PUSH1 0x2D SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x15 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x17066A57 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x5C19A95C SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x197D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x155B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x10F2 DUP3 PUSH2 0x3258 JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xE SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x19B4 DUP2 PUSH2 0x2808 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x19BE PUSH2 0x1C06 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x19DC JUMPI PUSH2 0x181B DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x19D5 JUMPI INVALID JUMPDEST PUSH1 0x52 PUSH2 0x3126 JUMP JUMPDEST PUSH2 0x182C DUP5 PUSH2 0x26E3 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x1083 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1058 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1083 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1A4E DUP5 PUSH2 0x3298 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1A61 JUMPI INVALID JUMPDEST EQ PUSH2 0x1A9D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x37 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5CFC PUSH1 0x37 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1AB0 DUP2 PUSH2 0x2808 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1ABA PUSH2 0x1C06 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1AD8 JUMPI PUSH2 0x181B DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x1AD1 JUMPI INVALID JUMPDEST PUSH1 0x33 PUSH2 0x3126 JUMP JUMPDEST PUSH2 0x182C DUP5 PUSH2 0x334C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1104 DUP4 PUSH2 0x33CD JUMP JUMPDEST PUSH1 0x0 PUSH8 0x2C68AF0BB140000 SWAP1 POP PUSH1 0x0 DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x313CE567 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 0x1B35 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1B49 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1B5F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH2 0x1B73 DUP9 DUP9 DUP5 DUP10 DUP10 DUP7 DUP11 DUP11 PUSH2 0x110E JUMP JUMPDEST PUSH1 0x15 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP2 DUP3 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x18160DDD PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP1 SWAP2 AND SWAP2 PUSH4 0x18160DDD SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1BCF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1BE3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1BF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1C11 PUSH2 0x2320 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0xB SLOAD EQ ISZERO PUSH2 0x1C27 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x14A4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C31 PUSH2 0x2EBC JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x6 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 PUSH4 0x15F24053 DUP4 PUSH1 0xD SLOAD PUSH2 0x1C76 PUSH1 0xE SLOAD PUSH2 0x1C71 PUSH1 0xF SLOAD PUSH1 0x10 SLOAD PUSH2 0x340D JUMP JUMPDEST PUSH2 0x340D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1CB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1CCC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1CE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH6 0x48C27395000 DUP2 GT ISZERO PUSH2 0x1D41 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x626F72726F772072617465206973206162737572646C79206869676800000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1D50 DUP6 PUSH1 0xB SLOAD PUSH2 0x3443 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1D63 JUMPI INVALID JUMPDEST EQ PUSH2 0x1DB5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x636F756C64206E6F742063616C63756C61746520626C6F636B2064656C746100 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1DC1 DUP6 DUP6 DUP6 DUP5 PUSH2 0x3466 JUMP JUMPDEST SWAP6 POP POP POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1DD7 DUP2 PUSH2 0x2808 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1DE1 PUSH2 0x1C06 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1DFF JUMPI PUSH2 0x181B DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x1DF8 JUMPI INVALID JUMPDEST PUSH1 0x37 PUSH2 0x3126 JUMP JUMPDEST PUSH2 0x182C DUP5 PUSH2 0x367E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1E14 DUP2 PUSH2 0x2808 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E22 CALLER CALLER DUP8 DUP8 PUSH2 0x29FC JUMP JUMPDEST EQ SWAP2 POP PUSH2 0x1E2E DUP2 PUSH2 0x28D1 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xC SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xB8168816 PUSH2 0x1E5C PUSH2 0x2EBC JUMP JUMPDEST PUSH1 0xD SLOAD PUSH2 0x1E73 PUSH1 0xE SLOAD PUSH2 0x1C71 PUSH1 0xF SLOAD PUSH1 0x10 SLOAD PUSH2 0x340D JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x9 SLOAD PUSH1 0xA SLOAD ADD ADD PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1EC7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1EDB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1EF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH2 0x1F05 DUP2 PUSH2 0x2808 JUMP JUMPDEST PUSH2 0x1F11 CALLER DUP7 DUP7 DUP7 PUSH2 0x3766 JUMP JUMPDEST SWAP2 POP PUSH2 0x14CF DUP2 PUSH2 0x28D1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1F28 DUP2 PUSH2 0x2808 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F32 PUSH2 0x1C06 JUMP JUMPDEST EQ PUSH2 0x1F7D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x1858D8DC9D59481A5B9D195C995CDD0819985A5B1959 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1F85 PUSH2 0x1444 JUMP JUMPDEST SWAP2 POP PUSH2 0x18E8 DUP2 PUSH2 0x28D1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP2 SWAP1 DUP2 SWAP1 DUP2 SWAP1 DUP2 DUP1 DUP1 PUSH2 0x1FBB DUP10 PUSH2 0x3298 JUMP JUMPDEST SWAP4 POP SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1FCD JUMPI INVALID JUMPDEST EQ PUSH2 0x1FEB JUMPI PUSH1 0x9 JUMPDEST SWAP8 POP PUSH1 0x0 SWAP7 POP DUP7 SWAP6 POP DUP6 SWAP5 POP PUSH2 0x201E SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x1FF3 PUSH2 0x293C JUMP JUMPDEST SWAP3 POP SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2005 JUMPI INVALID JUMPDEST EQ PUSH2 0x2011 JUMPI PUSH1 0x9 PUSH2 0x1FD5 JUMP JUMPDEST POP PUSH1 0x0 SWAP7 POP SWAP2 SWAP5 POP SWAP3 POP SWAP1 POP JUMPDEST SWAP2 SWAP4 POP SWAP2 SWAP4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10F2 DUP3 PUSH2 0x3B45 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10F2 DUP3 PUSH2 0x3B83 JUMP JUMPDEST PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x10 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x207D PUSH2 0x1C06 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x20A3 JUMPI PUSH2 0x209B DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x2094 JUMPI INVALID JUMPDEST PUSH1 0x4B PUSH2 0x3126 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1109 JUMP JUMPDEST PUSH2 0x1A9D DUP4 PUSH2 0x2324 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x20C9 DUP6 DUP6 DUP6 PUSH2 0x3BBC JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x15F24053 PUSH2 0x20EF PUSH2 0x2EBC JUMP JUMPDEST PUSH1 0xD SLOAD PUSH2 0x2106 PUSH1 0xE SLOAD PUSH2 0x1C71 PUSH1 0xF SLOAD PUSH1 0x10 SLOAD PUSH2 0x340D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1EC7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2154 DUP2 PUSH2 0x2808 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x215E PUSH2 0x1C06 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x217C JUMPI PUSH2 0x181B DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x2175 JUMPI INVALID JUMPDEST PUSH1 0x59 PUSH2 0x3126 JUMP JUMPDEST PUSH2 0x182C DUP5 PUSH2 0x262A JUMP JUMPDEST PUSH1 0x1 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x2198 DUP2 PUSH2 0x2808 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x21A2 PUSH2 0x1C06 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x21CD JUMPI PUSH2 0x21C0 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x21B9 JUMPI INVALID JUMPDEST PUSH1 0x41 PUSH2 0x3126 JUMP JUMPDEST SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x21DE SWAP1 POP JUMP JUMPDEST PUSH2 0x21D8 CALLER CALLER DUP8 PUSH2 0x3CA8 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP JUMPDEST PUSH2 0x21E7 DUP2 PUSH2 0x28D1 JUMP JUMPDEST POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH3 0x7E3DD2 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 0x2240 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2254 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x226A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x22BD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6D61726B6572206D6574686F642072657475726E65642066616C736500000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP3 DUP5 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD PUSH32 0x7AC369DBD14FA5EA3F473ED67CC9D598964A77501540BA6751EB0B3DECF5870D SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x0 PUSH2 0x1A9D JUMP JUMPDEST NUMBER SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x232F PUSH2 0x2CED JUMP JUMPDEST PUSH2 0x233F JUMPI PUSH2 0x209B PUSH1 0x1 PUSH1 0x4D PUSH2 0x3126 JUMP JUMPDEST PUSH2 0x2347 PUSH2 0x2320 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x235B JUMPI PUSH2 0x209B PUSH1 0xA PUSH1 0x4C PUSH2 0x3126 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x2191F92A 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 0x23AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x23C0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x23D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x2429 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6D61726B6572206D6574686F642072657475726E65642066616C736500000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP3 DUP5 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD PUSH32 0xEDFFC32E068C7C95DFD4BDFD5C4D939A084D6B11C4199EAC8436ED234D72F926 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0x255B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x6CC1140B PUSH1 0xE1 SHL OR DUP2 MSTORE SWAP2 MLOAD DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP4 DUP3 SWAP2 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x24F0 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x24D1 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2552 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 0x2557 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP POP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x742A137B PUSH1 0xE1 SHL OR DUP2 MSTORE SWAP2 MLOAD DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP4 DUP3 SWAP2 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x25B7 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x2598 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2619 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 0x261E JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP PUSH1 0x0 SWAP2 POP PUSH2 0x1A9D SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2634 PUSH2 0x2CED JUMP JUMPDEST PUSH2 0x264B JUMPI PUSH2 0x2644 PUSH1 0x1 PUSH1 0x5A PUSH2 0x3126 JUMP JUMPDEST SWAP1 POP PUSH2 0x1109 JUMP JUMPDEST PUSH2 0x2653 PUSH2 0x2320 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x2667 JUMPI PUSH2 0x2644 PUSH1 0xA PUSH1 0x5B PUSH2 0x3126 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH2 0x2687 PUSH2 0x267F DUP5 PUSH1 0x8 SLOAD PUSH2 0x340D JUMP JUMPDEST PUSH1 0x9 SLOAD PUSH2 0x340D JUMP JUMPDEST GT ISZERO PUSH2 0x2699 JUMPI PUSH2 0x2644 PUSH1 0x2 PUSH1 0x5C PUSH2 0x3126 JUMP JUMPDEST PUSH1 0xA DUP1 SLOAD SWAP1 DUP4 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP6 SWAP1 MSTORE DUP2 MLOAD PUSH32 0xAAA68312E2EA9D50E16AF5068410AB56E1A1FD06037B1A35664812C30F821460 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x0 PUSH2 0x1A9D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x26ED PUSH2 0x2320 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x2701 JUMPI PUSH2 0x2644 PUSH1 0xA PUSH1 0x54 PUSH2 0x3126 JUMP JUMPDEST PUSH1 0x0 NOT DUP3 EQ ISZERO PUSH2 0x2711 JUMPI PUSH1 0x8 SLOAD SWAP2 POP JUMPDEST PUSH1 0x0 PUSH2 0x271B PUSH2 0x3FF8 JUMP JUMPDEST SWAP1 POP PUSH8 0xDE0B6B3A7640000 PUSH2 0x273B PUSH2 0x2735 PUSH1 0xA SLOAD DUP7 PUSH2 0x340D JUMP JUMPDEST DUP4 PUSH2 0x340D JUMP JUMPDEST GT ISZERO PUSH2 0x274D JUMPI PUSH2 0x209B PUSH1 0x2 PUSH1 0x55 PUSH2 0x3126 JUMP JUMPDEST DUP3 PUSH1 0x8 SLOAD EQ PUSH2 0x27B3 JUMPI PUSH2 0x275E PUSH2 0x2CED JUMP JUMPDEST PUSH2 0x276E JUMPI PUSH2 0x209B PUSH1 0x1 PUSH1 0x53 PUSH2 0x3126 JUMP JUMPDEST PUSH1 0x8 DUP1 SLOAD SWAP1 DUP5 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP7 SWAP1 MSTORE DUP2 MLOAD PUSH32 0xCDD0B588250E1398549F79CFDB8217C186688822905D6715B0834EA1C865594A SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMPDEST DUP1 PUSH1 0x9 SLOAD EQ PUSH2 0x2801 JUMPI PUSH1 0x9 DUP1 SLOAD SWAP1 DUP3 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP2 MLOAD PUSH32 0x92EEF861B6533B7D3417F39C2AD7B460EED4E88A32FA3604F30E718B7602E7DC SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMPDEST PUSH1 0x0 PUSH2 0x1A9D JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0xB0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2853 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xA PUSH1 0x24 DUP3 ADD MSTORE PUSH10 0x1C994B595B9D195C9959 PUSH1 0xB2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x28C1 JUMPI PUSH1 0x5 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 PUSH4 0xC90C20B1 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x28A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x28BC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF PUSH1 0xB0 SHL NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF PUSH1 0xB0 SHL NOT AND PUSH1 0x1 PUSH1 0xB0 SHL OR SWAP1 SSTORE DUP1 PUSH2 0x2939 JUMPI PUSH1 0x5 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 PUSH4 0x632E5142 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x197D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x11 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP1 PUSH2 0x2957 JUMPI POP POP PUSH1 0x7 SLOAD PUSH1 0x0 SWAP2 POP PUSH2 0x29F8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2961 PUSH2 0x2EBC JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x296D PUSH2 0x5B32 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x298F DUP5 PUSH1 0xD SLOAD PUSH2 0x298A PUSH1 0xE SLOAD PUSH2 0x1C71 PUSH1 0xF SLOAD PUSH1 0x10 SLOAD PUSH2 0x340D JUMP JUMPDEST PUSH2 0x4047 JUMP JUMPDEST SWAP4 POP SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x29A1 JUMPI INVALID JUMPDEST EQ PUSH2 0x29B6 JUMPI SWAP6 POP PUSH1 0x0 SWAP5 POP PUSH2 0x29F8 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x29C0 DUP4 DUP7 PUSH2 0x4093 JUMP JUMPDEST SWAP3 POP SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x29D2 JUMPI INVALID JUMPDEST EQ PUSH2 0x29E7 JUMPI SWAP6 POP PUSH1 0x0 SWAP5 POP PUSH2 0x29F8 SWAP4 POP POP POP POP JUMP JUMPDEST POP MLOAD PUSH1 0x0 SWAP6 POP SWAP4 POP PUSH2 0x29F8 SWAP3 POP POP POP JUMP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x17B9B84B PUSH1 0xE3 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP6 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 AND SWAP2 PUSH4 0xBDCDC258 SWAP2 PUSH1 0x84 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2A61 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2A75 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2A8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x2AAA JUMPI PUSH2 0x2AA2 PUSH1 0x3 PUSH1 0x5D DUP4 PUSH2 0x4143 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1610 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x2AD0 JUMPI PUSH2 0x2AA2 PUSH1 0x2 PUSH1 0x5E PUSH2 0x3126 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND SWAP1 DUP8 AND EQ ISZERO PUSH2 0x2AEF JUMPI POP PUSH1 0x0 NOT PUSH2 0x2B17 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP11 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x2B27 DUP6 DUP10 PUSH2 0x3443 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP PUSH1 0x0 DUP5 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2B3A JUMPI INVALID JUMPDEST EQ PUSH2 0x2B58 JUMPI PUSH2 0x2B4B PUSH1 0x9 PUSH1 0x5E PUSH2 0x3126 JUMP JUMPDEST SWAP7 POP POP POP POP POP POP POP PUSH2 0x1610 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2B7B SWAP1 DUP10 PUSH2 0x3443 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP2 POP PUSH1 0x0 DUP5 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2B8E JUMPI INVALID JUMPDEST EQ PUSH2 0x2B9F JUMPI PUSH2 0x2B4B PUSH1 0x9 PUSH1 0x5F PUSH2 0x3126 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2BC2 SWAP1 DUP10 PUSH2 0x41CC JUMP JUMPDEST SWAP1 SWAP5 POP SWAP1 POP PUSH1 0x0 DUP5 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2BD5 JUMPI INVALID JUMPDEST EQ PUSH2 0x2BE6 JUMPI PUSH2 0x2B4B PUSH1 0x9 PUSH1 0x60 PUSH2 0x3126 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP6 SWAP1 SSTORE SWAP2 DUP12 AND DUP2 MSTORE KECCAK256 DUP2 SWAP1 SSTORE PUSH1 0x0 NOT DUP6 EQ PUSH2 0x2C3E JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP16 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP4 SWAP1 SSTORE JUMPDEST DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5D96 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP11 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x0 SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x2C96 DUP2 PUSH2 0x2808 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2CA0 PUSH2 0x1C06 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x2CCB JUMPI PUSH2 0x2CBE DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x2CB7 JUMPI INVALID JUMPDEST PUSH1 0x40 PUSH2 0x3126 JUMP JUMPDEST SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x2CDC SWAP1 POP JUMP JUMPDEST PUSH2 0x2CD6 CALLER DUP8 DUP8 PUSH2 0x3CA8 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP JUMPDEST PUSH2 0x2CE5 DUP2 PUSH2 0x28D1 JUMP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x3E14691 PUSH1 0xE6 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 DUP3 SWAP2 PUSH4 0xF851A440 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2D35 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2D49 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2D5F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ DUP1 ISZERO PUSH2 0x2DD9 JUMPI POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA755EC2 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 0x2DAC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2DC0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2DD6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST DUP1 PUSH2 0x14A0 JUMPI POP CALLER PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 EQ DUP1 ISZERO PUSH2 0x14A0 JUMPI POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x2F1069BA 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 0x2E36 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2E4A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2E60 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x2E75 PUSH2 0x5B32 JUMP JUMPDEST PUSH2 0x2E7F DUP7 DUP7 PUSH2 0x41F2 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2E92 JUMPI INVALID JUMPDEST EQ PUSH2 0x2EA3 JUMPI POP SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH2 0x2EB5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2EAE DUP3 PUSH2 0x425A JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x15 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 DUP3 SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2E36 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x38E6A073 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP2 DUP6 AND PUSH1 0x24 DUP4 ADD MSTORE DUP4 ISZERO ISZERO PUSH1 0x44 DUP4 ADD MSTORE MLOAD PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 SWAP2 PUSH4 0x71CD40E6 SWAP2 PUSH1 0x64 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2F77 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2F8B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2FA1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x2FDC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x5 PUSH1 0x24 DUP3 ADD MSTORE PUSH5 0x85A5B5C1B PUSH1 0xDA SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 ISZERO PUSH2 0x2FEA JUMPI PUSH2 0x2FEA PUSH2 0x4269 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND OR DUP4 SSTORE PUSH1 0x40 MLOAD PUSH1 0x20 PUSH1 0x24 DUP3 ADD DUP2 DUP2 MSTORE DUP7 MLOAD PUSH1 0x44 DUP5 ADD MSTORE DUP7 MLOAD SWAP4 SWAP1 SWAP5 AND SWAP5 PUSH2 0x30D7 SWAP5 ADDRESS SWAP5 DUP9 SWAP5 SWAP2 SWAP4 DUP5 SWAP4 PUSH1 0x64 SWAP1 SWAP4 ADD SWAP3 SWAP1 DUP7 ADD SWAP2 SWAP1 DUP2 SWAP1 DUP5 SWAP1 DUP5 SWAP1 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3057 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x303F JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x3084 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xADCCEE5 PUSH1 0xE3 SHL OR SWAP1 MSTORE DUP2 MLOAD DUP1 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x7 DUP3 MSTORE PUSH7 0x216265636F6D65 PUSH1 0xC8 SHL SWAP1 DUP3 ADD MSTORE SWAP1 SWAP4 POP SWAP2 POP PUSH2 0x426E SWAP1 POP JUMP JUMPDEST POP PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND DUP3 MSTORE SWAP1 SWAP3 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD PUSH32 0xD604DE94D45953F9138079EC1B82D533CB2160C906D1076D1F7ED54BEFBCA97A SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x45B96FE442630264581B197E84BBADA861235052C5A1AADFFF9EA4E40A969AA0 DUP4 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x3155 JUMPI INVALID JUMPDEST DUP4 PUSH1 0x63 DUP2 GT ISZERO PUSH2 0x3161 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 DUP3 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x1A9D JUMPI INVALID JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3197 PUSH2 0x2CED JUMP JUMPDEST PUSH2 0x31A7 JUMPI PUSH2 0x209B PUSH1 0x1 PUSH1 0x3C PUSH2 0x3126 JUMP JUMPDEST PUSH2 0x31AF PUSH2 0x2320 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x31C3 JUMPI PUSH2 0x209B PUSH1 0xA PUSH1 0x3E PUSH2 0x3126 JUMP JUMPDEST DUP3 PUSH2 0x31CC PUSH2 0x2EBC JUMP JUMPDEST LT ISZERO PUSH2 0x31DE JUMPI PUSH2 0x209B PUSH1 0xE PUSH1 0x3D PUSH2 0x3126 JUMP JUMPDEST PUSH1 0xE SLOAD DUP4 GT ISZERO PUSH2 0x31F4 JUMPI PUSH2 0x209B PUSH1 0x2 PUSH1 0x3F PUSH2 0x3126 JUMP JUMPDEST PUSH2 0x3200 PUSH1 0xE SLOAD DUP5 PUSH2 0x43BD JUMP JUMPDEST PUSH1 0xE DUP2 SWAP1 SSTORE SWAP1 POP PUSH2 0x3211 CALLER DUP5 PUSH2 0x43F7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP6 SWAP1 MSTORE DUP1 DUP3 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD PUSH32 0x3BAD0C59CF2F06E7314077049F48A93578CD16F5EF92329F1DAB1420A99C177E SWAP2 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 PUSH1 0x0 PUSH2 0x1A9D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3264 DUP2 PUSH2 0x2808 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x326E PUSH2 0x1C06 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x328C JUMPI PUSH2 0x181B DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x3285 JUMPI INVALID JUMPDEST PUSH1 0x2A PUSH2 0x3126 JUMP JUMPDEST PUSH2 0x182C CALLER PUSH1 0x0 DUP7 PUSH2 0x447C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 PUSH2 0x32CF JUMPI POP PUSH1 0x0 SWAP5 POP DUP5 SWAP4 POP PUSH2 0x3347 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x32DF DUP2 PUSH1 0x0 ADD SLOAD PUSH1 0xC SLOAD PUSH2 0x494C JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP PUSH1 0x0 DUP5 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x32F2 JUMPI INVALID JUMPDEST EQ PUSH2 0x3307 JUMPI POP SWAP2 SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x3347 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x3315 DUP4 DUP3 PUSH1 0x1 ADD SLOAD PUSH2 0x498B JUMP JUMPDEST SWAP1 SWAP5 POP SWAP2 POP PUSH1 0x0 DUP5 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3328 JUMPI INVALID JUMPDEST EQ PUSH2 0x333D JUMPI POP SWAP2 SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x3347 SWAP2 POP POP JUMP JUMPDEST POP PUSH1 0x0 SWAP5 POP SWAP3 POP POP POP JUMPDEST SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3357 PUSH2 0x2320 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x336B JUMPI PUSH2 0x209B PUSH1 0xA PUSH1 0x35 PUSH2 0x3126 JUMP JUMPDEST DUP3 PUSH2 0x3374 PUSH2 0x2EBC JUMP JUMPDEST LT ISZERO PUSH2 0x3386 JUMPI PUSH2 0x209B PUSH1 0xE PUSH1 0x34 PUSH2 0x3126 JUMP JUMPDEST PUSH1 0x10 SLOAD DUP4 GT ISZERO PUSH2 0x339C JUMPI PUSH2 0x209B PUSH1 0x2 PUSH1 0x36 PUSH2 0x3126 JUMP JUMPDEST PUSH2 0x33A8 PUSH1 0x10 SLOAD DUP5 PUSH2 0x43BD JUMP JUMPDEST PUSH1 0x10 DUP2 SWAP1 SSTORE SWAP1 POP PUSH2 0x2801 PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 DUP5 PUSH2 0x43F7 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x33DB DUP2 PUSH2 0x2808 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x33E5 PUSH2 0x1C06 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x3403 JUMPI PUSH2 0x21C0 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x33FC JUMPI INVALID JUMPDEST PUSH1 0x20 PUSH2 0x3126 JUMP JUMPDEST PUSH2 0x21D8 CALLER DUP7 PUSH2 0x49B6 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1A9D DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x11 DUP2 MSTORE PUSH1 0x20 ADD PUSH17 0x6164646974696F6E206F766572666C6F77 PUSH1 0x78 SHL DUP2 MSTORE POP PUSH2 0x4D32 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 DUP4 GT PUSH2 0x345A JUMPI POP PUSH1 0x0 SWAP1 POP DUP2 DUP4 SUB PUSH2 0x2EB5 JUMP JUMPDEST POP PUSH1 0x3 SWAP1 POP PUSH1 0x0 PUSH2 0x2EB5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3470 PUSH2 0x5B32 JUMP JUMPDEST PUSH2 0x3488 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP7 DUP2 MSTORE POP DUP5 PUSH2 0x4D87 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3498 DUP3 PUSH1 0xD SLOAD PUSH2 0x4DB1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x34A8 DUP3 PUSH1 0xD SLOAD PUSH2 0x340D JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x34C9 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xA SLOAD DUP2 MSTORE POP DUP5 PUSH1 0xE SLOAD PUSH2 0x4DD0 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x34EA PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x9 SLOAD DUP2 MSTORE POP DUP6 PUSH1 0x10 SLOAD PUSH2 0x4DD0 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x350B PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x8 SLOAD DUP2 MSTORE POP DUP7 PUSH1 0xF SLOAD PUSH2 0x4DD0 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x351E DUP8 PUSH1 0xC SLOAD PUSH1 0xC SLOAD PUSH2 0x4DD0 JUMP JUMPDEST PUSH1 0xB DUP14 SWAP1 SSTORE PUSH1 0xC DUP2 SWAP1 SSTORE PUSH1 0xD DUP7 SWAP1 SSTORE PUSH1 0xE DUP6 SWAP1 SSTORE PUSH1 0x10 DUP5 SWAP1 SSTORE PUSH1 0xF DUP4 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP14 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP10 SWAP1 MSTORE DUP1 DUP3 ADD DUP4 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP9 SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH32 0x4DEC04E750CA11537CABCD8A9EAB06494DE08DA3735BC8871CD41250E190BC04 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG1 PUSH1 0x6 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x24 DUP1 DUP3 ADD DUP15 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x5EFD0233 PUSH1 0xE1 SHL OR DUP2 MSTORE SWAP2 MLOAD DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP5 AND SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x35FB JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x35DC JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x365D 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 0x3662 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP PUSH1 0x0 SWAP2 POP PUSH2 0x366E SWAP1 POP JUMP JUMPDEST SWAP13 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3689 PUSH2 0x2320 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x369D JUMPI PUSH2 0x209B PUSH1 0xA PUSH1 0x39 PUSH2 0x3126 JUMP JUMPDEST DUP3 PUSH2 0x36A6 PUSH2 0x2EBC JUMP JUMPDEST LT ISZERO PUSH2 0x36B8 JUMPI PUSH2 0x209B PUSH1 0xE PUSH1 0x38 PUSH2 0x3126 JUMP JUMPDEST PUSH1 0xF SLOAD DUP4 GT ISZERO PUSH2 0x36CE JUMPI PUSH2 0x209B PUSH1 0x2 PUSH1 0x3A PUSH2 0x3126 JUMP JUMPDEST PUSH2 0x36DA PUSH1 0xF SLOAD DUP5 PUSH2 0x43BD JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0xF DUP2 SWAP1 SSTORE POP PUSH2 0x2801 PUSH1 0x5 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 PUSH4 0xF851A440 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 0x3734 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3748 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x375E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP5 PUSH2 0x43F7 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xD02F7351 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP7 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE DUP6 DUP2 AND PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x84 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 AND SWAP2 PUSH4 0xD02F7351 SWAP2 PUSH1 0xA4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x37D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x37E7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x37FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x3814 JUMPI PUSH2 0x2AA2 PUSH1 0x3 PUSH1 0x1D DUP4 PUSH2 0x4143 JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x383A JUMPI PUSH2 0x2AA2 PUSH1 0x6 PUSH1 0x1E PUSH2 0x3126 JUMP JUMPDEST PUSH2 0x3842 PUSH2 0x5B45 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x3865 SWAP1 DUP6 PUSH2 0x3443 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3879 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3884 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3898 JUMPI INVALID JUMPDEST EQ PUSH2 0x38C2 JUMPI PUSH2 0x38B9 PUSH1 0x9 PUSH1 0x1C DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x38B4 JUMPI INVALID JUMPDEST PUSH2 0x4143 JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x1610 JUMP JUMPDEST PUSH2 0x38E1 DUP5 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH7 0x6379DA05B60000 DUP2 MSTORE POP PUSH2 0x4DF8 JUMP JUMPDEST PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x38F3 SWAP1 DUP6 SWAP1 PUSH2 0x43BD JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x3900 PUSH2 0x293C JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3914 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x391F JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3933 JUMPI INVALID JUMPDEST EQ PUSH2 0x3985 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x65786368616E67652072617465206D617468206572726F720000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x39A5 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP4 PUSH1 0xC0 ADD MLOAD DUP2 MSTORE POP DUP3 PUSH1 0x80 ADD MLOAD PUSH2 0x4DB1 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xE SLOAD PUSH2 0x39B8 SWAP2 PUSH2 0x340D JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD MSTORE PUSH1 0x11 SLOAD PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x39CF SWAP2 SWAP1 PUSH2 0x43BD JUMP JUMPDEST PUSH2 0x100 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x39FD SWAP2 SWAP1 PUSH2 0x41CC JUMP JUMPDEST PUSH1 0x40 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3A11 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3A1C JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3A30 JUMPI INVALID JUMPDEST EQ PUSH2 0x3A4C JUMPI PUSH2 0x38B9 PUSH1 0x9 PUSH1 0x1B DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x38B4 JUMPI INVALID JUMPDEST PUSH1 0xE0 DUP2 ADD MLOAD PUSH1 0xE SSTORE PUSH2 0x100 DUP2 ADD MLOAD PUSH1 0x11 SSTORE PUSH1 0x20 DUP1 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x12 DUP6 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 DUP7 ADD MLOAD SWAP3 DUP12 AND DUP1 DUP3 MSTORE SWAP1 DUP5 SWAP1 KECCAK256 SWAP3 SWAP1 SWAP3 SSTORE PUSH1 0x60 DUP6 ADD MLOAD DUP4 MLOAD SWAP1 DUP2 MSTORE SWAP3 MLOAD SWAP2 SWAP4 SWAP1 SWAP3 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5D96 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD ADDRESS SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5D96 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0xE0 DUP3 ADD MLOAD PUSH1 0x40 DUP1 MLOAD ADDRESS DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP3 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE MLOAD PUSH32 0xA91E67C5EA634CD43A12C5A482724B03DE01E85CA68702A53D0C2F45CB7C1DC5 SWAP2 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 PUSH1 0x0 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3B51 DUP2 PUSH2 0x2808 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3B5B PUSH2 0x1C06 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x3B79 JUMPI PUSH2 0x181B DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x3B72 JUMPI INVALID JUMPDEST PUSH1 0xA PUSH2 0x3126 JUMP JUMPDEST PUSH2 0x182C CALLER DUP6 PUSH2 0x4E20 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3B8F DUP2 PUSH2 0x2808 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3B99 PUSH2 0x1C06 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x3BB0 JUMPI PUSH2 0x181B DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x3285 JUMPI INVALID JUMPDEST PUSH2 0x182C CALLER DUP6 PUSH1 0x0 PUSH2 0x447C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x3BCA DUP2 PUSH2 0x2808 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3BD4 PUSH2 0x1C06 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x3BFF JUMPI PUSH2 0x3BF2 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x3BEB JUMPI INVALID JUMPDEST PUSH1 0x11 PUSH2 0x3126 JUMP JUMPDEST SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x3C96 SWAP1 POP JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA6AFED95 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3C3A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3C4E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3C64 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x3C84 JUMPI PUSH2 0x3BF2 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x3C7D JUMPI INVALID JUMPDEST PUSH1 0x12 PUSH2 0x3126 JUMP JUMPDEST PUSH2 0x3C90 CALLER DUP9 DUP9 DUP9 PUSH2 0x5166 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP JUMPDEST PUSH2 0x3C9F DUP2 PUSH2 0x28D1 JUMP JUMPDEST POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x12004531 PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP6 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 DUP5 SWAP4 SWAP2 AND SWAP2 PUSH4 0x24008A62 SWAP2 PUSH1 0x84 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3D11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3D25 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3D3B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x3D5F JUMPI PUSH2 0x3D52 PUSH1 0x3 PUSH1 0x43 DUP4 PUSH2 0x4143 JUMP JUMPDEST SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH2 0x3FF0 SWAP1 POP JUMP JUMPDEST PUSH2 0x3D67 PUSH2 0x2320 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x3D7B JUMPI PUSH2 0x3D52 PUSH1 0xA PUSH1 0x44 PUSH2 0x3126 JUMP JUMPDEST PUSH2 0x3D83 PUSH2 0x5B92 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x3DAD DUP7 PUSH2 0x3298 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3DC4 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3DCF JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3DE6 JUMPI INVALID JUMPDEST EQ PUSH2 0x3E10 JUMPI PUSH2 0x3E02 PUSH1 0x9 PUSH1 0x42 DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x38B4 JUMPI INVALID JUMPDEST SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x3FF0 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 NOT DUP6 EQ ISZERO PUSH2 0x3E29 JUMPI PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x3E31 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD DUP6 SWAP1 MSTORE JUMPDEST PUSH2 0x3E3F DUP8 DUP3 PUSH1 0x40 ADD MLOAD PUSH2 0x5658 JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x3E54 SWAP2 PUSH2 0x3443 JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3E6B JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3E76 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3E8D JUMPI INVALID JUMPDEST EQ PUSH2 0x3EC9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5D33 PUSH1 0x3A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x3ED9 PUSH1 0xD SLOAD DUP3 PUSH1 0xE0 ADD MLOAD PUSH2 0x3443 JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3EF0 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3EFB JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3F12 JUMPI INVALID JUMPDEST EQ PUSH2 0x3F4E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5DB6 PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xA0 DUP1 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP11 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 DUP6 SSTORE PUSH1 0xC SLOAD PUSH1 0x1 SWAP1 SWAP6 ADD SWAP5 SWAP1 SWAP5 SSTORE PUSH1 0xC0 DUP8 ADD MLOAD PUSH1 0xD DUP2 SWAP1 SSTORE PUSH1 0xE0 DUP9 ADD MLOAD SWAP6 MLOAD DUP3 MLOAD SWAP5 DUP16 AND DUP6 MSTORE SWAP5 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP2 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x60 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x80 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 MLOAD PUSH32 0x1A2A22CB034D26D1854BDC6666A5B91FE25EFBBB5DCAD3B0355478D6F5C362A1 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0xE0 ADD MLOAD PUSH1 0x0 SWAP4 POP SWAP2 POP POP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xDD86FEA1 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 0x1EC7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x4057 DUP8 DUP8 PUSH2 0x41CC JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x406A JUMPI INVALID JUMPDEST EQ PUSH2 0x407B JUMPI POP SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH2 0x3FF0 JUMP JUMPDEST PUSH2 0x4085 DUP2 DUP7 PUSH2 0x3443 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x409D PUSH2 0x5B32 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x40B2 DUP7 PUSH8 0xDE0B6B3A7640000 PUSH2 0x494C JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x40C5 JUMPI INVALID JUMPDEST EQ PUSH2 0x40E4 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x2EB5 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x40F1 DUP4 DUP9 PUSH2 0x498B JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4104 JUMPI INVALID JUMPDEST EQ PUSH2 0x4126 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 SWAP5 POP SWAP3 POP PUSH2 0x2EB5 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP9 SWAP1 SWAP8 POP SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x45B96FE442630264581B197E84BBADA861235052C5A1AADFFF9EA4E40A969AA0 DUP5 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x4172 JUMPI INVALID JUMPDEST DUP5 PUSH1 0x63 DUP2 GT ISZERO PUSH2 0x417E JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 DUP2 ADD DUP6 SWAP1 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 PUSH1 0x3 DUP5 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x41AB JUMPI INVALID JUMPDEST EQ PUSH2 0x41C1 JUMPI DUP4 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x41BC JUMPI INVALID JUMPDEST PUSH2 0x1610 JUMP JUMPDEST POP PUSH2 0x3E8 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 DUP4 ADD DUP5 DUP2 LT PUSH2 0x41E4 JUMPI PUSH1 0x0 SWAP3 POP SWAP1 POP PUSH2 0x2EB5 JUMP JUMPDEST POP PUSH1 0x2 SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH2 0x2EB5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x41FC PUSH2 0x5B32 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x420D DUP7 PUSH1 0x0 ADD MLOAD DUP7 PUSH2 0x494C JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4220 JUMPI INVALID JUMPDEST EQ PUSH2 0x423F JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x2EB5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST MLOAD PUSH8 0xDE0B6B3A7640000 SWAP1 DIV SWAP1 JUMP JUMPDEST PUSH2 0x14A7 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x60 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x42AE JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x428F JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x4310 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 0x4315 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x43B4 JUMPI DUP1 MLOAD ISZERO PUSH2 0x432F JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST DUP4 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4379 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4361 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x43A6 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1A9D DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x15 DUP2 MSTORE PUSH1 0x20 ADD PUSH21 0x7375627472616374696F6E20756E646572666C6F77 PUSH1 0x58 SHL DUP2 MSTORE POP PUSH2 0x5835 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xA9059CBB PUSH1 0xE0 SHL OR SWAP1 MSTORE DUP3 MLOAD DUP1 DUP5 ADD SWAP1 SWAP4 MSTORE PUSH1 0x19 DUP4 MSTORE PUSH32 0x544F4B454E5F5452414E534645525F4F55545F4641494C454400000000000000 SWAP1 DUP4 ADD MSTORE PUSH2 0x4478 SWAP2 PUSH2 0x588F JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x4489 JUMPI POP DUP2 ISZERO JUMPDEST PUSH2 0x44C4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5E4F PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x44CC PUSH2 0x5BD8 JUMP JUMPDEST PUSH2 0x44D4 PUSH2 0x293C JUMP JUMPDEST PUSH1 0x40 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x44EB JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x44F6 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x450D JUMPI INVALID JUMPDEST EQ PUSH2 0x4531 JUMPI PUSH2 0x4529 PUSH1 0x9 PUSH1 0x2E DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x38B4 JUMPI INVALID JUMPDEST SWAP2 POP POP PUSH2 0x1A9D JUMP JUMPDEST DUP4 ISZERO PUSH2 0x45B2 JUMPI PUSH1 0x60 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD DUP3 MSTORE SWAP1 DUP3 ADD MLOAD DUP2 MSTORE PUSH2 0x4558 SWAP1 DUP6 PUSH2 0x2E68 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x456F JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x457A JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4591 JUMPI INVALID JUMPDEST EQ PUSH2 0x45AD JUMPI PUSH2 0x4529 PUSH1 0x9 PUSH1 0x2C DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x38B4 JUMPI INVALID JUMPDEST PUSH2 0x462B JUMP JUMPDEST PUSH2 0x45CE DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH1 0x40 ADD MLOAD DUP2 MSTORE POP PUSH2 0x591C JUMP JUMPDEST PUSH1 0x60 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x45E5 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x45F0 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4607 JUMPI INVALID JUMPDEST EQ PUSH2 0x4623 JUMPI PUSH2 0x4529 PUSH1 0x9 PUSH1 0x2D DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x38B4 JUMPI INVALID JUMPDEST PUSH1 0x80 DUP2 ADD DUP4 SWAP1 MSTORE JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x60 DUP3 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xEABE7D91 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP4 SWAP3 SWAP1 SWAP3 AND SWAP2 PUSH4 0xEABE7D91 SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4690 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x46A4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x46BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x46DA JUMPI PUSH2 0x46D1 PUSH1 0x3 PUSH1 0x2B DUP4 PUSH2 0x4143 JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x1A9D JUMP JUMPDEST PUSH2 0x46E2 PUSH2 0x2320 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x46F6 JUMPI PUSH2 0x46D1 PUSH1 0xA PUSH1 0x2F PUSH2 0x3126 JUMP JUMPDEST PUSH2 0x4706 PUSH1 0x11 SLOAD DUP4 PUSH1 0x60 ADD MLOAD PUSH2 0x3443 JUMP JUMPDEST PUSH1 0xA0 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP5 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x471D JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4728 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP3 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x473F JUMPI INVALID JUMPDEST EQ PUSH2 0x475B JUMPI PUSH2 0x46D1 PUSH1 0x9 PUSH1 0x31 DUP5 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x38B4 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 DUP4 ADD MLOAD PUSH2 0x4783 SWAP2 SWAP1 PUSH2 0x3443 JUMP JUMPDEST PUSH1 0xC0 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP5 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x479A JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x47A5 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP3 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x47BC JUMPI INVALID JUMPDEST EQ PUSH2 0x47D8 JUMPI PUSH2 0x46D1 PUSH1 0x9 PUSH1 0x30 DUP5 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x38B4 JUMPI INVALID JUMPDEST DUP2 PUSH1 0x80 ADD MLOAD PUSH2 0x47E5 PUSH2 0x2EBC JUMP JUMPDEST LT ISZERO PUSH2 0x47F7 JUMPI PUSH2 0x46D1 PUSH1 0xE PUSH1 0x32 PUSH2 0x3126 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MLOAD PUSH1 0x11 SSTORE PUSH1 0xC0 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x482D SWAP1 DUP8 SWAP1 PUSH2 0x43F7 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MLOAD PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD ADDRESS SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5D96 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 PUSH1 0x80 DUP3 ADD MLOAD PUSH1 0x60 DUP1 DUP5 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP4 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE MLOAD PUSH32 0xE5B754FB1ABB7F01B499791D0B820AE3B6AF3424AC1C59768EDB53F4EC31A929 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x5 SLOAD PUSH1 0x80 DUP4 ADD MLOAD PUSH1 0x60 DUP5 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x51DFF989 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x64 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x51DFF989 SWAP2 PUSH1 0x84 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4921 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4935 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x0 SWAP3 POP PUSH2 0x4942 SWAP2 POP POP JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH2 0x495F JUMPI POP PUSH1 0x0 SWAP1 POP DUP1 PUSH2 0x2EB5 JUMP JUMPDEST DUP4 DUP4 MUL DUP4 DUP6 DUP3 DUP2 PUSH2 0x496C JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x4980 JUMPI POP PUSH1 0x2 SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH2 0x2EB5 JUMP JUMPDEST PUSH1 0x0 SWAP3 POP SWAP1 POP PUSH2 0x2EB5 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH2 0x499F JUMPI POP PUSH1 0x1 SWAP1 POP PUSH1 0x0 PUSH2 0x2EB5 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x49AA JUMPI INVALID JUMPDEST DIV SWAP2 POP SWAP2 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x4EF4C3E1 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 DUP5 SWAP4 SWAP2 AND SWAP2 PUSH4 0x4EF4C3E1 SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4A17 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4A2B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4A41 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x4A65 JUMPI PUSH2 0x4A58 PUSH1 0x3 PUSH1 0x21 DUP4 PUSH2 0x4143 JUMP JUMPDEST SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH2 0x2EB5 SWAP1 POP JUMP JUMPDEST PUSH2 0x4A6D PUSH2 0x2320 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x4A81 JUMPI PUSH2 0x4A58 PUSH1 0xA PUSH1 0x24 PUSH2 0x3126 JUMP JUMPDEST PUSH2 0x4A89 PUSH2 0x5BD8 JUMP JUMPDEST PUSH2 0x4A91 PUSH2 0x293C JUMP JUMPDEST PUSH1 0x40 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4AA8 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4AB3 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4ACA JUMPI INVALID JUMPDEST EQ PUSH2 0x4AF4 JUMPI PUSH2 0x4AE6 PUSH1 0x9 PUSH1 0x23 DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x38B4 JUMPI INVALID JUMPDEST SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x2EB5 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x4AFE DUP7 DUP7 PUSH2 0x5658 JUMP JUMPDEST PUSH1 0xC0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD DUP3 MSTORE SWAP1 DUP4 ADD MLOAD DUP2 MSTORE PUSH2 0x4B1F SWAP2 SWAP1 PUSH2 0x591C JUMP JUMPDEST PUSH1 0x60 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4B36 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4B41 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4B58 JUMPI INVALID JUMPDEST EQ PUSH2 0x4BAA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D494E545F45584348414E47455F43414C43554C4154494F4E5F4641494C4544 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x4BBA PUSH1 0x11 SLOAD DUP3 PUSH1 0x60 ADD MLOAD PUSH2 0x340D JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x4BE7 SWAP2 SWAP1 PUSH2 0x340D JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MLOAD PUSH1 0x11 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0xC0 DUP5 ADD MLOAD PUSH1 0x60 DUP1 DUP7 ADD MLOAD DUP4 MLOAD SWAP5 DUP6 MSTORE SWAP5 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE MLOAD PUSH32 0x4C209B5FC8AD50758F13E2E1088BA56A560DFF690A1C6FEF26394F4C03821C4F SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 ADDRESS SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5D96 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 PUSH1 0x5 SLOAD PUSH1 0xC0 DUP3 ADD MLOAD PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x41C728B9 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x64 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x41C728B9 SWAP2 PUSH1 0x84 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4CFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4D13 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x0 SWAP3 POP PUSH2 0x4D20 SWAP2 POP POP JUMP JUMPDEST DUP2 PUSH1 0xC0 ADD MLOAD SWAP4 POP SWAP4 POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 ADD DUP3 DUP6 DUP3 LT ISZERO PUSH2 0x14E4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x4379 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4361 JUMP JUMPDEST PUSH2 0x4D8F PUSH2 0x5B32 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x4DA8 DUP6 PUSH1 0x0 ADD MLOAD DUP6 PUSH2 0x5933 JUMP JUMPDEST SWAP1 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4DBB PUSH2 0x5B32 JUMP JUMPDEST PUSH2 0x4DC5 DUP5 DUP5 PUSH2 0x4D87 JUMP JUMPDEST SWAP1 POP PUSH2 0x1610 DUP2 PUSH2 0x425A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4DDA PUSH2 0x5B32 JUMP JUMPDEST PUSH2 0x4DE4 DUP6 DUP6 PUSH2 0x4D87 JUMP JUMPDEST SWAP1 POP PUSH2 0x43B4 PUSH2 0x4DF2 DUP3 PUSH2 0x425A JUMP JUMPDEST DUP5 PUSH2 0x340D JUMP JUMPDEST PUSH1 0x0 PUSH8 0xDE0B6B3A7640000 PUSH2 0x4E11 DUP5 DUP5 PUSH1 0x0 ADD MLOAD PUSH2 0x5933 JUMP JUMPDEST DUP2 PUSH2 0x4E18 JUMPI INVALID JUMPDEST DIV SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x368F5153 PUSH1 0xE2 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 AND SWAP2 PUSH4 0xDA3D454C SWAP2 PUSH1 0x64 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4E7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4E91 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4EA7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x4EC6 JUMPI PUSH2 0x4EBE PUSH1 0x3 PUSH1 0x10 DUP4 PUSH2 0x4143 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x10F2 JUMP JUMPDEST PUSH2 0x4ECE PUSH2 0x2320 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x4EE2 JUMPI PUSH2 0x4EBE PUSH1 0xA PUSH1 0xC PUSH2 0x3126 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4EEC PUSH2 0x2EBC JUMP JUMPDEST SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x4F0B JUMPI PUSH2 0x4F02 PUSH1 0xE PUSH1 0xB PUSH2 0x3126 JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x10F2 JUMP JUMPDEST PUSH2 0x4F13 PUSH2 0x5C16 JUMP JUMPDEST PUSH2 0x4F1C DUP7 PUSH2 0x3298 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4F30 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4F3B JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4F4F JUMPI INVALID JUMPDEST EQ PUSH2 0x4F74 JUMPI PUSH2 0x4F6A PUSH1 0x9 DUP1 DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x38B4 JUMPI INVALID JUMPDEST SWAP4 POP POP POP POP PUSH2 0x10F2 JUMP JUMPDEST PUSH2 0x4F82 DUP2 PUSH1 0x20 ADD MLOAD DUP7 PUSH2 0x41CC JUMP JUMPDEST PUSH1 0x40 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4F96 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4FA1 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4FB5 JUMPI INVALID JUMPDEST EQ PUSH2 0x4FD1 JUMPI PUSH2 0x4F6A PUSH1 0x9 PUSH1 0xE DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x38B4 JUMPI INVALID JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 DUP4 ADD MLOAD DUP2 MLOAD PUSH4 0x1DE6C8A5 PUSH1 0xE2 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x779B2294 SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x502A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x503E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5054 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 POP DUP3 ISZERO PUSH2 0x506B JUMPI PUSH2 0x4F6A PUSH1 0x3 PUSH1 0x10 DUP6 PUSH2 0x4143 JUMP JUMPDEST PUSH2 0x5077 PUSH1 0xD SLOAD DUP7 PUSH2 0x41CC JUMP JUMPDEST PUSH1 0x60 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x508B JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x5096 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x50AA JUMPI INVALID JUMPDEST EQ PUSH2 0x50C6 JUMPI PUSH2 0x4F6A PUSH1 0x9 PUSH1 0xD DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x38B4 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 MSTORE SWAP2 SWAP1 SWAP2 KECCAK256 SWAP1 DUP2 SSTORE PUSH1 0xC SLOAD PUSH1 0x1 SWAP1 SWAP2 ADD SSTORE PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0xD SSTORE PUSH2 0x5102 DUP7 DUP7 PUSH2 0x43F7 JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 ADD MLOAD PUSH1 0x60 DUP1 DUP5 ADD MLOAD DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP11 SWAP1 MSTORE DUP1 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP1 DUP3 ADD MSTORE SWAP1 MLOAD PUSH32 0x13ED6866D4E1EE6DA46F845C46D7E54120883D75C5EA9A2DACC1C4CA8984AB80 SWAP2 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG1 PUSH1 0x0 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x2FE3F38F PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP8 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE DUP7 DUP2 AND PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x84 DUP3 ADD DUP7 SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 DUP5 SWAP4 SWAP2 AND SWAP2 PUSH4 0x5FC7E71E SWAP2 PUSH1 0xA4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x51D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x51EB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5201 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x5225 JUMPI PUSH2 0x5218 PUSH1 0x3 PUSH1 0x14 DUP4 PUSH2 0x4143 JUMP JUMPDEST SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH2 0x564F SWAP1 POP JUMP JUMPDEST PUSH2 0x522D PUSH2 0x2320 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x5241 JUMPI PUSH2 0x5218 PUSH1 0xA PUSH1 0x18 PUSH2 0x3126 JUMP JUMPDEST PUSH2 0x5249 PUSH2 0x2320 JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6C540BAF 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 0x5282 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5296 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x52AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD EQ PUSH2 0x52BF JUMPI PUSH2 0x5218 PUSH1 0xA PUSH1 0x13 PUSH2 0x3126 JUMP JUMPDEST DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x52E5 JUMPI PUSH2 0x5218 PUSH1 0x6 PUSH1 0x19 PUSH2 0x3126 JUMP JUMPDEST DUP5 PUSH2 0x52F6 JUMPI PUSH2 0x5218 PUSH1 0x7 PUSH1 0x17 PUSH2 0x3126 JUMP JUMPDEST PUSH1 0x0 NOT DUP6 EQ ISZERO PUSH2 0x530C JUMPI PUSH2 0x5218 PUSH1 0x7 PUSH1 0x16 PUSH2 0x3126 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x531A DUP10 DUP10 DUP10 PUSH2 0x3CA8 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP DUP2 ISZERO PUSH2 0x534A JUMPI PUSH2 0x533B DUP3 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x5334 JUMPI INVALID JUMPDEST PUSH1 0x1A PUSH2 0x3126 JUMP JUMPDEST SWAP5 POP PUSH1 0x0 SWAP4 POP PUSH2 0x564F SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xC488847B PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP6 SWAP1 MSTORE DUP3 MLOAD PUSH1 0x0 SWAP5 DUP6 SWAP5 SWAP3 AND SWAP3 PUSH4 0xC488847B SWAP3 PUSH1 0x64 DUP1 DUP4 ADD SWAP4 SWAP2 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x53A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x53B8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x53CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 POP SWAP1 POP DUP2 ISZERO PUSH2 0x5419 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x33 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5DE7 PUSH1 0x33 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 DUP9 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 DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5470 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5484 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x549A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT ISZERO PUSH2 0x54EF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C49515549444154455F5345495A455F544F4F5F4D5543480000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND ADDRESS EQ ISZERO PUSH2 0x5515 JUMPI PUSH2 0x550E ADDRESS DUP14 DUP14 DUP6 PUSH2 0x3766 JUMP JUMPDEST SWAP1 POP PUSH2 0x559F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xB2A02FF1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP15 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP14 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD SWAP2 DUP12 AND SWAP2 PUSH4 0xB2A02FF1 SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5570 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5584 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x559A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP JUMPDEST DUP1 ISZERO PUSH2 0x55E9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x1D1BDAD95B881CD95A5E9D5C994819985A5B1959 PUSH1 0x62 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP16 AND DUP3 MSTORE DUP1 DUP15 AND PUSH1 0x20 DUP4 ADD MSTORE DUP2 DUP4 ADD DUP8 SWAP1 MSTORE DUP12 AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP2 ADD DUP5 SWAP1 MSTORE SWAP1 MLOAD PUSH32 0x298637F684DA70674F26509B10F07EC2FBC77A335AB1E7D6215A4B2484D8BB52 SWAP2 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 LOG1 PUSH1 0x0 SWAP8 POP SWAP3 SWAP6 POP POP POP POP POP POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x15 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 DUP4 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x56A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x56BC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x56D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x24 DUP3 ADD MSTORE ADDRESS PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP1 DUP3 ADD DUP8 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x23B872DD PUSH1 0xE0 SHL OR SWAP1 MSTORE DUP3 MLOAD DUP1 DUP5 ADD SWAP1 SWAP4 MSTORE PUSH1 0x18 DUP4 MSTORE PUSH32 0x544F4B454E5F5452414E534645525F494E5F4641494C45440000000000000000 SWAP1 DUP4 ADD MSTORE SWAP2 SWAP3 POP PUSH2 0x575F SWAP2 SWAP1 PUSH2 0x588F JUMP JUMPDEST PUSH1 0x15 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x57AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x57BE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x57D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP2 DUP2 LT ISZERO PUSH2 0x582D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x544F4B454E5F5452414E534645525F494E5F4F564552464C4F57000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SUB SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x5887 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x4379 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4361 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x15 SLOAD PUSH1 0x60 SWAP1 PUSH2 0x58A9 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 DUP5 PUSH2 0x426E JUMP JUMPDEST DUP1 MLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0x5917 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x58C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP3 SWAP1 PUSH2 0x16B0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x4379 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4361 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x5929 PUSH2 0x5B32 JUMP JUMPDEST PUSH2 0x2E7F DUP7 DUP7 PUSH2 0x5975 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1A9D DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x17 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x6D756C7469706C69636174696F6E206F766572666C6F77000000000000000000 DUP2 MSTORE POP PUSH2 0x59D4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x597F PUSH2 0x5B32 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x5994 PUSH8 0xDE0B6B3A7640000 DUP8 PUSH2 0x494C JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x59A7 JUMPI INVALID JUMPDEST EQ PUSH2 0x59C6 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x2EB5 JUMP JUMPDEST PUSH2 0x2EAE DUP2 DUP7 PUSH1 0x0 ADD MLOAD PUSH2 0x4093 JUMP JUMPDEST PUSH1 0x0 DUP4 ISZERO DUP1 PUSH2 0x59E1 JUMPI POP DUP3 ISZERO JUMPDEST ISZERO PUSH2 0x59EE JUMPI POP PUSH1 0x0 PUSH2 0x1A9D JUMP JUMPDEST DUP4 DUP4 MUL DUP4 DUP6 DUP3 DUP2 PUSH2 0x59FB JUMPI INVALID JUMPDEST DIV EQ DUP4 SWAP1 PUSH2 0x14E4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x4379 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4361 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x5A8B JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x5AB8 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x5AB8 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x5AB8 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x5A9D JUMP JUMPDEST POP PUSH2 0x18E8 SWAP3 SWAP2 POP PUSH2 0x5C3F JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x5B05 JUMPI DUP3 DUP1 ADD PUSH1 0xFF NOT DUP3 CALLDATALOAD AND OR DUP6 SSTORE PUSH2 0x5AB8 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x5AB8 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x5AB8 JUMPI DUP3 CALLDATALOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x5B17 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x120 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x100 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xE0 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH2 0x14A4 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x18E8 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x5C45 JUMP INVALID PUSH14 0x61726B6574206D6179206F6E6C79 KECCAK256 PUSH3 0x652069 PUSH15 0x697469616C697A6564206F6E636569 PUSH15 0x697469616C2065786368616E676520 PUSH19 0x617465206D7573742062652067726561746572 KECCAK256 PUSH21 0x68616E207A65726F2E6F6E6C79207468652061646D PUSH10 0x6E206D61792073657420 PUSH21 0x686520636F6D702D6C696B652064656C6567617465 PUSH20 0x657474696E6720696E7465726573742072617465 KECCAK256 PUSH14 0x6F64656C206661696C6564626F72 PUSH19 0x6F7742616C616E636553746F7265643A20626F PUSH19 0x726F7742616C616E636553746F726564496E74 PUSH6 0x726E616C2066 PUSH2 0x696C PUSH6 0x645245504159 0x5F TIMESTAMP 0x4F MSTORE MSTORE 0x4F JUMPI 0x5F 0x4E GASLIMIT JUMPI 0x5F COINBASE NUMBER NUMBER 0x4F SSTORE 0x4E SLOAD 0x5F TIMESTAMP 0x4F MSTORE MSTORE 0x4F JUMPI 0x5F TIMESTAMP COINBASE 0x4C COINBASE 0x4E NUMBER GASLIMIT 0x5F NUMBER COINBASE 0x4C NUMBER SSTORE 0x4C COINBASE SLOAD 0x49 0x4F 0x4E 0x5F CHAINID COINBASE 0x49 0x4C GASLIMIT DIFFICULTY PUSH16 0x6E6C7920467573652061646D696E206D PUSH2 0x7920 PUSH10 0x6E697469616C697A6520 PUSH21 0x6865206D61726B6574DDF252AD1BE2C89B69C2B068 0xFC CALLDATACOPY DUP14 0xAA SWAP6 0x2B 0xA7 CALL PUSH4 0xC4A11628 CREATE2 GAS 0x4D CREATE2 0x23 0xB3 0xEF MSTORE GASLIMIT POP COINBASE MSIZE 0x5F TIMESTAMP 0x4F MSTORE MSTORE 0x4F JUMPI 0x5F 0x4E GASLIMIT JUMPI 0x5F SLOAD 0x4F SLOAD COINBASE 0x4C 0x5F TIMESTAMP COINBASE 0x4C COINBASE 0x4E NUMBER GASLIMIT 0x5F NUMBER COINBASE 0x4C NUMBER SSTORE 0x4C COINBASE SLOAD 0x49 0x4F 0x4E 0x5F CHAINID COINBASE 0x49 0x4C GASLIMIT DIFFICULTY 0x4C 0x49 MLOAD SSTORE 0x49 DIFFICULTY COINBASE SLOAD GASLIMIT 0x5F NUMBER 0x4F 0x4D POP SLOAD MSTORE 0x4F 0x4C 0x4C GASLIMIT MSTORE 0x5F NUMBER COINBASE 0x4C NUMBER SSTORE 0x4C COINBASE SLOAD GASLIMIT 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD 0x5F MSTORE8 GASLIMIT 0x49 GAS GASLIMIT 0x5F CHAINID COINBASE 0x49 0x4C GASLIMIT DIFFICULTY PUSH6 0x786368616E67 PUSH6 0x526174655374 PUSH16 0x7265643A2065786368616E6765526174 PUSH6 0x53746F726564 0x49 PUSH15 0x7465726E616C206661696C65646F6E PUSH6 0x206F66207265 PUSH5 0x65656D546F PUSH12 0x656E73496E206F7220726564 PUSH6 0x656D416D6F75 PUSH15 0x74496E206D757374206265207A6572 PUSH16 0xA265627A7A723158206BB55A57464618 0x28 0xEB 0xE5 CREATE2 DUP5 0x29 0xE4 DUP4 MLOAD 0xBD 0xCA MSIZE COINBASE DUP5 0x5D PUSH19 0xAC9A60D0DB0EED14CE64736F6C634300051100 ORIGIN ","sourceMap":"187:1063:5:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;960:18:11;;8:9:-1;5:2;;;30:1;27;20:12;5:2;960:18:11;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;960:18:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7552:232:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7552:232:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7552:232:10;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3661:146:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3661:146:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3661:146:2;;:::i;:::-;;;;;;;;;;;;;;;;1302:1947:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1302:1947:10;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;1302:1947:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;1302:1947:10;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1302:1947:10;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1302:1947:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1302:1947:10;;;;;;;;-1:-1:-1;1302:1947:10;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;1302:1947:10;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1302:1947:10;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1302:1947:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1302:1947:10;;-1:-1:-1;;1302:1947:10;;;;;-1:-1:-1;;;1302:1947:10;;;;;;;;;:::i;:::-;;2390:33:11;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2390:33:11;;;:::i;11828:228:10:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11828:228:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11828:228:10;-1:-1:-1;;;;;11828:228:10;;:::i;3266:23:11:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3266:23:11;;;:::i;14620:257:10:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14620:257:10;;;:::i;1209:39:5:-;;;:::i;6892:200:10:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6892:200:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6892:200:10;;;;;;;;;;;;;;;;;:::i;4087:186:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4087:186:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4087:186:2;;;;;;;;:::i;1146:21:11:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1146:21:11;;;:::i;:::-;;;;;;;;;;;;;;;;;;;70024:265:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;70024:265:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;70024:265:10;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;70024:265:10;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;70024:265:10;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;70024:265:10;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;70024:265:10;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;70024:265:10;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;70024:265:10;;-1:-1:-1;70024:265:10;-1:-1:-1;70024:265:10;:::i;8788:349::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8788:349:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8788:349:10;-1:-1:-1;;;;;8788:349:10;;:::i;16532:86::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16532:86:10;;;:::i;2784:24:11:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2784:24:11;;;:::i;2928:330:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2928:330:3;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;2928:330:3;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;2928:330:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2928:330:3;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;2928:330:3;;-1:-1:-1;2928:330:3;-1:-1:-1;2928:330:3;:::i;412:713:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;412:713:5;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;412:713:5;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;412:713:5;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;412:713:5;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;412:713:5;;-1:-1:-1;412:713:5;-1:-1:-1;412:713:5;:::i;9773:29:11:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9773:29:11;;;:::i;:::-;;;;-1:-1:-1;;;;;9773:29:11;;;;;;;;;;;;;;1713:39;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1713:39:11;;;:::i;59156:570:10:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;59156:570:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;59156:570:10;;:::i;3037:26:11:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3037:26:11;;;:::i;4209:56::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4209:56:11;;;:::i;2508:30::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2508:30:11;;;:::i;8834:25::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8834:25:11;;;:::i;8430:110:10:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8430:110:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8430:110:10;-1:-1:-1;;;;;8430:110:10;;:::i;11348:196::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11348:196:10;;;:::i;8473:214:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8473:214:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8473:214:2;-1:-1:-1;;;;;8473:214:2;;:::i;2957:131::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2957:131:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2957:131:2;;:::i;2150:28:11:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2150:28:11;;;:::i;2909:25::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2909:25:11;;;:::i;54184:571:10:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;54184:571:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;54184:571:10;;:::i;1051:20:11:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1051:20:11;;;:::i;12258:283:10:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12258:283:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12258:283:10;-1:-1:-1;;;;;12258:283:10;;:::i;61865:587::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;61865:587:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;61865:587:10;;:::i;2025:130:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2025:130:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2025:130:2;;:::i;803:842::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;803:842:2;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;803:842:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;803:842:2;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;803:842:2;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;803:842:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;803:842:2;;;;;;;;-1:-1:-1;803:842:2;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;803:842:2;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;803:842:2;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;803:842:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;803:842:2;;-1:-1:-1;;803:842:2;;;-1:-1:-1;;;803:842:2;;;;:::i;16859:1071:10:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16859:1071:10;;;:::i;64387:592::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;64387:592:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;64387:592:10;;:::i;6404:190::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6404:190:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6404:190:10;;;;;;;;:::i;2654:23:11:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2654:23:11;;;:::i;4556:37::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4556:37:11;;;:::i;10946:262:10:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10946:262:10;;;:::i;48862:198::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;48862:198:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;48862:198:10;;;;;;;;;;;;;;;;;:::i;14175:202::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14175:202:10;;;:::i;9475:685::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9475:685:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9475:685:10;-1:-1:-1;;;;;9475:685:10;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3349:111:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3349:111:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3349:111:2;;:::i;2498:::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2498:111:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2498:111:2;;:::i;2271:27:11:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2271:27:11;;;:::i;3165:25::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3165:25:11;;;:::i;8106:141:10:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8106:141:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;8106:141:10;;;;;;;;;;:::i;67100:625::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;67100:625:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;67100:625:10;-1:-1:-1;;;;;67100:625:10;;:::i;1849:42:11:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1849:42:11;;;:::i;4745:234:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4745:234:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4745:234:2;;;;;;;;;;;;;;;;;:::i;10574:202:10:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10574:202:10;;;:::i;57039:606::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;57039:606:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;57039:606:10;;:::i;4414:36:11:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4414:36:11;;;:::i;960:18::-;;;;;;;;;;;;;;-1:-1:-1;;960:18:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7552:232:10:-;7650:10;7620:4;7670:23;;;:18;:23;;;;;;;;-1:-1:-1;;;;;7670:32:10;;;;;;;;;;;:41;;;7726:30;;;;;;;7620:4;;7650:10;7670:32;;7650:10;;7726:30;;;;;;;;;;;7773:4;7766:11;;;7552:232;;;;;:::o;3661:146:2:-;3718:4;3735:8;3748:32;3768:11;3748:19;:32::i;:::-;-1:-1:-1;3734:46:2;-1:-1:-1;;3661:146:2;;;;:::o;1302:1947:10:-;1743:10;326:42:11;1743:32:10;1735:86;;;;-1:-1:-1;;;1735:86:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1839:18;;:23;:43;;;;-1:-1:-1;1866:11:10;;:16;1839:43;1831:91;;;;-1:-1:-1;;;1831:91:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1970:27;:58;;;2046:31;2038:92;;;;-1:-1:-1;;;2038:92:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2172:8;2183:29;2199:12;2183:15;:29::i;:::-;2172:40;-1:-1:-1;2230:27:10;;2222:66;;;;;-1:-1:-1;;;2222:66:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;2425:16;:14;:16::i;:::-;2404:18;:37;409:4:22;2451:11:10;:25;2573:46;2600:18;2573:26;:46::i;:::-;2567:52;-1:-1:-1;2637:27:10;;2629:74;;;;-1:-1:-1;;;2629:74:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2714:12;;;;:4;;:12;;;;;:::i;:::-;-1:-1:-1;2736:16:10;;;;:6;;:16;;;;;:::i;:::-;-1:-1:-1;2762:8:10;:20;;-1:-1:-1;;2762:20:10;;;;;;;2829:46;2852:22;2829;:46::i;:::-;2823:52;-1:-1:-1;2893:27:10;;2885:69;;;;;-1:-1:-1;;;2885:69:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;2996:36;3014:17;2996;:36::i;:::-;2990:42;-1:-1:-1;3050:27:10;;3042:64;;;;;-1:-1:-1;;;3042:64:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3238:4:10;3224:18;;-1:-1:-1;;;;3224:18:10;-1:-1:-1;;;3224:18:10;;;-1:-1:-1;;;;;;;1302:1947:10:o;2390:33:11:-;;;;:::o;11828:228:10:-;11913:4;11897:5;71531:30;71551:9;71531:19;:30::i;:::-;11962:14;11937:16;:14;:16::i;:::-;:40;11929:75;;;;;-1:-1:-1;;;11929:75:10;;;;;;;;;;;;-1:-1:-1;;;11929:75:10;;;;;;;;;;;;;;;12021:28;12041:7;12021:19;:28::i;:::-;12014:35;;71571:1;71582:29;71601:9;71582:18;:29::i;:::-;11828:228;;;;:::o;3266:23:11:-;;;;:::o;14620:257:10:-;14671:4;14688:13;14703:11;14718:28;:26;:28::i;:::-;14687:59;;-1:-1:-1;14687:59:10;-1:-1:-1;14771:18:10;14764:3;:25;;;;;;;;;14756:91;;;;-1:-1:-1;;;14756:91:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14864:6;-1:-1:-1;;14620:257:10;;:::o;1209:39:5:-;:::o;6892:200:10:-;6994:4;6978:5;71531:30;71551:9;71531:19;:30::i;:::-;7070:14;7017:44;7032:10;7044:3;7049;7054:6;7017:14;:44::i;:::-;:68;7010:75;;71582:29;71601:9;71582:18;:29::i;:::-;6892:200;;;;;;:::o;4087:186:2:-;4168:4;4185:8;4198:48;4224:8;4234:11;4198:25;:48::i;:::-;-1:-1:-1;4184:62:2;4087:186;-1:-1:-1;;;;4087:186:2:o;1146:21:11:-;;;;;;:::o;70024:265:10:-;70159:16;:14;:16::i;:::-;70151:45;;;;;-1:-1:-1;;;70151:45:10;;;;;;;;;;;;-1:-1:-1;;;70151:45:10;;;;;;;;;;;;;;;70244:12;:4;70251:5;;70244:12;:::i;:::-;-1:-1:-1;70266:16:10;:6;70275:7;;70266:16;:::i;:::-;;70024:265;;;;:::o;8788:349::-;8850:4;8866:23;;:::i;:::-;8892:38;;;;;;;;8907:21;:19;:21::i;:::-;8892:38;;-1:-1:-1;;;;;9005:20:10;;8941:14;9005:20;;;:13;:20;;;;;;8866:64;;-1:-1:-1;8941:14:10;;;8973:53;;8866:64;;8973:17;:53::i;:::-;8940:86;;-1:-1:-1;8940:86:10;-1:-1:-1;9052:18:10;9044:4;:26;;;;;;;;;9036:70;;;;;-1:-1:-1;;;9036:70:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;9123:7;8788:349;-1:-1:-1;;;;8788:349:10:o;16532:86::-;16574:4;16597:14;:12;:14::i;:::-;16590:21;;16532:86;:::o;2784:24:11:-;;;;:::o;2928:330:3:-;3101:16;:14;:16::i;:::-;3093:35;;;;;-1:-1:-1;;;3093:35:3;;;;;;;;;;;;-1:-1:-1;;;3093:35:3;;;;;;;;;;;;;;;3169:82;3196:15;3213:11;3226:24;;3169:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;3169:26:3;;-1:-1:-1;;;3169:82:3:i;:::-;2928:330;;;;:::o;412:713:5:-;509:42;587;648:10;670:4;648:27;;:47;;;679:16;:14;:16::i;:::-;640:65;;;;;-1:-1:-1;;;640:65:5;;;;;;;;;;;;-1:-1:-1;;;640:65:5;;;;;;;;;;;;;;;748:14;723:16;:14;:16::i;:::-;:40;715:60;;;;;-1:-1:-1;;;715:60:5;;;;;;;;;;;;-1:-1:-1;;;715:60:5;;;;;;;;;;;;;;;-1:-1:-1;;;;;858:30:5;;;827:28;858:30;;;:13;:30;;;;;;;;;;941:34;;;;985:30;;;;;;;;;;:53;;;1054:64;;;;;;;985:30;;858;-1:-1:-1;;;;;;;;;;;1054:64:5;;;;;;;;;;412:713;;;;;:::o;9773:29:11:-;;;-1:-1:-1;;;;;9773:29:11;;:::o;1713:39::-;;;-1:-1:-1;;;;;1713:39:11;;:::o;59156:570:10:-;59238:4;59222:5;71531:30;71551:9;71531:19;:30::i;:::-;59254:10;59267:16;:14;:16::i;:::-;59254:29;-1:-1:-1;59297:29:10;;59293:274;;59486:70;59497:5;59491:12;;;;;;;;59505:50;59486:4;:70::i;:::-;59479:77;;;;;59293:274;59685:34;59706:12;59685:20;:34::i;:::-;59678:41;;;71582:29;71601:9;71582:18;:29::i;3037:26:11:-;;;;:::o;4209:56::-;4259:6;4209:56;:::o;2508:30::-;;;;:::o;8834:25::-;;;-1:-1:-1;;;;;8834:25:11;;:::o;8430:110:10:-;-1:-1:-1;;;;;8513:20:10;8487:7;8513:20;;;:13;:20;;;;;;;8430:110::o;11348:196::-;11417:4;11401:5;71531:30;71551:9;71531:19;:30::i;:::-;11466:14;11441:16;:14;:16::i;:::-;:40;11433:75;;;;;-1:-1:-1;;;11433:75:10;;;;;;;;;;;;-1:-1:-1;;;11433:75:10;;;;;;;;;;;;;;;11525:12;;11518:19;;71582:29;71601:9;71582:18;:29::i;:::-;11348:196;;:::o;8473:214:2:-;8556:16;:14;:16::i;:::-;8548:74;;;;-1:-1:-1;;;8548:74:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8641:10;;8632:48;;;-1:-1:-1;;;8632:48:2;;-1:-1:-1;;;;;8632:48:2;;;;;;;;;8641:10;;;;;8632:29;;:48;;;;;8641:10;;8632:48;;;;;;;8641:10;;8632:48;;;5:2:-1;;;;30:1;27;20:12;5:2;8632:48:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;2957:131:2;3020:4;3043:38;3068:12;3043:24;:38::i;2150:28:11:-;;;;:::o;2909:25::-;;;;:::o;54184:571:10:-;54270:4;54254:5;71531:30;71551:9;71531:19;:30::i;:::-;54286:10;54299:16;:14;:16::i;:::-;54286:29;-1:-1:-1;54329:29:10;;54325:273;;54519:68;54530:5;54524:12;;;;;;;;54538:48;54519:4;:68::i;54325:273::-;54710:38;54728:19;54710:17;:38::i;1051:20:11:-;;;;;;;;;;;;;;;-1:-1:-1;;1051:20:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12258:283:10;12325:4;12342:13;12357:11;12372:36;12400:7;12372:27;:36::i;:::-;12341:67;;-1:-1:-1;12341:67:10;-1:-1:-1;12433:18:10;12426:3;:25;;;;;;;;;12418:93;;;;-1:-1:-1;;;12418:93:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12528:6;12258:283;-1:-1:-1;;;12258:283:10:o;61865:587::-;61951:4;61935:5;71531:30;71551:9;71531:19;:30::i;:::-;61967:10;61980:16;:14;:16::i;:::-;61967:29;-1:-1:-1;62010:29:10;;62006:281;;62203:73;62214:5;62208:12;;;;;;;;62222:53;62203:4;:73::i;62006:281::-;62407:38;62430:14;62407:22;:38::i;2025:130:2:-;2074:4;2091:8;2104:24;2117:10;2104:12;:24::i;803:842::-;1236:36;1275:6;1236:45;;1291:15;1324:11;-1:-1:-1;;;;;1309:36:2;;:38;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1309:38:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1309:38:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1309:38:2;;-1:-1:-1;1357:150:2;1374:12;1388:18;1408:28;1438:5;1445:7;1309:38;1465:22;1489:17;1357:16;:150::i;:::-;1564:10;:24;;-1:-1:-1;;;;;;1564:24:2;-1:-1:-1;;;;;1564:24:2;;;;;;;;;;;1598:40;;;-1:-1:-1;;;1598:40:2;;;;1613:10;;;;;1598:38;;:40;;;;;;;;;;;;;;;1613:10;1598:40;;;5:2:-1;;;;30:1;27;20:12;5:2;1598:40:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1598:40:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;;;;;;803:842:2:o;16859:1071:10:-;16901:4;16965:23;16991:16;:14;:16::i;:::-;16965:42;;17096:18;17074;;:40;17070:98;;;17142:14;17130:27;;;;;17070:98;17232:14;17249;:12;:14::i;:::-;17232:31;;17331:23;17357:17;;;;;;;;;-1:-1:-1;;;;;17357:17:10;-1:-1:-1;;;;;17357:31:10;;17389:9;17400:12;;17414:56;17419:13;;17434:35;17439:14;;17455:13;;17434:4;:35::i;:::-;17414:4;:56::i;:::-;17357:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17357:114:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17357:114:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17357:114:10;;-1:-1:-1;1314:9:11;17489:43:10;;;17481:84;;;;;-1:-1:-1;;;17481:84:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;17653:17;17672:15;17691:47;17699:18;17719;;17691:7;:47::i;:::-;17652:86;;-1:-1:-1;17652:86:10;-1:-1:-1;17767:18:10;17756:7;:29;;;;;;;;;17748:73;;;;;-1:-1:-1;;;17748:73:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;17839:84;17861:18;17881:9;17892:18;17912:10;17839:21;:84::i;:::-;17832:91;;;;;;;16859:1071;:::o;64387:592::-;64474:4;64458:5;71531:30;71551:9;71531:19;:30::i;:::-;64490:10;64503:16;:14;:16::i;:::-;64490:29;-1:-1:-1;64533:29:10;;64529:283;;64727:74;64738:5;64732:12;;;;;;;;64746:54;64727:4;:74::i;64529:283::-;64933:39;64957:14;64933:23;:39::i;6404:190::-;6489:4;6473:5;71531:30;71551:9;71531:19;:30::i;:::-;6572:14;6512:51;6527:10;6539;6551:3;6556:6;6512:14;:51::i;:::-;:75;6505:82;;71582:29;71601:9;71582:18;:29::i;:::-;6404:190;;;;;:::o;2654:23:11:-;;;;:::o;4556:37::-;4588:5;4556:37;:::o;10946:262:10:-;11022:17;;10999:4;;-1:-1:-1;;;;;11022:17:10;:31;11054:14;:12;:14::i;:::-;11070:12;;11084:56;11089:13;;11104:35;11109:14;;11125:13;;11104:4;:35::i;11084:56::-;11184:16;;11166:15;;11142:21;;:39;:58;11022:179;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11022:179:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11022:179:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11022:179:10;;-1:-1:-1;10946:262:10;:::o;48862:198::-;48970:4;48955;71531:30;71551:9;71531:19;:30::i;:::-;48993:60;49007:10;49019;49031:8;49041:11;48993:13;:60::i;:::-;48986:67;;71582:29;71601:9;71582:18;:29::i;14175:202::-;14242:4;14226:5;71531:30;71551:9;71531:19;:30::i;:::-;14291:14;14266:16;:14;:16::i;:::-;:40;14258:75;;;;;-1:-1:-1;;;14258:75:10;;;;;;;;;;;;-1:-1:-1;;;14258:75:10;;;;;;;;;;;;;;;14350:20;:18;:20::i;:::-;14343:27;;71582:29;71601:9;71582:18;:29::i;9475:685::-;-1:-1:-1;;;;;9598:22:10;;9543:4;9598:22;;;:13;:22;;;;;;9543:4;;;;;;;;;9743:36;9612:7;9743:27;:36::i;:::-;9719:60;-1:-1:-1;9719:60:10;-1:-1:-1;9801:18:10;9793:4;:26;;;;;;;;;9789:97;;9848:16;9843:22;9835:40;-1:-1:-1;9867:1:10;;-1:-1:-1;9867:1:10;;-1:-1:-1;9867:1:10;;-1:-1:-1;9835:40:10;;-1:-1:-1;;;;9835:40:10;9789:97;9927:28;:26;:28::i;:::-;9896:59;-1:-1:-1;9896:59:10;-1:-1:-1;9977:18:10;9969:4;:26;;;;;;;;;9965:97;;10024:16;10019:22;;9965:97;-1:-1:-1;10085:14:10;;-1:-1:-1;10102:13:10;;-1:-1:-1;10117:13:10;-1:-1:-1;10117:13:10;-1:-1:-1;9475:685:10;;;;;;:::o;3349:111:2:-;3402:4;3425:28;3440:12;3425:14;:28::i;2498:111::-;2551:4;2574:28;2589:12;2574:14;:28::i;2271:27:11:-;;;;:::o;3165:25::-;;;;:::o;8106:141:10:-;-1:-1:-1;;;;;8206:25:10;;;8180:7;8206:25;;;:18;:25;;;;;;;;:34;;;;;;;;;;;;;8106:141::o;67100:625::-;67187:4;67203:10;67216:16;:14;:16::i;:::-;67203:29;-1:-1:-1;67246:29:10;;67242:295;;67448:78;67459:5;67453:12;;;;;;;;67467:58;67448:4;:78::i;:::-;67441:85;;;;;67242:295;67670:48;67697:20;67670:26;:48::i;1849:42:11:-;;;-1:-1:-1;;;;;1849:42:11;;:::o;4745:234:2:-;4858:4;4875:8;4888:64;4912:8;4922:11;4935:16;4888:23;:64::i;:::-;-1:-1:-1;4874:78:2;4745:234;-1:-1:-1;;;;;4745:234:2:o;10574:202:10:-;10650:17;;10627:4;;-1:-1:-1;;;;;10650:17:10;:31;10682:14;:12;:14::i;:::-;10698:12;;10712:56;10717:13;;10732:35;10737:14;;10753:13;;10732:4;:35::i;10712:56::-;10650:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;57039:606:10;57135:4;57119:5;71531:30;71551:9;71531:19;:30::i;:::-;57151:10;57164:16;:14;:16::i;:::-;57151:29;-1:-1:-1;57194:29:10;;57190:283;;57389:73;57400:5;57394:12;;;;;;;;57408:53;57389:4;:73::i;57190:283::-;57590:48;57613:24;57590:22;:48::i;4414:36:11:-;4446:4;4414:36;:::o;37117:571:10:-;37202:4;37208;37186:5;71531:30;71551:9;71531:19;:30::i;:::-;37224:10;37237:16;:14;:16::i;:::-;37224:29;-1:-1:-1;37267:29:10;;37263:257;;37438:67;37449:5;37443:12;;;;;;;;37457:47;37438:4;:67::i;:::-;37430:79;-1:-1:-1;37507:1:10;;-1:-1:-1;37430:79:10;;-1:-1:-1;37430:79:10;37263:257;37628:53;37645:10;37657;37669:11;37628:16;:53::i;:::-;37621:60;;;;;71571:1;71582:29;71601:9;71582:18;:29::i;:::-;37117:571;;;;:::o;53348:555::-;53428:4;53444:35;53482:11;;;;;;;;;-1:-1:-1;;;;;53482:11:10;53444:49;;53577:14;-1:-1:-1;;;;;53577:28:10;;:30;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;53577:30:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;53577:30:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;53577:30:10;53569:71;;;;;-1:-1:-1;;;53569:71:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;53705:11;:28;;-1:-1:-1;;;;;;53705:28:10;-1:-1:-1;;;;;53705:28:10;;;;;;;;;53812:46;;;;;;;;;;;;;;;;;;;;;;;;;;;53881:14;53876:20;;10313:91;10385:12;10313:91;:::o;68047:1634::-;68141:4;68240:38;68327:16;:14;:16::i;:::-;68322:128;;68366:73;68371:18;68391:47;68366:4;:73::i;68322:128::-;68573:16;:14;:16::i;:::-;68551:18;;:38;68547:153;;68612:77;68617:22;68641:47;68612:4;:77::i;68547:153::-;68791:17;;;;;;;;;-1:-1:-1;;;;;68791:17:10;68768:40;;68908:20;-1:-1:-1;;;;;68908:40:10;;:42;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;68908:42:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;68908:42:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;68908:42:10;68900:83;;;;;-1:-1:-1;;;68900:83:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;69057:17;:40;;-1:-1:-1;;;;;;69057:40:10;-1:-1:-1;;;;;69057:40:10;;;;;;;;;69200:70;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;69345:43:10;;;69341:138;;69425:53;;;22:32:-1;6:49;;69425:53:10;;;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;69390:89:10;;;;-1:-1:-1;;;;;69390:34:10;;;:89;;;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;69390:89:10;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;69390:89:10;;69341:138;69588:47;;;22:32:-1;6:49;;69588:47:10;;;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;69553:83:10;;;;-1:-1:-1;;;;;69553:34:10;;;:83;;;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;69553:83:10;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;-1:-1;69659:14:10;;-1:-1:-1;69654:20:10;;-1:-1:-1;69654:20:10;57906:1004;57987:4;58041:16;:14;:16::i;:::-;58036:123;;58080:68;58085:18;58105:42;58080:4;:68::i;:::-;58073:75;;;;58036:123;58263:16;:14;:16::i;:::-;58241:18;;:38;58237:148;;58302:72;58307:22;58331:42;58302:4;:72::i;58237:148::-;1490:4:11;58454:71:10;58459:48;58464:24;58490:16;;58459:4;:48::i;:::-;58509:15;;58454:4;:71::i;:::-;:106;58450:210;;;58583:66;58588:15;58605:43;58583:4;:66::i;58450:210::-;58702:21;;;58733:48;;;;58797:68;;;;;;;;;;;;;;;;;;;;;;;;;58888:14;58883:20;;55006:1737;55077:4;55187:16;:14;:16::i;:::-;55165:18;;:38;55161:143;;55226:67;55231:22;55255:37;55226:4;:67::i;55161:143::-;-1:-1:-1;;55358:19:10;:31;55354:75;;;55413:16;;55391:38;;55354:75;55471:23;55497:28;:26;:28::i;:::-;55471:54;;1490:4:11;55659:74:10;55664:48;55669:21;;55692:19;55664:4;:48::i;:::-;55714:18;55659:4;:74::i;:::-;:109;55655:208;;;55791:61;55796:15;55813:38;55791:4;:61::i;55655:208::-;55929:19;55909:16;;:39;55905:470;;56006:16;:14;:16::i;:::-;56001:126;;56049:63;56054:18;56074:37;56049:4;:63::i;56001:126::-;56197:16;;;56227:38;;;;56311:53;;;;;;;;;;;;;;;;;;;;;;;;;55905:470;;56439:18;56420:15;;:37;56416:283;;56527:15;;;56556:36;;;;56638:50;;;;;;;;;;;;;;;;;;;;;;;;;56416:283;;56721:14;56716:20;;71931:192;72002:11;;-1:-1:-1;;;72002:11:10;;;;71994:34;;;;;-1:-1:-1;;;71994:34:10;;;;;;;;;;;;-1:-1:-1;;;71994:34:10;;;;;;;;;;;;;;;72043:9;72038:49;;72054:11;;;;;;;;;-1:-1:-1;;;;;72054:11:10;-1:-1:-1;;;;;72054:31:10;;:33;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;72054:33:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;72054:33:10;;;;72038:49;-1:-1:-1;72097:11:10;:19;;-1:-1:-1;;;;72097:19:10;;;71931:192::o;72435:179::-;72511:4;72497:18;;-1:-1:-1;;;;72497:18:10;-1:-1:-1;;;72497:18:10;;;72564:9;72559:48;;72575:11;;;;;;;;;-1:-1:-1;;;;;72575:11:10;-1:-1:-1;;;;;72575:30:10;;:32;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;72559:48:10;72435:179;:::o;15134:1234::-;15242:11;;15195:9;;;;15267:17;15263:1099;;-1:-1:-1;;15456:27:10;;15436:18;;-1:-1:-1;15428:56:10;;15263:1099;15695:14;15712;:12;:14::i;:::-;15695:31;;15740:33;15787:23;;:::i;:::-;15824:17;15898:97;15913:9;15924:12;;15938:56;15943:13;;15958:35;15963:14;;15979:13;;15958:4;:35::i;15938:56::-;15898:14;:97::i;:::-;15856:139;-1:-1:-1;15856:139:10;-1:-1:-1;16024:18:10;16013:7;:29;;;;;;;;;16009:87;;16070:7;-1:-1:-1;16079:1:10;;-1:-1:-1;16062:19:10;;-1:-1:-1;;;;16062:19:10;16009:87;16136:50;16143:28;16173:12;16136:6;:50::i;:::-;16110:76;-1:-1:-1;16110:76:10;-1:-1:-1;16215:18:10;16204:7;:29;;;;;;;;;16200:87;;16261:7;-1:-1:-1;16270:1:10;;-1:-1:-1;16253:19:10;;-1:-1:-1;;;;16253:19:10;16200:87;-1:-1:-1;16329:21:10;16309:18;;-1:-1:-1;16329:21:10;-1:-1:-1;16301:50:10;;-1:-1:-1;;;16301:50:10;15134:1234;;;:::o;3925:2226::-;4097:11;;:60;;;-1:-1:-1;;;4097:60:10;;4133:4;4097:60;;;;-1:-1:-1;;;;;4097:60:10;;;;;;;;;;;;;;;;;;;;;;4023:4;;;;4097:11;;:27;;:60;;;;;;;;;;;;;;4023:4;4097:11;:60;;;5:2:-1;;;;30:1;27;20:12;5:2;4097:60:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4097:60:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4097:60:10;;-1:-1:-1;4171:12:10;;4167:142;;4206:92;4217:27;4246:42;4290:7;4206:10;:92::i;:::-;4199:99;;;;;4167:142;4372:3;-1:-1:-1;;;;;4365:10:10;:3;-1:-1:-1;;;;;4365:10:10;;4361:103;;;4398:55;4403:15;4420:32;4398:4;:55::i;4361:103::-;4538:22;-1:-1:-1;;;;;4578:14:10;;;;;;;4574:156;;;-1:-1:-1;;;4574:156:10;;;-1:-1:-1;;;;;;4687:23:10;;;;;;;:18;:23;;;;;;;;:32;;;;;;;;;;4574:156;4805:17;4832;4859;4886;4940:34;4948:17;4967:6;4940:7;:34::i;:::-;4914:60;;-1:-1:-1;4914:60:10;-1:-1:-1;4999:18:10;4988:7;:29;;;;;;;;;4984:123;;5040:56;5045:16;5063:32;5040:4;:56::i;:::-;5033:63;;;;;;;;;;4984:123;-1:-1:-1;;;;;5151:18:10;;;;;;:13;:18;;;;;;5143:35;;5171:6;5143:7;:35::i;:::-;5117:61;;-1:-1:-1;5117:61:10;-1:-1:-1;5203:18:10;5192:7;:29;;;;;;;;;5188:122;;5244:55;5249:16;5267:31;5244:4;:55::i;5188:122::-;-1:-1:-1;;;;;5354:18:10;;;;;;:13;:18;;;;;;5346:35;;5374:6;5346:7;:35::i;:::-;5320:61;;-1:-1:-1;5320:61:10;-1:-1:-1;5406:18:10;5395:7;:29;;;;;;;;;5391:120;;5447:53;5452:16;5470:29;5447:4;:53::i;5391:120::-;-1:-1:-1;;;;;5638:18:10;;;;;;;:13;:18;;;;;;:33;;;5681:18;;;;;;:33;;;-1:-1:-1;;5784:29:10;;5780:107;;-1:-1:-1;;;;;5829:23:10;;;;;;;:18;:23;;;;;;;;:32;;;;;;;;;:47;;;5780:107;5955:3;-1:-1:-1;;;;;5941:26:10;5950:3;-1:-1:-1;;;;;5941:26:10;-1:-1:-1;;;;;;;;;;;5960:6:10;5941:26;;;;;;;;;;;;;;;;;;-1:-1:-1;6129:14:10;;3925:2226;-1:-1:-1;;;;;;;;;;3925:2226:10:o;38013:593::-;38122:4;38128;38106:5;71531:30;71551:9;71531:19;:30::i;:::-;38144:10;38157:16;:14;:16::i;:::-;38144:29;-1:-1:-1;38187:29:10;;38183:257;;38358:67;38369:5;38363:12;;;;;;;;38377:47;38358:4;:67::i;:::-;38350:79;-1:-1:-1;38427:1:10;;-1:-1:-1;38350:79:10;;-1:-1:-1;38350:79:10;38183:257;38548:51;38565:10;38577:8;38587:11;38548:16;:51::i;:::-;38541:58;;;;;71571:1;71582:29;71601:9;71582:18;:29::i;:::-;38013:593;;;;;;:::o;528:335::-;664:11;;709:26;;;-1:-1:-1;;;709:26:10;;;;577:4;;-1:-1:-1;;;;;664:11:10;;;;709:24;;:26;;;;;;;;;;;;;;;664:11;709:26;;;5:2:-1;;;;30:1;27;20:12;5:2;709:26:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;709:26:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;709:26:10;-1:-1:-1;;;;;695:40:10;:10;:40;:79;;;;;739:18;-1:-1:-1;;;;;739:33:10;;:35;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;739:35:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;739:35:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;739:35:10;695:79;694:162;;;-1:-1:-1;780:10:10;326:42:11;780:32:10;:75;;;;;816:18;-1:-1:-1;;;;;816:37:10;;:39;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;816:39:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;816:39:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;816:39:10;687:169;;;528:335;:::o;2431:306:21:-;2508:9;2519:4;2536:13;2551:18;;:::i;:::-;2573:20;2583:1;2586:6;2573:9;:20::i;:::-;2535:58;;-1:-1:-1;2535:58:21;-1:-1:-1;2614:18:21;2607:3;:25;;;;;;;;;2603:71;;-1:-1:-1;2656:3:21;-1:-1:-1;2661:1:21;;-1:-1:-1;2648:15:21;;2603:71;2692:18;2712:17;2721:7;2712:8;:17::i;:::-;2684:46;;;;;;2431:306;;;;;;:::o;5238:166:2:-;5339:10;;5367:30;;;-1:-1:-1;;;5367:30:2;;5391:4;5367:30;;;;;;5285:4;;-1:-1:-1;;;;;5339:10:2;;;;5367:15;;:30;;;;;;;;;;;;;;;5339:10;5367:30;;;5:2:-1;;;;30:1;27;20:12;1670:865:3;1876:14;;1842:79;;;-1:-1:-1;;;1842:79:3;;-1:-1:-1;;;;;1876:14:3;;;1842:79;;;;;;;;;;;;;;;;;;;326:42:11;;1842:33:3;;:79;;;;;;;;;;;;;;326:42:11;1842:79:3;;;5:2:-1;;;;30:1;27;20:12;5:2;1842:79:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1842:79:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1842:79:3;1834:97;;;;;-1:-1:-1;;;1834:97:3;;;;;;;;;;;;-1:-1:-1;;;1834:97:3;;;;;;;;;;;;;;;2018:11;2014:40;;;2031:23;:21;:23::i;:::-;2099:25;2127:14;;-1:-1:-1;;;;;2188:32:3;;;-1:-1:-1;;;;;;2188:32:3;;;;;2345:81;;;;;;;;;;;;;;;;;2127:14;;;;;2316:122;;2338:4;;2401:24;;2345:81;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2345:81:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2345:81:3;;;-1:-1:-1;;26:21;;;22:32;6:49;;2345:81:3;;;49:4:-1;25:18;;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2316:122:3;;;;;;;;;;;-1:-1:-1;;;2316:122:3;;;;2345:81;;-1:-1:-1;2316:122:3;-1:-1:-1;2316:13:3;;-1:-1:-1;2316:122:3:i;:::-;-1:-1:-1;2513:14:3;;2476:52;;;-1:-1:-1;;;;;2476:52:3;;;;;2513:14;;;2476:52;;;;;;;;;;;;;;;;1670:865;;;;:::o;8568:149:20:-;8629:4;8650:33;8663:3;8658:9;;;;;;;;8674:4;8669:10;;;;;;;;8650:33;;;;;;;;;;;;;8681:1;8650:33;;;;;;;;;;;;;8706:3;8701:9;;;;;;;59995:1627:10;60062:4;60118:21;60188:16;:14;:16::i;:::-;60183:120;;60227:65;60232:18;60252:39;60227:4;:65::i;60183:120::-;60426:16;:14;:16::i;:::-;60404:18;;:38;60400:145;;60465:69;60470:22;60494:39;60465:4;:69::i;60400:145::-;60648:12;60631:14;:12;:14::i;:::-;:29;60627:150;;;60683:83;60688:29;60719:46;60683:4;:83::i;60627:150::-;60868:13;;60853:12;:28;60849:127;;;60904:61;60909:15;60926:38;60904:4;:61::i;60849:127::-;61210:33;61215:13;;61230:12;61210:4;:33::i;:::-;61314:13;:32;;;61191:52;-1:-1:-1;61463:39:10;61477:10;61489:12;61463:13;:39::i;:::-;61518:59;;;61534:10;61518:59;;;;;;;;;;;;;;;;;;;;;;;;;61600:14;61595:20;;26431:536;26522:4;26506:5;71531:30;71551:9;71531:19;:30::i;:::-;26538:10;26551:16;:14;:16::i;:::-;26538:29;-1:-1:-1;26581:29:10;;26577:246;;26751:61;26762:5;26756:12;;;;;;;;26770:41;26751:4;:61::i;26577:246::-;26920:40;26932:10;26944:1;26947:12;26920:11;:40::i;12788:1238::-;-1:-1:-1;;;;;13130:23:10;;12865:9;13130:23;;;:14;:23;;;;;13354:24;;12865:9;;;;;;;;13350:90;;-1:-1:-1;13407:18:10;;-1:-1:-1;13407:18:10;;-1:-1:-1;13399:30:10;;-1:-1:-1;;;13399:30:10;13350:90;13662:46;13670:14;:24;;;13696:11;;13662:7;:46::i;:::-;13629:79;;-1:-1:-1;13629:79:10;-1:-1:-1;13733:18:10;13722:7;:29;;;;;;;;;13718:79;;-1:-1:-1;13775:7:10;;-1:-1:-1;13784:1:10;;-1:-1:-1;13767:19:10;;-1:-1:-1;;13767:19:10;13718:79;13827:58;13835:19;13856:14;:28;;;13827:7;:58::i;:::-;13807:78;;-1:-1:-1;13807:78:10;-1:-1:-1;13910:18:10;13899:7;:29;;;;;;;;;13895:79;;-1:-1:-1;13952:7:10;;-1:-1:-1;13961:1:10;;-1:-1:-1;13944:19:10;;-1:-1:-1;;13944:19:10;13895:79;-1:-1:-1;13992:18:10;;-1:-1:-1;14012:6:10;-1:-1:-1;;;12788:1238:10;;;;:::o;62718:1424::-;62789:4;62845:21;62990:16;:14;:16::i;:::-;62968:18;;:38;62964:148;;63029:72;63034:22;63058:42;63029:4;:72::i;62964:148::-;63215:14;63198;:12;:14::i;:::-;:31;63194:155;;;63252:86;63257:29;63288:49;63252:4;:86::i;63194:155::-;63444:13;;63427:14;:30;63423:132;;;63480:64;63485:15;63502:41;63480:4;:64::i;63423:132::-;63791:35;63796:13;;63811:14;63791:4;:35::i;:::-;63899:13;:32;;;63772:54;-1:-1:-1;64048:49:10;326:42:11;64082:14:10;64048:13;:49::i;20737:546::-;20814:4;20820;20798:5;71531:30;71551:9;71531:19;:30::i;:::-;20836:10;20849:16;:14;:16::i;:::-;20836:29;-1:-1:-1;20879:29:10;;20875:249;;21050:59;21061:5;21055:12;;;;;;;;21069:39;21050:4;:59::i;20875:249::-;21243:33;21253:10;21265;21243:9;:33::i;3095:114:22:-;3148:4;3171:31;3176:1;3179;3171:31;;;;;;;;;;;;;-1:-1:-1;;;3171:31:22;;;:4;:31::i;1302:230:12:-;1358:9;1369:4;1394:1;1389;:6;1385:141;;-1:-1:-1;1419:18:12;;-1:-1:-1;1439:5:12;;;1411:34;;1385:141;-1:-1:-1;1484:27:12;;-1:-1:-1;1513:1:12;1476:39;;18030:2317:10;18161:4;18804:31;;:::i;:::-;18838:53;18843:35;;;;;;;;18858:18;18843:35;;;18880:10;18838:4;:53::i;:::-;18804:87;;18901:24;18928:54;18947:20;18969:12;;18928:18;:54::i;:::-;18901:81;;18992:20;19015:39;19020:19;19041:12;;19015:4;:39::i;:::-;18992:62;;19064:21;19088:101;19114:38;;;;;;;;19129:21;;19114:38;;;19154:19;19175:13;;19088:25;:101::i;:::-;19064:125;;19199:21;19223:95;19249:32;;;;;;;;19264:15;;19249:32;;;19283:19;19304:13;;19223:25;:95::i;:::-;19199:119;;19328:22;19353:97;19379:33;;;;;;;;19394:16;;19379:33;;;19414:19;19435:14;;19353:25;:97::i;:::-;19328:122;;19460:19;19482:73;19508:20;19530:11;;19543;;19482:25;:73::i;:::-;19752:18;:39;;;19801:11;:28;;;19839:12;:30;;;19879:13;:32;;;19921:13;:32;;;19963:14;:34;;;20059:79;;;;;;;;;;;;;;;;;;;;;;;;;;19460:95;;-1:-1:-1;20059:79:10;;;;;;;;;;20203:17;;20227:74;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;20227:74:10;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;20195:107:10;;;;-1:-1:-1;;;;;20203:17:10;;;;20227:74;;20195:107;;;;25:18:-1;20195:107:10;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;20195:107:10;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;-1:-1;20325:14:10;;-1:-1:-1;20320:20:10;;-1:-1:-1;20320:20:10;;20313:27;18030:2317;-1:-1:-1;;;;;;;;;;;;18030:2317:10:o;65247:1492::-;65319:4;65376:22;65522:16;:14;:16::i;:::-;65500:18;;:38;65496:149;;65561:73;65566:22;65590:43;65561:4;:73::i;65496:149::-;65748:14;65731;:12;:14::i;:::-;:31;65727:156;;;65785:87;65790:29;65821:50;65785:4;:87::i;65727:156::-;65980:14;;65963;:31;65959:134;;;66017:65;66022:15;66039:42;66017:4;:65::i;65959:134::-;66331:36;66336:14;;66352;66331:4;:36::i;:::-;66311:56;;66459:17;66442:14;:34;;;;66593:101;66654:11;;;;;;;;;-1:-1:-1;;;;;66654:11:10;-1:-1:-1;;;;;66623:50:10;;:52;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;66623:52:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;66623:52:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;66623:52:10;66679:14;66593:13;:101::i;50058:3037::-;50247:11;;:87;;;-1:-1:-1;;;50247:87:10;;50280:4;50247:87;;;;-1:-1:-1;;;;;50247:87:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;50176:4;;;;50247:11;;:24;;:87;;;;;;;;;;;;;;50176:4;50247:11;:87;;;5:2:-1;;;;30:1;27;20:12;5:2;50247:87:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;50247:87:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;50247:87:10;;-1:-1:-1;50348:12:10;;50344:149;;50383:99;50394:27;50423:49;50474:7;50383:10;:99::i;50344:149::-;50563:10;-1:-1:-1;;;;;50551:22:10;:8;-1:-1:-1;;;;;50551:22:10;;50547:144;;;50596:84;50601:26;50629:50;50596:4;:84::i;50547:144::-;50701:34;;:::i;:::-;-1:-1:-1;;;;;51065:23:10;;;;;;:13;:23;;;;;;51057:45;;51090:11;51057:7;:45::i;:::-;51031:22;;;51016:86;;;51017:4;51016:86;;;;;;;;;;;;;;;;;;;-1:-1:-1;51132:18:10;;-1:-1:-1;51116:12:10;;:34;;;;;;;;;51112:174;;51173:102;51184:16;51202:52;51261:4;:12;;;51256:18;;;;;;;;51173:10;:102::i;:::-;51166:109;;;;;;51112:174;51323:62;51328:11;51341:43;;;;;;;;4259:6:11;51341:43:10;;;51323:4;:62::i;:::-;51296:24;;;:89;;;51424:43;;51429:11;;51424:4;:43::i;:::-;51395:26;;;:72;51522:28;:26;:28::i;:::-;51493:25;;;51478:72;;;51479:4;51478:72;;;;;;;;;;;;;;;;;;;-1:-1:-1;51584:18:10;;-1:-1:-1;51568:12:10;;:34;;;;;;;;;51560:71;;;;;-1:-1:-1;;;51560:71:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;51669:88;51688:42;;;;;;;;51703:4;:25;;;51688:42;;;51732:4;:24;;;51669:18;:88::i;:::-;51642:24;;;:115;;;51797:13;;51792:45;;:4;:45::i;:::-;51768:21;;;:69;51874:11;;51887:24;;;;51869:43;;51874:11;51869:4;:43::i;:::-;51847:19;;;:65;-1:-1:-1;;;;;51974:25:10;;;;;;:13;:25;;;;;;52001:26;;;;51966:62;;51974:25;51966:7;:62::i;:::-;51938:24;;;51923:105;;;51924:4;51923:105;;;;;;;;;;;;;;;;;;;-1:-1:-1;52058:18:10;;-1:-1:-1;52042:12:10;;:34;;;;;;;;;52038:174;;52099:102;52110:16;52128:52;52187:4;:12;;;52182:18;;;;;;;52038:174;52424:21;;;;52408:13;:37;52469:19;;;;52455:11;:33;52524:22;;;;;-1:-1:-1;;;;;52498:23:10;;;-1:-1:-1;52498:23:10;;;:13;:23;;;;;;:48;;;;52584:24;;;;52556:25;;;;;;;;;;:52;;;;52691:26;;;;52660:58;;;;;;;52556:25;;52498:23;;-1:-1:-1;;;;;;;;;;;52660:58:10;;;;;;;;;;52767:24;;;;52733:59;;;;;;;52760:4;;-1:-1:-1;;;;;52733:59:10;;;-1:-1:-1;;;;;;;;;;;52733:59:10;;;;;;;;52836:24;;;;52862:21;;;;52807:77;;;52829:4;52807:77;;;;;;;;;;;;;;;;;;;;;;;;;;53073:14;53061:27;50058:3037;-1:-1:-1;;;;;;;50058:3037:10:o;32601:523::-;32682:4;32666:5;71531:30;71551:9;71531:19;:30::i;:::-;32698:10;32711:16;:14;:16::i;:::-;32698:29;-1:-1:-1;32741:29:10;;32737:246;;32911:61;32922:5;32916:12;;;;;;;;32930:41;32911:4;:61::i;32737:246::-;33080:37;33092:10;33104:12;33080:11;:37::i;25533:526::-;25614:4;25598:5;71531:30;71551:9;71531:19;:30::i;:::-;25630:10;25643:16;:14;:16::i;:::-;25630:29;-1:-1:-1;25673:29:10;;25669:246;;25843:61;25854:5;25848:12;;;;;;;25669:246;26012:40;26024:10;26036:12;26050:1;26012:11;:40::i;43181:986::-;43322:4;43328;43306:5;71531:30;71551:9;71531:19;:30::i;:::-;43344:10;43357:16;:14;:16::i;:::-;43344:29;-1:-1:-1;43387:29:10;;43383:266;;43563:71;43574:5;43568:12;;;;;;;;43582:51;43563:4;:71::i;:::-;43555:83;-1:-1:-1;43636:1:10;;-1:-1:-1;43555:83:10;;-1:-1:-1;43555:83:10;43383:266;43667:16;-1:-1:-1;;;;;43667:31:10;;:33;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;43667:33:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;43667:33:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;43667:33:10;;-1:-1:-1;43714:29:10;;43710:270;;43890:75;43901:5;43895:12;;;;;;;;43909:55;43890:4;:75::i;43710:270::-;44087:73;44108:10;44120:8;44130:11;44143:16;44087:20;:73::i;:::-;44080:80;;;;;71571:1;71582:29;71601:9;71582:18;:29::i;:::-;43181:986;;;;;;;:::o;39291:3373::-;39469:11;;:75;;;-1:-1:-1;;;39469:75:10;;39508:4;39469:75;;;;-1:-1:-1;;;;;39469:75:10;;;;;;;;;;;;;;;;;;;;;;39386:4;;;;;;39469:11;;;:30;;:75;;;;;;;;;;;;;;;39386:4;39469:11;:75;;;5:2:-1;;;;30:1;27;20:12;5:2;39469:75:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;39469:75:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;39469:75:10;;-1:-1:-1;39558:12:10;;39554:151;;39594:96;39605:27;39634:46;39682:7;39594:10;:96::i;:::-;39586:108;-1:-1:-1;39692:1:10;;-1:-1:-1;39586:108:10;;-1:-1:-1;39586:108:10;39554:151;39812:16;:14;:16::i;:::-;39790:18;;:38;39786:151;;39852:70;39857:22;39881:40;39852:4;:70::i;39786:151::-;39947:32;;:::i;:::-;-1:-1:-1;;;;;40090:24:10;;;;;;:14;:24;;;;;:38;;;40069:18;;;:59;40256:37;40105:8;40256:27;:37::i;:::-;40233:19;;;40218:75;;;40219:12;;;40218:75;;;;;;;;;;;;;;;;;;;-1:-1:-1;40323:18:10;;-1:-1:-1;40307:4:10;:12;;;:34;;;;;;;;;40303:190;;40365:113;40376:16;40394:63;40464:4;:12;;;40459:18;;;;;;;40365:113;40357:125;-1:-1:-1;40480:1:10;;-1:-1:-1;40357:125:10;;-1:-1:-1;;40357:125:10;40303:190;-1:-1:-1;;40572:11:10;:23;40568:153;;;40630:19;;;;40611:16;;;:38;40568:153;;;40680:16;;;:30;;;40568:153;41306:37;41319:5;41326:4;:16;;;41306:12;:37::i;:::-;41281:22;;;:62;;;41646:19;;;;41638:52;;:7;:52::i;:::-;41612:22;;;41597:93;;;41598:12;;;41597:93;;;;;;;;;;;;;;;;;;;-1:-1:-1;41724:18:10;;-1:-1:-1;41708:4:10;:12;;;:34;;;;;;;;;41700:105;;;;-1:-1:-1;;;41700:105:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41855:45;41863:12;;41877:4;:22;;;41855:7;:45::i;:::-;41831:20;;;41816:84;;;41817:12;;;41816:84;;;;;;;;;;;;;;;;;;;-1:-1:-1;41934:18:10;;-1:-1:-1;41918:4:10;:12;;;:34;;;;;;;;;41910:96;;;;-1:-1:-1;;;41910:96:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42123:22;;;;;;-1:-1:-1;;;;;42086:24:10;;;;;;;:14;:24;;;;;;;;;:59;;;42196:11;;42155:38;;;;:52;;;;42232:20;;;;42217:12;:35;;;42339:22;;;;42363;;42310:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42634:22;;;42617:14;;-1:-1:-1;42634:22:10;-1:-1:-1;;39291:3373:10;;;;;;;:::o;3355:118::-;3416:4;326:42:11;-1:-1:-1;;;;;3439:25:10;;:27;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;1926:263:12;1997:9;2008:4;2025:14;2041:8;2053:13;2061:1;2064;2053:7;:13::i;:::-;2024:42;;-1:-1:-1;2024:42:12;-1:-1:-1;2089:18:12;2081:4;:26;;;;;;;;;2077:73;;-1:-1:-1;2131:4:12;-1:-1:-1;2137:1:12;;-1:-1:-1;2123:16:12;;2077:73;2167:15;2175:3;2180:1;2167:7;:15::i;:::-;2160:22;;;;;;1926:263;;;;;;:::o;771:503:21:-;832:9;843:10;;:::i;:::-;866:14;882:20;906:22;914:3;409:4:22;906:7:21;:22::i;:::-;865:63;;-1:-1:-1;865:63:21;-1:-1:-1;950:18:21;942:4;:26;;;;;;;;;938:90;;-1:-1:-1;998:18:21;;;;;;;;;-1:-1:-1;998:18:21;;992:4;;-1:-1:-1;998:18:21;-1:-1:-1;984:33:21;;938:90;1039:14;1055:13;1072:31;1080:15;1097:5;1072:7;:31::i;:::-;1038:65;;-1:-1:-1;1038:65:21;-1:-1:-1;1125:18:21;1117:4;:26;;;;;;;;;1113:90;;-1:-1:-1;1173:18:21;;;;;;;;;-1:-1:-1;1173:18:21;;1167:4;;-1:-1:-1;1173:18:21;-1:-1:-1;1159:33:21;;-1:-1:-1;;1159:33:21;1113:90;1241:25;;;;;;;;;;;;-1:-1:-1;;1241:25:21;;-1:-1:-1;771:503:21;-1:-1:-1;;;;;;771:503:21:o;8835:241:20:-;8920:4;8941:43;8954:3;8949:9;;;;;;;;8965:4;8960:10;;;;;;;;8941:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;9009:27;9002:3;:34;;;;;;;;;:67;;9065:3;9060:9;;;;;;;;9002:67;;;-1:-1:-1;9039:4:20;:18;;8995:74;-1:-1:-1;;8835:241:20:o;1612:250:12:-;1668:9;;1704:5;;;1724:6;;;1720:136;;1754:18;;-1:-1:-1;1774:1:12;-1:-1:-1;1746:30:12;;1720:136;-1:-1:-1;1815:26:12;;-1:-1:-1;1843:1:12;;-1:-1:-1;1807:38:12;;1977:346:21;2046:9;2057:10;;:::i;:::-;2080:14;2096:19;2119:27;2127:1;:10;;;2139:6;2119:7;:27::i;:::-;2079:67;;-1:-1:-1;2079:67:21;-1:-1:-1;2168:18:21;2160:4;:26;;;;;;;;;2156:90;;-1:-1:-1;2216:18:21;;;;;;;;;-1:-1:-1;2216:18:21;;2210:4;;-1:-1:-1;2216:18:21;-1:-1:-1;2202:33:21;;2156:90;2284:31;;;;;;;;;;;;-1:-1:-1;;2284:31:21;;-1:-1:-1;1977:346:21;-1:-1:-1;;;;1977:346:21:o;788:210:22:-;968:12;409:4;968:23;;;788:210::o;1096:186:3:-;1213:63;;73327:765:10;73431:12;73456;73470:23;73497:6;-1:-1:-1;;;;;73497:11:10;73509:4;73497:17;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;73497:17:10;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;73455:59:10;;;;73530:7;73525:533;;73623:17;;:21;73619:429;;73881:10;73875:17;73941:15;73928:10;73924:2;73920:19;73913:44;73830:145;74020:12;74013:20;;-1:-1:-1;;;74013:20:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;74013:20:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;73619:429;74075:10;73327:765;-1:-1:-1;;;;;73327:765:10:o;3712:118:22:-;3765:4;3788:35;3793:1;3796;3788:35;;;;;;;;;;;;;-1:-1:-1;;;3788:35:22;;;:4;:35::i;7357:223:2:-;7452:91;;;-1:-1:-1;;;;;7452:91:2;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;7452:91:2;;;;;;;25:18:-1;;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;7432:141:2;;;;;;;;;;;;;;;;;;:19;:141::i;:::-;7357:223;;:::o;27836:4504:10:-;27943:4;27967:19;;;:42;;-1:-1:-1;27990:19:10;;27967:42;27959:107;;;;-1:-1:-1;;;27959:107:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28077:27;;:::i;:::-;28218:28;:26;:28::i;:::-;28189:25;;;28174:72;;;28175:12;;;28174:72;;;;;;;;;;;;;;;;;;;-1:-1:-1;28276:18:10;;-1:-1:-1;28260:4:10;:12;;;:34;;;;;;;;;28256:166;;28317:94;28328:16;28346:44;28397:4;:12;;;28392:18;;;;;;;28317:94;28310:101;;;;;28256:166;28473:18;;28469:1265;;28743:17;;;:34;;;28846:42;;;;;;;;28861:25;;;;28846:42;;28828:77;;28763:14;28828:17;:77::i;:::-;28807:17;;;28792:113;;;28793:12;;;28792:113;;;;;;;;;;;;;;;;;;;-1:-1:-1;28939:18:10;;-1:-1:-1;28923:4:10;:12;;;:34;;;;;;;;;28919:183;;28984:103;28995:16;29013:53;29073:4;:12;;;29068:18;;;;;;;28919:183;28469:1265;;;29396:82;29419:14;29435:42;;;;;;;;29450:4;:25;;;29435:42;;;29396:22;:82::i;:::-;29375:17;;;29360:118;;;29361:12;;;29360:118;;;;;;;;;;;;;;;;;;;-1:-1:-1;29512:18:10;;-1:-1:-1;29496:4:10;:12;;;:34;;;;;;;;;29492:183;;29557:103;29568:16;29586:53;29646:4;:12;;;29641:18;;;;;;;29492:183;29689:17;;;:34;;;28469:1265;29800:11;;29851:17;;;;29800:69;;;-1:-1:-1;;;29800:69:10;;29834:4;29800:69;;;;-1:-1:-1;;;;;29800:69:10;;;;;;;;;;;;;;;;29785:12;;29800:11;;;;;:25;;:69;;;;;;;;;;;;;;;29785:12;29800:11;:69;;;5:2:-1;;;;30:1;27;20:12;5:2;29800:69:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29800:69:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;29800:69:10;;-1:-1:-1;29883:12:10;;29879:140;;29918:90;29929:27;29958:40;30000:7;29918:10;:90::i;:::-;29911:97;;;;;;29879:140;30126:16;:14;:16::i;:::-;30104:18;;:38;30100:140;;30165:64;30170:22;30194:34;30165:4;:64::i;30100:140::-;30528:39;30536:11;;30549:4;:17;;;30528:7;:39::i;:::-;30505:19;;;30490:77;;;30491:12;;;30490:77;;;;;;;;;;;;;;;;;;;-1:-1:-1;30597:18:10;;-1:-1:-1;30581:4:10;:12;;;:34;;;;;;;;;30577:176;;30638:104;30649:16;30667:54;30728:4;:12;;;30723:18;;;;;;;30577:176;-1:-1:-1;;;;;30811:23:10;;;;;;:13;:23;;;;;;30836:17;;;;30803:51;;30811:23;30803:7;:51::i;:::-;30778:21;;;30763:91;;;30764:12;;;30763:91;;;;;;;;;;;;;;;;;;;-1:-1:-1;30884:18:10;;-1:-1:-1;30868:4:10;:12;;;:34;;;;;;;;;30864:179;;30925:107;30936:16;30954:57;31018:4;:12;;;31013:18;;;;;;;30864:179;31138:4;:17;;;31121:14;:12;:14::i;:::-;:34;31117:153;;;31178:81;31183:29;31214:44;31178:4;:81::i;31117:153::-;31476:19;;;;31462:11;:33;31531:21;;;;-1:-1:-1;;;;;31505:23:10;;;;;;:13;:23;;;;;:47;31944:17;;;;31920:42;;31519:8;;31920:13;:42::i;:::-;32071:17;;;;32037:52;;;;;;;32064:4;;-1:-1:-1;;;;;32037:52:10;;;-1:-1:-1;;;;;;;;;;;32037:52:10;;;;;;;;32121:17;;;;32140;;;;;32104:54;;;-1:-1:-1;;;;;32104:54:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32208:11;;32258:17;;;;32277;;;;32208:87;;;-1:-1:-1;;;32208:87:10;;32241:4;32208:87;;;;-1:-1:-1;;;;;32208:87:10;;;;;;;;;;;;;;;;;;;;;;:11;;;;;:24;;:87;;;;;:11;;:87;;;;;;;:11;;:87;;;5:2:-1;;;;30:1;27;20:12;5:2;32208:87:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;32318:14:10;;-1:-1:-1;32313:20:10;;-1:-1:-1;;32313:20:10;;32306:27;27836:4504;-1:-1:-1;;;;;;27836:4504:10:o;542:331:12:-;598:9;;629:6;625:67;;-1:-1:-1;659:18:12;;-1:-1:-1;659:18:12;651:30;;625:67;711:5;;;715:1;711;:5;:1;731:5;;;;;:10;727:140;;-1:-1:-1;765:26:12;;-1:-1:-1;793:1:12;;-1:-1:-1;757:38:12;;727:140;834:18;;-1:-1:-1;854:1:12;-1:-1:-1;826:30:12;;963:209;1019:9;;1050:6;1046:75;;-1:-1:-1;1080:26:12;;-1:-1:-1;1108:1:12;1072:38;;1046:75;1139:18;1163:1;1159;:5;;;;;;1131:34;;;;963:209;;;;;:::o;21974:3216:10:-;22120:11;;:58;;;-1:-1:-1;;;22120:58:10;;22152:4;22120:58;;;;-1:-1:-1;;;;;22120:58:10;;;;;;;;;;;;;;;22044:4;;;;;;22120:11;;;:23;;:58;;;;;;;;;;;;;;;22044:4;22120:11;:58;;;5:2:-1;;;;30:1;27;20:12;5:2;22120:58:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22120:58:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22120:58:10;;-1:-1:-1;22192:12:10;;22188:143;;22228:88;22239:27;22268:38;22308:7;22228:10;:88::i;:::-;22220:100;-1:-1:-1;22318:1:10;;-1:-1:-1;22220:100:10;;-1:-1:-1;22220:100:10;22188:143;22438:16;:14;:16::i;:::-;22416:18;;:38;22412:143;;22478:62;22483:22;22507:32;22478:4;:62::i;22412:143::-;22565:25;;:::i;:::-;22645:28;:26;:28::i;:::-;22616:25;;;22601:72;;;22602:12;;;22601:72;;;;;;;;;;;;;;;;;;;-1:-1:-1;22703:18:10;;-1:-1:-1;22687:4:10;:12;;;:34;;;;;;;;;22683:169;;22745:92;22756:16;22774:42;22823:4;:12;;;22818:18;;;;;;;22745:92;22737:104;-1:-1:-1;22839:1:10;;-1:-1:-1;22737:104:10;;-1:-1:-1;;22737:104:10;22683:169;23809:32;23822:6;23830:10;23809:12;:32::i;:::-;23785:21;;;:56;;;24107:42;;;;;;;;24122:25;;;;24107:42;;24061:89;;23785:56;24061:22;:89::i;:::-;24042:15;;;24027:123;;;24028:12;;;24027:123;;;;;;;;;;;;;;;;;;;-1:-1:-1;24184:18:10;;-1:-1:-1;24168:4:10;:12;;;:34;;;;;;;;;24160:79;;;;;-1:-1:-1;;;24160:79:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24520:34;24525:11;;24538:4;:15;;;24520:4;:34::i;:::-;24498:19;;;:56;-1:-1:-1;;;;;24594:21:10;;;;;;:13;:21;;;;;;24617:15;;;;24589:44;;24594:21;24589:4;:44::i;:::-;24565:21;;;:68;;;24723:19;;;;24709:11;:33;-1:-1:-1;;;;;24752:21:10;;;;;;:13;:21;;;;;;;;;:45;;;;24883:21;;;;24906:15;;;;;24870:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24969:15;;;;24937:48;;;;;;;-1:-1:-1;;;;;24937:48:10;;;24954:4;;-1:-1:-1;;;;;;;;;;;24937:48:10;;;;;;;;25035:11;;25081:21;;;;25104:15;;;;25035:85;;;-1:-1:-1;;;25035:85:10;;25066:4;25035:85;;;;-1:-1:-1;;;;;25035:85:10;;;;;;;;;;;;;;;;;;;;;;:11;;;;;:22;;:85;;;;;:11;;:85;;;;;;;:11;;:85;;;5:2:-1;;;;30:1;27;20:12;5:2;25035:85:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;25144:14:10;;-1:-1:-1;25139:20:10;;-1:-1:-1;;25139:20:10;;25161:4;:21;;;25131:52;;;;;;21974:3216;;;;;:::o;3215:175:22:-;3296:4;3321:5;;;3352:12;3344:6;;;;3336:29;;;;-1:-1:-1;;;3336:29:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;4160:131:22;4219:10;;:::i;:::-;4248:36;;;;;;;;4263:19;4268:1;:10;;;4280:1;4263:4;:19::i;:::-;4248:36;;4241:43;4160:131;-1:-1:-1;;;4160:131:22:o;1106:171::-;1184:4;1200:18;;:::i;:::-;1221:15;1226:1;1229:6;1221:4;:15::i;:::-;1200:36;;1253:17;1262:7;1253:8;:17::i;1417:205::-;1515:4;1531:18;;:::i;:::-;1552:15;1557:1;1560:6;1552:4;:15::i;:::-;1531:36;;1584:31;1589:17;1598:7;1589:8;:17::i;:::-;1608:6;1584:4;:31::i;4297:119::-;4356:4;409;4379:19;4384:1;4387;:10;;;4379:4;:19::i;:::-;:30;;;;;;;4297:119;-1:-1:-1;;;4297:119:22:o;33537:3334:10:-;33693:11;;:64;;;-1:-1:-1;;;33693:64:10;;33727:4;33693:64;;;;-1:-1:-1;;;;;33693:64:10;;;;;;;;;;;;;;;33621:4;;;;33693:11;;:25;;:64;;;;;;;;;;;;;;33621:4;33693:11;:64;;;5:2:-1;;;;30:1;27;20:12;5:2;33693:64:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;33693:64:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;33693:64:10;;-1:-1:-1;33771:12:10;;33767:140;;33806:90;33817:27;33846:40;33888:7;33806:10;:90::i;:::-;33799:97;;;;;33767:140;34014:16;:14;:16::i;:::-;33992:18;;:38;33988:140;;34053:64;34058:22;34082:34;34053:4;:64::i;33988:140::-;34213:14;34230;:12;:14::i;:::-;34213:31;;34271:12;34259:9;:24;34255:136;;;34306:74;34311:29;34342:37;34306:4;:74::i;:::-;34299:81;;;;;;34255:136;34401:27;;:::i;:::-;34709:37;34737:8;34709:27;:37::i;:::-;34686:19;;;34671:75;;;34672:4;34671:75;;;;;;;;;;;;;;;;;;;-1:-1:-1;34776:18:10;;-1:-1:-1;34760:12:10;;:34;;;;;;;;;34756:179;;34817:107;34828:16;34846:57;34910:4;:12;;;34905:18;;;;;;;34817:107;34810:114;;;;;;;34756:179;34986:42;34994:4;:19;;;35015:12;34986:7;:42::i;:::-;34960:22;;;34945:83;;;34946:4;34945:83;;;;;;;;;;;;;;;;;;;-1:-1:-1;35058:18:10;;-1:-1:-1;35042:12:10;;:34;;;;;;;;;35038:186;;35099:114;35110:16;35128:64;35199:4;:12;;;35194:18;;;;;;;35038:186;35301:11;;35347:22;;;;;35301:69;;-1:-1:-1;;;35301:69:10;;35340:4;35301:69;;;;;;;;;;;;;-1:-1:-1;;;;;35301:11:10;;;;:30;;:69;;;;;;;;;;;;;;;:11;;:69;;;5:2:-1;;;;30:1;27;20:12;5:2;35301:69:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;35301:69:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;35301:69:10;;-1:-1:-1;35384:12:10;;35380:140;;35419:90;35430:27;35459:40;35501:7;35419:10;:90::i;35380:140::-;35569:35;35577:12;;35591;35569:7;:35::i;:::-;35545:20;;;35530:74;;;35531:4;35530:74;;;;;;;;;;;;;;;;;;;-1:-1:-1;35634:18:10;;-1:-1:-1;35618:12:10;;:34;;;;;;;;;35614:177;;35675:105;35686:16;35704:55;35766:4;:12;;;35761:18;;;;;;;35614:177;36024:22;;;;;-1:-1:-1;;;;;35987:24:10;;;;;;:14;:24;;;;;;:59;;;36097:11;;36056:38;;;;:52;36133:20;;;;36118:12;:35;36517:37;36002:8;36541:12;36517:13;:37::i;:::-;36638:22;;;;;36662:20;;;;;36607:76;;-1:-1:-1;;;;;36607:76:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36849:14;36837:27;33537:3334;-1:-1:-1;;;;;;33537:3334:10:o;44768:3544::-;44987:11;;:111;;;-1:-1:-1;;;44987:111:10;;45030:4;44987:111;;;;-1:-1:-1;;;;;44987:111:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44906:4;;;;;;44987:11;;;:34;;:111;;;;;;;;;;;;;;;44906:4;44987:11;:111;;;5:2:-1;;;;30:1;27;20:12;5:2;44987:111:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;44987:111:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;44987:111:10;;-1:-1:-1;45112:12:10;;45108:148;;45148:93;45159:27;45188:43;45233:7;45148:10;:93::i;:::-;45140:105;-1:-1:-1;45243:1:10;;-1:-1:-1;45140:105:10;;-1:-1:-1;45140:105:10;45108:148;45363:16;:14;:16::i;:::-;45341:18;;:38;45337:148;;45403:67;45408:22;45432:37;45403:4;:67::i;45337:148::-;45628:16;:14;:16::i;:::-;45587;-1:-1:-1;;;;;45587:35:10;;:37;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;45587:37:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;45587:37:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;45587:37:10;:57;45583:178;;45668:78;45673:22;45697:48;45668:4;:78::i;45583:178::-;45831:10;-1:-1:-1;;;;;45819:22:10;:8;-1:-1:-1;;;;;45819:22:10;;45815:143;;;45865:78;45870:26;45898:44;45865:4;:78::i;45815:143::-;46010:16;46006:145;;46050:86;46055:36;46093:42;46050:4;:86::i;46006:145::-;-1:-1:-1;;46204:11:10;:23;46200:156;;;46251:90;46256:36;46294:46;46251:4;:90::i;46200:156::-;46408:21;46431:22;46457:51;46474:10;46486:8;46496:11;46457:16;:51::i;:::-;46407:101;;-1:-1:-1;46407:101:10;-1:-1:-1;46522:40:10;;46518:161;;46586:78;46597:16;46591:23;;;;;;;;46616:47;46586:4;:78::i;:::-;46578:90;-1:-1:-1;46666:1:10;;-1:-1:-1;46578:90:10;;-1:-1:-1;;;46578:90:10;46518:161;46929:11;;:102;;;-1:-1:-1;;;46929:102:10;;46979:4;46929:102;;;;-1:-1:-1;;;;;46929:102:10;;;;;;;;;;;;;;;46886:21;;;;46929:11;;;:41;;:102;;;;;;;;;;;;:11;:102;;;5:2:-1;;;;30:1;27;20:12;5:2;46929:102:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;46929:102:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;46929:102:10;;;;;;;;;-1:-1:-1;46929:102:10;-1:-1:-1;47049:40:10;;47041:104;;;;-1:-1:-1;;;47041:104:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;47276:11;47236:16;-1:-1:-1;;;;;47236:26:10;;47263:8;47236:36;;;;;;;;;;;;;-1:-1:-1;;;;;47236:36:10;-1:-1:-1;;;;;47236:36:10;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;47236:36:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;47236:36:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;47236:36:10;:51;;47228:88;;;;;-1:-1:-1;;;47228:88:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;47442:15;-1:-1:-1;;;;;47471:42:10;;47508:4;47471:42;47467:250;;;47542:63;47564:4;47571:10;47583:8;47593:11;47542:13;:63::i;:::-;47529:76;;47467:250;;;47649:57;;;-1:-1:-1;;;47649:57:10;;-1:-1:-1;;;;;47649:57:10;;;;;;;;;;;;;;;;;;;;;;:22;;;;;;:57;;;;;;;;;;;;;;;-1:-1:-1;47649:22:10;:57;;;5:2:-1;;;;30:1;27;20:12;5:2;47649:57:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;47649:57:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;47649:57:10;;-1:-1:-1;47467:250:10;47820:34;;47812:67;;;;;-1:-1:-1;;;47812:67:10;;;;;;;;;;;;-1:-1:-1;;;47812:67:10;;;;;;;;;;;;;;;47941:96;;;-1:-1:-1;;;;;47941:96:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48270:14;48257:48;-1:-1:-1;48287:17:10;;-1:-1:-1;;;;;;44768:3544:10;;;;;;;;:::o;6010:654:2:-;6129:10;;6114:51;;;-1:-1:-1;;;6114:51:2;;6159:4;6114:51;;;;;;6077:4;;;;-1:-1:-1;;;;;6129:10:2;;;;6114:36;;:51;;;;;;;;;;;;;;;6129:10;6114:51;;;5:2:-1;;;;30:1;27;20:12;5:2;6114:51:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6114:51:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6114:51:2;6195:112;;;-1:-1:-1;;;;;6195:112:2;;;;;;6293:4;6195:112;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;6195:112:2;;;;;;6114:51;25:18:-1;;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;6175:161:2;;;;;;;;;;;;;;;;6114:51;;-1:-1:-1;6175:161:2;;6195:112;6175:19;:161::i;:::-;6446:10;;6431:51;;;-1:-1:-1;;;6431:51:2;;6476:4;6431:51;;;;;;6411:17;;-1:-1:-1;;;;;6446:10:2;;6431:36;;:51;;;;;;;;;;;;;;6446:10;6431:51;;;5:2:-1;;;;30:1;27;20:12;5:2;6431:51:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6431:51:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6431:51:2;;-1:-1:-1;6500:29:2;;;;6492:68;;;;;-1:-1:-1;;;6492:68:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;6577:28;;6010:654;-1:-1:-1;;;6010:654:2:o;3836:155:22:-;3917:4;3949:12;3941:6;;;;3933:29;;;;-1:-1:-1;;;3933:29:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;3933:29:22;-1:-1:-1;;;3979:5:22;;;3836:155::o;7978:263:2:-;8113:10;;8073:23;;8099:45;;-1:-1:-1;;;;;8113:10:2;8125:4;8131:12;8099:13;:45::i;:::-;8158:17;;8073:71;;-1:-1:-1;8158:21:2;8154:80;;8200:10;8189:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8189:30:2;8221:12;;8181:53;;;;-1:-1:-1;;;8181:53:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;8154:80:2;7978:263;;;:::o;4423:330:21:-;4511:9;4522:4;4539:13;4554:19;;:::i;:::-;4577:31;4592:6;4600:7;4577:14;:31::i;4877:120:22:-;4930:4;4953:37;4958:1;4961;4953:37;;;;;;;;;;;;;;;;;:4;:37::i;3712:605:21:-;3792:9;3803:10;;:::i;:::-;4100:14;4116;4134:25;409:4:22;4152:6:21;4134:7;:25::i;:::-;4099:60;;-1:-1:-1;4099:60:21;-1:-1:-1;4181:18:21;4173:4;:26;;;;;;;;;4169:90;;-1:-1:-1;4229:18:21;;;;;;;;;-1:-1:-1;4229:18:21;;4223:4;;-1:-1:-1;4229:18:21;-1:-1:-1;4215:33:21;;4169:90;4275:35;4282:9;4293:7;:16;;;4275:6;:35::i;5003:243:22:-;5084:4;5104:6;;;:16;;-1:-1:-1;5114:6:22;;5104:16;5100:55;;;-1:-1:-1;5143:1:22;5136:8;;5100:55;5173:5;;;5177:1;5173;:5;:1;5196:5;;;;;:10;5208:12;5188:33;;;;;-1:-1:-1;;;5188:33:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;187:1063:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;187:1063:5;;;-1:-1:-1;187:1063:5;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;187:1063:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;187:1063:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;187:1063:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;187:1063:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;187:1063:5;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;"},"methodIdentifiers":{"_becomeImplementation(bytes)":"56e67728","_delegateCompLikeTo(address)":"7f1e06be","_prepare()":"1db78944","_reduceReserves(uint256)":"601a0bf1","_setAdminFee(uint256)":"91dd36c6","_setImplementationSafe(address,bool,bytes)":"50d85b73","_setInterestRateModel(address)":"f2b3abbd","_setNameAndSymbol(string,string)":"34154d4c","_setReserveFactor(uint256)":"fca7820b","_withdrawAdminFees(uint256)":"a7b820df","_withdrawFuseFees(uint256)":"a03dce8d","accrualBlockNumber()":"6c540baf","accrueInterest()":"a6afed95","adminFeeMantissa()":"8d02d9a1","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","balanceOfUnderlying(address)":"3af9e669","borrow(uint256)":"c5ebeaec","borrowBalanceCurrent(address)":"17bfdfbc","borrowBalanceStored(address)":"95dd9193","borrowIndex()":"aa5af0fd","borrowRatePerBlock()":"f8f9da28","comptroller()":"5fe3b567","decimals()":"313ce567","exchangeRateCurrent()":"bd6d894d","exchangeRateStored()":"182df0f5","fuseFeeMantissa()":"dbfe7c19","getAccountSnapshot(address)":"c37f68e2","getCash()":"3b1d21a2","implementation()":"5c60da1b","initialize(address,address,address,string,string,uint256,uint256)":"a0b0d289","initialize(address,address,uint256,string,string,uint8,uint256,uint256)":"0f8855e8","interestRateModel()":"f3fdb15a","isCEther()":"ac784ddc","isCToken()":"fe9c44ae","liquidateBorrow(address,uint256,address)":"f5e3c462","mint(uint256)":"a0712d68","name()":"06fdde03","protocolSeizeShareMantissa()":"6752e702","redeem(uint256)":"db006a75","redeemUnderlying(uint256)":"852a12e3","repayBorrow(uint256)":"0e752702","repayBorrowBehalf(address,uint256)":"2608f818","reserveFactorMantissa()":"173b9904","seize(address,address,uint256)":"b2a02ff1","supplyRatePerBlock()":"ae9d70b0","symbol()":"95d89b41","totalAdminFees()":"61feacff","totalBorrows()":"47bd3718","totalBorrowsCurrent()":"73acee98","totalFuseFees()":"dc028ab1","totalReserves()":"8f840ddd","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","underlying()":"6f307dc3"}},"metadata":"{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"cashPrior\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"interestAccumulated\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"borrowIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalBorrows\",\"type\":\"uint256\"}],\"name\":\"AccrueInterest\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"borrowAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"accountBorrows\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalBorrows\",\"type\":\"uint256\"}],\"name\":\"Borrow\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"error\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"info\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"detail\",\"type\":\"uint256\"}],\"name\":\"Failure\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"liquidator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"repayAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"cTokenCollateral\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"seizeTokens\",\"type\":\"uint256\"}],\"name\":\"LiquidateBorrow\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"mintAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"mintTokens\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldAdminFeeMantissa\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newAdminFeeMantissa\",\"type\":\"uint256\"}],\"name\":\"NewAdminFee\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract ComptrollerInterface\",\"name\":\"oldComptroller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract ComptrollerInterface\",\"name\":\"newComptroller\",\"type\":\"address\"}],\"name\":\"NewComptroller\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldFuseFeeMantissa\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newFuseFeeMantissa\",\"type\":\"uint256\"}],\"name\":\"NewFuseFee\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldImplementation\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"NewImplementation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract InterestRateModel\",\"name\":\"oldInterestRateModel\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract InterestRateModel\",\"name\":\"newInterestRateModel\",\"type\":\"address\"}],\"name\":\"NewMarketInterestRateModel\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldReserveFactorMantissa\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newReserveFactorMantissa\",\"type\":\"uint256\"}],\"name\":\"NewReserveFactor\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"redeemer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"redeemAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"redeemTokens\",\"type\":\"uint256\"}],\"name\":\"Redeem\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"repayAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"accountBorrows\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalBorrows\",\"type\":\"uint256\"}],\"name\":\"RepayBorrow\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"benefactor\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"addAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newTotalReserves\",\"type\":\"uint256\"}],\"name\":\"ReservesAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reduceAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newTotalReserves\",\"type\":\"uint256\"}],\"name\":\"ReservesReduced\",\"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\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"_becomeImplementation\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"compLikeDelegatee\",\"type\":\"address\"}],\"name\":\"_delegateCompLikeTo\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"_prepare\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"reduceAmount\",\"type\":\"uint256\"}],\"name\":\"_reduceReserves\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newAdminFeeMantissa\",\"type\":\"uint256\"}],\"name\":\"_setAdminFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation_\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"allowResign\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"becomeImplementationData\",\"type\":\"bytes\"}],\"name\":\"_setImplementationSafe\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contract InterestRateModel\",\"name\":\"newInterestRateModel\",\"type\":\"address\"}],\"name\":\"_setInterestRateModel\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"}],\"name\":\"_setNameAndSymbol\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newReserveFactorMantissa\",\"type\":\"uint256\"}],\"name\":\"_setReserveFactor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"withdrawAmount\",\"type\":\"uint256\"}],\"name\":\"_withdrawAdminFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"withdrawAmount\",\"type\":\"uint256\"}],\"name\":\"_withdrawFuseFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"accrualBlockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"accrueInterest\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"adminFeeMantissa\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOfUnderlying\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"borrowAmount\",\"type\":\"uint256\"}],\"name\":\"borrow\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"borrowBalanceCurrent\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"borrowBalanceStored\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"borrowIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"borrowRatePerBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"comptroller\",\"outputs\":[{\"internalType\":\"contract ComptrollerInterface\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"exchangeRateCurrent\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"exchangeRateStored\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"fuseFeeMantissa\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getAccountSnapshot\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getCash\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contract ComptrollerInterface\",\"name\":\"comptroller_\",\"type\":\"address\"},{\"internalType\":\"contract InterestRateModel\",\"name\":\"interestRateModel_\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"initialExchangeRateMantissa_\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"decimals_\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"reserveFactorMantissa_\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"adminFeeMantissa_\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"underlying_\",\"type\":\"address\"},{\"internalType\":\"contract ComptrollerInterface\",\"name\":\"comptroller_\",\"type\":\"address\"},{\"internalType\":\"contract InterestRateModel\",\"name\":\"interestRateModel_\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"reserveFactorMantissa_\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"adminFeeMantissa_\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"interestRateModel\",\"outputs\":[{\"internalType\":\"contract InterestRateModel\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isCEther\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isCToken\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"repayAmount\",\"type\":\"uint256\"},{\"internalType\":\"contract CTokenInterface\",\"name\":\"cTokenCollateral\",\"type\":\"address\"}],\"name\":\"liquidateBorrow\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"mintAmount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"protocolSeizeShareMantissa\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"redeemTokens\",\"type\":\"uint256\"}],\"name\":\"redeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"redeemAmount\",\"type\":\"uint256\"}],\"name\":\"redeemUnderlying\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"repayAmount\",\"type\":\"uint256\"}],\"name\":\"repayBorrow\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"repayAmount\",\"type\":\"uint256\"}],\"name\":\"repayBorrowBehalf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"reserveFactorMantissa\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"liquidator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"seizeTokens\",\"type\":\"uint256\"}],\"name\":\"seize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"supplyRatePerBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalAdminFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalBorrows\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"totalBorrowsCurrent\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalFuseFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalReserves\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"underlying\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Compound\",\"methods\":{\"_becomeImplementation(bytes)\":{\"params\":{\"data\":\"The encoded bytes data for any initialization\"}},\"_delegateCompLikeTo(address)\":{\"details\":\"CTokens whose underlying are not CompLike should revert here\",\"params\":{\"compLikeDelegatee\":\"The address to delegate votes to\"}},\"_reduceReserves(uint256)\":{\"params\":{\"reduceAmount\":\"Amount of reduction to reserves\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"_setAdminFee(uint256)\":{\"details\":\"Admin function to accrue interest and set a new admin fee\",\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"_setImplementationSafe(address,bool,bytes)\":{\"params\":{\"allowResign\":\"Flag to indicate whether to call _resignImplementation on the old implementation\",\"becomeImplementationData\":\"The encoded bytes data to be passed to _becomeImplementation\",\"implementation_\":\"The address of the new implementation for delegation\"}},\"_setInterestRateModel(address)\":{\"details\":\"Admin function to accrue interest and update the interest rate model\",\"params\":{\"newInterestRateModel\":\"the new interest rate model to use\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"_setNameAndSymbol(string,string)\":{\"details\":\"Admin function to update the cToken ERC20 name and symbol\",\"params\":{\"_name\":\"the new ERC20 token name to use\",\"_symbol\":\"the new ERC20 token symbol to use\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"_setReserveFactor(uint256)\":{\"details\":\"Admin function to accrue interest and set a new reserve factor\",\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"_withdrawAdminFees(uint256)\":{\"params\":{\"withdrawAmount\":\"Amount of fees to withdraw\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"_withdrawFuseFees(uint256)\":{\"params\":{\"withdrawAmount\":\"Amount of fees to withdraw\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"accrueInterest()\":{\"details\":\"This calculates interest accrued from the last checkpointed block up to the current block and writes new checkpoint to storage.\"},\"allowance(address,address)\":{\"params\":{\"owner\":\"The address of the account which owns the tokens to be spent\",\"spender\":\"The address of the account which may transfer tokens\"},\"return\":\"The number of tokens allowed to be spent (-1 means infinite)\"},\"approve(address,uint256)\":{\"details\":\"This will overwrite the approval amount for `spender` and is subject to issues noted [here](https://eips.ethereum.org/EIPS/eip-20#approve)\",\"params\":{\"amount\":\"The number of tokens that are approved (-1 means infinite)\",\"spender\":\"The address of the account which may transfer tokens\"},\"return\":\"Whether or not the approval succeeded\"},\"balanceOf(address)\":{\"params\":{\"owner\":\"The address of the account to query\"},\"return\":\"The number of tokens owned by `owner`\"},\"balanceOfUnderlying(address)\":{\"details\":\"This also accrues interest in a transaction\",\"params\":{\"owner\":\"The address of the account to query\"},\"return\":\"The amount of underlying owned by `owner`\"},\"borrow(uint256)\":{\"params\":{\"borrowAmount\":\"The amount of the underlying asset to borrow\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"borrowBalanceCurrent(address)\":{\"params\":{\"account\":\"The address whose balance should be calculated after updating borrowIndex\"},\"return\":\"The calculated balance\"},\"borrowBalanceStored(address)\":{\"params\":{\"account\":\"The address whose balance should be calculated\"},\"return\":\"The calculated balance\"},\"borrowRatePerBlock()\":{\"return\":\"The borrow interest rate per block, scaled by 1e18\"},\"exchangeRateCurrent()\":{\"return\":\"Calculated exchange rate scaled by 1e18\"},\"exchangeRateStored()\":{\"details\":\"This function does not accrue interest before calculating the exchange rate\",\"return\":\"Calculated exchange rate scaled by 1e18\"},\"getAccountSnapshot(address)\":{\"details\":\"This is used by comptroller to more efficiently perform liquidity checks.\",\"params\":{\"account\":\"Address of the account to snapshot\"},\"return\":\"(possible error, token balance, borrow balance, exchange rate mantissa)\"},\"getCash()\":{\"return\":\"The quantity of underlying asset owned by this contract\"},\"initialize(address,address,address,string,string,uint256,uint256)\":{\"params\":{\"comptroller_\":\"The address of the Comptroller\",\"interestRateModel_\":\"The address of the interest rate model\",\"name_\":\"ERC-20 name of this token\",\"symbol_\":\"ERC-20 symbol of this token\",\"underlying_\":\"The address of the underlying asset\"}},\"initialize(address,address,uint256,string,string,uint8,uint256,uint256)\":{\"params\":{\"comptroller_\":\"The address of the Comptroller\",\"decimals_\":\"EIP-20 decimal precision of this token\",\"initialExchangeRateMantissa_\":\"The initial exchange rate, scaled by 1e18\",\"interestRateModel_\":\"The address of the interest rate model\",\"name_\":\"EIP-20 name of this token\",\"symbol_\":\"EIP-20 symbol of this token\"}},\"liquidateBorrow(address,uint256,address)\":{\"params\":{\"borrower\":\"The borrower of this cToken to be liquidated\",\"cTokenCollateral\":\"The market in which to seize collateral from the borrower\",\"repayAmount\":\"The amount of the underlying borrowed asset to repay\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"mint(uint256)\":{\"details\":\"Accrues interest whether or not the operation succeeds, unless reverted\",\"params\":{\"mintAmount\":\"The amount of the underlying asset to supply\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"redeem(uint256)\":{\"details\":\"Accrues interest whether or not the operation succeeds, unless reverted\",\"params\":{\"redeemTokens\":\"The number of cTokens to redeem into underlying\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"redeemUnderlying(uint256)\":{\"details\":\"Accrues interest whether or not the operation succeeds, unless reverted\",\"params\":{\"redeemAmount\":\"The amount of underlying to redeem\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"repayBorrow(uint256)\":{\"params\":{\"repayAmount\":\"The amount to repay\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"repayBorrowBehalf(address,uint256)\":{\"params\":{\"borrower\":\"the account with the debt being payed off\",\"repayAmount\":\"The amount to repay\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"seize(address,address,uint256)\":{\"details\":\"Will fail unless called by another cToken during the process of liquidation. Its absolutely critical to use msg.sender as the borrowed cToken and not a parameter.\",\"params\":{\"borrower\":\"The account having collateral seized\",\"liquidator\":\"The account receiving seized collateral\",\"seizeTokens\":\"The number of cTokens to seize\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"supplyRatePerBlock()\":{\"return\":\"The supply interest rate per block, scaled by 1e18\"},\"totalBorrowsCurrent()\":{\"return\":\"The total borrows with interest\"},\"transfer(address,uint256)\":{\"params\":{\"amount\":\"The number of tokens to transfer\",\"dst\":\"The address of the destination account\"},\"return\":\"Whether or not the transfer succeeded\"},\"transferFrom(address,address,uint256)\":{\"params\":{\"amount\":\"The number of tokens to transfer\",\"dst\":\"The address of the destination account\",\"src\":\"The address of the source account\"},\"return\":\"Whether or not the transfer succeeded\"}},\"title\":\"Compound's CErc20Delegate Contract\"},\"userdoc\":{\"methods\":{\"_becomeImplementation(bytes)\":{\"notice\":\"Called by the delegator on a delegate to initialize it for duty\"},\"_delegateCompLikeTo(address)\":{\"notice\":\"Admin call to delegate the votes of the COMP-like underlying\"},\"_prepare()\":{\"notice\":\"Function called before all delegator functions\"},\"_reduceReserves(uint256)\":{\"notice\":\"Accrues interest and reduces reserves by transferring to admin\"},\"_setAdminFee(uint256)\":{\"notice\":\"accrues interest and sets a new admin fee for the protocol using _setAdminFeeFresh\"},\"_setImplementationSafe(address,bool,bytes)\":{\"notice\":\"Called by the admin to update the implementation of the delegator\"},\"_setInterestRateModel(address)\":{\"notice\":\"accrues interest and updates the interest rate model using _setInterestRateModelFresh\"},\"_setNameAndSymbol(string,string)\":{\"notice\":\"updates the cToken ERC20 name and symbol\"},\"_setReserveFactor(uint256)\":{\"notice\":\"accrues interest and sets a new reserve factor for the protocol using _setReserveFactorFresh\"},\"_withdrawAdminFees(uint256)\":{\"notice\":\"Accrues interest and reduces admin fees by transferring to admin\"},\"_withdrawFuseFees(uint256)\":{\"notice\":\"Accrues interest and reduces Fuse fees by transferring to Fuse\"},\"accrueInterest()\":{\"notice\":\"Applies accrued interest to total borrows and reserves\"},\"allowance(address,address)\":{\"notice\":\"Get the current allowance from `owner` for `spender`\"},\"approve(address,uint256)\":{\"notice\":\"Approve `spender` to transfer up to `amount` from `src`\"},\"balanceOf(address)\":{\"notice\":\"Get the token balance of the `owner`\"},\"balanceOfUnderlying(address)\":{\"notice\":\"Get the underlying balance of the `owner`\"},\"borrow(uint256)\":{\"notice\":\"Sender borrows assets from the protocol to their own address\"},\"borrowBalanceCurrent(address)\":{\"notice\":\"Accrue interest to updated borrowIndex and then calculate account's borrow balance using the updated borrowIndex\"},\"borrowBalanceStored(address)\":{\"notice\":\"Return the borrow balance of account based on stored data\"},\"borrowRatePerBlock()\":{\"notice\":\"Returns the current per-block borrow interest rate for this cToken\"},\"exchangeRateCurrent()\":{\"notice\":\"Accrue interest then return the up-to-date exchange rate\"},\"exchangeRateStored()\":{\"notice\":\"Calculates the exchange rate from the underlying to the CToken\"},\"getAccountSnapshot(address)\":{\"notice\":\"Get a snapshot of the account's balances, and the cached exchange rate\"},\"getCash()\":{\"notice\":\"Get cash balance of this cToken in the underlying asset\"},\"initialize(address,address,address,string,string,uint256,uint256)\":{\"notice\":\"Initialize the new money market\"},\"initialize(address,address,uint256,string,string,uint8,uint256,uint256)\":{\"notice\":\"Initialize the money market\"},\"liquidateBorrow(address,uint256,address)\":{\"notice\":\"The sender liquidates the borrowers collateral. The collateral seized is transferred to the liquidator.\"},\"mint(uint256)\":{\"notice\":\"Sender supplies assets into the market and receives cTokens in exchange\"},\"redeem(uint256)\":{\"notice\":\"Sender redeems cTokens in exchange for the underlying asset\"},\"redeemUnderlying(uint256)\":{\"notice\":\"Sender redeems cTokens in exchange for a specified amount of underlying asset\"},\"repayBorrow(uint256)\":{\"notice\":\"Sender repays their own borrow\"},\"repayBorrowBehalf(address,uint256)\":{\"notice\":\"Sender repays a borrow belonging to borrower\"},\"seize(address,address,uint256)\":{\"notice\":\"Transfers collateral tokens (this market) to the liquidator.\"},\"supplyRatePerBlock()\":{\"notice\":\"Returns the current per-block supply interest rate for this cToken\"},\"totalBorrowsCurrent()\":{\"notice\":\"Returns the current total borrows plus accrued interest\"},\"transfer(address,uint256)\":{\"notice\":\"Transfer `amount` tokens from `msg.sender` to `dst`\"},\"transferFrom(address,address,uint256)\":{\"notice\":\"Transfer `amount` tokens from `src` to `dst`\"}},\"notice\":\"CTokens which wrap Ether and are delegated to\"}},\"settings\":{\"compilationTarget\":{\"contracts/CErc20DelegateUSDCAggregatorFix.sol\":\"CErc20DelegateUSDCAggregatorFix\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/CErc20.sol\":{\"keccak256\":\"0x37e284e3ca9a2821c3ad1001d110ca529820646f65dd441f5907070408b20bc2\",\"urls\":[\"bzz-raw://cb025aa0f581e05f023e5aef44cfcd47cdece7ec4cf53973d89834f5037666d2\",\"dweb:/ipfs/QmaY78mEyhUCuvbMVdGzpKmkw9yKoHz5noSg5REZgipupY\"]},\"contracts/CErc20Delegate.sol\":{\"keccak256\":\"0xc50f6bf192d43be4958d56a210e1b3e978a86be8f2da7463aa63dcf5a21754ad\",\"urls\":[\"bzz-raw://9258ab0d8a3c994e99a5cab314f10a84da47d32a59d1d8cd4ad772e1195dc8cd\",\"dweb:/ipfs/QmWYYn1BFVjELtm8zoxHvqWWDojXma7NpCAMk7VMruSkjJ\"]},\"contracts/CErc20DelegateUSDCAggregatorFix.sol\":{\"keccak256\":\"0x9a6b006b40e3a23df7b1ba5fb04e1151ba81ed29dd14acfe2f11d5951ca2e5e8\",\"urls\":[\"bzz-raw://db078e1e515bdd9c16e761975fd951388c533316ea517d769510b3733e030752\",\"dweb:/ipfs/QmVo86VFPMnsENY3qtHd4NrT9KNpQ4p3bem4YWyCzhPLoF\"]},\"contracts/CToken.sol\":{\"keccak256\":\"0xc3a5a827241528049e20a24cc446558c8a9272909f75ce5d1cf14ae3ab5feba3\",\"urls\":[\"bzz-raw://a403db2bf1a8e5e9384df19600bd18d4251056818b094afcdab418e683bb5cb8\",\"dweb:/ipfs/QmdkRbFGtKP67tNNqyH7BraDRGerwRNA7ktscbFV9LioM2\"]},\"contracts/CTokenInterfaces.sol\":{\"keccak256\":\"0xc8a056c724ef4f0215ece6011e7ac1007c9dc7611ce5160d470ec858bbb06bd3\",\"urls\":[\"bzz-raw://58951693d1b53d2722e55b068bab2b570f4b044d89c28ed6b53bac6e95aeb662\",\"dweb:/ipfs/QmQiNTw5jZR74WjKfX2bPiuTT4tuFuq8rx7QxEVyVvdGLn\"]},\"contracts/CarefulMath.sol\":{\"keccak256\":\"0x1487237dbbbb73ad43c8eff16e78311753719a94a5065f574de5c91b672c56f8\",\"urls\":[\"bzz-raw://349966a236f313b2cb42e1942832e6bd7e134f65f6654e6c4d46788e65cc4a9b\",\"dweb:/ipfs/Qmebpv8i5jLR4fLgpZHQZRLu6aefVAbLC2yUk9ABEekquz\"]},\"contracts/ComptrollerInterface.sol\":{\"keccak256\":\"0xecfb84fabc9792d0b1c912886249c67bc42c39eb065d962d0b9a5f3736af5892\",\"urls\":[\"bzz-raw://711547ebc1a7f18b271118dd98276771953a9d7b3674716f67d247be9b907372\",\"dweb:/ipfs/QmbVZNvkBp8miByATrL6y5j8MePdcQ8uTAUZMpKrhpLgoa\"]},\"contracts/ComptrollerStorage.sol\":{\"keccak256\":\"0x83961d3c12984fe4afc72717fc44b2d868563d053a0eceda0cbf17ec6b255913\",\"urls\":[\"bzz-raw://ea667c2de43881f9be19f4f75dec348632273178965fc9b3655705d853b032bb\",\"dweb:/ipfs/QmZP6sbNFSgFZrAEvfRjhp1NtGj6U6Sea3JGiKG96AHyeP\"]},\"contracts/EIP20Interface.sol\":{\"keccak256\":\"0xee33b8b333743308a9153a59f22da2cadb22cedef4403fe039bf9e057c9c729a\",\"urls\":[\"bzz-raw://5427fdb941300d36a424da0a0a5800e3b2ca51c9c922831dbfce2f6637402b43\",\"dweb:/ipfs/QmTrvmLynqSUPjsGW2dpiQ91dSmn4xzccQiwr8qaBtyvjH\"]},\"contracts/EIP20NonStandardInterface.sol\":{\"keccak256\":\"0x469899442dd9640bfc2c670d404ad3027e48df5df8e5aeab0e25cc6b6aae05f5\",\"urls\":[\"bzz-raw://d8c4498abaf539eb413a2f1a916d75945adc8bd4ef437f8450cb67e07be3f38d\",\"dweb:/ipfs/QmaFpWfnhAMYW21rbT5PEszn4TGHdGU58Eq5AfZsCuapZ3\"]},\"contracts/ErrorReporter.sol\":{\"keccak256\":\"0xe9587478bc9efad203cab02b8aecae32828cfc9a271b13ae3c018e38e44aab32\",\"urls\":[\"bzz-raw://2eb34bdbbbc410fb401d50ddca44a7421a1d8191711c569ed5bcec1c1b07a05c\",\"dweb:/ipfs/QmYKNCYppyx3NGiwtjdLEmxUMgfnFBqT4pnvnhnBrPgrxS\"]},\"contracts/Exponential.sol\":{\"keccak256\":\"0xfda0e2b610541cf1cf316a0000c89a1069ccc21f1566affc0a058810e2b835d3\",\"urls\":[\"bzz-raw://fe319f184f1b5f27019d3d890124cd24e466d27153ac38eb9ff6b16efbad48b9\",\"dweb:/ipfs/Qmcev6jCmtdCviJxUQvUCmesPDShRDSvdfUEfvsqd4GEJA\"]},\"contracts/ExponentialNoError.sol\":{\"keccak256\":\"0x713a089f4bbcaec1d3924fc7d9a2154904a39f46cb6f25b713167dbe5f21623e\",\"urls\":[\"bzz-raw://d7108d68af7c5effd4272615ceba54e79e585f6b8be5aabc7602245c84c7b9e0\",\"dweb:/ipfs/QmQZo2XpxW7w5viVEg71mi9eKaAYD7HUqfCMB5yCCPVnc5\"]},\"contracts/IFuseFeeDistributor.sol\":{\"keccak256\":\"0xb5d287b8e05574d38bd5d0b413f44b4c5d312f28188573ac60abe78123fbd92c\",\"urls\":[\"bzz-raw://84c2bbf746a82aaa100bee90c7dd40411c723bded124bb1775bf72bf7fda8a2c\",\"dweb:/ipfs/QmToQzDtz9BV2tvU71YsfWjdaZu5qpP1xKFZ1TkQgubhDb\"]},\"contracts/InterestRateModel.sol\":{\"keccak256\":\"0x0cc0dbd1991e5dcdcff58b0c82a9471a0fb9df26763e5e7415e1d081b7332409\",\"urls\":[\"bzz-raw://f4d7936aefc43ea2724f0e472b8f1517f1ca40170258ab9d5bbd0862dd0c4f13\",\"dweb:/ipfs/QmfYjG1Sm3kNwbhomHCWhMqw9LvaJVWVzBe4Te5BHRbTQS\"]},\"contracts/PriceOracle.sol\":{\"keccak256\":\"0x62ba3a5ec8f06d456ab089d6ca7f9d14d3a6ce6814923271ca60a6990918fb41\",\"urls\":[\"bzz-raw://aa6d2f20efdd5389161eb15bdab98b5628dc8cd5354394bbed35bb14d3612506\",\"dweb:/ipfs/QmVfo4eCDuk8LMSywpBjZBxCv7zLCNsG6u3nyD1d4CYwsD\"]}},\"version\":1}"}},"contracts/CErc20Delegator.sol":{"CErc20Delegator":{"abi":[{"inputs":[{"internalType":"address","name":"underlying_","type":"address"},{"internalType":"contract ComptrollerInterface","name":"comptroller_","type":"address"},{"internalType":"contract InterestRateModel","name":"interestRateModel_","type":"address"},{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"address","name":"implementation_","type":"address"},{"internalType":"bytes","name":"becomeImplementationData","type":"bytes"},{"internalType":"uint256","name":"reserveFactorMantissa_","type":"uint256"},{"internalType":"uint256","name":"adminFeeMantissa_","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":true,"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b506040516107f53803806107f5833981810160405261012081101561003457600080fd5b81516020830151604080850151606086018051925194969395919493918201928464010000000082111561006757600080fd5b90830190602082018581111561007c57600080fd5b825164010000000081118282018810171561009657600080fd5b82525081516020918201929091019080838360005b838110156100c35781810151838201526020016100ab565b50505050905090810190601f1680156100f05780820380516001836020036101000a031916815260200191505b506040526020018051604051939291908464010000000082111561011357600080fd5b90830190602082018581111561012857600080fd5b825164010000000081118282018810171561014257600080fd5b82525081516020918201929091019080838360005b8381101561016f578181015183820152602001610157565b50505050905090810190601f16801561019c5780820380516001836020036101000a031916815260200191505b506040818152602083015192018051929491939192846401000000008211156101c457600080fd5b9083019060208201858111156101d957600080fd5b82516401000000008111828201881017156101f357600080fd5b82525081516020918201929091019080838360005b83811015610220578181015183820152602001610208565b50505050905090810190601f16801561024d5780820380516001836020036101000a031916815260200191505b50604081815260208381015193909101516001600160a01b03808e1660248501908152818e166044860152908c16606485015260c4840185905260e4840182905260e0608485019081528b516101048601528b519597509195506103b59489948f948f948f948f948f948d948d949260a4830192610124019189019080838360005b838110156102e75781810151838201526020016102cf565b50505050905090810190601f1680156103145780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b8381101561034757818101518382015260200161032f565b50505050905090810190601f1680156103745780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529190526020810180516001600160e01b0390811663a0b0d28960e01b17909152909a506104981698505050505050505050565b50610489848560008660405160240180846001600160a01b03166001600160a01b031681526020018315151515815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610420578181015183820152602001610408565b50505050905090810190601f16801561044d5780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529190526020810180516001600160e01b039081166350d85b7360e01b17909152909550610498169350505050565b5050505050505050505061055a565b606060006060846001600160a01b0316846040518082805190602001908083835b602083106104d85780518252601f1990920191602091820191016104b9565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114610538576040519150601f19603f3d011682016040523d82523d6000602084013e61053d565b606091505b50915091506000821415610552573d60208201fd5b949350505050565b61028c806105696000396000f3fe60806040526004361061001e5760003560e01c80635c60da1b1461011e575b341561005b5760405162461bcd60e51b81526004018080602001828103825260378152602001806102216037913960400191505060405180910390fd5b6000546040805160048152602481019091526020810180516001600160e01b031663076de25160e21b17905261009a916001600160a01b03169061014f565b50600080546040516001600160a01b0390911690829036908083838082843760405192019450600093509091505080830381855af49150503d80600081146100fe576040519150601f19603f3d011682016040523d82523d6000602084013e610103565b606091505b505090506040513d6000823e81801561011a573d82f35b3d82fd5b34801561012a57600080fd5b50610133610211565b604080516001600160a01b039092168252519081900360200190f35b606060006060846001600160a01b0316846040518082805190602001908083835b6020831061018f5780518252601f199092019160209182019101610170565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146101ef576040519150601f19603f3d011682016040523d82523d6000602084013e6101f4565b606091505b50915091506000821415610209573d60208201fd5b949350505050565b6000546001600160a01b03168156fe43457263323044656c656761746f723a66616c6c6261636b3a2063616e6e6f742073656e642076616c756520746f2066616c6c6261636ba265627a7a72315820678cbb5900e1646928f896e42bdb29dab3ddbc3c1ce2d33a60949f2a86f162da64736f6c63430005110032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x7F5 CODESIZE SUB DUP1 PUSH2 0x7F5 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH2 0x120 DUP2 LT ISZERO PUSH2 0x34 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP1 DUP6 ADD MLOAD PUSH1 0x60 DUP7 ADD DUP1 MLOAD SWAP3 MLOAD SWAP5 SWAP7 SWAP4 SWAP6 SWAP2 SWAP5 SWAP4 SWAP2 DUP3 ADD SWAP3 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0x67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x7C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH2 0x96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xC3 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAB JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xF0 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE PUSH1 0x20 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0x113 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x128 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH2 0x142 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x16F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x157 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x19C JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 DUP2 DUP2 MSTORE PUSH1 0x20 DUP4 ADD MLOAD SWAP3 ADD DUP1 MLOAD SWAP3 SWAP5 SWAP2 SWAP4 SWAP2 SWAP3 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0x1C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x1D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH2 0x1F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x220 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x208 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x24D JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 DUP2 DUP2 MSTORE PUSH1 0x20 DUP4 DUP2 ADD MLOAD SWAP4 SWAP1 SWAP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP15 AND PUSH1 0x24 DUP6 ADD SWAP1 DUP2 MSTORE DUP2 DUP15 AND PUSH1 0x44 DUP7 ADD MSTORE SWAP1 DUP13 AND PUSH1 0x64 DUP6 ADD MSTORE PUSH1 0xC4 DUP5 ADD DUP6 SWAP1 MSTORE PUSH1 0xE4 DUP5 ADD DUP3 SWAP1 MSTORE PUSH1 0xE0 PUSH1 0x84 DUP6 ADD SWAP1 DUP2 MSTORE DUP12 MLOAD PUSH2 0x104 DUP7 ADD MSTORE DUP12 MLOAD SWAP6 SWAP8 POP SWAP2 SWAP6 POP PUSH2 0x3B5 SWAP5 DUP10 SWAP5 DUP16 SWAP5 DUP16 SWAP5 DUP16 SWAP5 DUP16 SWAP5 DUP16 SWAP5 DUP14 SWAP5 DUP14 SWAP5 SWAP3 PUSH1 0xA4 DUP4 ADD SWAP3 PUSH2 0x124 ADD SWAP2 DUP10 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2E7 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2CF JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x314 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP7 MLOAD DUP2 MSTORE DUP7 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP9 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x347 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x32F JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x374 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB SWAP1 DUP2 AND PUSH4 0xA0B0D289 PUSH1 0xE0 SHL OR SWAP1 SWAP2 MSTORE SWAP1 SWAP11 POP PUSH2 0x498 AND SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST POP PUSH2 0x489 DUP5 DUP6 PUSH1 0x0 DUP7 PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x420 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x408 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x44D JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB SWAP1 DUP2 AND PUSH4 0x50D85B73 PUSH1 0xE0 SHL OR SWAP1 SWAP2 MSTORE SWAP1 SWAP6 POP PUSH2 0x498 AND SWAP4 POP POP POP POP JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP PUSH2 0x55A JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x60 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x4D8 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x4B9 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x538 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 0x53D JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x552 JUMPI RETURNDATASIZE PUSH1 0x20 DUP3 ADD REVERT JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x28C DUP1 PUSH2 0x569 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1E JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x11E JUMPI JUMPDEST CALLVALUE ISZERO PUSH2 0x5B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x37 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x221 PUSH1 0x37 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x76DE251 PUSH1 0xE2 SHL OR SWAP1 MSTORE PUSH2 0x9A SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0x14F JUMP JUMPDEST POP PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 DUP3 SWAP1 CALLDATASIZE SWAP1 DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x40 MLOAD SWAP3 ADD SWAP5 POP PUSH1 0x0 SWAP4 POP SWAP1 SWAP2 POP POP DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xFE 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 0x103 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY DUP2 DUP1 ISZERO PUSH2 0x11A JUMPI RETURNDATASIZE DUP3 RETURN JUMPDEST RETURNDATASIZE DUP3 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x12A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x133 PUSH2 0x211 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x60 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x18F JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x170 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1EF 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 0x1F4 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x209 JUMPI RETURNDATASIZE PUSH1 0x20 DUP3 ADD REVERT JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP INVALID NUMBER GASLIMIT PUSH19 0x63323044656C656761746F723A66616C6C6261 PUSH4 0x6B3A2063 PUSH2 0x6E6E PUSH16 0x742073656E642076616C756520746F20 PUSH7 0x616C6C6261636B LOG2 PUSH6 0x627A7A723158 KECCAK256 PUSH8 0x8CBB5900E1646928 0xF8 SWAP7 0xE4 0x2B 0xDB 0x29 0xDA 0xB3 0xDD 0xBC EXTCODECOPY SHR 0xE2 0xD3 GASPRICE PUSH1 0x94 SWAP16 0x2A DUP7 CALL PUSH3 0xDA6473 PUSH16 0x6C634300051100320000000000000000 ","sourceMap":"253:3556:6:-;;;825:1393;8:9:-1;5:2;;;30:1;27;20:12;5:2;825:1393:6;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;825:1393:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19:11:-1;11:20;;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;261:11;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;825:1393:6;;420:4:-1;411:14;;;;825:1393:6;;;;;411:14:-1;825:1393:6;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;825:1393:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;261:11;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;825:1393:6;;420:4:-1;411:14;;;;825:1393:6;;;;;411:14:-1;825:1393:6;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;825:1393:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;825:1393:6;;;;;;;;;;;;;;;;;;;19:11:-1;11:20;;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;261:11;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;825:1393:6;;420:4:-1;411:14;;;;825:1393:6;;;;;411:14:-1;825:1393:6;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;825:1393:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;825:1393:6;;;;;;;;;;;;;;-1:-1:-1;;;;;1354:618:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;825:1393;;-1:-1:-1;825:1393:6;;-1:-1:-1;1326:647:6;;1337:15;;1507:11;;1580:12;;1654:18;;1734:5;;1801:7;;825:1393;;;;1354:618;;;;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1354:618:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1354:618:6;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1354:618:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1354:618:6;;;-1:-1:-1;;26:21;;;22:32;6:49;;1354:618:6;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;;;-1:-1;;;179:29;160:49;;;1354:618:6;;-1:-1:-1;1326:10:6;:647;;-1:-1:-1;;;;;;;;;1326:647:6:i;:::-;;2063:148;2074:15;2161;2178:5;2185:24;2091:119;;;;;;-1:-1:-1;;;;;2091:119:6;-1:-1:-1;;;;;2091:119:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2091:119:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2091:119:6;;;-1:-1:-1;;26:21;;;22:32;6:49;;2091:119:6;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;;;-1:-1;;;179:29;160:49;;;2091:119:6;;-1:-1:-1;2063:10:6;:148;;-1:-1:-1;;;;2063:148:6:i;:::-;;825:1393;;;;;;;;;253:3556;;2569:335;2642:12;2667;2681:23;2708:6;-1:-1:-1;;;;;2708:19:6;2728:4;2708:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;2708:25:6;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;2666:67:6;;;;2781:1;2772:7;2769:14;2766:2;;;2832:14;2825:4;2813:10;2809:21;2802:45;2766:2;2887:10;2569:335;-1:-1:-1;;;;2569:335:6:o;253:3556::-;;;;;;;"},"deployedBytecode":{"linkReferences":{},"object":"60806040526004361061001e5760003560e01c80635c60da1b1461011e575b341561005b5760405162461bcd60e51b81526004018080602001828103825260378152602001806102216037913960400191505060405180910390fd5b6000546040805160048152602481019091526020810180516001600160e01b031663076de25160e21b17905261009a916001600160a01b03169061014f565b50600080546040516001600160a01b0390911690829036908083838082843760405192019450600093509091505080830381855af49150503d80600081146100fe576040519150601f19603f3d011682016040523d82523d6000602084013e610103565b606091505b505090506040513d6000823e81801561011a573d82f35b3d82fd5b34801561012a57600080fd5b50610133610211565b604080516001600160a01b039092168252519081900360200190f35b606060006060846001600160a01b0316846040518082805190602001908083835b6020831061018f5780518252601f199092019160209182019101610170565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146101ef576040519150601f19603f3d011682016040523d82523d6000602084013e6101f4565b606091505b50915091506000821415610209573d60208201fd5b949350505050565b6000546001600160a01b03168156fe43457263323044656c656761746f723a66616c6c6261636b3a2063616e6e6f742073656e642076616c756520746f2066616c6c6261636ba265627a7a72315820678cbb5900e1646928f896e42bdb29dab3ddbc3c1ce2d33a60949f2a86f162da64736f6c63430005110032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1E JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x11E JUMPI JUMPDEST CALLVALUE ISZERO PUSH2 0x5B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x37 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x221 PUSH1 0x37 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x76DE251 PUSH1 0xE2 SHL OR SWAP1 MSTORE PUSH2 0x9A SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0x14F JUMP JUMPDEST POP PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 DUP3 SWAP1 CALLDATASIZE SWAP1 DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x40 MLOAD SWAP3 ADD SWAP5 POP PUSH1 0x0 SWAP4 POP SWAP1 SWAP2 POP POP DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xFE 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 0x103 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY DUP2 DUP1 ISZERO PUSH2 0x11A JUMPI RETURNDATASIZE DUP3 RETURN JUMPDEST RETURNDATASIZE DUP3 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x12A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x133 PUSH2 0x211 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x60 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x18F JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x170 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1EF 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 0x1F4 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x209 JUMPI RETURNDATASIZE PUSH1 0x20 DUP3 ADD REVERT JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP INVALID NUMBER GASLIMIT PUSH19 0x63323044656C656761746F723A66616C6C6261 PUSH4 0x6B3A2063 PUSH2 0x6E6E PUSH16 0x742073656E642076616C756520746F20 PUSH7 0x616C6C6261636B LOG2 PUSH6 0x627A7A723158 KECCAK256 PUSH8 0x8CBB5900E1646928 0xF8 SWAP7 0xE4 0x2B 0xDB 0x29 0xDA 0xB3 0xDD 0xBC EXTCODECOPY SHR 0xE2 0xD3 GASPRICE PUSH1 0x94 SWAP16 0x2A DUP7 CALL PUSH3 0xDA6473 PUSH16 0x6C634300051100320000000000000000 ","sourceMap":"253:3556:6:-;;;;;;;;;;;;;;;;;;3188:9;:14;3180:82;;;;-1:-1:-1;;;3180:82:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3330:14;;3346:37;;;22:32:-1;6:49;;3346:37:6;;;;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;3319:65:6;;-1:-1:-1;;;;;3330:14:6;;3319:10;:65::i;:::-;-1:-1:-1;3462:12:6;3480:14;;:37;;-1:-1:-1;;;;;3480:14:6;;;;3462:12;;3508:8;;3480:37;3462:12;3508:8;;3462:12;3480:37;1:33:-1;3480:37:6;;45:16:-1;;;-1:-1;3480:37:6;;-1:-1:-1;3480:37:6;;-1:-1:-1;;3480:37:6;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;3461:56:6;;;3577:4;3571:11;3627:14;3624:1;3610:12;3595:47;3663:7;3683:47;;;;3774:14;3760:12;3753:36;3683:47;3713:14;3699:12;3692:36;9773:29:11;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9773:29:11;;;:::i;:::-;;;;-1:-1:-1;;;;;9773:29:11;;;;;;;;;;;;;;2569:335:6;2642:12;2667;2681:23;2708:6;-1:-1:-1;;;;;2708:19:6;2728:4;2708:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;2708:25:6;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;2666:67:6;;;;2781:1;2772:7;2769:14;2766:2;;;2832:14;2825:4;2813:10;2809:21;2802:45;2766:2;2887:10;2569:335;-1:-1:-1;;;;2569:335:6:o;9773:29:11:-;;;-1:-1:-1;;;;;9773:29:11;;:::o"},"methodIdentifiers":{"implementation()":"5c60da1b"}},"metadata":"{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"underlying_\",\"type\":\"address\"},{\"internalType\":\"contract ComptrollerInterface\",\"name\":\"comptroller_\",\"type\":\"address\"},{\"internalType\":\"contract InterestRateModel\",\"name\":\"interestRateModel_\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"implementation_\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"becomeImplementationData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"reserveFactorMantissa_\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"adminFeeMantissa_\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"constant\":true,\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Compound\",\"methods\":{\"constructor\":{\"params\":{\"becomeImplementationData\":\"The encoded args for becomeImplementation\",\"comptroller_\":\"The address of the Comptroller\",\"implementation_\":\"The address of the implementation the contract delegates to\",\"interestRateModel_\":\"The address of the interest rate model\",\"name_\":\"ERC-20 name of this token\",\"symbol_\":\"ERC-20 symbol of this token\",\"underlying_\":\"The address of the underlying asset\"}}},\"title\":\"Compound's CErc20Delegator Contract\"},\"userdoc\":{\"methods\":{\"constructor\":\"Construct a new money market\"},\"notice\":\"CTokens which wrap an EIP-20 underlying and delegate to an implementation\"}},\"settings\":{\"compilationTarget\":{\"contracts/CErc20Delegator.sol\":\"CErc20Delegator\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/CErc20Delegator.sol\":{\"keccak256\":\"0xa4c181181b5b30c5d18db964963985e2e5648f215a42e2ad9a45ae79e173e102\",\"urls\":[\"bzz-raw://922fe2ace12719c7e2d6df5ed48acabb0c8cb1b67ea6941fbf81a0acc63645fd\",\"dweb:/ipfs/QmWp1vHQ5uZwLKgyxpEpUfuGx8kfmAhSZQ8JXMDknwv6qm\"]},\"contracts/CToken.sol\":{\"keccak256\":\"0xc3a5a827241528049e20a24cc446558c8a9272909f75ce5d1cf14ae3ab5feba3\",\"urls\":[\"bzz-raw://a403db2bf1a8e5e9384df19600bd18d4251056818b094afcdab418e683bb5cb8\",\"dweb:/ipfs/QmdkRbFGtKP67tNNqyH7BraDRGerwRNA7ktscbFV9LioM2\"]},\"contracts/CTokenInterfaces.sol\":{\"keccak256\":\"0xc8a056c724ef4f0215ece6011e7ac1007c9dc7611ce5160d470ec858bbb06bd3\",\"urls\":[\"bzz-raw://58951693d1b53d2722e55b068bab2b570f4b044d89c28ed6b53bac6e95aeb662\",\"dweb:/ipfs/QmQiNTw5jZR74WjKfX2bPiuTT4tuFuq8rx7QxEVyVvdGLn\"]},\"contracts/CarefulMath.sol\":{\"keccak256\":\"0x1487237dbbbb73ad43c8eff16e78311753719a94a5065f574de5c91b672c56f8\",\"urls\":[\"bzz-raw://349966a236f313b2cb42e1942832e6bd7e134f65f6654e6c4d46788e65cc4a9b\",\"dweb:/ipfs/Qmebpv8i5jLR4fLgpZHQZRLu6aefVAbLC2yUk9ABEekquz\"]},\"contracts/ComptrollerInterface.sol\":{\"keccak256\":\"0xecfb84fabc9792d0b1c912886249c67bc42c39eb065d962d0b9a5f3736af5892\",\"urls\":[\"bzz-raw://711547ebc1a7f18b271118dd98276771953a9d7b3674716f67d247be9b907372\",\"dweb:/ipfs/QmbVZNvkBp8miByATrL6y5j8MePdcQ8uTAUZMpKrhpLgoa\"]},\"contracts/ComptrollerStorage.sol\":{\"keccak256\":\"0x83961d3c12984fe4afc72717fc44b2d868563d053a0eceda0cbf17ec6b255913\",\"urls\":[\"bzz-raw://ea667c2de43881f9be19f4f75dec348632273178965fc9b3655705d853b032bb\",\"dweb:/ipfs/QmZP6sbNFSgFZrAEvfRjhp1NtGj6U6Sea3JGiKG96AHyeP\"]},\"contracts/EIP20Interface.sol\":{\"keccak256\":\"0xee33b8b333743308a9153a59f22da2cadb22cedef4403fe039bf9e057c9c729a\",\"urls\":[\"bzz-raw://5427fdb941300d36a424da0a0a5800e3b2ca51c9c922831dbfce2f6637402b43\",\"dweb:/ipfs/QmTrvmLynqSUPjsGW2dpiQ91dSmn4xzccQiwr8qaBtyvjH\"]},\"contracts/EIP20NonStandardInterface.sol\":{\"keccak256\":\"0x469899442dd9640bfc2c670d404ad3027e48df5df8e5aeab0e25cc6b6aae05f5\",\"urls\":[\"bzz-raw://d8c4498abaf539eb413a2f1a916d75945adc8bd4ef437f8450cb67e07be3f38d\",\"dweb:/ipfs/QmaFpWfnhAMYW21rbT5PEszn4TGHdGU58Eq5AfZsCuapZ3\"]},\"contracts/ErrorReporter.sol\":{\"keccak256\":\"0xe9587478bc9efad203cab02b8aecae32828cfc9a271b13ae3c018e38e44aab32\",\"urls\":[\"bzz-raw://2eb34bdbbbc410fb401d50ddca44a7421a1d8191711c569ed5bcec1c1b07a05c\",\"dweb:/ipfs/QmYKNCYppyx3NGiwtjdLEmxUMgfnFBqT4pnvnhnBrPgrxS\"]},\"contracts/Exponential.sol\":{\"keccak256\":\"0xfda0e2b610541cf1cf316a0000c89a1069ccc21f1566affc0a058810e2b835d3\",\"urls\":[\"bzz-raw://fe319f184f1b5f27019d3d890124cd24e466d27153ac38eb9ff6b16efbad48b9\",\"dweb:/ipfs/Qmcev6jCmtdCviJxUQvUCmesPDShRDSvdfUEfvsqd4GEJA\"]},\"contracts/ExponentialNoError.sol\":{\"keccak256\":\"0x713a089f4bbcaec1d3924fc7d9a2154904a39f46cb6f25b713167dbe5f21623e\",\"urls\":[\"bzz-raw://d7108d68af7c5effd4272615ceba54e79e585f6b8be5aabc7602245c84c7b9e0\",\"dweb:/ipfs/QmQZo2XpxW7w5viVEg71mi9eKaAYD7HUqfCMB5yCCPVnc5\"]},\"contracts/IFuseFeeDistributor.sol\":{\"keccak256\":\"0xb5d287b8e05574d38bd5d0b413f44b4c5d312f28188573ac60abe78123fbd92c\",\"urls\":[\"bzz-raw://84c2bbf746a82aaa100bee90c7dd40411c723bded124bb1775bf72bf7fda8a2c\",\"dweb:/ipfs/QmToQzDtz9BV2tvU71YsfWjdaZu5qpP1xKFZ1TkQgubhDb\"]},\"contracts/InterestRateModel.sol\":{\"keccak256\":\"0x0cc0dbd1991e5dcdcff58b0c82a9471a0fb9df26763e5e7415e1d081b7332409\",\"urls\":[\"bzz-raw://f4d7936aefc43ea2724f0e472b8f1517f1ca40170258ab9d5bbd0862dd0c4f13\",\"dweb:/ipfs/QmfYjG1Sm3kNwbhomHCWhMqw9LvaJVWVzBe4Te5BHRbTQS\"]},\"contracts/PriceOracle.sol\":{\"keccak256\":\"0x62ba3a5ec8f06d456ab089d6ca7f9d14d3a6ce6814923271ca60a6990918fb41\",\"urls\":[\"bzz-raw://aa6d2f20efdd5389161eb15bdab98b5628dc8cd5354394bbed35bb14d3612506\",\"dweb:/ipfs/QmVfo4eCDuk8LMSywpBjZBxCv7zLCNsG6u3nyD1d4CYwsD\"]}},\"version\":1}"}},"contracts/CEther.sol":{"CEther":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"cashPrior","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"interestAccumulated","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"borrowIndex","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalBorrows","type":"uint256"}],"name":"AccrueInterest","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"borrower","type":"address"},{"indexed":false,"internalType":"uint256","name":"borrowAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"accountBorrows","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalBorrows","type":"uint256"}],"name":"Borrow","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"error","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"info","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"detail","type":"uint256"}],"name":"Failure","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"liquidator","type":"address"},{"indexed":false,"internalType":"address","name":"borrower","type":"address"},{"indexed":false,"internalType":"uint256","name":"repayAmount","type":"uint256"},{"indexed":false,"internalType":"address","name":"cTokenCollateral","type":"address"},{"indexed":false,"internalType":"uint256","name":"seizeTokens","type":"uint256"}],"name":"LiquidateBorrow","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"minter","type":"address"},{"indexed":false,"internalType":"uint256","name":"mintAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"mintTokens","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldAdminFeeMantissa","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newAdminFeeMantissa","type":"uint256"}],"name":"NewAdminFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract ComptrollerInterface","name":"oldComptroller","type":"address"},{"indexed":false,"internalType":"contract ComptrollerInterface","name":"newComptroller","type":"address"}],"name":"NewComptroller","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldFuseFeeMantissa","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newFuseFeeMantissa","type":"uint256"}],"name":"NewFuseFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract InterestRateModel","name":"oldInterestRateModel","type":"address"},{"indexed":false,"internalType":"contract InterestRateModel","name":"newInterestRateModel","type":"address"}],"name":"NewMarketInterestRateModel","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldReserveFactorMantissa","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newReserveFactorMantissa","type":"uint256"}],"name":"NewReserveFactor","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"redeemer","type":"address"},{"indexed":false,"internalType":"uint256","name":"redeemAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"redeemTokens","type":"uint256"}],"name":"Redeem","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"payer","type":"address"},{"indexed":false,"internalType":"address","name":"borrower","type":"address"},{"indexed":false,"internalType":"uint256","name":"repayAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"accountBorrows","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalBorrows","type":"uint256"}],"name":"RepayBorrow","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"benefactor","type":"address"},{"indexed":false,"internalType":"uint256","name":"addAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newTotalReserves","type":"uint256"}],"name":"ReservesAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"admin","type":"address"},{"indexed":false,"internalType":"uint256","name":"reduceAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newTotalReserves","type":"uint256"}],"name":"ReservesReduced","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":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":false,"inputs":[{"internalType":"uint256","name":"reduceAmount","type":"uint256"}],"name":"_reduceReserves","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"newAdminFeeMantissa","type":"uint256"}],"name":"_setAdminFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"contract InterestRateModel","name":"newInterestRateModel","type":"address"}],"name":"_setInterestRateModel","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"}],"name":"_setNameAndSymbol","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"newReserveFactorMantissa","type":"uint256"}],"name":"_setReserveFactor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"withdrawAmount","type":"uint256"}],"name":"_withdrawAdminFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"withdrawAmount","type":"uint256"}],"name":"_withdrawFuseFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"accrualBlockNumber","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"accrueInterest","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"adminFeeMantissa","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOfUnderlying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"borrowAmount","type":"uint256"}],"name":"borrow","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"borrowBalanceCurrent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"borrowBalanceStored","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"borrowIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"borrowRatePerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"comptroller","outputs":[{"internalType":"contract ComptrollerInterface","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"exchangeRateCurrent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"exchangeRateStored","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"fuseFeeMantissa","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getAccountSnapshot","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getCash","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"contract ComptrollerInterface","name":"comptroller_","type":"address"},{"internalType":"contract InterestRateModel","name":"interestRateModel_","type":"address"},{"internalType":"uint256","name":"initialExchangeRateMantissa_","type":"uint256"},{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"uint8","name":"decimals_","type":"uint8"},{"internalType":"uint256","name":"reserveFactorMantissa_","type":"uint256"},{"internalType":"uint256","name":"adminFeeMantissa_","type":"uint256"}],"name":"initialize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"contract ComptrollerInterface","name":"comptroller_","type":"address"},{"internalType":"contract InterestRateModel","name":"interestRateModel_","type":"address"},{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"uint256","name":"reserveFactorMantissa_","type":"uint256"},{"internalType":"uint256","name":"adminFeeMantissa_","type":"uint256"}],"name":"initialize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"interestRateModel","outputs":[{"internalType":"contract InterestRateModel","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isCEther","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isCToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"borrower","type":"address"},{"internalType":"contract CToken","name":"cTokenCollateral","type":"address"}],"name":"liquidateBorrow","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[],"name":"mint","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"protocolSeizeShareMantissa","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"redeemTokens","type":"uint256"}],"name":"redeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"redeemAmount","type":"uint256"}],"name":"redeemUnderlying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"repayBorrow","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"borrower","type":"address"}],"name":"repayBorrowBehalf","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"reserveFactorMantissa","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"liquidator","type":"address"},{"internalType":"address","name":"borrower","type":"address"},{"internalType":"uint256","name":"seizeTokens","type":"uint256"}],"name":"seize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"supplyRatePerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalAdminFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalBorrows","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"totalBorrowsCurrent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalFuseFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalReserves","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"src","type":"address"},{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"underlying","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b50615698806100206000396000f3fe6080604052600436106102ff5760003560e01c80638f840ddd11610190578063bd6d894d116100dc578063dd62ed3e11610095578063f3fdb15a1161006f578063f3fdb15a14610d88578063f8f9da2814610d9d578063fca7820b14610db2578063fe9c44ae14610b9b576102ff565b8063dd62ed3e14610cf4578063e597461914610d2f578063f2b3abbd14610d55576102ff565b8063bd6d894d14610c08578063c37f68e214610c1d578063c5ebeaec14610c76578063db006a7514610ca0578063dbfe7c1914610cca578063dc028ab114610cdf576102ff565b8063a7b820df11610149578063aae40a2a11610123578063aae40a2a14610b6d578063ac784ddc14610b9b578063ae9d70b014610bb0578063b2a02ff114610bc5576102ff565b8063a7b820df14610af5578063a9059cbb14610b1f578063aa5af0fd14610b58576102ff565b80638f840ddd14610a2f57806391dd36c614610a4457806395d89b4114610a6e57806395dd919314610a83578063a03dce8d14610ab6578063a6afed9514610ae0576102ff565b806347bd37181161024f5780636c540baf1161020857806373acee98116101e257806373acee981461088757806379c2c9541461089c578063852a12e3146109f05780638d02d9a114610a1a576102ff565b80636c540baf1461082a5780636f307dc31461083f57806370a0823114610854576102ff565b806347bd3718146107885780634e4d9fea1461079d5780635fe3b567146107a5578063601a0bf1146107d657806361feacff146108005780636752e70214610815576102ff565b806318160ddd116102bc578063313ce56711610296578063313ce5671461064a57806334154d4c146106755780633af9e669146107405780633b1d21a214610773576102ff565b806318160ddd146105dd578063182df0f5146105f257806323b872dd14610607576102ff565b806306fdde031461033d578063095ea7b3146103c75780630f8855e8146104145780631249c58b1461057b578063173b99041461058357806317bfdfbc146105aa575b600061030a34610ddc565b50905061033a816040518060400160405280600b81526020016a1b5a5b9d0819985a5b195960aa1b815250610e3e565b50005b34801561034957600080fd5b506103526110a4565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561038c578181015183820152602001610374565b50505050905090810190601f1680156103b95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103d357600080fd5b50610400600480360360408110156103ea57600080fd5b506001600160a01b038135169060200135611131565b604080519115158252519081900360200190f35b34801561042057600080fd5b50610579600480360361010081101561043857600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b81111561047257600080fd5b82018360208201111561048457600080fd5b803590602001918460018302840111600160201b831117156104a557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156104f757600080fd5b82018360208201111561050957600080fd5b803590602001918460018302840111600160201b8311171561052a57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505060ff833516935050506020810135906040013561119e565b005b61057961144c565b34801561058f57600080fd5b5061059861148a565b60408051918252519081900360200190f35b3480156105b657600080fd5b50610598600480360360208110156105cd57600080fd5b50356001600160a01b0316611490565b3480156105e957600080fd5b5061059861150c565b3480156105fe57600080fd5b50610598611512565b34801561061357600080fd5b506104006004803603606081101561062a57600080fd5b506001600160a01b03813581169160208101359091169060400135611575565b34801561065657600080fd5b5061065f6115a3565b6040805160ff9092168252519081900360200190f35b34801561068157600080fd5b506105796004803603604081101561069857600080fd5b810190602081018135600160201b8111156106b257600080fd5b8201836020820111156106c457600080fd5b803590602001918460018302840111600160201b831117156106e557600080fd5b919390929091602081019035600160201b81111561070257600080fd5b82018360208201111561071457600080fd5b803590602001918460018302840111600160201b8311171561073557600080fd5b5090925090506115ac565b34801561074c57600080fd5b506105986004803603602081101561076357600080fd5b50356001600160a01b0316611611565b34801561077f57600080fd5b506105986116c9565b34801561079457600080fd5b506105986116d8565b6105796116de565b3480156107b157600080fd5b506107ba611720565b604080516001600160a01b039092168252519081900360200190f35b3480156107e257600080fd5b50610598600480360360208110156107f957600080fd5b503561172f565b34801561080c57600080fd5b50610598611780565b34801561082157600080fd5b50610598611786565b34801561083657600080fd5b50610598611791565b34801561084b57600080fd5b506107ba611797565b34801561086057600080fd5b506105986004803603602081101561087757600080fd5b50356001600160a01b03166117a6565b34801561089357600080fd5b506105986117c1565b3480156108a857600080fd5b50610579600480360360c08110156108bf57600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b8111156108f257600080fd5b82018360208201111561090457600080fd5b803590602001918460018302840111600160201b8311171561092557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561097757600080fd5b82018360208201111561098957600080fd5b803590602001918460018302840111600160201b831117156109aa57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505082359350505060200135611834565b3480156109fc57600080fd5b5061059860048036036020811015610a1357600080fd5b5035611859565b348015610a2657600080fd5b50610598611864565b348015610a3b57600080fd5b5061059861186a565b348015610a5057600080fd5b5061059860048036036020811015610a6757600080fd5b5035611870565b348015610a7a57600080fd5b506103526118ad565b348015610a8f57600080fd5b5061059860048036036020811015610aa657600080fd5b50356001600160a01b0316611905565b348015610ac257600080fd5b5061059860048036036020811015610ad957600080fd5b5035611969565b348015610aec57600080fd5b506105986119a6565b348015610b0157600080fd5b5061059860048036036020811015610b1857600080fd5b5035611b6b565b348015610b2b57600080fd5b5061040060048036036040811015610b4257600080fd5b506001600160a01b038135169060200135611ba8565b348015610b6457600080fd5b50610598611bd5565b61057960048036036040811015610b8357600080fd5b506001600160a01b0381358116916020013516611bdb565b348015610ba757600080fd5b50610400611c28565b348015610bbc57600080fd5b50610598611c2d565b348015610bd157600080fd5b5061059860048036036060811015610be857600080fd5b506001600160a01b03813581169160208101359091169060400135611ce5565b348015610c1457600080fd5b50610598611d09565b348015610c2957600080fd5b50610c5060048036036020811015610c4057600080fd5b50356001600160a01b0316611d7d565b604080519485526020850193909352838301919091526060830152519081900360800190f35b348015610c8257600080fd5b5061059860048036036020811015610c9957600080fd5b5035611e12565b348015610cac57600080fd5b5061059860048036036020811015610cc357600080fd5b5035611e1d565b348015610cd657600080fd5b50610598611e28565b348015610ceb57600080fd5b50610598611e2e565b348015610d0057600080fd5b5061059860048036036040811015610d1757600080fd5b506001600160a01b0381358116916020013516611e34565b61057960048036036020811015610d4557600080fd5b50356001600160a01b0316611e5f565b348015610d6157600080fd5b5061059860048036036020811015610d7857600080fd5b50356001600160a01b0316611ead565b348015610d9457600080fd5b506107ba611ee7565b348015610da957600080fd5b50610598611ef6565b348015610dbe57600080fd5b5061059860048036036020811015610dd557600080fd5b5035611f6b565b6000806000610dea81611fa8565b6000610df46119a6565b90508015610e1f57610e12816011811115610e0b57fe5b6020612064565b935060009250610e2f9050565b610e2933866120ca565b93509350505b610e388161244f565b50915091565b81610e48576110a0565b606081516007016040519080825280601f01601f191660200182016040528015610e79576020820181803883390190505b50905060005b8251811015610eca57828181518110610e9457fe5b602001015160f81c60f81b828281518110610eab57fe5b60200101906001600160f81b031916908160001a905350600101610e7f565b8151600160fd1b90839083908110610ede57fe5b60200101906001600160f81b031916908160001a905350602860f81b828260010181518110610f0957fe5b60200101906001600160f81b031916908160001a9053506103e8840460300160f81b828260020181518110610f3a57fe5b60200101906001600160f81b031916908160001a905350600a606485040660300160f81b828260030181518110610f6d57fe5b60200101906001600160f81b031916908160001a905350600a8085040660300160f81b828260040181518110610f9f57fe5b60200101906001600160f81b031916908160001a905350600a840660300160f81b828260050181518110610fcf57fe5b60200101906001600160f81b031916908160001a905350602960f81b828260060181518110610ffa57fe5b60200101906001600160f81b031916908160001a90535081841561109c5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611061578181015183820152602001611049565b50505050905090810190601f16801561108e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5050505b5050565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156111295780601f106110fe57610100808354040283529160200191611129565b820191906000526020600020905b81548152906001019060200180831161110c57829003601f168201915b505050505081565b3360008181526012602090815260408083206001600160a01b03871680855290835281842086905581518681529151939493909284927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a360019150505b92915050565b3373a731585ab05fc9f83555cf9bff8f58ee94e18f85146111f05760405162461bcd60e51b815260040180806020018281038252602981526020018061554e6029913960400191505060405180910390fd5b600a541580156112005750600b54155b61123b5760405162461bcd60e51b81526004018080602001828103825260238152602001806154686023913960400191505060405180910390fd5b60068690558561127c5760405162461bcd60e51b815260040180806020018281038252603081526020018061548b6030913960400191505060405180910390fd5b6000611287896124be565b905080156112dc576040805162461bcd60e51b815260206004820152601a60248201527f73657474696e6720636f6d7074726f6c6c6572206661696c6564000000000000604482015290519081900360640190fd5b6112e46125e3565b600a55670de0b6b3a7640000600b556112fc886125e7565b9050801561133b5760405162461bcd60e51b81526004018080602001828103825260228152602001806154bb6022913960400191505060405180910390fd5b855161134e906001906020890190615258565b508451611362906002906020880190615258565b506003805460ff191660ff861617905561137b836128ed565b905080156113d0576040805162461bcd60e51b815260206004820152601d60248201527f73657474696e67207265736572766520666163746f72206661696c6564000000604482015290519081900360640190fd5b6113d9826129a6565b9050801561142e576040805162461bcd60e51b815260206004820152601860248201527f73657474696e672061646d696e20666565206661696c65640000000000000000604482015290519081900360640190fd5b50506000805460ff60b01b1916600160b01b17905550505050505050565b600061145734610ddc565b509050611487816040518060400160405280600b81526020016a1b5a5b9d0819985a5b195960aa1b815250610e3e565b50565b60095481565b60008061149c81611fa8565b60006114a66119a6565b146114f1576040805162461bcd60e51b81526020600482015260166024820152751858d8dc9d59481a5b9d195c995cdd0819985a5b195960521b604482015290519081900360640190fd5b6114fa83611905565b91505b6115068161244f565b50919050565b60105481565b600080600061151f612acb565b9092509050600082600381111561153257fe5b1461156e5760405162461bcd60e51b81526004018080602001828103825260358152602001806155fb6035913960400191505060405180910390fd5b9150505b90565b60008061158181611fa8565b600061158f33878787612b8b565b14915061159b8161244f565b509392505050565b60035460ff1681565b6115b4612e1f565b6115f8576040805162461bcd60e51b815260206004820152601060248201526f31b0b63632b9103737ba1030b236b4b760811b604482015290519081900360640190fd5b611604600185856152d2565b5061109c600283836152d2565b600061161b615340565b604051806020016040528061162e611d09565b90526001600160a01b03841660009081526011602052604081205491925090819061165a908490612f98565b9092509050600082600381111561166d57fe5b146116bf576040805162461bcd60e51b815260206004820152601f60248201527f62616c616e636520636f756c64206e6f742062652063616c63756c6174656400604482015290519081900360640190fd5b925050505b919050565b60006116d3612feb565b905090565b600c5481565b60006116e934613017565b50905061148781604051806040016040528060128152602001711c995c185e509bdc9c9bddc819985a5b195960721b815250610e3e565b6004546001600160a01b031681565b60008061173b81611fa8565b60006117456119a6565b9050801561176b5761176381601181111561175c57fe5b603b612064565b9250506114fd565b61177484613058565b9250506115068161244f565b600e5481565b666379da05b6000081565b600a5481565b6014546001600160a01b031681565b6001600160a01b031660009081526011602052604090205490565b6000806117cd81611fa8565b60006117d76119a6565b14611822576040805162461bcd60e51b81526020600482015260166024820152751858d8dc9d59481a5b9d195c995cdd0819985a5b195960521b604482015290519081900360640190fd5b600c5491506118308161244f565b5090565b6702c68af0bb140000601261184f8888848989868a8a61119e565b5050505050505050565b600061119882613124565b60075481565b600d5481565b60008061187c81611fa8565b60006118866119a6565b905080156118a45761176381601181111561189d57fe5b6052612064565b611774846129a6565b6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156111295780601f106110fe57610100808354040283529160200191611129565b600080600061191384613164565b9092509050600082600381111561192657fe5b146119625760405162461bcd60e51b81526004018080602001828103825260378152602001806154dd6037913960400191505060405180910390fd5b9392505050565b60008061197581611fa8565b600061197f6119a6565b9050801561199d5761176381601181111561199657fe5b6033612064565b61177484613218565b6000806119b16125e3565b905080600a5414156119c7576000915050611572565b60006119d1612feb565b90506000600560009054906101000a90046001600160a01b03166001600160a01b03166315f2405383600c54611a16600d54611a11600e54600f54613299565b613299565b6040518463ffffffff1660e01b815260040180848152602001838152602001828152602001935050505060206040518083038186803b158015611a5857600080fd5b505afa158015611a6c573d6000803e3d6000fd5b505050506040513d6020811015611a8257600080fd5b5051905065048c27395000811115611ae1576040805162461bcd60e51b815260206004820152601c60248201527f626f72726f772072617465206973206162737572646c79206869676800000000604482015290519081900360640190fd5b600080611af085600a546132cf565b90925090506000826003811115611b0357fe5b14611b55576040805162461bcd60e51b815260206004820152601f60248201527f636f756c64206e6f742063616c63756c61746520626c6f636b2064656c746100604482015290519081900360640190fd5b611b61858585846132f2565b9550505050505090565b600080611b7781611fa8565b6000611b816119a6565b90508015611b9f57611763816011811115611b9857fe5b6037612064565b6117748461350a565b600080611bb481611fa8565b6000611bc233338787612b8b565b149150611bce8161244f565b5092915050565b600b5481565b6000611be88334846135e6565b509050611c2381604051806040016040528060168152602001751b1a5c5d5a59185d19509bdc9c9bddc819985a5b195960521b815250610e3e565b505050565b600181565b6005546000906001600160a01b031663b8168816611c49612feb565b600c54611c60600d54611a11600e54600f54613299565b60075460085460095401016040518563ffffffff1660e01b81526004018085815260200184815260200183815260200182815260200194505050505060206040518083038186803b158015611cb457600080fd5b505afa158015611cc8573d6000803e3d6000fd5b505050506040513d6020811015611cde57600080fd5b5051905090565b60006001611cf281611fa8565b611cfe338686866136d2565b915061159b8161244f565b600080611d1581611fa8565b6000611d1f6119a6565b14611d6a576040805162461bcd60e51b81526020600482015260166024820152751858d8dc9d59481a5b9d195c995cdd0819985a5b195960521b604482015290519081900360640190fd5b611d72611512565b91506118308161244f565b6001600160a01b038116600090815260116020526040812054819081908190818080611da889613164565b935090506000816003811115611dba57fe5b14611dd85760095b975060009650869550859450611e0b9350505050565b611de0612acb565b925090506000816003811115611df257fe5b14611dfe576009611dc2565b5060009650919450925090505b9193509193565b600061119882613ab2565b600061119882613af0565b60085481565b600f5481565b6001600160a01b03918216600090815260126020908152604080832093909416825291909152205490565b6000611e6b8234613b29565b5090506110a0816040518060400160405280601881526020017f7265706179426f72726f77426568616c66206661696c65640000000000000000815250610e3e565b600080611eb86119a6565b90508015611ede57611ed6816011811115611ecf57fe5b604b612064565b9150506116c4565b611962836125e7565b6005546001600160a01b031681565b6005546000906001600160a01b03166315f24053611f12612feb565b600c54611f29600d54611a11600e54600f54613299565b6040518463ffffffff1660e01b815260040180848152602001838152602001828152602001935050505060206040518083038186803b158015611cb457600080fd5b600080611f7781611fa8565b6000611f816119a6565b90508015611f9f57611763816011811115611f9857fe5b6059612064565b611774846128ed565b600054600160b01b900460ff16611ff3576040805162461bcd60e51b815260206004820152600a6024820152691c994b595b9d195c995960b21b604482015290519081900360640190fd5b8061205457600480546040805163c90c20b160e01b815290516001600160a01b039092169263c90c20b192828201926000929082900301818387803b15801561203b57600080fd5b505af115801561204f573d6000803e3d6000fd5b505050505b506000805460ff60b01b19169055565b60007f45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa083601181111561209357fe5b83606381111561209f57fe5b604080519283526020830191909152600082820152519081900360600190a182601181111561196257fe5b6004805460408051634ef4c3e160e01b815230938101939093526001600160a01b038581166024850152604484018590529051600093849384931691634ef4c3e19160648082019260209290919082900301818787803b15801561212d57600080fd5b505af1158015612141573d6000803e3d6000fd5b505050506040513d602081101561215757600080fd5b50519050801561217b5761216e6003602183613b8e565b9250600091506124489050565b6121836125e3565b600a54146121975761216e600a6024612064565b61219f615353565b6121a7612acb565b60408301819052602083018260038111156121be57fe5b60038111156121c957fe5b90525060009050816020015160038111156121e057fe5b1461220f5761220160096023836020015160038111156121fc57fe5b613b8e565b935060009250612448915050565b6122198686613c17565b60c082018190526040805160208101825290830151815261223a9190613cad565b606083018190526020830182600381111561225157fe5b600381111561225c57fe5b905250600090508160200151600381111561227357fe5b146122c5576040805162461bcd60e51b815260206004820181905260248201527f4d494e545f45584348414e47455f43414c43554c4154494f4e5f4641494c4544604482015290519081900360640190fd5b6122d56010548260600151613299565b60808201526001600160a01b03861660009081526011602052604090205460608201516123029190613299565b60a0820181905260808201516010556001600160a01b0387166000818152601160209081526040918290209390935560c084015160608086015183519485529484019190915282820193909352517f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f929181900390910190a1606081015160408051918252516001600160a01b0388169130916000805160206155778339815191529181900360200190a36004805460c08301516060840151604080516341c728b960e01b815230958101959095526001600160a01b038b8116602487015260448601939093526064850191909152519116916341c728b991608480830192600092919082900301818387803b15801561241b57600080fd5b505af115801561242f573d6000803e3d6000fd5b506000925061243c915050565b8160c001519350935050505b9250929050565b6000805460ff60b01b1916600160b01b1790558061148757600480546040805163319728a160e11b815290516001600160a01b039092169263632e514292828201926000929082900301818387803b1580156124aa57600080fd5b505af115801561109c573d6000803e3d6000fd5b6004805460408051623f1ee960e11b815290516000936001600160a01b0393841693861692627e3dd29281830192602092829003018186803b15801561250357600080fd5b505afa158015612517573d6000803e3d6000fd5b505050506040513d602081101561252d57600080fd5b5051612580576040805162461bcd60e51b815260206004820152601c60248201527f6d61726b6572206d6574686f642072657475726e65642066616c736500000000604482015290519081900360640190fd5b600480546001600160a01b0319166001600160a01b03858116918217909255604080519284168352602083019190915280517f7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d9281900390910190a16000611962565b4390565b6000806125f2612e1f565b61260257611ed66001604d612064565b61260a6125e3565b600a541461261e57611ed6600a604c612064565b600560009054906101000a90046001600160a01b03169050826001600160a01b0316632191f92a6040518163ffffffff1660e01b815260040160206040518083038186803b15801561266f57600080fd5b505afa158015612683573d6000803e3d6000fd5b505050506040513d602081101561269957600080fd5b50516126ec576040805162461bcd60e51b815260206004820152601c60248201527f6d61726b6572206d6574686f642072657475726e65642066616c736500000000604482015290519081900360640190fd5b600580546001600160a01b0319166001600160a01b03858116918217909255604080519284168352602083019190915280517fedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f9269281900390910190a16001600160a01b0381161561281e5760408051600481526024810182526020810180516001600160e01b0316636cc1140b60e11b178152915181516001600160a01b0385169382918083835b602083106127b35780518252601f199092019160209182019101612794565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612815576040519150601f19603f3d011682016040523d82523d6000602084013e61281a565b606091505b5050505b60408051600481526024810182526020810180516001600160e01b031663742a137b60e11b178152915181516001600160a01b0387169382918083835b6020831061287a5780518252601f19909201916020918201910161285b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146128dc576040519150601f19603f3d011682016040523d82523d6000602084013e6128e1565b606091505b50600091506119629050565b60006128f7612e1f565b61290e576129076001605a612064565b90506116c4565b6129166125e3565b600a541461292a57612907600a605b612064565b670de0b6b3a764000061294a61294284600754613299565b600854613299565b111561295c576129076002605c612064565b6009805490839055604080518281526020810185905281517faaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460929181900390910190a16000611962565b60006129b06125e3565b600a54146129c457612907600a6054612064565b6000198214156129d45760075491505b60006129de613cc4565b9050670de0b6b3a76400006129fe6129f860095486613299565b83613299565b1115612a1057611ed660026055612064565b8260075414612a7657612a21612e1f565b612a3157611ed660016053612064565b6007805490849055604080518281526020810186905281517fcdd0b588250e1398549f79cfdb8217c186688822905d6715b0834ea1c865594a929181900390910190a1505b8060085414612ac4576008805490829055604080518281526020810184905281517f92eef861b6533b7d3417f39c2ad7b460eed4e88a32fa3604f30e718b7602e7dc929181900390910190a1505b6000611962565b601054600090819080612ae657505060065460009150612b87565b6000612af0612feb565b90506000612afc615340565b6000612b1e84600c54612b19600d54611a11600e54600f54613299565b613d13565b935090506000816003811115612b3057fe5b14612b4557955060009450612b879350505050565b612b4f8386613d60565b925090506000816003811115612b6157fe5b14612b7657955060009450612b879350505050565b5051600095509350612b8792505050565b9091565b60048054604080516317b9b84b60e31b815230938101939093526001600160a01b03868116602485015285811660448501526064840185905290516000938493929092169163bdcdc25891608480830192602092919082900301818787803b158015612bf657600080fd5b505af1158015612c0a573d6000803e3d6000fd5b505050506040513d6020811015612c2057600080fd5b505190508015612c3f57612c376003605d83613b8e565b915050612e17565b836001600160a01b0316856001600160a01b03161415612c6557612c376002605e612064565b60006001600160a01b038781169087161415612c845750600019612cac565b506001600160a01b038086166000908152601260209081526040808320938a16835292905220545b600080600080612cbc85896132cf565b90945092506000846003811115612ccf57fe5b14612ced57612ce06009605e612064565b9650505050505050612e17565b6001600160a01b038a16600090815260116020526040902054612d1090896132cf565b90945091506000846003811115612d2357fe5b14612d3457612ce06009605f612064565b6001600160a01b038916600090815260116020526040902054612d579089613e10565b90945090506000846003811115612d6a57fe5b14612d7b57612ce060096060612064565b6001600160a01b03808b16600090815260116020526040808220859055918b168152208190556000198514612dd3576001600160a01b03808b166000908152601260209081526040808320938f168352929052208390555b886001600160a01b03168a6001600160a01b03166000805160206155778339815191528a6040518082815260200191505060405180910390a3600096505050505050505b949350505050565b60048054604080516303e1469160e61b815290516000936001600160a01b0390931692839263f851a4409281830192602092829003018186803b158015612e6557600080fd5b505afa158015612e79573d6000803e3d6000fd5b505050506040513d6020811015612e8f57600080fd5b50516001600160a01b031633148015612f095750806001600160a01b0316630a755ec26040518163ffffffff1660e01b815260040160206040518083038186803b158015612edc57600080fd5b505afa158015612ef0573d6000803e3d6000fd5b505050506040513d6020811015612f0657600080fd5b50515b8061156e57503373a731585ab05fc9f83555cf9bff8f58ee94e18f8514801561156e5750806001600160a01b0316632f1069ba6040518163ffffffff1660e01b815260040160206040518083038186803b158015612f6657600080fd5b505afa158015612f7a573d6000803e3d6000fd5b505050506040513d6020811015612f9057600080fd5b505191505090565b6000806000612fa5615340565b612faf8686613e36565b90925090506000826003811115612fc257fe5b14612fd35750915060009050612448565b6000612fde82613e9e565b9350935050509250929050565b6000806000612ffa47346132cf565b9092509050600082600381111561300d57fe5b1461156e57600080fd5b600080600061302581611fa8565b600061302f6119a6565b9050801561304d57610e1281601181111561304657fe5b6041612064565b610e29333387613ead565b600080613063612e1f565b61307357611ed66001603c612064565b61307b6125e3565b600a541461308f57611ed6600a603e612064565b82613098612feb565b10156130aa57611ed6600e603d612064565b600d548311156130c057611ed66002603f612064565b6130cc600d54846141fd565b600d81905590506130dd3384614237565b604080513381526020810185905280820183905290517f3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e9181900360600190a16000611962565b60008061313081611fa8565b600061313a6119a6565b905080156131585761176381601181111561315157fe5b602a612064565b6117743360008661426d565b6001600160a01b03811660009081526013602052604081208054829182918291829161319b57506000945084935061321392505050565b6131ab8160000154600b54614740565b909450925060008460038111156131be57fe5b146131d3575091935060009250613213915050565b6131e183826001015461477f565b909450915060008460038111156131f457fe5b14613209575091935060009250613213915050565b5060009450925050505b915091565b6000806132236125e3565b600a541461323757611ed6600a6035612064565b82613240612feb565b101561325257611ed6600e6034612064565b600f5483111561326857611ed660026036612064565b613274600f54846141fd565b600f8190559050612ac473a731585ab05fc9f83555cf9bff8f58ee94e18f8584614237565b60006119628383604051806040016040528060118152602001706164646974696f6e206f766572666c6f7760781b8152506147aa565b6000808383116132e6575060009050818303612448565b50600390506000612448565b60006132fc615340565b61331460405180602001604052808681525084614808565b9050600061332482600c54614832565b9050600061333482600c54613299565b90506000613355604051806020016040528060095481525084600d54614851565b90506000613376604051806020016040528060085481525085600f54614851565b90506000613397604051806020016040528060075481525086600e54614851565b905060006133aa87600b54600b54614851565b600a8d9055600b819055600c869055600d859055600f849055600e839055604080518d8152602081018990528082018390526060810188905290519192507f4dec04e750ca11537cabcd8a9eab06494de08da3735bc8871cd41250e190bc04919081900360800190a16005546040805160248082018e905282518083039091018152604490910182526020810180516001600160e01b0316635efd023360e11b178152915181516001600160a01b0390941693919290918291908083835b602083106134875780518252601f199092019160209182019101613468565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146134e9576040519150601f19603f3d011682016040523d82523d6000602084013e6134ee565b606091505b50600091506134fa9050565b9c9b505050505050505050505050565b6000806135156125e3565b600a541461352957611ed6600a6039612064565b82613532612feb565b101561354457611ed6600e6038612064565b600e5483111561355a57611ed66002603a612064565b613566600e54846141fd565b600e81905560048054604080516303e1469160e61b81529051939450612ac4936001600160a01b039092169263f851a440928282019260209290829003018186803b1580156135b457600080fd5b505afa1580156135c8573d6000803e3d6000fd5b505050506040513d60208110156135de57600080fd5b505184614237565b60008060006135f481611fa8565b60006135fe6119a6565b905080156136295761361c81601181111561361557fe5b6011612064565b9350600092506136c09050565b846001600160a01b031663a6afed956040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561366457600080fd5b505af1158015613678573d6000803e3d6000fd5b505050506040513d602081101561368e57600080fd5b5051905080156136ae5761361c8160118111156136a757fe5b6012612064565b6136ba33888888614882565b93509350505b6136c98161244f565b50935093915050565b600480546040805163d02f735160e01b815230938101939093526001600160a01b038781166024850152868116604485015285811660648501526084840185905290516000938493929092169163d02f73519160a480830192602092919082900301818787803b15801561374557600080fd5b505af1158015613759573d6000803e3d6000fd5b505050506040513d602081101561376f57600080fd5b50519050801561378657612c376003601d83613b8e565b846001600160a01b0316846001600160a01b031614156137ac57612c376006601e612064565b6137b4615391565b6001600160a01b0385166000908152601160205260409020546137d790856132cf565b60208301819052828260038111156137eb57fe5b60038111156137f657fe5b905250600090508151600381111561380a57fe5b1461382f576138266009601c836000015160038111156121fc57fe5b92505050612e17565b61384e846040518060200160405280666379da05b60000815250614d7a565b608082018190526138609085906141fd565b606082015261386d612acb565b60c083018190528282600381111561388157fe5b600381111561388c57fe5b90525060009050815160038111156138a057fe5b146138f2576040805162461bcd60e51b815260206004820152601860248201527f65786368616e67652072617465206d617468206572726f720000000000000000604482015290519081900360640190fd5b61391260405180602001604052808360c001518152508260800151614832565b60a08201819052600d5461392591613299565b60e0820152601054608082015161393c91906141fd565b6101008201526001600160a01b038616600090815260116020526040902054606082015161396a9190613e10565b604083018190528282600381111561397e57fe5b600381111561398957fe5b905250600090508151600381111561399d57fe5b146139b9576138266009601b836000015160038111156121fc57fe5b60e0810151600d556101008101516010556020808201516001600160a01b0380881660008181526011855260408082209490945583860151928b16808252908490209290925560608501518351908152925191939092600080516020615577833981519152929081900390910190a36080810151604080519182525130916001600160a01b038816916000805160206155778339815191529181900360200190a360a081015160e082015160408051308152602081019390935282810191909152517fa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc59181900360600190a16000979650505050505050565b600080613abe81611fa8565b6000613ac86119a6565b90508015613ae657611763816011811115613adf57fe5b600a612064565b6117743385614da2565b600080613afc81611fa8565b6000613b066119a6565b90508015613b1d5761176381601181111561315157fe5b6117743385600061426d565b6000806000613b3781611fa8565b6000613b416119a6565b90508015613b6c57613b5f816011811115613b5857fe5b6040612064565b935060009250613b7d9050565b613b77338787613ead565b93509350505b613b868161244f565b509250929050565b60007f45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0846011811115613bbd57fe5b846063811115613bc957fe5b604080519283526020830191909152818101859052519081900360600190a16003846011811115613bf657fe5b14613c0c57836011811115613c0757fe5b612e17565b506103e80192915050565b6000336001600160a01b03841614613c68576040805162461bcd60e51b815260206004820152600f60248201526e0e6cadcc8cae440dad2e6dac2e8c6d608b1b604482015290519081900360640190fd5b813414611506576040805162461bcd60e51b815260206004820152600e60248201526d0ecc2d8eaca40dad2e6dac2e8c6d60931b604482015290519081900360640190fd5b6000806000613cba615340565b612faf86866150ec565b600073a731585ab05fc9f83555cf9bff8f58ee94e18f856001600160a01b031663dd86fea16040518163ffffffff1660e01b815260040160206040518083038186803b158015611cb457600080fd5b600080600080613d238787613e10565b90925090506000826003811115613d3657fe5b14613d475750915060009050613d58565b613d5181866132cf565b9350935050505b935093915050565b6000613d6a615340565b600080613d7f86670de0b6b3a7640000614740565b90925090506000826003811115613d9257fe5b14613db157506040805160208101909152600081529092509050612448565b600080613dbe838861477f565b90925090506000826003811115613dd157fe5b14613df357506040805160208101909152600081529094509250612448915050565b604080516020810190915290815260009890975095505050505050565b600080838301848110613e2857600092509050612448565b506002915060009050612448565b6000613e40615340565b600080613e51866000015186614740565b90925090506000826003811115613e6457fe5b14613e8357506040805160208101909152600081529092509050612448565b60408051602081019091529081526000969095509350505050565b51670de0b6b3a7640000900490565b6004805460408051631200453160e11b815230938101939093526001600160a01b03868116602485015285811660448501526064840185905290516000938493849316916324008a629160848082019260209290919082900301818787803b158015613f1857600080fd5b505af1158015613f2c573d6000803e3d6000fd5b505050506040513d6020811015613f4257600080fd5b505190508015613f6657613f596003604383613b8e565b925060009150613d589050565b613f6e6125e3565b600a5414613f8257613f59600a6044612064565b613f8a6153de565b6001600160a01b0386166000908152601360205260409020600101546060820152613fb486613164565b6080830181905260208301826003811115613fcb57fe5b6003811115613fd657fe5b9052506000905081602001516003811115613fed57fe5b146140175761400960096042836020015160038111156121fc57fe5b935060009250613d58915050565b6000198514156140305760808101516040820152614038565b604081018590525b614046878260400151613c17565b60e08201819052608082015161405b916132cf565b60a083018190526020830182600381111561407257fe5b600381111561407d57fe5b905250600090508160200151600381111561409457fe5b146140d05760405162461bcd60e51b815260040180806020018281038252603a815260200180615514603a913960400191505060405180910390fd5b6140e0600c548260e001516132cf565b60c08301819052602083018260038111156140f757fe5b600381111561410257fe5b905250600090508160200151600381111561411957fe5b146141555760405162461bcd60e51b81526004018080602001828103825260318152602001806155976031913960400191505060405180910390fd5b60a080820180516001600160a01b03808a16600081815260136020908152604091829020948555600b5460019095019490945560c0870151600c81905560e088015195518251948f16855294840192909252828101949094526060820192909252608081019190915290517f1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1929181900390910190a160e00151600097909650945050505050565b60006119628383604051806040016040528060158152602001747375627472616374696f6e20756e646572666c6f7760581b81525061514b565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015611c23573d6000803e3d6000fd5b600082158061427a575081155b6142b55760405162461bcd60e51b81526004018080602001828103825260348152602001806156306034913960400191505060405180910390fd5b6142bd615353565b6142c5612acb565b60408301819052602083018260038111156142dc57fe5b60038111156142e757fe5b90525060009050816020015160038111156142fe57fe5b146143225761431a6009602e836020015160038111156121fc57fe5b915050611962565b83156143a35760608101849052604080516020810182529082015181526143499085612f98565b608083018190526020830182600381111561436057fe5b600381111561436b57fe5b905250600090508160200151600381111561438257fe5b1461439e5761431a6009602c836020015160038111156121fc57fe5b61441c565b6143bf8360405180602001604052808460400151815250613cad565b60608301819052602083018260038111156143d657fe5b60038111156143e157fe5b90525060009050816020015160038111156143f857fe5b146144145761431a6009602d836020015160038111156121fc57fe5b608081018390525b6004805460608301516040805163eabe7d9160e01b815230948101949094526001600160a01b038981166024860152604485019290925251600093919092169163eabe7d919160648082019260209290919082900301818787803b15801561448357600080fd5b505af1158015614497573d6000803e3d6000fd5b505050506040513d60208110156144ad57600080fd5b5051905080156144cd576144c46003602b83613b8e565b92505050611962565b6144d56125e3565b600a54146144e9576144c4600a602f612064565b6144f960105483606001516132cf565b60a084018190526020840182600381111561451057fe5b600381111561451b57fe5b905250600090508260200151600381111561453257fe5b1461454e576144c460096031846020015160038111156121fc57fe5b6001600160a01b038616600090815260116020526040902054606083015161457691906132cf565b60c084018190526020840182600381111561458d57fe5b600381111561459857fe5b90525060009050826020015160038111156145af57fe5b146145cb576144c460096030846020015160038111156121fc57fe5b81608001516145d8612feb565b10156145ea576144c4600e6032612064565b60a082015160105560c08201516001600160a01b0387166000908152601160205260409020556080820151614620908790614237565b6060820151604080519182525130916001600160a01b038916916000805160206155778339815191529181900360200190a36080820151606080840151604080516001600160a01b038b168152602081019490945283810191909152517fe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a9299281900390910190a16004805460808401516060850151604080516351dff98960e01b815230958101959095526001600160a01b038b8116602487015260448601939093526064850191909152519116916351dff98991608480830192600092919082900301818387803b15801561471557600080fd5b505af1158015614729573d6000803e3d6000fd5b5060009250614736915050565b9695505050505050565b6000808361475357506000905080612448565b8383028385828161476057fe5b041461477457506002915060009050612448565b600092509050612448565b600080826147935750600190506000612448565b600083858161479e57fe5b04915091509250929050565b600083830182858210156147ff5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611061578181015183820152602001611049565b50949350505050565b614810615340565b60405180602001604052806148298560000151856151a5565b90529392505050565b600061483c615340565b6148468484614808565b9050612e1781613e9e565b600061485b615340565b6148658585614808565b905061487961487382613e9e565b84613299565b95945050505050565b6004805460408051632fe3f38f60e11b815230938101939093526001600160a01b03848116602485015287811660448501528681166064850152608484018690529051600093849384931691635fc7e71e9160a48082019260209290919082900301818787803b1580156148f557600080fd5b505af1158015614909573d6000803e3d6000fd5b505050506040513d602081101561491f57600080fd5b505190508015614943576149366003601483613b8e565b925060009150614d719050565b61494b6125e3565b600a541461495f57614936600a6018612064565b6149676125e3565b846001600160a01b0316636c540baf6040518163ffffffff1660e01b815260040160206040518083038186803b1580156149a057600080fd5b505afa1580156149b4573d6000803e3d6000fd5b505050506040513d60208110156149ca57600080fd5b5051146149dd57614936600a6013612064565b866001600160a01b0316866001600160a01b03161415614a035761493660066019612064565b84614a145761493660076017612064565b600019851415614a2a5761493660076016612064565b600080614a38898989613ead565b90925090508115614a6857614a59826011811115614a5257fe5b601a612064565b945060009350614d7192505050565b600480546040805163c488847b60e01b815230938101939093526001600160a01b0389811660248501526044840185905281516000948594929092169263c488847b9260648082019391829003018186803b158015614ac657600080fd5b505afa158015614ada573d6000803e3d6000fd5b505050506040513d6040811015614af057600080fd5b50805160209091015190925090508115614b3b5760405162461bcd60e51b81526004018080602001828103825260338152602001806155c86033913960400191505060405180910390fd5b80886001600160a01b03166370a082318c6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015614b9257600080fd5b505afa158015614ba6573d6000803e3d6000fd5b505050506040513d6020811015614bbc57600080fd5b50511015614c11576040805162461bcd60e51b815260206004820152601860248201527f4c49515549444154455f5345495a455f544f4f5f4d5543480000000000000000604482015290519081900360640190fd5b60006001600160a01b038916301415614c3757614c30308d8d856136d2565b9050614cc1565b6040805163b2a02ff160e01b81526001600160a01b038e811660048301528d81166024830152604482018590529151918b169163b2a02ff1916064808201926020929091908290030181600087803b158015614c9257600080fd5b505af1158015614ca6573d6000803e3d6000fd5b505050506040513d6020811015614cbc57600080fd5b505190505b8015614d0b576040805162461bcd60e51b81526020600482015260146024820152731d1bdad95b881cd95a5e9d5c994819985a5b195960621b604482015290519081900360640190fd5b604080516001600160a01b03808f168252808e1660208301528183018790528b1660608201526080810184905290517f298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb529181900360a00190a16000975092955050505050505b94509492505050565b6000670de0b6b3a7640000614d938484600001516151a5565b81614d9a57fe5b049392505050565b600480546040805163368f515360e21b815230938101939093526001600160a01b0385811660248501526044840185905290516000938493929092169163da3d454c91606480830192602092919082900301818787803b158015614e0557600080fd5b505af1158015614e19573d6000803e3d6000fd5b505050506040513d6020811015614e2f57600080fd5b505190508015614e4e57614e466003601083613b8e565b915050611198565b614e566125e3565b600a5414614e6a57614e46600a600c612064565b6000614e74612feb565b905083811015614e9357614e8a600e600b612064565b92505050611198565b614e9b615424565b614ea486613164565b6020830181905282826003811115614eb857fe5b6003811115614ec357fe5b9052506000905081516003811115614ed757fe5b14614efc57614ef2600980836000015160038111156121fc57fe5b9350505050611198565b614f0a816020015186613e10565b6040830181905282826003811115614f1e57fe5b6003811115614f2957fe5b9052506000905081516003811115614f3d57fe5b14614f5957614ef26009600e836000015160038111156121fc57fe5b600480546040808401518151631de6c8a560e21b815230948101949094526024840152516001600160a01b039091169163779b22949160448083019260209291908290030181600087803b158015614fb057600080fd5b505af1158015614fc4573d6000803e3d6000fd5b505050506040513d6020811015614fda57600080fd5b505192508215614ff157614ef26003601085613b8e565b614ffd600c5486613e10565b606083018190528282600381111561501157fe5b600381111561501c57fe5b905250600090508151600381111561503057fe5b1461504c57614ef26009600d836000015160038111156121fc57fe5b6040808201516001600160a01b0388166000908152601360205291909120908155600b546001909101556060810151600c556150888686614237565b60408082015160608084015183516001600160a01b038b168152602081018a9052808501939093529082015290517f13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab809181900360800190a160009695505050505050565b60006150f6615340565b60008061510b670de0b6b3a764000087614740565b9092509050600082600381111561511e57fe5b1461513d57506040805160208101909152600081529092509050612448565b612fde818660000151613d60565b6000818484111561519d5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611061578181015183820152602001611049565b505050900390565b600061196283836040518060400160405280601781526020017f6d756c7469706c69636174696f6e206f766572666c6f7700000000000000000081525060008315806151ef575082155b156151fc57506000611962565b8383028385828161520957fe5b041483906147ff5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611061578181015183820152602001611049565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061529957805160ff19168380011785556152c6565b828001600101855582156152c6579182015b828111156152c65782518255916020019190600101906152ab565b5061183092915061544d565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106153135782800160ff198235161785556152c6565b828001600101855582156152c6579182015b828111156152c6578235825591602001919060010190615325565b6040518060200160405280600081525090565b6040805160e0810190915280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b604080516101208101909152806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040805161010081019091528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b604080516080810190915280600081526020016000815260200160008152602001600081525090565b61157291905b80821115611830576000815560010161545356fe6d61726b6574206d6179206f6e6c7920626520696e697469616c697a6564206f6e6365696e697469616c2065786368616e67652072617465206d7573742062652067726561746572207468616e207a65726f2e73657474696e6720696e7465726573742072617465206d6f64656c206661696c6564626f72726f7742616c616e636553746f7265643a20626f72726f7742616c616e636553746f726564496e7465726e616c206661696c656452455041595f424f52524f575f4e45575f4143434f554e545f424f52524f575f42414c414e43455f43414c43554c4154494f4e5f4641494c45446f6e6c7920467573652061646d696e206d617920696e697469616c697a6520746865206d61726b6574ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef52455041595f424f52524f575f4e45575f544f54414c5f42414c414e43455f43414c43554c4154494f4e5f4641494c45444c49515549444154455f434f4d5054524f4c4c45525f43414c43554c4154455f414d4f554e545f5345495a455f4641494c454465786368616e67655261746553746f7265643a2065786368616e67655261746553746f726564496e7465726e616c206661696c65646f6e65206f662072656465656d546f6b656e73496e206f722072656465656d416d6f756e74496e206d757374206265207a65726fa265627a7a72315820495d2965b5b42428fcdd896b218d98a575dd0f1ab07d0040b94e03288192092d64736f6c63430005110032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5698 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2FF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8F840DDD GT PUSH2 0x190 JUMPI DUP1 PUSH4 0xBD6D894D GT PUSH2 0xDC JUMPI DUP1 PUSH4 0xDD62ED3E GT PUSH2 0x95 JUMPI DUP1 PUSH4 0xF3FDB15A GT PUSH2 0x6F JUMPI DUP1 PUSH4 0xF3FDB15A EQ PUSH2 0xD88 JUMPI DUP1 PUSH4 0xF8F9DA28 EQ PUSH2 0xD9D JUMPI DUP1 PUSH4 0xFCA7820B EQ PUSH2 0xDB2 JUMPI DUP1 PUSH4 0xFE9C44AE EQ PUSH2 0xB9B JUMPI PUSH2 0x2FF JUMP JUMPDEST DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0xCF4 JUMPI DUP1 PUSH4 0xE5974619 EQ PUSH2 0xD2F JUMPI DUP1 PUSH4 0xF2B3ABBD EQ PUSH2 0xD55 JUMPI PUSH2 0x2FF JUMP JUMPDEST DUP1 PUSH4 0xBD6D894D EQ PUSH2 0xC08 JUMPI DUP1 PUSH4 0xC37F68E2 EQ PUSH2 0xC1D JUMPI DUP1 PUSH4 0xC5EBEAEC EQ PUSH2 0xC76 JUMPI DUP1 PUSH4 0xDB006A75 EQ PUSH2 0xCA0 JUMPI DUP1 PUSH4 0xDBFE7C19 EQ PUSH2 0xCCA JUMPI DUP1 PUSH4 0xDC028AB1 EQ PUSH2 0xCDF JUMPI PUSH2 0x2FF JUMP JUMPDEST DUP1 PUSH4 0xA7B820DF GT PUSH2 0x149 JUMPI DUP1 PUSH4 0xAAE40A2A GT PUSH2 0x123 JUMPI DUP1 PUSH4 0xAAE40A2A EQ PUSH2 0xB6D JUMPI DUP1 PUSH4 0xAC784DDC EQ PUSH2 0xB9B JUMPI DUP1 PUSH4 0xAE9D70B0 EQ PUSH2 0xBB0 JUMPI DUP1 PUSH4 0xB2A02FF1 EQ PUSH2 0xBC5 JUMPI PUSH2 0x2FF JUMP JUMPDEST DUP1 PUSH4 0xA7B820DF EQ PUSH2 0xAF5 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0xB1F JUMPI DUP1 PUSH4 0xAA5AF0FD EQ PUSH2 0xB58 JUMPI PUSH2 0x2FF JUMP JUMPDEST DUP1 PUSH4 0x8F840DDD EQ PUSH2 0xA2F JUMPI DUP1 PUSH4 0x91DD36C6 EQ PUSH2 0xA44 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0xA6E JUMPI DUP1 PUSH4 0x95DD9193 EQ PUSH2 0xA83 JUMPI DUP1 PUSH4 0xA03DCE8D EQ PUSH2 0xAB6 JUMPI DUP1 PUSH4 0xA6AFED95 EQ PUSH2 0xAE0 JUMPI PUSH2 0x2FF JUMP JUMPDEST DUP1 PUSH4 0x47BD3718 GT PUSH2 0x24F JUMPI DUP1 PUSH4 0x6C540BAF GT PUSH2 0x208 JUMPI DUP1 PUSH4 0x73ACEE98 GT PUSH2 0x1E2 JUMPI DUP1 PUSH4 0x73ACEE98 EQ PUSH2 0x887 JUMPI DUP1 PUSH4 0x79C2C954 EQ PUSH2 0x89C JUMPI DUP1 PUSH4 0x852A12E3 EQ PUSH2 0x9F0 JUMPI DUP1 PUSH4 0x8D02D9A1 EQ PUSH2 0xA1A JUMPI PUSH2 0x2FF JUMP JUMPDEST DUP1 PUSH4 0x6C540BAF EQ PUSH2 0x82A JUMPI DUP1 PUSH4 0x6F307DC3 EQ PUSH2 0x83F JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x854 JUMPI PUSH2 0x2FF JUMP JUMPDEST DUP1 PUSH4 0x47BD3718 EQ PUSH2 0x788 JUMPI DUP1 PUSH4 0x4E4D9FEA EQ PUSH2 0x79D JUMPI DUP1 PUSH4 0x5FE3B567 EQ PUSH2 0x7A5 JUMPI DUP1 PUSH4 0x601A0BF1 EQ PUSH2 0x7D6 JUMPI DUP1 PUSH4 0x61FEACFF EQ PUSH2 0x800 JUMPI DUP1 PUSH4 0x6752E702 EQ PUSH2 0x815 JUMPI PUSH2 0x2FF JUMP JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0x2BC JUMPI DUP1 PUSH4 0x313CE567 GT PUSH2 0x296 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x64A JUMPI DUP1 PUSH4 0x34154D4C EQ PUSH2 0x675 JUMPI DUP1 PUSH4 0x3AF9E669 EQ PUSH2 0x740 JUMPI DUP1 PUSH4 0x3B1D21A2 EQ PUSH2 0x773 JUMPI PUSH2 0x2FF JUMP JUMPDEST DUP1 PUSH4 0x18160DDD EQ PUSH2 0x5DD JUMPI DUP1 PUSH4 0x182DF0F5 EQ PUSH2 0x5F2 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x607 JUMPI PUSH2 0x2FF JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x33D JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x3C7 JUMPI DUP1 PUSH4 0xF8855E8 EQ PUSH2 0x414 JUMPI DUP1 PUSH4 0x1249C58B EQ PUSH2 0x57B JUMPI DUP1 PUSH4 0x173B9904 EQ PUSH2 0x583 JUMPI DUP1 PUSH4 0x17BFDFBC EQ PUSH2 0x5AA JUMPI JUMPDEST PUSH1 0x0 PUSH2 0x30A CALLVALUE PUSH2 0xDDC JUMP JUMPDEST POP SWAP1 POP PUSH2 0x33A DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xB DUP2 MSTORE PUSH1 0x20 ADD PUSH11 0x1B5A5B9D0819985A5B1959 PUSH1 0xAA SHL DUP2 MSTORE POP PUSH2 0xE3E JUMP JUMPDEST POP STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x349 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x352 PUSH2 0x10A4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x38C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x374 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x3B9 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x400 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1131 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x420 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x579 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x438 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x472 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x484 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x4A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x4F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x509 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x52A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP POP PUSH1 0xFF DUP4 CALLDATALOAD AND SWAP4 POP POP POP PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x119E JUMP JUMPDEST STOP JUMPDEST PUSH2 0x579 PUSH2 0x144C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x58F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x598 PUSH2 0x148A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x598 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1490 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x598 PUSH2 0x150C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x598 PUSH2 0x1512 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x613 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x400 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x62A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x1575 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x656 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x65F PUSH2 0x15A3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x681 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x579 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x698 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x6B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x6C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x6E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x702 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x714 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x735 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x15AC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x74C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x598 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x763 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1611 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x77F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x598 PUSH2 0x16C9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x794 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x598 PUSH2 0x16D8 JUMP JUMPDEST PUSH2 0x579 PUSH2 0x16DE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7BA PUSH2 0x1720 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x598 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x172F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x80C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x598 PUSH2 0x1780 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x821 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x598 PUSH2 0x1786 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x836 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x598 PUSH2 0x1791 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x84B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7BA PUSH2 0x1797 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x860 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x598 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x877 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x17A6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x893 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x598 PUSH2 0x17C1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x579 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x8BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x8F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x904 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x925 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x977 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x989 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x9AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP POP DUP3 CALLDATALOAD SWAP4 POP POP POP PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1834 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x598 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA13 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1859 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA26 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x598 PUSH2 0x1864 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA3B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x598 PUSH2 0x186A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA50 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x598 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1870 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA7A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x352 PUSH2 0x18AD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA8F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x598 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAA6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1905 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAC2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x598 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAD9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1969 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAEC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x598 PUSH2 0x19A6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB01 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x598 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB18 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1B6B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB2B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x400 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xB42 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1BA8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB64 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x598 PUSH2 0x1BD5 JUMP JUMPDEST PUSH2 0x579 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xB83 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x1BDB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBA7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x400 PUSH2 0x1C28 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBBC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x598 PUSH2 0x1C2D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBD1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x598 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xBE8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x1CE5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x598 PUSH2 0x1D09 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC29 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC50 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC40 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1D7D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP5 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP4 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x598 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC99 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1E12 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCAC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x598 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xCC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1E1D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCD6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x598 PUSH2 0x1E28 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x598 PUSH2 0x1E2E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD00 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x598 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xD17 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x1E34 JUMP JUMPDEST PUSH2 0x579 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD45 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1E5F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD61 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x598 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD78 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1EAD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD94 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7BA PUSH2 0x1EE7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xDA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x598 PUSH2 0x1EF6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xDBE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x598 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xDD5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1F6B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xDEA DUP2 PUSH2 0x1FA8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDF4 PUSH2 0x19A6 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0xE1F JUMPI PUSH2 0xE12 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0xE0B JUMPI INVALID JUMPDEST PUSH1 0x20 PUSH2 0x2064 JUMP JUMPDEST SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0xE2F SWAP1 POP JUMP JUMPDEST PUSH2 0xE29 CALLER DUP7 PUSH2 0x20CA JUMP JUMPDEST SWAP4 POP SWAP4 POP POP JUMPDEST PUSH2 0xE38 DUP2 PUSH2 0x244F JUMP JUMPDEST POP SWAP2 POP SWAP2 JUMP JUMPDEST DUP2 PUSH2 0xE48 JUMPI PUSH2 0x10A0 JUMP JUMPDEST PUSH1 0x60 DUP2 MLOAD PUSH1 0x7 ADD PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xE79 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0xECA JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0xE94 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD MLOAD PUSH1 0xF8 SHR PUSH1 0xF8 SHL DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xEAB JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x1 ADD PUSH2 0xE7F JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0xFD SHL SWAP1 DUP4 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0xEDE JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x28 PUSH1 0xF8 SHL DUP3 DUP3 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0xF09 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH2 0x3E8 DUP5 DIV PUSH1 0x30 ADD PUSH1 0xF8 SHL DUP3 DUP3 PUSH1 0x2 ADD DUP2 MLOAD DUP2 LT PUSH2 0xF3A JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0xA PUSH1 0x64 DUP6 DIV MOD PUSH1 0x30 ADD PUSH1 0xF8 SHL DUP3 DUP3 PUSH1 0x3 ADD DUP2 MLOAD DUP2 LT PUSH2 0xF6D JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0xA DUP1 DUP6 DIV MOD PUSH1 0x30 ADD PUSH1 0xF8 SHL DUP3 DUP3 PUSH1 0x4 ADD DUP2 MLOAD DUP2 LT PUSH2 0xF9F JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0xA DUP5 MOD PUSH1 0x30 ADD PUSH1 0xF8 SHL DUP3 DUP3 PUSH1 0x5 ADD DUP2 MLOAD DUP2 LT PUSH2 0xFCF JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x29 PUSH1 0xF8 SHL DUP3 DUP3 PUSH1 0x6 ADD DUP2 MLOAD DUP2 LT PUSH2 0xFFA JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP DUP2 DUP5 ISZERO PUSH2 0x109C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1061 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1049 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x108E JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 DUP5 DUP7 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x1129 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x10FE JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1129 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x110C JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP7 SWAP1 SSTORE DUP2 MLOAD DUP7 DUP2 MSTORE SWAP2 MLOAD SWAP4 SWAP5 SWAP4 SWAP1 SWAP3 DUP5 SWAP3 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST CALLER PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 EQ PUSH2 0x11F0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x554E PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xA SLOAD ISZERO DUP1 ISZERO PUSH2 0x1200 JUMPI POP PUSH1 0xB SLOAD ISZERO JUMPDEST PUSH2 0x123B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5468 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP7 SWAP1 SSTORE DUP6 PUSH2 0x127C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x30 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x548B PUSH1 0x30 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1287 DUP10 PUSH2 0x24BE JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x12DC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x73657474696E6720636F6D7074726F6C6C6572206661696C6564000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x12E4 PUSH2 0x25E3 JUMP JUMPDEST PUSH1 0xA SSTORE PUSH8 0xDE0B6B3A7640000 PUSH1 0xB SSTORE PUSH2 0x12FC DUP9 PUSH2 0x25E7 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x133B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x54BB PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP6 MLOAD PUSH2 0x134E SWAP1 PUSH1 0x1 SWAP1 PUSH1 0x20 DUP10 ADD SWAP1 PUSH2 0x5258 JUMP JUMPDEST POP DUP5 MLOAD PUSH2 0x1362 SWAP1 PUSH1 0x2 SWAP1 PUSH1 0x20 DUP9 ADD SWAP1 PUSH2 0x5258 JUMP JUMPDEST POP PUSH1 0x3 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF DUP7 AND OR SWAP1 SSTORE PUSH2 0x137B DUP4 PUSH2 0x28ED JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x13D0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x73657474696E67207265736572766520666163746F72206661696C6564000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x13D9 DUP3 PUSH2 0x29A6 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x142E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x73657474696E672061646D696E20666565206661696C65640000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xB0 SHL NOT AND PUSH1 0x1 PUSH1 0xB0 SHL OR SWAP1 SSTORE POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1457 CALLVALUE PUSH2 0xDDC JUMP JUMPDEST POP SWAP1 POP PUSH2 0x1487 DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xB DUP2 MSTORE PUSH1 0x20 ADD PUSH11 0x1B5A5B9D0819985A5B1959 PUSH1 0xAA SHL DUP2 MSTORE POP PUSH2 0xE3E JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x149C DUP2 PUSH2 0x1FA8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14A6 PUSH2 0x19A6 JUMP JUMPDEST EQ PUSH2 0x14F1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x1858D8DC9D59481A5B9D195C995CDD0819985A5B1959 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x14FA DUP4 PUSH2 0x1905 JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH2 0x1506 DUP2 PUSH2 0x244F JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x10 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x151F PUSH2 0x2ACB JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1532 JUMPI INVALID JUMPDEST EQ PUSH2 0x156E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x35 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x55FB PUSH1 0x35 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP2 POP POP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1581 DUP2 PUSH2 0x1FA8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x158F CALLER DUP8 DUP8 DUP8 PUSH2 0x2B8B JUMP JUMPDEST EQ SWAP2 POP PUSH2 0x159B DUP2 PUSH2 0x244F JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x15B4 PUSH2 0x2E1F JUMP JUMPDEST PUSH2 0x15F8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x31B0B63632B9103737BA1030B236B4B7 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1604 PUSH1 0x1 DUP6 DUP6 PUSH2 0x52D2 JUMP JUMPDEST POP PUSH2 0x109C PUSH1 0x2 DUP4 DUP4 PUSH2 0x52D2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x161B PUSH2 0x5340 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x162E PUSH2 0x1D09 JUMP JUMPDEST SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP SWAP1 DUP2 SWAP1 PUSH2 0x165A SWAP1 DUP5 SWAP1 PUSH2 0x2F98 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x166D JUMPI INVALID JUMPDEST EQ PUSH2 0x16BF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x62616C616E636520636F756C64206E6F742062652063616C63756C6174656400 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x16D3 PUSH2 0x2FEB JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0xC SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x16E9 CALLVALUE PUSH2 0x3017 JUMP JUMPDEST POP SWAP1 POP PUSH2 0x1487 DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x12 DUP2 MSTORE PUSH1 0x20 ADD PUSH18 0x1C995C185E509BDC9C9BDDC819985A5B1959 PUSH1 0x72 SHL DUP2 MSTORE POP PUSH2 0xE3E JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x173B DUP2 PUSH2 0x1FA8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1745 PUSH2 0x19A6 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x176B JUMPI PUSH2 0x1763 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x175C JUMPI INVALID JUMPDEST PUSH1 0x3B PUSH2 0x2064 JUMP JUMPDEST SWAP3 POP POP PUSH2 0x14FD JUMP JUMPDEST PUSH2 0x1774 DUP5 PUSH2 0x3058 JUMP JUMPDEST SWAP3 POP POP PUSH2 0x1506 DUP2 PUSH2 0x244F JUMP JUMPDEST PUSH1 0xE SLOAD DUP2 JUMP JUMPDEST PUSH7 0x6379DA05B60000 DUP2 JUMP JUMPDEST PUSH1 0xA SLOAD DUP2 JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x17CD DUP2 PUSH2 0x1FA8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x17D7 PUSH2 0x19A6 JUMP JUMPDEST EQ PUSH2 0x1822 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x1858D8DC9D59481A5B9D195C995CDD0819985A5B1959 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0xC SLOAD SWAP2 POP PUSH2 0x1830 DUP2 PUSH2 0x244F JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH8 0x2C68AF0BB140000 PUSH1 0x12 PUSH2 0x184F DUP9 DUP9 DUP5 DUP10 DUP10 DUP7 DUP11 DUP11 PUSH2 0x119E JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1198 DUP3 PUSH2 0x3124 JUMP JUMPDEST PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xD SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x187C DUP2 PUSH2 0x1FA8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1886 PUSH2 0x19A6 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x18A4 JUMPI PUSH2 0x1763 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x189D JUMPI INVALID JUMPDEST PUSH1 0x52 PUSH2 0x2064 JUMP JUMPDEST PUSH2 0x1774 DUP5 PUSH2 0x29A6 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP4 AND DUP5 SWAP1 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x1129 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x10FE JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1129 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1913 DUP5 PUSH2 0x3164 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1926 JUMPI INVALID JUMPDEST EQ PUSH2 0x1962 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x37 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x54DD PUSH1 0x37 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1975 DUP2 PUSH2 0x1FA8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x197F PUSH2 0x19A6 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x199D JUMPI PUSH2 0x1763 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x1996 JUMPI INVALID JUMPDEST PUSH1 0x33 PUSH2 0x2064 JUMP JUMPDEST PUSH2 0x1774 DUP5 PUSH2 0x3218 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x19B1 PUSH2 0x25E3 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0xA SLOAD EQ ISZERO PUSH2 0x19C7 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x1572 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x19D1 PUSH2 0x2FEB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x5 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 PUSH4 0x15F24053 DUP4 PUSH1 0xC SLOAD PUSH2 0x1A16 PUSH1 0xD SLOAD PUSH2 0x1A11 PUSH1 0xE SLOAD PUSH1 0xF SLOAD PUSH2 0x3299 JUMP JUMPDEST PUSH2 0x3299 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1A58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1A6C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1A82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH6 0x48C27395000 DUP2 GT ISZERO PUSH2 0x1AE1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x626F72726F772072617465206973206162737572646C79206869676800000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1AF0 DUP6 PUSH1 0xA SLOAD PUSH2 0x32CF JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1B03 JUMPI INVALID JUMPDEST EQ PUSH2 0x1B55 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x636F756C64206E6F742063616C63756C61746520626C6F636B2064656C746100 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1B61 DUP6 DUP6 DUP6 DUP5 PUSH2 0x32F2 JUMP JUMPDEST SWAP6 POP POP POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1B77 DUP2 PUSH2 0x1FA8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B81 PUSH2 0x19A6 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1B9F JUMPI PUSH2 0x1763 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x1B98 JUMPI INVALID JUMPDEST PUSH1 0x37 PUSH2 0x2064 JUMP JUMPDEST PUSH2 0x1774 DUP5 PUSH2 0x350A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1BB4 DUP2 PUSH2 0x1FA8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1BC2 CALLER CALLER DUP8 DUP8 PUSH2 0x2B8B JUMP JUMPDEST EQ SWAP2 POP PUSH2 0x1BCE DUP2 PUSH2 0x244F JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1BE8 DUP4 CALLVALUE DUP5 PUSH2 0x35E6 JUMP JUMPDEST POP SWAP1 POP PUSH2 0x1C23 DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x16 DUP2 MSTORE PUSH1 0x20 ADD PUSH22 0x1B1A5C5D5A59185D19509BDC9C9BDDC819985A5B1959 PUSH1 0x52 SHL DUP2 MSTORE POP PUSH2 0xE3E JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xB8168816 PUSH2 0x1C49 PUSH2 0x2FEB JUMP JUMPDEST PUSH1 0xC SLOAD PUSH2 0x1C60 PUSH1 0xD SLOAD PUSH2 0x1A11 PUSH1 0xE SLOAD PUSH1 0xF SLOAD PUSH2 0x3299 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x8 SLOAD PUSH1 0x9 SLOAD ADD ADD PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1CB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1CC8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1CDE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH2 0x1CF2 DUP2 PUSH2 0x1FA8 JUMP JUMPDEST PUSH2 0x1CFE CALLER DUP7 DUP7 DUP7 PUSH2 0x36D2 JUMP JUMPDEST SWAP2 POP PUSH2 0x159B DUP2 PUSH2 0x244F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1D15 DUP2 PUSH2 0x1FA8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D1F PUSH2 0x19A6 JUMP JUMPDEST EQ PUSH2 0x1D6A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x1858D8DC9D59481A5B9D195C995CDD0819985A5B1959 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1D72 PUSH2 0x1512 JUMP JUMPDEST SWAP2 POP PUSH2 0x1830 DUP2 PUSH2 0x244F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP2 SWAP1 DUP2 SWAP1 DUP2 SWAP1 DUP2 DUP1 DUP1 PUSH2 0x1DA8 DUP10 PUSH2 0x3164 JUMP JUMPDEST SWAP4 POP SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1DBA JUMPI INVALID JUMPDEST EQ PUSH2 0x1DD8 JUMPI PUSH1 0x9 JUMPDEST SWAP8 POP PUSH1 0x0 SWAP7 POP DUP7 SWAP6 POP DUP6 SWAP5 POP PUSH2 0x1E0B SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x1DE0 PUSH2 0x2ACB JUMP JUMPDEST SWAP3 POP SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1DF2 JUMPI INVALID JUMPDEST EQ PUSH2 0x1DFE JUMPI PUSH1 0x9 PUSH2 0x1DC2 JUMP JUMPDEST POP PUSH1 0x0 SWAP7 POP SWAP2 SWAP5 POP SWAP3 POP SWAP1 POP JUMPDEST SWAP2 SWAP4 POP SWAP2 SWAP4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1198 DUP3 PUSH2 0x3AB2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1198 DUP3 PUSH2 0x3AF0 JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xF SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E6B DUP3 CALLVALUE PUSH2 0x3B29 JUMP JUMPDEST POP SWAP1 POP PUSH2 0x10A0 DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x18 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x7265706179426F72726F77426568616C66206661696C65640000000000000000 DUP2 MSTORE POP PUSH2 0xE3E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1EB8 PUSH2 0x19A6 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1EDE JUMPI PUSH2 0x1ED6 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x1ECF JUMPI INVALID JUMPDEST PUSH1 0x4B PUSH2 0x2064 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x16C4 JUMP JUMPDEST PUSH2 0x1962 DUP4 PUSH2 0x25E7 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x15F24053 PUSH2 0x1F12 PUSH2 0x2FEB JUMP JUMPDEST PUSH1 0xC SLOAD PUSH2 0x1F29 PUSH1 0xD SLOAD PUSH2 0x1A11 PUSH1 0xE SLOAD PUSH1 0xF SLOAD PUSH2 0x3299 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1CB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1F77 DUP2 PUSH2 0x1FA8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F81 PUSH2 0x19A6 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1F9F JUMPI PUSH2 0x1763 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x1F98 JUMPI INVALID JUMPDEST PUSH1 0x59 PUSH2 0x2064 JUMP JUMPDEST PUSH2 0x1774 DUP5 PUSH2 0x28ED JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xB0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1FF3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xA PUSH1 0x24 DUP3 ADD MSTORE PUSH10 0x1C994B595B9D195C9959 PUSH1 0xB2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x2054 JUMPI PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xC90C20B1 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP3 PUSH4 0xC90C20B1 SWAP3 DUP3 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x203B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x204F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xB0 SHL NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH32 0x45B96FE442630264581B197E84BBADA861235052C5A1AADFFF9EA4E40A969AA0 DUP4 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x2093 JUMPI INVALID JUMPDEST DUP4 PUSH1 0x63 DUP2 GT ISZERO PUSH2 0x209F JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 DUP3 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x1962 JUMPI INVALID JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x4EF4C3E1 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x24 DUP6 ADD MSTORE PUSH1 0x44 DUP5 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 DUP5 SWAP4 AND SWAP2 PUSH4 0x4EF4C3E1 SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x212D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2141 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2157 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x217B JUMPI PUSH2 0x216E PUSH1 0x3 PUSH1 0x21 DUP4 PUSH2 0x3B8E JUMP JUMPDEST SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH2 0x2448 SWAP1 POP JUMP JUMPDEST PUSH2 0x2183 PUSH2 0x25E3 JUMP JUMPDEST PUSH1 0xA SLOAD EQ PUSH2 0x2197 JUMPI PUSH2 0x216E PUSH1 0xA PUSH1 0x24 PUSH2 0x2064 JUMP JUMPDEST PUSH2 0x219F PUSH2 0x5353 JUMP JUMPDEST PUSH2 0x21A7 PUSH2 0x2ACB JUMP JUMPDEST PUSH1 0x40 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x21BE JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x21C9 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x21E0 JUMPI INVALID JUMPDEST EQ PUSH2 0x220F JUMPI PUSH2 0x2201 PUSH1 0x9 PUSH1 0x23 DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x21FC JUMPI INVALID JUMPDEST PUSH2 0x3B8E JUMP JUMPDEST SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x2448 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2219 DUP7 DUP7 PUSH2 0x3C17 JUMP JUMPDEST PUSH1 0xC0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD DUP3 MSTORE SWAP1 DUP4 ADD MLOAD DUP2 MSTORE PUSH2 0x223A SWAP2 SWAP1 PUSH2 0x3CAD JUMP JUMPDEST PUSH1 0x60 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2251 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x225C JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2273 JUMPI INVALID JUMPDEST EQ PUSH2 0x22C5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D494E545F45584348414E47455F43414C43554C4154494F4E5F4641494C4544 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x22D5 PUSH1 0x10 SLOAD DUP3 PUSH1 0x60 ADD MLOAD PUSH2 0x3299 JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x2302 SWAP2 SWAP1 PUSH2 0x3299 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MLOAD PUSH1 0x10 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0xC0 DUP5 ADD MLOAD PUSH1 0x60 DUP1 DUP7 ADD MLOAD DUP4 MLOAD SWAP5 DUP6 MSTORE SWAP5 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE MLOAD PUSH32 0x4C209B5FC8AD50758F13E2E1088BA56A560DFF690A1C6FEF26394F4C03821C4F SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 ADDRESS SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5577 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 PUSH1 0x4 DUP1 SLOAD PUSH1 0xC0 DUP4 ADD MLOAD PUSH1 0x60 DUP5 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x41C728B9 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS SWAP6 DUP2 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND PUSH1 0x24 DUP8 ADD MSTORE PUSH1 0x44 DUP7 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x64 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE MLOAD SWAP2 AND SWAP2 PUSH4 0x41C728B9 SWAP2 PUSH1 0x84 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x241B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x242F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x0 SWAP3 POP PUSH2 0x243C SWAP2 POP POP JUMP JUMPDEST DUP2 PUSH1 0xC0 ADD MLOAD SWAP4 POP SWAP4 POP POP POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xB0 SHL NOT AND PUSH1 0x1 PUSH1 0xB0 SHL OR SWAP1 SSTORE DUP1 PUSH2 0x1487 JUMPI PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x319728A1 PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP3 PUSH4 0x632E5142 SWAP3 DUP3 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x24AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x109C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH3 0x3F1EE9 PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND SWAP4 DUP7 AND SWAP3 PUSH3 0x7E3DD2 SWAP3 DUP2 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2503 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2517 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x252D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x2580 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6D61726B6572206D6574686F642072657475726E65642066616C736500000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP3 DUP5 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD PUSH32 0x7AC369DBD14FA5EA3F473ED67CC9D598964A77501540BA6751EB0B3DECF5870D SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x0 PUSH2 0x1962 JUMP JUMPDEST NUMBER SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x25F2 PUSH2 0x2E1F JUMP JUMPDEST PUSH2 0x2602 JUMPI PUSH2 0x1ED6 PUSH1 0x1 PUSH1 0x4D PUSH2 0x2064 JUMP JUMPDEST PUSH2 0x260A PUSH2 0x25E3 JUMP JUMPDEST PUSH1 0xA SLOAD EQ PUSH2 0x261E JUMPI PUSH2 0x1ED6 PUSH1 0xA PUSH1 0x4C PUSH2 0x2064 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x2191F92A 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 0x266F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2683 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2699 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x26EC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6D61726B6572206D6574686F642072657475726E65642066616C736500000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP3 DUP5 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD PUSH32 0xEDFFC32E068C7C95DFD4BDFD5C4D939A084D6B11C4199EAC8436ED234D72F926 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0x281E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x6CC1140B PUSH1 0xE1 SHL OR DUP2 MSTORE SWAP2 MLOAD DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP4 DUP3 SWAP2 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x27B3 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x2794 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2815 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 0x281A JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP POP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x742A137B PUSH1 0xE1 SHL OR DUP2 MSTORE SWAP2 MLOAD DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP4 DUP3 SWAP2 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x287A JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x285B JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x28DC 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 0x28E1 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP PUSH1 0x0 SWAP2 POP PUSH2 0x1962 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x28F7 PUSH2 0x2E1F JUMP JUMPDEST PUSH2 0x290E JUMPI PUSH2 0x2907 PUSH1 0x1 PUSH1 0x5A PUSH2 0x2064 JUMP JUMPDEST SWAP1 POP PUSH2 0x16C4 JUMP JUMPDEST PUSH2 0x2916 PUSH2 0x25E3 JUMP JUMPDEST PUSH1 0xA SLOAD EQ PUSH2 0x292A JUMPI PUSH2 0x2907 PUSH1 0xA PUSH1 0x5B PUSH2 0x2064 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH2 0x294A PUSH2 0x2942 DUP5 PUSH1 0x7 SLOAD PUSH2 0x3299 JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH2 0x3299 JUMP JUMPDEST GT ISZERO PUSH2 0x295C JUMPI PUSH2 0x2907 PUSH1 0x2 PUSH1 0x5C PUSH2 0x2064 JUMP JUMPDEST PUSH1 0x9 DUP1 SLOAD SWAP1 DUP4 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP6 SWAP1 MSTORE DUP2 MLOAD PUSH32 0xAAA68312E2EA9D50E16AF5068410AB56E1A1FD06037B1A35664812C30F821460 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x0 PUSH2 0x1962 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x29B0 PUSH2 0x25E3 JUMP JUMPDEST PUSH1 0xA SLOAD EQ PUSH2 0x29C4 JUMPI PUSH2 0x2907 PUSH1 0xA PUSH1 0x54 PUSH2 0x2064 JUMP JUMPDEST PUSH1 0x0 NOT DUP3 EQ ISZERO PUSH2 0x29D4 JUMPI PUSH1 0x7 SLOAD SWAP2 POP JUMPDEST PUSH1 0x0 PUSH2 0x29DE PUSH2 0x3CC4 JUMP JUMPDEST SWAP1 POP PUSH8 0xDE0B6B3A7640000 PUSH2 0x29FE PUSH2 0x29F8 PUSH1 0x9 SLOAD DUP7 PUSH2 0x3299 JUMP JUMPDEST DUP4 PUSH2 0x3299 JUMP JUMPDEST GT ISZERO PUSH2 0x2A10 JUMPI PUSH2 0x1ED6 PUSH1 0x2 PUSH1 0x55 PUSH2 0x2064 JUMP JUMPDEST DUP3 PUSH1 0x7 SLOAD EQ PUSH2 0x2A76 JUMPI PUSH2 0x2A21 PUSH2 0x2E1F JUMP JUMPDEST PUSH2 0x2A31 JUMPI PUSH2 0x1ED6 PUSH1 0x1 PUSH1 0x53 PUSH2 0x2064 JUMP JUMPDEST PUSH1 0x7 DUP1 SLOAD SWAP1 DUP5 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP7 SWAP1 MSTORE DUP2 MLOAD PUSH32 0xCDD0B588250E1398549F79CFDB8217C186688822905D6715B0834EA1C865594A SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMPDEST DUP1 PUSH1 0x8 SLOAD EQ PUSH2 0x2AC4 JUMPI PUSH1 0x8 DUP1 SLOAD SWAP1 DUP3 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP2 MLOAD PUSH32 0x92EEF861B6533B7D3417F39C2AD7B460EED4E88A32FA3604F30E718B7602E7DC SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMPDEST PUSH1 0x0 PUSH2 0x1962 JUMP JUMPDEST PUSH1 0x10 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP1 PUSH2 0x2AE6 JUMPI POP POP PUSH1 0x6 SLOAD PUSH1 0x0 SWAP2 POP PUSH2 0x2B87 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2AF0 PUSH2 0x2FEB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2AFC PUSH2 0x5340 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2B1E DUP5 PUSH1 0xC SLOAD PUSH2 0x2B19 PUSH1 0xD SLOAD PUSH2 0x1A11 PUSH1 0xE SLOAD PUSH1 0xF SLOAD PUSH2 0x3299 JUMP JUMPDEST PUSH2 0x3D13 JUMP JUMPDEST SWAP4 POP SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2B30 JUMPI INVALID JUMPDEST EQ PUSH2 0x2B45 JUMPI SWAP6 POP PUSH1 0x0 SWAP5 POP PUSH2 0x2B87 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x2B4F DUP4 DUP7 PUSH2 0x3D60 JUMP JUMPDEST SWAP3 POP SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2B61 JUMPI INVALID JUMPDEST EQ PUSH2 0x2B76 JUMPI SWAP6 POP PUSH1 0x0 SWAP5 POP PUSH2 0x2B87 SWAP4 POP POP POP POP JUMP JUMPDEST POP MLOAD PUSH1 0x0 SWAP6 POP SWAP4 POP PUSH2 0x2B87 SWAP3 POP POP POP JUMP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x17B9B84B PUSH1 0xE3 SHL DUP2 MSTORE ADDRESS SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x24 DUP6 ADD MSTORE DUP6 DUP2 AND PUSH1 0x44 DUP6 ADD MSTORE PUSH1 0x64 DUP5 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 SWAP3 SWAP1 SWAP3 AND SWAP2 PUSH4 0xBDCDC258 SWAP2 PUSH1 0x84 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2BF6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2C0A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2C20 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x2C3F JUMPI PUSH2 0x2C37 PUSH1 0x3 PUSH1 0x5D DUP4 PUSH2 0x3B8E JUMP JUMPDEST SWAP2 POP POP PUSH2 0x2E17 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x2C65 JUMPI PUSH2 0x2C37 PUSH1 0x2 PUSH1 0x5E PUSH2 0x2064 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND SWAP1 DUP8 AND EQ ISZERO PUSH2 0x2C84 JUMPI POP PUSH1 0x0 NOT PUSH2 0x2CAC JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP11 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x2CBC DUP6 DUP10 PUSH2 0x32CF JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP PUSH1 0x0 DUP5 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2CCF JUMPI INVALID JUMPDEST EQ PUSH2 0x2CED JUMPI PUSH2 0x2CE0 PUSH1 0x9 PUSH1 0x5E PUSH2 0x2064 JUMP JUMPDEST SWAP7 POP POP POP POP POP POP POP PUSH2 0x2E17 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2D10 SWAP1 DUP10 PUSH2 0x32CF JUMP JUMPDEST SWAP1 SWAP5 POP SWAP2 POP PUSH1 0x0 DUP5 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2D23 JUMPI INVALID JUMPDEST EQ PUSH2 0x2D34 JUMPI PUSH2 0x2CE0 PUSH1 0x9 PUSH1 0x5F PUSH2 0x2064 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2D57 SWAP1 DUP10 PUSH2 0x3E10 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP1 POP PUSH1 0x0 DUP5 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2D6A JUMPI INVALID JUMPDEST EQ PUSH2 0x2D7B JUMPI PUSH2 0x2CE0 PUSH1 0x9 PUSH1 0x60 PUSH2 0x2064 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP6 SWAP1 SSTORE SWAP2 DUP12 AND DUP2 MSTORE KECCAK256 DUP2 SWAP1 SSTORE PUSH1 0x0 NOT DUP6 EQ PUSH2 0x2DD3 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP16 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP4 SWAP1 SSTORE JUMPDEST DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5577 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP11 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x0 SWAP7 POP POP POP POP POP POP POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x3E14691 PUSH1 0xE6 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND SWAP3 DUP4 SWAP3 PUSH4 0xF851A440 SWAP3 DUP2 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2E65 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2E79 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2E8F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ DUP1 ISZERO PUSH2 0x2F09 JUMPI POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA755EC2 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 0x2EDC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2EF0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2F06 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST DUP1 PUSH2 0x156E JUMPI POP CALLER PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 EQ DUP1 ISZERO PUSH2 0x156E JUMPI POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x2F1069BA 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 0x2F66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2F7A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2F90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x2FA5 PUSH2 0x5340 JUMP JUMPDEST PUSH2 0x2FAF DUP7 DUP7 PUSH2 0x3E36 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2FC2 JUMPI INVALID JUMPDEST EQ PUSH2 0x2FD3 JUMPI POP SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH2 0x2448 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2FDE DUP3 PUSH2 0x3E9E JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x2FFA SELFBALANCE CALLVALUE PUSH2 0x32CF JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x300D JUMPI INVALID JUMPDEST EQ PUSH2 0x156E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x3025 DUP2 PUSH2 0x1FA8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x302F PUSH2 0x19A6 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x304D JUMPI PUSH2 0xE12 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x3046 JUMPI INVALID JUMPDEST PUSH1 0x41 PUSH2 0x2064 JUMP JUMPDEST PUSH2 0xE29 CALLER CALLER DUP8 PUSH2 0x3EAD JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3063 PUSH2 0x2E1F JUMP JUMPDEST PUSH2 0x3073 JUMPI PUSH2 0x1ED6 PUSH1 0x1 PUSH1 0x3C PUSH2 0x2064 JUMP JUMPDEST PUSH2 0x307B PUSH2 0x25E3 JUMP JUMPDEST PUSH1 0xA SLOAD EQ PUSH2 0x308F JUMPI PUSH2 0x1ED6 PUSH1 0xA PUSH1 0x3E PUSH2 0x2064 JUMP JUMPDEST DUP3 PUSH2 0x3098 PUSH2 0x2FEB JUMP JUMPDEST LT ISZERO PUSH2 0x30AA JUMPI PUSH2 0x1ED6 PUSH1 0xE PUSH1 0x3D PUSH2 0x2064 JUMP JUMPDEST PUSH1 0xD SLOAD DUP4 GT ISZERO PUSH2 0x30C0 JUMPI PUSH2 0x1ED6 PUSH1 0x2 PUSH1 0x3F PUSH2 0x2064 JUMP JUMPDEST PUSH2 0x30CC PUSH1 0xD SLOAD DUP5 PUSH2 0x41FD JUMP JUMPDEST PUSH1 0xD DUP2 SWAP1 SSTORE SWAP1 POP PUSH2 0x30DD CALLER DUP5 PUSH2 0x4237 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP6 SWAP1 MSTORE DUP1 DUP3 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD PUSH32 0x3BAD0C59CF2F06E7314077049F48A93578CD16F5EF92329F1DAB1420A99C177E SWAP2 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 PUSH1 0x0 PUSH2 0x1962 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3130 DUP2 PUSH2 0x1FA8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x313A PUSH2 0x19A6 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x3158 JUMPI PUSH2 0x1763 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x3151 JUMPI INVALID JUMPDEST PUSH1 0x2A PUSH2 0x2064 JUMP JUMPDEST PUSH2 0x1774 CALLER PUSH1 0x0 DUP7 PUSH2 0x426D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 PUSH2 0x319B JUMPI POP PUSH1 0x0 SWAP5 POP DUP5 SWAP4 POP PUSH2 0x3213 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x31AB DUP2 PUSH1 0x0 ADD SLOAD PUSH1 0xB SLOAD PUSH2 0x4740 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP PUSH1 0x0 DUP5 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x31BE JUMPI INVALID JUMPDEST EQ PUSH2 0x31D3 JUMPI POP SWAP2 SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x3213 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x31E1 DUP4 DUP3 PUSH1 0x1 ADD SLOAD PUSH2 0x477F JUMP JUMPDEST SWAP1 SWAP5 POP SWAP2 POP PUSH1 0x0 DUP5 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x31F4 JUMPI INVALID JUMPDEST EQ PUSH2 0x3209 JUMPI POP SWAP2 SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x3213 SWAP2 POP POP JUMP JUMPDEST POP PUSH1 0x0 SWAP5 POP SWAP3 POP POP POP JUMPDEST SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3223 PUSH2 0x25E3 JUMP JUMPDEST PUSH1 0xA SLOAD EQ PUSH2 0x3237 JUMPI PUSH2 0x1ED6 PUSH1 0xA PUSH1 0x35 PUSH2 0x2064 JUMP JUMPDEST DUP3 PUSH2 0x3240 PUSH2 0x2FEB JUMP JUMPDEST LT ISZERO PUSH2 0x3252 JUMPI PUSH2 0x1ED6 PUSH1 0xE PUSH1 0x34 PUSH2 0x2064 JUMP JUMPDEST PUSH1 0xF SLOAD DUP4 GT ISZERO PUSH2 0x3268 JUMPI PUSH2 0x1ED6 PUSH1 0x2 PUSH1 0x36 PUSH2 0x2064 JUMP JUMPDEST PUSH2 0x3274 PUSH1 0xF SLOAD DUP5 PUSH2 0x41FD JUMP JUMPDEST PUSH1 0xF DUP2 SWAP1 SSTORE SWAP1 POP PUSH2 0x2AC4 PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 DUP5 PUSH2 0x4237 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1962 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x11 DUP2 MSTORE PUSH1 0x20 ADD PUSH17 0x6164646974696F6E206F766572666C6F77 PUSH1 0x78 SHL DUP2 MSTORE POP PUSH2 0x47AA JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 DUP4 GT PUSH2 0x32E6 JUMPI POP PUSH1 0x0 SWAP1 POP DUP2 DUP4 SUB PUSH2 0x2448 JUMP JUMPDEST POP PUSH1 0x3 SWAP1 POP PUSH1 0x0 PUSH2 0x2448 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x32FC PUSH2 0x5340 JUMP JUMPDEST PUSH2 0x3314 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP7 DUP2 MSTORE POP DUP5 PUSH2 0x4808 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3324 DUP3 PUSH1 0xC SLOAD PUSH2 0x4832 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3334 DUP3 PUSH1 0xC SLOAD PUSH2 0x3299 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3355 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x9 SLOAD DUP2 MSTORE POP DUP5 PUSH1 0xD SLOAD PUSH2 0x4851 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3376 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x8 SLOAD DUP2 MSTORE POP DUP6 PUSH1 0xF SLOAD PUSH2 0x4851 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3397 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x7 SLOAD DUP2 MSTORE POP DUP7 PUSH1 0xE SLOAD PUSH2 0x4851 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x33AA DUP8 PUSH1 0xB SLOAD PUSH1 0xB SLOAD PUSH2 0x4851 JUMP JUMPDEST PUSH1 0xA DUP14 SWAP1 SSTORE PUSH1 0xB DUP2 SWAP1 SSTORE PUSH1 0xC DUP7 SWAP1 SSTORE PUSH1 0xD DUP6 SWAP1 SSTORE PUSH1 0xF DUP5 SWAP1 SSTORE PUSH1 0xE DUP4 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP14 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP10 SWAP1 MSTORE DUP1 DUP3 ADD DUP4 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP9 SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH32 0x4DEC04E750CA11537CABCD8A9EAB06494DE08DA3735BC8871CD41250E190BC04 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG1 PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x24 DUP1 DUP3 ADD DUP15 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x5EFD0233 PUSH1 0xE1 SHL OR DUP2 MSTORE SWAP2 MLOAD DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP5 AND SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x3487 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x3468 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x34E9 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 0x34EE JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP PUSH1 0x0 SWAP2 POP PUSH2 0x34FA SWAP1 POP JUMP JUMPDEST SWAP13 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3515 PUSH2 0x25E3 JUMP JUMPDEST PUSH1 0xA SLOAD EQ PUSH2 0x3529 JUMPI PUSH2 0x1ED6 PUSH1 0xA PUSH1 0x39 PUSH2 0x2064 JUMP JUMPDEST DUP3 PUSH2 0x3532 PUSH2 0x2FEB JUMP JUMPDEST LT ISZERO PUSH2 0x3544 JUMPI PUSH2 0x1ED6 PUSH1 0xE PUSH1 0x38 PUSH2 0x2064 JUMP JUMPDEST PUSH1 0xE SLOAD DUP4 GT ISZERO PUSH2 0x355A JUMPI PUSH2 0x1ED6 PUSH1 0x2 PUSH1 0x3A PUSH2 0x2064 JUMP JUMPDEST PUSH2 0x3566 PUSH1 0xE SLOAD DUP5 PUSH2 0x41FD JUMP JUMPDEST PUSH1 0xE DUP2 SWAP1 SSTORE PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x3E14691 PUSH1 0xE6 SHL DUP2 MSTORE SWAP1 MLOAD SWAP4 SWAP5 POP PUSH2 0x2AC4 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP3 PUSH4 0xF851A440 SWAP3 DUP3 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x35B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x35C8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x35DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP5 PUSH2 0x4237 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x35F4 DUP2 PUSH2 0x1FA8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x35FE PUSH2 0x19A6 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x3629 JUMPI PUSH2 0x361C DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x3615 JUMPI INVALID JUMPDEST PUSH1 0x11 PUSH2 0x2064 JUMP JUMPDEST SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x36C0 SWAP1 POP JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA6AFED95 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3664 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3678 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x368E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x36AE JUMPI PUSH2 0x361C DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x36A7 JUMPI INVALID JUMPDEST PUSH1 0x12 PUSH2 0x2064 JUMP JUMPDEST PUSH2 0x36BA CALLER DUP9 DUP9 DUP9 PUSH2 0x4882 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP JUMPDEST PUSH2 0x36C9 DUP2 PUSH2 0x244F JUMP JUMPDEST POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xD02F7351 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x24 DUP6 ADD MSTORE DUP7 DUP2 AND PUSH1 0x44 DUP6 ADD MSTORE DUP6 DUP2 AND PUSH1 0x64 DUP6 ADD MSTORE PUSH1 0x84 DUP5 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 SWAP3 SWAP1 SWAP3 AND SWAP2 PUSH4 0xD02F7351 SWAP2 PUSH1 0xA4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3745 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3759 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x376F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x3786 JUMPI PUSH2 0x2C37 PUSH1 0x3 PUSH1 0x1D DUP4 PUSH2 0x3B8E JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x37AC JUMPI PUSH2 0x2C37 PUSH1 0x6 PUSH1 0x1E PUSH2 0x2064 JUMP JUMPDEST PUSH2 0x37B4 PUSH2 0x5391 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x37D7 SWAP1 DUP6 PUSH2 0x32CF JUMP JUMPDEST PUSH1 0x20 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x37EB JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x37F6 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x380A JUMPI INVALID JUMPDEST EQ PUSH2 0x382F JUMPI PUSH2 0x3826 PUSH1 0x9 PUSH1 0x1C DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x21FC JUMPI INVALID JUMPDEST SWAP3 POP POP POP PUSH2 0x2E17 JUMP JUMPDEST PUSH2 0x384E DUP5 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH7 0x6379DA05B60000 DUP2 MSTORE POP PUSH2 0x4D7A JUMP JUMPDEST PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x3860 SWAP1 DUP6 SWAP1 PUSH2 0x41FD JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x386D PUSH2 0x2ACB JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3881 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x388C JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x38A0 JUMPI INVALID JUMPDEST EQ PUSH2 0x38F2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x65786368616E67652072617465206D617468206572726F720000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x3912 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP4 PUSH1 0xC0 ADD MLOAD DUP2 MSTORE POP DUP3 PUSH1 0x80 ADD MLOAD PUSH2 0x4832 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xD SLOAD PUSH2 0x3925 SWAP2 PUSH2 0x3299 JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD MSTORE PUSH1 0x10 SLOAD PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x393C SWAP2 SWAP1 PUSH2 0x41FD JUMP JUMPDEST PUSH2 0x100 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x396A SWAP2 SWAP1 PUSH2 0x3E10 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x397E JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3989 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x399D JUMPI INVALID JUMPDEST EQ PUSH2 0x39B9 JUMPI PUSH2 0x3826 PUSH1 0x9 PUSH1 0x1B DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x21FC JUMPI INVALID JUMPDEST PUSH1 0xE0 DUP2 ADD MLOAD PUSH1 0xD SSTORE PUSH2 0x100 DUP2 ADD MLOAD PUSH1 0x10 SSTORE PUSH1 0x20 DUP1 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x11 DUP6 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 DUP7 ADD MLOAD SWAP3 DUP12 AND DUP1 DUP3 MSTORE SWAP1 DUP5 SWAP1 KECCAK256 SWAP3 SWAP1 SWAP3 SSTORE PUSH1 0x60 DUP6 ADD MLOAD DUP4 MLOAD SWAP1 DUP2 MSTORE SWAP3 MLOAD SWAP2 SWAP4 SWAP1 SWAP3 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5577 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD ADDRESS SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5577 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0xE0 DUP3 ADD MLOAD PUSH1 0x40 DUP1 MLOAD ADDRESS DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP3 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE MLOAD PUSH32 0xA91E67C5EA634CD43A12C5A482724B03DE01E85CA68702A53D0C2F45CB7C1DC5 SWAP2 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 PUSH1 0x0 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3ABE DUP2 PUSH2 0x1FA8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3AC8 PUSH2 0x19A6 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x3AE6 JUMPI PUSH2 0x1763 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x3ADF JUMPI INVALID JUMPDEST PUSH1 0xA PUSH2 0x2064 JUMP JUMPDEST PUSH2 0x1774 CALLER DUP6 PUSH2 0x4DA2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3AFC DUP2 PUSH2 0x1FA8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3B06 PUSH2 0x19A6 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x3B1D JUMPI PUSH2 0x1763 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x3151 JUMPI INVALID JUMPDEST PUSH2 0x1774 CALLER DUP6 PUSH1 0x0 PUSH2 0x426D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x3B37 DUP2 PUSH2 0x1FA8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3B41 PUSH2 0x19A6 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x3B6C JUMPI PUSH2 0x3B5F DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x3B58 JUMPI INVALID JUMPDEST PUSH1 0x40 PUSH2 0x2064 JUMP JUMPDEST SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x3B7D SWAP1 POP JUMP JUMPDEST PUSH2 0x3B77 CALLER DUP8 DUP8 PUSH2 0x3EAD JUMP JUMPDEST SWAP4 POP SWAP4 POP POP JUMPDEST PUSH2 0x3B86 DUP2 PUSH2 0x244F JUMP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x45B96FE442630264581B197E84BBADA861235052C5A1AADFFF9EA4E40A969AA0 DUP5 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x3BBD JUMPI INVALID JUMPDEST DUP5 PUSH1 0x63 DUP2 GT ISZERO PUSH2 0x3BC9 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 DUP2 ADD DUP6 SWAP1 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 PUSH1 0x3 DUP5 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x3BF6 JUMPI INVALID JUMPDEST EQ PUSH2 0x3C0C JUMPI DUP4 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x3C07 JUMPI INVALID JUMPDEST PUSH2 0x2E17 JUMP JUMPDEST POP PUSH2 0x3E8 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EQ PUSH2 0x3C68 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0xE6CADCC8CAE440DAD2E6DAC2E8C6D PUSH1 0x8B SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 CALLVALUE EQ PUSH2 0x1506 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0xECC2D8EACA40DAD2E6DAC2E8C6D PUSH1 0x93 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x3CBA PUSH2 0x5340 JUMP JUMPDEST PUSH2 0x2FAF DUP7 DUP7 PUSH2 0x50EC JUMP JUMPDEST PUSH1 0x0 PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xDD86FEA1 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 0x1CB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x3D23 DUP8 DUP8 PUSH2 0x3E10 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3D36 JUMPI INVALID JUMPDEST EQ PUSH2 0x3D47 JUMPI POP SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH2 0x3D58 JUMP JUMPDEST PUSH2 0x3D51 DUP2 DUP7 PUSH2 0x32CF JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3D6A PUSH2 0x5340 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3D7F DUP7 PUSH8 0xDE0B6B3A7640000 PUSH2 0x4740 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3D92 JUMPI INVALID JUMPDEST EQ PUSH2 0x3DB1 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x2448 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3DBE DUP4 DUP9 PUSH2 0x477F JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3DD1 JUMPI INVALID JUMPDEST EQ PUSH2 0x3DF3 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 SWAP5 POP SWAP3 POP PUSH2 0x2448 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP9 SWAP1 SWAP8 POP SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 DUP4 ADD DUP5 DUP2 LT PUSH2 0x3E28 JUMPI PUSH1 0x0 SWAP3 POP SWAP1 POP PUSH2 0x2448 JUMP JUMPDEST POP PUSH1 0x2 SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH2 0x2448 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3E40 PUSH2 0x5340 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3E51 DUP7 PUSH1 0x0 ADD MLOAD DUP7 PUSH2 0x4740 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3E64 JUMPI INVALID JUMPDEST EQ PUSH2 0x3E83 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x2448 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST MLOAD PUSH8 0xDE0B6B3A7640000 SWAP1 DIV SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x12004531 PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x24 DUP6 ADD MSTORE DUP6 DUP2 AND PUSH1 0x44 DUP6 ADD MSTORE PUSH1 0x64 DUP5 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 DUP5 SWAP4 AND SWAP2 PUSH4 0x24008A62 SWAP2 PUSH1 0x84 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3F18 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3F2C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3F42 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x3F66 JUMPI PUSH2 0x3F59 PUSH1 0x3 PUSH1 0x43 DUP4 PUSH2 0x3B8E JUMP JUMPDEST SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH2 0x3D58 SWAP1 POP JUMP JUMPDEST PUSH2 0x3F6E PUSH2 0x25E3 JUMP JUMPDEST PUSH1 0xA SLOAD EQ PUSH2 0x3F82 JUMPI PUSH2 0x3F59 PUSH1 0xA PUSH1 0x44 PUSH2 0x2064 JUMP JUMPDEST PUSH2 0x3F8A PUSH2 0x53DE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x3FB4 DUP7 PUSH2 0x3164 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3FCB JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3FD6 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3FED JUMPI INVALID JUMPDEST EQ PUSH2 0x4017 JUMPI PUSH2 0x4009 PUSH1 0x9 PUSH1 0x42 DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x21FC JUMPI INVALID JUMPDEST SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x3D58 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 NOT DUP6 EQ ISZERO PUSH2 0x4030 JUMPI PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x4038 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD DUP6 SWAP1 MSTORE JUMPDEST PUSH2 0x4046 DUP8 DUP3 PUSH1 0x40 ADD MLOAD PUSH2 0x3C17 JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x405B SWAP2 PUSH2 0x32CF JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4072 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x407D JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4094 JUMPI INVALID JUMPDEST EQ PUSH2 0x40D0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5514 PUSH1 0x3A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x40E0 PUSH1 0xC SLOAD DUP3 PUSH1 0xE0 ADD MLOAD PUSH2 0x32CF JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x40F7 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4102 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4119 JUMPI INVALID JUMPDEST EQ PUSH2 0x4155 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5597 PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xA0 DUP1 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP11 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 DUP6 SSTORE PUSH1 0xB SLOAD PUSH1 0x1 SWAP1 SWAP6 ADD SWAP5 SWAP1 SWAP5 SSTORE PUSH1 0xC0 DUP8 ADD MLOAD PUSH1 0xC DUP2 SWAP1 SSTORE PUSH1 0xE0 DUP9 ADD MLOAD SWAP6 MLOAD DUP3 MLOAD SWAP5 DUP16 AND DUP6 MSTORE SWAP5 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP2 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x60 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x80 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 MLOAD PUSH32 0x1A2A22CB034D26D1854BDC6666A5B91FE25EFBBB5DCAD3B0355478D6F5C362A1 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0xE0 ADD MLOAD PUSH1 0x0 SWAP8 SWAP1 SWAP7 POP SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1962 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x15 DUP2 MSTORE PUSH1 0x20 ADD PUSH21 0x7375627472616374696F6E20756E646572666C6F77 PUSH1 0x58 SHL DUP2 MSTORE POP PUSH2 0x514B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP3 ISZERO PUSH2 0x8FC MUL SWAP1 DUP4 SWAP1 PUSH1 0x0 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x1C23 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x427A JUMPI POP DUP2 ISZERO JUMPDEST PUSH2 0x42B5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5630 PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x42BD PUSH2 0x5353 JUMP JUMPDEST PUSH2 0x42C5 PUSH2 0x2ACB JUMP JUMPDEST PUSH1 0x40 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x42DC JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x42E7 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x42FE JUMPI INVALID JUMPDEST EQ PUSH2 0x4322 JUMPI PUSH2 0x431A PUSH1 0x9 PUSH1 0x2E DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x21FC JUMPI INVALID JUMPDEST SWAP2 POP POP PUSH2 0x1962 JUMP JUMPDEST DUP4 ISZERO PUSH2 0x43A3 JUMPI PUSH1 0x60 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD DUP3 MSTORE SWAP1 DUP3 ADD MLOAD DUP2 MSTORE PUSH2 0x4349 SWAP1 DUP6 PUSH2 0x2F98 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4360 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x436B JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4382 JUMPI INVALID JUMPDEST EQ PUSH2 0x439E JUMPI PUSH2 0x431A PUSH1 0x9 PUSH1 0x2C DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x21FC JUMPI INVALID JUMPDEST PUSH2 0x441C JUMP JUMPDEST PUSH2 0x43BF DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH1 0x40 ADD MLOAD DUP2 MSTORE POP PUSH2 0x3CAD JUMP JUMPDEST PUSH1 0x60 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x43D6 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x43E1 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x43F8 JUMPI INVALID JUMPDEST EQ PUSH2 0x4414 JUMPI PUSH2 0x431A PUSH1 0x9 PUSH1 0x2D DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x21FC JUMPI INVALID JUMPDEST PUSH1 0x80 DUP2 ADD DUP4 SWAP1 MSTORE JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xEABE7D91 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS SWAP5 DUP2 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 DUP2 AND PUSH1 0x24 DUP7 ADD MSTORE PUSH1 0x44 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE MLOAD PUSH1 0x0 SWAP4 SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0xEABE7D91 SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4483 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4497 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x44AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x44CD JUMPI PUSH2 0x44C4 PUSH1 0x3 PUSH1 0x2B DUP4 PUSH2 0x3B8E JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x1962 JUMP JUMPDEST PUSH2 0x44D5 PUSH2 0x25E3 JUMP JUMPDEST PUSH1 0xA SLOAD EQ PUSH2 0x44E9 JUMPI PUSH2 0x44C4 PUSH1 0xA PUSH1 0x2F PUSH2 0x2064 JUMP JUMPDEST PUSH2 0x44F9 PUSH1 0x10 SLOAD DUP4 PUSH1 0x60 ADD MLOAD PUSH2 0x32CF JUMP JUMPDEST PUSH1 0xA0 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP5 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4510 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x451B JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP3 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4532 JUMPI INVALID JUMPDEST EQ PUSH2 0x454E JUMPI PUSH2 0x44C4 PUSH1 0x9 PUSH1 0x31 DUP5 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x21FC JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 DUP4 ADD MLOAD PUSH2 0x4576 SWAP2 SWAP1 PUSH2 0x32CF JUMP JUMPDEST PUSH1 0xC0 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP5 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x458D JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4598 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP3 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x45AF JUMPI INVALID JUMPDEST EQ PUSH2 0x45CB JUMPI PUSH2 0x44C4 PUSH1 0x9 PUSH1 0x30 DUP5 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x21FC JUMPI INVALID JUMPDEST DUP2 PUSH1 0x80 ADD MLOAD PUSH2 0x45D8 PUSH2 0x2FEB JUMP JUMPDEST LT ISZERO PUSH2 0x45EA JUMPI PUSH2 0x44C4 PUSH1 0xE PUSH1 0x32 PUSH2 0x2064 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MLOAD PUSH1 0x10 SSTORE PUSH1 0xC0 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x4620 SWAP1 DUP8 SWAP1 PUSH2 0x4237 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MLOAD PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD ADDRESS SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5577 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 PUSH1 0x80 DUP3 ADD MLOAD PUSH1 0x60 DUP1 DUP5 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP4 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE MLOAD PUSH32 0xE5B754FB1ABB7F01B499791D0B820AE3B6AF3424AC1C59768EDB53F4EC31A929 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x4 DUP1 SLOAD PUSH1 0x80 DUP5 ADD MLOAD PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x51DFF989 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS SWAP6 DUP2 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND PUSH1 0x24 DUP8 ADD MSTORE PUSH1 0x44 DUP7 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x64 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE MLOAD SWAP2 AND SWAP2 PUSH4 0x51DFF989 SWAP2 PUSH1 0x84 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4715 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4729 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x0 SWAP3 POP PUSH2 0x4736 SWAP2 POP POP JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH2 0x4753 JUMPI POP PUSH1 0x0 SWAP1 POP DUP1 PUSH2 0x2448 JUMP JUMPDEST DUP4 DUP4 MUL DUP4 DUP6 DUP3 DUP2 PUSH2 0x4760 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x4774 JUMPI POP PUSH1 0x2 SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH2 0x2448 JUMP JUMPDEST PUSH1 0x0 SWAP3 POP SWAP1 POP PUSH2 0x2448 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH2 0x4793 JUMPI POP PUSH1 0x1 SWAP1 POP PUSH1 0x0 PUSH2 0x2448 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x479E JUMPI INVALID JUMPDEST DIV SWAP2 POP SWAP2 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 ADD DUP3 DUP6 DUP3 LT ISZERO PUSH2 0x47FF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x1061 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1049 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x4810 PUSH2 0x5340 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x4829 DUP6 PUSH1 0x0 ADD MLOAD DUP6 PUSH2 0x51A5 JUMP JUMPDEST SWAP1 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x483C PUSH2 0x5340 JUMP JUMPDEST PUSH2 0x4846 DUP5 DUP5 PUSH2 0x4808 JUMP JUMPDEST SWAP1 POP PUSH2 0x2E17 DUP2 PUSH2 0x3E9E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x485B PUSH2 0x5340 JUMP JUMPDEST PUSH2 0x4865 DUP6 DUP6 PUSH2 0x4808 JUMP JUMPDEST SWAP1 POP PUSH2 0x4879 PUSH2 0x4873 DUP3 PUSH2 0x3E9E JUMP JUMPDEST DUP5 PUSH2 0x3299 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x2FE3F38F PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x24 DUP6 ADD MSTORE DUP8 DUP2 AND PUSH1 0x44 DUP6 ADD MSTORE DUP7 DUP2 AND PUSH1 0x64 DUP6 ADD MSTORE PUSH1 0x84 DUP5 ADD DUP7 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 DUP5 SWAP4 AND SWAP2 PUSH4 0x5FC7E71E SWAP2 PUSH1 0xA4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x48F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4909 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x491F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x4943 JUMPI PUSH2 0x4936 PUSH1 0x3 PUSH1 0x14 DUP4 PUSH2 0x3B8E JUMP JUMPDEST SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH2 0x4D71 SWAP1 POP JUMP JUMPDEST PUSH2 0x494B PUSH2 0x25E3 JUMP JUMPDEST PUSH1 0xA SLOAD EQ PUSH2 0x495F JUMPI PUSH2 0x4936 PUSH1 0xA PUSH1 0x18 PUSH2 0x2064 JUMP JUMPDEST PUSH2 0x4967 PUSH2 0x25E3 JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6C540BAF 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 0x49A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x49B4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x49CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD EQ PUSH2 0x49DD JUMPI PUSH2 0x4936 PUSH1 0xA PUSH1 0x13 PUSH2 0x2064 JUMP JUMPDEST DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x4A03 JUMPI PUSH2 0x4936 PUSH1 0x6 PUSH1 0x19 PUSH2 0x2064 JUMP JUMPDEST DUP5 PUSH2 0x4A14 JUMPI PUSH2 0x4936 PUSH1 0x7 PUSH1 0x17 PUSH2 0x2064 JUMP JUMPDEST PUSH1 0x0 NOT DUP6 EQ ISZERO PUSH2 0x4A2A JUMPI PUSH2 0x4936 PUSH1 0x7 PUSH1 0x16 PUSH2 0x2064 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x4A38 DUP10 DUP10 DUP10 PUSH2 0x3EAD JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP DUP2 ISZERO PUSH2 0x4A68 JUMPI PUSH2 0x4A59 DUP3 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x4A52 JUMPI INVALID JUMPDEST PUSH1 0x1A PUSH2 0x2064 JUMP JUMPDEST SWAP5 POP PUSH1 0x0 SWAP4 POP PUSH2 0x4D71 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xC488847B PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 DUP2 AND PUSH1 0x24 DUP6 ADD MSTORE PUSH1 0x44 DUP5 ADD DUP6 SWAP1 MSTORE DUP2 MLOAD PUSH1 0x0 SWAP5 DUP6 SWAP5 SWAP3 SWAP1 SWAP3 AND SWAP3 PUSH4 0xC488847B SWAP3 PUSH1 0x64 DUP1 DUP3 ADD SWAP4 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4AC6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4ADA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4AF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 POP SWAP1 POP DUP2 ISZERO PUSH2 0x4B3B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x33 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x55C8 PUSH1 0x33 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 DUP9 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 DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4B92 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4BA6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4BBC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT ISZERO PUSH2 0x4C11 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C49515549444154455F5345495A455F544F4F5F4D5543480000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND ADDRESS EQ ISZERO PUSH2 0x4C37 JUMPI PUSH2 0x4C30 ADDRESS DUP14 DUP14 DUP6 PUSH2 0x36D2 JUMP JUMPDEST SWAP1 POP PUSH2 0x4CC1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xB2A02FF1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP15 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP14 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD SWAP2 DUP12 AND SWAP2 PUSH4 0xB2A02FF1 SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4C92 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4CA6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4CBC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP JUMPDEST DUP1 ISZERO PUSH2 0x4D0B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x1D1BDAD95B881CD95A5E9D5C994819985A5B1959 PUSH1 0x62 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP16 AND DUP3 MSTORE DUP1 DUP15 AND PUSH1 0x20 DUP4 ADD MSTORE DUP2 DUP4 ADD DUP8 SWAP1 MSTORE DUP12 AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP2 ADD DUP5 SWAP1 MSTORE SWAP1 MLOAD PUSH32 0x298637F684DA70674F26509B10F07EC2FBC77A335AB1E7D6215A4B2484D8BB52 SWAP2 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 LOG1 PUSH1 0x0 SWAP8 POP SWAP3 SWAP6 POP POP POP POP POP POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xDE0B6B3A7640000 PUSH2 0x4D93 DUP5 DUP5 PUSH1 0x0 ADD MLOAD PUSH2 0x51A5 JUMP JUMPDEST DUP2 PUSH2 0x4D9A JUMPI INVALID JUMPDEST DIV SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x368F5153 PUSH1 0xE2 SHL DUP2 MSTORE ADDRESS SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x24 DUP6 ADD MSTORE PUSH1 0x44 DUP5 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 SWAP3 SWAP1 SWAP3 AND SWAP2 PUSH4 0xDA3D454C SWAP2 PUSH1 0x64 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4E05 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4E19 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4E2F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x4E4E JUMPI PUSH2 0x4E46 PUSH1 0x3 PUSH1 0x10 DUP4 PUSH2 0x3B8E JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1198 JUMP JUMPDEST PUSH2 0x4E56 PUSH2 0x25E3 JUMP JUMPDEST PUSH1 0xA SLOAD EQ PUSH2 0x4E6A JUMPI PUSH2 0x4E46 PUSH1 0xA PUSH1 0xC PUSH2 0x2064 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4E74 PUSH2 0x2FEB JUMP JUMPDEST SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x4E93 JUMPI PUSH2 0x4E8A PUSH1 0xE PUSH1 0xB PUSH2 0x2064 JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x1198 JUMP JUMPDEST PUSH2 0x4E9B PUSH2 0x5424 JUMP JUMPDEST PUSH2 0x4EA4 DUP7 PUSH2 0x3164 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4EB8 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4EC3 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4ED7 JUMPI INVALID JUMPDEST EQ PUSH2 0x4EFC JUMPI PUSH2 0x4EF2 PUSH1 0x9 DUP1 DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x21FC JUMPI INVALID JUMPDEST SWAP4 POP POP POP POP PUSH2 0x1198 JUMP JUMPDEST PUSH2 0x4F0A DUP2 PUSH1 0x20 ADD MLOAD DUP7 PUSH2 0x3E10 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4F1E JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4F29 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4F3D JUMPI INVALID JUMPDEST EQ PUSH2 0x4F59 JUMPI PUSH2 0x4EF2 PUSH1 0x9 PUSH1 0xE DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x21FC JUMPI INVALID JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 DUP5 ADD MLOAD DUP2 MLOAD PUSH4 0x1DE6C8A5 PUSH1 0xE2 SHL DUP2 MSTORE ADDRESS SWAP5 DUP2 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x24 DUP5 ADD MSTORE MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 PUSH4 0x779B2294 SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4FB0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4FC4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4FDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 POP DUP3 ISZERO PUSH2 0x4FF1 JUMPI PUSH2 0x4EF2 PUSH1 0x3 PUSH1 0x10 DUP6 PUSH2 0x3B8E JUMP JUMPDEST PUSH2 0x4FFD PUSH1 0xC SLOAD DUP7 PUSH2 0x3E10 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x5011 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x501C JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x5030 JUMPI INVALID JUMPDEST EQ PUSH2 0x504C JUMPI PUSH2 0x4EF2 PUSH1 0x9 PUSH1 0xD DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x21FC JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE SWAP2 SWAP1 SWAP2 KECCAK256 SWAP1 DUP2 SSTORE PUSH1 0xB SLOAD PUSH1 0x1 SWAP1 SWAP2 ADD SSTORE PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0xC SSTORE PUSH2 0x5088 DUP7 DUP7 PUSH2 0x4237 JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 ADD MLOAD PUSH1 0x60 DUP1 DUP5 ADD MLOAD DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP11 SWAP1 MSTORE DUP1 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP1 DUP3 ADD MSTORE SWAP1 MLOAD PUSH32 0x13ED6866D4E1EE6DA46F845C46D7E54120883D75C5EA9A2DACC1C4CA8984AB80 SWAP2 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG1 PUSH1 0x0 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x50F6 PUSH2 0x5340 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x510B PUSH8 0xDE0B6B3A7640000 DUP8 PUSH2 0x4740 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x511E JUMPI INVALID JUMPDEST EQ PUSH2 0x513D JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x2448 JUMP JUMPDEST PUSH2 0x2FDE DUP2 DUP7 PUSH1 0x0 ADD MLOAD PUSH2 0x3D60 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x519D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x1061 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1049 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1962 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x17 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x6D756C7469706C69636174696F6E206F766572666C6F77000000000000000000 DUP2 MSTORE POP PUSH1 0x0 DUP4 ISZERO DUP1 PUSH2 0x51EF JUMPI POP DUP3 ISZERO JUMPDEST ISZERO PUSH2 0x51FC JUMPI POP PUSH1 0x0 PUSH2 0x1962 JUMP JUMPDEST DUP4 DUP4 MUL DUP4 DUP6 DUP3 DUP2 PUSH2 0x5209 JUMPI INVALID JUMPDEST DIV EQ DUP4 SWAP1 PUSH2 0x47FF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x1061 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1049 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x5299 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x52C6 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x52C6 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x52C6 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x52AB JUMP JUMPDEST POP PUSH2 0x1830 SWAP3 SWAP2 POP PUSH2 0x544D JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x5313 JUMPI DUP3 DUP1 ADD PUSH1 0xFF NOT DUP3 CALLDATALOAD AND OR DUP6 SSTORE PUSH2 0x52C6 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x52C6 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x52C6 JUMPI DUP3 CALLDATALOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x5325 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xE0 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x120 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x100 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH2 0x1572 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1830 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x5453 JUMP INVALID PUSH14 0x61726B6574206D6179206F6E6C79 KECCAK256 PUSH3 0x652069 PUSH15 0x697469616C697A6564206F6E636569 PUSH15 0x697469616C2065786368616E676520 PUSH19 0x617465206D7573742062652067726561746572 KECCAK256 PUSH21 0x68616E207A65726F2E73657474696E6720696E7465 PUSH19 0x6573742072617465206D6F64656C206661696C PUSH6 0x64626F72726F PUSH24 0x42616C616E636553746F7265643A20626F72726F7742616C PUSH2 0x6E63 PUSH6 0x53746F726564 0x49 PUSH15 0x7465726E616C206661696C65645245 POP COINBASE MSIZE 0x5F TIMESTAMP 0x4F MSTORE MSTORE 0x4F JUMPI 0x5F 0x4E GASLIMIT JUMPI 0x5F COINBASE NUMBER NUMBER 0x4F SSTORE 0x4E SLOAD 0x5F TIMESTAMP 0x4F MSTORE MSTORE 0x4F JUMPI 0x5F TIMESTAMP COINBASE 0x4C COINBASE 0x4E NUMBER GASLIMIT 0x5F NUMBER COINBASE 0x4C NUMBER SSTORE 0x4C COINBASE SLOAD 0x49 0x4F 0x4E 0x5F CHAINID COINBASE 0x49 0x4C GASLIMIT DIFFICULTY PUSH16 0x6E6C7920467573652061646D696E206D PUSH2 0x7920 PUSH10 0x6E697469616C697A6520 PUSH21 0x6865206D61726B6574DDF252AD1BE2C89B69C2B068 0xFC CALLDATACOPY DUP14 0xAA SWAP6 0x2B 0xA7 CALL PUSH4 0xC4A11628 CREATE2 GAS 0x4D CREATE2 0x23 0xB3 0xEF MSTORE GASLIMIT POP COINBASE MSIZE 0x5F TIMESTAMP 0x4F MSTORE MSTORE 0x4F JUMPI 0x5F 0x4E GASLIMIT JUMPI 0x5F SLOAD 0x4F SLOAD COINBASE 0x4C 0x5F TIMESTAMP COINBASE 0x4C COINBASE 0x4E NUMBER GASLIMIT 0x5F NUMBER COINBASE 0x4C NUMBER SSTORE 0x4C COINBASE SLOAD 0x49 0x4F 0x4E 0x5F CHAINID COINBASE 0x49 0x4C GASLIMIT DIFFICULTY 0x4C 0x49 MLOAD SSTORE 0x49 DIFFICULTY COINBASE SLOAD GASLIMIT 0x5F NUMBER 0x4F 0x4D POP SLOAD MSTORE 0x4F 0x4C 0x4C GASLIMIT MSTORE 0x5F NUMBER COINBASE 0x4C NUMBER SSTORE 0x4C COINBASE SLOAD GASLIMIT 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD 0x5F MSTORE8 GASLIMIT 0x49 GAS GASLIMIT 0x5F CHAINID COINBASE 0x49 0x4C GASLIMIT DIFFICULTY PUSH6 0x786368616E67 PUSH6 0x526174655374 PUSH16 0x7265643A2065786368616E6765526174 PUSH6 0x53746F726564 0x49 PUSH15 0x7465726E616C206661696C65646F6E PUSH6 0x206F66207265 PUSH5 0x65656D546F PUSH12 0x656E73496E206F7220726564 PUSH6 0x656D416D6F75 PUSH15 0x74496E206D757374206265207A6572 PUSH16 0xA265627A7A72315820495D2965B5B424 0x28 0xFC 0xDD DUP10 PUSH12 0x218D98A575DD0F1AB07D0040 0xB9 0x4E SUB 0x28 DUP2 SWAP3 MULMOD 0x2D PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ","sourceMap":"315:5940:7:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;315:5940:7;;;;;;;"},"deployedBytecode":{"linkReferences":{},"object":"6080604052600436106102ff5760003560e01c80638f840ddd11610190578063bd6d894d116100dc578063dd62ed3e11610095578063f3fdb15a1161006f578063f3fdb15a14610d88578063f8f9da2814610d9d578063fca7820b14610db2578063fe9c44ae14610b9b576102ff565b8063dd62ed3e14610cf4578063e597461914610d2f578063f2b3abbd14610d55576102ff565b8063bd6d894d14610c08578063c37f68e214610c1d578063c5ebeaec14610c76578063db006a7514610ca0578063dbfe7c1914610cca578063dc028ab114610cdf576102ff565b8063a7b820df11610149578063aae40a2a11610123578063aae40a2a14610b6d578063ac784ddc14610b9b578063ae9d70b014610bb0578063b2a02ff114610bc5576102ff565b8063a7b820df14610af5578063a9059cbb14610b1f578063aa5af0fd14610b58576102ff565b80638f840ddd14610a2f57806391dd36c614610a4457806395d89b4114610a6e57806395dd919314610a83578063a03dce8d14610ab6578063a6afed9514610ae0576102ff565b806347bd37181161024f5780636c540baf1161020857806373acee98116101e257806373acee981461088757806379c2c9541461089c578063852a12e3146109f05780638d02d9a114610a1a576102ff565b80636c540baf1461082a5780636f307dc31461083f57806370a0823114610854576102ff565b806347bd3718146107885780634e4d9fea1461079d5780635fe3b567146107a5578063601a0bf1146107d657806361feacff146108005780636752e70214610815576102ff565b806318160ddd116102bc578063313ce56711610296578063313ce5671461064a57806334154d4c146106755780633af9e669146107405780633b1d21a214610773576102ff565b806318160ddd146105dd578063182df0f5146105f257806323b872dd14610607576102ff565b806306fdde031461033d578063095ea7b3146103c75780630f8855e8146104145780631249c58b1461057b578063173b99041461058357806317bfdfbc146105aa575b600061030a34610ddc565b50905061033a816040518060400160405280600b81526020016a1b5a5b9d0819985a5b195960aa1b815250610e3e565b50005b34801561034957600080fd5b506103526110a4565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561038c578181015183820152602001610374565b50505050905090810190601f1680156103b95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103d357600080fd5b50610400600480360360408110156103ea57600080fd5b506001600160a01b038135169060200135611131565b604080519115158252519081900360200190f35b34801561042057600080fd5b50610579600480360361010081101561043857600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b81111561047257600080fd5b82018360208201111561048457600080fd5b803590602001918460018302840111600160201b831117156104a557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156104f757600080fd5b82018360208201111561050957600080fd5b803590602001918460018302840111600160201b8311171561052a57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505060ff833516935050506020810135906040013561119e565b005b61057961144c565b34801561058f57600080fd5b5061059861148a565b60408051918252519081900360200190f35b3480156105b657600080fd5b50610598600480360360208110156105cd57600080fd5b50356001600160a01b0316611490565b3480156105e957600080fd5b5061059861150c565b3480156105fe57600080fd5b50610598611512565b34801561061357600080fd5b506104006004803603606081101561062a57600080fd5b506001600160a01b03813581169160208101359091169060400135611575565b34801561065657600080fd5b5061065f6115a3565b6040805160ff9092168252519081900360200190f35b34801561068157600080fd5b506105796004803603604081101561069857600080fd5b810190602081018135600160201b8111156106b257600080fd5b8201836020820111156106c457600080fd5b803590602001918460018302840111600160201b831117156106e557600080fd5b919390929091602081019035600160201b81111561070257600080fd5b82018360208201111561071457600080fd5b803590602001918460018302840111600160201b8311171561073557600080fd5b5090925090506115ac565b34801561074c57600080fd5b506105986004803603602081101561076357600080fd5b50356001600160a01b0316611611565b34801561077f57600080fd5b506105986116c9565b34801561079457600080fd5b506105986116d8565b6105796116de565b3480156107b157600080fd5b506107ba611720565b604080516001600160a01b039092168252519081900360200190f35b3480156107e257600080fd5b50610598600480360360208110156107f957600080fd5b503561172f565b34801561080c57600080fd5b50610598611780565b34801561082157600080fd5b50610598611786565b34801561083657600080fd5b50610598611791565b34801561084b57600080fd5b506107ba611797565b34801561086057600080fd5b506105986004803603602081101561087757600080fd5b50356001600160a01b03166117a6565b34801561089357600080fd5b506105986117c1565b3480156108a857600080fd5b50610579600480360360c08110156108bf57600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b8111156108f257600080fd5b82018360208201111561090457600080fd5b803590602001918460018302840111600160201b8311171561092557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561097757600080fd5b82018360208201111561098957600080fd5b803590602001918460018302840111600160201b831117156109aa57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505082359350505060200135611834565b3480156109fc57600080fd5b5061059860048036036020811015610a1357600080fd5b5035611859565b348015610a2657600080fd5b50610598611864565b348015610a3b57600080fd5b5061059861186a565b348015610a5057600080fd5b5061059860048036036020811015610a6757600080fd5b5035611870565b348015610a7a57600080fd5b506103526118ad565b348015610a8f57600080fd5b5061059860048036036020811015610aa657600080fd5b50356001600160a01b0316611905565b348015610ac257600080fd5b5061059860048036036020811015610ad957600080fd5b5035611969565b348015610aec57600080fd5b506105986119a6565b348015610b0157600080fd5b5061059860048036036020811015610b1857600080fd5b5035611b6b565b348015610b2b57600080fd5b5061040060048036036040811015610b4257600080fd5b506001600160a01b038135169060200135611ba8565b348015610b6457600080fd5b50610598611bd5565b61057960048036036040811015610b8357600080fd5b506001600160a01b0381358116916020013516611bdb565b348015610ba757600080fd5b50610400611c28565b348015610bbc57600080fd5b50610598611c2d565b348015610bd157600080fd5b5061059860048036036060811015610be857600080fd5b506001600160a01b03813581169160208101359091169060400135611ce5565b348015610c1457600080fd5b50610598611d09565b348015610c2957600080fd5b50610c5060048036036020811015610c4057600080fd5b50356001600160a01b0316611d7d565b604080519485526020850193909352838301919091526060830152519081900360800190f35b348015610c8257600080fd5b5061059860048036036020811015610c9957600080fd5b5035611e12565b348015610cac57600080fd5b5061059860048036036020811015610cc357600080fd5b5035611e1d565b348015610cd657600080fd5b50610598611e28565b348015610ceb57600080fd5b50610598611e2e565b348015610d0057600080fd5b5061059860048036036040811015610d1757600080fd5b506001600160a01b0381358116916020013516611e34565b61057960048036036020811015610d4557600080fd5b50356001600160a01b0316611e5f565b348015610d6157600080fd5b5061059860048036036020811015610d7857600080fd5b50356001600160a01b0316611ead565b348015610d9457600080fd5b506107ba611ee7565b348015610da957600080fd5b50610598611ef6565b348015610dbe57600080fd5b5061059860048036036020811015610dd557600080fd5b5035611f6b565b6000806000610dea81611fa8565b6000610df46119a6565b90508015610e1f57610e12816011811115610e0b57fe5b6020612064565b935060009250610e2f9050565b610e2933866120ca565b93509350505b610e388161244f565b50915091565b81610e48576110a0565b606081516007016040519080825280601f01601f191660200182016040528015610e79576020820181803883390190505b50905060005b8251811015610eca57828181518110610e9457fe5b602001015160f81c60f81b828281518110610eab57fe5b60200101906001600160f81b031916908160001a905350600101610e7f565b8151600160fd1b90839083908110610ede57fe5b60200101906001600160f81b031916908160001a905350602860f81b828260010181518110610f0957fe5b60200101906001600160f81b031916908160001a9053506103e8840460300160f81b828260020181518110610f3a57fe5b60200101906001600160f81b031916908160001a905350600a606485040660300160f81b828260030181518110610f6d57fe5b60200101906001600160f81b031916908160001a905350600a8085040660300160f81b828260040181518110610f9f57fe5b60200101906001600160f81b031916908160001a905350600a840660300160f81b828260050181518110610fcf57fe5b60200101906001600160f81b031916908160001a905350602960f81b828260060181518110610ffa57fe5b60200101906001600160f81b031916908160001a90535081841561109c5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611061578181015183820152602001611049565b50505050905090810190601f16801561108e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5050505b5050565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156111295780601f106110fe57610100808354040283529160200191611129565b820191906000526020600020905b81548152906001019060200180831161110c57829003601f168201915b505050505081565b3360008181526012602090815260408083206001600160a01b03871680855290835281842086905581518681529151939493909284927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a360019150505b92915050565b3373a731585ab05fc9f83555cf9bff8f58ee94e18f85146111f05760405162461bcd60e51b815260040180806020018281038252602981526020018061554e6029913960400191505060405180910390fd5b600a541580156112005750600b54155b61123b5760405162461bcd60e51b81526004018080602001828103825260238152602001806154686023913960400191505060405180910390fd5b60068690558561127c5760405162461bcd60e51b815260040180806020018281038252603081526020018061548b6030913960400191505060405180910390fd5b6000611287896124be565b905080156112dc576040805162461bcd60e51b815260206004820152601a60248201527f73657474696e6720636f6d7074726f6c6c6572206661696c6564000000000000604482015290519081900360640190fd5b6112e46125e3565b600a55670de0b6b3a7640000600b556112fc886125e7565b9050801561133b5760405162461bcd60e51b81526004018080602001828103825260228152602001806154bb6022913960400191505060405180910390fd5b855161134e906001906020890190615258565b508451611362906002906020880190615258565b506003805460ff191660ff861617905561137b836128ed565b905080156113d0576040805162461bcd60e51b815260206004820152601d60248201527f73657474696e67207265736572766520666163746f72206661696c6564000000604482015290519081900360640190fd5b6113d9826129a6565b9050801561142e576040805162461bcd60e51b815260206004820152601860248201527f73657474696e672061646d696e20666565206661696c65640000000000000000604482015290519081900360640190fd5b50506000805460ff60b01b1916600160b01b17905550505050505050565b600061145734610ddc565b509050611487816040518060400160405280600b81526020016a1b5a5b9d0819985a5b195960aa1b815250610e3e565b50565b60095481565b60008061149c81611fa8565b60006114a66119a6565b146114f1576040805162461bcd60e51b81526020600482015260166024820152751858d8dc9d59481a5b9d195c995cdd0819985a5b195960521b604482015290519081900360640190fd5b6114fa83611905565b91505b6115068161244f565b50919050565b60105481565b600080600061151f612acb565b9092509050600082600381111561153257fe5b1461156e5760405162461bcd60e51b81526004018080602001828103825260358152602001806155fb6035913960400191505060405180910390fd5b9150505b90565b60008061158181611fa8565b600061158f33878787612b8b565b14915061159b8161244f565b509392505050565b60035460ff1681565b6115b4612e1f565b6115f8576040805162461bcd60e51b815260206004820152601060248201526f31b0b63632b9103737ba1030b236b4b760811b604482015290519081900360640190fd5b611604600185856152d2565b5061109c600283836152d2565b600061161b615340565b604051806020016040528061162e611d09565b90526001600160a01b03841660009081526011602052604081205491925090819061165a908490612f98565b9092509050600082600381111561166d57fe5b146116bf576040805162461bcd60e51b815260206004820152601f60248201527f62616c616e636520636f756c64206e6f742062652063616c63756c6174656400604482015290519081900360640190fd5b925050505b919050565b60006116d3612feb565b905090565b600c5481565b60006116e934613017565b50905061148781604051806040016040528060128152602001711c995c185e509bdc9c9bddc819985a5b195960721b815250610e3e565b6004546001600160a01b031681565b60008061173b81611fa8565b60006117456119a6565b9050801561176b5761176381601181111561175c57fe5b603b612064565b9250506114fd565b61177484613058565b9250506115068161244f565b600e5481565b666379da05b6000081565b600a5481565b6014546001600160a01b031681565b6001600160a01b031660009081526011602052604090205490565b6000806117cd81611fa8565b60006117d76119a6565b14611822576040805162461bcd60e51b81526020600482015260166024820152751858d8dc9d59481a5b9d195c995cdd0819985a5b195960521b604482015290519081900360640190fd5b600c5491506118308161244f565b5090565b6702c68af0bb140000601261184f8888848989868a8a61119e565b5050505050505050565b600061119882613124565b60075481565b600d5481565b60008061187c81611fa8565b60006118866119a6565b905080156118a45761176381601181111561189d57fe5b6052612064565b611774846129a6565b6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156111295780601f106110fe57610100808354040283529160200191611129565b600080600061191384613164565b9092509050600082600381111561192657fe5b146119625760405162461bcd60e51b81526004018080602001828103825260378152602001806154dd6037913960400191505060405180910390fd5b9392505050565b60008061197581611fa8565b600061197f6119a6565b9050801561199d5761176381601181111561199657fe5b6033612064565b61177484613218565b6000806119b16125e3565b905080600a5414156119c7576000915050611572565b60006119d1612feb565b90506000600560009054906101000a90046001600160a01b03166001600160a01b03166315f2405383600c54611a16600d54611a11600e54600f54613299565b613299565b6040518463ffffffff1660e01b815260040180848152602001838152602001828152602001935050505060206040518083038186803b158015611a5857600080fd5b505afa158015611a6c573d6000803e3d6000fd5b505050506040513d6020811015611a8257600080fd5b5051905065048c27395000811115611ae1576040805162461bcd60e51b815260206004820152601c60248201527f626f72726f772072617465206973206162737572646c79206869676800000000604482015290519081900360640190fd5b600080611af085600a546132cf565b90925090506000826003811115611b0357fe5b14611b55576040805162461bcd60e51b815260206004820152601f60248201527f636f756c64206e6f742063616c63756c61746520626c6f636b2064656c746100604482015290519081900360640190fd5b611b61858585846132f2565b9550505050505090565b600080611b7781611fa8565b6000611b816119a6565b90508015611b9f57611763816011811115611b9857fe5b6037612064565b6117748461350a565b600080611bb481611fa8565b6000611bc233338787612b8b565b149150611bce8161244f565b5092915050565b600b5481565b6000611be88334846135e6565b509050611c2381604051806040016040528060168152602001751b1a5c5d5a59185d19509bdc9c9bddc819985a5b195960521b815250610e3e565b505050565b600181565b6005546000906001600160a01b031663b8168816611c49612feb565b600c54611c60600d54611a11600e54600f54613299565b60075460085460095401016040518563ffffffff1660e01b81526004018085815260200184815260200183815260200182815260200194505050505060206040518083038186803b158015611cb457600080fd5b505afa158015611cc8573d6000803e3d6000fd5b505050506040513d6020811015611cde57600080fd5b5051905090565b60006001611cf281611fa8565b611cfe338686866136d2565b915061159b8161244f565b600080611d1581611fa8565b6000611d1f6119a6565b14611d6a576040805162461bcd60e51b81526020600482015260166024820152751858d8dc9d59481a5b9d195c995cdd0819985a5b195960521b604482015290519081900360640190fd5b611d72611512565b91506118308161244f565b6001600160a01b038116600090815260116020526040812054819081908190818080611da889613164565b935090506000816003811115611dba57fe5b14611dd85760095b975060009650869550859450611e0b9350505050565b611de0612acb565b925090506000816003811115611df257fe5b14611dfe576009611dc2565b5060009650919450925090505b9193509193565b600061119882613ab2565b600061119882613af0565b60085481565b600f5481565b6001600160a01b03918216600090815260126020908152604080832093909416825291909152205490565b6000611e6b8234613b29565b5090506110a0816040518060400160405280601881526020017f7265706179426f72726f77426568616c66206661696c65640000000000000000815250610e3e565b600080611eb86119a6565b90508015611ede57611ed6816011811115611ecf57fe5b604b612064565b9150506116c4565b611962836125e7565b6005546001600160a01b031681565b6005546000906001600160a01b03166315f24053611f12612feb565b600c54611f29600d54611a11600e54600f54613299565b6040518463ffffffff1660e01b815260040180848152602001838152602001828152602001935050505060206040518083038186803b158015611cb457600080fd5b600080611f7781611fa8565b6000611f816119a6565b90508015611f9f57611763816011811115611f9857fe5b6059612064565b611774846128ed565b600054600160b01b900460ff16611ff3576040805162461bcd60e51b815260206004820152600a6024820152691c994b595b9d195c995960b21b604482015290519081900360640190fd5b8061205457600480546040805163c90c20b160e01b815290516001600160a01b039092169263c90c20b192828201926000929082900301818387803b15801561203b57600080fd5b505af115801561204f573d6000803e3d6000fd5b505050505b506000805460ff60b01b19169055565b60007f45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa083601181111561209357fe5b83606381111561209f57fe5b604080519283526020830191909152600082820152519081900360600190a182601181111561196257fe5b6004805460408051634ef4c3e160e01b815230938101939093526001600160a01b038581166024850152604484018590529051600093849384931691634ef4c3e19160648082019260209290919082900301818787803b15801561212d57600080fd5b505af1158015612141573d6000803e3d6000fd5b505050506040513d602081101561215757600080fd5b50519050801561217b5761216e6003602183613b8e565b9250600091506124489050565b6121836125e3565b600a54146121975761216e600a6024612064565b61219f615353565b6121a7612acb565b60408301819052602083018260038111156121be57fe5b60038111156121c957fe5b90525060009050816020015160038111156121e057fe5b1461220f5761220160096023836020015160038111156121fc57fe5b613b8e565b935060009250612448915050565b6122198686613c17565b60c082018190526040805160208101825290830151815261223a9190613cad565b606083018190526020830182600381111561225157fe5b600381111561225c57fe5b905250600090508160200151600381111561227357fe5b146122c5576040805162461bcd60e51b815260206004820181905260248201527f4d494e545f45584348414e47455f43414c43554c4154494f4e5f4641494c4544604482015290519081900360640190fd5b6122d56010548260600151613299565b60808201526001600160a01b03861660009081526011602052604090205460608201516123029190613299565b60a0820181905260808201516010556001600160a01b0387166000818152601160209081526040918290209390935560c084015160608086015183519485529484019190915282820193909352517f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f929181900390910190a1606081015160408051918252516001600160a01b0388169130916000805160206155778339815191529181900360200190a36004805460c08301516060840151604080516341c728b960e01b815230958101959095526001600160a01b038b8116602487015260448601939093526064850191909152519116916341c728b991608480830192600092919082900301818387803b15801561241b57600080fd5b505af115801561242f573d6000803e3d6000fd5b506000925061243c915050565b8160c001519350935050505b9250929050565b6000805460ff60b01b1916600160b01b1790558061148757600480546040805163319728a160e11b815290516001600160a01b039092169263632e514292828201926000929082900301818387803b1580156124aa57600080fd5b505af115801561109c573d6000803e3d6000fd5b6004805460408051623f1ee960e11b815290516000936001600160a01b0393841693861692627e3dd29281830192602092829003018186803b15801561250357600080fd5b505afa158015612517573d6000803e3d6000fd5b505050506040513d602081101561252d57600080fd5b5051612580576040805162461bcd60e51b815260206004820152601c60248201527f6d61726b6572206d6574686f642072657475726e65642066616c736500000000604482015290519081900360640190fd5b600480546001600160a01b0319166001600160a01b03858116918217909255604080519284168352602083019190915280517f7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d9281900390910190a16000611962565b4390565b6000806125f2612e1f565b61260257611ed66001604d612064565b61260a6125e3565b600a541461261e57611ed6600a604c612064565b600560009054906101000a90046001600160a01b03169050826001600160a01b0316632191f92a6040518163ffffffff1660e01b815260040160206040518083038186803b15801561266f57600080fd5b505afa158015612683573d6000803e3d6000fd5b505050506040513d602081101561269957600080fd5b50516126ec576040805162461bcd60e51b815260206004820152601c60248201527f6d61726b6572206d6574686f642072657475726e65642066616c736500000000604482015290519081900360640190fd5b600580546001600160a01b0319166001600160a01b03858116918217909255604080519284168352602083019190915280517fedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f9269281900390910190a16001600160a01b0381161561281e5760408051600481526024810182526020810180516001600160e01b0316636cc1140b60e11b178152915181516001600160a01b0385169382918083835b602083106127b35780518252601f199092019160209182019101612794565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612815576040519150601f19603f3d011682016040523d82523d6000602084013e61281a565b606091505b5050505b60408051600481526024810182526020810180516001600160e01b031663742a137b60e11b178152915181516001600160a01b0387169382918083835b6020831061287a5780518252601f19909201916020918201910161285b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146128dc576040519150601f19603f3d011682016040523d82523d6000602084013e6128e1565b606091505b50600091506119629050565b60006128f7612e1f565b61290e576129076001605a612064565b90506116c4565b6129166125e3565b600a541461292a57612907600a605b612064565b670de0b6b3a764000061294a61294284600754613299565b600854613299565b111561295c576129076002605c612064565b6009805490839055604080518281526020810185905281517faaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460929181900390910190a16000611962565b60006129b06125e3565b600a54146129c457612907600a6054612064565b6000198214156129d45760075491505b60006129de613cc4565b9050670de0b6b3a76400006129fe6129f860095486613299565b83613299565b1115612a1057611ed660026055612064565b8260075414612a7657612a21612e1f565b612a3157611ed660016053612064565b6007805490849055604080518281526020810186905281517fcdd0b588250e1398549f79cfdb8217c186688822905d6715b0834ea1c865594a929181900390910190a1505b8060085414612ac4576008805490829055604080518281526020810184905281517f92eef861b6533b7d3417f39c2ad7b460eed4e88a32fa3604f30e718b7602e7dc929181900390910190a1505b6000611962565b601054600090819080612ae657505060065460009150612b87565b6000612af0612feb565b90506000612afc615340565b6000612b1e84600c54612b19600d54611a11600e54600f54613299565b613d13565b935090506000816003811115612b3057fe5b14612b4557955060009450612b879350505050565b612b4f8386613d60565b925090506000816003811115612b6157fe5b14612b7657955060009450612b879350505050565b5051600095509350612b8792505050565b9091565b60048054604080516317b9b84b60e31b815230938101939093526001600160a01b03868116602485015285811660448501526064840185905290516000938493929092169163bdcdc25891608480830192602092919082900301818787803b158015612bf657600080fd5b505af1158015612c0a573d6000803e3d6000fd5b505050506040513d6020811015612c2057600080fd5b505190508015612c3f57612c376003605d83613b8e565b915050612e17565b836001600160a01b0316856001600160a01b03161415612c6557612c376002605e612064565b60006001600160a01b038781169087161415612c845750600019612cac565b506001600160a01b038086166000908152601260209081526040808320938a16835292905220545b600080600080612cbc85896132cf565b90945092506000846003811115612ccf57fe5b14612ced57612ce06009605e612064565b9650505050505050612e17565b6001600160a01b038a16600090815260116020526040902054612d1090896132cf565b90945091506000846003811115612d2357fe5b14612d3457612ce06009605f612064565b6001600160a01b038916600090815260116020526040902054612d579089613e10565b90945090506000846003811115612d6a57fe5b14612d7b57612ce060096060612064565b6001600160a01b03808b16600090815260116020526040808220859055918b168152208190556000198514612dd3576001600160a01b03808b166000908152601260209081526040808320938f168352929052208390555b886001600160a01b03168a6001600160a01b03166000805160206155778339815191528a6040518082815260200191505060405180910390a3600096505050505050505b949350505050565b60048054604080516303e1469160e61b815290516000936001600160a01b0390931692839263f851a4409281830192602092829003018186803b158015612e6557600080fd5b505afa158015612e79573d6000803e3d6000fd5b505050506040513d6020811015612e8f57600080fd5b50516001600160a01b031633148015612f095750806001600160a01b0316630a755ec26040518163ffffffff1660e01b815260040160206040518083038186803b158015612edc57600080fd5b505afa158015612ef0573d6000803e3d6000fd5b505050506040513d6020811015612f0657600080fd5b50515b8061156e57503373a731585ab05fc9f83555cf9bff8f58ee94e18f8514801561156e5750806001600160a01b0316632f1069ba6040518163ffffffff1660e01b815260040160206040518083038186803b158015612f6657600080fd5b505afa158015612f7a573d6000803e3d6000fd5b505050506040513d6020811015612f9057600080fd5b505191505090565b6000806000612fa5615340565b612faf8686613e36565b90925090506000826003811115612fc257fe5b14612fd35750915060009050612448565b6000612fde82613e9e565b9350935050509250929050565b6000806000612ffa47346132cf565b9092509050600082600381111561300d57fe5b1461156e57600080fd5b600080600061302581611fa8565b600061302f6119a6565b9050801561304d57610e1281601181111561304657fe5b6041612064565b610e29333387613ead565b600080613063612e1f565b61307357611ed66001603c612064565b61307b6125e3565b600a541461308f57611ed6600a603e612064565b82613098612feb565b10156130aa57611ed6600e603d612064565b600d548311156130c057611ed66002603f612064565b6130cc600d54846141fd565b600d81905590506130dd3384614237565b604080513381526020810185905280820183905290517f3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e9181900360600190a16000611962565b60008061313081611fa8565b600061313a6119a6565b905080156131585761176381601181111561315157fe5b602a612064565b6117743360008661426d565b6001600160a01b03811660009081526013602052604081208054829182918291829161319b57506000945084935061321392505050565b6131ab8160000154600b54614740565b909450925060008460038111156131be57fe5b146131d3575091935060009250613213915050565b6131e183826001015461477f565b909450915060008460038111156131f457fe5b14613209575091935060009250613213915050565b5060009450925050505b915091565b6000806132236125e3565b600a541461323757611ed6600a6035612064565b82613240612feb565b101561325257611ed6600e6034612064565b600f5483111561326857611ed660026036612064565b613274600f54846141fd565b600f8190559050612ac473a731585ab05fc9f83555cf9bff8f58ee94e18f8584614237565b60006119628383604051806040016040528060118152602001706164646974696f6e206f766572666c6f7760781b8152506147aa565b6000808383116132e6575060009050818303612448565b50600390506000612448565b60006132fc615340565b61331460405180602001604052808681525084614808565b9050600061332482600c54614832565b9050600061333482600c54613299565b90506000613355604051806020016040528060095481525084600d54614851565b90506000613376604051806020016040528060085481525085600f54614851565b90506000613397604051806020016040528060075481525086600e54614851565b905060006133aa87600b54600b54614851565b600a8d9055600b819055600c869055600d859055600f849055600e839055604080518d8152602081018990528082018390526060810188905290519192507f4dec04e750ca11537cabcd8a9eab06494de08da3735bc8871cd41250e190bc04919081900360800190a16005546040805160248082018e905282518083039091018152604490910182526020810180516001600160e01b0316635efd023360e11b178152915181516001600160a01b0390941693919290918291908083835b602083106134875780518252601f199092019160209182019101613468565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146134e9576040519150601f19603f3d011682016040523d82523d6000602084013e6134ee565b606091505b50600091506134fa9050565b9c9b505050505050505050505050565b6000806135156125e3565b600a541461352957611ed6600a6039612064565b82613532612feb565b101561354457611ed6600e6038612064565b600e5483111561355a57611ed66002603a612064565b613566600e54846141fd565b600e81905560048054604080516303e1469160e61b81529051939450612ac4936001600160a01b039092169263f851a440928282019260209290829003018186803b1580156135b457600080fd5b505afa1580156135c8573d6000803e3d6000fd5b505050506040513d60208110156135de57600080fd5b505184614237565b60008060006135f481611fa8565b60006135fe6119a6565b905080156136295761361c81601181111561361557fe5b6011612064565b9350600092506136c09050565b846001600160a01b031663a6afed956040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561366457600080fd5b505af1158015613678573d6000803e3d6000fd5b505050506040513d602081101561368e57600080fd5b5051905080156136ae5761361c8160118111156136a757fe5b6012612064565b6136ba33888888614882565b93509350505b6136c98161244f565b50935093915050565b600480546040805163d02f735160e01b815230938101939093526001600160a01b038781166024850152868116604485015285811660648501526084840185905290516000938493929092169163d02f73519160a480830192602092919082900301818787803b15801561374557600080fd5b505af1158015613759573d6000803e3d6000fd5b505050506040513d602081101561376f57600080fd5b50519050801561378657612c376003601d83613b8e565b846001600160a01b0316846001600160a01b031614156137ac57612c376006601e612064565b6137b4615391565b6001600160a01b0385166000908152601160205260409020546137d790856132cf565b60208301819052828260038111156137eb57fe5b60038111156137f657fe5b905250600090508151600381111561380a57fe5b1461382f576138266009601c836000015160038111156121fc57fe5b92505050612e17565b61384e846040518060200160405280666379da05b60000815250614d7a565b608082018190526138609085906141fd565b606082015261386d612acb565b60c083018190528282600381111561388157fe5b600381111561388c57fe5b90525060009050815160038111156138a057fe5b146138f2576040805162461bcd60e51b815260206004820152601860248201527f65786368616e67652072617465206d617468206572726f720000000000000000604482015290519081900360640190fd5b61391260405180602001604052808360c001518152508260800151614832565b60a08201819052600d5461392591613299565b60e0820152601054608082015161393c91906141fd565b6101008201526001600160a01b038616600090815260116020526040902054606082015161396a9190613e10565b604083018190528282600381111561397e57fe5b600381111561398957fe5b905250600090508151600381111561399d57fe5b146139b9576138266009601b836000015160038111156121fc57fe5b60e0810151600d556101008101516010556020808201516001600160a01b0380881660008181526011855260408082209490945583860151928b16808252908490209290925560608501518351908152925191939092600080516020615577833981519152929081900390910190a36080810151604080519182525130916001600160a01b038816916000805160206155778339815191529181900360200190a360a081015160e082015160408051308152602081019390935282810191909152517fa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc59181900360600190a16000979650505050505050565b600080613abe81611fa8565b6000613ac86119a6565b90508015613ae657611763816011811115613adf57fe5b600a612064565b6117743385614da2565b600080613afc81611fa8565b6000613b066119a6565b90508015613b1d5761176381601181111561315157fe5b6117743385600061426d565b6000806000613b3781611fa8565b6000613b416119a6565b90508015613b6c57613b5f816011811115613b5857fe5b6040612064565b935060009250613b7d9050565b613b77338787613ead565b93509350505b613b868161244f565b509250929050565b60007f45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0846011811115613bbd57fe5b846063811115613bc957fe5b604080519283526020830191909152818101859052519081900360600190a16003846011811115613bf657fe5b14613c0c57836011811115613c0757fe5b612e17565b506103e80192915050565b6000336001600160a01b03841614613c68576040805162461bcd60e51b815260206004820152600f60248201526e0e6cadcc8cae440dad2e6dac2e8c6d608b1b604482015290519081900360640190fd5b813414611506576040805162461bcd60e51b815260206004820152600e60248201526d0ecc2d8eaca40dad2e6dac2e8c6d60931b604482015290519081900360640190fd5b6000806000613cba615340565b612faf86866150ec565b600073a731585ab05fc9f83555cf9bff8f58ee94e18f856001600160a01b031663dd86fea16040518163ffffffff1660e01b815260040160206040518083038186803b158015611cb457600080fd5b600080600080613d238787613e10565b90925090506000826003811115613d3657fe5b14613d475750915060009050613d58565b613d5181866132cf565b9350935050505b935093915050565b6000613d6a615340565b600080613d7f86670de0b6b3a7640000614740565b90925090506000826003811115613d9257fe5b14613db157506040805160208101909152600081529092509050612448565b600080613dbe838861477f565b90925090506000826003811115613dd157fe5b14613df357506040805160208101909152600081529094509250612448915050565b604080516020810190915290815260009890975095505050505050565b600080838301848110613e2857600092509050612448565b506002915060009050612448565b6000613e40615340565b600080613e51866000015186614740565b90925090506000826003811115613e6457fe5b14613e8357506040805160208101909152600081529092509050612448565b60408051602081019091529081526000969095509350505050565b51670de0b6b3a7640000900490565b6004805460408051631200453160e11b815230938101939093526001600160a01b03868116602485015285811660448501526064840185905290516000938493849316916324008a629160848082019260209290919082900301818787803b158015613f1857600080fd5b505af1158015613f2c573d6000803e3d6000fd5b505050506040513d6020811015613f4257600080fd5b505190508015613f6657613f596003604383613b8e565b925060009150613d589050565b613f6e6125e3565b600a5414613f8257613f59600a6044612064565b613f8a6153de565b6001600160a01b0386166000908152601360205260409020600101546060820152613fb486613164565b6080830181905260208301826003811115613fcb57fe5b6003811115613fd657fe5b9052506000905081602001516003811115613fed57fe5b146140175761400960096042836020015160038111156121fc57fe5b935060009250613d58915050565b6000198514156140305760808101516040820152614038565b604081018590525b614046878260400151613c17565b60e08201819052608082015161405b916132cf565b60a083018190526020830182600381111561407257fe5b600381111561407d57fe5b905250600090508160200151600381111561409457fe5b146140d05760405162461bcd60e51b815260040180806020018281038252603a815260200180615514603a913960400191505060405180910390fd5b6140e0600c548260e001516132cf565b60c08301819052602083018260038111156140f757fe5b600381111561410257fe5b905250600090508160200151600381111561411957fe5b146141555760405162461bcd60e51b81526004018080602001828103825260318152602001806155976031913960400191505060405180910390fd5b60a080820180516001600160a01b03808a16600081815260136020908152604091829020948555600b5460019095019490945560c0870151600c81905560e088015195518251948f16855294840192909252828101949094526060820192909252608081019190915290517f1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1929181900390910190a160e00151600097909650945050505050565b60006119628383604051806040016040528060158152602001747375627472616374696f6e20756e646572666c6f7760581b81525061514b565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015611c23573d6000803e3d6000fd5b600082158061427a575081155b6142b55760405162461bcd60e51b81526004018080602001828103825260348152602001806156306034913960400191505060405180910390fd5b6142bd615353565b6142c5612acb565b60408301819052602083018260038111156142dc57fe5b60038111156142e757fe5b90525060009050816020015160038111156142fe57fe5b146143225761431a6009602e836020015160038111156121fc57fe5b915050611962565b83156143a35760608101849052604080516020810182529082015181526143499085612f98565b608083018190526020830182600381111561436057fe5b600381111561436b57fe5b905250600090508160200151600381111561438257fe5b1461439e5761431a6009602c836020015160038111156121fc57fe5b61441c565b6143bf8360405180602001604052808460400151815250613cad565b60608301819052602083018260038111156143d657fe5b60038111156143e157fe5b90525060009050816020015160038111156143f857fe5b146144145761431a6009602d836020015160038111156121fc57fe5b608081018390525b6004805460608301516040805163eabe7d9160e01b815230948101949094526001600160a01b038981166024860152604485019290925251600093919092169163eabe7d919160648082019260209290919082900301818787803b15801561448357600080fd5b505af1158015614497573d6000803e3d6000fd5b505050506040513d60208110156144ad57600080fd5b5051905080156144cd576144c46003602b83613b8e565b92505050611962565b6144d56125e3565b600a54146144e9576144c4600a602f612064565b6144f960105483606001516132cf565b60a084018190526020840182600381111561451057fe5b600381111561451b57fe5b905250600090508260200151600381111561453257fe5b1461454e576144c460096031846020015160038111156121fc57fe5b6001600160a01b038616600090815260116020526040902054606083015161457691906132cf565b60c084018190526020840182600381111561458d57fe5b600381111561459857fe5b90525060009050826020015160038111156145af57fe5b146145cb576144c460096030846020015160038111156121fc57fe5b81608001516145d8612feb565b10156145ea576144c4600e6032612064565b60a082015160105560c08201516001600160a01b0387166000908152601160205260409020556080820151614620908790614237565b6060820151604080519182525130916001600160a01b038916916000805160206155778339815191529181900360200190a36080820151606080840151604080516001600160a01b038b168152602081019490945283810191909152517fe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a9299281900390910190a16004805460808401516060850151604080516351dff98960e01b815230958101959095526001600160a01b038b8116602487015260448601939093526064850191909152519116916351dff98991608480830192600092919082900301818387803b15801561471557600080fd5b505af1158015614729573d6000803e3d6000fd5b5060009250614736915050565b9695505050505050565b6000808361475357506000905080612448565b8383028385828161476057fe5b041461477457506002915060009050612448565b600092509050612448565b600080826147935750600190506000612448565b600083858161479e57fe5b04915091509250929050565b600083830182858210156147ff5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611061578181015183820152602001611049565b50949350505050565b614810615340565b60405180602001604052806148298560000151856151a5565b90529392505050565b600061483c615340565b6148468484614808565b9050612e1781613e9e565b600061485b615340565b6148658585614808565b905061487961487382613e9e565b84613299565b95945050505050565b6004805460408051632fe3f38f60e11b815230938101939093526001600160a01b03848116602485015287811660448501528681166064850152608484018690529051600093849384931691635fc7e71e9160a48082019260209290919082900301818787803b1580156148f557600080fd5b505af1158015614909573d6000803e3d6000fd5b505050506040513d602081101561491f57600080fd5b505190508015614943576149366003601483613b8e565b925060009150614d719050565b61494b6125e3565b600a541461495f57614936600a6018612064565b6149676125e3565b846001600160a01b0316636c540baf6040518163ffffffff1660e01b815260040160206040518083038186803b1580156149a057600080fd5b505afa1580156149b4573d6000803e3d6000fd5b505050506040513d60208110156149ca57600080fd5b5051146149dd57614936600a6013612064565b866001600160a01b0316866001600160a01b03161415614a035761493660066019612064565b84614a145761493660076017612064565b600019851415614a2a5761493660076016612064565b600080614a38898989613ead565b90925090508115614a6857614a59826011811115614a5257fe5b601a612064565b945060009350614d7192505050565b600480546040805163c488847b60e01b815230938101939093526001600160a01b0389811660248501526044840185905281516000948594929092169263c488847b9260648082019391829003018186803b158015614ac657600080fd5b505afa158015614ada573d6000803e3d6000fd5b505050506040513d6040811015614af057600080fd5b50805160209091015190925090508115614b3b5760405162461bcd60e51b81526004018080602001828103825260338152602001806155c86033913960400191505060405180910390fd5b80886001600160a01b03166370a082318c6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015614b9257600080fd5b505afa158015614ba6573d6000803e3d6000fd5b505050506040513d6020811015614bbc57600080fd5b50511015614c11576040805162461bcd60e51b815260206004820152601860248201527f4c49515549444154455f5345495a455f544f4f5f4d5543480000000000000000604482015290519081900360640190fd5b60006001600160a01b038916301415614c3757614c30308d8d856136d2565b9050614cc1565b6040805163b2a02ff160e01b81526001600160a01b038e811660048301528d81166024830152604482018590529151918b169163b2a02ff1916064808201926020929091908290030181600087803b158015614c9257600080fd5b505af1158015614ca6573d6000803e3d6000fd5b505050506040513d6020811015614cbc57600080fd5b505190505b8015614d0b576040805162461bcd60e51b81526020600482015260146024820152731d1bdad95b881cd95a5e9d5c994819985a5b195960621b604482015290519081900360640190fd5b604080516001600160a01b03808f168252808e1660208301528183018790528b1660608201526080810184905290517f298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb529181900360a00190a16000975092955050505050505b94509492505050565b6000670de0b6b3a7640000614d938484600001516151a5565b81614d9a57fe5b049392505050565b600480546040805163368f515360e21b815230938101939093526001600160a01b0385811660248501526044840185905290516000938493929092169163da3d454c91606480830192602092919082900301818787803b158015614e0557600080fd5b505af1158015614e19573d6000803e3d6000fd5b505050506040513d6020811015614e2f57600080fd5b505190508015614e4e57614e466003601083613b8e565b915050611198565b614e566125e3565b600a5414614e6a57614e46600a600c612064565b6000614e74612feb565b905083811015614e9357614e8a600e600b612064565b92505050611198565b614e9b615424565b614ea486613164565b6020830181905282826003811115614eb857fe5b6003811115614ec357fe5b9052506000905081516003811115614ed757fe5b14614efc57614ef2600980836000015160038111156121fc57fe5b9350505050611198565b614f0a816020015186613e10565b6040830181905282826003811115614f1e57fe5b6003811115614f2957fe5b9052506000905081516003811115614f3d57fe5b14614f5957614ef26009600e836000015160038111156121fc57fe5b600480546040808401518151631de6c8a560e21b815230948101949094526024840152516001600160a01b039091169163779b22949160448083019260209291908290030181600087803b158015614fb057600080fd5b505af1158015614fc4573d6000803e3d6000fd5b505050506040513d6020811015614fda57600080fd5b505192508215614ff157614ef26003601085613b8e565b614ffd600c5486613e10565b606083018190528282600381111561501157fe5b600381111561501c57fe5b905250600090508151600381111561503057fe5b1461504c57614ef26009600d836000015160038111156121fc57fe5b6040808201516001600160a01b0388166000908152601360205291909120908155600b546001909101556060810151600c556150888686614237565b60408082015160608084015183516001600160a01b038b168152602081018a9052808501939093529082015290517f13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab809181900360800190a160009695505050505050565b60006150f6615340565b60008061510b670de0b6b3a764000087614740565b9092509050600082600381111561511e57fe5b1461513d57506040805160208101909152600081529092509050612448565b612fde818660000151613d60565b6000818484111561519d5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611061578181015183820152602001611049565b505050900390565b600061196283836040518060400160405280601781526020017f6d756c7469706c69636174696f6e206f766572666c6f7700000000000000000081525060008315806151ef575082155b156151fc57506000611962565b8383028385828161520957fe5b041483906147ff5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611061578181015183820152602001611049565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061529957805160ff19168380011785556152c6565b828001600101855582156152c6579182015b828111156152c65782518255916020019190600101906152ab565b5061183092915061544d565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106153135782800160ff198235161785556152c6565b828001600101855582156152c6579182015b828111156152c6578235825591602001919060010190615325565b6040518060200160405280600081525090565b6040805160e0810190915280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b604080516101208101909152806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040805161010081019091528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b604080516080810190915280600081526020016000815260200160008152602001600081525090565b61157291905b80821115611830576000815560010161545356fe6d61726b6574206d6179206f6e6c7920626520696e697469616c697a6564206f6e6365696e697469616c2065786368616e67652072617465206d7573742062652067726561746572207468616e207a65726f2e73657474696e6720696e7465726573742072617465206d6f64656c206661696c6564626f72726f7742616c616e636553746f7265643a20626f72726f7742616c616e636553746f726564496e7465726e616c206661696c656452455041595f424f52524f575f4e45575f4143434f554e545f424f52524f575f42414c414e43455f43414c43554c4154494f4e5f4641494c45446f6e6c7920467573652061646d696e206d617920696e697469616c697a6520746865206d61726b6574ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef52455041595f424f52524f575f4e45575f544f54414c5f42414c414e43455f43414c43554c4154494f4e5f4641494c45444c49515549444154455f434f4d5054524f4c4c45525f43414c43554c4154455f414d4f554e545f5345495a455f4641494c454465786368616e67655261746553746f7265643a2065786368616e67655261746553746f726564496e7465726e616c206661696c65646f6e65206f662072656465656d546f6b656e73496e206f722072656465656d416d6f756e74496e206d757374206265207a65726fa265627a7a72315820495d2965b5b42428fcdd896b218d98a575dd0f1ab07d0040b94e03288192092d64736f6c63430005110032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2FF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8F840DDD GT PUSH2 0x190 JUMPI DUP1 PUSH4 0xBD6D894D GT PUSH2 0xDC JUMPI DUP1 PUSH4 0xDD62ED3E GT PUSH2 0x95 JUMPI DUP1 PUSH4 0xF3FDB15A GT PUSH2 0x6F JUMPI DUP1 PUSH4 0xF3FDB15A EQ PUSH2 0xD88 JUMPI DUP1 PUSH4 0xF8F9DA28 EQ PUSH2 0xD9D JUMPI DUP1 PUSH4 0xFCA7820B EQ PUSH2 0xDB2 JUMPI DUP1 PUSH4 0xFE9C44AE EQ PUSH2 0xB9B JUMPI PUSH2 0x2FF JUMP JUMPDEST DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0xCF4 JUMPI DUP1 PUSH4 0xE5974619 EQ PUSH2 0xD2F JUMPI DUP1 PUSH4 0xF2B3ABBD EQ PUSH2 0xD55 JUMPI PUSH2 0x2FF JUMP JUMPDEST DUP1 PUSH4 0xBD6D894D EQ PUSH2 0xC08 JUMPI DUP1 PUSH4 0xC37F68E2 EQ PUSH2 0xC1D JUMPI DUP1 PUSH4 0xC5EBEAEC EQ PUSH2 0xC76 JUMPI DUP1 PUSH4 0xDB006A75 EQ PUSH2 0xCA0 JUMPI DUP1 PUSH4 0xDBFE7C19 EQ PUSH2 0xCCA JUMPI DUP1 PUSH4 0xDC028AB1 EQ PUSH2 0xCDF JUMPI PUSH2 0x2FF JUMP JUMPDEST DUP1 PUSH4 0xA7B820DF GT PUSH2 0x149 JUMPI DUP1 PUSH4 0xAAE40A2A GT PUSH2 0x123 JUMPI DUP1 PUSH4 0xAAE40A2A EQ PUSH2 0xB6D JUMPI DUP1 PUSH4 0xAC784DDC EQ PUSH2 0xB9B JUMPI DUP1 PUSH4 0xAE9D70B0 EQ PUSH2 0xBB0 JUMPI DUP1 PUSH4 0xB2A02FF1 EQ PUSH2 0xBC5 JUMPI PUSH2 0x2FF JUMP JUMPDEST DUP1 PUSH4 0xA7B820DF EQ PUSH2 0xAF5 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0xB1F JUMPI DUP1 PUSH4 0xAA5AF0FD EQ PUSH2 0xB58 JUMPI PUSH2 0x2FF JUMP JUMPDEST DUP1 PUSH4 0x8F840DDD EQ PUSH2 0xA2F JUMPI DUP1 PUSH4 0x91DD36C6 EQ PUSH2 0xA44 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0xA6E JUMPI DUP1 PUSH4 0x95DD9193 EQ PUSH2 0xA83 JUMPI DUP1 PUSH4 0xA03DCE8D EQ PUSH2 0xAB6 JUMPI DUP1 PUSH4 0xA6AFED95 EQ PUSH2 0xAE0 JUMPI PUSH2 0x2FF JUMP JUMPDEST DUP1 PUSH4 0x47BD3718 GT PUSH2 0x24F JUMPI DUP1 PUSH4 0x6C540BAF GT PUSH2 0x208 JUMPI DUP1 PUSH4 0x73ACEE98 GT PUSH2 0x1E2 JUMPI DUP1 PUSH4 0x73ACEE98 EQ PUSH2 0x887 JUMPI DUP1 PUSH4 0x79C2C954 EQ PUSH2 0x89C JUMPI DUP1 PUSH4 0x852A12E3 EQ PUSH2 0x9F0 JUMPI DUP1 PUSH4 0x8D02D9A1 EQ PUSH2 0xA1A JUMPI PUSH2 0x2FF JUMP JUMPDEST DUP1 PUSH4 0x6C540BAF EQ PUSH2 0x82A JUMPI DUP1 PUSH4 0x6F307DC3 EQ PUSH2 0x83F JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x854 JUMPI PUSH2 0x2FF JUMP JUMPDEST DUP1 PUSH4 0x47BD3718 EQ PUSH2 0x788 JUMPI DUP1 PUSH4 0x4E4D9FEA EQ PUSH2 0x79D JUMPI DUP1 PUSH4 0x5FE3B567 EQ PUSH2 0x7A5 JUMPI DUP1 PUSH4 0x601A0BF1 EQ PUSH2 0x7D6 JUMPI DUP1 PUSH4 0x61FEACFF EQ PUSH2 0x800 JUMPI DUP1 PUSH4 0x6752E702 EQ PUSH2 0x815 JUMPI PUSH2 0x2FF JUMP JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0x2BC JUMPI DUP1 PUSH4 0x313CE567 GT PUSH2 0x296 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x64A JUMPI DUP1 PUSH4 0x34154D4C EQ PUSH2 0x675 JUMPI DUP1 PUSH4 0x3AF9E669 EQ PUSH2 0x740 JUMPI DUP1 PUSH4 0x3B1D21A2 EQ PUSH2 0x773 JUMPI PUSH2 0x2FF JUMP JUMPDEST DUP1 PUSH4 0x18160DDD EQ PUSH2 0x5DD JUMPI DUP1 PUSH4 0x182DF0F5 EQ PUSH2 0x5F2 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x607 JUMPI PUSH2 0x2FF JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x33D JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x3C7 JUMPI DUP1 PUSH4 0xF8855E8 EQ PUSH2 0x414 JUMPI DUP1 PUSH4 0x1249C58B EQ PUSH2 0x57B JUMPI DUP1 PUSH4 0x173B9904 EQ PUSH2 0x583 JUMPI DUP1 PUSH4 0x17BFDFBC EQ PUSH2 0x5AA JUMPI JUMPDEST PUSH1 0x0 PUSH2 0x30A CALLVALUE PUSH2 0xDDC JUMP JUMPDEST POP SWAP1 POP PUSH2 0x33A DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xB DUP2 MSTORE PUSH1 0x20 ADD PUSH11 0x1B5A5B9D0819985A5B1959 PUSH1 0xAA SHL DUP2 MSTORE POP PUSH2 0xE3E JUMP JUMPDEST POP STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x349 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x352 PUSH2 0x10A4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x38C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x374 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x3B9 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x400 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1131 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x420 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x579 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x438 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x472 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x484 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x4A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x4F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x509 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x52A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP POP PUSH1 0xFF DUP4 CALLDATALOAD AND SWAP4 POP POP POP PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x119E JUMP JUMPDEST STOP JUMPDEST PUSH2 0x579 PUSH2 0x144C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x58F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x598 PUSH2 0x148A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x598 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1490 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x598 PUSH2 0x150C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x598 PUSH2 0x1512 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x613 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x400 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x62A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x1575 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x656 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x65F PUSH2 0x15A3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x681 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x579 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x698 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x6B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x6C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x6E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x702 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x714 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x735 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x15AC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x74C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x598 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x763 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1611 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x77F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x598 PUSH2 0x16C9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x794 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x598 PUSH2 0x16D8 JUMP JUMPDEST PUSH2 0x579 PUSH2 0x16DE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7BA PUSH2 0x1720 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x598 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x172F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x80C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x598 PUSH2 0x1780 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x821 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x598 PUSH2 0x1786 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x836 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x598 PUSH2 0x1791 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x84B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7BA PUSH2 0x1797 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x860 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x598 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x877 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x17A6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x893 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x598 PUSH2 0x17C1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x579 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x8BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x8F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x904 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x925 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x977 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x989 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x9AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP POP DUP3 CALLDATALOAD SWAP4 POP POP POP PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1834 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x598 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA13 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1859 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA26 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x598 PUSH2 0x1864 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA3B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x598 PUSH2 0x186A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA50 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x598 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1870 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA7A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x352 PUSH2 0x18AD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA8F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x598 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAA6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1905 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAC2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x598 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAD9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1969 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAEC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x598 PUSH2 0x19A6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB01 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x598 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB18 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1B6B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB2B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x400 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xB42 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1BA8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB64 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x598 PUSH2 0x1BD5 JUMP JUMPDEST PUSH2 0x579 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xB83 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x1BDB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBA7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x400 PUSH2 0x1C28 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBBC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x598 PUSH2 0x1C2D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBD1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x598 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xBE8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x1CE5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x598 PUSH2 0x1D09 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC29 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC50 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC40 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1D7D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP5 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP4 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x598 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC99 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1E12 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCAC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x598 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xCC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1E1D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCD6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x598 PUSH2 0x1E28 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x598 PUSH2 0x1E2E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD00 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x598 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xD17 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x1E34 JUMP JUMPDEST PUSH2 0x579 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD45 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1E5F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD61 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x598 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD78 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1EAD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD94 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7BA PUSH2 0x1EE7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xDA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x598 PUSH2 0x1EF6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xDBE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x598 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xDD5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1F6B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xDEA DUP2 PUSH2 0x1FA8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDF4 PUSH2 0x19A6 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0xE1F JUMPI PUSH2 0xE12 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0xE0B JUMPI INVALID JUMPDEST PUSH1 0x20 PUSH2 0x2064 JUMP JUMPDEST SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0xE2F SWAP1 POP JUMP JUMPDEST PUSH2 0xE29 CALLER DUP7 PUSH2 0x20CA JUMP JUMPDEST SWAP4 POP SWAP4 POP POP JUMPDEST PUSH2 0xE38 DUP2 PUSH2 0x244F JUMP JUMPDEST POP SWAP2 POP SWAP2 JUMP JUMPDEST DUP2 PUSH2 0xE48 JUMPI PUSH2 0x10A0 JUMP JUMPDEST PUSH1 0x60 DUP2 MLOAD PUSH1 0x7 ADD PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xE79 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0xECA JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0xE94 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD MLOAD PUSH1 0xF8 SHR PUSH1 0xF8 SHL DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xEAB JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x1 ADD PUSH2 0xE7F JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0xFD SHL SWAP1 DUP4 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0xEDE JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x28 PUSH1 0xF8 SHL DUP3 DUP3 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0xF09 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH2 0x3E8 DUP5 DIV PUSH1 0x30 ADD PUSH1 0xF8 SHL DUP3 DUP3 PUSH1 0x2 ADD DUP2 MLOAD DUP2 LT PUSH2 0xF3A JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0xA PUSH1 0x64 DUP6 DIV MOD PUSH1 0x30 ADD PUSH1 0xF8 SHL DUP3 DUP3 PUSH1 0x3 ADD DUP2 MLOAD DUP2 LT PUSH2 0xF6D JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0xA DUP1 DUP6 DIV MOD PUSH1 0x30 ADD PUSH1 0xF8 SHL DUP3 DUP3 PUSH1 0x4 ADD DUP2 MLOAD DUP2 LT PUSH2 0xF9F JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0xA DUP5 MOD PUSH1 0x30 ADD PUSH1 0xF8 SHL DUP3 DUP3 PUSH1 0x5 ADD DUP2 MLOAD DUP2 LT PUSH2 0xFCF JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x29 PUSH1 0xF8 SHL DUP3 DUP3 PUSH1 0x6 ADD DUP2 MLOAD DUP2 LT PUSH2 0xFFA JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP DUP2 DUP5 ISZERO PUSH2 0x109C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1061 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1049 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x108E JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 DUP5 DUP7 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x1129 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x10FE JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1129 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x110C JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP7 SWAP1 SSTORE DUP2 MLOAD DUP7 DUP2 MSTORE SWAP2 MLOAD SWAP4 SWAP5 SWAP4 SWAP1 SWAP3 DUP5 SWAP3 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST CALLER PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 EQ PUSH2 0x11F0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x554E PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xA SLOAD ISZERO DUP1 ISZERO PUSH2 0x1200 JUMPI POP PUSH1 0xB SLOAD ISZERO JUMPDEST PUSH2 0x123B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5468 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP7 SWAP1 SSTORE DUP6 PUSH2 0x127C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x30 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x548B PUSH1 0x30 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1287 DUP10 PUSH2 0x24BE JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x12DC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x73657474696E6720636F6D7074726F6C6C6572206661696C6564000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x12E4 PUSH2 0x25E3 JUMP JUMPDEST PUSH1 0xA SSTORE PUSH8 0xDE0B6B3A7640000 PUSH1 0xB SSTORE PUSH2 0x12FC DUP9 PUSH2 0x25E7 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x133B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x54BB PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP6 MLOAD PUSH2 0x134E SWAP1 PUSH1 0x1 SWAP1 PUSH1 0x20 DUP10 ADD SWAP1 PUSH2 0x5258 JUMP JUMPDEST POP DUP5 MLOAD PUSH2 0x1362 SWAP1 PUSH1 0x2 SWAP1 PUSH1 0x20 DUP9 ADD SWAP1 PUSH2 0x5258 JUMP JUMPDEST POP PUSH1 0x3 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF DUP7 AND OR SWAP1 SSTORE PUSH2 0x137B DUP4 PUSH2 0x28ED JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x13D0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x73657474696E67207265736572766520666163746F72206661696C6564000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x13D9 DUP3 PUSH2 0x29A6 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x142E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x73657474696E672061646D696E20666565206661696C65640000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xB0 SHL NOT AND PUSH1 0x1 PUSH1 0xB0 SHL OR SWAP1 SSTORE POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1457 CALLVALUE PUSH2 0xDDC JUMP JUMPDEST POP SWAP1 POP PUSH2 0x1487 DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xB DUP2 MSTORE PUSH1 0x20 ADD PUSH11 0x1B5A5B9D0819985A5B1959 PUSH1 0xAA SHL DUP2 MSTORE POP PUSH2 0xE3E JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x149C DUP2 PUSH2 0x1FA8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14A6 PUSH2 0x19A6 JUMP JUMPDEST EQ PUSH2 0x14F1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x1858D8DC9D59481A5B9D195C995CDD0819985A5B1959 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x14FA DUP4 PUSH2 0x1905 JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH2 0x1506 DUP2 PUSH2 0x244F JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x10 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x151F PUSH2 0x2ACB JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1532 JUMPI INVALID JUMPDEST EQ PUSH2 0x156E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x35 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x55FB PUSH1 0x35 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP2 POP POP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1581 DUP2 PUSH2 0x1FA8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x158F CALLER DUP8 DUP8 DUP8 PUSH2 0x2B8B JUMP JUMPDEST EQ SWAP2 POP PUSH2 0x159B DUP2 PUSH2 0x244F JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x15B4 PUSH2 0x2E1F JUMP JUMPDEST PUSH2 0x15F8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x31B0B63632B9103737BA1030B236B4B7 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1604 PUSH1 0x1 DUP6 DUP6 PUSH2 0x52D2 JUMP JUMPDEST POP PUSH2 0x109C PUSH1 0x2 DUP4 DUP4 PUSH2 0x52D2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x161B PUSH2 0x5340 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x162E PUSH2 0x1D09 JUMP JUMPDEST SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP SWAP1 DUP2 SWAP1 PUSH2 0x165A SWAP1 DUP5 SWAP1 PUSH2 0x2F98 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x166D JUMPI INVALID JUMPDEST EQ PUSH2 0x16BF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x62616C616E636520636F756C64206E6F742062652063616C63756C6174656400 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x16D3 PUSH2 0x2FEB JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0xC SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x16E9 CALLVALUE PUSH2 0x3017 JUMP JUMPDEST POP SWAP1 POP PUSH2 0x1487 DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x12 DUP2 MSTORE PUSH1 0x20 ADD PUSH18 0x1C995C185E509BDC9C9BDDC819985A5B1959 PUSH1 0x72 SHL DUP2 MSTORE POP PUSH2 0xE3E JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x173B DUP2 PUSH2 0x1FA8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1745 PUSH2 0x19A6 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x176B JUMPI PUSH2 0x1763 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x175C JUMPI INVALID JUMPDEST PUSH1 0x3B PUSH2 0x2064 JUMP JUMPDEST SWAP3 POP POP PUSH2 0x14FD JUMP JUMPDEST PUSH2 0x1774 DUP5 PUSH2 0x3058 JUMP JUMPDEST SWAP3 POP POP PUSH2 0x1506 DUP2 PUSH2 0x244F JUMP JUMPDEST PUSH1 0xE SLOAD DUP2 JUMP JUMPDEST PUSH7 0x6379DA05B60000 DUP2 JUMP JUMPDEST PUSH1 0xA SLOAD DUP2 JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x17CD DUP2 PUSH2 0x1FA8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x17D7 PUSH2 0x19A6 JUMP JUMPDEST EQ PUSH2 0x1822 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x1858D8DC9D59481A5B9D195C995CDD0819985A5B1959 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0xC SLOAD SWAP2 POP PUSH2 0x1830 DUP2 PUSH2 0x244F JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH8 0x2C68AF0BB140000 PUSH1 0x12 PUSH2 0x184F DUP9 DUP9 DUP5 DUP10 DUP10 DUP7 DUP11 DUP11 PUSH2 0x119E JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1198 DUP3 PUSH2 0x3124 JUMP JUMPDEST PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xD SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x187C DUP2 PUSH2 0x1FA8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1886 PUSH2 0x19A6 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x18A4 JUMPI PUSH2 0x1763 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x189D JUMPI INVALID JUMPDEST PUSH1 0x52 PUSH2 0x2064 JUMP JUMPDEST PUSH2 0x1774 DUP5 PUSH2 0x29A6 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP4 AND DUP5 SWAP1 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x1129 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x10FE JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1129 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1913 DUP5 PUSH2 0x3164 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1926 JUMPI INVALID JUMPDEST EQ PUSH2 0x1962 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x37 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x54DD PUSH1 0x37 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1975 DUP2 PUSH2 0x1FA8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x197F PUSH2 0x19A6 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x199D JUMPI PUSH2 0x1763 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x1996 JUMPI INVALID JUMPDEST PUSH1 0x33 PUSH2 0x2064 JUMP JUMPDEST PUSH2 0x1774 DUP5 PUSH2 0x3218 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x19B1 PUSH2 0x25E3 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0xA SLOAD EQ ISZERO PUSH2 0x19C7 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x1572 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x19D1 PUSH2 0x2FEB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x5 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 PUSH4 0x15F24053 DUP4 PUSH1 0xC SLOAD PUSH2 0x1A16 PUSH1 0xD SLOAD PUSH2 0x1A11 PUSH1 0xE SLOAD PUSH1 0xF SLOAD PUSH2 0x3299 JUMP JUMPDEST PUSH2 0x3299 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1A58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1A6C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1A82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH6 0x48C27395000 DUP2 GT ISZERO PUSH2 0x1AE1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x626F72726F772072617465206973206162737572646C79206869676800000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1AF0 DUP6 PUSH1 0xA SLOAD PUSH2 0x32CF JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1B03 JUMPI INVALID JUMPDEST EQ PUSH2 0x1B55 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x636F756C64206E6F742063616C63756C61746520626C6F636B2064656C746100 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1B61 DUP6 DUP6 DUP6 DUP5 PUSH2 0x32F2 JUMP JUMPDEST SWAP6 POP POP POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1B77 DUP2 PUSH2 0x1FA8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B81 PUSH2 0x19A6 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1B9F JUMPI PUSH2 0x1763 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x1B98 JUMPI INVALID JUMPDEST PUSH1 0x37 PUSH2 0x2064 JUMP JUMPDEST PUSH2 0x1774 DUP5 PUSH2 0x350A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1BB4 DUP2 PUSH2 0x1FA8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1BC2 CALLER CALLER DUP8 DUP8 PUSH2 0x2B8B JUMP JUMPDEST EQ SWAP2 POP PUSH2 0x1BCE DUP2 PUSH2 0x244F JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1BE8 DUP4 CALLVALUE DUP5 PUSH2 0x35E6 JUMP JUMPDEST POP SWAP1 POP PUSH2 0x1C23 DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x16 DUP2 MSTORE PUSH1 0x20 ADD PUSH22 0x1B1A5C5D5A59185D19509BDC9C9BDDC819985A5B1959 PUSH1 0x52 SHL DUP2 MSTORE POP PUSH2 0xE3E JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xB8168816 PUSH2 0x1C49 PUSH2 0x2FEB JUMP JUMPDEST PUSH1 0xC SLOAD PUSH2 0x1C60 PUSH1 0xD SLOAD PUSH2 0x1A11 PUSH1 0xE SLOAD PUSH1 0xF SLOAD PUSH2 0x3299 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x8 SLOAD PUSH1 0x9 SLOAD ADD ADD PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1CB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1CC8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1CDE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH2 0x1CF2 DUP2 PUSH2 0x1FA8 JUMP JUMPDEST PUSH2 0x1CFE CALLER DUP7 DUP7 DUP7 PUSH2 0x36D2 JUMP JUMPDEST SWAP2 POP PUSH2 0x159B DUP2 PUSH2 0x244F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1D15 DUP2 PUSH2 0x1FA8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D1F PUSH2 0x19A6 JUMP JUMPDEST EQ PUSH2 0x1D6A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x1858D8DC9D59481A5B9D195C995CDD0819985A5B1959 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1D72 PUSH2 0x1512 JUMP JUMPDEST SWAP2 POP PUSH2 0x1830 DUP2 PUSH2 0x244F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP2 SWAP1 DUP2 SWAP1 DUP2 SWAP1 DUP2 DUP1 DUP1 PUSH2 0x1DA8 DUP10 PUSH2 0x3164 JUMP JUMPDEST SWAP4 POP SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1DBA JUMPI INVALID JUMPDEST EQ PUSH2 0x1DD8 JUMPI PUSH1 0x9 JUMPDEST SWAP8 POP PUSH1 0x0 SWAP7 POP DUP7 SWAP6 POP DUP6 SWAP5 POP PUSH2 0x1E0B SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x1DE0 PUSH2 0x2ACB JUMP JUMPDEST SWAP3 POP SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1DF2 JUMPI INVALID JUMPDEST EQ PUSH2 0x1DFE JUMPI PUSH1 0x9 PUSH2 0x1DC2 JUMP JUMPDEST POP PUSH1 0x0 SWAP7 POP SWAP2 SWAP5 POP SWAP3 POP SWAP1 POP JUMPDEST SWAP2 SWAP4 POP SWAP2 SWAP4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1198 DUP3 PUSH2 0x3AB2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1198 DUP3 PUSH2 0x3AF0 JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xF SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E6B DUP3 CALLVALUE PUSH2 0x3B29 JUMP JUMPDEST POP SWAP1 POP PUSH2 0x10A0 DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x18 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x7265706179426F72726F77426568616C66206661696C65640000000000000000 DUP2 MSTORE POP PUSH2 0xE3E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1EB8 PUSH2 0x19A6 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1EDE JUMPI PUSH2 0x1ED6 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x1ECF JUMPI INVALID JUMPDEST PUSH1 0x4B PUSH2 0x2064 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x16C4 JUMP JUMPDEST PUSH2 0x1962 DUP4 PUSH2 0x25E7 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x15F24053 PUSH2 0x1F12 PUSH2 0x2FEB JUMP JUMPDEST PUSH1 0xC SLOAD PUSH2 0x1F29 PUSH1 0xD SLOAD PUSH2 0x1A11 PUSH1 0xE SLOAD PUSH1 0xF SLOAD PUSH2 0x3299 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1CB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1F77 DUP2 PUSH2 0x1FA8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F81 PUSH2 0x19A6 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1F9F JUMPI PUSH2 0x1763 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x1F98 JUMPI INVALID JUMPDEST PUSH1 0x59 PUSH2 0x2064 JUMP JUMPDEST PUSH2 0x1774 DUP5 PUSH2 0x28ED JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xB0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1FF3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xA PUSH1 0x24 DUP3 ADD MSTORE PUSH10 0x1C994B595B9D195C9959 PUSH1 0xB2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x2054 JUMPI PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xC90C20B1 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP3 PUSH4 0xC90C20B1 SWAP3 DUP3 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x203B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x204F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xB0 SHL NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH32 0x45B96FE442630264581B197E84BBADA861235052C5A1AADFFF9EA4E40A969AA0 DUP4 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x2093 JUMPI INVALID JUMPDEST DUP4 PUSH1 0x63 DUP2 GT ISZERO PUSH2 0x209F JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 DUP3 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x1962 JUMPI INVALID JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x4EF4C3E1 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x24 DUP6 ADD MSTORE PUSH1 0x44 DUP5 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 DUP5 SWAP4 AND SWAP2 PUSH4 0x4EF4C3E1 SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x212D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2141 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2157 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x217B JUMPI PUSH2 0x216E PUSH1 0x3 PUSH1 0x21 DUP4 PUSH2 0x3B8E JUMP JUMPDEST SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH2 0x2448 SWAP1 POP JUMP JUMPDEST PUSH2 0x2183 PUSH2 0x25E3 JUMP JUMPDEST PUSH1 0xA SLOAD EQ PUSH2 0x2197 JUMPI PUSH2 0x216E PUSH1 0xA PUSH1 0x24 PUSH2 0x2064 JUMP JUMPDEST PUSH2 0x219F PUSH2 0x5353 JUMP JUMPDEST PUSH2 0x21A7 PUSH2 0x2ACB JUMP JUMPDEST PUSH1 0x40 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x21BE JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x21C9 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x21E0 JUMPI INVALID JUMPDEST EQ PUSH2 0x220F JUMPI PUSH2 0x2201 PUSH1 0x9 PUSH1 0x23 DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x21FC JUMPI INVALID JUMPDEST PUSH2 0x3B8E JUMP JUMPDEST SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x2448 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2219 DUP7 DUP7 PUSH2 0x3C17 JUMP JUMPDEST PUSH1 0xC0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD DUP3 MSTORE SWAP1 DUP4 ADD MLOAD DUP2 MSTORE PUSH2 0x223A SWAP2 SWAP1 PUSH2 0x3CAD JUMP JUMPDEST PUSH1 0x60 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2251 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x225C JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2273 JUMPI INVALID JUMPDEST EQ PUSH2 0x22C5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D494E545F45584348414E47455F43414C43554C4154494F4E5F4641494C4544 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x22D5 PUSH1 0x10 SLOAD DUP3 PUSH1 0x60 ADD MLOAD PUSH2 0x3299 JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x2302 SWAP2 SWAP1 PUSH2 0x3299 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MLOAD PUSH1 0x10 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0xC0 DUP5 ADD MLOAD PUSH1 0x60 DUP1 DUP7 ADD MLOAD DUP4 MLOAD SWAP5 DUP6 MSTORE SWAP5 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE MLOAD PUSH32 0x4C209B5FC8AD50758F13E2E1088BA56A560DFF690A1C6FEF26394F4C03821C4F SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 ADDRESS SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5577 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 PUSH1 0x4 DUP1 SLOAD PUSH1 0xC0 DUP4 ADD MLOAD PUSH1 0x60 DUP5 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x41C728B9 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS SWAP6 DUP2 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND PUSH1 0x24 DUP8 ADD MSTORE PUSH1 0x44 DUP7 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x64 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE MLOAD SWAP2 AND SWAP2 PUSH4 0x41C728B9 SWAP2 PUSH1 0x84 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x241B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x242F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x0 SWAP3 POP PUSH2 0x243C SWAP2 POP POP JUMP JUMPDEST DUP2 PUSH1 0xC0 ADD MLOAD SWAP4 POP SWAP4 POP POP POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xB0 SHL NOT AND PUSH1 0x1 PUSH1 0xB0 SHL OR SWAP1 SSTORE DUP1 PUSH2 0x1487 JUMPI PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x319728A1 PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP3 PUSH4 0x632E5142 SWAP3 DUP3 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x24AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x109C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH3 0x3F1EE9 PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND SWAP4 DUP7 AND SWAP3 PUSH3 0x7E3DD2 SWAP3 DUP2 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2503 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2517 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x252D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x2580 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6D61726B6572206D6574686F642072657475726E65642066616C736500000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP3 DUP5 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD PUSH32 0x7AC369DBD14FA5EA3F473ED67CC9D598964A77501540BA6751EB0B3DECF5870D SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x0 PUSH2 0x1962 JUMP JUMPDEST NUMBER SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x25F2 PUSH2 0x2E1F JUMP JUMPDEST PUSH2 0x2602 JUMPI PUSH2 0x1ED6 PUSH1 0x1 PUSH1 0x4D PUSH2 0x2064 JUMP JUMPDEST PUSH2 0x260A PUSH2 0x25E3 JUMP JUMPDEST PUSH1 0xA SLOAD EQ PUSH2 0x261E JUMPI PUSH2 0x1ED6 PUSH1 0xA PUSH1 0x4C PUSH2 0x2064 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x2191F92A 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 0x266F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2683 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2699 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x26EC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6D61726B6572206D6574686F642072657475726E65642066616C736500000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP3 DUP5 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD PUSH32 0xEDFFC32E068C7C95DFD4BDFD5C4D939A084D6B11C4199EAC8436ED234D72F926 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0x281E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x6CC1140B PUSH1 0xE1 SHL OR DUP2 MSTORE SWAP2 MLOAD DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP4 DUP3 SWAP2 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x27B3 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x2794 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2815 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 0x281A JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP POP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x742A137B PUSH1 0xE1 SHL OR DUP2 MSTORE SWAP2 MLOAD DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP4 DUP3 SWAP2 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x287A JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x285B JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x28DC 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 0x28E1 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP PUSH1 0x0 SWAP2 POP PUSH2 0x1962 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x28F7 PUSH2 0x2E1F JUMP JUMPDEST PUSH2 0x290E JUMPI PUSH2 0x2907 PUSH1 0x1 PUSH1 0x5A PUSH2 0x2064 JUMP JUMPDEST SWAP1 POP PUSH2 0x16C4 JUMP JUMPDEST PUSH2 0x2916 PUSH2 0x25E3 JUMP JUMPDEST PUSH1 0xA SLOAD EQ PUSH2 0x292A JUMPI PUSH2 0x2907 PUSH1 0xA PUSH1 0x5B PUSH2 0x2064 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH2 0x294A PUSH2 0x2942 DUP5 PUSH1 0x7 SLOAD PUSH2 0x3299 JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH2 0x3299 JUMP JUMPDEST GT ISZERO PUSH2 0x295C JUMPI PUSH2 0x2907 PUSH1 0x2 PUSH1 0x5C PUSH2 0x2064 JUMP JUMPDEST PUSH1 0x9 DUP1 SLOAD SWAP1 DUP4 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP6 SWAP1 MSTORE DUP2 MLOAD PUSH32 0xAAA68312E2EA9D50E16AF5068410AB56E1A1FD06037B1A35664812C30F821460 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x0 PUSH2 0x1962 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x29B0 PUSH2 0x25E3 JUMP JUMPDEST PUSH1 0xA SLOAD EQ PUSH2 0x29C4 JUMPI PUSH2 0x2907 PUSH1 0xA PUSH1 0x54 PUSH2 0x2064 JUMP JUMPDEST PUSH1 0x0 NOT DUP3 EQ ISZERO PUSH2 0x29D4 JUMPI PUSH1 0x7 SLOAD SWAP2 POP JUMPDEST PUSH1 0x0 PUSH2 0x29DE PUSH2 0x3CC4 JUMP JUMPDEST SWAP1 POP PUSH8 0xDE0B6B3A7640000 PUSH2 0x29FE PUSH2 0x29F8 PUSH1 0x9 SLOAD DUP7 PUSH2 0x3299 JUMP JUMPDEST DUP4 PUSH2 0x3299 JUMP JUMPDEST GT ISZERO PUSH2 0x2A10 JUMPI PUSH2 0x1ED6 PUSH1 0x2 PUSH1 0x55 PUSH2 0x2064 JUMP JUMPDEST DUP3 PUSH1 0x7 SLOAD EQ PUSH2 0x2A76 JUMPI PUSH2 0x2A21 PUSH2 0x2E1F JUMP JUMPDEST PUSH2 0x2A31 JUMPI PUSH2 0x1ED6 PUSH1 0x1 PUSH1 0x53 PUSH2 0x2064 JUMP JUMPDEST PUSH1 0x7 DUP1 SLOAD SWAP1 DUP5 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP7 SWAP1 MSTORE DUP2 MLOAD PUSH32 0xCDD0B588250E1398549F79CFDB8217C186688822905D6715B0834EA1C865594A SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMPDEST DUP1 PUSH1 0x8 SLOAD EQ PUSH2 0x2AC4 JUMPI PUSH1 0x8 DUP1 SLOAD SWAP1 DUP3 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP2 MLOAD PUSH32 0x92EEF861B6533B7D3417F39C2AD7B460EED4E88A32FA3604F30E718B7602E7DC SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMPDEST PUSH1 0x0 PUSH2 0x1962 JUMP JUMPDEST PUSH1 0x10 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP1 PUSH2 0x2AE6 JUMPI POP POP PUSH1 0x6 SLOAD PUSH1 0x0 SWAP2 POP PUSH2 0x2B87 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2AF0 PUSH2 0x2FEB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2AFC PUSH2 0x5340 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2B1E DUP5 PUSH1 0xC SLOAD PUSH2 0x2B19 PUSH1 0xD SLOAD PUSH2 0x1A11 PUSH1 0xE SLOAD PUSH1 0xF SLOAD PUSH2 0x3299 JUMP JUMPDEST PUSH2 0x3D13 JUMP JUMPDEST SWAP4 POP SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2B30 JUMPI INVALID JUMPDEST EQ PUSH2 0x2B45 JUMPI SWAP6 POP PUSH1 0x0 SWAP5 POP PUSH2 0x2B87 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x2B4F DUP4 DUP7 PUSH2 0x3D60 JUMP JUMPDEST SWAP3 POP SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2B61 JUMPI INVALID JUMPDEST EQ PUSH2 0x2B76 JUMPI SWAP6 POP PUSH1 0x0 SWAP5 POP PUSH2 0x2B87 SWAP4 POP POP POP POP JUMP JUMPDEST POP MLOAD PUSH1 0x0 SWAP6 POP SWAP4 POP PUSH2 0x2B87 SWAP3 POP POP POP JUMP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x17B9B84B PUSH1 0xE3 SHL DUP2 MSTORE ADDRESS SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x24 DUP6 ADD MSTORE DUP6 DUP2 AND PUSH1 0x44 DUP6 ADD MSTORE PUSH1 0x64 DUP5 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 SWAP3 SWAP1 SWAP3 AND SWAP2 PUSH4 0xBDCDC258 SWAP2 PUSH1 0x84 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2BF6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2C0A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2C20 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x2C3F JUMPI PUSH2 0x2C37 PUSH1 0x3 PUSH1 0x5D DUP4 PUSH2 0x3B8E JUMP JUMPDEST SWAP2 POP POP PUSH2 0x2E17 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x2C65 JUMPI PUSH2 0x2C37 PUSH1 0x2 PUSH1 0x5E PUSH2 0x2064 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND SWAP1 DUP8 AND EQ ISZERO PUSH2 0x2C84 JUMPI POP PUSH1 0x0 NOT PUSH2 0x2CAC JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP11 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x2CBC DUP6 DUP10 PUSH2 0x32CF JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP PUSH1 0x0 DUP5 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2CCF JUMPI INVALID JUMPDEST EQ PUSH2 0x2CED JUMPI PUSH2 0x2CE0 PUSH1 0x9 PUSH1 0x5E PUSH2 0x2064 JUMP JUMPDEST SWAP7 POP POP POP POP POP POP POP PUSH2 0x2E17 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2D10 SWAP1 DUP10 PUSH2 0x32CF JUMP JUMPDEST SWAP1 SWAP5 POP SWAP2 POP PUSH1 0x0 DUP5 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2D23 JUMPI INVALID JUMPDEST EQ PUSH2 0x2D34 JUMPI PUSH2 0x2CE0 PUSH1 0x9 PUSH1 0x5F PUSH2 0x2064 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2D57 SWAP1 DUP10 PUSH2 0x3E10 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP1 POP PUSH1 0x0 DUP5 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2D6A JUMPI INVALID JUMPDEST EQ PUSH2 0x2D7B JUMPI PUSH2 0x2CE0 PUSH1 0x9 PUSH1 0x60 PUSH2 0x2064 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP6 SWAP1 SSTORE SWAP2 DUP12 AND DUP2 MSTORE KECCAK256 DUP2 SWAP1 SSTORE PUSH1 0x0 NOT DUP6 EQ PUSH2 0x2DD3 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP16 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP4 SWAP1 SSTORE JUMPDEST DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5577 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP11 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x0 SWAP7 POP POP POP POP POP POP POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x3E14691 PUSH1 0xE6 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND SWAP3 DUP4 SWAP3 PUSH4 0xF851A440 SWAP3 DUP2 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2E65 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2E79 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2E8F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ DUP1 ISZERO PUSH2 0x2F09 JUMPI POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA755EC2 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 0x2EDC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2EF0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2F06 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST DUP1 PUSH2 0x156E JUMPI POP CALLER PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 EQ DUP1 ISZERO PUSH2 0x156E JUMPI POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x2F1069BA 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 0x2F66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2F7A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2F90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x2FA5 PUSH2 0x5340 JUMP JUMPDEST PUSH2 0x2FAF DUP7 DUP7 PUSH2 0x3E36 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2FC2 JUMPI INVALID JUMPDEST EQ PUSH2 0x2FD3 JUMPI POP SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH2 0x2448 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2FDE DUP3 PUSH2 0x3E9E JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x2FFA SELFBALANCE CALLVALUE PUSH2 0x32CF JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x300D JUMPI INVALID JUMPDEST EQ PUSH2 0x156E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x3025 DUP2 PUSH2 0x1FA8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x302F PUSH2 0x19A6 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x304D JUMPI PUSH2 0xE12 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x3046 JUMPI INVALID JUMPDEST PUSH1 0x41 PUSH2 0x2064 JUMP JUMPDEST PUSH2 0xE29 CALLER CALLER DUP8 PUSH2 0x3EAD JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3063 PUSH2 0x2E1F JUMP JUMPDEST PUSH2 0x3073 JUMPI PUSH2 0x1ED6 PUSH1 0x1 PUSH1 0x3C PUSH2 0x2064 JUMP JUMPDEST PUSH2 0x307B PUSH2 0x25E3 JUMP JUMPDEST PUSH1 0xA SLOAD EQ PUSH2 0x308F JUMPI PUSH2 0x1ED6 PUSH1 0xA PUSH1 0x3E PUSH2 0x2064 JUMP JUMPDEST DUP3 PUSH2 0x3098 PUSH2 0x2FEB JUMP JUMPDEST LT ISZERO PUSH2 0x30AA JUMPI PUSH2 0x1ED6 PUSH1 0xE PUSH1 0x3D PUSH2 0x2064 JUMP JUMPDEST PUSH1 0xD SLOAD DUP4 GT ISZERO PUSH2 0x30C0 JUMPI PUSH2 0x1ED6 PUSH1 0x2 PUSH1 0x3F PUSH2 0x2064 JUMP JUMPDEST PUSH2 0x30CC PUSH1 0xD SLOAD DUP5 PUSH2 0x41FD JUMP JUMPDEST PUSH1 0xD DUP2 SWAP1 SSTORE SWAP1 POP PUSH2 0x30DD CALLER DUP5 PUSH2 0x4237 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP6 SWAP1 MSTORE DUP1 DUP3 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD PUSH32 0x3BAD0C59CF2F06E7314077049F48A93578CD16F5EF92329F1DAB1420A99C177E SWAP2 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 PUSH1 0x0 PUSH2 0x1962 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3130 DUP2 PUSH2 0x1FA8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x313A PUSH2 0x19A6 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x3158 JUMPI PUSH2 0x1763 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x3151 JUMPI INVALID JUMPDEST PUSH1 0x2A PUSH2 0x2064 JUMP JUMPDEST PUSH2 0x1774 CALLER PUSH1 0x0 DUP7 PUSH2 0x426D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 PUSH2 0x319B JUMPI POP PUSH1 0x0 SWAP5 POP DUP5 SWAP4 POP PUSH2 0x3213 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x31AB DUP2 PUSH1 0x0 ADD SLOAD PUSH1 0xB SLOAD PUSH2 0x4740 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP PUSH1 0x0 DUP5 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x31BE JUMPI INVALID JUMPDEST EQ PUSH2 0x31D3 JUMPI POP SWAP2 SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x3213 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x31E1 DUP4 DUP3 PUSH1 0x1 ADD SLOAD PUSH2 0x477F JUMP JUMPDEST SWAP1 SWAP5 POP SWAP2 POP PUSH1 0x0 DUP5 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x31F4 JUMPI INVALID JUMPDEST EQ PUSH2 0x3209 JUMPI POP SWAP2 SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x3213 SWAP2 POP POP JUMP JUMPDEST POP PUSH1 0x0 SWAP5 POP SWAP3 POP POP POP JUMPDEST SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3223 PUSH2 0x25E3 JUMP JUMPDEST PUSH1 0xA SLOAD EQ PUSH2 0x3237 JUMPI PUSH2 0x1ED6 PUSH1 0xA PUSH1 0x35 PUSH2 0x2064 JUMP JUMPDEST DUP3 PUSH2 0x3240 PUSH2 0x2FEB JUMP JUMPDEST LT ISZERO PUSH2 0x3252 JUMPI PUSH2 0x1ED6 PUSH1 0xE PUSH1 0x34 PUSH2 0x2064 JUMP JUMPDEST PUSH1 0xF SLOAD DUP4 GT ISZERO PUSH2 0x3268 JUMPI PUSH2 0x1ED6 PUSH1 0x2 PUSH1 0x36 PUSH2 0x2064 JUMP JUMPDEST PUSH2 0x3274 PUSH1 0xF SLOAD DUP5 PUSH2 0x41FD JUMP JUMPDEST PUSH1 0xF DUP2 SWAP1 SSTORE SWAP1 POP PUSH2 0x2AC4 PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 DUP5 PUSH2 0x4237 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1962 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x11 DUP2 MSTORE PUSH1 0x20 ADD PUSH17 0x6164646974696F6E206F766572666C6F77 PUSH1 0x78 SHL DUP2 MSTORE POP PUSH2 0x47AA JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 DUP4 GT PUSH2 0x32E6 JUMPI POP PUSH1 0x0 SWAP1 POP DUP2 DUP4 SUB PUSH2 0x2448 JUMP JUMPDEST POP PUSH1 0x3 SWAP1 POP PUSH1 0x0 PUSH2 0x2448 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x32FC PUSH2 0x5340 JUMP JUMPDEST PUSH2 0x3314 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP7 DUP2 MSTORE POP DUP5 PUSH2 0x4808 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3324 DUP3 PUSH1 0xC SLOAD PUSH2 0x4832 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3334 DUP3 PUSH1 0xC SLOAD PUSH2 0x3299 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3355 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x9 SLOAD DUP2 MSTORE POP DUP5 PUSH1 0xD SLOAD PUSH2 0x4851 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3376 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x8 SLOAD DUP2 MSTORE POP DUP6 PUSH1 0xF SLOAD PUSH2 0x4851 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3397 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x7 SLOAD DUP2 MSTORE POP DUP7 PUSH1 0xE SLOAD PUSH2 0x4851 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x33AA DUP8 PUSH1 0xB SLOAD PUSH1 0xB SLOAD PUSH2 0x4851 JUMP JUMPDEST PUSH1 0xA DUP14 SWAP1 SSTORE PUSH1 0xB DUP2 SWAP1 SSTORE PUSH1 0xC DUP7 SWAP1 SSTORE PUSH1 0xD DUP6 SWAP1 SSTORE PUSH1 0xF DUP5 SWAP1 SSTORE PUSH1 0xE DUP4 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP14 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP10 SWAP1 MSTORE DUP1 DUP3 ADD DUP4 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP9 SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH32 0x4DEC04E750CA11537CABCD8A9EAB06494DE08DA3735BC8871CD41250E190BC04 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG1 PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x24 DUP1 DUP3 ADD DUP15 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x5EFD0233 PUSH1 0xE1 SHL OR DUP2 MSTORE SWAP2 MLOAD DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP5 AND SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x3487 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x3468 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x34E9 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 0x34EE JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP PUSH1 0x0 SWAP2 POP PUSH2 0x34FA SWAP1 POP JUMP JUMPDEST SWAP13 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3515 PUSH2 0x25E3 JUMP JUMPDEST PUSH1 0xA SLOAD EQ PUSH2 0x3529 JUMPI PUSH2 0x1ED6 PUSH1 0xA PUSH1 0x39 PUSH2 0x2064 JUMP JUMPDEST DUP3 PUSH2 0x3532 PUSH2 0x2FEB JUMP JUMPDEST LT ISZERO PUSH2 0x3544 JUMPI PUSH2 0x1ED6 PUSH1 0xE PUSH1 0x38 PUSH2 0x2064 JUMP JUMPDEST PUSH1 0xE SLOAD DUP4 GT ISZERO PUSH2 0x355A JUMPI PUSH2 0x1ED6 PUSH1 0x2 PUSH1 0x3A PUSH2 0x2064 JUMP JUMPDEST PUSH2 0x3566 PUSH1 0xE SLOAD DUP5 PUSH2 0x41FD JUMP JUMPDEST PUSH1 0xE DUP2 SWAP1 SSTORE PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x3E14691 PUSH1 0xE6 SHL DUP2 MSTORE SWAP1 MLOAD SWAP4 SWAP5 POP PUSH2 0x2AC4 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP3 PUSH4 0xF851A440 SWAP3 DUP3 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x35B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x35C8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x35DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP5 PUSH2 0x4237 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x35F4 DUP2 PUSH2 0x1FA8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x35FE PUSH2 0x19A6 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x3629 JUMPI PUSH2 0x361C DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x3615 JUMPI INVALID JUMPDEST PUSH1 0x11 PUSH2 0x2064 JUMP JUMPDEST SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x36C0 SWAP1 POP JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA6AFED95 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3664 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3678 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x368E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x36AE JUMPI PUSH2 0x361C DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x36A7 JUMPI INVALID JUMPDEST PUSH1 0x12 PUSH2 0x2064 JUMP JUMPDEST PUSH2 0x36BA CALLER DUP9 DUP9 DUP9 PUSH2 0x4882 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP JUMPDEST PUSH2 0x36C9 DUP2 PUSH2 0x244F JUMP JUMPDEST POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xD02F7351 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x24 DUP6 ADD MSTORE DUP7 DUP2 AND PUSH1 0x44 DUP6 ADD MSTORE DUP6 DUP2 AND PUSH1 0x64 DUP6 ADD MSTORE PUSH1 0x84 DUP5 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 SWAP3 SWAP1 SWAP3 AND SWAP2 PUSH4 0xD02F7351 SWAP2 PUSH1 0xA4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3745 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3759 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x376F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x3786 JUMPI PUSH2 0x2C37 PUSH1 0x3 PUSH1 0x1D DUP4 PUSH2 0x3B8E JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x37AC JUMPI PUSH2 0x2C37 PUSH1 0x6 PUSH1 0x1E PUSH2 0x2064 JUMP JUMPDEST PUSH2 0x37B4 PUSH2 0x5391 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x37D7 SWAP1 DUP6 PUSH2 0x32CF JUMP JUMPDEST PUSH1 0x20 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x37EB JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x37F6 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x380A JUMPI INVALID JUMPDEST EQ PUSH2 0x382F JUMPI PUSH2 0x3826 PUSH1 0x9 PUSH1 0x1C DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x21FC JUMPI INVALID JUMPDEST SWAP3 POP POP POP PUSH2 0x2E17 JUMP JUMPDEST PUSH2 0x384E DUP5 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH7 0x6379DA05B60000 DUP2 MSTORE POP PUSH2 0x4D7A JUMP JUMPDEST PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x3860 SWAP1 DUP6 SWAP1 PUSH2 0x41FD JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x386D PUSH2 0x2ACB JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3881 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x388C JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x38A0 JUMPI INVALID JUMPDEST EQ PUSH2 0x38F2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x65786368616E67652072617465206D617468206572726F720000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x3912 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP4 PUSH1 0xC0 ADD MLOAD DUP2 MSTORE POP DUP3 PUSH1 0x80 ADD MLOAD PUSH2 0x4832 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xD SLOAD PUSH2 0x3925 SWAP2 PUSH2 0x3299 JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD MSTORE PUSH1 0x10 SLOAD PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x393C SWAP2 SWAP1 PUSH2 0x41FD JUMP JUMPDEST PUSH2 0x100 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x396A SWAP2 SWAP1 PUSH2 0x3E10 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x397E JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3989 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x399D JUMPI INVALID JUMPDEST EQ PUSH2 0x39B9 JUMPI PUSH2 0x3826 PUSH1 0x9 PUSH1 0x1B DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x21FC JUMPI INVALID JUMPDEST PUSH1 0xE0 DUP2 ADD MLOAD PUSH1 0xD SSTORE PUSH2 0x100 DUP2 ADD MLOAD PUSH1 0x10 SSTORE PUSH1 0x20 DUP1 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x11 DUP6 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 DUP7 ADD MLOAD SWAP3 DUP12 AND DUP1 DUP3 MSTORE SWAP1 DUP5 SWAP1 KECCAK256 SWAP3 SWAP1 SWAP3 SSTORE PUSH1 0x60 DUP6 ADD MLOAD DUP4 MLOAD SWAP1 DUP2 MSTORE SWAP3 MLOAD SWAP2 SWAP4 SWAP1 SWAP3 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5577 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD ADDRESS SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5577 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0xE0 DUP3 ADD MLOAD PUSH1 0x40 DUP1 MLOAD ADDRESS DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP3 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE MLOAD PUSH32 0xA91E67C5EA634CD43A12C5A482724B03DE01E85CA68702A53D0C2F45CB7C1DC5 SWAP2 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 PUSH1 0x0 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3ABE DUP2 PUSH2 0x1FA8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3AC8 PUSH2 0x19A6 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x3AE6 JUMPI PUSH2 0x1763 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x3ADF JUMPI INVALID JUMPDEST PUSH1 0xA PUSH2 0x2064 JUMP JUMPDEST PUSH2 0x1774 CALLER DUP6 PUSH2 0x4DA2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3AFC DUP2 PUSH2 0x1FA8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3B06 PUSH2 0x19A6 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x3B1D JUMPI PUSH2 0x1763 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x3151 JUMPI INVALID JUMPDEST PUSH2 0x1774 CALLER DUP6 PUSH1 0x0 PUSH2 0x426D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x3B37 DUP2 PUSH2 0x1FA8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3B41 PUSH2 0x19A6 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x3B6C JUMPI PUSH2 0x3B5F DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x3B58 JUMPI INVALID JUMPDEST PUSH1 0x40 PUSH2 0x2064 JUMP JUMPDEST SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x3B7D SWAP1 POP JUMP JUMPDEST PUSH2 0x3B77 CALLER DUP8 DUP8 PUSH2 0x3EAD JUMP JUMPDEST SWAP4 POP SWAP4 POP POP JUMPDEST PUSH2 0x3B86 DUP2 PUSH2 0x244F JUMP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x45B96FE442630264581B197E84BBADA861235052C5A1AADFFF9EA4E40A969AA0 DUP5 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x3BBD JUMPI INVALID JUMPDEST DUP5 PUSH1 0x63 DUP2 GT ISZERO PUSH2 0x3BC9 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 DUP2 ADD DUP6 SWAP1 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 PUSH1 0x3 DUP5 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x3BF6 JUMPI INVALID JUMPDEST EQ PUSH2 0x3C0C JUMPI DUP4 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x3C07 JUMPI INVALID JUMPDEST PUSH2 0x2E17 JUMP JUMPDEST POP PUSH2 0x3E8 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EQ PUSH2 0x3C68 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0xE6CADCC8CAE440DAD2E6DAC2E8C6D PUSH1 0x8B SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 CALLVALUE EQ PUSH2 0x1506 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0xECC2D8EACA40DAD2E6DAC2E8C6D PUSH1 0x93 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x3CBA PUSH2 0x5340 JUMP JUMPDEST PUSH2 0x2FAF DUP7 DUP7 PUSH2 0x50EC JUMP JUMPDEST PUSH1 0x0 PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xDD86FEA1 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 0x1CB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x3D23 DUP8 DUP8 PUSH2 0x3E10 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3D36 JUMPI INVALID JUMPDEST EQ PUSH2 0x3D47 JUMPI POP SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH2 0x3D58 JUMP JUMPDEST PUSH2 0x3D51 DUP2 DUP7 PUSH2 0x32CF JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3D6A PUSH2 0x5340 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3D7F DUP7 PUSH8 0xDE0B6B3A7640000 PUSH2 0x4740 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3D92 JUMPI INVALID JUMPDEST EQ PUSH2 0x3DB1 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x2448 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3DBE DUP4 DUP9 PUSH2 0x477F JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3DD1 JUMPI INVALID JUMPDEST EQ PUSH2 0x3DF3 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 SWAP5 POP SWAP3 POP PUSH2 0x2448 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP9 SWAP1 SWAP8 POP SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 DUP4 ADD DUP5 DUP2 LT PUSH2 0x3E28 JUMPI PUSH1 0x0 SWAP3 POP SWAP1 POP PUSH2 0x2448 JUMP JUMPDEST POP PUSH1 0x2 SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH2 0x2448 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3E40 PUSH2 0x5340 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3E51 DUP7 PUSH1 0x0 ADD MLOAD DUP7 PUSH2 0x4740 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3E64 JUMPI INVALID JUMPDEST EQ PUSH2 0x3E83 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x2448 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST MLOAD PUSH8 0xDE0B6B3A7640000 SWAP1 DIV SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x12004531 PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x24 DUP6 ADD MSTORE DUP6 DUP2 AND PUSH1 0x44 DUP6 ADD MSTORE PUSH1 0x64 DUP5 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 DUP5 SWAP4 AND SWAP2 PUSH4 0x24008A62 SWAP2 PUSH1 0x84 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3F18 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3F2C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3F42 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x3F66 JUMPI PUSH2 0x3F59 PUSH1 0x3 PUSH1 0x43 DUP4 PUSH2 0x3B8E JUMP JUMPDEST SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH2 0x3D58 SWAP1 POP JUMP JUMPDEST PUSH2 0x3F6E PUSH2 0x25E3 JUMP JUMPDEST PUSH1 0xA SLOAD EQ PUSH2 0x3F82 JUMPI PUSH2 0x3F59 PUSH1 0xA PUSH1 0x44 PUSH2 0x2064 JUMP JUMPDEST PUSH2 0x3F8A PUSH2 0x53DE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x3FB4 DUP7 PUSH2 0x3164 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3FCB JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3FD6 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3FED JUMPI INVALID JUMPDEST EQ PUSH2 0x4017 JUMPI PUSH2 0x4009 PUSH1 0x9 PUSH1 0x42 DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x21FC JUMPI INVALID JUMPDEST SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x3D58 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 NOT DUP6 EQ ISZERO PUSH2 0x4030 JUMPI PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x4038 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD DUP6 SWAP1 MSTORE JUMPDEST PUSH2 0x4046 DUP8 DUP3 PUSH1 0x40 ADD MLOAD PUSH2 0x3C17 JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x405B SWAP2 PUSH2 0x32CF JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4072 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x407D JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4094 JUMPI INVALID JUMPDEST EQ PUSH2 0x40D0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5514 PUSH1 0x3A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x40E0 PUSH1 0xC SLOAD DUP3 PUSH1 0xE0 ADD MLOAD PUSH2 0x32CF JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x40F7 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4102 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4119 JUMPI INVALID JUMPDEST EQ PUSH2 0x4155 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5597 PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xA0 DUP1 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP11 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 DUP6 SSTORE PUSH1 0xB SLOAD PUSH1 0x1 SWAP1 SWAP6 ADD SWAP5 SWAP1 SWAP5 SSTORE PUSH1 0xC0 DUP8 ADD MLOAD PUSH1 0xC DUP2 SWAP1 SSTORE PUSH1 0xE0 DUP9 ADD MLOAD SWAP6 MLOAD DUP3 MLOAD SWAP5 DUP16 AND DUP6 MSTORE SWAP5 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP2 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x60 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x80 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 MLOAD PUSH32 0x1A2A22CB034D26D1854BDC6666A5B91FE25EFBBB5DCAD3B0355478D6F5C362A1 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0xE0 ADD MLOAD PUSH1 0x0 SWAP8 SWAP1 SWAP7 POP SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1962 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x15 DUP2 MSTORE PUSH1 0x20 ADD PUSH21 0x7375627472616374696F6E20756E646572666C6F77 PUSH1 0x58 SHL DUP2 MSTORE POP PUSH2 0x514B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP3 ISZERO PUSH2 0x8FC MUL SWAP1 DUP4 SWAP1 PUSH1 0x0 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x1C23 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x427A JUMPI POP DUP2 ISZERO JUMPDEST PUSH2 0x42B5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5630 PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x42BD PUSH2 0x5353 JUMP JUMPDEST PUSH2 0x42C5 PUSH2 0x2ACB JUMP JUMPDEST PUSH1 0x40 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x42DC JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x42E7 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x42FE JUMPI INVALID JUMPDEST EQ PUSH2 0x4322 JUMPI PUSH2 0x431A PUSH1 0x9 PUSH1 0x2E DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x21FC JUMPI INVALID JUMPDEST SWAP2 POP POP PUSH2 0x1962 JUMP JUMPDEST DUP4 ISZERO PUSH2 0x43A3 JUMPI PUSH1 0x60 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD DUP3 MSTORE SWAP1 DUP3 ADD MLOAD DUP2 MSTORE PUSH2 0x4349 SWAP1 DUP6 PUSH2 0x2F98 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4360 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x436B JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4382 JUMPI INVALID JUMPDEST EQ PUSH2 0x439E JUMPI PUSH2 0x431A PUSH1 0x9 PUSH1 0x2C DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x21FC JUMPI INVALID JUMPDEST PUSH2 0x441C JUMP JUMPDEST PUSH2 0x43BF DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH1 0x40 ADD MLOAD DUP2 MSTORE POP PUSH2 0x3CAD JUMP JUMPDEST PUSH1 0x60 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x43D6 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x43E1 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x43F8 JUMPI INVALID JUMPDEST EQ PUSH2 0x4414 JUMPI PUSH2 0x431A PUSH1 0x9 PUSH1 0x2D DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x21FC JUMPI INVALID JUMPDEST PUSH1 0x80 DUP2 ADD DUP4 SWAP1 MSTORE JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xEABE7D91 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS SWAP5 DUP2 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 DUP2 AND PUSH1 0x24 DUP7 ADD MSTORE PUSH1 0x44 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE MLOAD PUSH1 0x0 SWAP4 SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0xEABE7D91 SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4483 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4497 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x44AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x44CD JUMPI PUSH2 0x44C4 PUSH1 0x3 PUSH1 0x2B DUP4 PUSH2 0x3B8E JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x1962 JUMP JUMPDEST PUSH2 0x44D5 PUSH2 0x25E3 JUMP JUMPDEST PUSH1 0xA SLOAD EQ PUSH2 0x44E9 JUMPI PUSH2 0x44C4 PUSH1 0xA PUSH1 0x2F PUSH2 0x2064 JUMP JUMPDEST PUSH2 0x44F9 PUSH1 0x10 SLOAD DUP4 PUSH1 0x60 ADD MLOAD PUSH2 0x32CF JUMP JUMPDEST PUSH1 0xA0 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP5 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4510 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x451B JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP3 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4532 JUMPI INVALID JUMPDEST EQ PUSH2 0x454E JUMPI PUSH2 0x44C4 PUSH1 0x9 PUSH1 0x31 DUP5 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x21FC JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 DUP4 ADD MLOAD PUSH2 0x4576 SWAP2 SWAP1 PUSH2 0x32CF JUMP JUMPDEST PUSH1 0xC0 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP5 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x458D JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4598 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP3 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x45AF JUMPI INVALID JUMPDEST EQ PUSH2 0x45CB JUMPI PUSH2 0x44C4 PUSH1 0x9 PUSH1 0x30 DUP5 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x21FC JUMPI INVALID JUMPDEST DUP2 PUSH1 0x80 ADD MLOAD PUSH2 0x45D8 PUSH2 0x2FEB JUMP JUMPDEST LT ISZERO PUSH2 0x45EA JUMPI PUSH2 0x44C4 PUSH1 0xE PUSH1 0x32 PUSH2 0x2064 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MLOAD PUSH1 0x10 SSTORE PUSH1 0xC0 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x4620 SWAP1 DUP8 SWAP1 PUSH2 0x4237 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MLOAD PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD ADDRESS SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5577 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 PUSH1 0x80 DUP3 ADD MLOAD PUSH1 0x60 DUP1 DUP5 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP4 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE MLOAD PUSH32 0xE5B754FB1ABB7F01B499791D0B820AE3B6AF3424AC1C59768EDB53F4EC31A929 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x4 DUP1 SLOAD PUSH1 0x80 DUP5 ADD MLOAD PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x51DFF989 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS SWAP6 DUP2 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND PUSH1 0x24 DUP8 ADD MSTORE PUSH1 0x44 DUP7 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x64 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE MLOAD SWAP2 AND SWAP2 PUSH4 0x51DFF989 SWAP2 PUSH1 0x84 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4715 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4729 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x0 SWAP3 POP PUSH2 0x4736 SWAP2 POP POP JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH2 0x4753 JUMPI POP PUSH1 0x0 SWAP1 POP DUP1 PUSH2 0x2448 JUMP JUMPDEST DUP4 DUP4 MUL DUP4 DUP6 DUP3 DUP2 PUSH2 0x4760 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x4774 JUMPI POP PUSH1 0x2 SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH2 0x2448 JUMP JUMPDEST PUSH1 0x0 SWAP3 POP SWAP1 POP PUSH2 0x2448 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH2 0x4793 JUMPI POP PUSH1 0x1 SWAP1 POP PUSH1 0x0 PUSH2 0x2448 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x479E JUMPI INVALID JUMPDEST DIV SWAP2 POP SWAP2 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 ADD DUP3 DUP6 DUP3 LT ISZERO PUSH2 0x47FF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x1061 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1049 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x4810 PUSH2 0x5340 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x4829 DUP6 PUSH1 0x0 ADD MLOAD DUP6 PUSH2 0x51A5 JUMP JUMPDEST SWAP1 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x483C PUSH2 0x5340 JUMP JUMPDEST PUSH2 0x4846 DUP5 DUP5 PUSH2 0x4808 JUMP JUMPDEST SWAP1 POP PUSH2 0x2E17 DUP2 PUSH2 0x3E9E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x485B PUSH2 0x5340 JUMP JUMPDEST PUSH2 0x4865 DUP6 DUP6 PUSH2 0x4808 JUMP JUMPDEST SWAP1 POP PUSH2 0x4879 PUSH2 0x4873 DUP3 PUSH2 0x3E9E JUMP JUMPDEST DUP5 PUSH2 0x3299 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x2FE3F38F PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x24 DUP6 ADD MSTORE DUP8 DUP2 AND PUSH1 0x44 DUP6 ADD MSTORE DUP7 DUP2 AND PUSH1 0x64 DUP6 ADD MSTORE PUSH1 0x84 DUP5 ADD DUP7 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 DUP5 SWAP4 AND SWAP2 PUSH4 0x5FC7E71E SWAP2 PUSH1 0xA4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x48F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4909 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x491F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x4943 JUMPI PUSH2 0x4936 PUSH1 0x3 PUSH1 0x14 DUP4 PUSH2 0x3B8E JUMP JUMPDEST SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH2 0x4D71 SWAP1 POP JUMP JUMPDEST PUSH2 0x494B PUSH2 0x25E3 JUMP JUMPDEST PUSH1 0xA SLOAD EQ PUSH2 0x495F JUMPI PUSH2 0x4936 PUSH1 0xA PUSH1 0x18 PUSH2 0x2064 JUMP JUMPDEST PUSH2 0x4967 PUSH2 0x25E3 JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6C540BAF 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 0x49A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x49B4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x49CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD EQ PUSH2 0x49DD JUMPI PUSH2 0x4936 PUSH1 0xA PUSH1 0x13 PUSH2 0x2064 JUMP JUMPDEST DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x4A03 JUMPI PUSH2 0x4936 PUSH1 0x6 PUSH1 0x19 PUSH2 0x2064 JUMP JUMPDEST DUP5 PUSH2 0x4A14 JUMPI PUSH2 0x4936 PUSH1 0x7 PUSH1 0x17 PUSH2 0x2064 JUMP JUMPDEST PUSH1 0x0 NOT DUP6 EQ ISZERO PUSH2 0x4A2A JUMPI PUSH2 0x4936 PUSH1 0x7 PUSH1 0x16 PUSH2 0x2064 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x4A38 DUP10 DUP10 DUP10 PUSH2 0x3EAD JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP DUP2 ISZERO PUSH2 0x4A68 JUMPI PUSH2 0x4A59 DUP3 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x4A52 JUMPI INVALID JUMPDEST PUSH1 0x1A PUSH2 0x2064 JUMP JUMPDEST SWAP5 POP PUSH1 0x0 SWAP4 POP PUSH2 0x4D71 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xC488847B PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 DUP2 AND PUSH1 0x24 DUP6 ADD MSTORE PUSH1 0x44 DUP5 ADD DUP6 SWAP1 MSTORE DUP2 MLOAD PUSH1 0x0 SWAP5 DUP6 SWAP5 SWAP3 SWAP1 SWAP3 AND SWAP3 PUSH4 0xC488847B SWAP3 PUSH1 0x64 DUP1 DUP3 ADD SWAP4 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4AC6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4ADA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4AF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 POP SWAP1 POP DUP2 ISZERO PUSH2 0x4B3B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x33 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x55C8 PUSH1 0x33 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 DUP9 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 DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4B92 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4BA6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4BBC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT ISZERO PUSH2 0x4C11 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C49515549444154455F5345495A455F544F4F5F4D5543480000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND ADDRESS EQ ISZERO PUSH2 0x4C37 JUMPI PUSH2 0x4C30 ADDRESS DUP14 DUP14 DUP6 PUSH2 0x36D2 JUMP JUMPDEST SWAP1 POP PUSH2 0x4CC1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xB2A02FF1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP15 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP14 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD SWAP2 DUP12 AND SWAP2 PUSH4 0xB2A02FF1 SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4C92 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4CA6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4CBC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP JUMPDEST DUP1 ISZERO PUSH2 0x4D0B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x1D1BDAD95B881CD95A5E9D5C994819985A5B1959 PUSH1 0x62 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP16 AND DUP3 MSTORE DUP1 DUP15 AND PUSH1 0x20 DUP4 ADD MSTORE DUP2 DUP4 ADD DUP8 SWAP1 MSTORE DUP12 AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP2 ADD DUP5 SWAP1 MSTORE SWAP1 MLOAD PUSH32 0x298637F684DA70674F26509B10F07EC2FBC77A335AB1E7D6215A4B2484D8BB52 SWAP2 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 LOG1 PUSH1 0x0 SWAP8 POP SWAP3 SWAP6 POP POP POP POP POP POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xDE0B6B3A7640000 PUSH2 0x4D93 DUP5 DUP5 PUSH1 0x0 ADD MLOAD PUSH2 0x51A5 JUMP JUMPDEST DUP2 PUSH2 0x4D9A JUMPI INVALID JUMPDEST DIV SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x368F5153 PUSH1 0xE2 SHL DUP2 MSTORE ADDRESS SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x24 DUP6 ADD MSTORE PUSH1 0x44 DUP5 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 SWAP3 SWAP1 SWAP3 AND SWAP2 PUSH4 0xDA3D454C SWAP2 PUSH1 0x64 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4E05 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4E19 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4E2F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x4E4E JUMPI PUSH2 0x4E46 PUSH1 0x3 PUSH1 0x10 DUP4 PUSH2 0x3B8E JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1198 JUMP JUMPDEST PUSH2 0x4E56 PUSH2 0x25E3 JUMP JUMPDEST PUSH1 0xA SLOAD EQ PUSH2 0x4E6A JUMPI PUSH2 0x4E46 PUSH1 0xA PUSH1 0xC PUSH2 0x2064 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4E74 PUSH2 0x2FEB JUMP JUMPDEST SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x4E93 JUMPI PUSH2 0x4E8A PUSH1 0xE PUSH1 0xB PUSH2 0x2064 JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x1198 JUMP JUMPDEST PUSH2 0x4E9B PUSH2 0x5424 JUMP JUMPDEST PUSH2 0x4EA4 DUP7 PUSH2 0x3164 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4EB8 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4EC3 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4ED7 JUMPI INVALID JUMPDEST EQ PUSH2 0x4EFC JUMPI PUSH2 0x4EF2 PUSH1 0x9 DUP1 DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x21FC JUMPI INVALID JUMPDEST SWAP4 POP POP POP POP PUSH2 0x1198 JUMP JUMPDEST PUSH2 0x4F0A DUP2 PUSH1 0x20 ADD MLOAD DUP7 PUSH2 0x3E10 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4F1E JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4F29 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4F3D JUMPI INVALID JUMPDEST EQ PUSH2 0x4F59 JUMPI PUSH2 0x4EF2 PUSH1 0x9 PUSH1 0xE DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x21FC JUMPI INVALID JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 DUP5 ADD MLOAD DUP2 MLOAD PUSH4 0x1DE6C8A5 PUSH1 0xE2 SHL DUP2 MSTORE ADDRESS SWAP5 DUP2 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x24 DUP5 ADD MSTORE MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 PUSH4 0x779B2294 SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4FB0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4FC4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4FDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 POP DUP3 ISZERO PUSH2 0x4FF1 JUMPI PUSH2 0x4EF2 PUSH1 0x3 PUSH1 0x10 DUP6 PUSH2 0x3B8E JUMP JUMPDEST PUSH2 0x4FFD PUSH1 0xC SLOAD DUP7 PUSH2 0x3E10 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x5011 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x501C JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x5030 JUMPI INVALID JUMPDEST EQ PUSH2 0x504C JUMPI PUSH2 0x4EF2 PUSH1 0x9 PUSH1 0xD DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x21FC JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE SWAP2 SWAP1 SWAP2 KECCAK256 SWAP1 DUP2 SSTORE PUSH1 0xB SLOAD PUSH1 0x1 SWAP1 SWAP2 ADD SSTORE PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0xC SSTORE PUSH2 0x5088 DUP7 DUP7 PUSH2 0x4237 JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 ADD MLOAD PUSH1 0x60 DUP1 DUP5 ADD MLOAD DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP11 SWAP1 MSTORE DUP1 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP1 DUP3 ADD MSTORE SWAP1 MLOAD PUSH32 0x13ED6866D4E1EE6DA46F845C46D7E54120883D75C5EA9A2DACC1C4CA8984AB80 SWAP2 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG1 PUSH1 0x0 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x50F6 PUSH2 0x5340 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x510B PUSH8 0xDE0B6B3A7640000 DUP8 PUSH2 0x4740 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x511E JUMPI INVALID JUMPDEST EQ PUSH2 0x513D JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x2448 JUMP JUMPDEST PUSH2 0x2FDE DUP2 DUP7 PUSH1 0x0 ADD MLOAD PUSH2 0x3D60 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x519D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x1061 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1049 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1962 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x17 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x6D756C7469706C69636174696F6E206F766572666C6F77000000000000000000 DUP2 MSTORE POP PUSH1 0x0 DUP4 ISZERO DUP1 PUSH2 0x51EF JUMPI POP DUP3 ISZERO JUMPDEST ISZERO PUSH2 0x51FC JUMPI POP PUSH1 0x0 PUSH2 0x1962 JUMP JUMPDEST DUP4 DUP4 MUL DUP4 DUP6 DUP3 DUP2 PUSH2 0x5209 JUMPI INVALID JUMPDEST DIV EQ DUP4 SWAP1 PUSH2 0x47FF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x1061 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1049 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x5299 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x52C6 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x52C6 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x52C6 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x52AB JUMP JUMPDEST POP PUSH2 0x1830 SWAP3 SWAP2 POP PUSH2 0x544D JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x5313 JUMPI DUP3 DUP1 ADD PUSH1 0xFF NOT DUP3 CALLDATALOAD AND OR DUP6 SSTORE PUSH2 0x52C6 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x52C6 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x52C6 JUMPI DUP3 CALLDATALOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x5325 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xE0 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x120 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x100 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH2 0x1572 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1830 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x5453 JUMP INVALID PUSH14 0x61726B6574206D6179206F6E6C79 KECCAK256 PUSH3 0x652069 PUSH15 0x697469616C697A6564206F6E636569 PUSH15 0x697469616C2065786368616E676520 PUSH19 0x617465206D7573742062652067726561746572 KECCAK256 PUSH21 0x68616E207A65726F2E73657474696E6720696E7465 PUSH19 0x6573742072617465206D6F64656C206661696C PUSH6 0x64626F72726F PUSH24 0x42616C616E636553746F7265643A20626F72726F7742616C PUSH2 0x6E63 PUSH6 0x53746F726564 0x49 PUSH15 0x7465726E616C206661696C65645245 POP COINBASE MSIZE 0x5F TIMESTAMP 0x4F MSTORE MSTORE 0x4F JUMPI 0x5F 0x4E GASLIMIT JUMPI 0x5F COINBASE NUMBER NUMBER 0x4F SSTORE 0x4E SLOAD 0x5F TIMESTAMP 0x4F MSTORE MSTORE 0x4F JUMPI 0x5F TIMESTAMP COINBASE 0x4C COINBASE 0x4E NUMBER GASLIMIT 0x5F NUMBER COINBASE 0x4C NUMBER SSTORE 0x4C COINBASE SLOAD 0x49 0x4F 0x4E 0x5F CHAINID COINBASE 0x49 0x4C GASLIMIT DIFFICULTY PUSH16 0x6E6C7920467573652061646D696E206D PUSH2 0x7920 PUSH10 0x6E697469616C697A6520 PUSH21 0x6865206D61726B6574DDF252AD1BE2C89B69C2B068 0xFC CALLDATACOPY DUP14 0xAA SWAP6 0x2B 0xA7 CALL PUSH4 0xC4A11628 CREATE2 GAS 0x4D CREATE2 0x23 0xB3 0xEF MSTORE GASLIMIT POP COINBASE MSIZE 0x5F TIMESTAMP 0x4F MSTORE MSTORE 0x4F JUMPI 0x5F 0x4E GASLIMIT JUMPI 0x5F SLOAD 0x4F SLOAD COINBASE 0x4C 0x5F TIMESTAMP COINBASE 0x4C COINBASE 0x4E NUMBER GASLIMIT 0x5F NUMBER COINBASE 0x4C NUMBER SSTORE 0x4C COINBASE SLOAD 0x49 0x4F 0x4E 0x5F CHAINID COINBASE 0x49 0x4C GASLIMIT DIFFICULTY 0x4C 0x49 MLOAD SSTORE 0x49 DIFFICULTY COINBASE SLOAD GASLIMIT 0x5F NUMBER 0x4F 0x4D POP SLOAD MSTORE 0x4F 0x4C 0x4C GASLIMIT MSTORE 0x5F NUMBER COINBASE 0x4C NUMBER SSTORE 0x4C COINBASE SLOAD GASLIMIT 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD 0x5F MSTORE8 GASLIMIT 0x49 GAS GASLIMIT 0x5F CHAINID COINBASE 0x49 0x4C GASLIMIT DIFFICULTY PUSH6 0x786368616E67 PUSH6 0x526174655374 PUSH16 0x7265643A2065786368616E6765526174 PUSH6 0x53746F726564 0x49 PUSH15 0x7465726E616C206661696C65646F6E PUSH6 0x206F66207265 PUSH5 0x65656D546F PUSH12 0x656E73496E206F7220726564 PUSH6 0x656D416D6F75 PUSH15 0x74496E206D757374206265207A6572 PUSH16 0xA265627A7A72315820495D2965B5B424 0x28 0xFC 0xDD DUP10 PUSH12 0x218D98A575DD0F1AB07D0040 0xB9 0x4E SUB 0x28 DUP2 SWAP3 MULMOD 0x2D PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ","sourceMap":"315:5940:7:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4214:8;4227:23;4240:9;4227:12;:23::i;:::-;4213:37;;;4260:34;4275:3;4260:34;;;;;;;;;;;;;-1:-1:-1;;;4260:34:7;;;:14;:34::i;:::-;4174:127;315:5940;960:18:11;;8:9:-1;5:2;;;30:1;27;20:12;5:2;960:18:11;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;960:18:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7552:232:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7552:232:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7552:232:10;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1302:1947;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1302:1947:10;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;1302:1947:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;1302:1947:10;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1302:1947:10;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1302:1947:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1302:1947:10;;;;;;;;-1:-1:-1;1302:1947:10;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;1302:1947:10;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1302:1947:10;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1302:1947:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1302:1947:10;;-1:-1:-1;;1302:1947:10;;;;;-1:-1:-1;;;1302:1947:10;;;;;;;;;:::i;:::-;;1459:131:7;;;:::i;2390:33:11:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2390:33:11;;;:::i;:::-;;;;;;;;;;;;;;;;11828:228:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11828:228:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11828:228:10;-1:-1:-1;;;;;11828:228:10;;:::i;3266:23:11:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3266:23:11;;;:::i;14620:257:10:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14620:257:10;;;:::i;6892:200::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6892:200:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6892:200:10;;;;;;;;;;;;;;;;;:::i;1146:21:11:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1146:21:11;;;:::i;:::-;;;;;;;;;;;;;;;;;;;70024:265:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;70024:265:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;70024:265:10;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;70024:265:10;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;70024:265:10;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;70024:265:10;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;70024:265:10;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;70024:265:10;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;70024:265:10;;-1:-1:-1;70024:265:10;-1:-1:-1;70024:265:10;:::i;8788:349::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8788:349:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8788:349:10;-1:-1:-1;;;;;8788:349:10;;:::i;16532:86::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16532:86:10;;;:::i;2784:24:11:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2784:24:11;;;:::i;3000:152:7:-;;;:::i;1713:39:11:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1713:39:11;;;:::i;:::-;;;;-1:-1:-1;;;;;1713:39:11;;;;;;;;;;;;;;59156:570:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;59156:570:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;59156:570:10;;:::i;3037:26:11:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3037:26:11;;;:::i;4209:56::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4209:56:11;;;:::i;2508:30::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2508:30:11;;;:::i;8834:25::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8834:25:11;;;:::i;8430:110:10:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8430:110:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8430:110:10;-1:-1:-1;;;;;8430:110:10;;:::i;11348:196::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11348:196:10;;;:::i;653:630:7:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;653:630:7;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;653:630:7;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;653:630:7;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;653:630:7;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;653:630:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;653:630:7;;;;;;;;-1:-1:-1;653:630:7;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;653:630:7;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;653:630:7;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;653:630:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;653:630:7;;-1:-1:-1;;653:630:7;;;-1:-1:-1;;;653:630:7;;;;:::i;2392:131::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2392:131:7;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2392:131:7;;:::i;2150:28:11:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2150:28:11;;;:::i;2909:25::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2909:25:11;;;:::i;54184:571:10:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;54184:571:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;54184:571:10;;:::i;1051:20:11:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1051:20:11;;;:::i;12258:283:10:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12258:283:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12258:283:10;-1:-1:-1;;;;;12258:283:10;;:::i;61865:587::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;61865:587:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;61865:587:10;;:::i;16859:1071::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16859:1071:10;;;:::i;64387:592::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;64387:592:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;64387:592:10;;:::i;6404:190::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6404:190:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6404:190:10;;;;;;;;:::i;2654:23:11:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2654:23:11;;;:::i;3875:233:7:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3875:233:7;;;;;;;;;;:::i;9626:36:11:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9626:36:11;;;:::i;10946:262:10:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10946:262:10;;;:::i;48862:198::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;48862:198:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;48862:198:10;;;;;;;;;;;;;;;;;:::i;14175:202::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14175:202:10;;;:::i;9475:685::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9475:685:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9475:685:10;-1:-1:-1;;;;;9475:685:10;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2784:111:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2784:111:7;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2784:111:7;;:::i;1933:::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1933:111:7;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1933:111:7;;:::i;2271:27:11:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2271:27:11;;;:::i;3165:25::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3165:25:11;;;:::i;8106:141:10:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8106:141:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;8106:141:10;;;;;;;;;;:::i;3336:196:7:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3336:196:7;-1:-1:-1;;;;;3336:196:7;;:::i;67100:625:10:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;67100:625:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;67100:625:10;-1:-1:-1;;;;;67100:625:10;;:::i;1849:42:11:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1849:42:11;;;:::i;10574:202:10:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10574:202:10;;;:::i;57039:606::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;57039:606:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;57039:606:10;;:::i;20737:546::-;20814:4;20820;20798:5;71531:30;71551:9;71531:19;:30::i;:::-;20836:10;20849:16;:14;:16::i;:::-;20836:29;-1:-1:-1;20879:29:10;;20875:249;;21050:59;21061:5;21055:12;;;;;;;;21069:39;21050:4;:59::i;:::-;21042:71;-1:-1:-1;21111:1:10;;-1:-1:-1;21042:71:10;;-1:-1:-1;21042:71:10;20875:249;21243:33;21253:10;21265;21243:9;:33::i;:::-;21236:40;;;;;71571:1;71582:29;71601:9;71582:18;:29::i;:::-;20737:546;;;;:::o;5421:832:7:-;5510:31;5506:68;;5557:7;;5506:68;5584:24;5627:7;5621:21;5645:1;5621:25;5611:36;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;104:10;5611:36:7;87:34:-1;135:17;;-1:-1;5611:36:7;-1:-1:-1;5584:63:7;-1:-1:-1;5657:6:7;5674:103;5696:7;5690:21;5686:1;:25;5674:103;;;5755:7;5764:1;5749:17;;;;;;;;;;;;;;;;5732:11;5744:1;5732:14;;;;;;;;;;;:34;-1:-1:-1;;;;;5732:34:7;;;;;;;;-1:-1:-1;5713:3:7;;5674:103;;;5787:16;;-1:-1:-1;;;5806:15:7;5787:11;;5799:1;;5787:16;;;;;;;;;:34;-1:-1:-1;;;;;5787:34:7;;;;;;;;;5861:2;5850:15;;5831:11;5843:1;5845;5843:3;5831:16;;;;;;;;;;;:34;-1:-1:-1;;;;;5831:34:7;;;;;;;;-1:-1:-1;5922:4:7;5912:7;:14;5905:2;:23;5894:36;;5875:11;5887:1;5889;5887:3;5875:16;;;;;;;;;;;:55;-1:-1:-1;;;;;5875:55:7;;;;;;;;-1:-1:-1;5993:2:7;5987:3;5977:13;;:18;5970:2;:27;5959:40;;5940:11;5952:1;5954;5952:3;5940:16;;;;;;;;;;;:59;-1:-1:-1;;;;;5940:59:7;;;;;;;;-1:-1:-1;6061:2:7;6046:12;;;:17;6039:2;:26;6028:39;;6009:11;6021:1;6023;6021:3;6009:16;;;;;;;;;;;:58;-1:-1:-1;;;;;6009:58:7;;;;;;;;-1:-1:-1;6124:2:7;6114:7;:12;6107:2;:21;6096:34;;6077:11;6089:1;6091;6089:3;6077:16;;;;;;;;;;;:53;-1:-1:-1;;;;;6077:53:7;;;;;;;;;6170:2;6159:15;;6140:11;6152:1;6154;6152:3;6140:16;;;;;;;;;;;:34;-1:-1:-1;;;;;6140:34:7;;;;;;;;-1:-1:-1;6233:11:7;6193:31;;6185:61;;;;-1:-1:-1;;;6185:61:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;6185:61:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5421:832;;;;;:::o;960:18:11:-;;;;;;;;;;;;;;;-1:-1:-1;;960:18:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7552:232:10:-;7650:10;7620:4;7670:23;;;:18;:23;;;;;;;;-1:-1:-1;;;;;7670:32:10;;;;;;;;;;;:41;;;7726:30;;;;;;;7620:4;;7650:10;7670:32;;7650:10;;7726:30;;;;;;;;;;;7773:4;7766:11;;;7552:232;;;;;:::o;1302:1947::-;1743:10;326:42:11;1743:32:10;1735:86;;;;-1:-1:-1;;;1735:86:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1839:18;;:23;:43;;;;-1:-1:-1;1866:11:10;;:16;1839:43;1831:91;;;;-1:-1:-1;;;1831:91:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1970:27;:58;;;2046:31;2038:92;;;;-1:-1:-1;;;2038:92:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2172:8;2183:29;2199:12;2183:15;:29::i;:::-;2172:40;-1:-1:-1;2230:27:10;;2222:66;;;;;-1:-1:-1;;;2222:66:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;2425:16;:14;:16::i;:::-;2404:18;:37;409:4:22;2451:11:10;:25;2573:46;2600:18;2573:26;:46::i;:::-;2567:52;-1:-1:-1;2637:27:10;;2629:74;;;;-1:-1:-1;;;2629:74:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2714:12;;;;:4;;:12;;;;;:::i;:::-;-1:-1:-1;2736:16:10;;;;:6;;:16;;;;;:::i;:::-;-1:-1:-1;2762:8:10;:20;;-1:-1:-1;;2762:20:10;;;;;;;2829:46;2852:22;2829;:46::i;:::-;2823:52;-1:-1:-1;2893:27:10;;2885:69;;;;;-1:-1:-1;;;2885:69:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;2996:36;3014:17;2996;:36::i;:::-;2990:42;-1:-1:-1;3050:27:10;;3042:64;;;;;-1:-1:-1;;;3042:64:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3224:11:10;:18;;-1:-1:-1;;;;3224:18:10;-1:-1:-1;;;3224:18:10;;;-1:-1:-1;;;;;;;1302:1947:10:o;1459:131:7:-;1503:8;1516:23;1529:9;1516:12;:23::i;:::-;1502:37;;;1549:34;1564:3;1549:34;;;;;;;;;;;;;-1:-1:-1;;;1549:34:7;;;:14;:34::i;:::-;1459:131;:::o;2390:33:11:-;;;;:::o;11828:228:10:-;11913:4;11897:5;71531:30;71551:9;71531:19;:30::i;:::-;11962:14;11937:16;:14;:16::i;:::-;:40;11929:75;;;;;-1:-1:-1;;;11929:75:10;;;;;;;;;;;;-1:-1:-1;;;11929:75:10;;;;;;;;;;;;;;;12021:28;12041:7;12021:19;:28::i;:::-;12014:35;;71571:1;71582:29;71601:9;71582:18;:29::i;:::-;11828:228;;;;:::o;3266:23:11:-;;;;:::o;14620:257:10:-;14671:4;14688:13;14703:11;14718:28;:26;:28::i;:::-;14687:59;;-1:-1:-1;14687:59:10;-1:-1:-1;14771:18:10;14764:3;:25;;;;;;;;;14756:91;;;;-1:-1:-1;;;14756:91:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14864:6;-1:-1:-1;;14620:257:10;;:::o;6892:200::-;6994:4;6978:5;71531:30;71551:9;71531:19;:30::i;:::-;7070:14;7017:44;7032:10;7044:3;7049;7054:6;7017:14;:44::i;:::-;:68;7010:75;;71582:29;71601:9;71582:18;:29::i;:::-;6892:200;;;;;;:::o;1146:21:11:-;;;;;;:::o;70024:265:10:-;70159:16;:14;:16::i;:::-;70151:45;;;;;-1:-1:-1;;;70151:45:10;;;;;;;;;;;;-1:-1:-1;;;70151:45:10;;;;;;;;;;;;;;;70244:12;:4;70251:5;;70244:12;:::i;:::-;-1:-1:-1;70266:16:10;:6;70275:7;;70266:16;:::i;8788:349::-;8850:4;8866:23;;:::i;:::-;8892:38;;;;;;;;8907:21;:19;:21::i;:::-;8892:38;;-1:-1:-1;;;;;9005:20:10;;8941:14;9005:20;;;:13;:20;;;;;;8866:64;;-1:-1:-1;8941:14:10;;;8973:53;;8866:64;;8973:17;:53::i;:::-;8940:86;;-1:-1:-1;8940:86:10;-1:-1:-1;9052:18:10;9044:4;:26;;;;;;;;;9036:70;;;;;-1:-1:-1;;;9036:70:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;9123:7;-1:-1:-1;;;8788:349:10;;;;:::o;16532:86::-;16574:4;16597:14;:12;:14::i;:::-;16590:21;;16532:86;:::o;2784:24:11:-;;;;:::o;3000:152:7:-;3051:8;3064:30;3084:9;3064:19;:30::i;:::-;3050:44;;;3104:41;3119:3;3104:41;;;;;;;;;;;;;-1:-1:-1;;;3104:41:7;;;:14;:41::i;1713:39:11:-;;;-1:-1:-1;;;;;1713:39:11;;:::o;59156:570:10:-;59238:4;59222:5;71531:30;71551:9;71531:19;:30::i;:::-;59254:10;59267:16;:14;:16::i;:::-;59254:29;-1:-1:-1;59297:29:10;;59293:274;;59486:70;59497:5;59491:12;;;;;;;;59505:50;59486:4;:70::i;:::-;59479:77;;;;;59293:274;59685:34;59706:12;59685:20;:34::i;:::-;59678:41;;;71582:29;71601:9;71582:18;:29::i;3037:26:11:-;;;;:::o;4209:56::-;4259:6;4209:56;:::o;2508:30::-;;;;:::o;8834:25::-;;;-1:-1:-1;;;;;8834:25:11;;:::o;8430:110:10:-;-1:-1:-1;;;;;8513:20:10;8487:7;8513:20;;;:13;:20;;;;;;;8430:110::o;11348:196::-;11417:4;11401:5;71531:30;71551:9;71531:19;:30::i;:::-;11466:14;11441:16;:14;:16::i;:::-;:40;11433:75;;;;;-1:-1:-1;;;11433:75:10;;;;;;;;;;;;-1:-1:-1;;;11433:75:10;;;;;;;;;;;;;;;11525:12;;11518:19;;71582:29;71601:9;71582:18;:29::i;:::-;11348:196;;:::o;653:630:7:-;1080:6;1114:2;1126:150;1143:12;1157:18;1080:6;1207:5;1214:7;1114:2;1234:22;1258:17;1126:16;:150::i;:::-;653:630;;;;;;;;:::o;2392:131::-;2455:4;2478:38;2503:12;2478:24;:38::i;2150:28:11:-;;;;:::o;2909:25::-;;;;:::o;54184:571:10:-;54270:4;54254:5;71531:30;71551:9;71531:19;:30::i;:::-;54286:10;54299:16;:14;:16::i;:::-;54286:29;-1:-1:-1;54329:29:10;;54325:273;;54519:68;54530:5;54524:12;;;;;;;;54538:48;54519:4;:68::i;54325:273::-;54710:38;54728:19;54710:17;:38::i;1051:20:11:-;;;;;;;;;;;;;;-1:-1:-1;;1051:20:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12258:283:10;12325:4;12342:13;12357:11;12372:36;12400:7;12372:27;:36::i;:::-;12341:67;;-1:-1:-1;12341:67:10;-1:-1:-1;12433:18:10;12426:3;:25;;;;;;;;;12418:93;;;;-1:-1:-1;;;12418:93:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12528:6;12258:283;-1:-1:-1;;;12258:283:10:o;61865:587::-;61951:4;61935:5;71531:30;71551:9;71531:19;:30::i;:::-;61967:10;61980:16;:14;:16::i;:::-;61967:29;-1:-1:-1;62010:29:10;;62006:281;;62203:73;62214:5;62208:12;;;;;;;;62222:53;62203:4;:73::i;62006:281::-;62407:38;62430:14;62407:22;:38::i;16859:1071::-;16901:4;16965:23;16991:16;:14;:16::i;:::-;16965:42;;17096:18;17074;;:40;17070:98;;;17142:14;17130:27;;;;;17070:98;17232:14;17249;:12;:14::i;:::-;17232:31;;17331:23;17357:17;;;;;;;;;-1:-1:-1;;;;;17357:17:10;-1:-1:-1;;;;;17357:31:10;;17389:9;17400:12;;17414:56;17419:13;;17434:35;17439:14;;17455:13;;17434:4;:35::i;:::-;17414:4;:56::i;:::-;17357:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17357:114:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17357:114:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17357:114:10;;-1:-1:-1;1314:9:11;17489:43:10;;;17481:84;;;;;-1:-1:-1;;;17481:84:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;17653:17;17672:15;17691:47;17699:18;17719;;17691:7;:47::i;:::-;17652:86;;-1:-1:-1;17652:86:10;-1:-1:-1;17767:18:10;17756:7;:29;;;;;;;;;17748:73;;;;;-1:-1:-1;;;17748:73:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;17839:84;17861:18;17881:9;17892:18;17912:10;17839:21;:84::i;:::-;17832:91;;;;;;;16859:1071;:::o;64387:592::-;64474:4;64458:5;71531:30;71551:9;71531:19;:30::i;:::-;64490:10;64503:16;:14;:16::i;:::-;64490:29;-1:-1:-1;64533:29:10;;64529:283;;64727:74;64738:5;64732:12;;;;;;;;64746:54;64727:4;:74::i;64529:283::-;64933:39;64957:14;64933:23;:39::i;6404:190::-;6489:4;6473:5;71531:30;71551:9;71531:19;:30::i;:::-;6572:14;6512:51;6527:10;6539;6551:3;6556:6;6512:14;:51::i;:::-;:75;6505:82;;71582:29;71601:9;71582:18;:29::i;:::-;6404:190;;;;;:::o;2654:23:11:-;;;;:::o;3875:233:7:-;3971:8;3984:62;4008:8;4018:9;4029:16;3984:23;:62::i;:::-;3970:76;;;4056:45;4071:3;4056:45;;;;;;;;;;;;;-1:-1:-1;;;4056:45:7;;;:14;:45::i;:::-;3875:233;;;:::o;9626:36:11:-;9658:4;9626:36;:::o;10946:262:10:-;11022:17;;10999:4;;-1:-1:-1;;;;;11022:17:10;:31;11054:14;:12;:14::i;:::-;11070:12;;11084:56;11089:13;;11104:35;11109:14;;11125:13;;11104:4;:35::i;11084:56::-;11184:16;;11166:15;;11142:21;;:39;:58;11022:179;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11022:179:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11022:179:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11022:179:10;;-1:-1:-1;10946:262:10;:::o;48862:198::-;48970:4;48955;71531:30;71551:9;71531:19;:30::i;:::-;48993:60;49007:10;49019;49031:8;49041:11;48993:13;:60::i;:::-;48986:67;;71582:29;71601:9;71582:18;:29::i;14175:202::-;14242:4;14226:5;71531:30;71551:9;71531:19;:30::i;:::-;14291:14;14266:16;:14;:16::i;:::-;:40;14258:75;;;;;-1:-1:-1;;;14258:75:10;;;;;;;;;;;;-1:-1:-1;;;14258:75:10;;;;;;;;;;;;;;;14350:20;:18;:20::i;:::-;14343:27;;71582:29;71601:9;71582:18;:29::i;9475:685::-;-1:-1:-1;;;;;9598:22:10;;9543:4;9598:22;;;:13;:22;;;;;;9543:4;;;;;;;;;9743:36;9612:7;9743:27;:36::i;:::-;9719:60;-1:-1:-1;9719:60:10;-1:-1:-1;9801:18:10;9793:4;:26;;;;;;;;;9789:97;;9848:16;9843:22;9835:40;-1:-1:-1;9867:1:10;;-1:-1:-1;9867:1:10;;-1:-1:-1;9867:1:10;;-1:-1:-1;9835:40:10;;-1:-1:-1;;;;9835:40:10;9789:97;9927:28;:26;:28::i;:::-;9896:59;-1:-1:-1;9896:59:10;-1:-1:-1;9977:18:10;9969:4;:26;;;;;;;;;9965:97;;10024:16;10019:22;;9965:97;-1:-1:-1;10085:14:10;;-1:-1:-1;10102:13:10;;-1:-1:-1;10117:13:10;-1:-1:-1;10117:13:10;-1:-1:-1;9475:685:10;;;;;;:::o;2784:111:7:-;2837:4;2860:28;2875:12;2860:14;:28::i;1933:111::-;1986:4;2009:28;2024:12;2009:14;:28::i;2271:27:11:-;;;;:::o;3165:25::-;;;;:::o;8106:141:10:-;-1:-1:-1;;;;;8206:25:10;;;8180:7;8206:25;;;:18;:25;;;;;;;;:34;;;;;;;;;;;;;8106:141::o;3336:196:7:-;3409:8;3422:46;3448:8;3458:9;3422:25;:46::i;:::-;3408:60;;;3478:47;3493:3;3478:47;;;;;;;;;;;;;;;;;:14;:47::i;67100:625:10:-;67187:4;67203:10;67216:16;:14;:16::i;:::-;67203:29;-1:-1:-1;67246:29:10;;67242:295;;67448:78;67459:5;67453:12;;;;;;;;67467:58;67448:4;:78::i;:::-;67441:85;;;;;67242:295;67670:48;67697:20;67670:26;:48::i;1849:42:11:-;;;-1:-1:-1;;;;;1849:42:11;;:::o;10574:202:10:-;10650:17;;10627:4;;-1:-1:-1;;;;;10650:17:10;:31;10682:14;:12;:14::i;:::-;10698:12;;10712:56;10717:13;;10732:35;10737:14;;10753:13;;10732:4;:35::i;10712:56::-;10650:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;57039:606:10;57135:4;57119:5;71531:30;71551:9;71531:19;:30::i;:::-;57151:10;57164:16;:14;:16::i;:::-;57151:29;-1:-1:-1;57194:29:10;;57190:283;;57389:73;57400:5;57394:12;;;;;;;;57408:53;57389:4;:73::i;57190:283::-;57590:48;57613:24;57590:22;:48::i;71931:192::-;72002:11;;-1:-1:-1;;;72002:11:10;;;;71994:34;;;;;-1:-1:-1;;;71994:34:10;;;;;;;;;;;;-1:-1:-1;;;71994:34:10;;;;;;;;;;;;;;;72043:9;72038:49;;72054:11;;;:33;;;-1:-1:-1;;;72054:33:10;;;;-1:-1:-1;;;;;72054:11:10;;;;:31;;:33;;;;:11;;:33;;;;;;:11;;:33;;;5:2:-1;;;;30:1;27;20:12;5:2;72054:33:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;72054:33:10;;;;72038:49;-1:-1:-1;72111:5:10;72097:19;;-1:-1:-1;;;;72097:19:10;;;71931:192::o;8568:149:20:-;8629:4;8650:33;8663:3;8658:9;;;;;;;;8674:4;8669:10;;;;;;;;8650:33;;;;;;;;;;;;;8681:1;8650:33;;;;;;;;;;;;;8706:3;8701:9;;;;;;;21974:3216:10;22120:11;;;:58;;;-1:-1:-1;;;22120:58:10;;22152:4;22120:58;;;;;;;-1:-1:-1;;;;;22120:58:10;;;;;;;;;;;;;;;22044:4;;;;;;22120:11;;:23;;:58;;;;;;;;;;;;;;;22044:4;22120:11;:58;;;5:2:-1;;;;30:1;27;20:12;5:2;22120:58:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22120:58:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22120:58:10;;-1:-1:-1;22192:12:10;;22188:143;;22228:88;22239:27;22268:38;22308:7;22228:10;:88::i;:::-;22220:100;-1:-1:-1;22318:1:10;;-1:-1:-1;22220:100:10;;-1:-1:-1;22220:100:10;22188:143;22438:16;:14;:16::i;:::-;22416:18;;:38;22412:143;;22478:62;22483:22;22507:32;22478:4;:62::i;22412:143::-;22565:25;;:::i;:::-;22645:28;:26;:28::i;:::-;22616:25;;;22601:72;;;22602:12;;;22601:72;;;;;;;;;;;;;;;;;;;-1:-1:-1;22703:18:10;;-1:-1:-1;22687:4:10;:12;;;:34;;;;;;;;;22683:169;;22745:92;22756:16;22774:42;22823:4;:12;;;22818:18;;;;;;;;22745:10;:92::i;:::-;22737:104;-1:-1:-1;22839:1:10;;-1:-1:-1;22737:104:10;;-1:-1:-1;;22737:104:10;22683:169;23809:32;23822:6;23830:10;23809:12;:32::i;:::-;23785:21;;;:56;;;24107:42;;;;;;;;24122:25;;;;24107:42;;24061:89;;23785:56;24061:22;:89::i;:::-;24042:15;;;24027:123;;;24028:12;;;24027:123;;;;;;;;;;;;;;;;;;;-1:-1:-1;24184:18:10;;-1:-1:-1;24168:4:10;:12;;;:34;;;;;;;;;24160:79;;;;;-1:-1:-1;;;24160:79:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24520:34;24525:11;;24538:4;:15;;;24520:4;:34::i;:::-;24498:19;;;:56;-1:-1:-1;;;;;24594:21:10;;;;;;:13;:21;;;;;;24617:15;;;;24589:44;;24594:21;24589:4;:44::i;:::-;24565:21;;;:68;;;24723:19;;;;24709:11;:33;-1:-1:-1;;;;;24752:21:10;;;;;;:13;:21;;;;;;;;;:45;;;;24883:21;;;;24906:15;;;;;24870:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24969:15;;;;24937:48;;;;;;;-1:-1:-1;;;;;24937:48:10;;;24954:4;;-1:-1:-1;;;;;;;;;;;24937:48:10;;;;;;;;25035:11;;;25081:21;;;;25104:15;;;;25035:85;;;-1:-1:-1;;;25035:85:10;;25066:4;25035:85;;;;;;;-1:-1:-1;;;;;25035:85:10;;;;;;;;;;;;;;;;;;;;;;:11;;;:22;;:85;;;;;:11;;:85;;;;;;;:11;;:85;;;5:2:-1;;;;30:1;27;20:12;5:2;25035:85:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;25144:14:10;;-1:-1:-1;25139:20:10;;-1:-1:-1;;25139:20:10;;25161:4;:21;;;25131:52;;;;;;21974:3216;;;;;;:::o;72435:179::-;72497:11;:18;;-1:-1:-1;;;;72497:18:10;-1:-1:-1;;;72497:18:10;;;72564:9;72559:48;;72575:11;;;:32;;;-1:-1:-1;;;72575:32:10;;;;-1:-1:-1;;;;;72575:11:10;;;;:30;;:32;;;;:11;;:32;;;;;;:11;;:32;;;5:2:-1;;;;30:1;27;20:12;5:2;72575:32:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;53348:555:10;53482:11;;;53577:30;;;-1:-1:-1;;;53577:30:10;;;;53428:4;;-1:-1:-1;;;;;53482:11:10;;;;53577:28;;;;;:30;;;;;;;;;;;:28;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;53577:30:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;53577:30:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;53577:30:10;53569:71;;;;;-1:-1:-1;;;53569:71:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;53705:11;:28;;-1:-1:-1;;;;;;53705:28:10;-1:-1:-1;;;;;53705:28:10;;;;;;;;;53812:46;;;;;;;;;;;;;;;;;;;;;;;;;;;53881:14;53876:20;;10313:91;10385:12;10313:91;:::o;68047:1634::-;68141:4;68240:38;68327:16;:14;:16::i;:::-;68322:128;;68366:73;68371:18;68391:47;68366:4;:73::i;68322:128::-;68573:16;:14;:16::i;:::-;68551:18;;:38;68547:153;;68612:77;68617:22;68641:47;68612:4;:77::i;68547:153::-;68791:17;;;;;;;;;-1:-1:-1;;;;;68791:17:10;68768:40;;68908:20;-1:-1:-1;;;;;68908:40:10;;:42;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;68908:42:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;68908:42:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;68908:42:10;68900:83;;;;;-1:-1:-1;;;68900:83:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;69057:17;:40;;-1:-1:-1;;;;;;69057:40:10;-1:-1:-1;;;;;69057:40:10;;;;;;;;;69200:70;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;69345:43:10;;;69341:138;;69425:53;;;22:32:-1;6:49;;69425:53:10;;;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;69390:89:10;;;;-1:-1:-1;;;;;69390:34:10;;;:89;;;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;69390:89:10;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;69390:89:10;;69341:138;69588:47;;;22:32:-1;6:49;;69588:47:10;;;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;69553:83:10;;;;-1:-1:-1;;;;;69553:34:10;;;:83;;;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;69553:83:10;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;-1:-1;69659:14:10;;-1:-1:-1;69654:20:10;;-1:-1:-1;69654:20:10;57906:1004;57987:4;58041:16;:14;:16::i;:::-;58036:123;;58080:68;58085:18;58105:42;58080:4;:68::i;:::-;58073:75;;;;58036:123;58263:16;:14;:16::i;:::-;58241:18;;:38;58237:148;;58302:72;58307:22;58331:42;58302:4;:72::i;58237:148::-;1490:4:11;58454:71:10;58459:48;58464:24;58490:16;;58459:4;:48::i;:::-;58509:15;;58454:4;:71::i;:::-;:106;58450:210;;;58583:66;58588:15;58605:43;58583:4;:66::i;58450:210::-;58702:21;;;58733:48;;;;58797:68;;;;;;;;;;;;;;;;;;;;;;;;;58888:14;58883:20;;55006:1737;55077:4;55187:16;:14;:16::i;:::-;55165:18;;:38;55161:143;;55226:67;55231:22;55255:37;55226:4;:67::i;55161:143::-;-1:-1:-1;;55358:19:10;:31;55354:75;;;55413:16;;55391:38;;55354:75;55471:23;55497:28;:26;:28::i;:::-;55471:54;;1490:4:11;55659:74:10;55664:48;55669:21;;55692:19;55664:4;:48::i;:::-;55714:18;55659:4;:74::i;:::-;:109;55655:208;;;55791:61;55796:15;55813:38;55791:4;:61::i;55655:208::-;55929:19;55909:16;;:39;55905:470;;56006:16;:14;:16::i;:::-;56001:126;;56049:63;56054:18;56074:37;56049:4;:63::i;56001:126::-;56197:16;;;56227:38;;;;56311:53;;;;;;;;;;;;;;;;;;;;;;;;;55905:470;;56439:18;56420:15;;:37;56416:283;;56527:15;;;56556:36;;;;56638:50;;;;;;;;;;;;;;;;;;;;;;;;;56416:283;;56721:14;56716:20;;15134:1234;15242:11;;15195:9;;;;15267:17;15263:1099;;-1:-1:-1;;15456:27:10;;15436:18;;-1:-1:-1;15428:56:10;;15263:1099;15695:14;15712;:12;:14::i;:::-;15695:31;;15740:33;15787:23;;:::i;:::-;15824:17;15898:97;15913:9;15924:12;;15938:56;15943:13;;15958:35;15963:14;;15979:13;;15958:4;:35::i;15938:56::-;15898:14;:97::i;:::-;15856:139;-1:-1:-1;15856:139:10;-1:-1:-1;16024:18:10;16013:7;:29;;;;;;;;;16009:87;;16070:7;-1:-1:-1;16079:1:10;;-1:-1:-1;16062:19:10;;-1:-1:-1;;;;16062:19:10;16009:87;16136:50;16143:28;16173:12;16136:6;:50::i;:::-;16110:76;-1:-1:-1;16110:76:10;-1:-1:-1;16215:18:10;16204:7;:29;;;;;;;;;16200:87;;16261:7;-1:-1:-1;16270:1:10;;-1:-1:-1;16253:19:10;;-1:-1:-1;;;;16253:19:10;16200:87;-1:-1:-1;16329:21:10;16309:18;;-1:-1:-1;16329:21:10;-1:-1:-1;16301:50:10;;-1:-1:-1;;;16301:50:10;15134:1234;;;:::o;3925:2226::-;4097:11;;;:60;;;-1:-1:-1;;;4097:60:10;;4133:4;4097:60;;;;;;;-1:-1:-1;;;;;4097:60:10;;;;;;;;;;;;;;;;;;;;;;4023:4;;;;4097:11;;;;;:27;;:60;;;;;;;;;;;;;;4023:4;4097:11;:60;;;5:2:-1;;;;30:1;27;20:12;5:2;4097:60:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4097:60:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4097:60:10;;-1:-1:-1;4171:12:10;;4167:142;;4206:92;4217:27;4246:42;4290:7;4206:10;:92::i;:::-;4199:99;;;;;4167:142;4372:3;-1:-1:-1;;;;;4365:10:10;:3;-1:-1:-1;;;;;4365:10:10;;4361:103;;;4398:55;4403:15;4420:32;4398:4;:55::i;4361:103::-;4538:22;-1:-1:-1;;;;;4578:14:10;;;;;;;4574:156;;;-1:-1:-1;;;4574:156:10;;;-1:-1:-1;;;;;;4687:23:10;;;;;;;:18;:23;;;;;;;;:32;;;;;;;;;;4574:156;4805:17;4832;4859;4886;4940:34;4948:17;4967:6;4940:7;:34::i;:::-;4914:60;;-1:-1:-1;4914:60:10;-1:-1:-1;4999:18:10;4988:7;:29;;;;;;;;;4984:123;;5040:56;5045:16;5063:32;5040:4;:56::i;:::-;5033:63;;;;;;;;;;4984:123;-1:-1:-1;;;;;5151:18:10;;;;;;:13;:18;;;;;;5143:35;;5171:6;5143:7;:35::i;:::-;5117:61;;-1:-1:-1;5117:61:10;-1:-1:-1;5203:18:10;5192:7;:29;;;;;;;;;5188:122;;5244:55;5249:16;5267:31;5244:4;:55::i;5188:122::-;-1:-1:-1;;;;;5354:18:10;;;;;;:13;:18;;;;;;5346:35;;5374:6;5346:7;:35::i;:::-;5320:61;;-1:-1:-1;5320:61:10;-1:-1:-1;5406:18:10;5395:7;:29;;;;;;;;;5391:120;;5447:53;5452:16;5470:29;5447:4;:53::i;5391:120::-;-1:-1:-1;;;;;5638:18:10;;;;;;;:13;:18;;;;;;:33;;;5681:18;;;;;;:33;;;-1:-1:-1;;5784:29:10;;5780:107;;-1:-1:-1;;;;;5829:23:10;;;;;;;:18;:23;;;;;;;;:32;;;;;;;;;:47;;;5780:107;5955:3;-1:-1:-1;;;;;5941:26:10;5950:3;-1:-1:-1;;;;;5941:26:10;-1:-1:-1;;;;;;;;;;;5960:6:10;5941:26;;;;;;;;;;;;;;;;;;6129:14;6117:27;;;;;;;;3925:2226;;;;;;;:::o;528:335::-;664:11;;;709:26;;;-1:-1:-1;;;709:26:10;;;;577:4;;-1:-1:-1;;;;;664:11:10;;;;;;709:24;;:26;;;;;;;;;;;664:11;709:26;;;5:2:-1;;;;30:1;27;20:12;5:2;709:26:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;709:26:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;709:26:10;-1:-1:-1;;;;;695:40:10;:10;:40;:79;;;;;739:18;-1:-1:-1;;;;;739:33:10;;:35;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;739:35:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;739:35:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;739:35:10;695:79;694:162;;;-1:-1:-1;780:10:10;326:42:11;780:32:10;:75;;;;;816:18;-1:-1:-1;;;;;816:37:10;;:39;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;816:39:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;816:39:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;816:39:10;687:169;;;528:335;:::o;2431:306:21:-;2508:9;2519:4;2536:13;2551:18;;:::i;:::-;2573:20;2583:1;2586:6;2573:9;:20::i;:::-;2535:58;;-1:-1:-1;2535:58:21;-1:-1:-1;2614:18:21;2607:3;:25;;;;;;;;;2603:71;;-1:-1:-1;2656:3:21;-1:-1:-1;2661:1:21;;-1:-1:-1;2648:15:21;;2603:71;2692:18;2712:17;2721:7;2712:8;:17::i;:::-;2684:46;;;;;;2431:306;;;;;:::o;4560:227:7:-;4607:4;4624:13;4639:20;4663:41;4671:21;4694:9;4663:7;:41::i;:::-;4623:81;;-1:-1:-1;4623:81:7;-1:-1:-1;4729:18:7;4722:3;:25;;;;;;;;;4714:34;;;;;37117:571:10;37202:4;37208;37186:5;71531:30;71551:9;71531:19;:30::i;:::-;37224:10;37237:16;:14;:16::i;:::-;37224:29;-1:-1:-1;37267:29:10;;37263:257;;37438:67;37449:5;37443:12;;;;;;;;37457:47;37438:4;:67::i;37263:257::-;37628:53;37645:10;37657;37669:11;37628:16;:53::i;59995:1627::-;60062:4;60118:21;60188:16;:14;:16::i;:::-;60183:120;;60227:65;60232:18;60252:39;60227:4;:65::i;60183:120::-;60426:16;:14;:16::i;:::-;60404:18;;:38;60400:145;;60465:69;60470:22;60494:39;60465:4;:69::i;60400:145::-;60648:12;60631:14;:12;:14::i;:::-;:29;60627:150;;;60683:83;60688:29;60719:46;60683:4;:83::i;60627:150::-;60868:13;;60853:12;:28;60849:127;;;60904:61;60909:15;60926:38;60904:4;:61::i;60849:127::-;61210:33;61215:13;;61230:12;61210:4;:33::i;:::-;61314:13;:32;;;61191:52;-1:-1:-1;61463:39:10;61477:10;61489:12;61463:13;:39::i;:::-;61518:59;;;61534:10;61518:59;;;;;;;;;;;;;;;;;;;;;;;;;61600:14;61595:20;;26431:536;26522:4;26506:5;71531:30;71551:9;71531:19;:30::i;:::-;26538:10;26551:16;:14;:16::i;:::-;26538:29;-1:-1:-1;26581:29:10;;26577:246;;26751:61;26762:5;26756:12;;;;;;;;26770:41;26751:4;:61::i;26577:246::-;26920:40;26932:10;26944:1;26947:12;26920:11;:40::i;12788:1238::-;-1:-1:-1;;;;;13130:23:10;;12865:9;13130:23;;;:14;:23;;;;;13354:24;;12865:9;;;;;;;;13350:90;;-1:-1:-1;13407:18:10;;-1:-1:-1;13407:18:10;;-1:-1:-1;13399:30:10;;-1:-1:-1;;;13399:30:10;13350:90;13662:46;13670:14;:24;;;13696:11;;13662:7;:46::i;:::-;13629:79;;-1:-1:-1;13629:79:10;-1:-1:-1;13733:18:10;13722:7;:29;;;;;;;;;13718:79;;-1:-1:-1;13775:7:10;;-1:-1:-1;13784:1:10;;-1:-1:-1;13767:19:10;;-1:-1:-1;;13767:19:10;13718:79;13827:58;13835:19;13856:14;:28;;;13827:7;:58::i;:::-;13807:78;;-1:-1:-1;13807:78:10;-1:-1:-1;13910:18:10;13899:7;:29;;;;;;;;;13895:79;;-1:-1:-1;13952:7:10;;-1:-1:-1;13961:1:10;;-1:-1:-1;13944:19:10;;-1:-1:-1;;13944:19:10;13895:79;-1:-1:-1;13992:18:10;;-1:-1:-1;14012:6:10;-1:-1:-1;;;12788:1238:10;;;;:::o;62718:1424::-;62789:4;62845:21;62990:16;:14;:16::i;:::-;62968:18;;:38;62964:148;;63029:72;63034:22;63058:42;63029:4;:72::i;62964:148::-;63215:14;63198;:12;:14::i;:::-;:31;63194:155;;;63252:86;63257:29;63288:49;63252:4;:86::i;63194:155::-;63444:13;;63427:14;:30;63423:132;;;63480:64;63485:15;63502:41;63480:4;:64::i;63423:132::-;63791:35;63796:13;;63811:14;63791:4;:35::i;:::-;63899:13;:32;;;63772:54;-1:-1:-1;64048:49:10;326:42:11;64082:14:10;64048:13;:49::i;3095:114:22:-;3148:4;3171:31;3176:1;3179;3171:31;;;;;;;;;;;;;-1:-1:-1;;;3171:31:22;;;:4;:31::i;1302:230:12:-;1358:9;1369:4;1394:1;1389;:6;1385:141;;-1:-1:-1;1419:18:12;;-1:-1:-1;1439:5:12;;;1411:34;;1385:141;-1:-1:-1;1484:27:12;;-1:-1:-1;1513:1:12;1476:39;;18030:2317:10;18161:4;18804:31;;:::i;:::-;18838:53;18843:35;;;;;;;;18858:18;18843:35;;;18880:10;18838:4;:53::i;:::-;18804:87;;18901:24;18928:54;18947:20;18969:12;;18928:18;:54::i;:::-;18901:81;;18992:20;19015:39;19020:19;19041:12;;19015:4;:39::i;:::-;18992:62;;19064:21;19088:101;19114:38;;;;;;;;19129:21;;19114:38;;;19154:19;19175:13;;19088:25;:101::i;:::-;19064:125;;19199:21;19223:95;19249:32;;;;;;;;19264:15;;19249:32;;;19283:19;19304:13;;19223:25;:95::i;:::-;19199:119;;19328:22;19353:97;19379:33;;;;;;;;19394:16;;19379:33;;;19414:19;19435:14;;19353:25;:97::i;:::-;19328:122;;19460:19;19482:73;19508:20;19530:11;;19543;;19482:25;:73::i;:::-;19752:18;:39;;;19801:11;:28;;;19839:12;:30;;;19879:13;:32;;;19921:13;:32;;;19963:14;:34;;;20059:79;;;;;;;;;;;;;;;;;;;;;;;;;;19460:95;;-1:-1:-1;20059:79:10;;;;;;;;;;20203:17;;20227:74;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;20227:74:10;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;20195:107:10;;;;-1:-1:-1;;;;;20203:17:10;;;;20227:74;;20195:107;;;;25:18:-1;20195:107:10;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;20195:107:10;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;-1:-1;20325:14:10;;-1:-1:-1;20320:20:10;;-1:-1:-1;20320:20:10;;20313:27;18030:2317;-1:-1:-1;;;;;;;;;;;;18030:2317:10:o;65247:1492::-;65319:4;65376:22;65522:16;:14;:16::i;:::-;65500:18;;:38;65496:149;;65561:73;65566:22;65590:43;65561:4;:73::i;65496:149::-;65748:14;65731;:12;:14::i;:::-;:31;65727:156;;;65785:87;65790:29;65821:50;65785:4;:87::i;65727:156::-;65980:14;;65963;:31;65959:134;;;66017:65;66022:15;66039:42;66017:4;:65::i;65959:134::-;66331:36;66336:14;;66352;66331:4;:36::i;:::-;66442:14;:34;;;66654:11;;;66623:52;;;-1:-1:-1;;;66623:52:10;;;;66311:56;;-1:-1:-1;66593:101:10;;-1:-1:-1;;;;;66654:11:10;;;;66623:50;;:52;;;;;;;;;;;;66654:11;66623:52;;;5:2:-1;;;;30:1;27;20:12;5:2;66623:52:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;66623:52:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;66623:52:10;66679:14;66593:13;:101::i;43181:986::-;43322:4;43328;43306:5;71531:30;71551:9;71531:19;:30::i;:::-;43344:10;43357:16;:14;:16::i;:::-;43344:29;-1:-1:-1;43387:29:10;;43383:266;;43563:71;43574:5;43568:12;;;;;;;;43582:51;43563:4;:71::i;:::-;43555:83;-1:-1:-1;43636:1:10;;-1:-1:-1;43555:83:10;;-1:-1:-1;43555:83:10;43383:266;43667:16;-1:-1:-1;;;;;43667:31:10;;:33;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;43667:33:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;43667:33:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;43667:33:10;;-1:-1:-1;43714:29:10;;43710:270;;43890:75;43901:5;43895:12;;;;;;;;43909:55;43890:4;:75::i;43710:270::-;44087:73;44108:10;44120:8;44130:11;44143:16;44087:20;:73::i;:::-;44080:80;;;;;71571:1;71582:29;71601:9;71582:18;:29::i;:::-;43181:986;;;;;;;:::o;50058:3037::-;50247:11;;;:87;;;-1:-1:-1;;;50247:87:10;;50280:4;50247:87;;;;;;;-1:-1:-1;;;;;50247:87:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;50176:4;;;;50247:11;;;;;:24;;:87;;;;;;;;;;;;;;50176:4;50247:11;:87;;;5:2:-1;;;;30:1;27;20:12;5:2;50247:87:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;50247:87:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;50247:87:10;;-1:-1:-1;50348:12:10;;50344:149;;50383:99;50394:27;50423:49;50474:7;50383:10;:99::i;50344:149::-;50563:10;-1:-1:-1;;;;;50551:22:10;:8;-1:-1:-1;;;;;50551:22:10;;50547:144;;;50596:84;50601:26;50629:50;50596:4;:84::i;50547:144::-;50701:34;;:::i;:::-;-1:-1:-1;;;;;51065:23:10;;;;;;:13;:23;;;;;;51057:45;;51090:11;51057:7;:45::i;:::-;51031:22;;;51016:86;;;51017:4;51016:86;;;;;;;;;;;;;;;;;;;-1:-1:-1;51132:18:10;;-1:-1:-1;51116:12:10;;:34;;;;;;;;;51112:174;;51173:102;51184:16;51202:52;51261:4;:12;;;51256:18;;;;;;;51173:102;51166:109;;;;;;51112:174;51323:62;51328:11;51341:43;;;;;;;;4259:6:11;51341:43:10;;;51323:4;:62::i;:::-;51296:24;;;:89;;;51424:43;;51429:11;;51424:4;:43::i;:::-;51395:26;;;:72;51522:28;:26;:28::i;:::-;51493:25;;;51478:72;;;51479:4;51478:72;;;;;;;;;;;;;;;;;;;-1:-1:-1;51584:18:10;;-1:-1:-1;51568:12:10;;:34;;;;;;;;;51560:71;;;;;-1:-1:-1;;;51560:71:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;51669:88;51688:42;;;;;;;;51703:4;:25;;;51688:42;;;51732:4;:24;;;51669:18;:88::i;:::-;51642:24;;;:115;;;51797:13;;51792:45;;:4;:45::i;:::-;51768:21;;;:69;51874:11;;51887:24;;;;51869:43;;51874:11;51869:4;:43::i;:::-;51847:19;;;:65;-1:-1:-1;;;;;51974:25:10;;;;;;:13;:25;;;;;;52001:26;;;;51966:62;;51974:25;51966:7;:62::i;:::-;51938:24;;;51923:105;;;51924:4;51923:105;;;;;;;;;;;;;;;;;;;-1:-1:-1;52058:18:10;;-1:-1:-1;52042:12:10;;:34;;;;;;;;;52038:174;;52099:102;52110:16;52128:52;52187:4;:12;;;52182:18;;;;;;;52038:174;52424:21;;;;52408:13;:37;52469:19;;;;52455:11;:33;52524:22;;;;;-1:-1:-1;;;;;52498:23:10;;;-1:-1:-1;52498:23:10;;;:13;:23;;;;;;:48;;;;52584:24;;;;52556:25;;;;;;;;;;:52;;;;52691:26;;;;52660:58;;;;;;;52556:25;;52498:23;;-1:-1:-1;;;;;;;;;;;52660:58:10;;;;;;;;;;52767:24;;;;52733:59;;;;;;;52760:4;;-1:-1:-1;;;;;52733:59:10;;;-1:-1:-1;;;;;;;;;;;52733:59:10;;;;;;;;52836:24;;;;52862:21;;;;52807:77;;;52829:4;52807:77;;;;;;;;;;;;;;;;;;;;;;;;;;53073:14;53061:27;50058:3037;-1:-1:-1;;;;;;;50058:3037:10:o;32601:523::-;32682:4;32666:5;71531:30;71551:9;71531:19;:30::i;:::-;32698:10;32711:16;:14;:16::i;:::-;32698:29;-1:-1:-1;32741:29:10;;32737:246;;32911:61;32922:5;32916:12;;;;;;;;32930:41;32911:4;:61::i;32737:246::-;33080:37;33092:10;33104:12;33080:11;:37::i;25533:526::-;25614:4;25598:5;71531:30;71551:9;71531:19;:30::i;:::-;25630:10;25643:16;:14;:16::i;:::-;25630:29;-1:-1:-1;25673:29:10;;25669:246;;25843:61;25854:5;25848:12;;;;;;;25669:246;26012:40;26024:10;26036:12;26050:1;26012:11;:40::i;38013:593::-;38122:4;38128;38106:5;71531:30;71551:9;71531:19;:30::i;:::-;38144:10;38157:16;:14;:16::i;:::-;38144:29;-1:-1:-1;38187:29:10;;38183:257;;38358:67;38369:5;38363:12;;;;;;;;38377:47;38358:4;:67::i;:::-;38350:79;-1:-1:-1;38427:1:10;;-1:-1:-1;38350:79:10;;-1:-1:-1;38350:79:10;38183:257;38548:51;38565:10;38577:8;38587:11;38548:16;:51::i;:::-;38541:58;;;;;71571:1;71582:29;71601:9;71582:18;:29::i;:::-;38013:593;;;;;;:::o;8835:241:20:-;8920:4;8941:43;8954:3;8949:9;;;;;;;;8965:4;8960:10;;;;;;;;8941:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;9009:27;9002:3;:34;;;;;;;;;:67;;9065:3;9060:9;;;;;;;;9002:67;;;-1:-1:-1;9039:4:20;:18;;8995:74;-1:-1:-1;;8835:241:20:o;5020:240:7:-;5087:4;5136:10;-1:-1:-1;;;;;5136:18:7;;;5128:46;;;;;-1:-1:-1;;;5128:46:7;;;;;;;;;;;;-1:-1:-1;;;5128:46:7;;;;;;;;;;;;;;;5205:6;5192:9;:19;5184:46;;;;;-1:-1:-1;;;5184:46:7;;;;;;;;;;;;-1:-1:-1;;;5184:46:7;;;;;;;;;;;;;;4423:330:21;4511:9;4522:4;4539:13;4554:19;;:::i;:::-;4577:31;4592:6;4600:7;4577:14;:31::i;3355:118:10:-;3416:4;326:42:11;-1:-1:-1;;;;;3439:25:10;;:27;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;1926:263:12;1997:9;2008:4;2025:14;2041:8;2053:13;2061:1;2064;2053:7;:13::i;:::-;2024:42;;-1:-1:-1;2024:42:12;-1:-1:-1;2089:18:12;2081:4;:26;;;;;;;;;2077:73;;-1:-1:-1;2131:4:12;-1:-1:-1;2137:1:12;;-1:-1:-1;2123:16:12;;2077:73;2167:15;2175:3;2180:1;2167:7;:15::i;:::-;2160:22;;;;;;1926:263;;;;;;;:::o;771:503:21:-;832:9;843:10;;:::i;:::-;866:14;882:20;906:22;914:3;409:4:22;906:7:21;:22::i;:::-;865:63;;-1:-1:-1;865:63:21;-1:-1:-1;950:18:21;942:4;:26;;;;;;;;;938:90;;-1:-1:-1;998:18:21;;;;;;;;;-1:-1:-1;998:18:21;;992:4;;-1:-1:-1;998:18:21;-1:-1:-1;984:33:21;;938:90;1039:14;1055:13;1072:31;1080:15;1097:5;1072:7;:31::i;:::-;1038:65;;-1:-1:-1;1038:65:21;-1:-1:-1;1125:18:21;1117:4;:26;;;;;;;;;1113:90;;-1:-1:-1;1173:18:21;;;;;;;;;-1:-1:-1;1173:18:21;;1167:4;;-1:-1:-1;1173:18:21;-1:-1:-1;1159:33:21;;-1:-1:-1;;1159:33:21;1113:90;1241:25;;;;;;;;;;;;-1:-1:-1;;1241:25:21;;-1:-1:-1;771:503:21;-1:-1:-1;;;;;;771:503:21:o;1612:250:12:-;1668:9;;1704:5;;;1724:6;;;1720:136;;1754:18;;-1:-1:-1;1774:1:12;-1:-1:-1;1746:30:12;;1720:136;-1:-1:-1;1815:26:12;;-1:-1:-1;1843:1:12;;-1:-1:-1;1807:38:12;;1977:346:21;2046:9;2057:10;;:::i;:::-;2080:14;2096:19;2119:27;2127:1;:10;;;2139:6;2119:7;:27::i;:::-;2079:67;;-1:-1:-1;2079:67:21;-1:-1:-1;2168:18:21;2160:4;:26;;;;;;;;;2156:90;;-1:-1:-1;2216:18:21;;;;;;;;;-1:-1:-1;2216:18:21;;2210:4;;-1:-1:-1;2216:18:21;-1:-1:-1;2202:33:21;;2156:90;2284:31;;;;;;;;;;;;-1:-1:-1;;2284:31:21;;-1:-1:-1;1977:346:21;-1:-1:-1;;;;1977:346:21:o;788:210:22:-;968:12;409:4;968:23;;;788:210::o;39291:3373:10:-;39469:11;;;:75;;;-1:-1:-1;;;39469:75:10;;39508:4;39469:75;;;;;;;-1:-1:-1;;;;;39469:75:10;;;;;;;;;;;;;;;;;;;;;;39386:4;;;;;;39469:11;;:30;;:75;;;;;;;;;;;;;;;39386:4;39469:11;:75;;;5:2:-1;;;;30:1;27;20:12;5:2;39469:75:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;39469:75:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;39469:75:10;;-1:-1:-1;39558:12:10;;39554:151;;39594:96;39605:27;39634:46;39682:7;39594:10;:96::i;:::-;39586:108;-1:-1:-1;39692:1:10;;-1:-1:-1;39586:108:10;;-1:-1:-1;39586:108:10;39554:151;39812:16;:14;:16::i;:::-;39790:18;;:38;39786:151;;39852:70;39857:22;39881:40;39852:4;:70::i;39786:151::-;39947:32;;:::i;:::-;-1:-1:-1;;;;;40090:24:10;;;;;;:14;:24;;;;;:38;;;40069:18;;;:59;40256:37;40105:8;40256:27;:37::i;:::-;40233:19;;;40218:75;;;40219:12;;;40218:75;;;;;;;;;;;;;;;;;;;-1:-1:-1;40323:18:10;;-1:-1:-1;40307:4:10;:12;;;:34;;;;;;;;;40303:190;;40365:113;40376:16;40394:63;40464:4;:12;;;40459:18;;;;;;;40365:113;40357:125;-1:-1:-1;40480:1:10;;-1:-1:-1;40357:125:10;;-1:-1:-1;;40357:125:10;40303:190;-1:-1:-1;;40572:11:10;:23;40568:153;;;40630:19;;;;40611:16;;;:38;40568:153;;;40680:16;;;:30;;;40568:153;41306:37;41319:5;41326:4;:16;;;41306:12;:37::i;:::-;41281:22;;;:62;;;41646:19;;;;41638:52;;:7;:52::i;:::-;41612:22;;;41597:93;;;41598:12;;;41597:93;;;;;;;;;;;;;;;;;;;-1:-1:-1;41724:18:10;;-1:-1:-1;41708:4:10;:12;;;:34;;;;;;;;;41700:105;;;;-1:-1:-1;;;41700:105:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41855:45;41863:12;;41877:4;:22;;;41855:7;:45::i;:::-;41831:20;;;41816:84;;;41817:12;;;41816:84;;;;;;;;;;;;;;;;;;;-1:-1:-1;41934:18:10;;-1:-1:-1;41918:4:10;:12;;;:34;;;;;;;;;41910:96;;;;-1:-1:-1;;;41910:96:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42123:22;;;;;;-1:-1:-1;;;;;42086:24:10;;;;;;;:14;:24;;;;;;;;;:59;;;42196:11;;42155:38;;;;:52;;;;42232:20;;;;42217:12;:35;;;42339:22;;;;42363;;42310:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42634:22;;;42617:14;;42634:22;;-1:-1:-1;39291:3373:10;-1:-1:-1;;;;;39291:3373:10:o;3712:118:22:-;3765:4;3788:35;3793:1;3796;3788:35;;;;;;;;;;;;;-1:-1:-1;;;3788:35:22;;;:4;:35::i;5266:149:7:-;5389:19;;-1:-1:-1;;;;;5389:11:7;;;:19;;;;;5401:6;;5389:19;;;;5401:6;5389:11;:19;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;27836:4504:10;27943:4;27967:19;;;:42;;-1:-1:-1;27990:19:10;;27967:42;27959:107;;;;-1:-1:-1;;;27959:107:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28077:27;;:::i;:::-;28218:28;:26;:28::i;:::-;28189:25;;;28174:72;;;28175:12;;;28174:72;;;;;;;;;;;;;;;;;;;-1:-1:-1;28276:18:10;;-1:-1:-1;28260:4:10;:12;;;:34;;;;;;;;;28256:166;;28317:94;28328:16;28346:44;28397:4;:12;;;28392:18;;;;;;;28317:94;28310:101;;;;;28256:166;28473:18;;28469:1265;;28743:17;;;:34;;;28846:42;;;;;;;;28861:25;;;;28846:42;;28828:77;;28763:14;28828:17;:77::i;:::-;28807:17;;;28792:113;;;28793:12;;;28792:113;;;;;;;;;;;;;;;;;;;-1:-1:-1;28939:18:10;;-1:-1:-1;28923:4:10;:12;;;:34;;;;;;;;;28919:183;;28984:103;28995:16;29013:53;29073:4;:12;;;29068:18;;;;;;;28919:183;28469:1265;;;29396:82;29419:14;29435:42;;;;;;;;29450:4;:25;;;29435:42;;;29396:22;:82::i;:::-;29375:17;;;29360:118;;;29361:12;;;29360:118;;;;;;;;;;;;;;;;;;;-1:-1:-1;29512:18:10;;-1:-1:-1;29496:4:10;:12;;;:34;;;;;;;;;29492:183;;29557:103;29568:16;29586:53;29646:4;:12;;;29641:18;;;;;;;29492:183;29689:17;;;:34;;;28469:1265;29800:11;;;29851:17;;;;29800:69;;;-1:-1:-1;;;29800:69:10;;29834:4;29800:69;;;;;;;-1:-1:-1;;;;;29800:69:10;;;;;;;;;;;;;;;29785:12;;29800:11;;;;;:25;;:69;;;;;;;;;;;;;;;29785:12;29800:11;:69;;;5:2:-1;;;;30:1;27;20:12;5:2;29800:69:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29800:69:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;29800:69:10;;-1:-1:-1;29883:12:10;;29879:140;;29918:90;29929:27;29958:40;30000:7;29918:10;:90::i;:::-;29911:97;;;;;;29879:140;30126:16;:14;:16::i;:::-;30104:18;;:38;30100:140;;30165:64;30170:22;30194:34;30165:4;:64::i;30100:140::-;30528:39;30536:11;;30549:4;:17;;;30528:7;:39::i;:::-;30505:19;;;30490:77;;;30491:12;;;30490:77;;;;;;;;;;;;;;;;;;;-1:-1:-1;30597:18:10;;-1:-1:-1;30581:4:10;:12;;;:34;;;;;;;;;30577:176;;30638:104;30649:16;30667:54;30728:4;:12;;;30723:18;;;;;;;30577:176;-1:-1:-1;;;;;30811:23:10;;;;;;:13;:23;;;;;;30836:17;;;;30803:51;;30811:23;30803:7;:51::i;:::-;30778:21;;;30763:91;;;30764:12;;;30763:91;;;;;;;;;;;;;;;;;;;-1:-1:-1;30884:18:10;;-1:-1:-1;30868:4:10;:12;;;:34;;;;;;;;;30864:179;;30925:107;30936:16;30954:57;31018:4;:12;;;31013:18;;;;;;;30864:179;31138:4;:17;;;31121:14;:12;:14::i;:::-;:34;31117:153;;;31178:81;31183:29;31214:44;31178:4;:81::i;31117:153::-;31476:19;;;;31462:11;:33;31531:21;;;;-1:-1:-1;;;;;31505:23:10;;;;;;:13;:23;;;;;:47;31944:17;;;;31920:42;;31519:8;;31920:13;:42::i;:::-;32071:17;;;;32037:52;;;;;;;32064:4;;-1:-1:-1;;;;;32037:52:10;;;-1:-1:-1;;;;;;;;;;;32037:52:10;;;;;;;;32121:17;;;;32140;;;;;32104:54;;;-1:-1:-1;;;;;32104:54:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32208:11;;;32258:17;;;;32277;;;;32208:87;;;-1:-1:-1;;;32208:87:10;;32241:4;32208:87;;;;;;;-1:-1:-1;;;;;32208:87:10;;;;;;;;;;;;;;;;;;;;;;:11;;;:24;;:87;;;;;:11;;:87;;;;;;;:11;;:87;;;5:2:-1;;;;30:1;27;20:12;5:2;32208:87:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;32318:14:10;;-1:-1:-1;32313:20:10;;-1:-1:-1;;32313:20:10;;32306:27;27836:4504;-1:-1:-1;;;;;;27836:4504:10:o;542:331:12:-;598:9;;629:6;625:67;;-1:-1:-1;659:18:12;;-1:-1:-1;659:18:12;651:30;;625:67;711:5;;;715:1;711;:5;:1;731:5;;;;;:10;727:140;;-1:-1:-1;765:26:12;;-1:-1:-1;793:1:12;;-1:-1:-1;757:38:12;;727:140;834:18;;-1:-1:-1;854:1:12;-1:-1:-1;826:30:12;;963:209;1019:9;;1050:6;1046:75;;-1:-1:-1;1080:26:12;;-1:-1:-1;1108:1:12;1072:38;;1046:75;1139:18;1163:1;1159;:5;;;;;;1131:34;;;;963:209;;;;;:::o;3215:175:22:-;3296:4;3321:5;;;3352:12;3344:6;;;;3336:29;;;;-1:-1:-1;;;3336:29:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;3336:29:22;-1:-1:-1;3382:1:22;3215:175;-1:-1:-1;;;;3215:175:22:o;4160:131::-;4219:10;;:::i;:::-;4248:36;;;;;;;;4263:19;4268:1;:10;;;4280:1;4263:4;:19::i;:::-;4248:36;;4241:43;4160:131;-1:-1:-1;;;4160:131:22:o;1106:171::-;1184:4;1200:18;;:::i;:::-;1221:15;1226:1;1229:6;1221:4;:15::i;:::-;1200:36;;1253:17;1262:7;1253:8;:17::i;1417:205::-;1515:4;1531:18;;:::i;:::-;1552:15;1557:1;1560:6;1552:4;:15::i;:::-;1531:36;;1584:31;1589:17;1598:7;1589:8;:17::i;:::-;1608:6;1584:4;:31::i;:::-;1577:38;1417:205;-1:-1:-1;;;;;1417:205:22:o;44768:3544:10:-;44987:11;;;:111;;;-1:-1:-1;;;44987:111:10;;45030:4;44987:111;;;;;;;-1:-1:-1;;;;;44987:111:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44906:4;;;;;;44987:11;;:34;;:111;;;;;;;;;;;;;;;44906:4;44987:11;:111;;;5:2:-1;;;;30:1;27;20:12;5:2;44987:111:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;44987:111:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;44987:111:10;;-1:-1:-1;45112:12:10;;45108:148;;45148:93;45159:27;45188:43;45233:7;45148:10;:93::i;:::-;45140:105;-1:-1:-1;45243:1:10;;-1:-1:-1;45140:105:10;;-1:-1:-1;45140:105:10;45108:148;45363:16;:14;:16::i;:::-;45341:18;;:38;45337:148;;45403:67;45408:22;45432:37;45403:4;:67::i;45337:148::-;45628:16;:14;:16::i;:::-;45587;-1:-1:-1;;;;;45587:35:10;;:37;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;45587:37:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;45587:37:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;45587:37:10;:57;45583:178;;45668:78;45673:22;45697:48;45668:4;:78::i;45583:178::-;45831:10;-1:-1:-1;;;;;45819:22:10;:8;-1:-1:-1;;;;;45819:22:10;;45815:143;;;45865:78;45870:26;45898:44;45865:4;:78::i;45815:143::-;46010:16;46006:145;;46050:86;46055:36;46093:42;46050:4;:86::i;46006:145::-;-1:-1:-1;;46204:11:10;:23;46200:156;;;46251:90;46256:36;46294:46;46251:4;:90::i;46200:156::-;46408:21;46431:22;46457:51;46474:10;46486:8;46496:11;46457:16;:51::i;:::-;46407:101;;-1:-1:-1;46407:101:10;-1:-1:-1;46522:40:10;;46518:161;;46586:78;46597:16;46591:23;;;;;;;;46616:47;46586:4;:78::i;:::-;46578:90;-1:-1:-1;46666:1:10;;-1:-1:-1;46578:90:10;;-1:-1:-1;;;46578:90:10;46518:161;46929:11;;;:102;;;-1:-1:-1;;;46929:102:10;;46979:4;46929:102;;;;;;;-1:-1:-1;;;;;46929:102:10;;;;;;;;;;;;;;;46886:21;;;;46929:11;;;;;:41;;:102;;;;;;;;;;;:11;:102;;;5:2:-1;;;;30:1;27;20:12;5:2;46929:102:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;46929:102:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;46929:102:10;;;;;;;;;-1:-1:-1;46929:102:10;-1:-1:-1;47049:40:10;;47041:104;;;;-1:-1:-1;;;47041:104:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;47276:11;47236:16;-1:-1:-1;;;;;47236:26:10;;47263:8;47236:36;;;;;;;;;;;;;-1:-1:-1;;;;;47236:36:10;-1:-1:-1;;;;;47236:36:10;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;47236:36:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;47236:36:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;47236:36:10;:51;;47228:88;;;;;-1:-1:-1;;;47228:88:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;47442:15;-1:-1:-1;;;;;47471:42:10;;47508:4;47471:42;47467:250;;;47542:63;47564:4;47571:10;47583:8;47593:11;47542:13;:63::i;:::-;47529:76;;47467:250;;;47649:57;;;-1:-1:-1;;;47649:57:10;;-1:-1:-1;;;;;47649:57:10;;;;;;;;;;;;;;;;;;;;;;:22;;;;;;:57;;;;;;;;;;;;;;;-1:-1:-1;47649:22:10;:57;;;5:2:-1;;;;30:1;27;20:12;5:2;47649:57:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;47649:57:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;47649:57:10;;-1:-1:-1;47467:250:10;47820:34;;47812:67;;;;;-1:-1:-1;;;47812:67:10;;;;;;;;;;;;-1:-1:-1;;;47812:67:10;;;;;;;;;;;;;;;47941:96;;;-1:-1:-1;;;;;47941:96:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48270:14;48257:48;-1:-1:-1;48287:17:10;;-1:-1:-1;;;;;;44768:3544:10;;;;;;;;:::o;4297:119:22:-;4356:4;409;4379:19;4384:1;4387;:10;;;4379:4;:19::i;:::-;:30;;;;;;;4297:119;-1:-1:-1;;;4297:119:22:o;33537:3334:10:-;33693:11;;;:64;;;-1:-1:-1;;;33693:64:10;;33727:4;33693:64;;;;;;;-1:-1:-1;;;;;33693:64:10;;;;;;;;;;;;;;;33621:4;;;;33693:11;;;;;:25;;:64;;;;;;;;;;;;;;33621:4;33693:11;:64;;;5:2:-1;;;;30:1;27;20:12;5:2;33693:64:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;33693:64:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;33693:64:10;;-1:-1:-1;33771:12:10;;33767:140;;33806:90;33817:27;33846:40;33888:7;33806:10;:90::i;:::-;33799:97;;;;;33767:140;34014:16;:14;:16::i;:::-;33992:18;;:38;33988:140;;34053:64;34058:22;34082:34;34053:4;:64::i;33988:140::-;34213:14;34230;:12;:14::i;:::-;34213:31;;34271:12;34259:9;:24;34255:136;;;34306:74;34311:29;34342:37;34306:4;:74::i;:::-;34299:81;;;;;;34255:136;34401:27;;:::i;:::-;34709:37;34737:8;34709:27;:37::i;:::-;34686:19;;;34671:75;;;34672:4;34671:75;;;;;;;;;;;;;;;;;;;-1:-1:-1;34776:18:10;;-1:-1:-1;34760:12:10;;:34;;;;;;;;;34756:179;;34817:107;34828:16;34846:57;34910:4;:12;;;34905:18;;;;;;;34817:107;34810:114;;;;;;;34756:179;34986:42;34994:4;:19;;;35015:12;34986:7;:42::i;:::-;34960:22;;;34945:83;;;34946:4;34945:83;;;;;;;;;;;;;;;;;;;-1:-1:-1;35058:18:10;;-1:-1:-1;35042:12:10;;:34;;;;;;;;;35038:186;;35099:114;35110:16;35128:64;35199:4;:12;;;35194:18;;;;;;;35038:186;35301:11;;;35347:22;;;;;35301:69;;-1:-1:-1;;;35301:69:10;;35340:4;35301:69;;;;;;;;;;;;-1:-1:-1;;;;;35301:11:10;;;;:30;;:69;;;;;;;;;;;;;;:11;;:69;;;5:2:-1;;;;30:1;27;20:12;5:2;35301:69:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;35301:69:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;35301:69:10;;-1:-1:-1;35384:12:10;;35380:140;;35419:90;35430:27;35459:40;35501:7;35419:10;:90::i;35380:140::-;35569:35;35577:12;;35591;35569:7;:35::i;:::-;35545:20;;;35530:74;;;35531:4;35530:74;;;;;;;;;;;;;;;;;;;-1:-1:-1;35634:18:10;;-1:-1:-1;35618:12:10;;:34;;;;;;;;;35614:177;;35675:105;35686:16;35704:55;35766:4;:12;;;35761:18;;;;;;;35614:177;36024:22;;;;;-1:-1:-1;;;;;35987:24:10;;;;;;:14;:24;;;;;;:59;;;36097:11;;36056:38;;;;:52;36133:20;;;;36118:12;:35;36517:37;36002:8;36541:12;36517:13;:37::i;:::-;36638:22;;;;;36662:20;;;;;36607:76;;-1:-1:-1;;;;;36607:76:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36849:14;36837:27;33537:3334;-1:-1:-1;;;;;;33537:3334:10:o;3712:605:21:-;3792:9;3803:10;;:::i;:::-;4100:14;4116;4134:25;409:4:22;4152:6:21;4134:7;:25::i;:::-;4099:60;;-1:-1:-1;4099:60:21;-1:-1:-1;4181:18:21;4173:4;:26;;;;;;;;;4169:90;;-1:-1:-1;4229:18:21;;;;;;;;;-1:-1:-1;4229:18:21;;4223:4;;-1:-1:-1;4229:18:21;-1:-1:-1;4215:33:21;;4169:90;4275:35;4282:9;4293:7;:16;;;4275:6;:35::i;3836:155:22:-;3917:4;3949:12;3941:6;;;;3933:29;;;;-1:-1:-1;;;3933:29:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;3933:29:22;-1:-1:-1;;;3979:5:22;;;3836:155::o;4877:120::-;4930:4;4953:37;4958:1;4961;4953:37;;;;;;;;;;;;;;;;;5084:4;5104:6;;;:16;;-1:-1:-1;5114:6:22;;5104:16;5100:55;;;-1:-1:-1;5143:1:22;5136:8;;5100:55;5173:5;;;5177:1;5173;:5;:1;5196:5;;;;;:10;5208:12;5188:33;;;;;-1:-1:-1;;;5188:33:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;315:5940:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;315:5940:7;;;-1:-1:-1;315:5940:7;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;315:5940:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;315:5940:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;315:5940:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;315:5940:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;315:5940:7;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;"},"methodIdentifiers":{"_reduceReserves(uint256)":"601a0bf1","_setAdminFee(uint256)":"91dd36c6","_setInterestRateModel(address)":"f2b3abbd","_setNameAndSymbol(string,string)":"34154d4c","_setReserveFactor(uint256)":"fca7820b","_withdrawAdminFees(uint256)":"a7b820df","_withdrawFuseFees(uint256)":"a03dce8d","accrualBlockNumber()":"6c540baf","accrueInterest()":"a6afed95","adminFeeMantissa()":"8d02d9a1","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","balanceOfUnderlying(address)":"3af9e669","borrow(uint256)":"c5ebeaec","borrowBalanceCurrent(address)":"17bfdfbc","borrowBalanceStored(address)":"95dd9193","borrowIndex()":"aa5af0fd","borrowRatePerBlock()":"f8f9da28","comptroller()":"5fe3b567","decimals()":"313ce567","exchangeRateCurrent()":"bd6d894d","exchangeRateStored()":"182df0f5","fuseFeeMantissa()":"dbfe7c19","getAccountSnapshot(address)":"c37f68e2","getCash()":"3b1d21a2","initialize(address,address,string,string,uint256,uint256)":"79c2c954","initialize(address,address,uint256,string,string,uint8,uint256,uint256)":"0f8855e8","interestRateModel()":"f3fdb15a","isCEther()":"ac784ddc","isCToken()":"fe9c44ae","liquidateBorrow(address,address)":"aae40a2a","mint()":"1249c58b","name()":"06fdde03","protocolSeizeShareMantissa()":"6752e702","redeem(uint256)":"db006a75","redeemUnderlying(uint256)":"852a12e3","repayBorrow()":"4e4d9fea","repayBorrowBehalf(address)":"e5974619","reserveFactorMantissa()":"173b9904","seize(address,address,uint256)":"b2a02ff1","supplyRatePerBlock()":"ae9d70b0","symbol()":"95d89b41","totalAdminFees()":"61feacff","totalBorrows()":"47bd3718","totalBorrowsCurrent()":"73acee98","totalFuseFees()":"dc028ab1","totalReserves()":"8f840ddd","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","underlying()":"6f307dc3"}},"metadata":"{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"cashPrior\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"interestAccumulated\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"borrowIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalBorrows\",\"type\":\"uint256\"}],\"name\":\"AccrueInterest\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"borrowAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"accountBorrows\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalBorrows\",\"type\":\"uint256\"}],\"name\":\"Borrow\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"error\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"info\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"detail\",\"type\":\"uint256\"}],\"name\":\"Failure\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"liquidator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"repayAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"cTokenCollateral\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"seizeTokens\",\"type\":\"uint256\"}],\"name\":\"LiquidateBorrow\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"mintAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"mintTokens\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldAdminFeeMantissa\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newAdminFeeMantissa\",\"type\":\"uint256\"}],\"name\":\"NewAdminFee\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract ComptrollerInterface\",\"name\":\"oldComptroller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract ComptrollerInterface\",\"name\":\"newComptroller\",\"type\":\"address\"}],\"name\":\"NewComptroller\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldFuseFeeMantissa\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newFuseFeeMantissa\",\"type\":\"uint256\"}],\"name\":\"NewFuseFee\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract InterestRateModel\",\"name\":\"oldInterestRateModel\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract InterestRateModel\",\"name\":\"newInterestRateModel\",\"type\":\"address\"}],\"name\":\"NewMarketInterestRateModel\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldReserveFactorMantissa\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newReserveFactorMantissa\",\"type\":\"uint256\"}],\"name\":\"NewReserveFactor\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"redeemer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"redeemAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"redeemTokens\",\"type\":\"uint256\"}],\"name\":\"Redeem\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"repayAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"accountBorrows\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalBorrows\",\"type\":\"uint256\"}],\"name\":\"RepayBorrow\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"benefactor\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"addAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newTotalReserves\",\"type\":\"uint256\"}],\"name\":\"ReservesAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reduceAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newTotalReserves\",\"type\":\"uint256\"}],\"name\":\"ReservesReduced\",\"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\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"reduceAmount\",\"type\":\"uint256\"}],\"name\":\"_reduceReserves\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newAdminFeeMantissa\",\"type\":\"uint256\"}],\"name\":\"_setAdminFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contract InterestRateModel\",\"name\":\"newInterestRateModel\",\"type\":\"address\"}],\"name\":\"_setInterestRateModel\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"}],\"name\":\"_setNameAndSymbol\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newReserveFactorMantissa\",\"type\":\"uint256\"}],\"name\":\"_setReserveFactor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"withdrawAmount\",\"type\":\"uint256\"}],\"name\":\"_withdrawAdminFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"withdrawAmount\",\"type\":\"uint256\"}],\"name\":\"_withdrawFuseFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"accrualBlockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"accrueInterest\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"adminFeeMantissa\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOfUnderlying\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"borrowAmount\",\"type\":\"uint256\"}],\"name\":\"borrow\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"borrowBalanceCurrent\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"borrowBalanceStored\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"borrowIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"borrowRatePerBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"comptroller\",\"outputs\":[{\"internalType\":\"contract ComptrollerInterface\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"exchangeRateCurrent\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"exchangeRateStored\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"fuseFeeMantissa\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getAccountSnapshot\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getCash\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contract ComptrollerInterface\",\"name\":\"comptroller_\",\"type\":\"address\"},{\"internalType\":\"contract InterestRateModel\",\"name\":\"interestRateModel_\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"initialExchangeRateMantissa_\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"decimals_\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"reserveFactorMantissa_\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"adminFeeMantissa_\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contract ComptrollerInterface\",\"name\":\"comptroller_\",\"type\":\"address\"},{\"internalType\":\"contract InterestRateModel\",\"name\":\"interestRateModel_\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"reserveFactorMantissa_\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"adminFeeMantissa_\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"interestRateModel\",\"outputs\":[{\"internalType\":\"contract InterestRateModel\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isCEther\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isCToken\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"contract CToken\",\"name\":\"cTokenCollateral\",\"type\":\"address\"}],\"name\":\"liquidateBorrow\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"mint\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"protocolSeizeShareMantissa\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"redeemTokens\",\"type\":\"uint256\"}],\"name\":\"redeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"redeemAmount\",\"type\":\"uint256\"}],\"name\":\"redeemUnderlying\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"repayBorrow\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"}],\"name\":\"repayBorrowBehalf\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"reserveFactorMantissa\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"liquidator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"seizeTokens\",\"type\":\"uint256\"}],\"name\":\"seize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"supplyRatePerBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalAdminFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalBorrows\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"totalBorrowsCurrent\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalFuseFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalReserves\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"underlying\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Compound\",\"details\":\"This contract should not to be deployed on its own; instead, deploy `CEtherDelegator` (proxy contract) and `CEtherDelegate` (logic/implementation contract).\",\"methods\":{\"_reduceReserves(uint256)\":{\"params\":{\"reduceAmount\":\"Amount of reduction to reserves\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"_setAdminFee(uint256)\":{\"details\":\"Admin function to accrue interest and set a new admin fee\",\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"_setInterestRateModel(address)\":{\"details\":\"Admin function to accrue interest and update the interest rate model\",\"params\":{\"newInterestRateModel\":\"the new interest rate model to use\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"_setNameAndSymbol(string,string)\":{\"details\":\"Admin function to update the cToken ERC20 name and symbol\",\"params\":{\"_name\":\"the new ERC20 token name to use\",\"_symbol\":\"the new ERC20 token symbol to use\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"_setReserveFactor(uint256)\":{\"details\":\"Admin function to accrue interest and set a new reserve factor\",\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"_withdrawAdminFees(uint256)\":{\"params\":{\"withdrawAmount\":\"Amount of fees to withdraw\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"_withdrawFuseFees(uint256)\":{\"params\":{\"withdrawAmount\":\"Amount of fees to withdraw\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"accrueInterest()\":{\"details\":\"This calculates interest accrued from the last checkpointed block up to the current block and writes new checkpoint to storage.\"},\"allowance(address,address)\":{\"params\":{\"owner\":\"The address of the account which owns the tokens to be spent\",\"spender\":\"The address of the account which may transfer tokens\"},\"return\":\"The number of tokens allowed to be spent (-1 means infinite)\"},\"approve(address,uint256)\":{\"details\":\"This will overwrite the approval amount for `spender` and is subject to issues noted [here](https://eips.ethereum.org/EIPS/eip-20#approve)\",\"params\":{\"amount\":\"The number of tokens that are approved (-1 means infinite)\",\"spender\":\"The address of the account which may transfer tokens\"},\"return\":\"Whether or not the approval succeeded\"},\"balanceOf(address)\":{\"params\":{\"owner\":\"The address of the account to query\"},\"return\":\"The number of tokens owned by `owner`\"},\"balanceOfUnderlying(address)\":{\"details\":\"This also accrues interest in a transaction\",\"params\":{\"owner\":\"The address of the account to query\"},\"return\":\"The amount of underlying owned by `owner`\"},\"borrow(uint256)\":{\"params\":{\"borrowAmount\":\"The amount of the underlying asset to borrow\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"borrowBalanceCurrent(address)\":{\"params\":{\"account\":\"The address whose balance should be calculated after updating borrowIndex\"},\"return\":\"The calculated balance\"},\"borrowBalanceStored(address)\":{\"params\":{\"account\":\"The address whose balance should be calculated\"},\"return\":\"The calculated balance\"},\"borrowRatePerBlock()\":{\"return\":\"The borrow interest rate per block, scaled by 1e18\"},\"exchangeRateCurrent()\":{\"return\":\"Calculated exchange rate scaled by 1e18\"},\"exchangeRateStored()\":{\"details\":\"This function does not accrue interest before calculating the exchange rate\",\"return\":\"Calculated exchange rate scaled by 1e18\"},\"getAccountSnapshot(address)\":{\"details\":\"This is used by comptroller to more efficiently perform liquidity checks.\",\"params\":{\"account\":\"Address of the account to snapshot\"},\"return\":\"(possible error, token balance, borrow balance, exchange rate mantissa)\"},\"getCash()\":{\"return\":\"The quantity of underlying asset owned by this contract\"},\"initialize(address,address,string,string,uint256,uint256)\":{\"params\":{\"comptroller_\":\"The address of the Comptroller\",\"interestRateModel_\":\"The address of the interest rate model\",\"name_\":\"ERC-20 name of this token\",\"symbol_\":\"ERC-20 symbol of this token\"}},\"initialize(address,address,uint256,string,string,uint8,uint256,uint256)\":{\"params\":{\"comptroller_\":\"The address of the Comptroller\",\"decimals_\":\"EIP-20 decimal precision of this token\",\"initialExchangeRateMantissa_\":\"The initial exchange rate, scaled by 1e18\",\"interestRateModel_\":\"The address of the interest rate model\",\"name_\":\"EIP-20 name of this token\",\"symbol_\":\"EIP-20 symbol of this token\"}},\"liquidateBorrow(address,address)\":{\"details\":\"Reverts upon any failure\",\"params\":{\"borrower\":\"The borrower of this cToken to be liquidated\",\"cTokenCollateral\":\"The market in which to seize collateral from the borrower\"}},\"mint()\":{\"details\":\"Reverts upon any failure\"},\"redeem(uint256)\":{\"details\":\"Accrues interest whether or not the operation succeeds, unless reverted\",\"params\":{\"redeemTokens\":\"The number of cTokens to redeem into underlying\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"redeemUnderlying(uint256)\":{\"details\":\"Accrues interest whether or not the operation succeeds, unless reverted\",\"params\":{\"redeemAmount\":\"The amount of underlying to redeem\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"repayBorrow()\":{\"details\":\"Reverts upon any failure\"},\"repayBorrowBehalf(address)\":{\"details\":\"Reverts upon any failure\",\"params\":{\"borrower\":\"the account with the debt being payed off\"}},\"seize(address,address,uint256)\":{\"details\":\"Will fail unless called by another cToken during the process of liquidation. Its absolutely critical to use msg.sender as the borrowed cToken and not a parameter.\",\"params\":{\"borrower\":\"The account having collateral seized\",\"liquidator\":\"The account receiving seized collateral\",\"seizeTokens\":\"The number of cTokens to seize\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"supplyRatePerBlock()\":{\"return\":\"The supply interest rate per block, scaled by 1e18\"},\"totalBorrowsCurrent()\":{\"return\":\"The total borrows with interest\"},\"transfer(address,uint256)\":{\"params\":{\"amount\":\"The number of tokens to transfer\",\"dst\":\"The address of the destination account\"},\"return\":\"Whether or not the transfer succeeded\"},\"transferFrom(address,address,uint256)\":{\"params\":{\"amount\":\"The number of tokens to transfer\",\"dst\":\"The address of the destination account\",\"src\":\"The address of the source account\"},\"return\":\"Whether or not the transfer succeeded\"}},\"title\":\"Compound's CEther Contract\"},\"userdoc\":{\"methods\":{\"_reduceReserves(uint256)\":{\"notice\":\"Accrues interest and reduces reserves by transferring to admin\"},\"_setAdminFee(uint256)\":{\"notice\":\"accrues interest and sets a new admin fee for the protocol using _setAdminFeeFresh\"},\"_setInterestRateModel(address)\":{\"notice\":\"accrues interest and updates the interest rate model using _setInterestRateModelFresh\"},\"_setNameAndSymbol(string,string)\":{\"notice\":\"updates the cToken ERC20 name and symbol\"},\"_setReserveFactor(uint256)\":{\"notice\":\"accrues interest and sets a new reserve factor for the protocol using _setReserveFactorFresh\"},\"_withdrawAdminFees(uint256)\":{\"notice\":\"Accrues interest and reduces admin fees by transferring to admin\"},\"_withdrawFuseFees(uint256)\":{\"notice\":\"Accrues interest and reduces Fuse fees by transferring to Fuse\"},\"accrueInterest()\":{\"notice\":\"Applies accrued interest to total borrows and reserves\"},\"allowance(address,address)\":{\"notice\":\"Get the current allowance from `owner` for `spender`\"},\"approve(address,uint256)\":{\"notice\":\"Approve `spender` to transfer up to `amount` from `src`\"},\"balanceOf(address)\":{\"notice\":\"Get the token balance of the `owner`\"},\"balanceOfUnderlying(address)\":{\"notice\":\"Get the underlying balance of the `owner`\"},\"borrow(uint256)\":{\"notice\":\"Sender borrows assets from the protocol to their own address\"},\"borrowBalanceCurrent(address)\":{\"notice\":\"Accrue interest to updated borrowIndex and then calculate account's borrow balance using the updated borrowIndex\"},\"borrowBalanceStored(address)\":{\"notice\":\"Return the borrow balance of account based on stored data\"},\"borrowRatePerBlock()\":{\"notice\":\"Returns the current per-block borrow interest rate for this cToken\"},\"exchangeRateCurrent()\":{\"notice\":\"Accrue interest then return the up-to-date exchange rate\"},\"exchangeRateStored()\":{\"notice\":\"Calculates the exchange rate from the underlying to the CToken\"},\"getAccountSnapshot(address)\":{\"notice\":\"Get a snapshot of the account's balances, and the cached exchange rate\"},\"getCash()\":{\"notice\":\"Get cash balance of this cToken in the underlying asset\"},\"initialize(address,address,string,string,uint256,uint256)\":{\"notice\":\"Initialize the new money market\"},\"initialize(address,address,uint256,string,string,uint8,uint256,uint256)\":{\"notice\":\"Initialize the money market\"},\"liquidateBorrow(address,address)\":{\"notice\":\"The sender liquidates the borrowers collateral. The collateral seized is transferred to the liquidator.\"},\"mint()\":{\"notice\":\"Sender supplies assets into the market and receives cTokens in exchange\"},\"redeem(uint256)\":{\"notice\":\"Sender redeems cTokens in exchange for the underlying asset\"},\"redeemUnderlying(uint256)\":{\"notice\":\"Sender redeems cTokens in exchange for a specified amount of underlying asset\"},\"repayBorrow()\":{\"notice\":\"Sender repays their own borrow\"},\"repayBorrowBehalf(address)\":{\"notice\":\"Sender repays a borrow belonging to borrower\"},\"seize(address,address,uint256)\":{\"notice\":\"Transfers collateral tokens (this market) to the liquidator.\"},\"supplyRatePerBlock()\":{\"notice\":\"Returns the current per-block supply interest rate for this cToken\"},\"totalBorrowsCurrent()\":{\"notice\":\"Returns the current total borrows plus accrued interest\"},\"transfer(address,uint256)\":{\"notice\":\"Transfer `amount` tokens from `msg.sender` to `dst`\"},\"transferFrom(address,address,uint256)\":{\"notice\":\"Transfer `amount` tokens from `src` to `dst`\"}},\"notice\":\"CToken which wraps Ether\"}},\"settings\":{\"compilationTarget\":{\"contracts/CEther.sol\":\"CEther\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/CEther.sol\":{\"keccak256\":\"0x582241553bc00e4ca35535fd0adef37f352a72be794260c74ff0cdd8877421fb\",\"urls\":[\"bzz-raw://f38ad51666cc1aa9bb2788771196a3f59fbd79f2aee1891815cdbcf959f19b7a\",\"dweb:/ipfs/QmdX5fSj5QWLgpDDHDwjQp1sB3esZz6VJ8d3NVYCqnojgd\"]},\"contracts/CToken.sol\":{\"keccak256\":\"0xc3a5a827241528049e20a24cc446558c8a9272909f75ce5d1cf14ae3ab5feba3\",\"urls\":[\"bzz-raw://a403db2bf1a8e5e9384df19600bd18d4251056818b094afcdab418e683bb5cb8\",\"dweb:/ipfs/QmdkRbFGtKP67tNNqyH7BraDRGerwRNA7ktscbFV9LioM2\"]},\"contracts/CTokenInterfaces.sol\":{\"keccak256\":\"0xc8a056c724ef4f0215ece6011e7ac1007c9dc7611ce5160d470ec858bbb06bd3\",\"urls\":[\"bzz-raw://58951693d1b53d2722e55b068bab2b570f4b044d89c28ed6b53bac6e95aeb662\",\"dweb:/ipfs/QmQiNTw5jZR74WjKfX2bPiuTT4tuFuq8rx7QxEVyVvdGLn\"]},\"contracts/CarefulMath.sol\":{\"keccak256\":\"0x1487237dbbbb73ad43c8eff16e78311753719a94a5065f574de5c91b672c56f8\",\"urls\":[\"bzz-raw://349966a236f313b2cb42e1942832e6bd7e134f65f6654e6c4d46788e65cc4a9b\",\"dweb:/ipfs/Qmebpv8i5jLR4fLgpZHQZRLu6aefVAbLC2yUk9ABEekquz\"]},\"contracts/ComptrollerInterface.sol\":{\"keccak256\":\"0xecfb84fabc9792d0b1c912886249c67bc42c39eb065d962d0b9a5f3736af5892\",\"urls\":[\"bzz-raw://711547ebc1a7f18b271118dd98276771953a9d7b3674716f67d247be9b907372\",\"dweb:/ipfs/QmbVZNvkBp8miByATrL6y5j8MePdcQ8uTAUZMpKrhpLgoa\"]},\"contracts/ComptrollerStorage.sol\":{\"keccak256\":\"0x83961d3c12984fe4afc72717fc44b2d868563d053a0eceda0cbf17ec6b255913\",\"urls\":[\"bzz-raw://ea667c2de43881f9be19f4f75dec348632273178965fc9b3655705d853b032bb\",\"dweb:/ipfs/QmZP6sbNFSgFZrAEvfRjhp1NtGj6U6Sea3JGiKG96AHyeP\"]},\"contracts/EIP20Interface.sol\":{\"keccak256\":\"0xee33b8b333743308a9153a59f22da2cadb22cedef4403fe039bf9e057c9c729a\",\"urls\":[\"bzz-raw://5427fdb941300d36a424da0a0a5800e3b2ca51c9c922831dbfce2f6637402b43\",\"dweb:/ipfs/QmTrvmLynqSUPjsGW2dpiQ91dSmn4xzccQiwr8qaBtyvjH\"]},\"contracts/EIP20NonStandardInterface.sol\":{\"keccak256\":\"0x469899442dd9640bfc2c670d404ad3027e48df5df8e5aeab0e25cc6b6aae05f5\",\"urls\":[\"bzz-raw://d8c4498abaf539eb413a2f1a916d75945adc8bd4ef437f8450cb67e07be3f38d\",\"dweb:/ipfs/QmaFpWfnhAMYW21rbT5PEszn4TGHdGU58Eq5AfZsCuapZ3\"]},\"contracts/ErrorReporter.sol\":{\"keccak256\":\"0xe9587478bc9efad203cab02b8aecae32828cfc9a271b13ae3c018e38e44aab32\",\"urls\":[\"bzz-raw://2eb34bdbbbc410fb401d50ddca44a7421a1d8191711c569ed5bcec1c1b07a05c\",\"dweb:/ipfs/QmYKNCYppyx3NGiwtjdLEmxUMgfnFBqT4pnvnhnBrPgrxS\"]},\"contracts/Exponential.sol\":{\"keccak256\":\"0xfda0e2b610541cf1cf316a0000c89a1069ccc21f1566affc0a058810e2b835d3\",\"urls\":[\"bzz-raw://fe319f184f1b5f27019d3d890124cd24e466d27153ac38eb9ff6b16efbad48b9\",\"dweb:/ipfs/Qmcev6jCmtdCviJxUQvUCmesPDShRDSvdfUEfvsqd4GEJA\"]},\"contracts/ExponentialNoError.sol\":{\"keccak256\":\"0x713a089f4bbcaec1d3924fc7d9a2154904a39f46cb6f25b713167dbe5f21623e\",\"urls\":[\"bzz-raw://d7108d68af7c5effd4272615ceba54e79e585f6b8be5aabc7602245c84c7b9e0\",\"dweb:/ipfs/QmQZo2XpxW7w5viVEg71mi9eKaAYD7HUqfCMB5yCCPVnc5\"]},\"contracts/IFuseFeeDistributor.sol\":{\"keccak256\":\"0xb5d287b8e05574d38bd5d0b413f44b4c5d312f28188573ac60abe78123fbd92c\",\"urls\":[\"bzz-raw://84c2bbf746a82aaa100bee90c7dd40411c723bded124bb1775bf72bf7fda8a2c\",\"dweb:/ipfs/QmToQzDtz9BV2tvU71YsfWjdaZu5qpP1xKFZ1TkQgubhDb\"]},\"contracts/InterestRateModel.sol\":{\"keccak256\":\"0x0cc0dbd1991e5dcdcff58b0c82a9471a0fb9df26763e5e7415e1d081b7332409\",\"urls\":[\"bzz-raw://f4d7936aefc43ea2724f0e472b8f1517f1ca40170258ab9d5bbd0862dd0c4f13\",\"dweb:/ipfs/QmfYjG1Sm3kNwbhomHCWhMqw9LvaJVWVzBe4Te5BHRbTQS\"]},\"contracts/PriceOracle.sol\":{\"keccak256\":\"0x62ba3a5ec8f06d456ab089d6ca7f9d14d3a6ce6814923271ca60a6990918fb41\",\"urls\":[\"bzz-raw://aa6d2f20efdd5389161eb15bdab98b5628dc8cd5354394bbed35bb14d3612506\",\"dweb:/ipfs/QmVfo4eCDuk8LMSywpBjZBxCv7zLCNsG6u3nyD1d4CYwsD\"]}},\"version\":1}"}},"contracts/CEtherDelegate.sol":{"CEtherDelegate":{"abi":[{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"cashPrior","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"interestAccumulated","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"borrowIndex","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalBorrows","type":"uint256"}],"name":"AccrueInterest","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"borrower","type":"address"},{"indexed":false,"internalType":"uint256","name":"borrowAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"accountBorrows","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalBorrows","type":"uint256"}],"name":"Borrow","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"error","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"info","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"detail","type":"uint256"}],"name":"Failure","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"liquidator","type":"address"},{"indexed":false,"internalType":"address","name":"borrower","type":"address"},{"indexed":false,"internalType":"uint256","name":"repayAmount","type":"uint256"},{"indexed":false,"internalType":"address","name":"cTokenCollateral","type":"address"},{"indexed":false,"internalType":"uint256","name":"seizeTokens","type":"uint256"}],"name":"LiquidateBorrow","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"minter","type":"address"},{"indexed":false,"internalType":"uint256","name":"mintAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"mintTokens","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldAdminFeeMantissa","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newAdminFeeMantissa","type":"uint256"}],"name":"NewAdminFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract ComptrollerInterface","name":"oldComptroller","type":"address"},{"indexed":false,"internalType":"contract ComptrollerInterface","name":"newComptroller","type":"address"}],"name":"NewComptroller","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldFuseFeeMantissa","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newFuseFeeMantissa","type":"uint256"}],"name":"NewFuseFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldImplementation","type":"address"},{"indexed":false,"internalType":"address","name":"newImplementation","type":"address"}],"name":"NewImplementation","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract InterestRateModel","name":"oldInterestRateModel","type":"address"},{"indexed":false,"internalType":"contract InterestRateModel","name":"newInterestRateModel","type":"address"}],"name":"NewMarketInterestRateModel","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldReserveFactorMantissa","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newReserveFactorMantissa","type":"uint256"}],"name":"NewReserveFactor","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"redeemer","type":"address"},{"indexed":false,"internalType":"uint256","name":"redeemAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"redeemTokens","type":"uint256"}],"name":"Redeem","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"payer","type":"address"},{"indexed":false,"internalType":"address","name":"borrower","type":"address"},{"indexed":false,"internalType":"uint256","name":"repayAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"accountBorrows","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalBorrows","type":"uint256"}],"name":"RepayBorrow","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"benefactor","type":"address"},{"indexed":false,"internalType":"uint256","name":"addAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newTotalReserves","type":"uint256"}],"name":"ReservesAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"admin","type":"address"},{"indexed":false,"internalType":"uint256","name":"reduceAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newTotalReserves","type":"uint256"}],"name":"ReservesReduced","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":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":false,"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"name":"_becomeImplementation","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"_prepare","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"reduceAmount","type":"uint256"}],"name":"_reduceReserves","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"newAdminFeeMantissa","type":"uint256"}],"name":"_setAdminFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"implementation_","type":"address"},{"internalType":"bool","name":"allowResign","type":"bool"},{"internalType":"bytes","name":"becomeImplementationData","type":"bytes"}],"name":"_setImplementationSafe","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"contract InterestRateModel","name":"newInterestRateModel","type":"address"}],"name":"_setInterestRateModel","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"}],"name":"_setNameAndSymbol","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"newReserveFactorMantissa","type":"uint256"}],"name":"_setReserveFactor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"withdrawAmount","type":"uint256"}],"name":"_withdrawAdminFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"withdrawAmount","type":"uint256"}],"name":"_withdrawFuseFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"accrualBlockNumber","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"accrueInterest","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"adminFeeMantissa","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOfUnderlying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"borrowAmount","type":"uint256"}],"name":"borrow","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"borrowBalanceCurrent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"borrowBalanceStored","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"borrowIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"borrowRatePerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"comptroller","outputs":[{"internalType":"contract ComptrollerInterface","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"exchangeRateCurrent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"exchangeRateStored","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"fuseFeeMantissa","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getAccountSnapshot","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getCash","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"contract ComptrollerInterface","name":"comptroller_","type":"address"},{"internalType":"contract InterestRateModel","name":"interestRateModel_","type":"address"},{"internalType":"uint256","name":"initialExchangeRateMantissa_","type":"uint256"},{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"uint8","name":"decimals_","type":"uint8"},{"internalType":"uint256","name":"reserveFactorMantissa_","type":"uint256"},{"internalType":"uint256","name":"adminFeeMantissa_","type":"uint256"}],"name":"initialize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"contract ComptrollerInterface","name":"comptroller_","type":"address"},{"internalType":"contract InterestRateModel","name":"interestRateModel_","type":"address"},{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"uint256","name":"reserveFactorMantissa_","type":"uint256"},{"internalType":"uint256","name":"adminFeeMantissa_","type":"uint256"}],"name":"initialize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"interestRateModel","outputs":[{"internalType":"contract InterestRateModel","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isCEther","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isCToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"borrower","type":"address"},{"internalType":"contract CToken","name":"cTokenCollateral","type":"address"}],"name":"liquidateBorrow","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[],"name":"mint","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"protocolSeizeShareMantissa","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"redeemTokens","type":"uint256"}],"name":"redeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"redeemAmount","type":"uint256"}],"name":"redeemUnderlying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"repayBorrow","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"borrower","type":"address"}],"name":"repayBorrowBehalf","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"reserveFactorMantissa","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"liquidator","type":"address"},{"internalType":"address","name":"borrower","type":"address"},{"internalType":"uint256","name":"seizeTokens","type":"uint256"}],"name":"seize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"supplyRatePerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalAdminFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalBorrows","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"totalBorrowsCurrent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalFuseFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalReserves","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"src","type":"address"},{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"underlying","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b50615e7280620000216000396000f3fe60806040526004361061036b5760003560e01c8063852a12e3116101c6578063b2a02ff1116100f7578063dd62ed3e11610095578063f3fdb15a1161006f578063f3fdb15a14610f1e578063f8f9da2814610f33578063fca7820b14610f48578063fe9c44ae14610d315761036b565b8063dd62ed3e14610e8a578063e597461914610ec5578063f2b3abbd14610eeb5761036b565b8063c5ebeaec116100d1578063c5ebeaec14610e0c578063db006a7514610e36578063dbfe7c1914610e60578063dc028ab114610e755761036b565b8063b2a02ff114610d5b578063bd6d894d14610d9e578063c37f68e214610db35761036b565b8063a6afed9511610164578063aa5af0fd1161013e578063aa5af0fd14610cee578063aae40a2a14610d03578063ac784ddc14610d31578063ae9d70b014610d465761036b565b8063a6afed9514610c76578063a7b820df14610c8b578063a9059cbb14610cb55761036b565b806391dd36c6116101a057806391dd36c614610bda57806395d89b4114610c0457806395dd919314610c19578063a03dce8d14610c4c5761036b565b8063852a12e314610b865780638d02d9a114610bb05780638f840ddd14610bc55761036b565b806347bd3718116102a057806361feacff1161023e5780636f307dc3116102185780636f307dc3146109d557806370a08231146109ea57806373acee9814610a1d57806379c2c95414610a325761036b565b806361feacff146109965780636752e702146109ab5780636c540baf146109c05761036b565b806356e677281161027a57806356e67728146108ab5780635c60da1b146109265780635fe3b56714610957578063601a0bf11461096c5761036b565b806347bd3718146107fc5780634e4d9fea1461081157806350d85b73146108195761036b565b8063182df0f51161030d578063313ce567116102e7578063313ce567146106be57806334154d4c146106e95780633af9e669146107b45780633b1d21a2146107e75761036b565b8063182df0f51461065e5780631db789441461067357806323b872dd1461067b5761036b565b80631249c58b116103495780631249c58b146105e7578063173b9904146105ef57806317bfdfbc1461061657806318160ddd146106495761036b565b806306fdde03146103a9578063095ea7b3146104335780630f8855e814610480575b600061037634610f72565b5090506103a6816040518060400160405280600b81526020016a1b5a5b9d0819985a5b195960aa1b815250610fd4565b50005b3480156103b557600080fd5b506103be61123a565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103f85781810151838201526020016103e0565b50505050905090810190601f1680156104255780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561043f57600080fd5b5061046c6004803603604081101561045657600080fd5b506001600160a01b0381351690602001356112c5565b604080519115158252519081900360200190f35b34801561048c57600080fd5b506105e560048036036101008110156104a457600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b8111156104de57600080fd5b8201836020820111156104f057600080fd5b803590602001918460018302840111600160201b8311171561051157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561056357600080fd5b82018360208201111561057557600080fd5b803590602001918460018302840111600160201b8311171561059657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505060ff8335169350505060208101359060400135611332565b005b6105e56115e0565b3480156105fb57600080fd5b5061060461161e565b60408051918252519081900360200190f35b34801561062257600080fd5b506106046004803603602081101561063957600080fd5b50356001600160a01b0316611624565b34801561065557600080fd5b506106046116a0565b34801561066a57600080fd5b506106046116a6565b6105e5611709565b34801561068757600080fd5b5061046c6004803603606081101561069e57600080fd5b506001600160a01b0381358116916020810135909116906040013561191a565b3480156106ca57600080fd5b506106d3611948565b6040805160ff9092168252519081900360200190f35b3480156106f557600080fd5b506105e56004803603604081101561070c57600080fd5b810190602081018135600160201b81111561072657600080fd5b82018360208201111561073857600080fd5b803590602001918460018302840111600160201b8311171561075957600080fd5b919390929091602081019035600160201b81111561077657600080fd5b82018360208201111561078857600080fd5b803590602001918460018302840111600160201b831117156107a957600080fd5b509092509050611951565b3480156107c057600080fd5b50610604600480360360208110156107d757600080fd5b50356001600160a01b03166119b6565b3480156107f357600080fd5b50610604611a6e565b34801561080857600080fd5b50610604611a7d565b6105e5611a83565b34801561082557600080fd5b506105e56004803603606081101561083c57600080fd5b6001600160a01b03823516916020810135151591810190606081016040820135600160201b81111561086d57600080fd5b82018360208201111561087f57600080fd5b803590602001918460018302840111600160201b831117156108a057600080fd5b509092509050611ac5565b3480156108b757600080fd5b506105e5600480360360208110156108ce57600080fd5b810190602081018135600160201b8111156108e857600080fd5b8201836020820111156108fa57600080fd5b803590602001918460018302840111600160201b8311171561091b57600080fd5b509092509050611b4e565b34801561093257600080fd5b5061093b611bac565b604080516001600160a01b039092168252519081900360200190f35b34801561096357600080fd5b5061093b611bbb565b34801561097857600080fd5b506106046004803603602081101561098f57600080fd5b5035611bca565b3480156109a257600080fd5b50610604611c1b565b3480156109b757600080fd5b50610604611c21565b3480156109cc57600080fd5b50610604611c2c565b3480156109e157600080fd5b5061093b611c32565b3480156109f657600080fd5b5061060460048036036020811015610a0d57600080fd5b50356001600160a01b0316611c41565b348015610a2957600080fd5b50610604611c5c565b348015610a3e57600080fd5b506105e5600480360360c0811015610a5557600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b811115610a8857600080fd5b820183602082011115610a9a57600080fd5b803590602001918460018302840111600160201b83111715610abb57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115610b0d57600080fd5b820183602082011115610b1f57600080fd5b803590602001918460018302840111600160201b83111715610b4057600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505082359350505060200135611ccf565b348015610b9257600080fd5b5061060460048036036020811015610ba957600080fd5b5035611cf4565b348015610bbc57600080fd5b50610604611cff565b348015610bd157600080fd5b50610604611d05565b348015610be657600080fd5b5061060460048036036020811015610bfd57600080fd5b5035611d0b565b348015610c1057600080fd5b506103be611d48565b348015610c2557600080fd5b5061060460048036036020811015610c3c57600080fd5b50356001600160a01b0316611da3565b348015610c5857600080fd5b5061060460048036036020811015610c6f57600080fd5b5035611e07565b348015610c8257600080fd5b50610604611e44565b348015610c9757600080fd5b5061060460048036036020811015610cae57600080fd5b5035612009565b348015610cc157600080fd5b5061046c60048036036040811015610cd857600080fd5b506001600160a01b038135169060200135612046565b348015610cfa57600080fd5b50610604612073565b6105e560048036036040811015610d1957600080fd5b506001600160a01b0381358116916020013516612079565b348015610d3d57600080fd5b5061046c6120c1565b348015610d5257600080fd5b506106046120c6565b348015610d6757600080fd5b5061060460048036036060811015610d7e57600080fd5b506001600160a01b0381358116916020810135909116906040013561217e565b348015610daa57600080fd5b506106046121a2565b348015610dbf57600080fd5b50610de660048036036020811015610dd657600080fd5b50356001600160a01b0316612216565b604080519485526020850193909352838301919091526060830152519081900360800190f35b348015610e1857600080fd5b5061060460048036036020811015610e2f57600080fd5b50356122ab565b348015610e4257600080fd5b5061060460048036036020811015610e5957600080fd5b50356122b6565b348015610e6c57600080fd5b506106046122c1565b348015610e8157600080fd5b506106046122c7565b348015610e9657600080fd5b5061060460048036036040811015610ead57600080fd5b506001600160a01b03813581169160200135166122cd565b6105e560048036036020811015610edb57600080fd5b50356001600160a01b03166122f8565b348015610ef757600080fd5b5061060460048036036020811015610f0e57600080fd5b50356001600160a01b0316612346565b348015610f2a57600080fd5b5061093b612380565b348015610f3f57600080fd5b5061060461238f565b348015610f5457600080fd5b5061060460048036036020811015610f6b57600080fd5b5035612404565b6000806000610f8081612441565b6000610f8a611e44565b90508015610fb557610fa8816011811115610fa157fe5b602061250a565b935060009250610fc59050565b610fbf3386612570565b93509350505b610fce816128f2565b50915091565b81610fde57611236565b606081516007016040519080825280601f01601f19166020018201604052801561100f576020820181803883390190505b50905060005b82518110156110605782818151811061102a57fe5b602001015160f81c60f81b82828151811061104157fe5b60200101906001600160f81b031916908160001a905350600101611015565b8151600160fd1b9083908390811061107457fe5b60200101906001600160f81b031916908160001a905350602860f81b82826001018151811061109f57fe5b60200101906001600160f81b031916908160001a9053506103e8840460300160f81b8282600201815181106110d057fe5b60200101906001600160f81b031916908160001a905350600a606485040660300160f81b82826003018151811061110357fe5b60200101906001600160f81b031916908160001a905350600a8085040660300160f81b82826004018151811061113557fe5b60200101906001600160f81b031916908160001a905350600a840660300160f81b82826005018151811061116557fe5b60200101906001600160f81b031916908160001a905350602960f81b82826006018151811061119057fe5b60200101906001600160f81b031916908160001a9053508184156112325760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156111f75781810151838201526020016111df565b50505050905090810190601f1680156112245780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5050505b5050565b6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156112bd5780601f10611292576101008083540402835291602001916112bd565b820191906000526020600020905b8154815290600101906020018083116112a057829003601f168201915b505050505081565b3360008181526013602090815260408083206001600160a01b03871680855290835281842086905581518681529151939493909284927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a360019150505b92915050565b3373a731585ab05fc9f83555cf9bff8f58ee94e18f85146113845760405162461bcd60e51b8152600401808060200182810382526029815260200180615d286029913960400191505060405180910390fd5b600b541580156113945750600c54155b6113cf5760405162461bcd60e51b8152600401808060200182810382526023815260200180615c426023913960400191505060405180910390fd5b6007869055856114105760405162461bcd60e51b8152600401808060200182810382526030815260200180615c656030913960400191505060405180910390fd5b600061141b8961296e565b90508015611470576040805162461bcd60e51b815260206004820152601a60248201527f73657474696e6720636f6d7074726f6c6c6572206661696c6564000000000000604482015290519081900360640190fd5b611478612aa1565b600b55670de0b6b3a7640000600c5561149088612aa5565b905080156114cf5760405162461bcd60e51b8152600401808060200182810382526022815260200180615c956022913960400191505060405180910390fd5b85516114e2906002906020890190615a32565b5084516114f6906003906020880190615a32565b506004805460ff191660ff861617905561150f83612dab565b90508015611564576040805162461bcd60e51b815260206004820152601d60248201527f73657474696e67207265736572766520666163746f72206661696c6564000000604482015290519081900360640190fd5b61156d82612e64565b905080156115c2576040805162461bcd60e51b815260206004820152601860248201527f73657474696e672061646d696e20666565206661696c65640000000000000000604482015290519081900360640190fd5b50506001805460ff60b01b1916600160b01b17905550505050505050565b60006115eb34610f72565b50905061161b816040518060400160405280600b81526020016a1b5a5b9d0819985a5b195960aa1b815250610fd4565b50565b600a5481565b60008061163081612441565b600061163a611e44565b14611685576040805162461bcd60e51b81526020600482015260166024820152751858d8dc9d59481a5b9d195c995cdd0819985a5b195960521b604482015290519081900360640190fd5b61168e83611da3565b91505b61169a816128f2565b50919050565b60115481565b60008060006116b3612f89565b909250905060008260038111156116c657fe5b146117025760405162461bcd60e51b8152600401808060200182810382526035815260200180615dd56035913960400191505060405180910390fd5b9150505b90565b33301480159061178f5750600560009054906101000a90046001600160a01b03166001600160a01b031663dd5cd22c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561176257600080fd5b505afa158015611776573d6000803e3d6000fd5b505050506040513d602081101561178c57600080fd5b50515b15611918576000805460408051638abe0b7560e01b81526001600160a01b03909216600483015251829160609173a731585ab05fc9f83555cf9bff8f58ee94e18f8591638abe0b759160248083019287929190829003018186803b1580156117f657600080fd5b505afa15801561180a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052606081101561183357600080fd5b81516020830151604080850180519151939592948301929184600160201b82111561185d57600080fd5b90830190602082018581111561187257600080fd5b8251600160201b81118282018810171561188b57600080fd5b82525081516020918201929091019080838360005b838110156118b85781810151838201526020016118a0565b50505050905090810190601f1680156118e55780820380516001836020036101000a031916815260200191505b5060405250506000549396509194509250506001600160a01b0380851691161461191457611914838383613049565b5050505b565b60008061192681612441565b600061193433878787613265565b149150611940816128f2565b509392505050565b60045460ff1681565b6119596134f3565b61199d576040805162461bcd60e51b815260206004820152601060248201526f31b0b63632b9103737ba1030b236b4b760811b604482015290519081900360640190fd5b6119a960028585615aac565b5061123260038383615aac565b60006119c0615b1a565b60405180602001604052806119d36121a2565b90526001600160a01b0384166000908152601260205260408120549192509081906119ff90849061366e565b90925090506000826003811115611a1257fe5b14611a64576040805162461bcd60e51b815260206004820152601f60248201527f62616c616e636520636f756c64206e6f742062652063616c63756c6174656400604482015290519081900360640190fd5b925050505b919050565b6000611a786136c1565b905090565b600d5481565b6000611a8e346136ed565b50905061161b81604051806040016040528060128152602001711c995c185e509bdc9c9bddc819985a5b195960721b815250610fd4565b611acd6134f3565b611b07576040805162461bcd60e51b815260206004820152600660248201526510b0b236b4b760d11b604482015290519081900360640190fd5b611b48848484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061304992505050565b50505050565b33301480611b5f5750611b5f6134f3565b611b98576040805162461bcd60e51b815260206004820152600560248201526410b9b2b63360d91b604482015290519081900360640190fd5b5050600180546001600160b01b0319169055565b6000546001600160a01b031681565b6005546001600160a01b031681565b600080611bd681612441565b6000611be0611e44565b90508015611c0657611bfe816011811115611bf757fe5b603b61250a565b925050611691565b611c0f8461372e565b92505061169a816128f2565b600f5481565b666379da05b6000081565b600b5481565b6015546001600160a01b031681565b6001600160a01b031660009081526012602052604090205490565b600080611c6881612441565b6000611c72611e44565b14611cbd576040805162461bcd60e51b81526020600482015260166024820152751858d8dc9d59481a5b9d195c995cdd0819985a5b195960521b604482015290519081900360640190fd5b600d549150611ccb816128f2565b5090565b6702c68af0bb1400006012611cea8888848989868a8a611332565b5050505050505050565b600061132c826137fa565b60085481565b600e5481565b600080611d1781612441565b6000611d21611e44565b90508015611d3f57611bfe816011811115611d3857fe5b605261250a565b611c0f84612e64565b6003805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156112bd5780601f10611292576101008083540402835291602001916112bd565b6000806000611db18461383a565b90925090506000826003811115611dc457fe5b14611e005760405162461bcd60e51b8152600401808060200182810382526037815260200180615cb76037913960400191505060405180910390fd5b9392505050565b600080611e1381612441565b6000611e1d611e44565b90508015611e3b57611bfe816011811115611e3457fe5b603361250a565b611c0f846138ee565b600080611e4f612aa1565b905080600b541415611e65576000915050611706565b6000611e6f6136c1565b90506000600660009054906101000a90046001600160a01b03166001600160a01b03166315f2405383600d54611eb4600e54611eaf600f5460105461396f565b61396f565b6040518463ffffffff1660e01b815260040180848152602001838152602001828152602001935050505060206040518083038186803b158015611ef657600080fd5b505afa158015611f0a573d6000803e3d6000fd5b505050506040513d6020811015611f2057600080fd5b5051905065048c27395000811115611f7f576040805162461bcd60e51b815260206004820152601c60248201527f626f72726f772072617465206973206162737572646c79206869676800000000604482015290519081900360640190fd5b600080611f8e85600b546139a5565b90925090506000826003811115611fa157fe5b14611ff3576040805162461bcd60e51b815260206004820152601f60248201527f636f756c64206e6f742063616c63756c61746520626c6f636b2064656c746100604482015290519081900360640190fd5b611fff858585846139c8565b9550505050505090565b60008061201581612441565b600061201f611e44565b9050801561203d57611bfe81601181111561203657fe5b603761250a565b611c0f84613be0565b60008061205281612441565b600061206033338787613265565b14915061206c816128f2565b5092915050565b600c5481565b6000612086833484613cc8565b50905061191481604051806040016040528060168152602001751b1a5c5d5a59185d19509bdc9c9bddc819985a5b195960521b815250610fd4565b600181565b6006546000906001600160a01b031663b81688166120e26136c1565b600d546120f9600e54611eaf600f5460105461396f565b600854600954600a5401016040518563ffffffff1660e01b81526004018085815260200184815260200183815260200182815260200194505050505060206040518083038186803b15801561214d57600080fd5b505afa158015612161573d6000803e3d6000fd5b505050506040513d602081101561217757600080fd5b5051905090565b6000600161218b81612441565b61219733868686613db4565b9150611940816128f2565b6000806121ae81612441565b60006121b8611e44565b14612203576040805162461bcd60e51b81526020600482015260166024820152751858d8dc9d59481a5b9d195c995cdd0819985a5b195960521b604482015290519081900360640190fd5b61220b6116a6565b9150611ccb816128f2565b6001600160a01b0381166000908152601260205260408120548190819081908180806122418961383a565b93509050600081600381111561225357fe5b146122715760095b9750600096508695508594506122a49350505050565b612279612f89565b92509050600081600381111561228b57fe5b1461229757600961225b565b5060009650919450925090505b9193509193565b600061132c8261418e565b600061132c826141cc565b60095481565b60105481565b6001600160a01b03918216600090815260136020908152604080832093909416825291909152205490565b60006123048234614205565b509050611236816040518060400160405280601881526020017f7265706179426f72726f77426568616c66206661696c65640000000000000000815250610fd4565b600080612351611e44565b905080156123775761236f81601181111561236857fe5b604b61250a565b915050611a69565b611e0083612aa5565b6006546001600160a01b031681565b6006546000906001600160a01b03166315f240536123ab6136c1565b600d546123c2600e54611eaf600f5460105461396f565b6040518463ffffffff1660e01b815260040180848152602001838152602001828152602001935050505060206040518083038186803b15801561214d57600080fd5b60008061241081612441565b600061241a611e44565b9050801561243857611bfe81601181111561243157fe5b605961250a565b611c0f84612dab565b600154600160b01b900460ff1661248c576040805162461bcd60e51b815260206004820152600a6024820152691c994b595b9d195c995960b21b604482015290519081900360640190fd5b806124fa57600560009054906101000a90046001600160a01b03166001600160a01b031663c90c20b16040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156124e157600080fd5b505af11580156124f5573d6000803e3d6000fd5b505050505b506001805460ff60b01b19169055565b60007f45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa083601181111561253957fe5b83606381111561254557fe5b604080519283526020830191909152600082820152519081900360600190a1826011811115611e0057fe5b60055460408051634ef4c3e160e01b81523060048201526001600160a01b03858116602483015260448201859052915160009384938493911691634ef4c3e19160648082019260209290919082900301818787803b1580156125d157600080fd5b505af11580156125e5573d6000803e3d6000fd5b505050506040513d60208110156125fb57600080fd5b50519050801561261f57612612600360218361426a565b9250600091506128eb9050565b612627612aa1565b600b541461263b57612612600a602461250a565b612643615b2d565b61264b612f89565b604083018190526020830182600381111561266257fe5b600381111561266d57fe5b905250600090508160200151600381111561268457fe5b146126b3576126a560096023836020015160038111156126a057fe5b61426a565b9350600092506128eb915050565b6126bd86866142f3565b60c08201819052604080516020810182529083015181526126de9190614389565b60608301819052602083018260038111156126f557fe5b600381111561270057fe5b905250600090508160200151600381111561271757fe5b14612769576040805162461bcd60e51b815260206004820181905260248201527f4d494e545f45584348414e47455f43414c43554c4154494f4e5f4641494c4544604482015290519081900360640190fd5b612779601154826060015161396f565b60808201526001600160a01b03861660009081526012602052604090205460608201516127a6919061396f565b60a0820181905260808201516011556001600160a01b0387166000818152601260209081526040918290209390935560c084015160608086015183519485529484019190915282820193909352517f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f929181900390910190a1606081015160408051918252516001600160a01b038816913091600080516020615d518339815191529181900360200190a360055460c08201516060830151604080516341c728b960e01b81523060048201526001600160a01b038b81166024830152604482019490945260648101929092525191909216916341c728b991608480830192600092919082900301818387803b1580156128be57600080fd5b505af11580156128d2573d6000803e3d6000fd5b50600092506128df915050565b8160c001519350935050505b9250929050565b6001805460ff60b01b1916600160b01b1790558061161b57600560009054906101000a90046001600160a01b03166001600160a01b031663632e51426040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561295a57600080fd5b505af1158015611232573d6000803e3d6000fd5b600080600560009054906101000a90046001600160a01b03169050826001600160a01b0316627e3dd26040518163ffffffff1660e01b815260040160206040518083038186803b1580156129c157600080fd5b505afa1580156129d5573d6000803e3d6000fd5b505050506040513d60208110156129eb57600080fd5b5051612a3e576040805162461bcd60e51b815260206004820152601c60248201527f6d61726b6572206d6574686f642072657475726e65642066616c736500000000604482015290519081900360640190fd5b600580546001600160a01b0319166001600160a01b03858116918217909255604080519284168352602083019190915280517f7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d9281900390910190a16000611e00565b4390565b600080612ab06134f3565b612ac05761236f6001604d61250a565b612ac8612aa1565b600b5414612adc5761236f600a604c61250a565b600660009054906101000a90046001600160a01b03169050826001600160a01b0316632191f92a6040518163ffffffff1660e01b815260040160206040518083038186803b158015612b2d57600080fd5b505afa158015612b41573d6000803e3d6000fd5b505050506040513d6020811015612b5757600080fd5b5051612baa576040805162461bcd60e51b815260206004820152601c60248201527f6d61726b6572206d6574686f642072657475726e65642066616c736500000000604482015290519081900360640190fd5b600680546001600160a01b0319166001600160a01b03858116918217909255604080519284168352602083019190915280517fedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f9269281900390910190a16001600160a01b03811615612cdc5760408051600481526024810182526020810180516001600160e01b0316636cc1140b60e11b178152915181516001600160a01b0385169382918083835b60208310612c715780518252601f199092019160209182019101612c52565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612cd3576040519150601f19603f3d011682016040523d82523d6000602084013e612cd8565b606091505b5050505b60408051600481526024810182526020810180516001600160e01b031663742a137b60e11b178152915181516001600160a01b0387169382918083835b60208310612d385780518252601f199092019160209182019101612d19565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612d9a576040519150601f19603f3d011682016040523d82523d6000602084013e612d9f565b606091505b5060009150611e009050565b6000612db56134f3565b612dcc57612dc56001605a61250a565b9050611a69565b612dd4612aa1565b600b5414612de857612dc5600a605b61250a565b670de0b6b3a7640000612e08612e008460085461396f565b60095461396f565b1115612e1a57612dc56002605c61250a565b600a805490839055604080518281526020810185905281517faaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460929181900390910190a16000611e00565b6000612e6e612aa1565b600b5414612e8257612dc5600a605461250a565b600019821415612e925760085491505b6000612e9c6143a0565b9050670de0b6b3a7640000612ebc612eb6600a548661396f565b8361396f565b1115612ece5761236f6002605561250a565b8260085414612f3457612edf6134f3565b612eef5761236f6001605361250a565b6008805490849055604080518281526020810186905281517fcdd0b588250e1398549f79cfdb8217c186688822905d6715b0834ea1c865594a929181900390910190a1505b8060095414612f82576009805490829055604080518281526020810184905281517f92eef861b6533b7d3417f39c2ad7b460eed4e88a32fa3604f30e718b7602e7dc929181900390910190a1505b6000611e00565b601154600090819080612fa457505060075460009150613045565b6000612fae6136c1565b90506000612fba615b1a565b6000612fdc84600d54612fd7600e54611eaf600f5460105461396f565b6143ef565b935090506000816003811115612fee57fe5b14613003579550600094506130459350505050565b61300d838661443c565b92509050600081600381111561301f57fe5b14613034579550600094506130459350505050565b505160009550935061304592505050565b9091565b60005460408051630304735160e61b81526001600160a01b039283166004820152918516602483015283151560448301525173a731585ab05fc9f83555cf9bff8f58ee94e18f859163c11cd440916064808301926020929190829003018186803b1580156130b657600080fd5b505afa1580156130ca573d6000803e3d6000fd5b505050506040513d60208110156130e057600080fd5b505161311b576040805162461bcd60e51b8152602060048201526005602482015264085a5b5c1b60da1b604482015290519081900360640190fd5b8115613129576131296144ec565b600080546001600160a01b038581166001600160a01b03198316178355604051602060248201818152865160448401528651939094169461321694309488949193849360649093019290860191908190849084905b8381101561319657818101518382015260200161317e565b50505050905090810190601f1680156131c35780820380516001836020036101000a031916815260200191505b5060408051601f19818403018152918152602080830180516001600160e01b0316630adccee560e31b17905281518083019092526007825266216265636f6d6560c81b9082015290935091506144f19050565b50600054604080516001600160a01b038085168252909216602083015280517fd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a9281900390910190a150505050565b600554604080516317b9b84b60e31b81523060048201526001600160a01b03868116602483015285811660448301526064820185905291516000938493169163bdcdc25891608480830192602092919082900301818787803b1580156132ca57600080fd5b505af11580156132de573d6000803e3d6000fd5b505050506040513d60208110156132f457600080fd5b5051905080156133135761330b6003605d8361426a565b9150506134eb565b836001600160a01b0316856001600160a01b031614156133395761330b6002605e61250a565b60006001600160a01b0387811690871614156133585750600019613380565b506001600160a01b038086166000908152601360209081526040808320938a16835292905220545b60008060008061339085896139a5565b909450925060008460038111156133a357fe5b146133c1576133b46009605e61250a565b96505050505050506134eb565b6001600160a01b038a166000908152601260205260409020546133e490896139a5565b909450915060008460038111156133f757fe5b14613408576133b46009605f61250a565b6001600160a01b03891660009081526012602052604090205461342b9089614602565b9094509050600084600381111561343e57fe5b1461344f576133b46009606061250a565b6001600160a01b03808b16600090815260126020526040808220859055918b1681522081905560001985146134a7576001600160a01b03808b166000908152601360209081526040808320938f168352929052208390555b886001600160a01b03168a6001600160a01b0316600080516020615d518339815191528a6040518082815260200191505060405180910390a3600096505050505050505b949350505050565b600554604080516303e1469160e61b815290516000926001600160a01b031691829163f851a44091600480820192602092909190829003018186803b15801561353b57600080fd5b505afa15801561354f573d6000803e3d6000fd5b505050506040513d602081101561356557600080fd5b50516001600160a01b0316331480156135df5750806001600160a01b0316630a755ec26040518163ffffffff1660e01b815260040160206040518083038186803b1580156135b257600080fd5b505afa1580156135c6573d6000803e3d6000fd5b505050506040513d60208110156135dc57600080fd5b50515b8061170257503373a731585ab05fc9f83555cf9bff8f58ee94e18f851480156117025750806001600160a01b0316632f1069ba6040518163ffffffff1660e01b815260040160206040518083038186803b15801561363c57600080fd5b505afa158015613650573d6000803e3d6000fd5b505050506040513d602081101561366657600080fd5b505191505090565b600080600061367b615b1a565b6136858686614628565b9092509050600082600381111561369857fe5b146136a957509150600090506128eb565b60006136b482614690565b9350935050509250929050565b60008060006136d047346139a5565b909250905060008260038111156136e357fe5b1461170257600080fd5b60008060006136fb81612441565b6000613705611e44565b9050801561372357610fa881601181111561371c57fe5b604161250a565b610fbf33338761469f565b6000806137396134f3565b6137495761236f6001603c61250a565b613751612aa1565b600b54146137655761236f600a603e61250a565b8261376e6136c1565b10156137805761236f600e603d61250a565b600e548311156137965761236f6002603f61250a565b6137a2600e54846149ed565b600e81905590506137b33384614a27565b604080513381526020810185905280820183905290517f3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e9181900360600190a16000611e00565b60008061380681612441565b6000613810611e44565b9050801561382e57611bfe81601181111561382757fe5b602a61250a565b611c0f33600086614a5d565b6001600160a01b0381166000908152601460205260408120805482918291829182916138715750600094508493506138e992505050565b6138818160000154600c54614f2d565b9094509250600084600381111561389457fe5b146138a95750919350600092506138e9915050565b6138b7838260010154614f6c565b909450915060008460038111156138ca57fe5b146138df5750919350600092506138e9915050565b5060009450925050505b915091565b6000806138f9612aa1565b600b541461390d5761236f600a603561250a565b826139166136c1565b10156139285761236f600e603461250a565b60105483111561393e5761236f6002603661250a565b61394a601054846149ed565b60108190559050612f8273a731585ab05fc9f83555cf9bff8f58ee94e18f8584614a27565b6000611e008383604051806040016040528060118152602001706164646974696f6e206f766572666c6f7760781b815250614f97565b6000808383116139bc5750600090508183036128eb565b506003905060006128eb565b60006139d2615b1a565b6139ea60405180602001604052808681525084614ff5565b905060006139fa82600d5461501f565b90506000613a0a82600d5461396f565b90506000613a2b6040518060200160405280600a5481525084600e5461503e565b90506000613a4c60405180602001604052806009548152508560105461503e565b90506000613a6d604051806020016040528060085481525086600f5461503e565b90506000613a8087600c54600c5461503e565b600b8d9055600c819055600d869055600e8590556010849055600f839055604080518d8152602081018990528082018390526060810188905290519192507f4dec04e750ca11537cabcd8a9eab06494de08da3735bc8871cd41250e190bc04919081900360800190a16006546040805160248082018e905282518083039091018152604490910182526020810180516001600160e01b0316635efd023360e11b178152915181516001600160a01b0390941693919290918291908083835b60208310613b5d5780518252601f199092019160209182019101613b3e565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613bbf576040519150601f19603f3d011682016040523d82523d6000602084013e613bc4565b606091505b5060009150613bd09050565b9c9b505050505050505050505050565b600080613beb612aa1565b600b5414613bff5761236f600a603961250a565b82613c086136c1565b1015613c1a5761236f600e603861250a565b600f54831115613c305761236f6002603a61250a565b613c3c600f54846149ed565b905080600f81905550612f82600560009054906101000a90046001600160a01b03166001600160a01b031663f851a4406040518163ffffffff1660e01b815260040160206040518083038186803b158015613c9657600080fd5b505afa158015613caa573d6000803e3d6000fd5b505050506040513d6020811015613cc057600080fd5b505184614a27565b6000806000613cd681612441565b6000613ce0611e44565b90508015613d0b57613cfe816011811115613cf757fe5b601161250a565b935060009250613da29050565b846001600160a01b031663a6afed956040518163ffffffff1660e01b8152600401602060405180830381600087803b158015613d4657600080fd5b505af1158015613d5a573d6000803e3d6000fd5b505050506040513d6020811015613d7057600080fd5b505190508015613d9057613cfe816011811115613d8957fe5b601261250a565b613d9c33888888615066565b93509350505b613dab816128f2565b50935093915050565b6005546040805163d02f735160e01b81523060048201526001600160a01b038781166024830152868116604483015285811660648301526084820185905291516000938493169163d02f73519160a480830192602092919082900301818787803b158015613e2157600080fd5b505af1158015613e35573d6000803e3d6000fd5b505050506040513d6020811015613e4b57600080fd5b505190508015613e625761330b6003601d8361426a565b846001600160a01b0316846001600160a01b03161415613e885761330b6006601e61250a565b613e90615b6b565b6001600160a01b038516600090815260126020526040902054613eb390856139a5565b6020830181905282826003811115613ec757fe5b6003811115613ed257fe5b9052506000905081516003811115613ee657fe5b14613f0b57613f026009601c836000015160038111156126a057fe5b925050506134eb565b613f2a846040518060200160405280666379da05b60000815250615558565b60808201819052613f3c9085906149ed565b6060820152613f49612f89565b60c0830181905282826003811115613f5d57fe5b6003811115613f6857fe5b9052506000905081516003811115613f7c57fe5b14613fce576040805162461bcd60e51b815260206004820152601860248201527f65786368616e67652072617465206d617468206572726f720000000000000000604482015290519081900360640190fd5b613fee60405180602001604052808360c00151815250826080015161501f565b60a08201819052600e546140019161396f565b60e0820152601154608082015161401891906149ed565b6101008201526001600160a01b03861660009081526012602052604090205460608201516140469190614602565b604083018190528282600381111561405a57fe5b600381111561406557fe5b905250600090508151600381111561407957fe5b1461409557613f026009601b836000015160038111156126a057fe5b60e0810151600e556101008101516011556020808201516001600160a01b0380881660008181526012855260408082209490945583860151928b16808252908490209290925560608501518351908152925191939092600080516020615d51833981519152929081900390910190a36080810151604080519182525130916001600160a01b03881691600080516020615d518339815191529181900360200190a360a081015160e082015160408051308152602081019390935282810191909152517fa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc59181900360600190a16000979650505050505050565b60008061419a81612441565b60006141a4611e44565b905080156141c257611bfe8160118111156141bb57fe5b600a61250a565b611c0f3385615580565b6000806141d881612441565b60006141e2611e44565b905080156141f957611bfe81601181111561382757fe5b611c0f33856000614a5d565b600080600061421381612441565b600061421d611e44565b905080156142485761423b81601181111561423457fe5b604061250a565b9350600092506142599050565b61425333878761469f565b93509350505b614262816128f2565b509250929050565b60007f45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa084601181111561429957fe5b8460638111156142a557fe5b604080519283526020830191909152818101859052519081900360600190a160038460118111156142d257fe5b146142e8578360118111156142e357fe5b6134eb565b506103e80192915050565b6000336001600160a01b03841614614344576040805162461bcd60e51b815260206004820152600f60248201526e0e6cadcc8cae440dad2e6dac2e8c6d608b1b604482015290519081900360640190fd5b81341461169a576040805162461bcd60e51b815260206004820152600e60248201526d0ecc2d8eaca40dad2e6dac2e8c6d60931b604482015290519081900360640190fd5b6000806000614396615b1a565b61368586866158c6565b600073a731585ab05fc9f83555cf9bff8f58ee94e18f856001600160a01b031663dd86fea16040518163ffffffff1660e01b815260040160206040518083038186803b15801561214d57600080fd5b6000806000806143ff8787614602565b9092509050600082600381111561441257fe5b146144235750915060009050614434565b61442d81866139a5565b9350935050505b935093915050565b6000614446615b1a565b60008061445b86670de0b6b3a7640000614f2d565b9092509050600082600381111561446e57fe5b1461448d575060408051602081019091526000815290925090506128eb565b60008061449a8388614f6c565b909250905060008260038111156144ad57fe5b146144cf575060408051602081019091526000815290945092506128eb915050565b604080516020810190915290815260009890975095505050505050565b611918565b606060006060856001600160a01b0316856040518082805190602001908083835b602083106145315780518252601f199092019160209182019101614512565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614593576040519150601f19603f3d011682016040523d82523d6000602084013e614598565b606091505b5091509150816145f9578051156145b25780518082602001fd5b60405162461bcd60e51b81526020600482018181528651602484015286518793919283926044019190850190808383600083156111f75781810151838201526020016111df565b95945050505050565b60008083830184811061461a576000925090506128eb565b5060029150600090506128eb565b6000614632615b1a565b600080614643866000015186614f2d565b9092509050600082600381111561465657fe5b14614675575060408051602081019091526000815290925090506128eb565b60408051602081019091529081526000969095509350505050565b51670de0b6b3a7640000900490565b60055460408051631200453160e11b81523060048201526001600160a01b0386811660248301528581166044830152606482018590529151600093849384939116916324008a629160848082019260209290919082900301818787803b15801561470857600080fd5b505af115801561471c573d6000803e3d6000fd5b505050506040513d602081101561473257600080fd5b50519050801561475657614749600360438361426a565b9250600091506144349050565b61475e612aa1565b600b541461477257614749600a604461250a565b61477a615bb8565b6001600160a01b03861660009081526014602052604090206001015460608201526147a48661383a565b60808301819052602083018260038111156147bb57fe5b60038111156147c657fe5b90525060009050816020015160038111156147dd57fe5b14614807576147f960096042836020015160038111156126a057fe5b935060009250614434915050565b6000198514156148205760808101516040820152614828565b604081018590525b6148368782604001516142f3565b60e08201819052608082015161484b916139a5565b60a083018190526020830182600381111561486257fe5b600381111561486d57fe5b905250600090508160200151600381111561488457fe5b146148c05760405162461bcd60e51b815260040180806020018281038252603a815260200180615cee603a913960400191505060405180910390fd5b6148d0600d548260e001516139a5565b60c08301819052602083018260038111156148e757fe5b60038111156148f257fe5b905250600090508160200151600381111561490957fe5b146149455760405162461bcd60e51b8152600401808060200182810382526031815260200180615d716031913960400191505060405180910390fd5b60a080820180516001600160a01b03808a16600081815260146020908152604091829020948555600c5460019095019490945560c0870151600d81905560e088015195518251948f16855294840192909252828101949094526060820192909252608081019190915290517f1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1929181900390910190a160e00151600097909650945050505050565b6000611e008383604051806040016040528060158152602001747375627472616374696f6e20756e646572666c6f7760581b815250615925565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015611914573d6000803e3d6000fd5b6000821580614a6a575081155b614aa55760405162461bcd60e51b8152600401808060200182810382526034815260200180615e0a6034913960400191505060405180910390fd5b614aad615b2d565b614ab5612f89565b6040830181905260208301826003811115614acc57fe5b6003811115614ad757fe5b9052506000905081602001516003811115614aee57fe5b14614b1257614b0a6009602e836020015160038111156126a057fe5b915050611e00565b8315614b93576060810184905260408051602081018252908201518152614b39908561366e565b6080830181905260208301826003811115614b5057fe5b6003811115614b5b57fe5b9052506000905081602001516003811115614b7257fe5b14614b8e57614b0a6009602c836020015160038111156126a057fe5b614c0c565b614baf8360405180602001604052808460400151815250614389565b6060830181905260208301826003811115614bc657fe5b6003811115614bd157fe5b9052506000905081602001516003811115614be857fe5b14614c0457614b0a6009602d836020015160038111156126a057fe5b608081018390525b60055460608201516040805163eabe7d9160e01b81523060048201526001600160a01b03898116602483015260448201939093529051600093929092169163eabe7d919160648082019260209290919082900301818787803b158015614c7157600080fd5b505af1158015614c85573d6000803e3d6000fd5b505050506040513d6020811015614c9b57600080fd5b505190508015614cbb57614cb26003602b8361426a565b92505050611e00565b614cc3612aa1565b600b5414614cd757614cb2600a602f61250a565b614ce760115483606001516139a5565b60a0840181905260208401826003811115614cfe57fe5b6003811115614d0957fe5b9052506000905082602001516003811115614d2057fe5b14614d3c57614cb260096031846020015160038111156126a057fe5b6001600160a01b0386166000908152601260205260409020546060830151614d6491906139a5565b60c0840181905260208401826003811115614d7b57fe5b6003811115614d8657fe5b9052506000905082602001516003811115614d9d57fe5b14614db957614cb260096030846020015160038111156126a057fe5b8160800151614dc66136c1565b1015614dd857614cb2600e603261250a565b60a082015160115560c08201516001600160a01b0387166000908152601260205260409020556080820151614e0e908790614a27565b6060820151604080519182525130916001600160a01b03891691600080516020615d518339815191529181900360200190a36080820151606080840151604080516001600160a01b038b168152602081019490945283810191909152517fe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a9299281900390910190a160055460808301516060840151604080516351dff98960e01b81523060048201526001600160a01b038b81166024830152604482019490945260648101929092525191909216916351dff98991608480830192600092919082900301818387803b158015614f0257600080fd5b505af1158015614f16573d6000803e3d6000fd5b5060009250614f23915050565b9695505050505050565b60008083614f40575060009050806128eb565b83830283858281614f4d57fe5b0414614f61575060029150600090506128eb565b6000925090506128eb565b60008082614f8057506001905060006128eb565b6000838581614f8b57fe5b04915091509250929050565b60008383018285821015614fec5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156111f75781810151838201526020016111df565b50949350505050565b614ffd615b1a565b604051806020016040528061501685600001518561597f565b90529392505050565b6000615029615b1a565b6150338484614ff5565b90506134eb81614690565b6000615048615b1a565b6150528585614ff5565b90506145f961506082614690565b8461396f565b60055460408051632fe3f38f60e11b81523060048201526001600160a01b0384811660248301528781166044830152868116606483015260848201869052915160009384938493911691635fc7e71e9160a48082019260209290919082900301818787803b1580156150d757600080fd5b505af11580156150eb573d6000803e3d6000fd5b505050506040513d602081101561510157600080fd5b50519050801561512557615118600360148361426a565b92506000915061554f9050565b61512d612aa1565b600b541461514157615118600a601861250a565b615149612aa1565b846001600160a01b0316636c540baf6040518163ffffffff1660e01b815260040160206040518083038186803b15801561518257600080fd5b505afa158015615196573d6000803e3d6000fd5b505050506040513d60208110156151ac57600080fd5b5051146151bf57615118600a601361250a565b866001600160a01b0316866001600160a01b031614156151e5576151186006601961250a565b846151f6576151186007601761250a565b60001985141561520c576151186007601661250a565b60008061521a89898961469f565b9092509050811561524a5761523b82601181111561523457fe5b601a61250a565b94506000935061554f92505050565b6005546040805163c488847b60e01b81523060048201526001600160a01b038981166024830152604482018590528251600094859492169263c488847b926064808301939192829003018186803b1580156152a457600080fd5b505afa1580156152b8573d6000803e3d6000fd5b505050506040513d60408110156152ce57600080fd5b508051602090910151909250905081156153195760405162461bcd60e51b8152600401808060200182810382526033815260200180615da26033913960400191505060405180910390fd5b80886001600160a01b03166370a082318c6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561537057600080fd5b505afa158015615384573d6000803e3d6000fd5b505050506040513d602081101561539a57600080fd5b505110156153ef576040805162461bcd60e51b815260206004820152601860248201527f4c49515549444154455f5345495a455f544f4f5f4d5543480000000000000000604482015290519081900360640190fd5b60006001600160a01b0389163014156154155761540e308d8d85613db4565b905061549f565b6040805163b2a02ff160e01b81526001600160a01b038e811660048301528d81166024830152604482018590529151918b169163b2a02ff1916064808201926020929091908290030181600087803b15801561547057600080fd5b505af1158015615484573d6000803e3d6000fd5b505050506040513d602081101561549a57600080fd5b505190505b80156154e9576040805162461bcd60e51b81526020600482015260146024820152731d1bdad95b881cd95a5e9d5c994819985a5b195960621b604482015290519081900360640190fd5b604080516001600160a01b03808f168252808e1660208301528183018790528b1660608201526080810184905290517f298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb529181900360a00190a16000975092955050505050505b94509492505050565b6000670de0b6b3a764000061557184846000015161597f565b8161557857fe5b049392505050565b6005546040805163368f515360e21b81523060048201526001600160a01b0385811660248301526044820185905291516000938493169163da3d454c91606480830192602092919082900301818787803b1580156155dd57600080fd5b505af11580156155f1573d6000803e3d6000fd5b505050506040513d602081101561560757600080fd5b5051905080156156265761561e600360108361426a565b91505061132c565b61562e612aa1565b600b54146156425761561e600a600c61250a565b600061564c6136c1565b90508381101561566b57615662600e600b61250a565b9250505061132c565b615673615bfe565b61567c8661383a565b602083018190528282600381111561569057fe5b600381111561569b57fe5b90525060009050815160038111156156af57fe5b146156d4576156ca600980836000015160038111156126a057fe5b935050505061132c565b6156e2816020015186614602565b60408301819052828260038111156156f657fe5b600381111561570157fe5b905250600090508151600381111561571557fe5b14615731576156ca6009600e836000015160038111156126a057fe5b6005546040808301518151631de6c8a560e21b8152306004820152602481019190915290516001600160a01b039092169163779b2294916044808201926020929091908290030181600087803b15801561578a57600080fd5b505af115801561579e573d6000803e3d6000fd5b505050506040513d60208110156157b457600080fd5b5051925082156157cb576156ca600360108561426a565b6157d7600d5486614602565b60608301819052828260038111156157eb57fe5b60038111156157f657fe5b905250600090508151600381111561580a57fe5b14615826576156ca6009600d836000015160038111156126a057fe5b6040808201516001600160a01b0388166000908152601460205291909120908155600c546001909101556060810151600d556158628686614a27565b60408082015160608084015183516001600160a01b038b168152602081018a9052808501939093529082015290517f13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab809181900360800190a160009695505050505050565b60006158d0615b1a565b6000806158e5670de0b6b3a764000087614f2d565b909250905060008260038111156158f857fe5b14615917575060408051602081019091526000815290925090506128eb565b6136b481866000015161443c565b600081848411156159775760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156111f75781810151838201526020016111df565b505050900390565b6000611e0083836040518060400160405280601781526020017f6d756c7469706c69636174696f6e206f766572666c6f7700000000000000000081525060008315806159c9575082155b156159d657506000611e00565b838302838582816159e357fe5b04148390614fec5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156111f75781810151838201526020016111df565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10615a7357805160ff1916838001178555615aa0565b82800160010185558215615aa0579182015b82811115615aa0578251825591602001919060010190615a85565b50611ccb929150615c27565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10615aed5782800160ff19823516178555615aa0565b82800160010185558215615aa0579182015b82811115615aa0578235825591602001919060010190615aff565b6040518060200160405280600081525090565b6040805160e0810190915280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b604080516101208101909152806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040805161010081019091528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b604080516080810190915280600081526020016000815260200160008152602001600081525090565b61170691905b80821115611ccb5760008155600101615c2d56fe6d61726b6574206d6179206f6e6c7920626520696e697469616c697a6564206f6e6365696e697469616c2065786368616e67652072617465206d7573742062652067726561746572207468616e207a65726f2e73657474696e6720696e7465726573742072617465206d6f64656c206661696c6564626f72726f7742616c616e636553746f7265643a20626f72726f7742616c616e636553746f726564496e7465726e616c206661696c656452455041595f424f52524f575f4e45575f4143434f554e545f424f52524f575f42414c414e43455f43414c43554c4154494f4e5f4641494c45446f6e6c7920467573652061646d696e206d617920696e697469616c697a6520746865206d61726b6574ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef52455041595f424f52524f575f4e45575f544f54414c5f42414c414e43455f43414c43554c4154494f4e5f4641494c45444c49515549444154455f434f4d5054524f4c4c45525f43414c43554c4154455f414d4f554e545f5345495a455f4641494c454465786368616e67655261746553746f7265643a2065786368616e67655261746553746f726564496e7465726e616c206661696c65646f6e65206f662072656465656d546f6b656e73496e206f722072656465656d416d6f756e74496e206d757374206265207a65726fa265627a7a723158207cee580452e8d9a77ab2258bfae89fa594b79422b049e67606a090daf10b651764736f6c63430005110032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5E72 DUP1 PUSH3 0x21 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x852A12E3 GT PUSH2 0x1C6 JUMPI DUP1 PUSH4 0xB2A02FF1 GT PUSH2 0xF7 JUMPI DUP1 PUSH4 0xDD62ED3E GT PUSH2 0x95 JUMPI DUP1 PUSH4 0xF3FDB15A GT PUSH2 0x6F JUMPI DUP1 PUSH4 0xF3FDB15A EQ PUSH2 0xF1E JUMPI DUP1 PUSH4 0xF8F9DA28 EQ PUSH2 0xF33 JUMPI DUP1 PUSH4 0xFCA7820B EQ PUSH2 0xF48 JUMPI DUP1 PUSH4 0xFE9C44AE EQ PUSH2 0xD31 JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0xE8A JUMPI DUP1 PUSH4 0xE5974619 EQ PUSH2 0xEC5 JUMPI DUP1 PUSH4 0xF2B3ABBD EQ PUSH2 0xEEB JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0xC5EBEAEC GT PUSH2 0xD1 JUMPI DUP1 PUSH4 0xC5EBEAEC EQ PUSH2 0xE0C JUMPI DUP1 PUSH4 0xDB006A75 EQ PUSH2 0xE36 JUMPI DUP1 PUSH4 0xDBFE7C19 EQ PUSH2 0xE60 JUMPI DUP1 PUSH4 0xDC028AB1 EQ PUSH2 0xE75 JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0xB2A02FF1 EQ PUSH2 0xD5B JUMPI DUP1 PUSH4 0xBD6D894D EQ PUSH2 0xD9E JUMPI DUP1 PUSH4 0xC37F68E2 EQ PUSH2 0xDB3 JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0xA6AFED95 GT PUSH2 0x164 JUMPI DUP1 PUSH4 0xAA5AF0FD GT PUSH2 0x13E JUMPI DUP1 PUSH4 0xAA5AF0FD EQ PUSH2 0xCEE JUMPI DUP1 PUSH4 0xAAE40A2A EQ PUSH2 0xD03 JUMPI DUP1 PUSH4 0xAC784DDC EQ PUSH2 0xD31 JUMPI DUP1 PUSH4 0xAE9D70B0 EQ PUSH2 0xD46 JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0xA6AFED95 EQ PUSH2 0xC76 JUMPI DUP1 PUSH4 0xA7B820DF EQ PUSH2 0xC8B JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0xCB5 JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0x91DD36C6 GT PUSH2 0x1A0 JUMPI DUP1 PUSH4 0x91DD36C6 EQ PUSH2 0xBDA JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0xC04 JUMPI DUP1 PUSH4 0x95DD9193 EQ PUSH2 0xC19 JUMPI DUP1 PUSH4 0xA03DCE8D EQ PUSH2 0xC4C JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0x852A12E3 EQ PUSH2 0xB86 JUMPI DUP1 PUSH4 0x8D02D9A1 EQ PUSH2 0xBB0 JUMPI DUP1 PUSH4 0x8F840DDD EQ PUSH2 0xBC5 JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0x47BD3718 GT PUSH2 0x2A0 JUMPI DUP1 PUSH4 0x61FEACFF GT PUSH2 0x23E JUMPI DUP1 PUSH4 0x6F307DC3 GT PUSH2 0x218 JUMPI DUP1 PUSH4 0x6F307DC3 EQ PUSH2 0x9D5 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x9EA JUMPI DUP1 PUSH4 0x73ACEE98 EQ PUSH2 0xA1D JUMPI DUP1 PUSH4 0x79C2C954 EQ PUSH2 0xA32 JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0x61FEACFF EQ PUSH2 0x996 JUMPI DUP1 PUSH4 0x6752E702 EQ PUSH2 0x9AB JUMPI DUP1 PUSH4 0x6C540BAF EQ PUSH2 0x9C0 JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0x56E67728 GT PUSH2 0x27A JUMPI DUP1 PUSH4 0x56E67728 EQ PUSH2 0x8AB JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x926 JUMPI DUP1 PUSH4 0x5FE3B567 EQ PUSH2 0x957 JUMPI DUP1 PUSH4 0x601A0BF1 EQ PUSH2 0x96C JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0x47BD3718 EQ PUSH2 0x7FC JUMPI DUP1 PUSH4 0x4E4D9FEA EQ PUSH2 0x811 JUMPI DUP1 PUSH4 0x50D85B73 EQ PUSH2 0x819 JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0x182DF0F5 GT PUSH2 0x30D JUMPI DUP1 PUSH4 0x313CE567 GT PUSH2 0x2E7 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x6BE JUMPI DUP1 PUSH4 0x34154D4C EQ PUSH2 0x6E9 JUMPI DUP1 PUSH4 0x3AF9E669 EQ PUSH2 0x7B4 JUMPI DUP1 PUSH4 0x3B1D21A2 EQ PUSH2 0x7E7 JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0x182DF0F5 EQ PUSH2 0x65E JUMPI DUP1 PUSH4 0x1DB78944 EQ PUSH2 0x673 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x67B JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0x1249C58B GT PUSH2 0x349 JUMPI DUP1 PUSH4 0x1249C58B EQ PUSH2 0x5E7 JUMPI DUP1 PUSH4 0x173B9904 EQ PUSH2 0x5EF JUMPI DUP1 PUSH4 0x17BFDFBC EQ PUSH2 0x616 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x649 JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x3A9 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x433 JUMPI DUP1 PUSH4 0xF8855E8 EQ PUSH2 0x480 JUMPI JUMPDEST PUSH1 0x0 PUSH2 0x376 CALLVALUE PUSH2 0xF72 JUMP JUMPDEST POP SWAP1 POP PUSH2 0x3A6 DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xB DUP2 MSTORE PUSH1 0x20 ADD PUSH11 0x1B5A5B9D0819985A5B1959 PUSH1 0xAA SHL DUP2 MSTORE POP PUSH2 0xFD4 JUMP JUMPDEST POP STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3BE PUSH2 0x123A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3F8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3E0 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x425 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x43F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x46C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x456 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x12C5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x48C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5E5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x4A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x4DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x4F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x511 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x563 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x575 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x596 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP POP PUSH1 0xFF DUP4 CALLDATALOAD AND SWAP4 POP POP POP PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x1332 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x5E5 PUSH2 0x15E0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x604 PUSH2 0x161E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x622 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x604 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x639 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1624 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x655 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x604 PUSH2 0x16A0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x66A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x604 PUSH2 0x16A6 JUMP JUMPDEST PUSH2 0x5E5 PUSH2 0x1709 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x687 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x46C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x69E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x191A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6D3 PUSH2 0x1948 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5E5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x70C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x726 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x738 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x759 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x776 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x788 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x7A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1951 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x604 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x19B6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x604 PUSH2 0x1A6E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x808 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x604 PUSH2 0x1A7D JUMP JUMPDEST PUSH2 0x5E5 PUSH2 0x1A83 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x825 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5E5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x83C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x86D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x87F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x8A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1AC5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5E5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x8E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x8FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x91B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1B4E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x932 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x93B PUSH2 0x1BAC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x963 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x93B PUSH2 0x1BBB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x978 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x604 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x98F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1BCA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x604 PUSH2 0x1C1B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x604 PUSH2 0x1C21 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x604 PUSH2 0x1C2C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x93B PUSH2 0x1C32 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x604 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA0D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1C41 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA29 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x604 PUSH2 0x1C5C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA3E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5E5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0xA55 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xA88 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xA9A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0xABB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xB0D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xB1F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0xB40 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP POP DUP3 CALLDATALOAD SWAP4 POP POP POP PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1CCF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB92 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x604 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xBA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1CF4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBBC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x604 PUSH2 0x1CFF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBD1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x604 PUSH2 0x1D05 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBE6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x604 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xBFD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1D0B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3BE PUSH2 0x1D48 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC25 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x604 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1DA3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x604 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC6F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1E07 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x604 PUSH2 0x1E44 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC97 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x604 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xCAE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x2009 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCC1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x46C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xCD8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x2046 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCFA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x604 PUSH2 0x2073 JUMP JUMPDEST PUSH2 0x5E5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xD19 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x2079 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD3D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x46C PUSH2 0x20C1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD52 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x604 PUSH2 0x20C6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x604 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xD7E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x217E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xDAA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x604 PUSH2 0x21A2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xDBF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xDE6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xDD6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2216 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP5 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP4 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE18 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x604 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE2F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x22AB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE42 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x604 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE59 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x22B6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE6C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x604 PUSH2 0x22C1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x604 PUSH2 0x22C7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x604 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xEAD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x22CD JUMP JUMPDEST PUSH2 0x5E5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xEDB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x22F8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEF7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x604 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF0E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2346 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF2A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x93B PUSH2 0x2380 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF3F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x604 PUSH2 0x238F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF54 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x604 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF6B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x2404 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xF80 DUP2 PUSH2 0x2441 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF8A PUSH2 0x1E44 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0xFB5 JUMPI PUSH2 0xFA8 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0xFA1 JUMPI INVALID JUMPDEST PUSH1 0x20 PUSH2 0x250A JUMP JUMPDEST SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0xFC5 SWAP1 POP JUMP JUMPDEST PUSH2 0xFBF CALLER DUP7 PUSH2 0x2570 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP JUMPDEST PUSH2 0xFCE DUP2 PUSH2 0x28F2 JUMP JUMPDEST POP SWAP2 POP SWAP2 JUMP JUMPDEST DUP2 PUSH2 0xFDE JUMPI PUSH2 0x1236 JUMP JUMPDEST PUSH1 0x60 DUP2 MLOAD PUSH1 0x7 ADD PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x100F JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x1060 JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x102A JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD MLOAD PUSH1 0xF8 SHR PUSH1 0xF8 SHL DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1041 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x1 ADD PUSH2 0x1015 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0xFD SHL SWAP1 DUP4 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0x1074 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x28 PUSH1 0xF8 SHL DUP3 DUP3 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x109F JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH2 0x3E8 DUP5 DIV PUSH1 0x30 ADD PUSH1 0xF8 SHL DUP3 DUP3 PUSH1 0x2 ADD DUP2 MLOAD DUP2 LT PUSH2 0x10D0 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0xA PUSH1 0x64 DUP6 DIV MOD PUSH1 0x30 ADD PUSH1 0xF8 SHL DUP3 DUP3 PUSH1 0x3 ADD DUP2 MLOAD DUP2 LT PUSH2 0x1103 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0xA DUP1 DUP6 DIV MOD PUSH1 0x30 ADD PUSH1 0xF8 SHL DUP3 DUP3 PUSH1 0x4 ADD DUP2 MLOAD DUP2 LT PUSH2 0x1135 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0xA DUP5 MOD PUSH1 0x30 ADD PUSH1 0xF8 SHL DUP3 DUP3 PUSH1 0x5 ADD DUP2 MLOAD DUP2 LT PUSH2 0x1165 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x29 PUSH1 0xF8 SHL DUP3 DUP3 PUSH1 0x6 ADD DUP2 MLOAD DUP2 LT PUSH2 0x1190 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP DUP2 DUP5 ISZERO PUSH2 0x1232 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x11F7 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x11DF JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1224 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP4 AND DUP5 SWAP1 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x12BD JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1292 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x12BD JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x12A0 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP7 SWAP1 SSTORE DUP2 MLOAD DUP7 DUP2 MSTORE SWAP2 MLOAD SWAP4 SWAP5 SWAP4 SWAP1 SWAP3 DUP5 SWAP3 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST CALLER PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 EQ PUSH2 0x1384 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5D28 PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xB SLOAD ISZERO DUP1 ISZERO PUSH2 0x1394 JUMPI POP PUSH1 0xC SLOAD ISZERO JUMPDEST PUSH2 0x13CF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5C42 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x7 DUP7 SWAP1 SSTORE DUP6 PUSH2 0x1410 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x30 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5C65 PUSH1 0x30 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x141B DUP10 PUSH2 0x296E JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1470 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x73657474696E6720636F6D7074726F6C6C6572206661696C6564000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1478 PUSH2 0x2AA1 JUMP JUMPDEST PUSH1 0xB SSTORE PUSH8 0xDE0B6B3A7640000 PUSH1 0xC SSTORE PUSH2 0x1490 DUP9 PUSH2 0x2AA5 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x14CF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5C95 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP6 MLOAD PUSH2 0x14E2 SWAP1 PUSH1 0x2 SWAP1 PUSH1 0x20 DUP10 ADD SWAP1 PUSH2 0x5A32 JUMP JUMPDEST POP DUP5 MLOAD PUSH2 0x14F6 SWAP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP9 ADD SWAP1 PUSH2 0x5A32 JUMP JUMPDEST POP PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF DUP7 AND OR SWAP1 SSTORE PUSH2 0x150F DUP4 PUSH2 0x2DAB JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1564 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x73657474696E67207265736572766520666163746F72206661696C6564000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x156D DUP3 PUSH2 0x2E64 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x15C2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x73657474696E672061646D696E20666565206661696C65640000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF PUSH1 0xB0 SHL NOT AND PUSH1 0x1 PUSH1 0xB0 SHL OR SWAP1 SSTORE POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x15EB CALLVALUE PUSH2 0xF72 JUMP JUMPDEST POP SWAP1 POP PUSH2 0x161B DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xB DUP2 MSTORE PUSH1 0x20 ADD PUSH11 0x1B5A5B9D0819985A5B1959 PUSH1 0xAA SHL DUP2 MSTORE POP PUSH2 0xFD4 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0xA SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1630 DUP2 PUSH2 0x2441 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x163A PUSH2 0x1E44 JUMP JUMPDEST EQ PUSH2 0x1685 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x1858D8DC9D59481A5B9D195C995CDD0819985A5B1959 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x168E DUP4 PUSH2 0x1DA3 JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH2 0x169A DUP2 PUSH2 0x28F2 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x11 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x16B3 PUSH2 0x2F89 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x16C6 JUMPI INVALID JUMPDEST EQ PUSH2 0x1702 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x35 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5DD5 PUSH1 0x35 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP2 POP POP JUMPDEST SWAP1 JUMP JUMPDEST CALLER ADDRESS EQ DUP1 ISZERO SWAP1 PUSH2 0x178F JUMPI POP PUSH1 0x5 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 PUSH4 0xDD5CD22C 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 0x1762 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1776 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x178C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST ISZERO PUSH2 0x1918 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x8ABE0B75 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE MLOAD DUP3 SWAP2 PUSH1 0x60 SWAP2 PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 SWAP2 PUSH4 0x8ABE0B75 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 DUP8 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x17F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x180A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1833 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP1 DUP6 ADD DUP1 MLOAD SWAP2 MLOAD SWAP4 SWAP6 SWAP3 SWAP5 DUP4 ADD SWAP3 SWAP2 DUP5 PUSH1 0x1 PUSH1 0x20 SHL DUP3 GT ISZERO PUSH2 0x185D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x1872 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH2 0x188B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x18B8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x18A0 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x18E5 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE POP POP PUSH1 0x0 SLOAD SWAP4 SWAP7 POP SWAP2 SWAP5 POP SWAP3 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP2 AND EQ PUSH2 0x1914 JUMPI PUSH2 0x1914 DUP4 DUP4 DUP4 PUSH2 0x3049 JUMP JUMPDEST POP POP POP JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1926 DUP2 PUSH2 0x2441 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1934 CALLER DUP8 DUP8 DUP8 PUSH2 0x3265 JUMP JUMPDEST EQ SWAP2 POP PUSH2 0x1940 DUP2 PUSH2 0x28F2 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x1959 PUSH2 0x34F3 JUMP JUMPDEST PUSH2 0x199D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x31B0B63632B9103737BA1030B236B4B7 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x19A9 PUSH1 0x2 DUP6 DUP6 PUSH2 0x5AAC JUMP JUMPDEST POP PUSH2 0x1232 PUSH1 0x3 DUP4 DUP4 PUSH2 0x5AAC JUMP JUMPDEST PUSH1 0x0 PUSH2 0x19C0 PUSH2 0x5B1A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x19D3 PUSH2 0x21A2 JUMP JUMPDEST SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP SWAP1 DUP2 SWAP1 PUSH2 0x19FF SWAP1 DUP5 SWAP1 PUSH2 0x366E JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1A12 JUMPI INVALID JUMPDEST EQ PUSH2 0x1A64 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x62616C616E636520636F756C64206E6F742062652063616C63756C6174656400 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1A78 PUSH2 0x36C1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0xD SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1A8E CALLVALUE PUSH2 0x36ED JUMP JUMPDEST POP SWAP1 POP PUSH2 0x161B DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x12 DUP2 MSTORE PUSH1 0x20 ADD PUSH18 0x1C995C185E509BDC9C9BDDC819985A5B1959 PUSH1 0x72 SHL DUP2 MSTORE POP PUSH2 0xFD4 JUMP JUMPDEST PUSH2 0x1ACD PUSH2 0x34F3 JUMP JUMPDEST PUSH2 0x1B07 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x10B0B236B4B7 PUSH1 0xD1 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1B48 DUP5 DUP5 DUP5 DUP5 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x3049 SWAP3 POP POP POP JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST CALLER ADDRESS EQ DUP1 PUSH2 0x1B5F JUMPI POP PUSH2 0x1B5F PUSH2 0x34F3 JUMP JUMPDEST PUSH2 0x1B98 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x5 PUSH1 0x24 DUP3 ADD MSTORE PUSH5 0x10B9B2B633 PUSH1 0xD9 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xB0 SHL SUB NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 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 0x0 DUP1 PUSH2 0x1BD6 DUP2 PUSH2 0x2441 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1BE0 PUSH2 0x1E44 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1C06 JUMPI PUSH2 0x1BFE DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x1BF7 JUMPI INVALID JUMPDEST PUSH1 0x3B PUSH2 0x250A JUMP JUMPDEST SWAP3 POP POP PUSH2 0x1691 JUMP JUMPDEST PUSH2 0x1C0F DUP5 PUSH2 0x372E JUMP JUMPDEST SWAP3 POP POP PUSH2 0x169A DUP2 PUSH2 0x28F2 JUMP JUMPDEST PUSH1 0xF SLOAD DUP2 JUMP JUMPDEST PUSH7 0x6379DA05B60000 DUP2 JUMP JUMPDEST PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH1 0x15 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1C68 DUP2 PUSH2 0x2441 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C72 PUSH2 0x1E44 JUMP JUMPDEST EQ PUSH2 0x1CBD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x1858D8DC9D59481A5B9D195C995CDD0819985A5B1959 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0xD SLOAD SWAP2 POP PUSH2 0x1CCB DUP2 PUSH2 0x28F2 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH8 0x2C68AF0BB140000 PUSH1 0x12 PUSH2 0x1CEA DUP9 DUP9 DUP5 DUP10 DUP10 DUP7 DUP11 DUP11 PUSH2 0x1332 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x132C DUP3 PUSH2 0x37FA JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xE SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1D17 DUP2 PUSH2 0x2441 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D21 PUSH2 0x1E44 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1D3F JUMPI PUSH2 0x1BFE DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x1D38 JUMPI INVALID JUMPDEST PUSH1 0x52 PUSH2 0x250A JUMP JUMPDEST PUSH2 0x1C0F DUP5 PUSH2 0x2E64 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x12BD JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1292 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x12BD JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1DB1 DUP5 PUSH2 0x383A JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1DC4 JUMPI INVALID JUMPDEST EQ PUSH2 0x1E00 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x37 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5CB7 PUSH1 0x37 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1E13 DUP2 PUSH2 0x2441 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E1D PUSH2 0x1E44 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1E3B JUMPI PUSH2 0x1BFE DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x1E34 JUMPI INVALID JUMPDEST PUSH1 0x33 PUSH2 0x250A JUMP JUMPDEST PUSH2 0x1C0F DUP5 PUSH2 0x38EE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1E4F PUSH2 0x2AA1 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0xB SLOAD EQ ISZERO PUSH2 0x1E65 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x1706 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E6F PUSH2 0x36C1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x6 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 PUSH4 0x15F24053 DUP4 PUSH1 0xD SLOAD PUSH2 0x1EB4 PUSH1 0xE SLOAD PUSH2 0x1EAF PUSH1 0xF SLOAD PUSH1 0x10 SLOAD PUSH2 0x396F JUMP JUMPDEST PUSH2 0x396F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1EF6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1F0A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1F20 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH6 0x48C27395000 DUP2 GT ISZERO PUSH2 0x1F7F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x626F72726F772072617465206973206162737572646C79206869676800000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1F8E DUP6 PUSH1 0xB SLOAD PUSH2 0x39A5 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1FA1 JUMPI INVALID JUMPDEST EQ PUSH2 0x1FF3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x636F756C64206E6F742063616C63756C61746520626C6F636B2064656C746100 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1FFF DUP6 DUP6 DUP6 DUP5 PUSH2 0x39C8 JUMP JUMPDEST SWAP6 POP POP POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2015 DUP2 PUSH2 0x2441 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x201F PUSH2 0x1E44 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x203D JUMPI PUSH2 0x1BFE DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x2036 JUMPI INVALID JUMPDEST PUSH1 0x37 PUSH2 0x250A JUMP JUMPDEST PUSH2 0x1C0F DUP5 PUSH2 0x3BE0 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2052 DUP2 PUSH2 0x2441 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2060 CALLER CALLER DUP8 DUP8 PUSH2 0x3265 JUMP JUMPDEST EQ SWAP2 POP PUSH2 0x206C DUP2 PUSH2 0x28F2 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xC SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2086 DUP4 CALLVALUE DUP5 PUSH2 0x3CC8 JUMP JUMPDEST POP SWAP1 POP PUSH2 0x1914 DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x16 DUP2 MSTORE PUSH1 0x20 ADD PUSH22 0x1B1A5C5D5A59185D19509BDC9C9BDDC819985A5B1959 PUSH1 0x52 SHL DUP2 MSTORE POP PUSH2 0xFD4 JUMP JUMPDEST PUSH1 0x1 DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xB8168816 PUSH2 0x20E2 PUSH2 0x36C1 JUMP JUMPDEST PUSH1 0xD SLOAD PUSH2 0x20F9 PUSH1 0xE SLOAD PUSH2 0x1EAF PUSH1 0xF SLOAD PUSH1 0x10 SLOAD PUSH2 0x396F JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x9 SLOAD PUSH1 0xA SLOAD ADD ADD PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x214D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2161 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2177 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH2 0x218B DUP2 PUSH2 0x2441 JUMP JUMPDEST PUSH2 0x2197 CALLER DUP7 DUP7 DUP7 PUSH2 0x3DB4 JUMP JUMPDEST SWAP2 POP PUSH2 0x1940 DUP2 PUSH2 0x28F2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x21AE DUP2 PUSH2 0x2441 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x21B8 PUSH2 0x1E44 JUMP JUMPDEST EQ PUSH2 0x2203 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x1858D8DC9D59481A5B9D195C995CDD0819985A5B1959 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x220B PUSH2 0x16A6 JUMP JUMPDEST SWAP2 POP PUSH2 0x1CCB DUP2 PUSH2 0x28F2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP2 SWAP1 DUP2 SWAP1 DUP2 SWAP1 DUP2 DUP1 DUP1 PUSH2 0x2241 DUP10 PUSH2 0x383A JUMP JUMPDEST SWAP4 POP SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2253 JUMPI INVALID JUMPDEST EQ PUSH2 0x2271 JUMPI PUSH1 0x9 JUMPDEST SWAP8 POP PUSH1 0x0 SWAP7 POP DUP7 SWAP6 POP DUP6 SWAP5 POP PUSH2 0x22A4 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x2279 PUSH2 0x2F89 JUMP JUMPDEST SWAP3 POP SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x228B JUMPI INVALID JUMPDEST EQ PUSH2 0x2297 JUMPI PUSH1 0x9 PUSH2 0x225B JUMP JUMPDEST POP PUSH1 0x0 SWAP7 POP SWAP2 SWAP5 POP SWAP3 POP SWAP1 POP JUMPDEST SWAP2 SWAP4 POP SWAP2 SWAP4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x132C DUP3 PUSH2 0x418E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x132C DUP3 PUSH2 0x41CC JUMP JUMPDEST PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x10 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2304 DUP3 CALLVALUE PUSH2 0x4205 JUMP JUMPDEST POP SWAP1 POP PUSH2 0x1236 DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x18 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x7265706179426F72726F77426568616C66206661696C65640000000000000000 DUP2 MSTORE POP PUSH2 0xFD4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2351 PUSH2 0x1E44 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x2377 JUMPI PUSH2 0x236F DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x2368 JUMPI INVALID JUMPDEST PUSH1 0x4B PUSH2 0x250A JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1A69 JUMP JUMPDEST PUSH2 0x1E00 DUP4 PUSH2 0x2AA5 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x15F24053 PUSH2 0x23AB PUSH2 0x36C1 JUMP JUMPDEST PUSH1 0xD SLOAD PUSH2 0x23C2 PUSH1 0xE SLOAD PUSH2 0x1EAF PUSH1 0xF SLOAD PUSH1 0x10 SLOAD PUSH2 0x396F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x214D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2410 DUP2 PUSH2 0x2441 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x241A PUSH2 0x1E44 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x2438 JUMPI PUSH2 0x1BFE DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x2431 JUMPI INVALID JUMPDEST PUSH1 0x59 PUSH2 0x250A JUMP JUMPDEST PUSH2 0x1C0F DUP5 PUSH2 0x2DAB JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0xB0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x248C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xA PUSH1 0x24 DUP3 ADD MSTORE PUSH10 0x1C994B595B9D195C9959 PUSH1 0xB2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x24FA JUMPI PUSH1 0x5 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 PUSH4 0xC90C20B1 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x24E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x24F5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF PUSH1 0xB0 SHL NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH32 0x45B96FE442630264581B197E84BBADA861235052C5A1AADFFF9EA4E40A969AA0 DUP4 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x2539 JUMPI INVALID JUMPDEST DUP4 PUSH1 0x63 DUP2 GT ISZERO PUSH2 0x2545 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 DUP3 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x1E00 JUMPI INVALID JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x4EF4C3E1 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 DUP5 SWAP4 SWAP2 AND SWAP2 PUSH4 0x4EF4C3E1 SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x25D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x25E5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x25FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x261F JUMPI PUSH2 0x2612 PUSH1 0x3 PUSH1 0x21 DUP4 PUSH2 0x426A JUMP JUMPDEST SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH2 0x28EB SWAP1 POP JUMP JUMPDEST PUSH2 0x2627 PUSH2 0x2AA1 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x263B JUMPI PUSH2 0x2612 PUSH1 0xA PUSH1 0x24 PUSH2 0x250A JUMP JUMPDEST PUSH2 0x2643 PUSH2 0x5B2D JUMP JUMPDEST PUSH2 0x264B PUSH2 0x2F89 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2662 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x266D JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2684 JUMPI INVALID JUMPDEST EQ PUSH2 0x26B3 JUMPI PUSH2 0x26A5 PUSH1 0x9 PUSH1 0x23 DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x26A0 JUMPI INVALID JUMPDEST PUSH2 0x426A JUMP JUMPDEST SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x28EB SWAP2 POP POP JUMP JUMPDEST PUSH2 0x26BD DUP7 DUP7 PUSH2 0x42F3 JUMP JUMPDEST PUSH1 0xC0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD DUP3 MSTORE SWAP1 DUP4 ADD MLOAD DUP2 MSTORE PUSH2 0x26DE SWAP2 SWAP1 PUSH2 0x4389 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x26F5 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2700 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2717 JUMPI INVALID JUMPDEST EQ PUSH2 0x2769 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D494E545F45584348414E47455F43414C43554C4154494F4E5F4641494C4544 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x2779 PUSH1 0x11 SLOAD DUP3 PUSH1 0x60 ADD MLOAD PUSH2 0x396F JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x27A6 SWAP2 SWAP1 PUSH2 0x396F JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MLOAD PUSH1 0x11 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0xC0 DUP5 ADD MLOAD PUSH1 0x60 DUP1 DUP7 ADD MLOAD DUP4 MLOAD SWAP5 DUP6 MSTORE SWAP5 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE MLOAD PUSH32 0x4C209B5FC8AD50758F13E2E1088BA56A560DFF690A1C6FEF26394F4C03821C4F SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 ADDRESS SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5D51 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 PUSH1 0x5 SLOAD PUSH1 0xC0 DUP3 ADD MLOAD PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x41C728B9 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x64 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x41C728B9 SWAP2 PUSH1 0x84 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x28BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x28D2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x0 SWAP3 POP PUSH2 0x28DF SWAP2 POP POP JUMP JUMPDEST DUP2 PUSH1 0xC0 ADD MLOAD SWAP4 POP SWAP4 POP POP POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF PUSH1 0xB0 SHL NOT AND PUSH1 0x1 PUSH1 0xB0 SHL OR SWAP1 SSTORE DUP1 PUSH2 0x161B JUMPI PUSH1 0x5 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 PUSH4 0x632E5142 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x295A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1232 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH3 0x7E3DD2 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 0x29C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x29D5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x29EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x2A3E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6D61726B6572206D6574686F642072657475726E65642066616C736500000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP3 DUP5 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD PUSH32 0x7AC369DBD14FA5EA3F473ED67CC9D598964A77501540BA6751EB0B3DECF5870D SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x0 PUSH2 0x1E00 JUMP JUMPDEST NUMBER SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2AB0 PUSH2 0x34F3 JUMP JUMPDEST PUSH2 0x2AC0 JUMPI PUSH2 0x236F PUSH1 0x1 PUSH1 0x4D PUSH2 0x250A JUMP JUMPDEST PUSH2 0x2AC8 PUSH2 0x2AA1 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x2ADC JUMPI PUSH2 0x236F PUSH1 0xA PUSH1 0x4C PUSH2 0x250A JUMP JUMPDEST PUSH1 0x6 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x2191F92A 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 0x2B2D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2B41 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2B57 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x2BAA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6D61726B6572206D6574686F642072657475726E65642066616C736500000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP3 DUP5 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD PUSH32 0xEDFFC32E068C7C95DFD4BDFD5C4D939A084D6B11C4199EAC8436ED234D72F926 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0x2CDC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x6CC1140B PUSH1 0xE1 SHL OR DUP2 MSTORE SWAP2 MLOAD DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP4 DUP3 SWAP2 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x2C71 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x2C52 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2CD3 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 0x2CD8 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP POP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x742A137B PUSH1 0xE1 SHL OR DUP2 MSTORE SWAP2 MLOAD DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP4 DUP3 SWAP2 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x2D38 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x2D19 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2D9A 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 0x2D9F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP PUSH1 0x0 SWAP2 POP PUSH2 0x1E00 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2DB5 PUSH2 0x34F3 JUMP JUMPDEST PUSH2 0x2DCC JUMPI PUSH2 0x2DC5 PUSH1 0x1 PUSH1 0x5A PUSH2 0x250A JUMP JUMPDEST SWAP1 POP PUSH2 0x1A69 JUMP JUMPDEST PUSH2 0x2DD4 PUSH2 0x2AA1 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x2DE8 JUMPI PUSH2 0x2DC5 PUSH1 0xA PUSH1 0x5B PUSH2 0x250A JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH2 0x2E08 PUSH2 0x2E00 DUP5 PUSH1 0x8 SLOAD PUSH2 0x396F JUMP JUMPDEST PUSH1 0x9 SLOAD PUSH2 0x396F JUMP JUMPDEST GT ISZERO PUSH2 0x2E1A JUMPI PUSH2 0x2DC5 PUSH1 0x2 PUSH1 0x5C PUSH2 0x250A JUMP JUMPDEST PUSH1 0xA DUP1 SLOAD SWAP1 DUP4 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP6 SWAP1 MSTORE DUP2 MLOAD PUSH32 0xAAA68312E2EA9D50E16AF5068410AB56E1A1FD06037B1A35664812C30F821460 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x0 PUSH2 0x1E00 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2E6E PUSH2 0x2AA1 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x2E82 JUMPI PUSH2 0x2DC5 PUSH1 0xA PUSH1 0x54 PUSH2 0x250A JUMP JUMPDEST PUSH1 0x0 NOT DUP3 EQ ISZERO PUSH2 0x2E92 JUMPI PUSH1 0x8 SLOAD SWAP2 POP JUMPDEST PUSH1 0x0 PUSH2 0x2E9C PUSH2 0x43A0 JUMP JUMPDEST SWAP1 POP PUSH8 0xDE0B6B3A7640000 PUSH2 0x2EBC PUSH2 0x2EB6 PUSH1 0xA SLOAD DUP7 PUSH2 0x396F JUMP JUMPDEST DUP4 PUSH2 0x396F JUMP JUMPDEST GT ISZERO PUSH2 0x2ECE JUMPI PUSH2 0x236F PUSH1 0x2 PUSH1 0x55 PUSH2 0x250A JUMP JUMPDEST DUP3 PUSH1 0x8 SLOAD EQ PUSH2 0x2F34 JUMPI PUSH2 0x2EDF PUSH2 0x34F3 JUMP JUMPDEST PUSH2 0x2EEF JUMPI PUSH2 0x236F PUSH1 0x1 PUSH1 0x53 PUSH2 0x250A JUMP JUMPDEST PUSH1 0x8 DUP1 SLOAD SWAP1 DUP5 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP7 SWAP1 MSTORE DUP2 MLOAD PUSH32 0xCDD0B588250E1398549F79CFDB8217C186688822905D6715B0834EA1C865594A SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMPDEST DUP1 PUSH1 0x9 SLOAD EQ PUSH2 0x2F82 JUMPI PUSH1 0x9 DUP1 SLOAD SWAP1 DUP3 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP2 MLOAD PUSH32 0x92EEF861B6533B7D3417F39C2AD7B460EED4E88A32FA3604F30E718B7602E7DC SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMPDEST PUSH1 0x0 PUSH2 0x1E00 JUMP JUMPDEST PUSH1 0x11 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP1 PUSH2 0x2FA4 JUMPI POP POP PUSH1 0x7 SLOAD PUSH1 0x0 SWAP2 POP PUSH2 0x3045 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2FAE PUSH2 0x36C1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2FBA PUSH2 0x5B1A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2FDC DUP5 PUSH1 0xD SLOAD PUSH2 0x2FD7 PUSH1 0xE SLOAD PUSH2 0x1EAF PUSH1 0xF SLOAD PUSH1 0x10 SLOAD PUSH2 0x396F JUMP JUMPDEST PUSH2 0x43EF JUMP JUMPDEST SWAP4 POP SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2FEE JUMPI INVALID JUMPDEST EQ PUSH2 0x3003 JUMPI SWAP6 POP PUSH1 0x0 SWAP5 POP PUSH2 0x3045 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x300D DUP4 DUP7 PUSH2 0x443C JUMP JUMPDEST SWAP3 POP SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x301F JUMPI INVALID JUMPDEST EQ PUSH2 0x3034 JUMPI SWAP6 POP PUSH1 0x0 SWAP5 POP PUSH2 0x3045 SWAP4 POP POP POP POP JUMP JUMPDEST POP MLOAD PUSH1 0x0 SWAP6 POP SWAP4 POP PUSH2 0x3045 SWAP3 POP POP POP JUMP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x3047351 PUSH1 0xE6 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP2 DUP6 AND PUSH1 0x24 DUP4 ADD MSTORE DUP4 ISZERO ISZERO PUSH1 0x44 DUP4 ADD MSTORE MLOAD PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 SWAP2 PUSH4 0xC11CD440 SWAP2 PUSH1 0x64 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x30B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x30CA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x30E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x311B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x5 PUSH1 0x24 DUP3 ADD MSTORE PUSH5 0x85A5B5C1B PUSH1 0xDA SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 ISZERO PUSH2 0x3129 JUMPI PUSH2 0x3129 PUSH2 0x44EC JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND OR DUP4 SSTORE PUSH1 0x40 MLOAD PUSH1 0x20 PUSH1 0x24 DUP3 ADD DUP2 DUP2 MSTORE DUP7 MLOAD PUSH1 0x44 DUP5 ADD MSTORE DUP7 MLOAD SWAP4 SWAP1 SWAP5 AND SWAP5 PUSH2 0x3216 SWAP5 ADDRESS SWAP5 DUP9 SWAP5 SWAP2 SWAP4 DUP5 SWAP4 PUSH1 0x64 SWAP1 SWAP4 ADD SWAP3 SWAP1 DUP7 ADD SWAP2 SWAP1 DUP2 SWAP1 DUP5 SWAP1 DUP5 SWAP1 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3196 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x317E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x31C3 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xADCCEE5 PUSH1 0xE3 SHL OR SWAP1 MSTORE DUP2 MLOAD DUP1 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x7 DUP3 MSTORE PUSH7 0x216265636F6D65 PUSH1 0xC8 SHL SWAP1 DUP3 ADD MSTORE SWAP1 SWAP4 POP SWAP2 POP PUSH2 0x44F1 SWAP1 POP JUMP JUMPDEST POP PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND DUP3 MSTORE SWAP1 SWAP3 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD PUSH32 0xD604DE94D45953F9138079EC1B82D533CB2160C906D1076D1F7ED54BEFBCA97A SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x17B9B84B PUSH1 0xE3 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP6 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 AND SWAP2 PUSH4 0xBDCDC258 SWAP2 PUSH1 0x84 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x32CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x32DE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x32F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x3313 JUMPI PUSH2 0x330B PUSH1 0x3 PUSH1 0x5D DUP4 PUSH2 0x426A JUMP JUMPDEST SWAP2 POP POP PUSH2 0x34EB JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x3339 JUMPI PUSH2 0x330B PUSH1 0x2 PUSH1 0x5E PUSH2 0x250A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND SWAP1 DUP8 AND EQ ISZERO PUSH2 0x3358 JUMPI POP PUSH1 0x0 NOT PUSH2 0x3380 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP11 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x3390 DUP6 DUP10 PUSH2 0x39A5 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP PUSH1 0x0 DUP5 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x33A3 JUMPI INVALID JUMPDEST EQ PUSH2 0x33C1 JUMPI PUSH2 0x33B4 PUSH1 0x9 PUSH1 0x5E PUSH2 0x250A JUMP JUMPDEST SWAP7 POP POP POP POP POP POP POP PUSH2 0x34EB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x33E4 SWAP1 DUP10 PUSH2 0x39A5 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP2 POP PUSH1 0x0 DUP5 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x33F7 JUMPI INVALID JUMPDEST EQ PUSH2 0x3408 JUMPI PUSH2 0x33B4 PUSH1 0x9 PUSH1 0x5F PUSH2 0x250A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x342B SWAP1 DUP10 PUSH2 0x4602 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP1 POP PUSH1 0x0 DUP5 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x343E JUMPI INVALID JUMPDEST EQ PUSH2 0x344F JUMPI PUSH2 0x33B4 PUSH1 0x9 PUSH1 0x60 PUSH2 0x250A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP6 SWAP1 SSTORE SWAP2 DUP12 AND DUP2 MSTORE KECCAK256 DUP2 SWAP1 SSTORE PUSH1 0x0 NOT DUP6 EQ PUSH2 0x34A7 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP16 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP4 SWAP1 SSTORE JUMPDEST DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5D51 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP11 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x0 SWAP7 POP POP POP POP POP POP POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x3E14691 PUSH1 0xE6 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 DUP3 SWAP2 PUSH4 0xF851A440 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x353B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x354F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3565 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ DUP1 ISZERO PUSH2 0x35DF JUMPI POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA755EC2 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 0x35B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x35C6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x35DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST DUP1 PUSH2 0x1702 JUMPI POP CALLER PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 EQ DUP1 ISZERO PUSH2 0x1702 JUMPI POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x2F1069BA 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 0x363C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3650 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3666 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x367B PUSH2 0x5B1A JUMP JUMPDEST PUSH2 0x3685 DUP7 DUP7 PUSH2 0x4628 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3698 JUMPI INVALID JUMPDEST EQ PUSH2 0x36A9 JUMPI POP SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH2 0x28EB JUMP JUMPDEST PUSH1 0x0 PUSH2 0x36B4 DUP3 PUSH2 0x4690 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x36D0 SELFBALANCE CALLVALUE PUSH2 0x39A5 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x36E3 JUMPI INVALID JUMPDEST EQ PUSH2 0x1702 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x36FB DUP2 PUSH2 0x2441 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3705 PUSH2 0x1E44 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x3723 JUMPI PUSH2 0xFA8 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x371C JUMPI INVALID JUMPDEST PUSH1 0x41 PUSH2 0x250A JUMP JUMPDEST PUSH2 0xFBF CALLER CALLER DUP8 PUSH2 0x469F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3739 PUSH2 0x34F3 JUMP JUMPDEST PUSH2 0x3749 JUMPI PUSH2 0x236F PUSH1 0x1 PUSH1 0x3C PUSH2 0x250A JUMP JUMPDEST PUSH2 0x3751 PUSH2 0x2AA1 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x3765 JUMPI PUSH2 0x236F PUSH1 0xA PUSH1 0x3E PUSH2 0x250A JUMP JUMPDEST DUP3 PUSH2 0x376E PUSH2 0x36C1 JUMP JUMPDEST LT ISZERO PUSH2 0x3780 JUMPI PUSH2 0x236F PUSH1 0xE PUSH1 0x3D PUSH2 0x250A JUMP JUMPDEST PUSH1 0xE SLOAD DUP4 GT ISZERO PUSH2 0x3796 JUMPI PUSH2 0x236F PUSH1 0x2 PUSH1 0x3F PUSH2 0x250A JUMP JUMPDEST PUSH2 0x37A2 PUSH1 0xE SLOAD DUP5 PUSH2 0x49ED JUMP JUMPDEST PUSH1 0xE DUP2 SWAP1 SSTORE SWAP1 POP PUSH2 0x37B3 CALLER DUP5 PUSH2 0x4A27 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP6 SWAP1 MSTORE DUP1 DUP3 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD PUSH32 0x3BAD0C59CF2F06E7314077049F48A93578CD16F5EF92329F1DAB1420A99C177E SWAP2 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 PUSH1 0x0 PUSH2 0x1E00 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3806 DUP2 PUSH2 0x2441 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3810 PUSH2 0x1E44 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x382E JUMPI PUSH2 0x1BFE DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x3827 JUMPI INVALID JUMPDEST PUSH1 0x2A PUSH2 0x250A JUMP JUMPDEST PUSH2 0x1C0F CALLER PUSH1 0x0 DUP7 PUSH2 0x4A5D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 PUSH2 0x3871 JUMPI POP PUSH1 0x0 SWAP5 POP DUP5 SWAP4 POP PUSH2 0x38E9 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x3881 DUP2 PUSH1 0x0 ADD SLOAD PUSH1 0xC SLOAD PUSH2 0x4F2D JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP PUSH1 0x0 DUP5 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3894 JUMPI INVALID JUMPDEST EQ PUSH2 0x38A9 JUMPI POP SWAP2 SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x38E9 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x38B7 DUP4 DUP3 PUSH1 0x1 ADD SLOAD PUSH2 0x4F6C JUMP JUMPDEST SWAP1 SWAP5 POP SWAP2 POP PUSH1 0x0 DUP5 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x38CA JUMPI INVALID JUMPDEST EQ PUSH2 0x38DF JUMPI POP SWAP2 SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x38E9 SWAP2 POP POP JUMP JUMPDEST POP PUSH1 0x0 SWAP5 POP SWAP3 POP POP POP JUMPDEST SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x38F9 PUSH2 0x2AA1 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x390D JUMPI PUSH2 0x236F PUSH1 0xA PUSH1 0x35 PUSH2 0x250A JUMP JUMPDEST DUP3 PUSH2 0x3916 PUSH2 0x36C1 JUMP JUMPDEST LT ISZERO PUSH2 0x3928 JUMPI PUSH2 0x236F PUSH1 0xE PUSH1 0x34 PUSH2 0x250A JUMP JUMPDEST PUSH1 0x10 SLOAD DUP4 GT ISZERO PUSH2 0x393E JUMPI PUSH2 0x236F PUSH1 0x2 PUSH1 0x36 PUSH2 0x250A JUMP JUMPDEST PUSH2 0x394A PUSH1 0x10 SLOAD DUP5 PUSH2 0x49ED JUMP JUMPDEST PUSH1 0x10 DUP2 SWAP1 SSTORE SWAP1 POP PUSH2 0x2F82 PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 DUP5 PUSH2 0x4A27 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E00 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x11 DUP2 MSTORE PUSH1 0x20 ADD PUSH17 0x6164646974696F6E206F766572666C6F77 PUSH1 0x78 SHL DUP2 MSTORE POP PUSH2 0x4F97 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 DUP4 GT PUSH2 0x39BC JUMPI POP PUSH1 0x0 SWAP1 POP DUP2 DUP4 SUB PUSH2 0x28EB JUMP JUMPDEST POP PUSH1 0x3 SWAP1 POP PUSH1 0x0 PUSH2 0x28EB JUMP JUMPDEST PUSH1 0x0 PUSH2 0x39D2 PUSH2 0x5B1A JUMP JUMPDEST PUSH2 0x39EA PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP7 DUP2 MSTORE POP DUP5 PUSH2 0x4FF5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x39FA DUP3 PUSH1 0xD SLOAD PUSH2 0x501F JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3A0A DUP3 PUSH1 0xD SLOAD PUSH2 0x396F JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3A2B PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xA SLOAD DUP2 MSTORE POP DUP5 PUSH1 0xE SLOAD PUSH2 0x503E JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3A4C PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x9 SLOAD DUP2 MSTORE POP DUP6 PUSH1 0x10 SLOAD PUSH2 0x503E JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3A6D PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x8 SLOAD DUP2 MSTORE POP DUP7 PUSH1 0xF SLOAD PUSH2 0x503E JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3A80 DUP8 PUSH1 0xC SLOAD PUSH1 0xC SLOAD PUSH2 0x503E JUMP JUMPDEST PUSH1 0xB DUP14 SWAP1 SSTORE PUSH1 0xC DUP2 SWAP1 SSTORE PUSH1 0xD DUP7 SWAP1 SSTORE PUSH1 0xE DUP6 SWAP1 SSTORE PUSH1 0x10 DUP5 SWAP1 SSTORE PUSH1 0xF DUP4 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP14 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP10 SWAP1 MSTORE DUP1 DUP3 ADD DUP4 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP9 SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH32 0x4DEC04E750CA11537CABCD8A9EAB06494DE08DA3735BC8871CD41250E190BC04 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG1 PUSH1 0x6 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x24 DUP1 DUP3 ADD DUP15 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x5EFD0233 PUSH1 0xE1 SHL OR DUP2 MSTORE SWAP2 MLOAD DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP5 AND SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x3B5D JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x3B3E JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3BBF 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 0x3BC4 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP PUSH1 0x0 SWAP2 POP PUSH2 0x3BD0 SWAP1 POP JUMP JUMPDEST SWAP13 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3BEB PUSH2 0x2AA1 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x3BFF JUMPI PUSH2 0x236F PUSH1 0xA PUSH1 0x39 PUSH2 0x250A JUMP JUMPDEST DUP3 PUSH2 0x3C08 PUSH2 0x36C1 JUMP JUMPDEST LT ISZERO PUSH2 0x3C1A JUMPI PUSH2 0x236F PUSH1 0xE PUSH1 0x38 PUSH2 0x250A JUMP JUMPDEST PUSH1 0xF SLOAD DUP4 GT ISZERO PUSH2 0x3C30 JUMPI PUSH2 0x236F PUSH1 0x2 PUSH1 0x3A PUSH2 0x250A JUMP JUMPDEST PUSH2 0x3C3C PUSH1 0xF SLOAD DUP5 PUSH2 0x49ED JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0xF DUP2 SWAP1 SSTORE POP PUSH2 0x2F82 PUSH1 0x5 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 PUSH4 0xF851A440 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 0x3C96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3CAA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3CC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP5 PUSH2 0x4A27 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x3CD6 DUP2 PUSH2 0x2441 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3CE0 PUSH2 0x1E44 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x3D0B JUMPI PUSH2 0x3CFE DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x3CF7 JUMPI INVALID JUMPDEST PUSH1 0x11 PUSH2 0x250A JUMP JUMPDEST SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x3DA2 SWAP1 POP JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA6AFED95 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3D46 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3D5A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3D70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x3D90 JUMPI PUSH2 0x3CFE DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x3D89 JUMPI INVALID JUMPDEST PUSH1 0x12 PUSH2 0x250A JUMP JUMPDEST PUSH2 0x3D9C CALLER DUP9 DUP9 DUP9 PUSH2 0x5066 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP JUMPDEST PUSH2 0x3DAB DUP2 PUSH2 0x28F2 JUMP JUMPDEST POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xD02F7351 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP7 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE DUP6 DUP2 AND PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x84 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 AND SWAP2 PUSH4 0xD02F7351 SWAP2 PUSH1 0xA4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3E21 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3E35 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3E4B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x3E62 JUMPI PUSH2 0x330B PUSH1 0x3 PUSH1 0x1D DUP4 PUSH2 0x426A JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x3E88 JUMPI PUSH2 0x330B PUSH1 0x6 PUSH1 0x1E PUSH2 0x250A JUMP JUMPDEST PUSH2 0x3E90 PUSH2 0x5B6B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x3EB3 SWAP1 DUP6 PUSH2 0x39A5 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3EC7 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3ED2 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3EE6 JUMPI INVALID JUMPDEST EQ PUSH2 0x3F0B JUMPI PUSH2 0x3F02 PUSH1 0x9 PUSH1 0x1C DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x26A0 JUMPI INVALID JUMPDEST SWAP3 POP POP POP PUSH2 0x34EB JUMP JUMPDEST PUSH2 0x3F2A DUP5 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH7 0x6379DA05B60000 DUP2 MSTORE POP PUSH2 0x5558 JUMP JUMPDEST PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x3F3C SWAP1 DUP6 SWAP1 PUSH2 0x49ED JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x3F49 PUSH2 0x2F89 JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3F5D JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3F68 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3F7C JUMPI INVALID JUMPDEST EQ PUSH2 0x3FCE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x65786368616E67652072617465206D617468206572726F720000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x3FEE PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP4 PUSH1 0xC0 ADD MLOAD DUP2 MSTORE POP DUP3 PUSH1 0x80 ADD MLOAD PUSH2 0x501F JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xE SLOAD PUSH2 0x4001 SWAP2 PUSH2 0x396F JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD MSTORE PUSH1 0x11 SLOAD PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x4018 SWAP2 SWAP1 PUSH2 0x49ED JUMP JUMPDEST PUSH2 0x100 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x4046 SWAP2 SWAP1 PUSH2 0x4602 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x405A JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4065 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4079 JUMPI INVALID JUMPDEST EQ PUSH2 0x4095 JUMPI PUSH2 0x3F02 PUSH1 0x9 PUSH1 0x1B DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x26A0 JUMPI INVALID JUMPDEST PUSH1 0xE0 DUP2 ADD MLOAD PUSH1 0xE SSTORE PUSH2 0x100 DUP2 ADD MLOAD PUSH1 0x11 SSTORE PUSH1 0x20 DUP1 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x12 DUP6 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 DUP7 ADD MLOAD SWAP3 DUP12 AND DUP1 DUP3 MSTORE SWAP1 DUP5 SWAP1 KECCAK256 SWAP3 SWAP1 SWAP3 SSTORE PUSH1 0x60 DUP6 ADD MLOAD DUP4 MLOAD SWAP1 DUP2 MSTORE SWAP3 MLOAD SWAP2 SWAP4 SWAP1 SWAP3 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5D51 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD ADDRESS SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5D51 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0xE0 DUP3 ADD MLOAD PUSH1 0x40 DUP1 MLOAD ADDRESS DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP3 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE MLOAD PUSH32 0xA91E67C5EA634CD43A12C5A482724B03DE01E85CA68702A53D0C2F45CB7C1DC5 SWAP2 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 PUSH1 0x0 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x419A DUP2 PUSH2 0x2441 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x41A4 PUSH2 0x1E44 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x41C2 JUMPI PUSH2 0x1BFE DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x41BB JUMPI INVALID JUMPDEST PUSH1 0xA PUSH2 0x250A JUMP JUMPDEST PUSH2 0x1C0F CALLER DUP6 PUSH2 0x5580 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x41D8 DUP2 PUSH2 0x2441 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x41E2 PUSH2 0x1E44 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x41F9 JUMPI PUSH2 0x1BFE DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x3827 JUMPI INVALID JUMPDEST PUSH2 0x1C0F CALLER DUP6 PUSH1 0x0 PUSH2 0x4A5D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x4213 DUP2 PUSH2 0x2441 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x421D PUSH2 0x1E44 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x4248 JUMPI PUSH2 0x423B DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x4234 JUMPI INVALID JUMPDEST PUSH1 0x40 PUSH2 0x250A JUMP JUMPDEST SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x4259 SWAP1 POP JUMP JUMPDEST PUSH2 0x4253 CALLER DUP8 DUP8 PUSH2 0x469F JUMP JUMPDEST SWAP4 POP SWAP4 POP POP JUMPDEST PUSH2 0x4262 DUP2 PUSH2 0x28F2 JUMP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x45B96FE442630264581B197E84BBADA861235052C5A1AADFFF9EA4E40A969AA0 DUP5 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x4299 JUMPI INVALID JUMPDEST DUP5 PUSH1 0x63 DUP2 GT ISZERO PUSH2 0x42A5 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 DUP2 ADD DUP6 SWAP1 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 PUSH1 0x3 DUP5 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x42D2 JUMPI INVALID JUMPDEST EQ PUSH2 0x42E8 JUMPI DUP4 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x42E3 JUMPI INVALID JUMPDEST PUSH2 0x34EB JUMP JUMPDEST POP PUSH2 0x3E8 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EQ PUSH2 0x4344 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0xE6CADCC8CAE440DAD2E6DAC2E8C6D PUSH1 0x8B SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 CALLVALUE EQ PUSH2 0x169A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0xECC2D8EACA40DAD2E6DAC2E8C6D PUSH1 0x93 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x4396 PUSH2 0x5B1A JUMP JUMPDEST PUSH2 0x3685 DUP7 DUP7 PUSH2 0x58C6 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xDD86FEA1 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 0x214D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x43FF DUP8 DUP8 PUSH2 0x4602 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4412 JUMPI INVALID JUMPDEST EQ PUSH2 0x4423 JUMPI POP SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH2 0x4434 JUMP JUMPDEST PUSH2 0x442D DUP2 DUP7 PUSH2 0x39A5 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4446 PUSH2 0x5B1A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x445B DUP7 PUSH8 0xDE0B6B3A7640000 PUSH2 0x4F2D JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x446E JUMPI INVALID JUMPDEST EQ PUSH2 0x448D JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x28EB JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x449A DUP4 DUP9 PUSH2 0x4F6C JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x44AD JUMPI INVALID JUMPDEST EQ PUSH2 0x44CF JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 SWAP5 POP SWAP3 POP PUSH2 0x28EB SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP9 SWAP1 SWAP8 POP SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1918 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x60 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x4531 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x4512 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x4593 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 0x4598 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x45F9 JUMPI DUP1 MLOAD ISZERO PUSH2 0x45B2 JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP7 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP7 MLOAD DUP8 SWAP4 SWAP2 SWAP3 DUP4 SWAP3 PUSH1 0x44 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x11F7 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x11DF JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 DUP4 ADD DUP5 DUP2 LT PUSH2 0x461A JUMPI PUSH1 0x0 SWAP3 POP SWAP1 POP PUSH2 0x28EB JUMP JUMPDEST POP PUSH1 0x2 SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH2 0x28EB JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4632 PUSH2 0x5B1A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x4643 DUP7 PUSH1 0x0 ADD MLOAD DUP7 PUSH2 0x4F2D JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4656 JUMPI INVALID JUMPDEST EQ PUSH2 0x4675 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x28EB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST MLOAD PUSH8 0xDE0B6B3A7640000 SWAP1 DIV SWAP1 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x12004531 PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP6 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 DUP5 SWAP4 SWAP2 AND SWAP2 PUSH4 0x24008A62 SWAP2 PUSH1 0x84 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4708 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x471C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4732 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x4756 JUMPI PUSH2 0x4749 PUSH1 0x3 PUSH1 0x43 DUP4 PUSH2 0x426A JUMP JUMPDEST SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH2 0x4434 SWAP1 POP JUMP JUMPDEST PUSH2 0x475E PUSH2 0x2AA1 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x4772 JUMPI PUSH2 0x4749 PUSH1 0xA PUSH1 0x44 PUSH2 0x250A JUMP JUMPDEST PUSH2 0x477A PUSH2 0x5BB8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x47A4 DUP7 PUSH2 0x383A JUMP JUMPDEST PUSH1 0x80 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x47BB JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x47C6 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x47DD JUMPI INVALID JUMPDEST EQ PUSH2 0x4807 JUMPI PUSH2 0x47F9 PUSH1 0x9 PUSH1 0x42 DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x26A0 JUMPI INVALID JUMPDEST SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x4434 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 NOT DUP6 EQ ISZERO PUSH2 0x4820 JUMPI PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x4828 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD DUP6 SWAP1 MSTORE JUMPDEST PUSH2 0x4836 DUP8 DUP3 PUSH1 0x40 ADD MLOAD PUSH2 0x42F3 JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x484B SWAP2 PUSH2 0x39A5 JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4862 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x486D JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4884 JUMPI INVALID JUMPDEST EQ PUSH2 0x48C0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5CEE PUSH1 0x3A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x48D0 PUSH1 0xD SLOAD DUP3 PUSH1 0xE0 ADD MLOAD PUSH2 0x39A5 JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x48E7 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x48F2 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4909 JUMPI INVALID JUMPDEST EQ PUSH2 0x4945 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5D71 PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xA0 DUP1 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP11 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 DUP6 SSTORE PUSH1 0xC SLOAD PUSH1 0x1 SWAP1 SWAP6 ADD SWAP5 SWAP1 SWAP5 SSTORE PUSH1 0xC0 DUP8 ADD MLOAD PUSH1 0xD DUP2 SWAP1 SSTORE PUSH1 0xE0 DUP9 ADD MLOAD SWAP6 MLOAD DUP3 MLOAD SWAP5 DUP16 AND DUP6 MSTORE SWAP5 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP2 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x60 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x80 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 MLOAD PUSH32 0x1A2A22CB034D26D1854BDC6666A5B91FE25EFBBB5DCAD3B0355478D6F5C362A1 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0xE0 ADD MLOAD PUSH1 0x0 SWAP8 SWAP1 SWAP7 POP SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E00 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x15 DUP2 MSTORE PUSH1 0x20 ADD PUSH21 0x7375627472616374696F6E20756E646572666C6F77 PUSH1 0x58 SHL DUP2 MSTORE POP PUSH2 0x5925 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP3 ISZERO PUSH2 0x8FC MUL SWAP1 DUP4 SWAP1 PUSH1 0x0 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x1914 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x4A6A JUMPI POP DUP2 ISZERO JUMPDEST PUSH2 0x4AA5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5E0A PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x4AAD PUSH2 0x5B2D JUMP JUMPDEST PUSH2 0x4AB5 PUSH2 0x2F89 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4ACC JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4AD7 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4AEE JUMPI INVALID JUMPDEST EQ PUSH2 0x4B12 JUMPI PUSH2 0x4B0A PUSH1 0x9 PUSH1 0x2E DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x26A0 JUMPI INVALID JUMPDEST SWAP2 POP POP PUSH2 0x1E00 JUMP JUMPDEST DUP4 ISZERO PUSH2 0x4B93 JUMPI PUSH1 0x60 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD DUP3 MSTORE SWAP1 DUP3 ADD MLOAD DUP2 MSTORE PUSH2 0x4B39 SWAP1 DUP6 PUSH2 0x366E JUMP JUMPDEST PUSH1 0x80 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4B50 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4B5B JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4B72 JUMPI INVALID JUMPDEST EQ PUSH2 0x4B8E JUMPI PUSH2 0x4B0A PUSH1 0x9 PUSH1 0x2C DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x26A0 JUMPI INVALID JUMPDEST PUSH2 0x4C0C JUMP JUMPDEST PUSH2 0x4BAF DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH1 0x40 ADD MLOAD DUP2 MSTORE POP PUSH2 0x4389 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4BC6 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4BD1 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4BE8 JUMPI INVALID JUMPDEST EQ PUSH2 0x4C04 JUMPI PUSH2 0x4B0A PUSH1 0x9 PUSH1 0x2D DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x26A0 JUMPI INVALID JUMPDEST PUSH1 0x80 DUP2 ADD DUP4 SWAP1 MSTORE JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x60 DUP3 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xEABE7D91 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP4 SWAP3 SWAP1 SWAP3 AND SWAP2 PUSH4 0xEABE7D91 SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4C71 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4C85 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4C9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x4CBB JUMPI PUSH2 0x4CB2 PUSH1 0x3 PUSH1 0x2B DUP4 PUSH2 0x426A JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x1E00 JUMP JUMPDEST PUSH2 0x4CC3 PUSH2 0x2AA1 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x4CD7 JUMPI PUSH2 0x4CB2 PUSH1 0xA PUSH1 0x2F PUSH2 0x250A JUMP JUMPDEST PUSH2 0x4CE7 PUSH1 0x11 SLOAD DUP4 PUSH1 0x60 ADD MLOAD PUSH2 0x39A5 JUMP JUMPDEST PUSH1 0xA0 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP5 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4CFE JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4D09 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP3 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4D20 JUMPI INVALID JUMPDEST EQ PUSH2 0x4D3C JUMPI PUSH2 0x4CB2 PUSH1 0x9 PUSH1 0x31 DUP5 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x26A0 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 DUP4 ADD MLOAD PUSH2 0x4D64 SWAP2 SWAP1 PUSH2 0x39A5 JUMP JUMPDEST PUSH1 0xC0 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP5 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4D7B JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4D86 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP3 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4D9D JUMPI INVALID JUMPDEST EQ PUSH2 0x4DB9 JUMPI PUSH2 0x4CB2 PUSH1 0x9 PUSH1 0x30 DUP5 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x26A0 JUMPI INVALID JUMPDEST DUP2 PUSH1 0x80 ADD MLOAD PUSH2 0x4DC6 PUSH2 0x36C1 JUMP JUMPDEST LT ISZERO PUSH2 0x4DD8 JUMPI PUSH2 0x4CB2 PUSH1 0xE PUSH1 0x32 PUSH2 0x250A JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MLOAD PUSH1 0x11 SSTORE PUSH1 0xC0 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x4E0E SWAP1 DUP8 SWAP1 PUSH2 0x4A27 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MLOAD PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD ADDRESS SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5D51 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 PUSH1 0x80 DUP3 ADD MLOAD PUSH1 0x60 DUP1 DUP5 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP4 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE MLOAD PUSH32 0xE5B754FB1ABB7F01B499791D0B820AE3B6AF3424AC1C59768EDB53F4EC31A929 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x5 SLOAD PUSH1 0x80 DUP4 ADD MLOAD PUSH1 0x60 DUP5 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x51DFF989 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x64 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x51DFF989 SWAP2 PUSH1 0x84 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4F02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4F16 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x0 SWAP3 POP PUSH2 0x4F23 SWAP2 POP POP JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH2 0x4F40 JUMPI POP PUSH1 0x0 SWAP1 POP DUP1 PUSH2 0x28EB JUMP JUMPDEST DUP4 DUP4 MUL DUP4 DUP6 DUP3 DUP2 PUSH2 0x4F4D JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x4F61 JUMPI POP PUSH1 0x2 SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH2 0x28EB JUMP JUMPDEST PUSH1 0x0 SWAP3 POP SWAP1 POP PUSH2 0x28EB JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH2 0x4F80 JUMPI POP PUSH1 0x1 SWAP1 POP PUSH1 0x0 PUSH2 0x28EB JUMP JUMPDEST PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x4F8B JUMPI INVALID JUMPDEST DIV SWAP2 POP SWAP2 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 ADD DUP3 DUP6 DUP3 LT ISZERO PUSH2 0x4FEC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x11F7 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x11DF JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x4FFD PUSH2 0x5B1A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x5016 DUP6 PUSH1 0x0 ADD MLOAD DUP6 PUSH2 0x597F JUMP JUMPDEST SWAP1 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5029 PUSH2 0x5B1A JUMP JUMPDEST PUSH2 0x5033 DUP5 DUP5 PUSH2 0x4FF5 JUMP JUMPDEST SWAP1 POP PUSH2 0x34EB DUP2 PUSH2 0x4690 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5048 PUSH2 0x5B1A JUMP JUMPDEST PUSH2 0x5052 DUP6 DUP6 PUSH2 0x4FF5 JUMP JUMPDEST SWAP1 POP PUSH2 0x45F9 PUSH2 0x5060 DUP3 PUSH2 0x4690 JUMP JUMPDEST DUP5 PUSH2 0x396F JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x2FE3F38F PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP8 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE DUP7 DUP2 AND PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x84 DUP3 ADD DUP7 SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 DUP5 SWAP4 SWAP2 AND SWAP2 PUSH4 0x5FC7E71E SWAP2 PUSH1 0xA4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x50D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x50EB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5101 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x5125 JUMPI PUSH2 0x5118 PUSH1 0x3 PUSH1 0x14 DUP4 PUSH2 0x426A JUMP JUMPDEST SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH2 0x554F SWAP1 POP JUMP JUMPDEST PUSH2 0x512D PUSH2 0x2AA1 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x5141 JUMPI PUSH2 0x5118 PUSH1 0xA PUSH1 0x18 PUSH2 0x250A JUMP JUMPDEST PUSH2 0x5149 PUSH2 0x2AA1 JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6C540BAF 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 0x5182 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5196 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x51AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD EQ PUSH2 0x51BF JUMPI PUSH2 0x5118 PUSH1 0xA PUSH1 0x13 PUSH2 0x250A JUMP JUMPDEST DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x51E5 JUMPI PUSH2 0x5118 PUSH1 0x6 PUSH1 0x19 PUSH2 0x250A JUMP JUMPDEST DUP5 PUSH2 0x51F6 JUMPI PUSH2 0x5118 PUSH1 0x7 PUSH1 0x17 PUSH2 0x250A JUMP JUMPDEST PUSH1 0x0 NOT DUP6 EQ ISZERO PUSH2 0x520C JUMPI PUSH2 0x5118 PUSH1 0x7 PUSH1 0x16 PUSH2 0x250A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x521A DUP10 DUP10 DUP10 PUSH2 0x469F JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP DUP2 ISZERO PUSH2 0x524A JUMPI PUSH2 0x523B DUP3 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x5234 JUMPI INVALID JUMPDEST PUSH1 0x1A PUSH2 0x250A JUMP JUMPDEST SWAP5 POP PUSH1 0x0 SWAP4 POP PUSH2 0x554F SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xC488847B PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP6 SWAP1 MSTORE DUP3 MLOAD PUSH1 0x0 SWAP5 DUP6 SWAP5 SWAP3 AND SWAP3 PUSH4 0xC488847B SWAP3 PUSH1 0x64 DUP1 DUP4 ADD SWAP4 SWAP2 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x52A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x52B8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x52CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 POP SWAP1 POP DUP2 ISZERO PUSH2 0x5319 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x33 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5DA2 PUSH1 0x33 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 DUP9 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 DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5370 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5384 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x539A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT ISZERO PUSH2 0x53EF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C49515549444154455F5345495A455F544F4F5F4D5543480000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND ADDRESS EQ ISZERO PUSH2 0x5415 JUMPI PUSH2 0x540E ADDRESS DUP14 DUP14 DUP6 PUSH2 0x3DB4 JUMP JUMPDEST SWAP1 POP PUSH2 0x549F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xB2A02FF1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP15 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP14 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD SWAP2 DUP12 AND SWAP2 PUSH4 0xB2A02FF1 SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5470 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5484 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x549A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP JUMPDEST DUP1 ISZERO PUSH2 0x54E9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x1D1BDAD95B881CD95A5E9D5C994819985A5B1959 PUSH1 0x62 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP16 AND DUP3 MSTORE DUP1 DUP15 AND PUSH1 0x20 DUP4 ADD MSTORE DUP2 DUP4 ADD DUP8 SWAP1 MSTORE DUP12 AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP2 ADD DUP5 SWAP1 MSTORE SWAP1 MLOAD PUSH32 0x298637F684DA70674F26509B10F07EC2FBC77A335AB1E7D6215A4B2484D8BB52 SWAP2 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 LOG1 PUSH1 0x0 SWAP8 POP SWAP3 SWAP6 POP POP POP POP POP POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xDE0B6B3A7640000 PUSH2 0x5571 DUP5 DUP5 PUSH1 0x0 ADD MLOAD PUSH2 0x597F JUMP JUMPDEST DUP2 PUSH2 0x5578 JUMPI INVALID JUMPDEST DIV SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x368F5153 PUSH1 0xE2 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 AND SWAP2 PUSH4 0xDA3D454C SWAP2 PUSH1 0x64 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x55DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x55F1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5607 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x5626 JUMPI PUSH2 0x561E PUSH1 0x3 PUSH1 0x10 DUP4 PUSH2 0x426A JUMP JUMPDEST SWAP2 POP POP PUSH2 0x132C JUMP JUMPDEST PUSH2 0x562E PUSH2 0x2AA1 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x5642 JUMPI PUSH2 0x561E PUSH1 0xA PUSH1 0xC PUSH2 0x250A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x564C PUSH2 0x36C1 JUMP JUMPDEST SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x566B JUMPI PUSH2 0x5662 PUSH1 0xE PUSH1 0xB PUSH2 0x250A JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x132C JUMP JUMPDEST PUSH2 0x5673 PUSH2 0x5BFE JUMP JUMPDEST PUSH2 0x567C DUP7 PUSH2 0x383A JUMP JUMPDEST PUSH1 0x20 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x5690 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x569B JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x56AF JUMPI INVALID JUMPDEST EQ PUSH2 0x56D4 JUMPI PUSH2 0x56CA PUSH1 0x9 DUP1 DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x26A0 JUMPI INVALID JUMPDEST SWAP4 POP POP POP POP PUSH2 0x132C JUMP JUMPDEST PUSH2 0x56E2 DUP2 PUSH1 0x20 ADD MLOAD DUP7 PUSH2 0x4602 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x56F6 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x5701 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x5715 JUMPI INVALID JUMPDEST EQ PUSH2 0x5731 JUMPI PUSH2 0x56CA PUSH1 0x9 PUSH1 0xE DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x26A0 JUMPI INVALID JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 DUP4 ADD MLOAD DUP2 MLOAD PUSH4 0x1DE6C8A5 PUSH1 0xE2 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x779B2294 SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x578A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x579E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x57B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 POP DUP3 ISZERO PUSH2 0x57CB JUMPI PUSH2 0x56CA PUSH1 0x3 PUSH1 0x10 DUP6 PUSH2 0x426A JUMP JUMPDEST PUSH2 0x57D7 PUSH1 0xD SLOAD DUP7 PUSH2 0x4602 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x57EB JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x57F6 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x580A JUMPI INVALID JUMPDEST EQ PUSH2 0x5826 JUMPI PUSH2 0x56CA PUSH1 0x9 PUSH1 0xD DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x26A0 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 MSTORE SWAP2 SWAP1 SWAP2 KECCAK256 SWAP1 DUP2 SSTORE PUSH1 0xC SLOAD PUSH1 0x1 SWAP1 SWAP2 ADD SSTORE PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0xD SSTORE PUSH2 0x5862 DUP7 DUP7 PUSH2 0x4A27 JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 ADD MLOAD PUSH1 0x60 DUP1 DUP5 ADD MLOAD DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP11 SWAP1 MSTORE DUP1 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP1 DUP3 ADD MSTORE SWAP1 MLOAD PUSH32 0x13ED6866D4E1EE6DA46F845C46D7E54120883D75C5EA9A2DACC1C4CA8984AB80 SWAP2 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG1 PUSH1 0x0 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x58D0 PUSH2 0x5B1A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x58E5 PUSH8 0xDE0B6B3A7640000 DUP8 PUSH2 0x4F2D JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x58F8 JUMPI INVALID JUMPDEST EQ PUSH2 0x5917 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x28EB JUMP JUMPDEST PUSH2 0x36B4 DUP2 DUP7 PUSH1 0x0 ADD MLOAD PUSH2 0x443C JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x5977 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x11F7 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x11DF JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E00 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x17 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x6D756C7469706C69636174696F6E206F766572666C6F77000000000000000000 DUP2 MSTORE POP PUSH1 0x0 DUP4 ISZERO DUP1 PUSH2 0x59C9 JUMPI POP DUP3 ISZERO JUMPDEST ISZERO PUSH2 0x59D6 JUMPI POP PUSH1 0x0 PUSH2 0x1E00 JUMP JUMPDEST DUP4 DUP4 MUL DUP4 DUP6 DUP3 DUP2 PUSH2 0x59E3 JUMPI INVALID JUMPDEST DIV EQ DUP4 SWAP1 PUSH2 0x4FEC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x11F7 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x11DF JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x5A73 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x5AA0 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x5AA0 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x5AA0 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x5A85 JUMP JUMPDEST POP PUSH2 0x1CCB SWAP3 SWAP2 POP PUSH2 0x5C27 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x5AED JUMPI DUP3 DUP1 ADD PUSH1 0xFF NOT DUP3 CALLDATALOAD AND OR DUP6 SSTORE PUSH2 0x5AA0 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x5AA0 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x5AA0 JUMPI DUP3 CALLDATALOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x5AFF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xE0 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x120 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x100 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH2 0x1706 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1CCB JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x5C2D JUMP INVALID PUSH14 0x61726B6574206D6179206F6E6C79 KECCAK256 PUSH3 0x652069 PUSH15 0x697469616C697A6564206F6E636569 PUSH15 0x697469616C2065786368616E676520 PUSH19 0x617465206D7573742062652067726561746572 KECCAK256 PUSH21 0x68616E207A65726F2E73657474696E6720696E7465 PUSH19 0x6573742072617465206D6F64656C206661696C PUSH6 0x64626F72726F PUSH24 0x42616C616E636553746F7265643A20626F72726F7742616C PUSH2 0x6E63 PUSH6 0x53746F726564 0x49 PUSH15 0x7465726E616C206661696C65645245 POP COINBASE MSIZE 0x5F TIMESTAMP 0x4F MSTORE MSTORE 0x4F JUMPI 0x5F 0x4E GASLIMIT JUMPI 0x5F COINBASE NUMBER NUMBER 0x4F SSTORE 0x4E SLOAD 0x5F TIMESTAMP 0x4F MSTORE MSTORE 0x4F JUMPI 0x5F TIMESTAMP COINBASE 0x4C COINBASE 0x4E NUMBER GASLIMIT 0x5F NUMBER COINBASE 0x4C NUMBER SSTORE 0x4C COINBASE SLOAD 0x49 0x4F 0x4E 0x5F CHAINID COINBASE 0x49 0x4C GASLIMIT DIFFICULTY PUSH16 0x6E6C7920467573652061646D696E206D PUSH2 0x7920 PUSH10 0x6E697469616C697A6520 PUSH21 0x6865206D61726B6574DDF252AD1BE2C89B69C2B068 0xFC CALLDATACOPY DUP14 0xAA SWAP6 0x2B 0xA7 CALL PUSH4 0xC4A11628 CREATE2 GAS 0x4D CREATE2 0x23 0xB3 0xEF MSTORE GASLIMIT POP COINBASE MSIZE 0x5F TIMESTAMP 0x4F MSTORE MSTORE 0x4F JUMPI 0x5F 0x4E GASLIMIT JUMPI 0x5F SLOAD 0x4F SLOAD COINBASE 0x4C 0x5F TIMESTAMP COINBASE 0x4C COINBASE 0x4E NUMBER GASLIMIT 0x5F NUMBER COINBASE 0x4C NUMBER SSTORE 0x4C COINBASE SLOAD 0x49 0x4F 0x4E 0x5F CHAINID COINBASE 0x49 0x4C GASLIMIT DIFFICULTY 0x4C 0x49 MLOAD SSTORE 0x49 DIFFICULTY COINBASE SLOAD GASLIMIT 0x5F NUMBER 0x4F 0x4D POP SLOAD MSTORE 0x4F 0x4C 0x4C GASLIMIT MSTORE 0x5F NUMBER COINBASE 0x4C NUMBER SSTORE 0x4C COINBASE SLOAD GASLIMIT 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD 0x5F MSTORE8 GASLIMIT 0x49 GAS GASLIMIT 0x5F CHAINID COINBASE 0x49 0x4C GASLIMIT DIFFICULTY PUSH6 0x786368616E67 PUSH6 0x526174655374 PUSH16 0x7265643A2065786368616E6765526174 PUSH6 0x53746F726564 0x49 PUSH15 0x7465726E616C206661696C65646F6E PUSH6 0x206F66207265 PUSH5 0x65656D546F PUSH12 0x656E73496E206F7220726564 PUSH6 0x656D416D6F75 PUSH15 0x74496E206D757374206265207A6572 PUSH16 0xA265627A7A723158207CEE580452E8D9 0xA7 PUSH27 0xB2258BFAE89FA594B79422B049E67606A090DAF10B651764736F6C PUSH4 0x43000511 STOP ORIGIN ","sourceMap":"179:3704:8:-;;;298:23;8:9:-1;5:2;;;30:1;27;20:12;5:2;298:23:8;179:3704;;;;;;"},"deployedBytecode":{"linkReferences":{},"object":"60806040526004361061036b5760003560e01c8063852a12e3116101c6578063b2a02ff1116100f7578063dd62ed3e11610095578063f3fdb15a1161006f578063f3fdb15a14610f1e578063f8f9da2814610f33578063fca7820b14610f48578063fe9c44ae14610d315761036b565b8063dd62ed3e14610e8a578063e597461914610ec5578063f2b3abbd14610eeb5761036b565b8063c5ebeaec116100d1578063c5ebeaec14610e0c578063db006a7514610e36578063dbfe7c1914610e60578063dc028ab114610e755761036b565b8063b2a02ff114610d5b578063bd6d894d14610d9e578063c37f68e214610db35761036b565b8063a6afed9511610164578063aa5af0fd1161013e578063aa5af0fd14610cee578063aae40a2a14610d03578063ac784ddc14610d31578063ae9d70b014610d465761036b565b8063a6afed9514610c76578063a7b820df14610c8b578063a9059cbb14610cb55761036b565b806391dd36c6116101a057806391dd36c614610bda57806395d89b4114610c0457806395dd919314610c19578063a03dce8d14610c4c5761036b565b8063852a12e314610b865780638d02d9a114610bb05780638f840ddd14610bc55761036b565b806347bd3718116102a057806361feacff1161023e5780636f307dc3116102185780636f307dc3146109d557806370a08231146109ea57806373acee9814610a1d57806379c2c95414610a325761036b565b806361feacff146109965780636752e702146109ab5780636c540baf146109c05761036b565b806356e677281161027a57806356e67728146108ab5780635c60da1b146109265780635fe3b56714610957578063601a0bf11461096c5761036b565b806347bd3718146107fc5780634e4d9fea1461081157806350d85b73146108195761036b565b8063182df0f51161030d578063313ce567116102e7578063313ce567146106be57806334154d4c146106e95780633af9e669146107b45780633b1d21a2146107e75761036b565b8063182df0f51461065e5780631db789441461067357806323b872dd1461067b5761036b565b80631249c58b116103495780631249c58b146105e7578063173b9904146105ef57806317bfdfbc1461061657806318160ddd146106495761036b565b806306fdde03146103a9578063095ea7b3146104335780630f8855e814610480575b600061037634610f72565b5090506103a6816040518060400160405280600b81526020016a1b5a5b9d0819985a5b195960aa1b815250610fd4565b50005b3480156103b557600080fd5b506103be61123a565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103f85781810151838201526020016103e0565b50505050905090810190601f1680156104255780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561043f57600080fd5b5061046c6004803603604081101561045657600080fd5b506001600160a01b0381351690602001356112c5565b604080519115158252519081900360200190f35b34801561048c57600080fd5b506105e560048036036101008110156104a457600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b8111156104de57600080fd5b8201836020820111156104f057600080fd5b803590602001918460018302840111600160201b8311171561051157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561056357600080fd5b82018360208201111561057557600080fd5b803590602001918460018302840111600160201b8311171561059657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505060ff8335169350505060208101359060400135611332565b005b6105e56115e0565b3480156105fb57600080fd5b5061060461161e565b60408051918252519081900360200190f35b34801561062257600080fd5b506106046004803603602081101561063957600080fd5b50356001600160a01b0316611624565b34801561065557600080fd5b506106046116a0565b34801561066a57600080fd5b506106046116a6565b6105e5611709565b34801561068757600080fd5b5061046c6004803603606081101561069e57600080fd5b506001600160a01b0381358116916020810135909116906040013561191a565b3480156106ca57600080fd5b506106d3611948565b6040805160ff9092168252519081900360200190f35b3480156106f557600080fd5b506105e56004803603604081101561070c57600080fd5b810190602081018135600160201b81111561072657600080fd5b82018360208201111561073857600080fd5b803590602001918460018302840111600160201b8311171561075957600080fd5b919390929091602081019035600160201b81111561077657600080fd5b82018360208201111561078857600080fd5b803590602001918460018302840111600160201b831117156107a957600080fd5b509092509050611951565b3480156107c057600080fd5b50610604600480360360208110156107d757600080fd5b50356001600160a01b03166119b6565b3480156107f357600080fd5b50610604611a6e565b34801561080857600080fd5b50610604611a7d565b6105e5611a83565b34801561082557600080fd5b506105e56004803603606081101561083c57600080fd5b6001600160a01b03823516916020810135151591810190606081016040820135600160201b81111561086d57600080fd5b82018360208201111561087f57600080fd5b803590602001918460018302840111600160201b831117156108a057600080fd5b509092509050611ac5565b3480156108b757600080fd5b506105e5600480360360208110156108ce57600080fd5b810190602081018135600160201b8111156108e857600080fd5b8201836020820111156108fa57600080fd5b803590602001918460018302840111600160201b8311171561091b57600080fd5b509092509050611b4e565b34801561093257600080fd5b5061093b611bac565b604080516001600160a01b039092168252519081900360200190f35b34801561096357600080fd5b5061093b611bbb565b34801561097857600080fd5b506106046004803603602081101561098f57600080fd5b5035611bca565b3480156109a257600080fd5b50610604611c1b565b3480156109b757600080fd5b50610604611c21565b3480156109cc57600080fd5b50610604611c2c565b3480156109e157600080fd5b5061093b611c32565b3480156109f657600080fd5b5061060460048036036020811015610a0d57600080fd5b50356001600160a01b0316611c41565b348015610a2957600080fd5b50610604611c5c565b348015610a3e57600080fd5b506105e5600480360360c0811015610a5557600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b811115610a8857600080fd5b820183602082011115610a9a57600080fd5b803590602001918460018302840111600160201b83111715610abb57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115610b0d57600080fd5b820183602082011115610b1f57600080fd5b803590602001918460018302840111600160201b83111715610b4057600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505082359350505060200135611ccf565b348015610b9257600080fd5b5061060460048036036020811015610ba957600080fd5b5035611cf4565b348015610bbc57600080fd5b50610604611cff565b348015610bd157600080fd5b50610604611d05565b348015610be657600080fd5b5061060460048036036020811015610bfd57600080fd5b5035611d0b565b348015610c1057600080fd5b506103be611d48565b348015610c2557600080fd5b5061060460048036036020811015610c3c57600080fd5b50356001600160a01b0316611da3565b348015610c5857600080fd5b5061060460048036036020811015610c6f57600080fd5b5035611e07565b348015610c8257600080fd5b50610604611e44565b348015610c9757600080fd5b5061060460048036036020811015610cae57600080fd5b5035612009565b348015610cc157600080fd5b5061046c60048036036040811015610cd857600080fd5b506001600160a01b038135169060200135612046565b348015610cfa57600080fd5b50610604612073565b6105e560048036036040811015610d1957600080fd5b506001600160a01b0381358116916020013516612079565b348015610d3d57600080fd5b5061046c6120c1565b348015610d5257600080fd5b506106046120c6565b348015610d6757600080fd5b5061060460048036036060811015610d7e57600080fd5b506001600160a01b0381358116916020810135909116906040013561217e565b348015610daa57600080fd5b506106046121a2565b348015610dbf57600080fd5b50610de660048036036020811015610dd657600080fd5b50356001600160a01b0316612216565b604080519485526020850193909352838301919091526060830152519081900360800190f35b348015610e1857600080fd5b5061060460048036036020811015610e2f57600080fd5b50356122ab565b348015610e4257600080fd5b5061060460048036036020811015610e5957600080fd5b50356122b6565b348015610e6c57600080fd5b506106046122c1565b348015610e8157600080fd5b506106046122c7565b348015610e9657600080fd5b5061060460048036036040811015610ead57600080fd5b506001600160a01b03813581169160200135166122cd565b6105e560048036036020811015610edb57600080fd5b50356001600160a01b03166122f8565b348015610ef757600080fd5b5061060460048036036020811015610f0e57600080fd5b50356001600160a01b0316612346565b348015610f2a57600080fd5b5061093b612380565b348015610f3f57600080fd5b5061060461238f565b348015610f5457600080fd5b5061060460048036036020811015610f6b57600080fd5b5035612404565b6000806000610f8081612441565b6000610f8a611e44565b90508015610fb557610fa8816011811115610fa157fe5b602061250a565b935060009250610fc59050565b610fbf3386612570565b93509350505b610fce816128f2565b50915091565b81610fde57611236565b606081516007016040519080825280601f01601f19166020018201604052801561100f576020820181803883390190505b50905060005b82518110156110605782818151811061102a57fe5b602001015160f81c60f81b82828151811061104157fe5b60200101906001600160f81b031916908160001a905350600101611015565b8151600160fd1b9083908390811061107457fe5b60200101906001600160f81b031916908160001a905350602860f81b82826001018151811061109f57fe5b60200101906001600160f81b031916908160001a9053506103e8840460300160f81b8282600201815181106110d057fe5b60200101906001600160f81b031916908160001a905350600a606485040660300160f81b82826003018151811061110357fe5b60200101906001600160f81b031916908160001a905350600a8085040660300160f81b82826004018151811061113557fe5b60200101906001600160f81b031916908160001a905350600a840660300160f81b82826005018151811061116557fe5b60200101906001600160f81b031916908160001a905350602960f81b82826006018151811061119057fe5b60200101906001600160f81b031916908160001a9053508184156112325760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156111f75781810151838201526020016111df565b50505050905090810190601f1680156112245780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5050505b5050565b6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156112bd5780601f10611292576101008083540402835291602001916112bd565b820191906000526020600020905b8154815290600101906020018083116112a057829003601f168201915b505050505081565b3360008181526013602090815260408083206001600160a01b03871680855290835281842086905581518681529151939493909284927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a360019150505b92915050565b3373a731585ab05fc9f83555cf9bff8f58ee94e18f85146113845760405162461bcd60e51b8152600401808060200182810382526029815260200180615d286029913960400191505060405180910390fd5b600b541580156113945750600c54155b6113cf5760405162461bcd60e51b8152600401808060200182810382526023815260200180615c426023913960400191505060405180910390fd5b6007869055856114105760405162461bcd60e51b8152600401808060200182810382526030815260200180615c656030913960400191505060405180910390fd5b600061141b8961296e565b90508015611470576040805162461bcd60e51b815260206004820152601a60248201527f73657474696e6720636f6d7074726f6c6c6572206661696c6564000000000000604482015290519081900360640190fd5b611478612aa1565b600b55670de0b6b3a7640000600c5561149088612aa5565b905080156114cf5760405162461bcd60e51b8152600401808060200182810382526022815260200180615c956022913960400191505060405180910390fd5b85516114e2906002906020890190615a32565b5084516114f6906003906020880190615a32565b506004805460ff191660ff861617905561150f83612dab565b90508015611564576040805162461bcd60e51b815260206004820152601d60248201527f73657474696e67207265736572766520666163746f72206661696c6564000000604482015290519081900360640190fd5b61156d82612e64565b905080156115c2576040805162461bcd60e51b815260206004820152601860248201527f73657474696e672061646d696e20666565206661696c65640000000000000000604482015290519081900360640190fd5b50506001805460ff60b01b1916600160b01b17905550505050505050565b60006115eb34610f72565b50905061161b816040518060400160405280600b81526020016a1b5a5b9d0819985a5b195960aa1b815250610fd4565b50565b600a5481565b60008061163081612441565b600061163a611e44565b14611685576040805162461bcd60e51b81526020600482015260166024820152751858d8dc9d59481a5b9d195c995cdd0819985a5b195960521b604482015290519081900360640190fd5b61168e83611da3565b91505b61169a816128f2565b50919050565b60115481565b60008060006116b3612f89565b909250905060008260038111156116c657fe5b146117025760405162461bcd60e51b8152600401808060200182810382526035815260200180615dd56035913960400191505060405180910390fd5b9150505b90565b33301480159061178f5750600560009054906101000a90046001600160a01b03166001600160a01b031663dd5cd22c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561176257600080fd5b505afa158015611776573d6000803e3d6000fd5b505050506040513d602081101561178c57600080fd5b50515b15611918576000805460408051638abe0b7560e01b81526001600160a01b03909216600483015251829160609173a731585ab05fc9f83555cf9bff8f58ee94e18f8591638abe0b759160248083019287929190829003018186803b1580156117f657600080fd5b505afa15801561180a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052606081101561183357600080fd5b81516020830151604080850180519151939592948301929184600160201b82111561185d57600080fd5b90830190602082018581111561187257600080fd5b8251600160201b81118282018810171561188b57600080fd5b82525081516020918201929091019080838360005b838110156118b85781810151838201526020016118a0565b50505050905090810190601f1680156118e55780820380516001836020036101000a031916815260200191505b5060405250506000549396509194509250506001600160a01b0380851691161461191457611914838383613049565b5050505b565b60008061192681612441565b600061193433878787613265565b149150611940816128f2565b509392505050565b60045460ff1681565b6119596134f3565b61199d576040805162461bcd60e51b815260206004820152601060248201526f31b0b63632b9103737ba1030b236b4b760811b604482015290519081900360640190fd5b6119a960028585615aac565b5061123260038383615aac565b60006119c0615b1a565b60405180602001604052806119d36121a2565b90526001600160a01b0384166000908152601260205260408120549192509081906119ff90849061366e565b90925090506000826003811115611a1257fe5b14611a64576040805162461bcd60e51b815260206004820152601f60248201527f62616c616e636520636f756c64206e6f742062652063616c63756c6174656400604482015290519081900360640190fd5b925050505b919050565b6000611a786136c1565b905090565b600d5481565b6000611a8e346136ed565b50905061161b81604051806040016040528060128152602001711c995c185e509bdc9c9bddc819985a5b195960721b815250610fd4565b611acd6134f3565b611b07576040805162461bcd60e51b815260206004820152600660248201526510b0b236b4b760d11b604482015290519081900360640190fd5b611b48848484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061304992505050565b50505050565b33301480611b5f5750611b5f6134f3565b611b98576040805162461bcd60e51b815260206004820152600560248201526410b9b2b63360d91b604482015290519081900360640190fd5b5050600180546001600160b01b0319169055565b6000546001600160a01b031681565b6005546001600160a01b031681565b600080611bd681612441565b6000611be0611e44565b90508015611c0657611bfe816011811115611bf757fe5b603b61250a565b925050611691565b611c0f8461372e565b92505061169a816128f2565b600f5481565b666379da05b6000081565b600b5481565b6015546001600160a01b031681565b6001600160a01b031660009081526012602052604090205490565b600080611c6881612441565b6000611c72611e44565b14611cbd576040805162461bcd60e51b81526020600482015260166024820152751858d8dc9d59481a5b9d195c995cdd0819985a5b195960521b604482015290519081900360640190fd5b600d549150611ccb816128f2565b5090565b6702c68af0bb1400006012611cea8888848989868a8a611332565b5050505050505050565b600061132c826137fa565b60085481565b600e5481565b600080611d1781612441565b6000611d21611e44565b90508015611d3f57611bfe816011811115611d3857fe5b605261250a565b611c0f84612e64565b6003805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156112bd5780601f10611292576101008083540402835291602001916112bd565b6000806000611db18461383a565b90925090506000826003811115611dc457fe5b14611e005760405162461bcd60e51b8152600401808060200182810382526037815260200180615cb76037913960400191505060405180910390fd5b9392505050565b600080611e1381612441565b6000611e1d611e44565b90508015611e3b57611bfe816011811115611e3457fe5b603361250a565b611c0f846138ee565b600080611e4f612aa1565b905080600b541415611e65576000915050611706565b6000611e6f6136c1565b90506000600660009054906101000a90046001600160a01b03166001600160a01b03166315f2405383600d54611eb4600e54611eaf600f5460105461396f565b61396f565b6040518463ffffffff1660e01b815260040180848152602001838152602001828152602001935050505060206040518083038186803b158015611ef657600080fd5b505afa158015611f0a573d6000803e3d6000fd5b505050506040513d6020811015611f2057600080fd5b5051905065048c27395000811115611f7f576040805162461bcd60e51b815260206004820152601c60248201527f626f72726f772072617465206973206162737572646c79206869676800000000604482015290519081900360640190fd5b600080611f8e85600b546139a5565b90925090506000826003811115611fa157fe5b14611ff3576040805162461bcd60e51b815260206004820152601f60248201527f636f756c64206e6f742063616c63756c61746520626c6f636b2064656c746100604482015290519081900360640190fd5b611fff858585846139c8565b9550505050505090565b60008061201581612441565b600061201f611e44565b9050801561203d57611bfe81601181111561203657fe5b603761250a565b611c0f84613be0565b60008061205281612441565b600061206033338787613265565b14915061206c816128f2565b5092915050565b600c5481565b6000612086833484613cc8565b50905061191481604051806040016040528060168152602001751b1a5c5d5a59185d19509bdc9c9bddc819985a5b195960521b815250610fd4565b600181565b6006546000906001600160a01b031663b81688166120e26136c1565b600d546120f9600e54611eaf600f5460105461396f565b600854600954600a5401016040518563ffffffff1660e01b81526004018085815260200184815260200183815260200182815260200194505050505060206040518083038186803b15801561214d57600080fd5b505afa158015612161573d6000803e3d6000fd5b505050506040513d602081101561217757600080fd5b5051905090565b6000600161218b81612441565b61219733868686613db4565b9150611940816128f2565b6000806121ae81612441565b60006121b8611e44565b14612203576040805162461bcd60e51b81526020600482015260166024820152751858d8dc9d59481a5b9d195c995cdd0819985a5b195960521b604482015290519081900360640190fd5b61220b6116a6565b9150611ccb816128f2565b6001600160a01b0381166000908152601260205260408120548190819081908180806122418961383a565b93509050600081600381111561225357fe5b146122715760095b9750600096508695508594506122a49350505050565b612279612f89565b92509050600081600381111561228b57fe5b1461229757600961225b565b5060009650919450925090505b9193509193565b600061132c8261418e565b600061132c826141cc565b60095481565b60105481565b6001600160a01b03918216600090815260136020908152604080832093909416825291909152205490565b60006123048234614205565b509050611236816040518060400160405280601881526020017f7265706179426f72726f77426568616c66206661696c65640000000000000000815250610fd4565b600080612351611e44565b905080156123775761236f81601181111561236857fe5b604b61250a565b915050611a69565b611e0083612aa5565b6006546001600160a01b031681565b6006546000906001600160a01b03166315f240536123ab6136c1565b600d546123c2600e54611eaf600f5460105461396f565b6040518463ffffffff1660e01b815260040180848152602001838152602001828152602001935050505060206040518083038186803b15801561214d57600080fd5b60008061241081612441565b600061241a611e44565b9050801561243857611bfe81601181111561243157fe5b605961250a565b611c0f84612dab565b600154600160b01b900460ff1661248c576040805162461bcd60e51b815260206004820152600a6024820152691c994b595b9d195c995960b21b604482015290519081900360640190fd5b806124fa57600560009054906101000a90046001600160a01b03166001600160a01b031663c90c20b16040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156124e157600080fd5b505af11580156124f5573d6000803e3d6000fd5b505050505b506001805460ff60b01b19169055565b60007f45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa083601181111561253957fe5b83606381111561254557fe5b604080519283526020830191909152600082820152519081900360600190a1826011811115611e0057fe5b60055460408051634ef4c3e160e01b81523060048201526001600160a01b03858116602483015260448201859052915160009384938493911691634ef4c3e19160648082019260209290919082900301818787803b1580156125d157600080fd5b505af11580156125e5573d6000803e3d6000fd5b505050506040513d60208110156125fb57600080fd5b50519050801561261f57612612600360218361426a565b9250600091506128eb9050565b612627612aa1565b600b541461263b57612612600a602461250a565b612643615b2d565b61264b612f89565b604083018190526020830182600381111561266257fe5b600381111561266d57fe5b905250600090508160200151600381111561268457fe5b146126b3576126a560096023836020015160038111156126a057fe5b61426a565b9350600092506128eb915050565b6126bd86866142f3565b60c08201819052604080516020810182529083015181526126de9190614389565b60608301819052602083018260038111156126f557fe5b600381111561270057fe5b905250600090508160200151600381111561271757fe5b14612769576040805162461bcd60e51b815260206004820181905260248201527f4d494e545f45584348414e47455f43414c43554c4154494f4e5f4641494c4544604482015290519081900360640190fd5b612779601154826060015161396f565b60808201526001600160a01b03861660009081526012602052604090205460608201516127a6919061396f565b60a0820181905260808201516011556001600160a01b0387166000818152601260209081526040918290209390935560c084015160608086015183519485529484019190915282820193909352517f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f929181900390910190a1606081015160408051918252516001600160a01b038816913091600080516020615d518339815191529181900360200190a360055460c08201516060830151604080516341c728b960e01b81523060048201526001600160a01b038b81166024830152604482019490945260648101929092525191909216916341c728b991608480830192600092919082900301818387803b1580156128be57600080fd5b505af11580156128d2573d6000803e3d6000fd5b50600092506128df915050565b8160c001519350935050505b9250929050565b6001805460ff60b01b1916600160b01b1790558061161b57600560009054906101000a90046001600160a01b03166001600160a01b031663632e51426040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561295a57600080fd5b505af1158015611232573d6000803e3d6000fd5b600080600560009054906101000a90046001600160a01b03169050826001600160a01b0316627e3dd26040518163ffffffff1660e01b815260040160206040518083038186803b1580156129c157600080fd5b505afa1580156129d5573d6000803e3d6000fd5b505050506040513d60208110156129eb57600080fd5b5051612a3e576040805162461bcd60e51b815260206004820152601c60248201527f6d61726b6572206d6574686f642072657475726e65642066616c736500000000604482015290519081900360640190fd5b600580546001600160a01b0319166001600160a01b03858116918217909255604080519284168352602083019190915280517f7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d9281900390910190a16000611e00565b4390565b600080612ab06134f3565b612ac05761236f6001604d61250a565b612ac8612aa1565b600b5414612adc5761236f600a604c61250a565b600660009054906101000a90046001600160a01b03169050826001600160a01b0316632191f92a6040518163ffffffff1660e01b815260040160206040518083038186803b158015612b2d57600080fd5b505afa158015612b41573d6000803e3d6000fd5b505050506040513d6020811015612b5757600080fd5b5051612baa576040805162461bcd60e51b815260206004820152601c60248201527f6d61726b6572206d6574686f642072657475726e65642066616c736500000000604482015290519081900360640190fd5b600680546001600160a01b0319166001600160a01b03858116918217909255604080519284168352602083019190915280517fedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f9269281900390910190a16001600160a01b03811615612cdc5760408051600481526024810182526020810180516001600160e01b0316636cc1140b60e11b178152915181516001600160a01b0385169382918083835b60208310612c715780518252601f199092019160209182019101612c52565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612cd3576040519150601f19603f3d011682016040523d82523d6000602084013e612cd8565b606091505b5050505b60408051600481526024810182526020810180516001600160e01b031663742a137b60e11b178152915181516001600160a01b0387169382918083835b60208310612d385780518252601f199092019160209182019101612d19565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612d9a576040519150601f19603f3d011682016040523d82523d6000602084013e612d9f565b606091505b5060009150611e009050565b6000612db56134f3565b612dcc57612dc56001605a61250a565b9050611a69565b612dd4612aa1565b600b5414612de857612dc5600a605b61250a565b670de0b6b3a7640000612e08612e008460085461396f565b60095461396f565b1115612e1a57612dc56002605c61250a565b600a805490839055604080518281526020810185905281517faaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460929181900390910190a16000611e00565b6000612e6e612aa1565b600b5414612e8257612dc5600a605461250a565b600019821415612e925760085491505b6000612e9c6143a0565b9050670de0b6b3a7640000612ebc612eb6600a548661396f565b8361396f565b1115612ece5761236f6002605561250a565b8260085414612f3457612edf6134f3565b612eef5761236f6001605361250a565b6008805490849055604080518281526020810186905281517fcdd0b588250e1398549f79cfdb8217c186688822905d6715b0834ea1c865594a929181900390910190a1505b8060095414612f82576009805490829055604080518281526020810184905281517f92eef861b6533b7d3417f39c2ad7b460eed4e88a32fa3604f30e718b7602e7dc929181900390910190a1505b6000611e00565b601154600090819080612fa457505060075460009150613045565b6000612fae6136c1565b90506000612fba615b1a565b6000612fdc84600d54612fd7600e54611eaf600f5460105461396f565b6143ef565b935090506000816003811115612fee57fe5b14613003579550600094506130459350505050565b61300d838661443c565b92509050600081600381111561301f57fe5b14613034579550600094506130459350505050565b505160009550935061304592505050565b9091565b60005460408051630304735160e61b81526001600160a01b039283166004820152918516602483015283151560448301525173a731585ab05fc9f83555cf9bff8f58ee94e18f859163c11cd440916064808301926020929190829003018186803b1580156130b657600080fd5b505afa1580156130ca573d6000803e3d6000fd5b505050506040513d60208110156130e057600080fd5b505161311b576040805162461bcd60e51b8152602060048201526005602482015264085a5b5c1b60da1b604482015290519081900360640190fd5b8115613129576131296144ec565b600080546001600160a01b038581166001600160a01b03198316178355604051602060248201818152865160448401528651939094169461321694309488949193849360649093019290860191908190849084905b8381101561319657818101518382015260200161317e565b50505050905090810190601f1680156131c35780820380516001836020036101000a031916815260200191505b5060408051601f19818403018152918152602080830180516001600160e01b0316630adccee560e31b17905281518083019092526007825266216265636f6d6560c81b9082015290935091506144f19050565b50600054604080516001600160a01b038085168252909216602083015280517fd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a9281900390910190a150505050565b600554604080516317b9b84b60e31b81523060048201526001600160a01b03868116602483015285811660448301526064820185905291516000938493169163bdcdc25891608480830192602092919082900301818787803b1580156132ca57600080fd5b505af11580156132de573d6000803e3d6000fd5b505050506040513d60208110156132f457600080fd5b5051905080156133135761330b6003605d8361426a565b9150506134eb565b836001600160a01b0316856001600160a01b031614156133395761330b6002605e61250a565b60006001600160a01b0387811690871614156133585750600019613380565b506001600160a01b038086166000908152601360209081526040808320938a16835292905220545b60008060008061339085896139a5565b909450925060008460038111156133a357fe5b146133c1576133b46009605e61250a565b96505050505050506134eb565b6001600160a01b038a166000908152601260205260409020546133e490896139a5565b909450915060008460038111156133f757fe5b14613408576133b46009605f61250a565b6001600160a01b03891660009081526012602052604090205461342b9089614602565b9094509050600084600381111561343e57fe5b1461344f576133b46009606061250a565b6001600160a01b03808b16600090815260126020526040808220859055918b1681522081905560001985146134a7576001600160a01b03808b166000908152601360209081526040808320938f168352929052208390555b886001600160a01b03168a6001600160a01b0316600080516020615d518339815191528a6040518082815260200191505060405180910390a3600096505050505050505b949350505050565b600554604080516303e1469160e61b815290516000926001600160a01b031691829163f851a44091600480820192602092909190829003018186803b15801561353b57600080fd5b505afa15801561354f573d6000803e3d6000fd5b505050506040513d602081101561356557600080fd5b50516001600160a01b0316331480156135df5750806001600160a01b0316630a755ec26040518163ffffffff1660e01b815260040160206040518083038186803b1580156135b257600080fd5b505afa1580156135c6573d6000803e3d6000fd5b505050506040513d60208110156135dc57600080fd5b50515b8061170257503373a731585ab05fc9f83555cf9bff8f58ee94e18f851480156117025750806001600160a01b0316632f1069ba6040518163ffffffff1660e01b815260040160206040518083038186803b15801561363c57600080fd5b505afa158015613650573d6000803e3d6000fd5b505050506040513d602081101561366657600080fd5b505191505090565b600080600061367b615b1a565b6136858686614628565b9092509050600082600381111561369857fe5b146136a957509150600090506128eb565b60006136b482614690565b9350935050509250929050565b60008060006136d047346139a5565b909250905060008260038111156136e357fe5b1461170257600080fd5b60008060006136fb81612441565b6000613705611e44565b9050801561372357610fa881601181111561371c57fe5b604161250a565b610fbf33338761469f565b6000806137396134f3565b6137495761236f6001603c61250a565b613751612aa1565b600b54146137655761236f600a603e61250a565b8261376e6136c1565b10156137805761236f600e603d61250a565b600e548311156137965761236f6002603f61250a565b6137a2600e54846149ed565b600e81905590506137b33384614a27565b604080513381526020810185905280820183905290517f3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e9181900360600190a16000611e00565b60008061380681612441565b6000613810611e44565b9050801561382e57611bfe81601181111561382757fe5b602a61250a565b611c0f33600086614a5d565b6001600160a01b0381166000908152601460205260408120805482918291829182916138715750600094508493506138e992505050565b6138818160000154600c54614f2d565b9094509250600084600381111561389457fe5b146138a95750919350600092506138e9915050565b6138b7838260010154614f6c565b909450915060008460038111156138ca57fe5b146138df5750919350600092506138e9915050565b5060009450925050505b915091565b6000806138f9612aa1565b600b541461390d5761236f600a603561250a565b826139166136c1565b10156139285761236f600e603461250a565b60105483111561393e5761236f6002603661250a565b61394a601054846149ed565b60108190559050612f8273a731585ab05fc9f83555cf9bff8f58ee94e18f8584614a27565b6000611e008383604051806040016040528060118152602001706164646974696f6e206f766572666c6f7760781b815250614f97565b6000808383116139bc5750600090508183036128eb565b506003905060006128eb565b60006139d2615b1a565b6139ea60405180602001604052808681525084614ff5565b905060006139fa82600d5461501f565b90506000613a0a82600d5461396f565b90506000613a2b6040518060200160405280600a5481525084600e5461503e565b90506000613a4c60405180602001604052806009548152508560105461503e565b90506000613a6d604051806020016040528060085481525086600f5461503e565b90506000613a8087600c54600c5461503e565b600b8d9055600c819055600d869055600e8590556010849055600f839055604080518d8152602081018990528082018390526060810188905290519192507f4dec04e750ca11537cabcd8a9eab06494de08da3735bc8871cd41250e190bc04919081900360800190a16006546040805160248082018e905282518083039091018152604490910182526020810180516001600160e01b0316635efd023360e11b178152915181516001600160a01b0390941693919290918291908083835b60208310613b5d5780518252601f199092019160209182019101613b3e565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613bbf576040519150601f19603f3d011682016040523d82523d6000602084013e613bc4565b606091505b5060009150613bd09050565b9c9b505050505050505050505050565b600080613beb612aa1565b600b5414613bff5761236f600a603961250a565b82613c086136c1565b1015613c1a5761236f600e603861250a565b600f54831115613c305761236f6002603a61250a565b613c3c600f54846149ed565b905080600f81905550612f82600560009054906101000a90046001600160a01b03166001600160a01b031663f851a4406040518163ffffffff1660e01b815260040160206040518083038186803b158015613c9657600080fd5b505afa158015613caa573d6000803e3d6000fd5b505050506040513d6020811015613cc057600080fd5b505184614a27565b6000806000613cd681612441565b6000613ce0611e44565b90508015613d0b57613cfe816011811115613cf757fe5b601161250a565b935060009250613da29050565b846001600160a01b031663a6afed956040518163ffffffff1660e01b8152600401602060405180830381600087803b158015613d4657600080fd5b505af1158015613d5a573d6000803e3d6000fd5b505050506040513d6020811015613d7057600080fd5b505190508015613d9057613cfe816011811115613d8957fe5b601261250a565b613d9c33888888615066565b93509350505b613dab816128f2565b50935093915050565b6005546040805163d02f735160e01b81523060048201526001600160a01b038781166024830152868116604483015285811660648301526084820185905291516000938493169163d02f73519160a480830192602092919082900301818787803b158015613e2157600080fd5b505af1158015613e35573d6000803e3d6000fd5b505050506040513d6020811015613e4b57600080fd5b505190508015613e625761330b6003601d8361426a565b846001600160a01b0316846001600160a01b03161415613e885761330b6006601e61250a565b613e90615b6b565b6001600160a01b038516600090815260126020526040902054613eb390856139a5565b6020830181905282826003811115613ec757fe5b6003811115613ed257fe5b9052506000905081516003811115613ee657fe5b14613f0b57613f026009601c836000015160038111156126a057fe5b925050506134eb565b613f2a846040518060200160405280666379da05b60000815250615558565b60808201819052613f3c9085906149ed565b6060820152613f49612f89565b60c0830181905282826003811115613f5d57fe5b6003811115613f6857fe5b9052506000905081516003811115613f7c57fe5b14613fce576040805162461bcd60e51b815260206004820152601860248201527f65786368616e67652072617465206d617468206572726f720000000000000000604482015290519081900360640190fd5b613fee60405180602001604052808360c00151815250826080015161501f565b60a08201819052600e546140019161396f565b60e0820152601154608082015161401891906149ed565b6101008201526001600160a01b03861660009081526012602052604090205460608201516140469190614602565b604083018190528282600381111561405a57fe5b600381111561406557fe5b905250600090508151600381111561407957fe5b1461409557613f026009601b836000015160038111156126a057fe5b60e0810151600e556101008101516011556020808201516001600160a01b0380881660008181526012855260408082209490945583860151928b16808252908490209290925560608501518351908152925191939092600080516020615d51833981519152929081900390910190a36080810151604080519182525130916001600160a01b03881691600080516020615d518339815191529181900360200190a360a081015160e082015160408051308152602081019390935282810191909152517fa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc59181900360600190a16000979650505050505050565b60008061419a81612441565b60006141a4611e44565b905080156141c257611bfe8160118111156141bb57fe5b600a61250a565b611c0f3385615580565b6000806141d881612441565b60006141e2611e44565b905080156141f957611bfe81601181111561382757fe5b611c0f33856000614a5d565b600080600061421381612441565b600061421d611e44565b905080156142485761423b81601181111561423457fe5b604061250a565b9350600092506142599050565b61425333878761469f565b93509350505b614262816128f2565b509250929050565b60007f45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa084601181111561429957fe5b8460638111156142a557fe5b604080519283526020830191909152818101859052519081900360600190a160038460118111156142d257fe5b146142e8578360118111156142e357fe5b6134eb565b506103e80192915050565b6000336001600160a01b03841614614344576040805162461bcd60e51b815260206004820152600f60248201526e0e6cadcc8cae440dad2e6dac2e8c6d608b1b604482015290519081900360640190fd5b81341461169a576040805162461bcd60e51b815260206004820152600e60248201526d0ecc2d8eaca40dad2e6dac2e8c6d60931b604482015290519081900360640190fd5b6000806000614396615b1a565b61368586866158c6565b600073a731585ab05fc9f83555cf9bff8f58ee94e18f856001600160a01b031663dd86fea16040518163ffffffff1660e01b815260040160206040518083038186803b15801561214d57600080fd5b6000806000806143ff8787614602565b9092509050600082600381111561441257fe5b146144235750915060009050614434565b61442d81866139a5565b9350935050505b935093915050565b6000614446615b1a565b60008061445b86670de0b6b3a7640000614f2d565b9092509050600082600381111561446e57fe5b1461448d575060408051602081019091526000815290925090506128eb565b60008061449a8388614f6c565b909250905060008260038111156144ad57fe5b146144cf575060408051602081019091526000815290945092506128eb915050565b604080516020810190915290815260009890975095505050505050565b611918565b606060006060856001600160a01b0316856040518082805190602001908083835b602083106145315780518252601f199092019160209182019101614512565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614593576040519150601f19603f3d011682016040523d82523d6000602084013e614598565b606091505b5091509150816145f9578051156145b25780518082602001fd5b60405162461bcd60e51b81526020600482018181528651602484015286518793919283926044019190850190808383600083156111f75781810151838201526020016111df565b95945050505050565b60008083830184811061461a576000925090506128eb565b5060029150600090506128eb565b6000614632615b1a565b600080614643866000015186614f2d565b9092509050600082600381111561465657fe5b14614675575060408051602081019091526000815290925090506128eb565b60408051602081019091529081526000969095509350505050565b51670de0b6b3a7640000900490565b60055460408051631200453160e11b81523060048201526001600160a01b0386811660248301528581166044830152606482018590529151600093849384939116916324008a629160848082019260209290919082900301818787803b15801561470857600080fd5b505af115801561471c573d6000803e3d6000fd5b505050506040513d602081101561473257600080fd5b50519050801561475657614749600360438361426a565b9250600091506144349050565b61475e612aa1565b600b541461477257614749600a604461250a565b61477a615bb8565b6001600160a01b03861660009081526014602052604090206001015460608201526147a48661383a565b60808301819052602083018260038111156147bb57fe5b60038111156147c657fe5b90525060009050816020015160038111156147dd57fe5b14614807576147f960096042836020015160038111156126a057fe5b935060009250614434915050565b6000198514156148205760808101516040820152614828565b604081018590525b6148368782604001516142f3565b60e08201819052608082015161484b916139a5565b60a083018190526020830182600381111561486257fe5b600381111561486d57fe5b905250600090508160200151600381111561488457fe5b146148c05760405162461bcd60e51b815260040180806020018281038252603a815260200180615cee603a913960400191505060405180910390fd5b6148d0600d548260e001516139a5565b60c08301819052602083018260038111156148e757fe5b60038111156148f257fe5b905250600090508160200151600381111561490957fe5b146149455760405162461bcd60e51b8152600401808060200182810382526031815260200180615d716031913960400191505060405180910390fd5b60a080820180516001600160a01b03808a16600081815260146020908152604091829020948555600c5460019095019490945560c0870151600d81905560e088015195518251948f16855294840192909252828101949094526060820192909252608081019190915290517f1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1929181900390910190a160e00151600097909650945050505050565b6000611e008383604051806040016040528060158152602001747375627472616374696f6e20756e646572666c6f7760581b815250615925565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015611914573d6000803e3d6000fd5b6000821580614a6a575081155b614aa55760405162461bcd60e51b8152600401808060200182810382526034815260200180615e0a6034913960400191505060405180910390fd5b614aad615b2d565b614ab5612f89565b6040830181905260208301826003811115614acc57fe5b6003811115614ad757fe5b9052506000905081602001516003811115614aee57fe5b14614b1257614b0a6009602e836020015160038111156126a057fe5b915050611e00565b8315614b93576060810184905260408051602081018252908201518152614b39908561366e565b6080830181905260208301826003811115614b5057fe5b6003811115614b5b57fe5b9052506000905081602001516003811115614b7257fe5b14614b8e57614b0a6009602c836020015160038111156126a057fe5b614c0c565b614baf8360405180602001604052808460400151815250614389565b6060830181905260208301826003811115614bc657fe5b6003811115614bd157fe5b9052506000905081602001516003811115614be857fe5b14614c0457614b0a6009602d836020015160038111156126a057fe5b608081018390525b60055460608201516040805163eabe7d9160e01b81523060048201526001600160a01b03898116602483015260448201939093529051600093929092169163eabe7d919160648082019260209290919082900301818787803b158015614c7157600080fd5b505af1158015614c85573d6000803e3d6000fd5b505050506040513d6020811015614c9b57600080fd5b505190508015614cbb57614cb26003602b8361426a565b92505050611e00565b614cc3612aa1565b600b5414614cd757614cb2600a602f61250a565b614ce760115483606001516139a5565b60a0840181905260208401826003811115614cfe57fe5b6003811115614d0957fe5b9052506000905082602001516003811115614d2057fe5b14614d3c57614cb260096031846020015160038111156126a057fe5b6001600160a01b0386166000908152601260205260409020546060830151614d6491906139a5565b60c0840181905260208401826003811115614d7b57fe5b6003811115614d8657fe5b9052506000905082602001516003811115614d9d57fe5b14614db957614cb260096030846020015160038111156126a057fe5b8160800151614dc66136c1565b1015614dd857614cb2600e603261250a565b60a082015160115560c08201516001600160a01b0387166000908152601260205260409020556080820151614e0e908790614a27565b6060820151604080519182525130916001600160a01b03891691600080516020615d518339815191529181900360200190a36080820151606080840151604080516001600160a01b038b168152602081019490945283810191909152517fe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a9299281900390910190a160055460808301516060840151604080516351dff98960e01b81523060048201526001600160a01b038b81166024830152604482019490945260648101929092525191909216916351dff98991608480830192600092919082900301818387803b158015614f0257600080fd5b505af1158015614f16573d6000803e3d6000fd5b5060009250614f23915050565b9695505050505050565b60008083614f40575060009050806128eb565b83830283858281614f4d57fe5b0414614f61575060029150600090506128eb565b6000925090506128eb565b60008082614f8057506001905060006128eb565b6000838581614f8b57fe5b04915091509250929050565b60008383018285821015614fec5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156111f75781810151838201526020016111df565b50949350505050565b614ffd615b1a565b604051806020016040528061501685600001518561597f565b90529392505050565b6000615029615b1a565b6150338484614ff5565b90506134eb81614690565b6000615048615b1a565b6150528585614ff5565b90506145f961506082614690565b8461396f565b60055460408051632fe3f38f60e11b81523060048201526001600160a01b0384811660248301528781166044830152868116606483015260848201869052915160009384938493911691635fc7e71e9160a48082019260209290919082900301818787803b1580156150d757600080fd5b505af11580156150eb573d6000803e3d6000fd5b505050506040513d602081101561510157600080fd5b50519050801561512557615118600360148361426a565b92506000915061554f9050565b61512d612aa1565b600b541461514157615118600a601861250a565b615149612aa1565b846001600160a01b0316636c540baf6040518163ffffffff1660e01b815260040160206040518083038186803b15801561518257600080fd5b505afa158015615196573d6000803e3d6000fd5b505050506040513d60208110156151ac57600080fd5b5051146151bf57615118600a601361250a565b866001600160a01b0316866001600160a01b031614156151e5576151186006601961250a565b846151f6576151186007601761250a565b60001985141561520c576151186007601661250a565b60008061521a89898961469f565b9092509050811561524a5761523b82601181111561523457fe5b601a61250a565b94506000935061554f92505050565b6005546040805163c488847b60e01b81523060048201526001600160a01b038981166024830152604482018590528251600094859492169263c488847b926064808301939192829003018186803b1580156152a457600080fd5b505afa1580156152b8573d6000803e3d6000fd5b505050506040513d60408110156152ce57600080fd5b508051602090910151909250905081156153195760405162461bcd60e51b8152600401808060200182810382526033815260200180615da26033913960400191505060405180910390fd5b80886001600160a01b03166370a082318c6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561537057600080fd5b505afa158015615384573d6000803e3d6000fd5b505050506040513d602081101561539a57600080fd5b505110156153ef576040805162461bcd60e51b815260206004820152601860248201527f4c49515549444154455f5345495a455f544f4f5f4d5543480000000000000000604482015290519081900360640190fd5b60006001600160a01b0389163014156154155761540e308d8d85613db4565b905061549f565b6040805163b2a02ff160e01b81526001600160a01b038e811660048301528d81166024830152604482018590529151918b169163b2a02ff1916064808201926020929091908290030181600087803b15801561547057600080fd5b505af1158015615484573d6000803e3d6000fd5b505050506040513d602081101561549a57600080fd5b505190505b80156154e9576040805162461bcd60e51b81526020600482015260146024820152731d1bdad95b881cd95a5e9d5c994819985a5b195960621b604482015290519081900360640190fd5b604080516001600160a01b03808f168252808e1660208301528183018790528b1660608201526080810184905290517f298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb529181900360a00190a16000975092955050505050505b94509492505050565b6000670de0b6b3a764000061557184846000015161597f565b8161557857fe5b049392505050565b6005546040805163368f515360e21b81523060048201526001600160a01b0385811660248301526044820185905291516000938493169163da3d454c91606480830192602092919082900301818787803b1580156155dd57600080fd5b505af11580156155f1573d6000803e3d6000fd5b505050506040513d602081101561560757600080fd5b5051905080156156265761561e600360108361426a565b91505061132c565b61562e612aa1565b600b54146156425761561e600a600c61250a565b600061564c6136c1565b90508381101561566b57615662600e600b61250a565b9250505061132c565b615673615bfe565b61567c8661383a565b602083018190528282600381111561569057fe5b600381111561569b57fe5b90525060009050815160038111156156af57fe5b146156d4576156ca600980836000015160038111156126a057fe5b935050505061132c565b6156e2816020015186614602565b60408301819052828260038111156156f657fe5b600381111561570157fe5b905250600090508151600381111561571557fe5b14615731576156ca6009600e836000015160038111156126a057fe5b6005546040808301518151631de6c8a560e21b8152306004820152602481019190915290516001600160a01b039092169163779b2294916044808201926020929091908290030181600087803b15801561578a57600080fd5b505af115801561579e573d6000803e3d6000fd5b505050506040513d60208110156157b457600080fd5b5051925082156157cb576156ca600360108561426a565b6157d7600d5486614602565b60608301819052828260038111156157eb57fe5b60038111156157f657fe5b905250600090508151600381111561580a57fe5b14615826576156ca6009600d836000015160038111156126a057fe5b6040808201516001600160a01b0388166000908152601460205291909120908155600c546001909101556060810151600d556158628686614a27565b60408082015160608084015183516001600160a01b038b168152602081018a9052808501939093529082015290517f13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab809181900360800190a160009695505050505050565b60006158d0615b1a565b6000806158e5670de0b6b3a764000087614f2d565b909250905060008260038111156158f857fe5b14615917575060408051602081019091526000815290925090506128eb565b6136b481866000015161443c565b600081848411156159775760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156111f75781810151838201526020016111df565b505050900390565b6000611e0083836040518060400160405280601781526020017f6d756c7469706c69636174696f6e206f766572666c6f7700000000000000000081525060008315806159c9575082155b156159d657506000611e00565b838302838582816159e357fe5b04148390614fec5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156111f75781810151838201526020016111df565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10615a7357805160ff1916838001178555615aa0565b82800160010185558215615aa0579182015b82811115615aa0578251825591602001919060010190615a85565b50611ccb929150615c27565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10615aed5782800160ff19823516178555615aa0565b82800160010185558215615aa0579182015b82811115615aa0578235825591602001919060010190615aff565b6040518060200160405280600081525090565b6040805160e0810190915280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b604080516101208101909152806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040805161010081019091528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b604080516080810190915280600081526020016000815260200160008152602001600081525090565b61170691905b80821115611ccb5760008155600101615c2d56fe6d61726b6574206d6179206f6e6c7920626520696e697469616c697a6564206f6e6365696e697469616c2065786368616e67652072617465206d7573742062652067726561746572207468616e207a65726f2e73657474696e6720696e7465726573742072617465206d6f64656c206661696c6564626f72726f7742616c616e636553746f7265643a20626f72726f7742616c616e636553746f726564496e7465726e616c206661696c656452455041595f424f52524f575f4e45575f4143434f554e545f424f52524f575f42414c414e43455f43414c43554c4154494f4e5f4641494c45446f6e6c7920467573652061646d696e206d617920696e697469616c697a6520746865206d61726b6574ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef52455041595f424f52524f575f4e45575f544f54414c5f42414c414e43455f43414c43554c4154494f4e5f4641494c45444c49515549444154455f434f4d5054524f4c4c45525f43414c43554c4154455f414d4f554e545f5345495a455f4641494c454465786368616e67655261746553746f7265643a2065786368616e67655261746553746f726564496e7465726e616c206661696c65646f6e65206f662072656465656d546f6b656e73496e206f722072656465656d416d6f756e74496e206d757374206265207a65726fa265627a7a723158207cee580452e8d9a77ab2258bfae89fa594b79422b049e67606a090daf10b651764736f6c63430005110032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x852A12E3 GT PUSH2 0x1C6 JUMPI DUP1 PUSH4 0xB2A02FF1 GT PUSH2 0xF7 JUMPI DUP1 PUSH4 0xDD62ED3E GT PUSH2 0x95 JUMPI DUP1 PUSH4 0xF3FDB15A GT PUSH2 0x6F JUMPI DUP1 PUSH4 0xF3FDB15A EQ PUSH2 0xF1E JUMPI DUP1 PUSH4 0xF8F9DA28 EQ PUSH2 0xF33 JUMPI DUP1 PUSH4 0xFCA7820B EQ PUSH2 0xF48 JUMPI DUP1 PUSH4 0xFE9C44AE EQ PUSH2 0xD31 JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0xE8A JUMPI DUP1 PUSH4 0xE5974619 EQ PUSH2 0xEC5 JUMPI DUP1 PUSH4 0xF2B3ABBD EQ PUSH2 0xEEB JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0xC5EBEAEC GT PUSH2 0xD1 JUMPI DUP1 PUSH4 0xC5EBEAEC EQ PUSH2 0xE0C JUMPI DUP1 PUSH4 0xDB006A75 EQ PUSH2 0xE36 JUMPI DUP1 PUSH4 0xDBFE7C19 EQ PUSH2 0xE60 JUMPI DUP1 PUSH4 0xDC028AB1 EQ PUSH2 0xE75 JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0xB2A02FF1 EQ PUSH2 0xD5B JUMPI DUP1 PUSH4 0xBD6D894D EQ PUSH2 0xD9E JUMPI DUP1 PUSH4 0xC37F68E2 EQ PUSH2 0xDB3 JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0xA6AFED95 GT PUSH2 0x164 JUMPI DUP1 PUSH4 0xAA5AF0FD GT PUSH2 0x13E JUMPI DUP1 PUSH4 0xAA5AF0FD EQ PUSH2 0xCEE JUMPI DUP1 PUSH4 0xAAE40A2A EQ PUSH2 0xD03 JUMPI DUP1 PUSH4 0xAC784DDC EQ PUSH2 0xD31 JUMPI DUP1 PUSH4 0xAE9D70B0 EQ PUSH2 0xD46 JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0xA6AFED95 EQ PUSH2 0xC76 JUMPI DUP1 PUSH4 0xA7B820DF EQ PUSH2 0xC8B JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0xCB5 JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0x91DD36C6 GT PUSH2 0x1A0 JUMPI DUP1 PUSH4 0x91DD36C6 EQ PUSH2 0xBDA JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0xC04 JUMPI DUP1 PUSH4 0x95DD9193 EQ PUSH2 0xC19 JUMPI DUP1 PUSH4 0xA03DCE8D EQ PUSH2 0xC4C JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0x852A12E3 EQ PUSH2 0xB86 JUMPI DUP1 PUSH4 0x8D02D9A1 EQ PUSH2 0xBB0 JUMPI DUP1 PUSH4 0x8F840DDD EQ PUSH2 0xBC5 JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0x47BD3718 GT PUSH2 0x2A0 JUMPI DUP1 PUSH4 0x61FEACFF GT PUSH2 0x23E JUMPI DUP1 PUSH4 0x6F307DC3 GT PUSH2 0x218 JUMPI DUP1 PUSH4 0x6F307DC3 EQ PUSH2 0x9D5 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x9EA JUMPI DUP1 PUSH4 0x73ACEE98 EQ PUSH2 0xA1D JUMPI DUP1 PUSH4 0x79C2C954 EQ PUSH2 0xA32 JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0x61FEACFF EQ PUSH2 0x996 JUMPI DUP1 PUSH4 0x6752E702 EQ PUSH2 0x9AB JUMPI DUP1 PUSH4 0x6C540BAF EQ PUSH2 0x9C0 JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0x56E67728 GT PUSH2 0x27A JUMPI DUP1 PUSH4 0x56E67728 EQ PUSH2 0x8AB JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x926 JUMPI DUP1 PUSH4 0x5FE3B567 EQ PUSH2 0x957 JUMPI DUP1 PUSH4 0x601A0BF1 EQ PUSH2 0x96C JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0x47BD3718 EQ PUSH2 0x7FC JUMPI DUP1 PUSH4 0x4E4D9FEA EQ PUSH2 0x811 JUMPI DUP1 PUSH4 0x50D85B73 EQ PUSH2 0x819 JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0x182DF0F5 GT PUSH2 0x30D JUMPI DUP1 PUSH4 0x313CE567 GT PUSH2 0x2E7 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x6BE JUMPI DUP1 PUSH4 0x34154D4C EQ PUSH2 0x6E9 JUMPI DUP1 PUSH4 0x3AF9E669 EQ PUSH2 0x7B4 JUMPI DUP1 PUSH4 0x3B1D21A2 EQ PUSH2 0x7E7 JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0x182DF0F5 EQ PUSH2 0x65E JUMPI DUP1 PUSH4 0x1DB78944 EQ PUSH2 0x673 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x67B JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0x1249C58B GT PUSH2 0x349 JUMPI DUP1 PUSH4 0x1249C58B EQ PUSH2 0x5E7 JUMPI DUP1 PUSH4 0x173B9904 EQ PUSH2 0x5EF JUMPI DUP1 PUSH4 0x17BFDFBC EQ PUSH2 0x616 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x649 JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x3A9 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x433 JUMPI DUP1 PUSH4 0xF8855E8 EQ PUSH2 0x480 JUMPI JUMPDEST PUSH1 0x0 PUSH2 0x376 CALLVALUE PUSH2 0xF72 JUMP JUMPDEST POP SWAP1 POP PUSH2 0x3A6 DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xB DUP2 MSTORE PUSH1 0x20 ADD PUSH11 0x1B5A5B9D0819985A5B1959 PUSH1 0xAA SHL DUP2 MSTORE POP PUSH2 0xFD4 JUMP JUMPDEST POP STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3BE PUSH2 0x123A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3F8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3E0 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x425 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x43F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x46C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x456 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x12C5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x48C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5E5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x4A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x4DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x4F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x511 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x563 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x575 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x596 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP POP PUSH1 0xFF DUP4 CALLDATALOAD AND SWAP4 POP POP POP PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x1332 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x5E5 PUSH2 0x15E0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x604 PUSH2 0x161E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x622 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x604 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x639 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1624 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x655 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x604 PUSH2 0x16A0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x66A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x604 PUSH2 0x16A6 JUMP JUMPDEST PUSH2 0x5E5 PUSH2 0x1709 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x687 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x46C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x69E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x191A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6D3 PUSH2 0x1948 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5E5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x70C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x726 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x738 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x759 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x776 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x788 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x7A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1951 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x604 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x19B6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x604 PUSH2 0x1A6E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x808 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x604 PUSH2 0x1A7D JUMP JUMPDEST PUSH2 0x5E5 PUSH2 0x1A83 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x825 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5E5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x83C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x86D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x87F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x8A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1AC5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5E5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x8E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x8FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x91B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1B4E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x932 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x93B PUSH2 0x1BAC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x963 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x93B PUSH2 0x1BBB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x978 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x604 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x98F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1BCA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x604 PUSH2 0x1C1B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x604 PUSH2 0x1C21 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x604 PUSH2 0x1C2C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x93B PUSH2 0x1C32 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x604 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA0D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1C41 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA29 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x604 PUSH2 0x1C5C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA3E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5E5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0xA55 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xA88 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xA9A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0xABB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xB0D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xB1F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0xB40 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP POP DUP3 CALLDATALOAD SWAP4 POP POP POP PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1CCF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB92 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x604 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xBA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1CF4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBBC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x604 PUSH2 0x1CFF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBD1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x604 PUSH2 0x1D05 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBE6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x604 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xBFD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1D0B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3BE PUSH2 0x1D48 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC25 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x604 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1DA3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x604 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC6F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1E07 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x604 PUSH2 0x1E44 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC97 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x604 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xCAE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x2009 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCC1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x46C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xCD8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x2046 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCFA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x604 PUSH2 0x2073 JUMP JUMPDEST PUSH2 0x5E5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xD19 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x2079 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD3D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x46C PUSH2 0x20C1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD52 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x604 PUSH2 0x20C6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x604 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xD7E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x217E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xDAA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x604 PUSH2 0x21A2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xDBF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xDE6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xDD6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2216 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP5 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP4 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE18 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x604 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE2F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x22AB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE42 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x604 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE59 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x22B6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE6C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x604 PUSH2 0x22C1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x604 PUSH2 0x22C7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x604 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xEAD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x22CD JUMP JUMPDEST PUSH2 0x5E5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xEDB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x22F8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEF7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x604 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF0E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2346 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF2A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x93B PUSH2 0x2380 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF3F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x604 PUSH2 0x238F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF54 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x604 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF6B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x2404 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xF80 DUP2 PUSH2 0x2441 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF8A PUSH2 0x1E44 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0xFB5 JUMPI PUSH2 0xFA8 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0xFA1 JUMPI INVALID JUMPDEST PUSH1 0x20 PUSH2 0x250A JUMP JUMPDEST SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0xFC5 SWAP1 POP JUMP JUMPDEST PUSH2 0xFBF CALLER DUP7 PUSH2 0x2570 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP JUMPDEST PUSH2 0xFCE DUP2 PUSH2 0x28F2 JUMP JUMPDEST POP SWAP2 POP SWAP2 JUMP JUMPDEST DUP2 PUSH2 0xFDE JUMPI PUSH2 0x1236 JUMP JUMPDEST PUSH1 0x60 DUP2 MLOAD PUSH1 0x7 ADD PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x100F JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x1060 JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x102A JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD MLOAD PUSH1 0xF8 SHR PUSH1 0xF8 SHL DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1041 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x1 ADD PUSH2 0x1015 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0xFD SHL SWAP1 DUP4 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0x1074 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x28 PUSH1 0xF8 SHL DUP3 DUP3 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x109F JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH2 0x3E8 DUP5 DIV PUSH1 0x30 ADD PUSH1 0xF8 SHL DUP3 DUP3 PUSH1 0x2 ADD DUP2 MLOAD DUP2 LT PUSH2 0x10D0 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0xA PUSH1 0x64 DUP6 DIV MOD PUSH1 0x30 ADD PUSH1 0xF8 SHL DUP3 DUP3 PUSH1 0x3 ADD DUP2 MLOAD DUP2 LT PUSH2 0x1103 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0xA DUP1 DUP6 DIV MOD PUSH1 0x30 ADD PUSH1 0xF8 SHL DUP3 DUP3 PUSH1 0x4 ADD DUP2 MLOAD DUP2 LT PUSH2 0x1135 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0xA DUP5 MOD PUSH1 0x30 ADD PUSH1 0xF8 SHL DUP3 DUP3 PUSH1 0x5 ADD DUP2 MLOAD DUP2 LT PUSH2 0x1165 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x29 PUSH1 0xF8 SHL DUP3 DUP3 PUSH1 0x6 ADD DUP2 MLOAD DUP2 LT PUSH2 0x1190 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP DUP2 DUP5 ISZERO PUSH2 0x1232 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x11F7 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x11DF JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1224 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP4 AND DUP5 SWAP1 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x12BD JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1292 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x12BD JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x12A0 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP7 SWAP1 SSTORE DUP2 MLOAD DUP7 DUP2 MSTORE SWAP2 MLOAD SWAP4 SWAP5 SWAP4 SWAP1 SWAP3 DUP5 SWAP3 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST CALLER PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 EQ PUSH2 0x1384 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5D28 PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xB SLOAD ISZERO DUP1 ISZERO PUSH2 0x1394 JUMPI POP PUSH1 0xC SLOAD ISZERO JUMPDEST PUSH2 0x13CF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5C42 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x7 DUP7 SWAP1 SSTORE DUP6 PUSH2 0x1410 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x30 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5C65 PUSH1 0x30 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x141B DUP10 PUSH2 0x296E JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1470 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x73657474696E6720636F6D7074726F6C6C6572206661696C6564000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1478 PUSH2 0x2AA1 JUMP JUMPDEST PUSH1 0xB SSTORE PUSH8 0xDE0B6B3A7640000 PUSH1 0xC SSTORE PUSH2 0x1490 DUP9 PUSH2 0x2AA5 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x14CF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5C95 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP6 MLOAD PUSH2 0x14E2 SWAP1 PUSH1 0x2 SWAP1 PUSH1 0x20 DUP10 ADD SWAP1 PUSH2 0x5A32 JUMP JUMPDEST POP DUP5 MLOAD PUSH2 0x14F6 SWAP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP9 ADD SWAP1 PUSH2 0x5A32 JUMP JUMPDEST POP PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF DUP7 AND OR SWAP1 SSTORE PUSH2 0x150F DUP4 PUSH2 0x2DAB JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1564 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x73657474696E67207265736572766520666163746F72206661696C6564000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x156D DUP3 PUSH2 0x2E64 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x15C2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x73657474696E672061646D696E20666565206661696C65640000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF PUSH1 0xB0 SHL NOT AND PUSH1 0x1 PUSH1 0xB0 SHL OR SWAP1 SSTORE POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x15EB CALLVALUE PUSH2 0xF72 JUMP JUMPDEST POP SWAP1 POP PUSH2 0x161B DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xB DUP2 MSTORE PUSH1 0x20 ADD PUSH11 0x1B5A5B9D0819985A5B1959 PUSH1 0xAA SHL DUP2 MSTORE POP PUSH2 0xFD4 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0xA SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1630 DUP2 PUSH2 0x2441 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x163A PUSH2 0x1E44 JUMP JUMPDEST EQ PUSH2 0x1685 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x1858D8DC9D59481A5B9D195C995CDD0819985A5B1959 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x168E DUP4 PUSH2 0x1DA3 JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH2 0x169A DUP2 PUSH2 0x28F2 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x11 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x16B3 PUSH2 0x2F89 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x16C6 JUMPI INVALID JUMPDEST EQ PUSH2 0x1702 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x35 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5DD5 PUSH1 0x35 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP2 POP POP JUMPDEST SWAP1 JUMP JUMPDEST CALLER ADDRESS EQ DUP1 ISZERO SWAP1 PUSH2 0x178F JUMPI POP PUSH1 0x5 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 PUSH4 0xDD5CD22C 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 0x1762 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1776 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x178C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST ISZERO PUSH2 0x1918 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x8ABE0B75 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE MLOAD DUP3 SWAP2 PUSH1 0x60 SWAP2 PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 SWAP2 PUSH4 0x8ABE0B75 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 DUP8 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x17F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x180A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1833 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP1 DUP6 ADD DUP1 MLOAD SWAP2 MLOAD SWAP4 SWAP6 SWAP3 SWAP5 DUP4 ADD SWAP3 SWAP2 DUP5 PUSH1 0x1 PUSH1 0x20 SHL DUP3 GT ISZERO PUSH2 0x185D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x1872 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH2 0x188B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x18B8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x18A0 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x18E5 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE POP POP PUSH1 0x0 SLOAD SWAP4 SWAP7 POP SWAP2 SWAP5 POP SWAP3 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP2 AND EQ PUSH2 0x1914 JUMPI PUSH2 0x1914 DUP4 DUP4 DUP4 PUSH2 0x3049 JUMP JUMPDEST POP POP POP JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1926 DUP2 PUSH2 0x2441 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1934 CALLER DUP8 DUP8 DUP8 PUSH2 0x3265 JUMP JUMPDEST EQ SWAP2 POP PUSH2 0x1940 DUP2 PUSH2 0x28F2 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x1959 PUSH2 0x34F3 JUMP JUMPDEST PUSH2 0x199D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x31B0B63632B9103737BA1030B236B4B7 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x19A9 PUSH1 0x2 DUP6 DUP6 PUSH2 0x5AAC JUMP JUMPDEST POP PUSH2 0x1232 PUSH1 0x3 DUP4 DUP4 PUSH2 0x5AAC JUMP JUMPDEST PUSH1 0x0 PUSH2 0x19C0 PUSH2 0x5B1A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x19D3 PUSH2 0x21A2 JUMP JUMPDEST SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP SWAP1 DUP2 SWAP1 PUSH2 0x19FF SWAP1 DUP5 SWAP1 PUSH2 0x366E JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1A12 JUMPI INVALID JUMPDEST EQ PUSH2 0x1A64 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x62616C616E636520636F756C64206E6F742062652063616C63756C6174656400 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1A78 PUSH2 0x36C1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0xD SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1A8E CALLVALUE PUSH2 0x36ED JUMP JUMPDEST POP SWAP1 POP PUSH2 0x161B DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x12 DUP2 MSTORE PUSH1 0x20 ADD PUSH18 0x1C995C185E509BDC9C9BDDC819985A5B1959 PUSH1 0x72 SHL DUP2 MSTORE POP PUSH2 0xFD4 JUMP JUMPDEST PUSH2 0x1ACD PUSH2 0x34F3 JUMP JUMPDEST PUSH2 0x1B07 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x10B0B236B4B7 PUSH1 0xD1 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1B48 DUP5 DUP5 DUP5 DUP5 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x3049 SWAP3 POP POP POP JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST CALLER ADDRESS EQ DUP1 PUSH2 0x1B5F JUMPI POP PUSH2 0x1B5F PUSH2 0x34F3 JUMP JUMPDEST PUSH2 0x1B98 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x5 PUSH1 0x24 DUP3 ADD MSTORE PUSH5 0x10B9B2B633 PUSH1 0xD9 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xB0 SHL SUB NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 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 0x0 DUP1 PUSH2 0x1BD6 DUP2 PUSH2 0x2441 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1BE0 PUSH2 0x1E44 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1C06 JUMPI PUSH2 0x1BFE DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x1BF7 JUMPI INVALID JUMPDEST PUSH1 0x3B PUSH2 0x250A JUMP JUMPDEST SWAP3 POP POP PUSH2 0x1691 JUMP JUMPDEST PUSH2 0x1C0F DUP5 PUSH2 0x372E JUMP JUMPDEST SWAP3 POP POP PUSH2 0x169A DUP2 PUSH2 0x28F2 JUMP JUMPDEST PUSH1 0xF SLOAD DUP2 JUMP JUMPDEST PUSH7 0x6379DA05B60000 DUP2 JUMP JUMPDEST PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH1 0x15 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1C68 DUP2 PUSH2 0x2441 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C72 PUSH2 0x1E44 JUMP JUMPDEST EQ PUSH2 0x1CBD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x1858D8DC9D59481A5B9D195C995CDD0819985A5B1959 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0xD SLOAD SWAP2 POP PUSH2 0x1CCB DUP2 PUSH2 0x28F2 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH8 0x2C68AF0BB140000 PUSH1 0x12 PUSH2 0x1CEA DUP9 DUP9 DUP5 DUP10 DUP10 DUP7 DUP11 DUP11 PUSH2 0x1332 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x132C DUP3 PUSH2 0x37FA JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xE SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1D17 DUP2 PUSH2 0x2441 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D21 PUSH2 0x1E44 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1D3F JUMPI PUSH2 0x1BFE DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x1D38 JUMPI INVALID JUMPDEST PUSH1 0x52 PUSH2 0x250A JUMP JUMPDEST PUSH2 0x1C0F DUP5 PUSH2 0x2E64 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x12BD JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1292 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x12BD JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1DB1 DUP5 PUSH2 0x383A JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1DC4 JUMPI INVALID JUMPDEST EQ PUSH2 0x1E00 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x37 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5CB7 PUSH1 0x37 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1E13 DUP2 PUSH2 0x2441 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E1D PUSH2 0x1E44 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1E3B JUMPI PUSH2 0x1BFE DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x1E34 JUMPI INVALID JUMPDEST PUSH1 0x33 PUSH2 0x250A JUMP JUMPDEST PUSH2 0x1C0F DUP5 PUSH2 0x38EE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1E4F PUSH2 0x2AA1 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0xB SLOAD EQ ISZERO PUSH2 0x1E65 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x1706 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E6F PUSH2 0x36C1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x6 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 PUSH4 0x15F24053 DUP4 PUSH1 0xD SLOAD PUSH2 0x1EB4 PUSH1 0xE SLOAD PUSH2 0x1EAF PUSH1 0xF SLOAD PUSH1 0x10 SLOAD PUSH2 0x396F JUMP JUMPDEST PUSH2 0x396F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1EF6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1F0A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1F20 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH6 0x48C27395000 DUP2 GT ISZERO PUSH2 0x1F7F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x626F72726F772072617465206973206162737572646C79206869676800000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1F8E DUP6 PUSH1 0xB SLOAD PUSH2 0x39A5 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1FA1 JUMPI INVALID JUMPDEST EQ PUSH2 0x1FF3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x636F756C64206E6F742063616C63756C61746520626C6F636B2064656C746100 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1FFF DUP6 DUP6 DUP6 DUP5 PUSH2 0x39C8 JUMP JUMPDEST SWAP6 POP POP POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2015 DUP2 PUSH2 0x2441 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x201F PUSH2 0x1E44 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x203D JUMPI PUSH2 0x1BFE DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x2036 JUMPI INVALID JUMPDEST PUSH1 0x37 PUSH2 0x250A JUMP JUMPDEST PUSH2 0x1C0F DUP5 PUSH2 0x3BE0 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2052 DUP2 PUSH2 0x2441 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2060 CALLER CALLER DUP8 DUP8 PUSH2 0x3265 JUMP JUMPDEST EQ SWAP2 POP PUSH2 0x206C DUP2 PUSH2 0x28F2 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xC SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2086 DUP4 CALLVALUE DUP5 PUSH2 0x3CC8 JUMP JUMPDEST POP SWAP1 POP PUSH2 0x1914 DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x16 DUP2 MSTORE PUSH1 0x20 ADD PUSH22 0x1B1A5C5D5A59185D19509BDC9C9BDDC819985A5B1959 PUSH1 0x52 SHL DUP2 MSTORE POP PUSH2 0xFD4 JUMP JUMPDEST PUSH1 0x1 DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xB8168816 PUSH2 0x20E2 PUSH2 0x36C1 JUMP JUMPDEST PUSH1 0xD SLOAD PUSH2 0x20F9 PUSH1 0xE SLOAD PUSH2 0x1EAF PUSH1 0xF SLOAD PUSH1 0x10 SLOAD PUSH2 0x396F JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x9 SLOAD PUSH1 0xA SLOAD ADD ADD PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x214D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2161 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2177 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH2 0x218B DUP2 PUSH2 0x2441 JUMP JUMPDEST PUSH2 0x2197 CALLER DUP7 DUP7 DUP7 PUSH2 0x3DB4 JUMP JUMPDEST SWAP2 POP PUSH2 0x1940 DUP2 PUSH2 0x28F2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x21AE DUP2 PUSH2 0x2441 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x21B8 PUSH2 0x1E44 JUMP JUMPDEST EQ PUSH2 0x2203 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x1858D8DC9D59481A5B9D195C995CDD0819985A5B1959 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x220B PUSH2 0x16A6 JUMP JUMPDEST SWAP2 POP PUSH2 0x1CCB DUP2 PUSH2 0x28F2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP2 SWAP1 DUP2 SWAP1 DUP2 SWAP1 DUP2 DUP1 DUP1 PUSH2 0x2241 DUP10 PUSH2 0x383A JUMP JUMPDEST SWAP4 POP SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2253 JUMPI INVALID JUMPDEST EQ PUSH2 0x2271 JUMPI PUSH1 0x9 JUMPDEST SWAP8 POP PUSH1 0x0 SWAP7 POP DUP7 SWAP6 POP DUP6 SWAP5 POP PUSH2 0x22A4 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x2279 PUSH2 0x2F89 JUMP JUMPDEST SWAP3 POP SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x228B JUMPI INVALID JUMPDEST EQ PUSH2 0x2297 JUMPI PUSH1 0x9 PUSH2 0x225B JUMP JUMPDEST POP PUSH1 0x0 SWAP7 POP SWAP2 SWAP5 POP SWAP3 POP SWAP1 POP JUMPDEST SWAP2 SWAP4 POP SWAP2 SWAP4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x132C DUP3 PUSH2 0x418E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x132C DUP3 PUSH2 0x41CC JUMP JUMPDEST PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x10 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2304 DUP3 CALLVALUE PUSH2 0x4205 JUMP JUMPDEST POP SWAP1 POP PUSH2 0x1236 DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x18 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x7265706179426F72726F77426568616C66206661696C65640000000000000000 DUP2 MSTORE POP PUSH2 0xFD4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2351 PUSH2 0x1E44 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x2377 JUMPI PUSH2 0x236F DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x2368 JUMPI INVALID JUMPDEST PUSH1 0x4B PUSH2 0x250A JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1A69 JUMP JUMPDEST PUSH2 0x1E00 DUP4 PUSH2 0x2AA5 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x15F24053 PUSH2 0x23AB PUSH2 0x36C1 JUMP JUMPDEST PUSH1 0xD SLOAD PUSH2 0x23C2 PUSH1 0xE SLOAD PUSH2 0x1EAF PUSH1 0xF SLOAD PUSH1 0x10 SLOAD PUSH2 0x396F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x214D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2410 DUP2 PUSH2 0x2441 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x241A PUSH2 0x1E44 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x2438 JUMPI PUSH2 0x1BFE DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x2431 JUMPI INVALID JUMPDEST PUSH1 0x59 PUSH2 0x250A JUMP JUMPDEST PUSH2 0x1C0F DUP5 PUSH2 0x2DAB JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0xB0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x248C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xA PUSH1 0x24 DUP3 ADD MSTORE PUSH10 0x1C994B595B9D195C9959 PUSH1 0xB2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x24FA JUMPI PUSH1 0x5 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 PUSH4 0xC90C20B1 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x24E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x24F5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF PUSH1 0xB0 SHL NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH32 0x45B96FE442630264581B197E84BBADA861235052C5A1AADFFF9EA4E40A969AA0 DUP4 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x2539 JUMPI INVALID JUMPDEST DUP4 PUSH1 0x63 DUP2 GT ISZERO PUSH2 0x2545 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 DUP3 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x1E00 JUMPI INVALID JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x4EF4C3E1 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 DUP5 SWAP4 SWAP2 AND SWAP2 PUSH4 0x4EF4C3E1 SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x25D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x25E5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x25FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x261F JUMPI PUSH2 0x2612 PUSH1 0x3 PUSH1 0x21 DUP4 PUSH2 0x426A JUMP JUMPDEST SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH2 0x28EB SWAP1 POP JUMP JUMPDEST PUSH2 0x2627 PUSH2 0x2AA1 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x263B JUMPI PUSH2 0x2612 PUSH1 0xA PUSH1 0x24 PUSH2 0x250A JUMP JUMPDEST PUSH2 0x2643 PUSH2 0x5B2D JUMP JUMPDEST PUSH2 0x264B PUSH2 0x2F89 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2662 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x266D JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2684 JUMPI INVALID JUMPDEST EQ PUSH2 0x26B3 JUMPI PUSH2 0x26A5 PUSH1 0x9 PUSH1 0x23 DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x26A0 JUMPI INVALID JUMPDEST PUSH2 0x426A JUMP JUMPDEST SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x28EB SWAP2 POP POP JUMP JUMPDEST PUSH2 0x26BD DUP7 DUP7 PUSH2 0x42F3 JUMP JUMPDEST PUSH1 0xC0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD DUP3 MSTORE SWAP1 DUP4 ADD MLOAD DUP2 MSTORE PUSH2 0x26DE SWAP2 SWAP1 PUSH2 0x4389 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x26F5 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2700 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2717 JUMPI INVALID JUMPDEST EQ PUSH2 0x2769 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D494E545F45584348414E47455F43414C43554C4154494F4E5F4641494C4544 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x2779 PUSH1 0x11 SLOAD DUP3 PUSH1 0x60 ADD MLOAD PUSH2 0x396F JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x27A6 SWAP2 SWAP1 PUSH2 0x396F JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MLOAD PUSH1 0x11 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0xC0 DUP5 ADD MLOAD PUSH1 0x60 DUP1 DUP7 ADD MLOAD DUP4 MLOAD SWAP5 DUP6 MSTORE SWAP5 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE MLOAD PUSH32 0x4C209B5FC8AD50758F13E2E1088BA56A560DFF690A1C6FEF26394F4C03821C4F SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 ADDRESS SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5D51 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 PUSH1 0x5 SLOAD PUSH1 0xC0 DUP3 ADD MLOAD PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x41C728B9 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x64 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x41C728B9 SWAP2 PUSH1 0x84 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x28BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x28D2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x0 SWAP3 POP PUSH2 0x28DF SWAP2 POP POP JUMP JUMPDEST DUP2 PUSH1 0xC0 ADD MLOAD SWAP4 POP SWAP4 POP POP POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF PUSH1 0xB0 SHL NOT AND PUSH1 0x1 PUSH1 0xB0 SHL OR SWAP1 SSTORE DUP1 PUSH2 0x161B JUMPI PUSH1 0x5 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 PUSH4 0x632E5142 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x295A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1232 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH3 0x7E3DD2 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 0x29C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x29D5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x29EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x2A3E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6D61726B6572206D6574686F642072657475726E65642066616C736500000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP3 DUP5 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD PUSH32 0x7AC369DBD14FA5EA3F473ED67CC9D598964A77501540BA6751EB0B3DECF5870D SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x0 PUSH2 0x1E00 JUMP JUMPDEST NUMBER SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2AB0 PUSH2 0x34F3 JUMP JUMPDEST PUSH2 0x2AC0 JUMPI PUSH2 0x236F PUSH1 0x1 PUSH1 0x4D PUSH2 0x250A JUMP JUMPDEST PUSH2 0x2AC8 PUSH2 0x2AA1 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x2ADC JUMPI PUSH2 0x236F PUSH1 0xA PUSH1 0x4C PUSH2 0x250A JUMP JUMPDEST PUSH1 0x6 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x2191F92A 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 0x2B2D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2B41 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2B57 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x2BAA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6D61726B6572206D6574686F642072657475726E65642066616C736500000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP3 DUP5 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD PUSH32 0xEDFFC32E068C7C95DFD4BDFD5C4D939A084D6B11C4199EAC8436ED234D72F926 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0x2CDC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x6CC1140B PUSH1 0xE1 SHL OR DUP2 MSTORE SWAP2 MLOAD DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP4 DUP3 SWAP2 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x2C71 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x2C52 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2CD3 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 0x2CD8 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP POP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x742A137B PUSH1 0xE1 SHL OR DUP2 MSTORE SWAP2 MLOAD DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP4 DUP3 SWAP2 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x2D38 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x2D19 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2D9A 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 0x2D9F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP PUSH1 0x0 SWAP2 POP PUSH2 0x1E00 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2DB5 PUSH2 0x34F3 JUMP JUMPDEST PUSH2 0x2DCC JUMPI PUSH2 0x2DC5 PUSH1 0x1 PUSH1 0x5A PUSH2 0x250A JUMP JUMPDEST SWAP1 POP PUSH2 0x1A69 JUMP JUMPDEST PUSH2 0x2DD4 PUSH2 0x2AA1 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x2DE8 JUMPI PUSH2 0x2DC5 PUSH1 0xA PUSH1 0x5B PUSH2 0x250A JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH2 0x2E08 PUSH2 0x2E00 DUP5 PUSH1 0x8 SLOAD PUSH2 0x396F JUMP JUMPDEST PUSH1 0x9 SLOAD PUSH2 0x396F JUMP JUMPDEST GT ISZERO PUSH2 0x2E1A JUMPI PUSH2 0x2DC5 PUSH1 0x2 PUSH1 0x5C PUSH2 0x250A JUMP JUMPDEST PUSH1 0xA DUP1 SLOAD SWAP1 DUP4 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP6 SWAP1 MSTORE DUP2 MLOAD PUSH32 0xAAA68312E2EA9D50E16AF5068410AB56E1A1FD06037B1A35664812C30F821460 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x0 PUSH2 0x1E00 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2E6E PUSH2 0x2AA1 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x2E82 JUMPI PUSH2 0x2DC5 PUSH1 0xA PUSH1 0x54 PUSH2 0x250A JUMP JUMPDEST PUSH1 0x0 NOT DUP3 EQ ISZERO PUSH2 0x2E92 JUMPI PUSH1 0x8 SLOAD SWAP2 POP JUMPDEST PUSH1 0x0 PUSH2 0x2E9C PUSH2 0x43A0 JUMP JUMPDEST SWAP1 POP PUSH8 0xDE0B6B3A7640000 PUSH2 0x2EBC PUSH2 0x2EB6 PUSH1 0xA SLOAD DUP7 PUSH2 0x396F JUMP JUMPDEST DUP4 PUSH2 0x396F JUMP JUMPDEST GT ISZERO PUSH2 0x2ECE JUMPI PUSH2 0x236F PUSH1 0x2 PUSH1 0x55 PUSH2 0x250A JUMP JUMPDEST DUP3 PUSH1 0x8 SLOAD EQ PUSH2 0x2F34 JUMPI PUSH2 0x2EDF PUSH2 0x34F3 JUMP JUMPDEST PUSH2 0x2EEF JUMPI PUSH2 0x236F PUSH1 0x1 PUSH1 0x53 PUSH2 0x250A JUMP JUMPDEST PUSH1 0x8 DUP1 SLOAD SWAP1 DUP5 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP7 SWAP1 MSTORE DUP2 MLOAD PUSH32 0xCDD0B588250E1398549F79CFDB8217C186688822905D6715B0834EA1C865594A SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMPDEST DUP1 PUSH1 0x9 SLOAD EQ PUSH2 0x2F82 JUMPI PUSH1 0x9 DUP1 SLOAD SWAP1 DUP3 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP2 MLOAD PUSH32 0x92EEF861B6533B7D3417F39C2AD7B460EED4E88A32FA3604F30E718B7602E7DC SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMPDEST PUSH1 0x0 PUSH2 0x1E00 JUMP JUMPDEST PUSH1 0x11 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP1 PUSH2 0x2FA4 JUMPI POP POP PUSH1 0x7 SLOAD PUSH1 0x0 SWAP2 POP PUSH2 0x3045 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2FAE PUSH2 0x36C1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2FBA PUSH2 0x5B1A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2FDC DUP5 PUSH1 0xD SLOAD PUSH2 0x2FD7 PUSH1 0xE SLOAD PUSH2 0x1EAF PUSH1 0xF SLOAD PUSH1 0x10 SLOAD PUSH2 0x396F JUMP JUMPDEST PUSH2 0x43EF JUMP JUMPDEST SWAP4 POP SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2FEE JUMPI INVALID JUMPDEST EQ PUSH2 0x3003 JUMPI SWAP6 POP PUSH1 0x0 SWAP5 POP PUSH2 0x3045 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x300D DUP4 DUP7 PUSH2 0x443C JUMP JUMPDEST SWAP3 POP SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x301F JUMPI INVALID JUMPDEST EQ PUSH2 0x3034 JUMPI SWAP6 POP PUSH1 0x0 SWAP5 POP PUSH2 0x3045 SWAP4 POP POP POP POP JUMP JUMPDEST POP MLOAD PUSH1 0x0 SWAP6 POP SWAP4 POP PUSH2 0x3045 SWAP3 POP POP POP JUMP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x3047351 PUSH1 0xE6 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP2 DUP6 AND PUSH1 0x24 DUP4 ADD MSTORE DUP4 ISZERO ISZERO PUSH1 0x44 DUP4 ADD MSTORE MLOAD PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 SWAP2 PUSH4 0xC11CD440 SWAP2 PUSH1 0x64 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x30B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x30CA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x30E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x311B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x5 PUSH1 0x24 DUP3 ADD MSTORE PUSH5 0x85A5B5C1B PUSH1 0xDA SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 ISZERO PUSH2 0x3129 JUMPI PUSH2 0x3129 PUSH2 0x44EC JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND OR DUP4 SSTORE PUSH1 0x40 MLOAD PUSH1 0x20 PUSH1 0x24 DUP3 ADD DUP2 DUP2 MSTORE DUP7 MLOAD PUSH1 0x44 DUP5 ADD MSTORE DUP7 MLOAD SWAP4 SWAP1 SWAP5 AND SWAP5 PUSH2 0x3216 SWAP5 ADDRESS SWAP5 DUP9 SWAP5 SWAP2 SWAP4 DUP5 SWAP4 PUSH1 0x64 SWAP1 SWAP4 ADD SWAP3 SWAP1 DUP7 ADD SWAP2 SWAP1 DUP2 SWAP1 DUP5 SWAP1 DUP5 SWAP1 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3196 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x317E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x31C3 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xADCCEE5 PUSH1 0xE3 SHL OR SWAP1 MSTORE DUP2 MLOAD DUP1 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x7 DUP3 MSTORE PUSH7 0x216265636F6D65 PUSH1 0xC8 SHL SWAP1 DUP3 ADD MSTORE SWAP1 SWAP4 POP SWAP2 POP PUSH2 0x44F1 SWAP1 POP JUMP JUMPDEST POP PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND DUP3 MSTORE SWAP1 SWAP3 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD PUSH32 0xD604DE94D45953F9138079EC1B82D533CB2160C906D1076D1F7ED54BEFBCA97A SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x17B9B84B PUSH1 0xE3 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP6 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 AND SWAP2 PUSH4 0xBDCDC258 SWAP2 PUSH1 0x84 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x32CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x32DE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x32F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x3313 JUMPI PUSH2 0x330B PUSH1 0x3 PUSH1 0x5D DUP4 PUSH2 0x426A JUMP JUMPDEST SWAP2 POP POP PUSH2 0x34EB JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x3339 JUMPI PUSH2 0x330B PUSH1 0x2 PUSH1 0x5E PUSH2 0x250A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND SWAP1 DUP8 AND EQ ISZERO PUSH2 0x3358 JUMPI POP PUSH1 0x0 NOT PUSH2 0x3380 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP11 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x3390 DUP6 DUP10 PUSH2 0x39A5 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP PUSH1 0x0 DUP5 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x33A3 JUMPI INVALID JUMPDEST EQ PUSH2 0x33C1 JUMPI PUSH2 0x33B4 PUSH1 0x9 PUSH1 0x5E PUSH2 0x250A JUMP JUMPDEST SWAP7 POP POP POP POP POP POP POP PUSH2 0x34EB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x33E4 SWAP1 DUP10 PUSH2 0x39A5 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP2 POP PUSH1 0x0 DUP5 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x33F7 JUMPI INVALID JUMPDEST EQ PUSH2 0x3408 JUMPI PUSH2 0x33B4 PUSH1 0x9 PUSH1 0x5F PUSH2 0x250A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x342B SWAP1 DUP10 PUSH2 0x4602 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP1 POP PUSH1 0x0 DUP5 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x343E JUMPI INVALID JUMPDEST EQ PUSH2 0x344F JUMPI PUSH2 0x33B4 PUSH1 0x9 PUSH1 0x60 PUSH2 0x250A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP6 SWAP1 SSTORE SWAP2 DUP12 AND DUP2 MSTORE KECCAK256 DUP2 SWAP1 SSTORE PUSH1 0x0 NOT DUP6 EQ PUSH2 0x34A7 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP16 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP4 SWAP1 SSTORE JUMPDEST DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5D51 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP11 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x0 SWAP7 POP POP POP POP POP POP POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x3E14691 PUSH1 0xE6 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 DUP3 SWAP2 PUSH4 0xF851A440 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x353B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x354F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3565 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ DUP1 ISZERO PUSH2 0x35DF JUMPI POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA755EC2 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 0x35B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x35C6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x35DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST DUP1 PUSH2 0x1702 JUMPI POP CALLER PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 EQ DUP1 ISZERO PUSH2 0x1702 JUMPI POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x2F1069BA 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 0x363C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3650 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3666 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x367B PUSH2 0x5B1A JUMP JUMPDEST PUSH2 0x3685 DUP7 DUP7 PUSH2 0x4628 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3698 JUMPI INVALID JUMPDEST EQ PUSH2 0x36A9 JUMPI POP SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH2 0x28EB JUMP JUMPDEST PUSH1 0x0 PUSH2 0x36B4 DUP3 PUSH2 0x4690 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x36D0 SELFBALANCE CALLVALUE PUSH2 0x39A5 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x36E3 JUMPI INVALID JUMPDEST EQ PUSH2 0x1702 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x36FB DUP2 PUSH2 0x2441 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3705 PUSH2 0x1E44 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x3723 JUMPI PUSH2 0xFA8 DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x371C JUMPI INVALID JUMPDEST PUSH1 0x41 PUSH2 0x250A JUMP JUMPDEST PUSH2 0xFBF CALLER CALLER DUP8 PUSH2 0x469F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3739 PUSH2 0x34F3 JUMP JUMPDEST PUSH2 0x3749 JUMPI PUSH2 0x236F PUSH1 0x1 PUSH1 0x3C PUSH2 0x250A JUMP JUMPDEST PUSH2 0x3751 PUSH2 0x2AA1 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x3765 JUMPI PUSH2 0x236F PUSH1 0xA PUSH1 0x3E PUSH2 0x250A JUMP JUMPDEST DUP3 PUSH2 0x376E PUSH2 0x36C1 JUMP JUMPDEST LT ISZERO PUSH2 0x3780 JUMPI PUSH2 0x236F PUSH1 0xE PUSH1 0x3D PUSH2 0x250A JUMP JUMPDEST PUSH1 0xE SLOAD DUP4 GT ISZERO PUSH2 0x3796 JUMPI PUSH2 0x236F PUSH1 0x2 PUSH1 0x3F PUSH2 0x250A JUMP JUMPDEST PUSH2 0x37A2 PUSH1 0xE SLOAD DUP5 PUSH2 0x49ED JUMP JUMPDEST PUSH1 0xE DUP2 SWAP1 SSTORE SWAP1 POP PUSH2 0x37B3 CALLER DUP5 PUSH2 0x4A27 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP6 SWAP1 MSTORE DUP1 DUP3 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD PUSH32 0x3BAD0C59CF2F06E7314077049F48A93578CD16F5EF92329F1DAB1420A99C177E SWAP2 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 PUSH1 0x0 PUSH2 0x1E00 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3806 DUP2 PUSH2 0x2441 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3810 PUSH2 0x1E44 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x382E JUMPI PUSH2 0x1BFE DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x3827 JUMPI INVALID JUMPDEST PUSH1 0x2A PUSH2 0x250A JUMP JUMPDEST PUSH2 0x1C0F CALLER PUSH1 0x0 DUP7 PUSH2 0x4A5D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 PUSH2 0x3871 JUMPI POP PUSH1 0x0 SWAP5 POP DUP5 SWAP4 POP PUSH2 0x38E9 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x3881 DUP2 PUSH1 0x0 ADD SLOAD PUSH1 0xC SLOAD PUSH2 0x4F2D JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP PUSH1 0x0 DUP5 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3894 JUMPI INVALID JUMPDEST EQ PUSH2 0x38A9 JUMPI POP SWAP2 SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x38E9 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x38B7 DUP4 DUP3 PUSH1 0x1 ADD SLOAD PUSH2 0x4F6C JUMP JUMPDEST SWAP1 SWAP5 POP SWAP2 POP PUSH1 0x0 DUP5 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x38CA JUMPI INVALID JUMPDEST EQ PUSH2 0x38DF JUMPI POP SWAP2 SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x38E9 SWAP2 POP POP JUMP JUMPDEST POP PUSH1 0x0 SWAP5 POP SWAP3 POP POP POP JUMPDEST SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x38F9 PUSH2 0x2AA1 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x390D JUMPI PUSH2 0x236F PUSH1 0xA PUSH1 0x35 PUSH2 0x250A JUMP JUMPDEST DUP3 PUSH2 0x3916 PUSH2 0x36C1 JUMP JUMPDEST LT ISZERO PUSH2 0x3928 JUMPI PUSH2 0x236F PUSH1 0xE PUSH1 0x34 PUSH2 0x250A JUMP JUMPDEST PUSH1 0x10 SLOAD DUP4 GT ISZERO PUSH2 0x393E JUMPI PUSH2 0x236F PUSH1 0x2 PUSH1 0x36 PUSH2 0x250A JUMP JUMPDEST PUSH2 0x394A PUSH1 0x10 SLOAD DUP5 PUSH2 0x49ED JUMP JUMPDEST PUSH1 0x10 DUP2 SWAP1 SSTORE SWAP1 POP PUSH2 0x2F82 PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 DUP5 PUSH2 0x4A27 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E00 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x11 DUP2 MSTORE PUSH1 0x20 ADD PUSH17 0x6164646974696F6E206F766572666C6F77 PUSH1 0x78 SHL DUP2 MSTORE POP PUSH2 0x4F97 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 DUP4 GT PUSH2 0x39BC JUMPI POP PUSH1 0x0 SWAP1 POP DUP2 DUP4 SUB PUSH2 0x28EB JUMP JUMPDEST POP PUSH1 0x3 SWAP1 POP PUSH1 0x0 PUSH2 0x28EB JUMP JUMPDEST PUSH1 0x0 PUSH2 0x39D2 PUSH2 0x5B1A JUMP JUMPDEST PUSH2 0x39EA PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP7 DUP2 MSTORE POP DUP5 PUSH2 0x4FF5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x39FA DUP3 PUSH1 0xD SLOAD PUSH2 0x501F JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3A0A DUP3 PUSH1 0xD SLOAD PUSH2 0x396F JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3A2B PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xA SLOAD DUP2 MSTORE POP DUP5 PUSH1 0xE SLOAD PUSH2 0x503E JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3A4C PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x9 SLOAD DUP2 MSTORE POP DUP6 PUSH1 0x10 SLOAD PUSH2 0x503E JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3A6D PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x8 SLOAD DUP2 MSTORE POP DUP7 PUSH1 0xF SLOAD PUSH2 0x503E JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3A80 DUP8 PUSH1 0xC SLOAD PUSH1 0xC SLOAD PUSH2 0x503E JUMP JUMPDEST PUSH1 0xB DUP14 SWAP1 SSTORE PUSH1 0xC DUP2 SWAP1 SSTORE PUSH1 0xD DUP7 SWAP1 SSTORE PUSH1 0xE DUP6 SWAP1 SSTORE PUSH1 0x10 DUP5 SWAP1 SSTORE PUSH1 0xF DUP4 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP14 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP10 SWAP1 MSTORE DUP1 DUP3 ADD DUP4 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP9 SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH32 0x4DEC04E750CA11537CABCD8A9EAB06494DE08DA3735BC8871CD41250E190BC04 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG1 PUSH1 0x6 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x24 DUP1 DUP3 ADD DUP15 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x5EFD0233 PUSH1 0xE1 SHL OR DUP2 MSTORE SWAP2 MLOAD DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP5 AND SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x3B5D JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x3B3E JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3BBF 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 0x3BC4 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP PUSH1 0x0 SWAP2 POP PUSH2 0x3BD0 SWAP1 POP JUMP JUMPDEST SWAP13 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3BEB PUSH2 0x2AA1 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x3BFF JUMPI PUSH2 0x236F PUSH1 0xA PUSH1 0x39 PUSH2 0x250A JUMP JUMPDEST DUP3 PUSH2 0x3C08 PUSH2 0x36C1 JUMP JUMPDEST LT ISZERO PUSH2 0x3C1A JUMPI PUSH2 0x236F PUSH1 0xE PUSH1 0x38 PUSH2 0x250A JUMP JUMPDEST PUSH1 0xF SLOAD DUP4 GT ISZERO PUSH2 0x3C30 JUMPI PUSH2 0x236F PUSH1 0x2 PUSH1 0x3A PUSH2 0x250A JUMP JUMPDEST PUSH2 0x3C3C PUSH1 0xF SLOAD DUP5 PUSH2 0x49ED JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0xF DUP2 SWAP1 SSTORE POP PUSH2 0x2F82 PUSH1 0x5 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 PUSH4 0xF851A440 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 0x3C96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3CAA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3CC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP5 PUSH2 0x4A27 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x3CD6 DUP2 PUSH2 0x2441 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3CE0 PUSH2 0x1E44 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x3D0B JUMPI PUSH2 0x3CFE DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x3CF7 JUMPI INVALID JUMPDEST PUSH1 0x11 PUSH2 0x250A JUMP JUMPDEST SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x3DA2 SWAP1 POP JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA6AFED95 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3D46 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3D5A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3D70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x3D90 JUMPI PUSH2 0x3CFE DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x3D89 JUMPI INVALID JUMPDEST PUSH1 0x12 PUSH2 0x250A JUMP JUMPDEST PUSH2 0x3D9C CALLER DUP9 DUP9 DUP9 PUSH2 0x5066 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP JUMPDEST PUSH2 0x3DAB DUP2 PUSH2 0x28F2 JUMP JUMPDEST POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xD02F7351 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP7 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE DUP6 DUP2 AND PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x84 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 AND SWAP2 PUSH4 0xD02F7351 SWAP2 PUSH1 0xA4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3E21 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3E35 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3E4B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x3E62 JUMPI PUSH2 0x330B PUSH1 0x3 PUSH1 0x1D DUP4 PUSH2 0x426A JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x3E88 JUMPI PUSH2 0x330B PUSH1 0x6 PUSH1 0x1E PUSH2 0x250A JUMP JUMPDEST PUSH2 0x3E90 PUSH2 0x5B6B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x3EB3 SWAP1 DUP6 PUSH2 0x39A5 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3EC7 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3ED2 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3EE6 JUMPI INVALID JUMPDEST EQ PUSH2 0x3F0B JUMPI PUSH2 0x3F02 PUSH1 0x9 PUSH1 0x1C DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x26A0 JUMPI INVALID JUMPDEST SWAP3 POP POP POP PUSH2 0x34EB JUMP JUMPDEST PUSH2 0x3F2A DUP5 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH7 0x6379DA05B60000 DUP2 MSTORE POP PUSH2 0x5558 JUMP JUMPDEST PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x3F3C SWAP1 DUP6 SWAP1 PUSH2 0x49ED JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x3F49 PUSH2 0x2F89 JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3F5D JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3F68 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3F7C JUMPI INVALID JUMPDEST EQ PUSH2 0x3FCE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x65786368616E67652072617465206D617468206572726F720000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x3FEE PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP4 PUSH1 0xC0 ADD MLOAD DUP2 MSTORE POP DUP3 PUSH1 0x80 ADD MLOAD PUSH2 0x501F JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xE SLOAD PUSH2 0x4001 SWAP2 PUSH2 0x396F JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD MSTORE PUSH1 0x11 SLOAD PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x4018 SWAP2 SWAP1 PUSH2 0x49ED JUMP JUMPDEST PUSH2 0x100 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x4046 SWAP2 SWAP1 PUSH2 0x4602 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x405A JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4065 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4079 JUMPI INVALID JUMPDEST EQ PUSH2 0x4095 JUMPI PUSH2 0x3F02 PUSH1 0x9 PUSH1 0x1B DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x26A0 JUMPI INVALID JUMPDEST PUSH1 0xE0 DUP2 ADD MLOAD PUSH1 0xE SSTORE PUSH2 0x100 DUP2 ADD MLOAD PUSH1 0x11 SSTORE PUSH1 0x20 DUP1 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x12 DUP6 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 DUP7 ADD MLOAD SWAP3 DUP12 AND DUP1 DUP3 MSTORE SWAP1 DUP5 SWAP1 KECCAK256 SWAP3 SWAP1 SWAP3 SSTORE PUSH1 0x60 DUP6 ADD MLOAD DUP4 MLOAD SWAP1 DUP2 MSTORE SWAP3 MLOAD SWAP2 SWAP4 SWAP1 SWAP3 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5D51 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD ADDRESS SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5D51 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0xE0 DUP3 ADD MLOAD PUSH1 0x40 DUP1 MLOAD ADDRESS DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP3 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE MLOAD PUSH32 0xA91E67C5EA634CD43A12C5A482724B03DE01E85CA68702A53D0C2F45CB7C1DC5 SWAP2 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 PUSH1 0x0 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x419A DUP2 PUSH2 0x2441 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x41A4 PUSH2 0x1E44 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x41C2 JUMPI PUSH2 0x1BFE DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x41BB JUMPI INVALID JUMPDEST PUSH1 0xA PUSH2 0x250A JUMP JUMPDEST PUSH2 0x1C0F CALLER DUP6 PUSH2 0x5580 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x41D8 DUP2 PUSH2 0x2441 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x41E2 PUSH2 0x1E44 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x41F9 JUMPI PUSH2 0x1BFE DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x3827 JUMPI INVALID JUMPDEST PUSH2 0x1C0F CALLER DUP6 PUSH1 0x0 PUSH2 0x4A5D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x4213 DUP2 PUSH2 0x2441 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x421D PUSH2 0x1E44 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x4248 JUMPI PUSH2 0x423B DUP2 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x4234 JUMPI INVALID JUMPDEST PUSH1 0x40 PUSH2 0x250A JUMP JUMPDEST SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x4259 SWAP1 POP JUMP JUMPDEST PUSH2 0x4253 CALLER DUP8 DUP8 PUSH2 0x469F JUMP JUMPDEST SWAP4 POP SWAP4 POP POP JUMPDEST PUSH2 0x4262 DUP2 PUSH2 0x28F2 JUMP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x45B96FE442630264581B197E84BBADA861235052C5A1AADFFF9EA4E40A969AA0 DUP5 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x4299 JUMPI INVALID JUMPDEST DUP5 PUSH1 0x63 DUP2 GT ISZERO PUSH2 0x42A5 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 DUP2 ADD DUP6 SWAP1 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 PUSH1 0x3 DUP5 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x42D2 JUMPI INVALID JUMPDEST EQ PUSH2 0x42E8 JUMPI DUP4 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x42E3 JUMPI INVALID JUMPDEST PUSH2 0x34EB JUMP JUMPDEST POP PUSH2 0x3E8 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EQ PUSH2 0x4344 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0xE6CADCC8CAE440DAD2E6DAC2E8C6D PUSH1 0x8B SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 CALLVALUE EQ PUSH2 0x169A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0xECC2D8EACA40DAD2E6DAC2E8C6D PUSH1 0x93 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x4396 PUSH2 0x5B1A JUMP JUMPDEST PUSH2 0x3685 DUP7 DUP7 PUSH2 0x58C6 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xDD86FEA1 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 0x214D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x43FF DUP8 DUP8 PUSH2 0x4602 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4412 JUMPI INVALID JUMPDEST EQ PUSH2 0x4423 JUMPI POP SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH2 0x4434 JUMP JUMPDEST PUSH2 0x442D DUP2 DUP7 PUSH2 0x39A5 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4446 PUSH2 0x5B1A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x445B DUP7 PUSH8 0xDE0B6B3A7640000 PUSH2 0x4F2D JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x446E JUMPI INVALID JUMPDEST EQ PUSH2 0x448D JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x28EB JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x449A DUP4 DUP9 PUSH2 0x4F6C JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x44AD JUMPI INVALID JUMPDEST EQ PUSH2 0x44CF JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 SWAP5 POP SWAP3 POP PUSH2 0x28EB SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP9 SWAP1 SWAP8 POP SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1918 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x60 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x4531 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x4512 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x4593 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 0x4598 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x45F9 JUMPI DUP1 MLOAD ISZERO PUSH2 0x45B2 JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP7 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP7 MLOAD DUP8 SWAP4 SWAP2 SWAP3 DUP4 SWAP3 PUSH1 0x44 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x11F7 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x11DF JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 DUP4 ADD DUP5 DUP2 LT PUSH2 0x461A JUMPI PUSH1 0x0 SWAP3 POP SWAP1 POP PUSH2 0x28EB JUMP JUMPDEST POP PUSH1 0x2 SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH2 0x28EB JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4632 PUSH2 0x5B1A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x4643 DUP7 PUSH1 0x0 ADD MLOAD DUP7 PUSH2 0x4F2D JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4656 JUMPI INVALID JUMPDEST EQ PUSH2 0x4675 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x28EB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST MLOAD PUSH8 0xDE0B6B3A7640000 SWAP1 DIV SWAP1 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x12004531 PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP6 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 DUP5 SWAP4 SWAP2 AND SWAP2 PUSH4 0x24008A62 SWAP2 PUSH1 0x84 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4708 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x471C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4732 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x4756 JUMPI PUSH2 0x4749 PUSH1 0x3 PUSH1 0x43 DUP4 PUSH2 0x426A JUMP JUMPDEST SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH2 0x4434 SWAP1 POP JUMP JUMPDEST PUSH2 0x475E PUSH2 0x2AA1 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x4772 JUMPI PUSH2 0x4749 PUSH1 0xA PUSH1 0x44 PUSH2 0x250A JUMP JUMPDEST PUSH2 0x477A PUSH2 0x5BB8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x47A4 DUP7 PUSH2 0x383A JUMP JUMPDEST PUSH1 0x80 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x47BB JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x47C6 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x47DD JUMPI INVALID JUMPDEST EQ PUSH2 0x4807 JUMPI PUSH2 0x47F9 PUSH1 0x9 PUSH1 0x42 DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x26A0 JUMPI INVALID JUMPDEST SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x4434 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 NOT DUP6 EQ ISZERO PUSH2 0x4820 JUMPI PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x4828 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD DUP6 SWAP1 MSTORE JUMPDEST PUSH2 0x4836 DUP8 DUP3 PUSH1 0x40 ADD MLOAD PUSH2 0x42F3 JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x484B SWAP2 PUSH2 0x39A5 JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4862 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x486D JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4884 JUMPI INVALID JUMPDEST EQ PUSH2 0x48C0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5CEE PUSH1 0x3A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x48D0 PUSH1 0xD SLOAD DUP3 PUSH1 0xE0 ADD MLOAD PUSH2 0x39A5 JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x48E7 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x48F2 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4909 JUMPI INVALID JUMPDEST EQ PUSH2 0x4945 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5D71 PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xA0 DUP1 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP11 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 DUP6 SSTORE PUSH1 0xC SLOAD PUSH1 0x1 SWAP1 SWAP6 ADD SWAP5 SWAP1 SWAP5 SSTORE PUSH1 0xC0 DUP8 ADD MLOAD PUSH1 0xD DUP2 SWAP1 SSTORE PUSH1 0xE0 DUP9 ADD MLOAD SWAP6 MLOAD DUP3 MLOAD SWAP5 DUP16 AND DUP6 MSTORE SWAP5 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP2 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x60 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x80 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 MLOAD PUSH32 0x1A2A22CB034D26D1854BDC6666A5B91FE25EFBBB5DCAD3B0355478D6F5C362A1 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0xE0 ADD MLOAD PUSH1 0x0 SWAP8 SWAP1 SWAP7 POP SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E00 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x15 DUP2 MSTORE PUSH1 0x20 ADD PUSH21 0x7375627472616374696F6E20756E646572666C6F77 PUSH1 0x58 SHL DUP2 MSTORE POP PUSH2 0x5925 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP3 ISZERO PUSH2 0x8FC MUL SWAP1 DUP4 SWAP1 PUSH1 0x0 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x1914 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x4A6A JUMPI POP DUP2 ISZERO JUMPDEST PUSH2 0x4AA5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5E0A PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x4AAD PUSH2 0x5B2D JUMP JUMPDEST PUSH2 0x4AB5 PUSH2 0x2F89 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4ACC JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4AD7 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4AEE JUMPI INVALID JUMPDEST EQ PUSH2 0x4B12 JUMPI PUSH2 0x4B0A PUSH1 0x9 PUSH1 0x2E DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x26A0 JUMPI INVALID JUMPDEST SWAP2 POP POP PUSH2 0x1E00 JUMP JUMPDEST DUP4 ISZERO PUSH2 0x4B93 JUMPI PUSH1 0x60 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD DUP3 MSTORE SWAP1 DUP3 ADD MLOAD DUP2 MSTORE PUSH2 0x4B39 SWAP1 DUP6 PUSH2 0x366E JUMP JUMPDEST PUSH1 0x80 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4B50 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4B5B JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4B72 JUMPI INVALID JUMPDEST EQ PUSH2 0x4B8E JUMPI PUSH2 0x4B0A PUSH1 0x9 PUSH1 0x2C DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x26A0 JUMPI INVALID JUMPDEST PUSH2 0x4C0C JUMP JUMPDEST PUSH2 0x4BAF DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH1 0x40 ADD MLOAD DUP2 MSTORE POP PUSH2 0x4389 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4BC6 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4BD1 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4BE8 JUMPI INVALID JUMPDEST EQ PUSH2 0x4C04 JUMPI PUSH2 0x4B0A PUSH1 0x9 PUSH1 0x2D DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x26A0 JUMPI INVALID JUMPDEST PUSH1 0x80 DUP2 ADD DUP4 SWAP1 MSTORE JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x60 DUP3 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xEABE7D91 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP4 SWAP3 SWAP1 SWAP3 AND SWAP2 PUSH4 0xEABE7D91 SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4C71 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4C85 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4C9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x4CBB JUMPI PUSH2 0x4CB2 PUSH1 0x3 PUSH1 0x2B DUP4 PUSH2 0x426A JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x1E00 JUMP JUMPDEST PUSH2 0x4CC3 PUSH2 0x2AA1 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x4CD7 JUMPI PUSH2 0x4CB2 PUSH1 0xA PUSH1 0x2F PUSH2 0x250A JUMP JUMPDEST PUSH2 0x4CE7 PUSH1 0x11 SLOAD DUP4 PUSH1 0x60 ADD MLOAD PUSH2 0x39A5 JUMP JUMPDEST PUSH1 0xA0 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP5 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4CFE JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4D09 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP3 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4D20 JUMPI INVALID JUMPDEST EQ PUSH2 0x4D3C JUMPI PUSH2 0x4CB2 PUSH1 0x9 PUSH1 0x31 DUP5 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x26A0 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 DUP4 ADD MLOAD PUSH2 0x4D64 SWAP2 SWAP1 PUSH2 0x39A5 JUMP JUMPDEST PUSH1 0xC0 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP5 ADD DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4D7B JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4D86 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP3 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4D9D JUMPI INVALID JUMPDEST EQ PUSH2 0x4DB9 JUMPI PUSH2 0x4CB2 PUSH1 0x9 PUSH1 0x30 DUP5 PUSH1 0x20 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x26A0 JUMPI INVALID JUMPDEST DUP2 PUSH1 0x80 ADD MLOAD PUSH2 0x4DC6 PUSH2 0x36C1 JUMP JUMPDEST LT ISZERO PUSH2 0x4DD8 JUMPI PUSH2 0x4CB2 PUSH1 0xE PUSH1 0x32 PUSH2 0x250A JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MLOAD PUSH1 0x11 SSTORE PUSH1 0xC0 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x4E0E SWAP1 DUP8 SWAP1 PUSH2 0x4A27 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MLOAD PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD ADDRESS SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5D51 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 PUSH1 0x80 DUP3 ADD MLOAD PUSH1 0x60 DUP1 DUP5 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP4 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE MLOAD PUSH32 0xE5B754FB1ABB7F01B499791D0B820AE3B6AF3424AC1C59768EDB53F4EC31A929 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x5 SLOAD PUSH1 0x80 DUP4 ADD MLOAD PUSH1 0x60 DUP5 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x51DFF989 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x64 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x51DFF989 SWAP2 PUSH1 0x84 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4F02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4F16 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x0 SWAP3 POP PUSH2 0x4F23 SWAP2 POP POP JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH2 0x4F40 JUMPI POP PUSH1 0x0 SWAP1 POP DUP1 PUSH2 0x28EB JUMP JUMPDEST DUP4 DUP4 MUL DUP4 DUP6 DUP3 DUP2 PUSH2 0x4F4D JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x4F61 JUMPI POP PUSH1 0x2 SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH2 0x28EB JUMP JUMPDEST PUSH1 0x0 SWAP3 POP SWAP1 POP PUSH2 0x28EB JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH2 0x4F80 JUMPI POP PUSH1 0x1 SWAP1 POP PUSH1 0x0 PUSH2 0x28EB JUMP JUMPDEST PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x4F8B JUMPI INVALID JUMPDEST DIV SWAP2 POP SWAP2 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 ADD DUP3 DUP6 DUP3 LT ISZERO PUSH2 0x4FEC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x11F7 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x11DF JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x4FFD PUSH2 0x5B1A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x5016 DUP6 PUSH1 0x0 ADD MLOAD DUP6 PUSH2 0x597F JUMP JUMPDEST SWAP1 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5029 PUSH2 0x5B1A JUMP JUMPDEST PUSH2 0x5033 DUP5 DUP5 PUSH2 0x4FF5 JUMP JUMPDEST SWAP1 POP PUSH2 0x34EB DUP2 PUSH2 0x4690 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5048 PUSH2 0x5B1A JUMP JUMPDEST PUSH2 0x5052 DUP6 DUP6 PUSH2 0x4FF5 JUMP JUMPDEST SWAP1 POP PUSH2 0x45F9 PUSH2 0x5060 DUP3 PUSH2 0x4690 JUMP JUMPDEST DUP5 PUSH2 0x396F JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x2FE3F38F PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP8 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE DUP7 DUP2 AND PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x84 DUP3 ADD DUP7 SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 DUP5 SWAP4 SWAP2 AND SWAP2 PUSH4 0x5FC7E71E SWAP2 PUSH1 0xA4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x50D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x50EB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5101 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x5125 JUMPI PUSH2 0x5118 PUSH1 0x3 PUSH1 0x14 DUP4 PUSH2 0x426A JUMP JUMPDEST SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH2 0x554F SWAP1 POP JUMP JUMPDEST PUSH2 0x512D PUSH2 0x2AA1 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x5141 JUMPI PUSH2 0x5118 PUSH1 0xA PUSH1 0x18 PUSH2 0x250A JUMP JUMPDEST PUSH2 0x5149 PUSH2 0x2AA1 JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6C540BAF 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 0x5182 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5196 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x51AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD EQ PUSH2 0x51BF JUMPI PUSH2 0x5118 PUSH1 0xA PUSH1 0x13 PUSH2 0x250A JUMP JUMPDEST DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x51E5 JUMPI PUSH2 0x5118 PUSH1 0x6 PUSH1 0x19 PUSH2 0x250A JUMP JUMPDEST DUP5 PUSH2 0x51F6 JUMPI PUSH2 0x5118 PUSH1 0x7 PUSH1 0x17 PUSH2 0x250A JUMP JUMPDEST PUSH1 0x0 NOT DUP6 EQ ISZERO PUSH2 0x520C JUMPI PUSH2 0x5118 PUSH1 0x7 PUSH1 0x16 PUSH2 0x250A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x521A DUP10 DUP10 DUP10 PUSH2 0x469F JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP DUP2 ISZERO PUSH2 0x524A JUMPI PUSH2 0x523B DUP3 PUSH1 0x11 DUP2 GT ISZERO PUSH2 0x5234 JUMPI INVALID JUMPDEST PUSH1 0x1A PUSH2 0x250A JUMP JUMPDEST SWAP5 POP PUSH1 0x0 SWAP4 POP PUSH2 0x554F SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xC488847B PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP6 SWAP1 MSTORE DUP3 MLOAD PUSH1 0x0 SWAP5 DUP6 SWAP5 SWAP3 AND SWAP3 PUSH4 0xC488847B SWAP3 PUSH1 0x64 DUP1 DUP4 ADD SWAP4 SWAP2 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x52A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x52B8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x52CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 POP SWAP1 POP DUP2 ISZERO PUSH2 0x5319 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x33 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5DA2 PUSH1 0x33 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 DUP9 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 DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5370 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5384 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x539A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT ISZERO PUSH2 0x53EF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C49515549444154455F5345495A455F544F4F5F4D5543480000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND ADDRESS EQ ISZERO PUSH2 0x5415 JUMPI PUSH2 0x540E ADDRESS DUP14 DUP14 DUP6 PUSH2 0x3DB4 JUMP JUMPDEST SWAP1 POP PUSH2 0x549F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xB2A02FF1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP15 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP14 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD SWAP2 DUP12 AND SWAP2 PUSH4 0xB2A02FF1 SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5470 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5484 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x549A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP JUMPDEST DUP1 ISZERO PUSH2 0x54E9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x1D1BDAD95B881CD95A5E9D5C994819985A5B1959 PUSH1 0x62 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP16 AND DUP3 MSTORE DUP1 DUP15 AND PUSH1 0x20 DUP4 ADD MSTORE DUP2 DUP4 ADD DUP8 SWAP1 MSTORE DUP12 AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP2 ADD DUP5 SWAP1 MSTORE SWAP1 MLOAD PUSH32 0x298637F684DA70674F26509B10F07EC2FBC77A335AB1E7D6215A4B2484D8BB52 SWAP2 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 LOG1 PUSH1 0x0 SWAP8 POP SWAP3 SWAP6 POP POP POP POP POP POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xDE0B6B3A7640000 PUSH2 0x5571 DUP5 DUP5 PUSH1 0x0 ADD MLOAD PUSH2 0x597F JUMP JUMPDEST DUP2 PUSH2 0x5578 JUMPI INVALID JUMPDEST DIV SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x368F5153 PUSH1 0xE2 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 AND SWAP2 PUSH4 0xDA3D454C SWAP2 PUSH1 0x64 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x55DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x55F1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5607 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x5626 JUMPI PUSH2 0x561E PUSH1 0x3 PUSH1 0x10 DUP4 PUSH2 0x426A JUMP JUMPDEST SWAP2 POP POP PUSH2 0x132C JUMP JUMPDEST PUSH2 0x562E PUSH2 0x2AA1 JUMP JUMPDEST PUSH1 0xB SLOAD EQ PUSH2 0x5642 JUMPI PUSH2 0x561E PUSH1 0xA PUSH1 0xC PUSH2 0x250A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x564C PUSH2 0x36C1 JUMP JUMPDEST SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x566B JUMPI PUSH2 0x5662 PUSH1 0xE PUSH1 0xB PUSH2 0x250A JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x132C JUMP JUMPDEST PUSH2 0x5673 PUSH2 0x5BFE JUMP JUMPDEST PUSH2 0x567C DUP7 PUSH2 0x383A JUMP JUMPDEST PUSH1 0x20 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x5690 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x569B JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x56AF JUMPI INVALID JUMPDEST EQ PUSH2 0x56D4 JUMPI PUSH2 0x56CA PUSH1 0x9 DUP1 DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x26A0 JUMPI INVALID JUMPDEST SWAP4 POP POP POP POP PUSH2 0x132C JUMP JUMPDEST PUSH2 0x56E2 DUP2 PUSH1 0x20 ADD MLOAD DUP7 PUSH2 0x4602 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x56F6 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x5701 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x5715 JUMPI INVALID JUMPDEST EQ PUSH2 0x5731 JUMPI PUSH2 0x56CA PUSH1 0x9 PUSH1 0xE DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x26A0 JUMPI INVALID JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 DUP4 ADD MLOAD DUP2 MLOAD PUSH4 0x1DE6C8A5 PUSH1 0xE2 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x779B2294 SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x578A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x579E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x57B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 POP DUP3 ISZERO PUSH2 0x57CB JUMPI PUSH2 0x56CA PUSH1 0x3 PUSH1 0x10 DUP6 PUSH2 0x426A JUMP JUMPDEST PUSH2 0x57D7 PUSH1 0xD SLOAD DUP7 PUSH2 0x4602 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD DUP2 SWAP1 MSTORE DUP3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x57EB JUMPI INVALID JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x57F6 JUMPI INVALID JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 SWAP1 POP DUP2 MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x580A JUMPI INVALID JUMPDEST EQ PUSH2 0x5826 JUMPI PUSH2 0x56CA PUSH1 0x9 PUSH1 0xD DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x26A0 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 MSTORE SWAP2 SWAP1 SWAP2 KECCAK256 SWAP1 DUP2 SSTORE PUSH1 0xC SLOAD PUSH1 0x1 SWAP1 SWAP2 ADD SSTORE PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0xD SSTORE PUSH2 0x5862 DUP7 DUP7 PUSH2 0x4A27 JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 ADD MLOAD PUSH1 0x60 DUP1 DUP5 ADD MLOAD DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP11 SWAP1 MSTORE DUP1 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP1 DUP3 ADD MSTORE SWAP1 MLOAD PUSH32 0x13ED6866D4E1EE6DA46F845C46D7E54120883D75C5EA9A2DACC1C4CA8984AB80 SWAP2 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG1 PUSH1 0x0 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x58D0 PUSH2 0x5B1A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x58E5 PUSH8 0xDE0B6B3A7640000 DUP8 PUSH2 0x4F2D JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x58F8 JUMPI INVALID JUMPDEST EQ PUSH2 0x5917 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x28EB JUMP JUMPDEST PUSH2 0x36B4 DUP2 DUP7 PUSH1 0x0 ADD MLOAD PUSH2 0x443C JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x5977 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x11F7 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x11DF JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E00 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x17 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x6D756C7469706C69636174696F6E206F766572666C6F77000000000000000000 DUP2 MSTORE POP PUSH1 0x0 DUP4 ISZERO DUP1 PUSH2 0x59C9 JUMPI POP DUP3 ISZERO JUMPDEST ISZERO PUSH2 0x59D6 JUMPI POP PUSH1 0x0 PUSH2 0x1E00 JUMP JUMPDEST DUP4 DUP4 MUL DUP4 DUP6 DUP3 DUP2 PUSH2 0x59E3 JUMPI INVALID JUMPDEST DIV EQ DUP4 SWAP1 PUSH2 0x4FEC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x11F7 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x11DF JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x5A73 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x5AA0 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x5AA0 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x5AA0 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x5A85 JUMP JUMPDEST POP PUSH2 0x1CCB SWAP3 SWAP2 POP PUSH2 0x5C27 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x5AED JUMPI DUP3 DUP1 ADD PUSH1 0xFF NOT DUP3 CALLDATALOAD AND OR DUP6 SSTORE PUSH2 0x5AA0 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x5AA0 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x5AA0 JUMPI DUP3 CALLDATALOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x5AFF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xE0 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x120 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x100 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH2 0x1706 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1CCB JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x5C2D JUMP INVALID PUSH14 0x61726B6574206D6179206F6E6C79 KECCAK256 PUSH3 0x652069 PUSH15 0x697469616C697A6564206F6E636569 PUSH15 0x697469616C2065786368616E676520 PUSH19 0x617465206D7573742062652067726561746572 KECCAK256 PUSH21 0x68616E207A65726F2E73657474696E6720696E7465 PUSH19 0x6573742072617465206D6F64656C206661696C PUSH6 0x64626F72726F PUSH24 0x42616C616E636553746F7265643A20626F72726F7742616C PUSH2 0x6E63 PUSH6 0x53746F726564 0x49 PUSH15 0x7465726E616C206661696C65645245 POP COINBASE MSIZE 0x5F TIMESTAMP 0x4F MSTORE MSTORE 0x4F JUMPI 0x5F 0x4E GASLIMIT JUMPI 0x5F COINBASE NUMBER NUMBER 0x4F SSTORE 0x4E SLOAD 0x5F TIMESTAMP 0x4F MSTORE MSTORE 0x4F JUMPI 0x5F TIMESTAMP COINBASE 0x4C COINBASE 0x4E NUMBER GASLIMIT 0x5F NUMBER COINBASE 0x4C NUMBER SSTORE 0x4C COINBASE SLOAD 0x49 0x4F 0x4E 0x5F CHAINID COINBASE 0x49 0x4C GASLIMIT DIFFICULTY PUSH16 0x6E6C7920467573652061646D696E206D PUSH2 0x7920 PUSH10 0x6E697469616C697A6520 PUSH21 0x6865206D61726B6574DDF252AD1BE2C89B69C2B068 0xFC CALLDATACOPY DUP14 0xAA SWAP6 0x2B 0xA7 CALL PUSH4 0xC4A11628 CREATE2 GAS 0x4D CREATE2 0x23 0xB3 0xEF MSTORE GASLIMIT POP COINBASE MSIZE 0x5F TIMESTAMP 0x4F MSTORE MSTORE 0x4F JUMPI 0x5F 0x4E GASLIMIT JUMPI 0x5F SLOAD 0x4F SLOAD COINBASE 0x4C 0x5F TIMESTAMP COINBASE 0x4C COINBASE 0x4E NUMBER GASLIMIT 0x5F NUMBER COINBASE 0x4C NUMBER SSTORE 0x4C COINBASE SLOAD 0x49 0x4F 0x4E 0x5F CHAINID COINBASE 0x49 0x4C GASLIMIT DIFFICULTY 0x4C 0x49 MLOAD SSTORE 0x49 DIFFICULTY COINBASE SLOAD GASLIMIT 0x5F NUMBER 0x4F 0x4D POP SLOAD MSTORE 0x4F 0x4C 0x4C GASLIMIT MSTORE 0x5F NUMBER COINBASE 0x4C NUMBER SSTORE 0x4C COINBASE SLOAD GASLIMIT 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD 0x5F MSTORE8 GASLIMIT 0x49 GAS GASLIMIT 0x5F CHAINID COINBASE 0x49 0x4C GASLIMIT DIFFICULTY PUSH6 0x786368616E67 PUSH6 0x526174655374 PUSH16 0x7265643A2065786368616E6765526174 PUSH6 0x53746F726564 0x49 PUSH15 0x7465726E616C206661696C65646F6E PUSH6 0x206F66207265 PUSH5 0x65656D546F PUSH12 0x656E73496E206F7220726564 PUSH6 0x656D416D6F75 PUSH15 0x74496E206D757374206265207A6572 PUSH16 0xA265627A7A723158207CEE580452E8D9 0xA7 PUSH27 0xB2258BFAE89FA594B79422B049E67606A090DAF10B651764736F6C PUSH4 0x43000511 STOP ORIGIN ","sourceMap":"179:3704:8:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4214:8:7;4227:23;4240:9;4227:12;:23::i;:::-;4213:37;;;4260:34;4275:3;4260:34;;;;;;;;;;;;;-1:-1:-1;;;4260:34:7;;;:14;:34::i;:::-;4174:127;179:3704:8;960:18:11;;8:9:-1;5:2;;;30:1;27;20:12;5:2;960:18:11;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;960:18:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7552:232:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7552:232:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7552:232:10;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1302:1947;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1302:1947:10;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;1302:1947:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;1302:1947:10;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1302:1947:10;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1302:1947:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1302:1947:10;;;;;;;;-1:-1:-1;1302:1947:10;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;1302:1947:10;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1302:1947:10;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1302:1947:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1302:1947:10;;-1:-1:-1;;1302:1947:10;;;;;-1:-1:-1;;;1302:1947:10;;;;;;;;;:::i;:::-;;1459:131:7;;;:::i;2390:33:11:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2390:33:11;;;:::i;:::-;;;;;;;;;;;;;;;;11828:228:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11828:228:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11828:228:10;-1:-1:-1;;;;;11828:228:10;;:::i;3266:23:11:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3266:23:11;;;:::i;14620:257:10:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14620:257:10;;;:::i;3422:459:8:-;;;:::i;6892:200:10:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6892:200:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6892:200:10;;;;;;;;;;;;;;;;;:::i;1146:21:11:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1146:21:11;;;:::i;:::-;;;;;;;;;;;;;;;;;;;70024:265:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;70024:265:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;70024:265:10;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;70024:265:10;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;70024:265:10;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;70024:265:10;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;70024:265:10;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;70024:265:10;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;70024:265:10;;-1:-1:-1;70024:265:10;-1:-1:-1;70024:265:10;:::i;8788:349::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8788:349:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8788:349:10;-1:-1:-1;;;;;8788:349:10;;:::i;16532:86::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16532:86:10;;;:::i;2784:24:11:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2784:24:11;;;:::i;3000:152:7:-;;;:::i;2913:330:8:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2913:330:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;2913:330:8;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;2913:330:8;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2913:330:8;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;2913:330:8;;-1:-1:-1;2913:330:8;-1:-1:-1;2913:330:8;:::i;487:489::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;487:489:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;487:489:8;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;487:489:8;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;487:489:8;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;487:489:8;;-1:-1:-1;487:489:8;-1:-1:-1;487:489:8;:::i;9773:29:11:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9773:29:11;;;:::i;:::-;;;;-1:-1:-1;;;;;9773:29:11;;;;;;;;;;;;;;1713:39;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1713:39:11;;;:::i;59156:570:10:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;59156:570:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;59156:570:10;;:::i;3037:26:11:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3037:26:11;;;:::i;4209:56::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4209:56:11;;;:::i;2508:30::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2508:30:11;;;:::i;8834:25::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8834:25:11;;;:::i;8430:110:10:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8430:110:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8430:110:10;-1:-1:-1;;;;;8430:110:10;;:::i;11348:196::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11348:196:10;;;:::i;653:630:7:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;653:630:7;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;653:630:7;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;653:630:7;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;653:630:7;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;653:630:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;653:630:7;;;;;;;;-1:-1:-1;653:630:7;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;653:630:7;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;653:630:7;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;653:630:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;653:630:7;;-1:-1:-1;;653:630:7;;;-1:-1:-1;;;653:630:7;;;;:::i;2392:131::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2392:131:7;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2392:131:7;;:::i;2150:28:11:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2150:28:11;;;:::i;2909:25::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2909:25:11;;;:::i;54184:571:10:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;54184:571:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;54184:571:10;;:::i;1051:20:11:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1051:20:11;;;:::i;12258:283:10:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12258:283:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12258:283:10;-1:-1:-1;;;;;12258:283:10;;:::i;61865:587::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;61865:587:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;61865:587:10;;:::i;16859:1071::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16859:1071:10;;;:::i;64387:592::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;64387:592:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;64387:592:10;;:::i;6404:190::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6404:190:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6404:190:10;;;;;;;;:::i;2654:23:11:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2654:23:11;;;:::i;3875:233:7:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3875:233:7;;;;;;;;;;:::i;9626:36:11:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9626:36:11;;;:::i;10946:262:10:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10946:262:10;;;:::i;48862:198::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;48862:198:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;48862:198:10;;;;;;;;;;;;;;;;;:::i;14175:202::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14175:202:10;;;:::i;9475:685::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9475:685:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9475:685:10;-1:-1:-1;;;;;9475:685:10;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2784:111:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2784:111:7;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2784:111:7;;:::i;1933:::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1933:111:7;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1933:111:7;;:::i;2271:27:11:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2271:27:11;;;:::i;3165:25::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3165:25:11;;;:::i;8106:141:10:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8106:141:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;8106:141:10;;;;;;;;;;:::i;3336:196:7:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3336:196:7;-1:-1:-1;;;;;3336:196:7;;:::i;67100:625:10:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;67100:625:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;67100:625:10;-1:-1:-1;;;;;67100:625:10;;:::i;1849:42:11:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1849:42:11;;;:::i;10574:202:10:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10574:202:10;;;:::i;57039:606::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;57039:606:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;57039:606:10;;:::i;20737:546::-;20814:4;20820;20798:5;71531:30;71551:9;71531:19;:30::i;:::-;20836:10;20849:16;:14;:16::i;:::-;20836:29;-1:-1:-1;20879:29:10;;20875:249;;21050:59;21061:5;21055:12;;;;;;;;21069:39;21050:4;:59::i;:::-;21042:71;-1:-1:-1;21111:1:10;;-1:-1:-1;21042:71:10;;-1:-1:-1;21042:71:10;20875:249;21243:33;21253:10;21265;21243:9;:33::i;:::-;21236:40;;;;;71571:1;71582:29;71601:9;71582:18;:29::i;:::-;20737:546;;;;:::o;5421:832:7:-;5510:31;5506:68;;5557:7;;5506:68;5584:24;5627:7;5621:21;5645:1;5621:25;5611:36;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;104:10;5611:36:7;87:34:-1;135:17;;-1:-1;5611:36:7;-1:-1:-1;5584:63:7;-1:-1:-1;5657:6:7;5674:103;5696:7;5690:21;5686:1;:25;5674:103;;;5755:7;5764:1;5749:17;;;;;;;;;;;;;;;;5732:11;5744:1;5732:14;;;;;;;;;;;:34;-1:-1:-1;;;;;5732:34:7;;;;;;;;-1:-1:-1;5713:3:7;;5674:103;;;5787:16;;-1:-1:-1;;;5806:15:7;5787:11;;5799:1;;5787:16;;;;;;;;;:34;-1:-1:-1;;;;;5787:34:7;;;;;;;;;5861:2;5850:15;;5831:11;5843:1;5845;5843:3;5831:16;;;;;;;;;;;:34;-1:-1:-1;;;;;5831:34:7;;;;;;;;-1:-1:-1;5922:4:7;5912:7;:14;5905:2;:23;5894:36;;5875:11;5887:1;5889;5887:3;5875:16;;;;;;;;;;;:55;-1:-1:-1;;;;;5875:55:7;;;;;;;;-1:-1:-1;5993:2:7;5987:3;5977:13;;:18;5970:2;:27;5959:40;;5940:11;5952:1;5954;5952:3;5940:16;;;;;;;;;;;:59;-1:-1:-1;;;;;5940:59:7;;;;;;;;-1:-1:-1;6061:2:7;6046:12;;;:17;6039:2;:26;6028:39;;6009:11;6021:1;6023;6021:3;6009:16;;;;;;;;;;;:58;-1:-1:-1;;;;;6009:58:7;;;;;;;;-1:-1:-1;6124:2:7;6114:7;:12;6107:2;:21;6096:34;;6077:11;6089:1;6091;6089:3;6077:16;;;;;;;;;;;:53;-1:-1:-1;;;;;6077:53:7;;;;;;;;;6170:2;6159:15;;6140:11;6152:1;6154;6152:3;6140:16;;;;;;;;;;;:34;-1:-1:-1;;;;;6140:34:7;;;;;;;;-1:-1:-1;6233:11:7;6193:31;;6185:61;;;;-1:-1:-1;;;6185:61:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;6185:61:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5421:832;;;;;:::o;960:18:11:-;;;;;;;;;;;;;;-1:-1:-1;;960:18:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7552:232:10:-;7650:10;7620:4;7670:23;;;:18;:23;;;;;;;;-1:-1:-1;;;;;7670:32:10;;;;;;;;;;;:41;;;7726:30;;;;;;;7620:4;;7650:10;7670:32;;7650:10;;7726:30;;;;;;;;;;;7773:4;7766:11;;;7552:232;;;;;:::o;1302:1947::-;1743:10;326:42:11;1743:32:10;1735:86;;;;-1:-1:-1;;;1735:86:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1839:18;;:23;:43;;;;-1:-1:-1;1866:11:10;;:16;1839:43;1831:91;;;;-1:-1:-1;;;1831:91:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1970:27;:58;;;2046:31;2038:92;;;;-1:-1:-1;;;2038:92:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2172:8;2183:29;2199:12;2183:15;:29::i;:::-;2172:40;-1:-1:-1;2230:27:10;;2222:66;;;;;-1:-1:-1;;;2222:66:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;2425:16;:14;:16::i;:::-;2404:18;:37;409:4:22;2451:11:10;:25;2573:46;2600:18;2573:26;:46::i;:::-;2567:52;-1:-1:-1;2637:27:10;;2629:74;;;;-1:-1:-1;;;2629:74:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2714:12;;;;:4;;:12;;;;;:::i;:::-;-1:-1:-1;2736:16:10;;;;:6;;:16;;;;;:::i;:::-;-1:-1:-1;2762:8:10;:20;;-1:-1:-1;;2762:20:10;;;;;;;2829:46;2852:22;2829;:46::i;:::-;2823:52;-1:-1:-1;2893:27:10;;2885:69;;;;;-1:-1:-1;;;2885:69:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;2996:36;3014:17;2996;:36::i;:::-;2990:42;-1:-1:-1;3050:27:10;;3042:64;;;;;-1:-1:-1;;;3042:64:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3238:4:10;3224:18;;-1:-1:-1;;;;3224:18:10;-1:-1:-1;;;3224:18:10;;;-1:-1:-1;;;;;;;1302:1947:10:o;1459:131:7:-;1503:8;1516:23;1529:9;1516:12;:23::i;:::-;1502:37;;;1549:34;1564:3;1549:34;;;;;;;;;;;;;-1:-1:-1;;;1549:34:7;;;:14;:34::i;:::-;1459:131;:::o;2390:33:11:-;;;;:::o;11828:228:10:-;11913:4;11897:5;71531:30;71551:9;71531:19;:30::i;:::-;11962:14;11937:16;:14;:16::i;:::-;:40;11929:75;;;;;-1:-1:-1;;;11929:75:10;;;;;;;;;;;;-1:-1:-1;;;11929:75:10;;;;;;;;;;;;;;;12021:28;12041:7;12021:19;:28::i;:::-;12014:35;;71571:1;71582:29;71601:9;71582:18;:29::i;:::-;11828:228;;;;:::o;3266:23:11:-;;;;:::o;14620:257:10:-;14671:4;14688:13;14703:11;14718:28;:26;:28::i;:::-;14687:59;;-1:-1:-1;14687:59:10;-1:-1:-1;14771:18:10;14764:3;:25;;;;;;;;;14756:91;;;;-1:-1:-1;;;14756:91:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14864:6;-1:-1:-1;;14620:257:10;;:::o;3422:459:8:-;3473:10;3495:4;3473:27;;;;:94;;;3533:11;;;;;;;;;-1:-1:-1;;;;;3533:11:8;-1:-1:-1;;;;;3504:61:8;;:63;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3504:63:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3504:63:8;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3504:63:8;3473:94;3469:406;;;3584:28;3704:14;;3673:46;;;-1:-1:-1;;;3673:46:8;;-1:-1:-1;;;;;3704:14:8;;;3673:46;;;;;3584:28;;3632:37;;326:42:11;;3673:30:8;;:46;;;;;3584:28;;3673:46;;;;;;;326:42:11;3673:46:8;;;5:2:-1;;;;30:1;27;20:12;5:2;3673:46:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3673:46:8;;;;;;39:16:-1;36:1;17:17;2:54;101:4;3673:46:8;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;3673:46:8;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:20;;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;3673:46:8;;420:4:-1;411:14;;;;3673:46:8;;;;;411:14:-1;3673:46:8;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3673:46:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3673:46:8;;-1:-1:-1;;3737:14:8;;3583:136;;-1:-1:-1;3583:136:8;;-1:-1:-1;3583:136:8;-1:-1:-1;;;;;;;3737:38:8;;;:14;;:38;3733:131;;3777:87;3804:20;3826:11;3839:24;3777:26;:87::i;:::-;3469:406;;;;3422:459::o;6892:200:10:-;6994:4;6978:5;71531:30;71551:9;71531:19;:30::i;:::-;7070:14;7017:44;7032:10;7044:3;7049;7054:6;7017:14;:44::i;:::-;:68;7010:75;;71582:29;71601:9;71582:18;:29::i;:::-;6892:200;;;;;;:::o;1146:21:11:-;;;;;;:::o;70024:265:10:-;70159:16;:14;:16::i;:::-;70151:45;;;;;-1:-1:-1;;;70151:45:10;;;;;;;;;;;;-1:-1:-1;;;70151:45:10;;;;;;;;;;;;;;;70244:12;:4;70251:5;;70244:12;:::i;:::-;-1:-1:-1;70266:16:10;:6;70275:7;;70266:16;:::i;8788:349::-;8850:4;8866:23;;:::i;:::-;8892:38;;;;;;;;8907:21;:19;:21::i;:::-;8892:38;;-1:-1:-1;;;;;9005:20:10;;8941:14;9005:20;;;:13;:20;;;;;;8866:64;;-1:-1:-1;8941:14:10;;;8973:53;;8866:64;;8973:17;:53::i;:::-;8940:86;;-1:-1:-1;8940:86:10;-1:-1:-1;9052:18:10;9044:4;:26;;;;;;;;;9036:70;;;;;-1:-1:-1;;;9036:70:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;9123:7;-1:-1:-1;;;8788:349:10;;;;:::o;16532:86::-;16574:4;16597:14;:12;:14::i;:::-;16590:21;;16532:86;:::o;2784:24:11:-;;;;:::o;3000:152:7:-;3051:8;3064:30;3084:9;3064:19;:30::i;:::-;3050:44;;;3104:41;3119:3;3104:41;;;;;;;;;;;;;-1:-1:-1;;;3104:41:7;;;:14;:41::i;2913:330:8:-;3086:16;:14;:16::i;:::-;3078:35;;;;;-1:-1:-1;;;3078:35:8;;;;;;;;;;;;-1:-1:-1;;;3078:35:8;;;;;;;;;;;;;;;3154:82;3181:15;3198:11;3211:24;;3154:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;3154:26:8;;-1:-1:-1;;;3154:82:8:i;:::-;2913:330;;;;:::o;487:489::-;754:10;776:4;754:27;;:47;;;785:16;:14;:16::i;:::-;746:65;;;;;-1:-1:-1;;;746:65:8;;;;;;;;;;;;-1:-1:-1;;;746:65:8;;;;;;;;;;;;;;;-1:-1:-1;;877:7:8;:20;;-1:-1:-1;;;;;;941:28:8;;;487:489::o;9773:29:11:-;;;-1:-1:-1;;;;;9773:29:11;;:::o;1713:39::-;;;-1:-1:-1;;;;;1713:39:11;;:::o;59156:570:10:-;59238:4;59222:5;71531:30;71551:9;71531:19;:30::i;:::-;59254:10;59267:16;:14;:16::i;:::-;59254:29;-1:-1:-1;59297:29:10;;59293:274;;59486:70;59497:5;59491:12;;;;;;;;59505:50;59486:4;:70::i;:::-;59479:77;;;;;59293:274;59685:34;59706:12;59685:20;:34::i;:::-;59678:41;;;71582:29;71601:9;71582:18;:29::i;3037:26:11:-;;;;:::o;4209:56::-;4259:6;4209:56;:::o;2508:30::-;;;;:::o;8834:25::-;;;-1:-1:-1;;;;;8834:25:11;;:::o;8430:110:10:-;-1:-1:-1;;;;;8513:20:10;8487:7;8513:20;;;:13;:20;;;;;;;8430:110::o;11348:196::-;11417:4;11401:5;71531:30;71551:9;71531:19;:30::i;:::-;11466:14;11441:16;:14;:16::i;:::-;:40;11433:75;;;;;-1:-1:-1;;;11433:75:10;;;;;;;;;;;;-1:-1:-1;;;11433:75:10;;;;;;;;;;;;;;;11525:12;;11518:19;;71582:29;71601:9;71582:18;:29::i;:::-;11348:196;;:::o;653:630:7:-;1080:6;1114:2;1126:150;1143:12;1157:18;1080:6;1207:5;1214:7;1114:2;1234:22;1258:17;1126:16;:150::i;:::-;653:630;;;;;;;;:::o;2392:131::-;2455:4;2478:38;2503:12;2478:24;:38::i;2150:28:11:-;;;;:::o;2909:25::-;;;;:::o;54184:571:10:-;54270:4;54254:5;71531:30;71551:9;71531:19;:30::i;:::-;54286:10;54299:16;:14;:16::i;:::-;54286:29;-1:-1:-1;54329:29:10;;54325:273;;54519:68;54530:5;54524:12;;;;;;;;54538:48;54519:4;:68::i;54325:273::-;54710:38;54728:19;54710:17;:38::i;1051:20:11:-;;;;;;;;;;;;;;;-1:-1:-1;;1051:20:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12258:283:10;12325:4;12342:13;12357:11;12372:36;12400:7;12372:27;:36::i;:::-;12341:67;;-1:-1:-1;12341:67:10;-1:-1:-1;12433:18:10;12426:3;:25;;;;;;;;;12418:93;;;;-1:-1:-1;;;12418:93:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12528:6;12258:283;-1:-1:-1;;;12258:283:10:o;61865:587::-;61951:4;61935:5;71531:30;71551:9;71531:19;:30::i;:::-;61967:10;61980:16;:14;:16::i;:::-;61967:29;-1:-1:-1;62010:29:10;;62006:281;;62203:73;62214:5;62208:12;;;;;;;;62222:53;62203:4;:73::i;62006:281::-;62407:38;62430:14;62407:22;:38::i;16859:1071::-;16901:4;16965:23;16991:16;:14;:16::i;:::-;16965:42;;17096:18;17074;;:40;17070:98;;;17142:14;17130:27;;;;;17070:98;17232:14;17249;:12;:14::i;:::-;17232:31;;17331:23;17357:17;;;;;;;;;-1:-1:-1;;;;;17357:17:10;-1:-1:-1;;;;;17357:31:10;;17389:9;17400:12;;17414:56;17419:13;;17434:35;17439:14;;17455:13;;17434:4;:35::i;:::-;17414:4;:56::i;:::-;17357:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17357:114:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17357:114:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17357:114:10;;-1:-1:-1;1314:9:11;17489:43:10;;;17481:84;;;;;-1:-1:-1;;;17481:84:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;17653:17;17672:15;17691:47;17699:18;17719;;17691:7;:47::i;:::-;17652:86;;-1:-1:-1;17652:86:10;-1:-1:-1;17767:18:10;17756:7;:29;;;;;;;;;17748:73;;;;;-1:-1:-1;;;17748:73:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;17839:84;17861:18;17881:9;17892:18;17912:10;17839:21;:84::i;:::-;17832:91;;;;;;;16859:1071;:::o;64387:592::-;64474:4;64458:5;71531:30;71551:9;71531:19;:30::i;:::-;64490:10;64503:16;:14;:16::i;:::-;64490:29;-1:-1:-1;64533:29:10;;64529:283;;64727:74;64738:5;64732:12;;;;;;;;64746:54;64727:4;:74::i;64529:283::-;64933:39;64957:14;64933:23;:39::i;6404:190::-;6489:4;6473:5;71531:30;71551:9;71531:19;:30::i;:::-;6572:14;6512:51;6527:10;6539;6551:3;6556:6;6512:14;:51::i;:::-;:75;6505:82;;71582:29;71601:9;71582:18;:29::i;:::-;6404:190;;;;;:::o;2654:23:11:-;;;;:::o;3875:233:7:-;3971:8;3984:62;4008:8;4018:9;4029:16;3984:23;:62::i;:::-;3970:76;;;4056:45;4071:3;4056:45;;;;;;;;;;;;;-1:-1:-1;;;4056:45:7;;;:14;:45::i;9626:36:11:-;9658:4;9626:36;:::o;10946:262:10:-;11022:17;;10999:4;;-1:-1:-1;;;;;11022:17:10;:31;11054:14;:12;:14::i;:::-;11070:12;;11084:56;11089:13;;11104:35;11109:14;;11125:13;;11104:4;:35::i;11084:56::-;11184:16;;11166:15;;11142:21;;:39;:58;11022:179;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11022:179:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11022:179:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11022:179:10;;-1:-1:-1;10946:262:10;:::o;48862:198::-;48970:4;48955;71531:30;71551:9;71531:19;:30::i;:::-;48993:60;49007:10;49019;49031:8;49041:11;48993:13;:60::i;:::-;48986:67;;71582:29;71601:9;71582:18;:29::i;14175:202::-;14242:4;14226:5;71531:30;71551:9;71531:19;:30::i;:::-;14291:14;14266:16;:14;:16::i;:::-;:40;14258:75;;;;;-1:-1:-1;;;14258:75:10;;;;;;;;;;;;-1:-1:-1;;;14258:75:10;;;;;;;;;;;;;;;14350:20;:18;:20::i;:::-;14343:27;;71582:29;71601:9;71582:18;:29::i;9475:685::-;-1:-1:-1;;;;;9598:22:10;;9543:4;9598:22;;;:13;:22;;;;;;9543:4;;;;;;;;;9743:36;9612:7;9743:27;:36::i;:::-;9719:60;-1:-1:-1;9719:60:10;-1:-1:-1;9801:18:10;9793:4;:26;;;;;;;;;9789:97;;9848:16;9843:22;9835:40;-1:-1:-1;9867:1:10;;-1:-1:-1;9867:1:10;;-1:-1:-1;9867:1:10;;-1:-1:-1;9835:40:10;;-1:-1:-1;;;;9835:40:10;9789:97;9927:28;:26;:28::i;:::-;9896:59;-1:-1:-1;9896:59:10;-1:-1:-1;9977:18:10;9969:4;:26;;;;;;;;;9965:97;;10024:16;10019:22;;9965:97;-1:-1:-1;10085:14:10;;-1:-1:-1;10102:13:10;;-1:-1:-1;10117:13:10;-1:-1:-1;10117:13:10;-1:-1:-1;9475:685:10;;;;;;:::o;2784:111:7:-;2837:4;2860:28;2875:12;2860:14;:28::i;1933:111::-;1986:4;2009:28;2024:12;2009:14;:28::i;2271:27:11:-;;;;:::o;3165:25::-;;;;:::o;8106:141:10:-;-1:-1:-1;;;;;8206:25:10;;;8180:7;8206:25;;;:18;:25;;;;;;;;:34;;;;;;;;;;;;;8106:141::o;3336:196:7:-;3409:8;3422:46;3448:8;3458:9;3422:25;:46::i;:::-;3408:60;;;3478:47;3493:3;3478:47;;;;;;;;;;;;;;;;;:14;:47::i;67100:625:10:-;67187:4;67203:10;67216:16;:14;:16::i;:::-;67203:29;-1:-1:-1;67246:29:10;;67242:295;;67448:78;67459:5;67453:12;;;;;;;;67467:58;67448:4;:78::i;:::-;67441:85;;;;;67242:295;67670:48;67697:20;67670:26;:48::i;1849:42:11:-;;;-1:-1:-1;;;;;1849:42:11;;:::o;10574:202:10:-;10650:17;;10627:4;;-1:-1:-1;;;;;10650:17:10;:31;10682:14;:12;:14::i;:::-;10698:12;;10712:56;10717:13;;10732:35;10737:14;;10753:13;;10732:4;:35::i;10712:56::-;10650:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;57039:606:10;57135:4;57119:5;71531:30;71551:9;71531:19;:30::i;:::-;57151:10;57164:16;:14;:16::i;:::-;57151:29;-1:-1:-1;57194:29:10;;57190:283;;57389:73;57400:5;57394:12;;;;;;;;57408:53;57389:4;:73::i;57190:283::-;57590:48;57613:24;57590:22;:48::i;71931:192::-;72002:11;;-1:-1:-1;;;72002:11:10;;;;71994:34;;;;;-1:-1:-1;;;71994:34:10;;;;;;;;;;;;-1:-1:-1;;;71994:34:10;;;;;;;;;;;;;;;72043:9;72038:49;;72054:11;;;;;;;;;-1:-1:-1;;;;;72054:11:10;-1:-1:-1;;;;;72054:31:10;;:33;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;72054:33:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;72054:33:10;;;;72038:49;-1:-1:-1;72097:11:10;:19;;-1:-1:-1;;;;72097:19:10;;;71931:192::o;8568:149:20:-;8629:4;8650:33;8663:3;8658:9;;;;;;;;8674:4;8669:10;;;;;;;;8650:33;;;;;;;;;;;;;8681:1;8650:33;;;;;;;;;;;;;8706:3;8701:9;;;;;;;21974:3216:10;22120:11;;:58;;;-1:-1:-1;;;22120:58:10;;22152:4;22120:58;;;;-1:-1:-1;;;;;22120:58:10;;;;;;;;;;;;;;;22044:4;;;;;;22120:11;;;:23;;:58;;;;;;;;;;;;;;;22044:4;22120:11;:58;;;5:2:-1;;;;30:1;27;20:12;5:2;22120:58:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22120:58:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22120:58:10;;-1:-1:-1;22192:12:10;;22188:143;;22228:88;22239:27;22268:38;22308:7;22228:10;:88::i;:::-;22220:100;-1:-1:-1;22318:1:10;;-1:-1:-1;22220:100:10;;-1:-1:-1;22220:100:10;22188:143;22438:16;:14;:16::i;:::-;22416:18;;:38;22412:143;;22478:62;22483:22;22507:32;22478:4;:62::i;22412:143::-;22565:25;;:::i;:::-;22645:28;:26;:28::i;:::-;22616:25;;;22601:72;;;22602:12;;;22601:72;;;;;;;;;;;;;;;;;;;-1:-1:-1;22703:18:10;;-1:-1:-1;22687:4:10;:12;;;:34;;;;;;;;;22683:169;;22745:92;22756:16;22774:42;22823:4;:12;;;22818:18;;;;;;;;22745:10;:92::i;:::-;22737:104;-1:-1:-1;22839:1:10;;-1:-1:-1;22737:104:10;;-1:-1:-1;;22737:104:10;22683:169;23809:32;23822:6;23830:10;23809:12;:32::i;:::-;23785:21;;;:56;;;24107:42;;;;;;;;24122:25;;;;24107:42;;24061:89;;23785:56;24061:22;:89::i;:::-;24042:15;;;24027:123;;;24028:12;;;24027:123;;;;;;;;;;;;;;;;;;;-1:-1:-1;24184:18:10;;-1:-1:-1;24168:4:10;:12;;;:34;;;;;;;;;24160:79;;;;;-1:-1:-1;;;24160:79:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24520:34;24525:11;;24538:4;:15;;;24520:4;:34::i;:::-;24498:19;;;:56;-1:-1:-1;;;;;24594:21:10;;;;;;:13;:21;;;;;;24617:15;;;;24589:44;;24594:21;24589:4;:44::i;:::-;24565:21;;;:68;;;24723:19;;;;24709:11;:33;-1:-1:-1;;;;;24752:21:10;;;;;;:13;:21;;;;;;;;;:45;;;;24883:21;;;;24906:15;;;;;24870:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24969:15;;;;24937:48;;;;;;;-1:-1:-1;;;;;24937:48:10;;;24954:4;;-1:-1:-1;;;;;;;;;;;24937:48:10;;;;;;;;25035:11;;25081:21;;;;25104:15;;;;25035:85;;;-1:-1:-1;;;25035:85:10;;25066:4;25035:85;;;;-1:-1:-1;;;;;25035:85:10;;;;;;;;;;;;;;;;;;;;;;:11;;;;;:22;;:85;;;;;:11;;:85;;;;;;;:11;;:85;;;5:2:-1;;;;30:1;27;20:12;5:2;25035:85:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;25144:14:10;;-1:-1:-1;25139:20:10;;-1:-1:-1;;25139:20:10;;25161:4;:21;;;25131:52;;;;;;21974:3216;;;;;;:::o;72435:179::-;72511:4;72497:18;;-1:-1:-1;;;;72497:18:10;-1:-1:-1;;;72497:18:10;;;72564:9;72559:48;;72575:11;;;;;;;;;-1:-1:-1;;;;;72575:11:10;-1:-1:-1;;;;;72575:30:10;;:32;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;72575:32:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;53348:555:10;53428:4;53444:35;53482:11;;;;;;;;;-1:-1:-1;;;;;53482:11:10;53444:49;;53577:14;-1:-1:-1;;;;;53577:28:10;;:30;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;53577:30:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;53577:30:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;53577:30:10;53569:71;;;;;-1:-1:-1;;;53569:71:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;53705:11;:28;;-1:-1:-1;;;;;;53705:28:10;-1:-1:-1;;;;;53705:28:10;;;;;;;;;53812:46;;;;;;;;;;;;;;;;;;;;;;;;;;;53881:14;53876:20;;10313:91;10385:12;10313:91;:::o;68047:1634::-;68141:4;68240:38;68327:16;:14;:16::i;:::-;68322:128;;68366:73;68371:18;68391:47;68366:4;:73::i;68322:128::-;68573:16;:14;:16::i;:::-;68551:18;;:38;68547:153;;68612:77;68617:22;68641:47;68612:4;:77::i;68547:153::-;68791:17;;;;;;;;;-1:-1:-1;;;;;68791:17:10;68768:40;;68908:20;-1:-1:-1;;;;;68908:40:10;;:42;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;68908:42:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;68908:42:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;68908:42:10;68900:83;;;;;-1:-1:-1;;;68900:83:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;69057:17;:40;;-1:-1:-1;;;;;;69057:40:10;-1:-1:-1;;;;;69057:40:10;;;;;;;;;69200:70;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;69345:43:10;;;69341:138;;69425:53;;;22:32:-1;6:49;;69425:53:10;;;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;69390:89:10;;;;-1:-1:-1;;;;;69390:34:10;;;:89;;;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;69390:89:10;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;69390:89:10;;69341:138;69588:47;;;22:32:-1;6:49;;69588:47:10;;;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;69553:83:10;;;;-1:-1:-1;;;;;69553:34:10;;;:83;;;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;69553:83:10;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;-1:-1;69659:14:10;;-1:-1:-1;69654:20:10;;-1:-1:-1;69654:20:10;57906:1004;57987:4;58041:16;:14;:16::i;:::-;58036:123;;58080:68;58085:18;58105:42;58080:4;:68::i;:::-;58073:75;;;;58036:123;58263:16;:14;:16::i;:::-;58241:18;;:38;58237:148;;58302:72;58307:22;58331:42;58302:4;:72::i;58237:148::-;1490:4:11;58454:71:10;58459:48;58464:24;58490:16;;58459:4;:48::i;:::-;58509:15;;58454:4;:71::i;:::-;:106;58450:210;;;58583:66;58588:15;58605:43;58583:4;:66::i;58450:210::-;58702:21;;;58733:48;;;;58797:68;;;;;;;;;;;;;;;;;;;;;;;;;58888:14;58883:20;;55006:1737;55077:4;55187:16;:14;:16::i;:::-;55165:18;;:38;55161:143;;55226:67;55231:22;55255:37;55226:4;:67::i;55161:143::-;-1:-1:-1;;55358:19:10;:31;55354:75;;;55413:16;;55391:38;;55354:75;55471:23;55497:28;:26;:28::i;:::-;55471:54;;1490:4:11;55659:74:10;55664:48;55669:21;;55692:19;55664:4;:48::i;:::-;55714:18;55659:4;:74::i;:::-;:109;55655:208;;;55791:61;55796:15;55813:38;55791:4;:61::i;55655:208::-;55929:19;55909:16;;:39;55905:470;;56006:16;:14;:16::i;:::-;56001:126;;56049:63;56054:18;56074:37;56049:4;:63::i;56001:126::-;56197:16;;;56227:38;;;;56311:53;;;;;;;;;;;;;;;;;;;;;;;;;55905:470;;56439:18;56420:15;;:37;56416:283;;56527:15;;;56556:36;;;;56638:50;;;;;;;;;;;;;;;;;;;;;;;;;56416:283;;56721:14;56716:20;;15134:1234;15242:11;;15195:9;;;;15267:17;15263:1099;;-1:-1:-1;;15456:27:10;;15436:18;;-1:-1:-1;15428:56:10;;15263:1099;15695:14;15712;:12;:14::i;:::-;15695:31;;15740:33;15787:23;;:::i;:::-;15824:17;15898:97;15913:9;15924:12;;15938:56;15943:13;;15958:35;15963:14;;15979:13;;15958:4;:35::i;15938:56::-;15898:14;:97::i;:::-;15856:139;-1:-1:-1;15856:139:10;-1:-1:-1;16024:18:10;16013:7;:29;;;;;;;;;16009:87;;16070:7;-1:-1:-1;16079:1:10;;-1:-1:-1;16062:19:10;;-1:-1:-1;;;;16062:19:10;16009:87;16136:50;16143:28;16173:12;16136:6;:50::i;:::-;16110:76;-1:-1:-1;16110:76:10;-1:-1:-1;16215:18:10;16204:7;:29;;;;;;;;;16200:87;;16261:7;-1:-1:-1;16270:1:10;;-1:-1:-1;16253:19:10;;-1:-1:-1;;;;16253:19:10;16200:87;-1:-1:-1;16329:21:10;16309:18;;-1:-1:-1;16329:21:10;-1:-1:-1;16301:50:10;;-1:-1:-1;;;16301:50:10;15134:1234;;;:::o;1655:865:8:-;1861:14;;1827:79;;;-1:-1:-1;;;1827:79:8;;-1:-1:-1;;;;;1861:14:8;;;1827:79;;;;;;;;;;;;;;;;;;;326:42:11;;1827:33:8;;:79;;;;;;;;;;;;;;326:42:11;1827:79:8;;;5:2:-1;;;;30:1;27;20:12;5:2;1827:79:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1827:79:8;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1827:79:8;1819:97;;;;;-1:-1:-1;;;1819:97:8;;;;;;;;;;;;-1:-1:-1;;;1819:97:8;;;;;;;;;;;;;;;2003:11;1999:40;;;2016:23;:21;:23::i;:::-;2084:25;2112:14;;-1:-1:-1;;;;;2173:32:8;;;-1:-1:-1;;;;;;2173:32:8;;;;;2330:81;;;;;;;;;;;;;;;;;2112:14;;;;;2301:122;;2323:4;;2386:24;;2330:81;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2330:81:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2330:81:8;;;-1:-1:-1;;26:21;;;22:32;6:49;;2330:81:8;;;49:4:-1;25:18;;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2301:122:8;;;;;;;;;;;-1:-1:-1;;;2301:122:8;;;;2330:81;;-1:-1:-1;2301:122:8;-1:-1:-1;2301:13:8;;-1:-1:-1;2301:122:8:i;:::-;-1:-1:-1;2498:14:8;;2461:52;;;-1:-1:-1;;;;;2461:52:8;;;;;2498:14;;;2461:52;;;;;;;;;;;;;;;;1655:865;;;;:::o;3925:2226:10:-;4097:11;;:60;;;-1:-1:-1;;;4097:60:10;;4133:4;4097:60;;;;-1:-1:-1;;;;;4097:60:10;;;;;;;;;;;;;;;;;;;;;;4023:4;;;;4097:11;;:27;;:60;;;;;;;;;;;;;;4023:4;4097:11;:60;;;5:2:-1;;;;30:1;27;20:12;5:2;4097:60:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4097:60:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4097:60:10;;-1:-1:-1;4171:12:10;;4167:142;;4206:92;4217:27;4246:42;4290:7;4206:10;:92::i;:::-;4199:99;;;;;4167:142;4372:3;-1:-1:-1;;;;;4365:10:10;:3;-1:-1:-1;;;;;4365:10:10;;4361:103;;;4398:55;4403:15;4420:32;4398:4;:55::i;4361:103::-;4538:22;-1:-1:-1;;;;;4578:14:10;;;;;;;4574:156;;;-1:-1:-1;;;4574:156:10;;;-1:-1:-1;;;;;;4687:23:10;;;;;;;:18;:23;;;;;;;;:32;;;;;;;;;;4574:156;4805:17;4832;4859;4886;4940:34;4948:17;4967:6;4940:7;:34::i;:::-;4914:60;;-1:-1:-1;4914:60:10;-1:-1:-1;4999:18:10;4988:7;:29;;;;;;;;;4984:123;;5040:56;5045:16;5063:32;5040:4;:56::i;:::-;5033:63;;;;;;;;;;4984:123;-1:-1:-1;;;;;5151:18:10;;;;;;:13;:18;;;;;;5143:35;;5171:6;5143:7;:35::i;:::-;5117:61;;-1:-1:-1;5117:61:10;-1:-1:-1;5203:18:10;5192:7;:29;;;;;;;;;5188:122;;5244:55;5249:16;5267:31;5244:4;:55::i;5188:122::-;-1:-1:-1;;;;;5354:18:10;;;;;;:13;:18;;;;;;5346:35;;5374:6;5346:7;:35::i;:::-;5320:61;;-1:-1:-1;5320:61:10;-1:-1:-1;5406:18:10;5395:7;:29;;;;;;;;;5391:120;;5447:53;5452:16;5470:29;5447:4;:53::i;5391:120::-;-1:-1:-1;;;;;5638:18:10;;;;;;;:13;:18;;;;;;:33;;;5681:18;;;;;;:33;;;-1:-1:-1;;5784:29:10;;5780:107;;-1:-1:-1;;;;;5829:23:10;;;;;;;:18;:23;;;;;;;;:32;;;;;;;;;:47;;;5780:107;5955:3;-1:-1:-1;;;;;5941:26:10;5950:3;-1:-1:-1;;;;;5941:26:10;-1:-1:-1;;;;;;;;;;;5960:6:10;5941:26;;;;;;;;;;;;;;;;;;6129:14;6117:27;;;;;;;;3925:2226;;;;;;;:::o;528:335::-;664:11;;709:26;;;-1:-1:-1;;;709:26:10;;;;577:4;;-1:-1:-1;;;;;664:11:10;;;;709:24;;:26;;;;;;;;;;;;;;;664:11;709:26;;;5:2:-1;;;;30:1;27;20:12;5:2;709:26:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;709:26:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;709:26:10;-1:-1:-1;;;;;695:40:10;:10;:40;:79;;;;;739:18;-1:-1:-1;;;;;739:33:10;;:35;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;739:35:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;739:35:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;739:35:10;695:79;694:162;;;-1:-1:-1;780:10:10;326:42:11;780:32:10;:75;;;;;816:18;-1:-1:-1;;;;;816:37:10;;:39;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;816:39:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;816:39:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;816:39:10;687:169;;;528:335;:::o;2431:306:21:-;2508:9;2519:4;2536:13;2551:18;;:::i;:::-;2573:20;2583:1;2586:6;2573:9;:20::i;:::-;2535:58;;-1:-1:-1;2535:58:21;-1:-1:-1;2614:18:21;2607:3;:25;;;;;;;;;2603:71;;-1:-1:-1;2656:3:21;-1:-1:-1;2661:1:21;;-1:-1:-1;2648:15:21;;2603:71;2692:18;2712:17;2721:7;2712:8;:17::i;:::-;2684:46;;;;;;2431:306;;;;;:::o;4560:227:7:-;4607:4;4624:13;4639:20;4663:41;4671:21;4694:9;4663:7;:41::i;:::-;4623:81;;-1:-1:-1;4623:81:7;-1:-1:-1;4729:18:7;4722:3;:25;;;;;;;;;4714:34;;;;;37117:571:10;37202:4;37208;37186:5;71531:30;71551:9;71531:19;:30::i;:::-;37224:10;37237:16;:14;:16::i;:::-;37224:29;-1:-1:-1;37267:29:10;;37263:257;;37438:67;37449:5;37443:12;;;;;;;;37457:47;37438:4;:67::i;37263:257::-;37628:53;37645:10;37657;37669:11;37628:16;:53::i;59995:1627::-;60062:4;60118:21;60188:16;:14;:16::i;:::-;60183:120;;60227:65;60232:18;60252:39;60227:4;:65::i;60183:120::-;60426:16;:14;:16::i;:::-;60404:18;;:38;60400:145;;60465:69;60470:22;60494:39;60465:4;:69::i;60400:145::-;60648:12;60631:14;:12;:14::i;:::-;:29;60627:150;;;60683:83;60688:29;60719:46;60683:4;:83::i;60627:150::-;60868:13;;60853:12;:28;60849:127;;;60904:61;60909:15;60926:38;60904:4;:61::i;60849:127::-;61210:33;61215:13;;61230:12;61210:4;:33::i;:::-;61314:13;:32;;;61191:52;-1:-1:-1;61463:39:10;61477:10;61489:12;61463:13;:39::i;:::-;61518:59;;;61534:10;61518:59;;;;;;;;;;;;;;;;;;;;;;;;;61600:14;61595:20;;26431:536;26522:4;26506:5;71531:30;71551:9;71531:19;:30::i;:::-;26538:10;26551:16;:14;:16::i;:::-;26538:29;-1:-1:-1;26581:29:10;;26577:246;;26751:61;26762:5;26756:12;;;;;;;;26770:41;26751:4;:61::i;26577:246::-;26920:40;26932:10;26944:1;26947:12;26920:11;:40::i;12788:1238::-;-1:-1:-1;;;;;13130:23:10;;12865:9;13130:23;;;:14;:23;;;;;13354:24;;12865:9;;;;;;;;13350:90;;-1:-1:-1;13407:18:10;;-1:-1:-1;13407:18:10;;-1:-1:-1;13399:30:10;;-1:-1:-1;;;13399:30:10;13350:90;13662:46;13670:14;:24;;;13696:11;;13662:7;:46::i;:::-;13629:79;;-1:-1:-1;13629:79:10;-1:-1:-1;13733:18:10;13722:7;:29;;;;;;;;;13718:79;;-1:-1:-1;13775:7:10;;-1:-1:-1;13784:1:10;;-1:-1:-1;13767:19:10;;-1:-1:-1;;13767:19:10;13718:79;13827:58;13835:19;13856:14;:28;;;13827:7;:58::i;:::-;13807:78;;-1:-1:-1;13807:78:10;-1:-1:-1;13910:18:10;13899:7;:29;;;;;;;;;13895:79;;-1:-1:-1;13952:7:10;;-1:-1:-1;13961:1:10;;-1:-1:-1;13944:19:10;;-1:-1:-1;;13944:19:10;13895:79;-1:-1:-1;13992:18:10;;-1:-1:-1;14012:6:10;-1:-1:-1;;;12788:1238:10;;;;:::o;62718:1424::-;62789:4;62845:21;62990:16;:14;:16::i;:::-;62968:18;;:38;62964:148;;63029:72;63034:22;63058:42;63029:4;:72::i;62964:148::-;63215:14;63198;:12;:14::i;:::-;:31;63194:155;;;63252:86;63257:29;63288:49;63252:4;:86::i;63194:155::-;63444:13;;63427:14;:30;63423:132;;;63480:64;63485:15;63502:41;63480:4;:64::i;63423:132::-;63791:35;63796:13;;63811:14;63791:4;:35::i;:::-;63899:13;:32;;;63772:54;-1:-1:-1;64048:49:10;326:42:11;64082:14:10;64048:13;:49::i;3095:114:22:-;3148:4;3171:31;3176:1;3179;3171:31;;;;;;;;;;;;;-1:-1:-1;;;3171:31:22;;;:4;:31::i;1302:230:12:-;1358:9;1369:4;1394:1;1389;:6;1385:141;;-1:-1:-1;1419:18:12;;-1:-1:-1;1439:5:12;;;1411:34;;1385:141;-1:-1:-1;1484:27:12;;-1:-1:-1;1513:1:12;1476:39;;18030:2317:10;18161:4;18804:31;;:::i;:::-;18838:53;18843:35;;;;;;;;18858:18;18843:35;;;18880:10;18838:4;:53::i;:::-;18804:87;;18901:24;18928:54;18947:20;18969:12;;18928:18;:54::i;:::-;18901:81;;18992:20;19015:39;19020:19;19041:12;;19015:4;:39::i;:::-;18992:62;;19064:21;19088:101;19114:38;;;;;;;;19129:21;;19114:38;;;19154:19;19175:13;;19088:25;:101::i;:::-;19064:125;;19199:21;19223:95;19249:32;;;;;;;;19264:15;;19249:32;;;19283:19;19304:13;;19223:25;:95::i;:::-;19199:119;;19328:22;19353:97;19379:33;;;;;;;;19394:16;;19379:33;;;19414:19;19435:14;;19353:25;:97::i;:::-;19328:122;;19460:19;19482:73;19508:20;19530:11;;19543;;19482:25;:73::i;:::-;19752:18;:39;;;19801:11;:28;;;19839:12;:30;;;19879:13;:32;;;19921:13;:32;;;19963:14;:34;;;20059:79;;;;;;;;;;;;;;;;;;;;;;;;;;19460:95;;-1:-1:-1;20059:79:10;;;;;;;;;;20203:17;;20227:74;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;20227:74:10;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;20195:107:10;;;;-1:-1:-1;;;;;20203:17:10;;;;20227:74;;20195:107;;;;25:18:-1;20195:107:10;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;20195:107:10;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;-1:-1;20325:14:10;;-1:-1:-1;20320:20:10;;-1:-1:-1;20320:20:10;;20313:27;18030:2317;-1:-1:-1;;;;;;;;;;;;18030:2317:10:o;65247:1492::-;65319:4;65376:22;65522:16;:14;:16::i;:::-;65500:18;;:38;65496:149;;65561:73;65566:22;65590:43;65561:4;:73::i;65496:149::-;65748:14;65731;:12;:14::i;:::-;:31;65727:156;;;65785:87;65790:29;65821:50;65785:4;:87::i;65727:156::-;65980:14;;65963;:31;65959:134;;;66017:65;66022:15;66039:42;66017:4;:65::i;65959:134::-;66331:36;66336:14;;66352;66331:4;:36::i;:::-;66311:56;;66459:17;66442:14;:34;;;;66593:101;66654:11;;;;;;;;;-1:-1:-1;;;;;66654:11:10;-1:-1:-1;;;;;66623:50:10;;:52;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;66623:52:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;66623:52:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;66623:52:10;66679:14;66593:13;:101::i;43181:986::-;43322:4;43328;43306:5;71531:30;71551:9;71531:19;:30::i;:::-;43344:10;43357:16;:14;:16::i;:::-;43344:29;-1:-1:-1;43387:29:10;;43383:266;;43563:71;43574:5;43568:12;;;;;;;;43582:51;43563:4;:71::i;:::-;43555:83;-1:-1:-1;43636:1:10;;-1:-1:-1;43555:83:10;;-1:-1:-1;43555:83:10;43383:266;43667:16;-1:-1:-1;;;;;43667:31:10;;:33;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;43667:33:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;43667:33:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;43667:33:10;;-1:-1:-1;43714:29:10;;43710:270;;43890:75;43901:5;43895:12;;;;;;;;43909:55;43890:4;:75::i;43710:270::-;44087:73;44108:10;44120:8;44130:11;44143:16;44087:20;:73::i;:::-;44080:80;;;;;71571:1;71582:29;71601:9;71582:18;:29::i;:::-;43181:986;;;;;;;:::o;50058:3037::-;50247:11;;:87;;;-1:-1:-1;;;50247:87:10;;50280:4;50247:87;;;;-1:-1:-1;;;;;50247:87:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;50176:4;;;;50247:11;;:24;;:87;;;;;;;;;;;;;;50176:4;50247:11;:87;;;5:2:-1;;;;30:1;27;20:12;5:2;50247:87:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;50247:87:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;50247:87:10;;-1:-1:-1;50348:12:10;;50344:149;;50383:99;50394:27;50423:49;50474:7;50383:10;:99::i;50344:149::-;50563:10;-1:-1:-1;;;;;50551:22:10;:8;-1:-1:-1;;;;;50551:22:10;;50547:144;;;50596:84;50601:26;50629:50;50596:4;:84::i;50547:144::-;50701:34;;:::i;:::-;-1:-1:-1;;;;;51065:23:10;;;;;;:13;:23;;;;;;51057:45;;51090:11;51057:7;:45::i;:::-;51031:22;;;51016:86;;;51017:4;51016:86;;;;;;;;;;;;;;;;;;;-1:-1:-1;51132:18:10;;-1:-1:-1;51116:12:10;;:34;;;;;;;;;51112:174;;51173:102;51184:16;51202:52;51261:4;:12;;;51256:18;;;;;;;51173:102;51166:109;;;;;;51112:174;51323:62;51328:11;51341:43;;;;;;;;4259:6:11;51341:43:10;;;51323:4;:62::i;:::-;51296:24;;;:89;;;51424:43;;51429:11;;51424:4;:43::i;:::-;51395:26;;;:72;51522:28;:26;:28::i;:::-;51493:25;;;51478:72;;;51479:4;51478:72;;;;;;;;;;;;;;;;;;;-1:-1:-1;51584:18:10;;-1:-1:-1;51568:12:10;;:34;;;;;;;;;51560:71;;;;;-1:-1:-1;;;51560:71:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;51669:88;51688:42;;;;;;;;51703:4;:25;;;51688:42;;;51732:4;:24;;;51669:18;:88::i;:::-;51642:24;;;:115;;;51797:13;;51792:45;;:4;:45::i;:::-;51768:21;;;:69;51874:11;;51887:24;;;;51869:43;;51874:11;51869:4;:43::i;:::-;51847:19;;;:65;-1:-1:-1;;;;;51974:25:10;;;;;;:13;:25;;;;;;52001:26;;;;51966:62;;51974:25;51966:7;:62::i;:::-;51938:24;;;51923:105;;;51924:4;51923:105;;;;;;;;;;;;;;;;;;;-1:-1:-1;52058:18:10;;-1:-1:-1;52042:12:10;;:34;;;;;;;;;52038:174;;52099:102;52110:16;52128:52;52187:4;:12;;;52182:18;;;;;;;52038:174;52424:21;;;;52408:13;:37;52469:19;;;;52455:11;:33;52524:22;;;;;-1:-1:-1;;;;;52498:23:10;;;-1:-1:-1;52498:23:10;;;:13;:23;;;;;;:48;;;;52584:24;;;;52556:25;;;;;;;;;;:52;;;;52691:26;;;;52660:58;;;;;;;52556:25;;52498:23;;-1:-1:-1;;;;;;;;;;;52660:58:10;;;;;;;;;;52767:24;;;;52733:59;;;;;;;52760:4;;-1:-1:-1;;;;;52733:59:10;;;-1:-1:-1;;;;;;;;;;;52733:59:10;;;;;;;;52836:24;;;;52862:21;;;;52807:77;;;52829:4;52807:77;;;;;;;;;;;;;;;;;;;;;;;;;;53073:14;53061:27;50058:3037;-1:-1:-1;;;;;;;50058:3037:10:o;32601:523::-;32682:4;32666:5;71531:30;71551:9;71531:19;:30::i;:::-;32698:10;32711:16;:14;:16::i;:::-;32698:29;-1:-1:-1;32741:29:10;;32737:246;;32911:61;32922:5;32916:12;;;;;;;;32930:41;32911:4;:61::i;32737:246::-;33080:37;33092:10;33104:12;33080:11;:37::i;25533:526::-;25614:4;25598:5;71531:30;71551:9;71531:19;:30::i;:::-;25630:10;25643:16;:14;:16::i;:::-;25630:29;-1:-1:-1;25673:29:10;;25669:246;;25843:61;25854:5;25848:12;;;;;;;25669:246;26012:40;26024:10;26036:12;26050:1;26012:11;:40::i;38013:593::-;38122:4;38128;38106:5;71531:30;71551:9;71531:19;:30::i;:::-;38144:10;38157:16;:14;:16::i;:::-;38144:29;-1:-1:-1;38187:29:10;;38183:257;;38358:67;38369:5;38363:12;;;;;;;;38377:47;38358:4;:67::i;:::-;38350:79;-1:-1:-1;38427:1:10;;-1:-1:-1;38350:79:10;;-1:-1:-1;38350:79:10;38183:257;38548:51;38565:10;38577:8;38587:11;38548:16;:51::i;:::-;38541:58;;;;;71571:1;71582:29;71601:9;71582:18;:29::i;:::-;38013:593;;;;;;:::o;8835:241:20:-;8920:4;8941:43;8954:3;8949:9;;;;;;;;8965:4;8960:10;;;;;;;;8941:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;9009:27;9002:3;:34;;;;;;;;;:67;;9065:3;9060:9;;;;;;;;9002:67;;;-1:-1:-1;9039:4:20;:18;;8995:74;-1:-1:-1;;8835:241:20:o;5020:240:7:-;5087:4;5136:10;-1:-1:-1;;;;;5136:18:7;;;5128:46;;;;;-1:-1:-1;;;5128:46:7;;;;;;;;;;;;-1:-1:-1;;;5128:46:7;;;;;;;;;;;;;;;5205:6;5192:9;:19;5184:46;;;;;-1:-1:-1;;;5184:46:7;;;;;;;;;;;;-1:-1:-1;;;5184:46:7;;;;;;;;;;;;;;4423:330:21;4511:9;4522:4;4539:13;4554:19;;:::i;:::-;4577:31;4592:6;4600:7;4577:14;:31::i;3355:118:10:-;3416:4;326:42:11;-1:-1:-1;;;;;3439:25:10;;:27;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;1926:263:12;1997:9;2008:4;2025:14;2041:8;2053:13;2061:1;2064;2053:7;:13::i;:::-;2024:42;;-1:-1:-1;2024:42:12;-1:-1:-1;2089:18:12;2081:4;:26;;;;;;;;;2077:73;;-1:-1:-1;2131:4:12;-1:-1:-1;2137:1:12;;-1:-1:-1;2123:16:12;;2077:73;2167:15;2175:3;2180:1;2167:7;:15::i;:::-;2160:22;;;;;;1926:263;;;;;;;:::o;771:503:21:-;832:9;843:10;;:::i;:::-;866:14;882:20;906:22;914:3;409:4:22;906:7:21;:22::i;:::-;865:63;;-1:-1:-1;865:63:21;-1:-1:-1;950:18:21;942:4;:26;;;;;;;;;938:90;;-1:-1:-1;998:18:21;;;;;;;;;-1:-1:-1;998:18:21;;992:4;;-1:-1:-1;998:18:21;-1:-1:-1;984:33:21;;938:90;1039:14;1055:13;1072:31;1080:15;1097:5;1072:7;:31::i;:::-;1038:65;;-1:-1:-1;1038:65:21;-1:-1:-1;1125:18:21;1117:4;:26;;;;;;;;;1113:90;;-1:-1:-1;1173:18:21;;;;;;;;;-1:-1:-1;1173:18:21;;1167:4;;-1:-1:-1;1173:18:21;-1:-1:-1;1159:33:21;;-1:-1:-1;;1159:33:21;1113:90;1241:25;;;;;;;;;;;;-1:-1:-1;;1241:25:21;;-1:-1:-1;771:503:21;-1:-1:-1;;;;;;771:503:21:o;1081:186:8:-;1198:63;;73327:765:10;73431:12;73456;73470:23;73497:6;-1:-1:-1;;;;;73497:11:10;73509:4;73497:17;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;73497:17:10;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;73455:59:10;;;;73530:7;73525:533;;73623:17;;:21;73619:429;;73881:10;73875:17;73941:15;73928:10;73924:2;73920:19;73913:44;73830:145;74013:20;;-1:-1:-1;;;74013:20:10;;;;;;;;;;;;;;;;;74020:12;;74013:20;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;73619:429:10;74075:10;73327:765;-1:-1:-1;;;;;73327:765:10:o;1612:250:12:-;1668:9;;1704:5;;;1724:6;;;1720:136;;1754:18;;-1:-1:-1;1774:1:12;-1:-1:-1;1746:30:12;;1720:136;-1:-1:-1;1815:26:12;;-1:-1:-1;1843:1:12;;-1:-1:-1;1807:38:12;;1977:346:21;2046:9;2057:10;;:::i;:::-;2080:14;2096:19;2119:27;2127:1;:10;;;2139:6;2119:7;:27::i;:::-;2079:67;;-1:-1:-1;2079:67:21;-1:-1:-1;2168:18:21;2160:4;:26;;;;;;;;;2156:90;;-1:-1:-1;2216:18:21;;;;;;;;;-1:-1:-1;2216:18:21;;2210:4;;-1:-1:-1;2216:18:21;-1:-1:-1;2202:33:21;;2156:90;2284:31;;;;;;;;;;;;-1:-1:-1;;2284:31:21;;-1:-1:-1;1977:346:21;-1:-1:-1;;;;1977:346:21:o;788:210:22:-;968:12;409:4;968:23;;;788:210::o;39291:3373:10:-;39469:11;;:75;;;-1:-1:-1;;;39469:75:10;;39508:4;39469:75;;;;-1:-1:-1;;;;;39469:75:10;;;;;;;;;;;;;;;;;;;;;;39386:4;;;;;;39469:11;;;:30;;:75;;;;;;;;;;;;;;;39386:4;39469:11;:75;;;5:2:-1;;;;30:1;27;20:12;5:2;39469:75:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;39469:75:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;39469:75:10;;-1:-1:-1;39558:12:10;;39554:151;;39594:96;39605:27;39634:46;39682:7;39594:10;:96::i;:::-;39586:108;-1:-1:-1;39692:1:10;;-1:-1:-1;39586:108:10;;-1:-1:-1;39586:108:10;39554:151;39812:16;:14;:16::i;:::-;39790:18;;:38;39786:151;;39852:70;39857:22;39881:40;39852:4;:70::i;39786:151::-;39947:32;;:::i;:::-;-1:-1:-1;;;;;40090:24:10;;;;;;:14;:24;;;;;:38;;;40069:18;;;:59;40256:37;40105:8;40256:27;:37::i;:::-;40233:19;;;40218:75;;;40219:12;;;40218:75;;;;;;;;;;;;;;;;;;;-1:-1:-1;40323:18:10;;-1:-1:-1;40307:4:10;:12;;;:34;;;;;;;;;40303:190;;40365:113;40376:16;40394:63;40464:4;:12;;;40459:18;;;;;;;40365:113;40357:125;-1:-1:-1;40480:1:10;;-1:-1:-1;40357:125:10;;-1:-1:-1;;40357:125:10;40303:190;-1:-1:-1;;40572:11:10;:23;40568:153;;;40630:19;;;;40611:16;;;:38;40568:153;;;40680:16;;;:30;;;40568:153;41306:37;41319:5;41326:4;:16;;;41306:12;:37::i;:::-;41281:22;;;:62;;;41646:19;;;;41638:52;;:7;:52::i;:::-;41612:22;;;41597:93;;;41598:12;;;41597:93;;;;;;;;;;;;;;;;;;;-1:-1:-1;41724:18:10;;-1:-1:-1;41708:4:10;:12;;;:34;;;;;;;;;41700:105;;;;-1:-1:-1;;;41700:105:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41855:45;41863:12;;41877:4;:22;;;41855:7;:45::i;:::-;41831:20;;;41816:84;;;41817:12;;;41816:84;;;;;;;;;;;;;;;;;;;-1:-1:-1;41934:18:10;;-1:-1:-1;41918:4:10;:12;;;:34;;;;;;;;;41910:96;;;;-1:-1:-1;;;41910:96:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42123:22;;;;;;-1:-1:-1;;;;;42086:24:10;;;;;;;:14;:24;;;;;;;;;:59;;;42196:11;;42155:38;;;;:52;;;;42232:20;;;;42217:12;:35;;;42339:22;;;;42363;;42310:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42634:22;;;42617:14;;42634:22;;-1:-1:-1;39291:3373:10;-1:-1:-1;;;;;39291:3373:10:o;3712:118:22:-;3765:4;3788:35;3793:1;3796;3788:35;;;;;;;;;;;;;-1:-1:-1;;;3788:35:22;;;:4;:35::i;5266:149:7:-;5389:19;;-1:-1:-1;;;;;5389:11:7;;;:19;;;;;5401:6;;5389:19;;;;5401:6;5389:11;:19;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;27836:4504:10;27943:4;27967:19;;;:42;;-1:-1:-1;27990:19:10;;27967:42;27959:107;;;;-1:-1:-1;;;27959:107:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28077:27;;:::i;:::-;28218:28;:26;:28::i;:::-;28189:25;;;28174:72;;;28175:12;;;28174:72;;;;;;;;;;;;;;;;;;;-1:-1:-1;28276:18:10;;-1:-1:-1;28260:4:10;:12;;;:34;;;;;;;;;28256:166;;28317:94;28328:16;28346:44;28397:4;:12;;;28392:18;;;;;;;28317:94;28310:101;;;;;28256:166;28473:18;;28469:1265;;28743:17;;;:34;;;28846:42;;;;;;;;28861:25;;;;28846:42;;28828:77;;28763:14;28828:17;:77::i;:::-;28807:17;;;28792:113;;;28793:12;;;28792:113;;;;;;;;;;;;;;;;;;;-1:-1:-1;28939:18:10;;-1:-1:-1;28923:4:10;:12;;;:34;;;;;;;;;28919:183;;28984:103;28995:16;29013:53;29073:4;:12;;;29068:18;;;;;;;28919:183;28469:1265;;;29396:82;29419:14;29435:42;;;;;;;;29450:4;:25;;;29435:42;;;29396:22;:82::i;:::-;29375:17;;;29360:118;;;29361:12;;;29360:118;;;;;;;;;;;;;;;;;;;-1:-1:-1;29512:18:10;;-1:-1:-1;29496:4:10;:12;;;:34;;;;;;;;;29492:183;;29557:103;29568:16;29586:53;29646:4;:12;;;29641:18;;;;;;;29492:183;29689:17;;;:34;;;28469:1265;29800:11;;29851:17;;;;29800:69;;;-1:-1:-1;;;29800:69:10;;29834:4;29800:69;;;;-1:-1:-1;;;;;29800:69:10;;;;;;;;;;;;;;;;29785:12;;29800:11;;;;;:25;;:69;;;;;;;;;;;;;;;29785:12;29800:11;:69;;;5:2:-1;;;;30:1;27;20:12;5:2;29800:69:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29800:69:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;29800:69:10;;-1:-1:-1;29883:12:10;;29879:140;;29918:90;29929:27;29958:40;30000:7;29918:10;:90::i;:::-;29911:97;;;;;;29879:140;30126:16;:14;:16::i;:::-;30104:18;;:38;30100:140;;30165:64;30170:22;30194:34;30165:4;:64::i;30100:140::-;30528:39;30536:11;;30549:4;:17;;;30528:7;:39::i;:::-;30505:19;;;30490:77;;;30491:12;;;30490:77;;;;;;;;;;;;;;;;;;;-1:-1:-1;30597:18:10;;-1:-1:-1;30581:4:10;:12;;;:34;;;;;;;;;30577:176;;30638:104;30649:16;30667:54;30728:4;:12;;;30723:18;;;;;;;30577:176;-1:-1:-1;;;;;30811:23:10;;;;;;:13;:23;;;;;;30836:17;;;;30803:51;;30811:23;30803:7;:51::i;:::-;30778:21;;;30763:91;;;30764:12;;;30763:91;;;;;;;;;;;;;;;;;;;-1:-1:-1;30884:18:10;;-1:-1:-1;30868:4:10;:12;;;:34;;;;;;;;;30864:179;;30925:107;30936:16;30954:57;31018:4;:12;;;31013:18;;;;;;;30864:179;31138:4;:17;;;31121:14;:12;:14::i;:::-;:34;31117:153;;;31178:81;31183:29;31214:44;31178:4;:81::i;31117:153::-;31476:19;;;;31462:11;:33;31531:21;;;;-1:-1:-1;;;;;31505:23:10;;;;;;:13;:23;;;;;:47;31944:17;;;;31920:42;;31519:8;;31920:13;:42::i;:::-;32071:17;;;;32037:52;;;;;;;32064:4;;-1:-1:-1;;;;;32037:52:10;;;-1:-1:-1;;;;;;;;;;;32037:52:10;;;;;;;;32121:17;;;;32140;;;;;32104:54;;;-1:-1:-1;;;;;32104:54:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32208:11;;32258:17;;;;32277;;;;32208:87;;;-1:-1:-1;;;32208:87:10;;32241:4;32208:87;;;;-1:-1:-1;;;;;32208:87:10;;;;;;;;;;;;;;;;;;;;;;:11;;;;;:24;;:87;;;;;:11;;:87;;;;;;;:11;;:87;;;5:2:-1;;;;30:1;27;20:12;5:2;32208:87:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;32318:14:10;;-1:-1:-1;32313:20:10;;-1:-1:-1;;32313:20:10;;32306:27;27836:4504;-1:-1:-1;;;;;;27836:4504:10:o;542:331:12:-;598:9;;629:6;625:67;;-1:-1:-1;659:18:12;;-1:-1:-1;659:18:12;651:30;;625:67;711:5;;;715:1;711;:5;:1;731:5;;;;;:10;727:140;;-1:-1:-1;765:26:12;;-1:-1:-1;793:1:12;;-1:-1:-1;757:38:12;;727:140;834:18;;-1:-1:-1;854:1:12;-1:-1:-1;826:30:12;;963:209;1019:9;;1050:6;1046:75;;-1:-1:-1;1080:26:12;;-1:-1:-1;1108:1:12;1072:38;;1046:75;1139:18;1163:1;1159;:5;;;;;;1131:34;;;;963:209;;;;;:::o;3215:175:22:-;3296:4;3321:5;;;3352:12;3344:6;;;;3336:29;;;;-1:-1:-1;;;3336:29:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;3336:29:22;-1:-1:-1;3382:1:22;3215:175;-1:-1:-1;;;;3215:175:22:o;4160:131::-;4219:10;;:::i;:::-;4248:36;;;;;;;;4263:19;4268:1;:10;;;4280:1;4263:4;:19::i;:::-;4248:36;;4241:43;4160:131;-1:-1:-1;;;4160:131:22:o;1106:171::-;1184:4;1200:18;;:::i;:::-;1221:15;1226:1;1229:6;1221:4;:15::i;:::-;1200:36;;1253:17;1262:7;1253:8;:17::i;1417:205::-;1515:4;1531:18;;:::i;:::-;1552:15;1557:1;1560:6;1552:4;:15::i;:::-;1531:36;;1584:31;1589:17;1598:7;1589:8;:17::i;:::-;1608:6;1584:4;:31::i;44768:3544:10:-;44987:11;;:111;;;-1:-1:-1;;;44987:111:10;;45030:4;44987:111;;;;-1:-1:-1;;;;;44987:111:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44906:4;;;;;;44987:11;;;:34;;:111;;;;;;;;;;;;;;;44906:4;44987:11;:111;;;5:2:-1;;;;30:1;27;20:12;5:2;44987:111:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;44987:111:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;44987:111:10;;-1:-1:-1;45112:12:10;;45108:148;;45148:93;45159:27;45188:43;45233:7;45148:10;:93::i;:::-;45140:105;-1:-1:-1;45243:1:10;;-1:-1:-1;45140:105:10;;-1:-1:-1;45140:105:10;45108:148;45363:16;:14;:16::i;:::-;45341:18;;:38;45337:148;;45403:67;45408:22;45432:37;45403:4;:67::i;45337:148::-;45628:16;:14;:16::i;:::-;45587;-1:-1:-1;;;;;45587:35:10;;:37;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;45587:37:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;45587:37:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;45587:37:10;:57;45583:178;;45668:78;45673:22;45697:48;45668:4;:78::i;45583:178::-;45831:10;-1:-1:-1;;;;;45819:22:10;:8;-1:-1:-1;;;;;45819:22:10;;45815:143;;;45865:78;45870:26;45898:44;45865:4;:78::i;45815:143::-;46010:16;46006:145;;46050:86;46055:36;46093:42;46050:4;:86::i;46006:145::-;-1:-1:-1;;46204:11:10;:23;46200:156;;;46251:90;46256:36;46294:46;46251:4;:90::i;46200:156::-;46408:21;46431:22;46457:51;46474:10;46486:8;46496:11;46457:16;:51::i;:::-;46407:101;;-1:-1:-1;46407:101:10;-1:-1:-1;46522:40:10;;46518:161;;46586:78;46597:16;46591:23;;;;;;;;46616:47;46586:4;:78::i;:::-;46578:90;-1:-1:-1;46666:1:10;;-1:-1:-1;46578:90:10;;-1:-1:-1;;;46578:90:10;46518:161;46929:11;;:102;;;-1:-1:-1;;;46929:102:10;;46979:4;46929:102;;;;-1:-1:-1;;;;;46929:102:10;;;;;;;;;;;;;;;46886:21;;;;46929:11;;;:41;;:102;;;;;;;;;;;;:11;:102;;;5:2:-1;;;;30:1;27;20:12;5:2;46929:102:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;46929:102:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;46929:102:10;;;;;;;;;-1:-1:-1;46929:102:10;-1:-1:-1;47049:40:10;;47041:104;;;;-1:-1:-1;;;47041:104:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;47276:11;47236:16;-1:-1:-1;;;;;47236:26:10;;47263:8;47236:36;;;;;;;;;;;;;-1:-1:-1;;;;;47236:36:10;-1:-1:-1;;;;;47236:36:10;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;47236:36:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;47236:36:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;47236:36:10;:51;;47228:88;;;;;-1:-1:-1;;;47228:88:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;47442:15;-1:-1:-1;;;;;47471:42:10;;47508:4;47471:42;47467:250;;;47542:63;47564:4;47571:10;47583:8;47593:11;47542:13;:63::i;:::-;47529:76;;47467:250;;;47649:57;;;-1:-1:-1;;;47649:57:10;;-1:-1:-1;;;;;47649:57:10;;;;;;;;;;;;;;;;;;;;;;:22;;;;;;:57;;;;;;;;;;;;;;;-1:-1:-1;47649:22:10;:57;;;5:2:-1;;;;30:1;27;20:12;5:2;47649:57:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;47649:57:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;47649:57:10;;-1:-1:-1;47467:250:10;47820:34;;47812:67;;;;;-1:-1:-1;;;47812:67:10;;;;;;;;;;;;-1:-1:-1;;;47812:67:10;;;;;;;;;;;;;;;47941:96;;;-1:-1:-1;;;;;47941:96:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48270:14;48257:48;-1:-1:-1;48287:17:10;;-1:-1:-1;;;;;;44768:3544:10;;;;;;;;:::o;4297:119:22:-;4356:4;409;4379:19;4384:1;4387;:10;;;4379:4;:19::i;:::-;:30;;;;;;;4297:119;-1:-1:-1;;;4297:119:22:o;33537:3334:10:-;33693:11;;:64;;;-1:-1:-1;;;33693:64:10;;33727:4;33693:64;;;;-1:-1:-1;;;;;33693:64:10;;;;;;;;;;;;;;;33621:4;;;;33693:11;;:25;;:64;;;;;;;;;;;;;;33621:4;33693:11;:64;;;5:2:-1;;;;30:1;27;20:12;5:2;33693:64:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;33693:64:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;33693:64:10;;-1:-1:-1;33771:12:10;;33767:140;;33806:90;33817:27;33846:40;33888:7;33806:10;:90::i;:::-;33799:97;;;;;33767:140;34014:16;:14;:16::i;:::-;33992:18;;:38;33988:140;;34053:64;34058:22;34082:34;34053:4;:64::i;33988:140::-;34213:14;34230;:12;:14::i;:::-;34213:31;;34271:12;34259:9;:24;34255:136;;;34306:74;34311:29;34342:37;34306:4;:74::i;:::-;34299:81;;;;;;34255:136;34401:27;;:::i;:::-;34709:37;34737:8;34709:27;:37::i;:::-;34686:19;;;34671:75;;;34672:4;34671:75;;;;;;;;;;;;;;;;;;;-1:-1:-1;34776:18:10;;-1:-1:-1;34760:12:10;;:34;;;;;;;;;34756:179;;34817:107;34828:16;34846:57;34910:4;:12;;;34905:18;;;;;;;34817:107;34810:114;;;;;;;34756:179;34986:42;34994:4;:19;;;35015:12;34986:7;:42::i;:::-;34960:22;;;34945:83;;;34946:4;34945:83;;;;;;;;;;;;;;;;;;;-1:-1:-1;35058:18:10;;-1:-1:-1;35042:12:10;;:34;;;;;;;;;35038:186;;35099:114;35110:16;35128:64;35199:4;:12;;;35194:18;;;;;;;35038:186;35301:11;;35347:22;;;;;35301:69;;-1:-1:-1;;;35301:69:10;;35340:4;35301:69;;;;;;;;;;;;;-1:-1:-1;;;;;35301:11:10;;;;:30;;:69;;;;;;;;;;;;;;;:11;;:69;;;5:2:-1;;;;30:1;27;20:12;5:2;35301:69:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;35301:69:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;35301:69:10;;-1:-1:-1;35384:12:10;;35380:140;;35419:90;35430:27;35459:40;35501:7;35419:10;:90::i;35380:140::-;35569:35;35577:12;;35591;35569:7;:35::i;:::-;35545:20;;;35530:74;;;35531:4;35530:74;;;;;;;;;;;;;;;;;;;-1:-1:-1;35634:18:10;;-1:-1:-1;35618:12:10;;:34;;;;;;;;;35614:177;;35675:105;35686:16;35704:55;35766:4;:12;;;35761:18;;;;;;;35614:177;36024:22;;;;;-1:-1:-1;;;;;35987:24:10;;;;;;:14;:24;;;;;;:59;;;36097:11;;36056:38;;;;:52;36133:20;;;;36118:12;:35;36517:37;36002:8;36541:12;36517:13;:37::i;:::-;36638:22;;;;;36662:20;;;;;36607:76;;-1:-1:-1;;;;;36607:76:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36849:14;36837:27;33537:3334;-1:-1:-1;;;;;;33537:3334:10:o;3712:605:21:-;3792:9;3803:10;;:::i;:::-;4100:14;4116;4134:25;409:4:22;4152:6:21;4134:7;:25::i;:::-;4099:60;;-1:-1:-1;4099:60:21;-1:-1:-1;4181:18:21;4173:4;:26;;;;;;;;;4169:90;;-1:-1:-1;4229:18:21;;;;;;;;;-1:-1:-1;4229:18:21;;4223:4;;-1:-1:-1;4229:18:21;-1:-1:-1;4215:33:21;;4169:90;4275:35;4282:9;4293:7;:16;;;4275:6;:35::i;3836:155:22:-;3917:4;3949:12;3941:6;;;;3933:29;;;;-1:-1:-1;;;3933:29:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;3933:29:22;-1:-1:-1;;;3979:5:22;;;3836:155::o;4877:120::-;4930:4;4953:37;4958:1;4961;4953:37;;;;;;;;;;;;;;;;;5084:4;5104:6;;;:16;;-1:-1:-1;5114:6:22;;5104:16;5100:55;;;-1:-1:-1;5143:1:22;5136:8;;5100:55;5173:5;;;5177:1;5173;:5;:1;5196:5;;;;;:10;5208:12;5188:33;;;;;-1:-1:-1;;;5188:33:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;179:3704:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;179:3704:8;;;-1:-1:-1;179:3704:8;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;179:3704:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;179:3704:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;179:3704:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;179:3704:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;179:3704:8;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;"},"methodIdentifiers":{"_becomeImplementation(bytes)":"56e67728","_prepare()":"1db78944","_reduceReserves(uint256)":"601a0bf1","_setAdminFee(uint256)":"91dd36c6","_setImplementationSafe(address,bool,bytes)":"50d85b73","_setInterestRateModel(address)":"f2b3abbd","_setNameAndSymbol(string,string)":"34154d4c","_setReserveFactor(uint256)":"fca7820b","_withdrawAdminFees(uint256)":"a7b820df","_withdrawFuseFees(uint256)":"a03dce8d","accrualBlockNumber()":"6c540baf","accrueInterest()":"a6afed95","adminFeeMantissa()":"8d02d9a1","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","balanceOfUnderlying(address)":"3af9e669","borrow(uint256)":"c5ebeaec","borrowBalanceCurrent(address)":"17bfdfbc","borrowBalanceStored(address)":"95dd9193","borrowIndex()":"aa5af0fd","borrowRatePerBlock()":"f8f9da28","comptroller()":"5fe3b567","decimals()":"313ce567","exchangeRateCurrent()":"bd6d894d","exchangeRateStored()":"182df0f5","fuseFeeMantissa()":"dbfe7c19","getAccountSnapshot(address)":"c37f68e2","getCash()":"3b1d21a2","implementation()":"5c60da1b","initialize(address,address,string,string,uint256,uint256)":"79c2c954","initialize(address,address,uint256,string,string,uint8,uint256,uint256)":"0f8855e8","interestRateModel()":"f3fdb15a","isCEther()":"ac784ddc","isCToken()":"fe9c44ae","liquidateBorrow(address,address)":"aae40a2a","mint()":"1249c58b","name()":"06fdde03","protocolSeizeShareMantissa()":"6752e702","redeem(uint256)":"db006a75","redeemUnderlying(uint256)":"852a12e3","repayBorrow()":"4e4d9fea","repayBorrowBehalf(address)":"e5974619","reserveFactorMantissa()":"173b9904","seize(address,address,uint256)":"b2a02ff1","supplyRatePerBlock()":"ae9d70b0","symbol()":"95d89b41","totalAdminFees()":"61feacff","totalBorrows()":"47bd3718","totalBorrowsCurrent()":"73acee98","totalFuseFees()":"dc028ab1","totalReserves()":"8f840ddd","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","underlying()":"6f307dc3"}},"metadata":"{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"cashPrior\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"interestAccumulated\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"borrowIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalBorrows\",\"type\":\"uint256\"}],\"name\":\"AccrueInterest\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"borrowAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"accountBorrows\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalBorrows\",\"type\":\"uint256\"}],\"name\":\"Borrow\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"error\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"info\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"detail\",\"type\":\"uint256\"}],\"name\":\"Failure\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"liquidator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"repayAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"cTokenCollateral\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"seizeTokens\",\"type\":\"uint256\"}],\"name\":\"LiquidateBorrow\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"mintAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"mintTokens\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldAdminFeeMantissa\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newAdminFeeMantissa\",\"type\":\"uint256\"}],\"name\":\"NewAdminFee\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract ComptrollerInterface\",\"name\":\"oldComptroller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract ComptrollerInterface\",\"name\":\"newComptroller\",\"type\":\"address\"}],\"name\":\"NewComptroller\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldFuseFeeMantissa\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newFuseFeeMantissa\",\"type\":\"uint256\"}],\"name\":\"NewFuseFee\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldImplementation\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"NewImplementation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract InterestRateModel\",\"name\":\"oldInterestRateModel\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract InterestRateModel\",\"name\":\"newInterestRateModel\",\"type\":\"address\"}],\"name\":\"NewMarketInterestRateModel\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldReserveFactorMantissa\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newReserveFactorMantissa\",\"type\":\"uint256\"}],\"name\":\"NewReserveFactor\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"redeemer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"redeemAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"redeemTokens\",\"type\":\"uint256\"}],\"name\":\"Redeem\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"repayAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"accountBorrows\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalBorrows\",\"type\":\"uint256\"}],\"name\":\"RepayBorrow\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"benefactor\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"addAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newTotalReserves\",\"type\":\"uint256\"}],\"name\":\"ReservesAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reduceAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newTotalReserves\",\"type\":\"uint256\"}],\"name\":\"ReservesReduced\",\"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\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"_becomeImplementation\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"_prepare\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"reduceAmount\",\"type\":\"uint256\"}],\"name\":\"_reduceReserves\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newAdminFeeMantissa\",\"type\":\"uint256\"}],\"name\":\"_setAdminFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation_\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"allowResign\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"becomeImplementationData\",\"type\":\"bytes\"}],\"name\":\"_setImplementationSafe\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contract InterestRateModel\",\"name\":\"newInterestRateModel\",\"type\":\"address\"}],\"name\":\"_setInterestRateModel\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"}],\"name\":\"_setNameAndSymbol\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newReserveFactorMantissa\",\"type\":\"uint256\"}],\"name\":\"_setReserveFactor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"withdrawAmount\",\"type\":\"uint256\"}],\"name\":\"_withdrawAdminFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"withdrawAmount\",\"type\":\"uint256\"}],\"name\":\"_withdrawFuseFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"accrualBlockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"accrueInterest\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"adminFeeMantissa\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOfUnderlying\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"borrowAmount\",\"type\":\"uint256\"}],\"name\":\"borrow\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"borrowBalanceCurrent\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"borrowBalanceStored\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"borrowIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"borrowRatePerBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"comptroller\",\"outputs\":[{\"internalType\":\"contract ComptrollerInterface\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"exchangeRateCurrent\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"exchangeRateStored\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"fuseFeeMantissa\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getAccountSnapshot\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getCash\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contract ComptrollerInterface\",\"name\":\"comptroller_\",\"type\":\"address\"},{\"internalType\":\"contract InterestRateModel\",\"name\":\"interestRateModel_\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"initialExchangeRateMantissa_\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"decimals_\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"reserveFactorMantissa_\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"adminFeeMantissa_\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contract ComptrollerInterface\",\"name\":\"comptroller_\",\"type\":\"address\"},{\"internalType\":\"contract InterestRateModel\",\"name\":\"interestRateModel_\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"reserveFactorMantissa_\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"adminFeeMantissa_\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"interestRateModel\",\"outputs\":[{\"internalType\":\"contract InterestRateModel\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isCEther\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isCToken\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"contract CToken\",\"name\":\"cTokenCollateral\",\"type\":\"address\"}],\"name\":\"liquidateBorrow\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"mint\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"protocolSeizeShareMantissa\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"redeemTokens\",\"type\":\"uint256\"}],\"name\":\"redeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"redeemAmount\",\"type\":\"uint256\"}],\"name\":\"redeemUnderlying\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"repayBorrow\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"}],\"name\":\"repayBorrowBehalf\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"reserveFactorMantissa\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"liquidator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"seizeTokens\",\"type\":\"uint256\"}],\"name\":\"seize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"supplyRatePerBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalAdminFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalBorrows\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"totalBorrowsCurrent\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalFuseFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalReserves\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"underlying\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Compound\",\"methods\":{\"_becomeImplementation(bytes)\":{\"params\":{\"data\":\"The encoded bytes data for any initialization\"}},\"_prepare()\":{\"details\":\"Checks comptroller.autoImplementation and upgrades the implementation if necessary\"},\"_reduceReserves(uint256)\":{\"params\":{\"reduceAmount\":\"Amount of reduction to reserves\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"_setAdminFee(uint256)\":{\"details\":\"Admin function to accrue interest and set a new admin fee\",\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"_setImplementationSafe(address,bool,bytes)\":{\"params\":{\"allowResign\":\"Flag to indicate whether to call _resignImplementation on the old implementation\",\"becomeImplementationData\":\"The encoded bytes data to be passed to _becomeImplementation\",\"implementation_\":\"The address of the new implementation for delegation\"}},\"_setInterestRateModel(address)\":{\"details\":\"Admin function to accrue interest and update the interest rate model\",\"params\":{\"newInterestRateModel\":\"the new interest rate model to use\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"_setNameAndSymbol(string,string)\":{\"details\":\"Admin function to update the cToken ERC20 name and symbol\",\"params\":{\"_name\":\"the new ERC20 token name to use\",\"_symbol\":\"the new ERC20 token symbol to use\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"_setReserveFactor(uint256)\":{\"details\":\"Admin function to accrue interest and set a new reserve factor\",\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"_withdrawAdminFees(uint256)\":{\"params\":{\"withdrawAmount\":\"Amount of fees to withdraw\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"_withdrawFuseFees(uint256)\":{\"params\":{\"withdrawAmount\":\"Amount of fees to withdraw\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"accrueInterest()\":{\"details\":\"This calculates interest accrued from the last checkpointed block up to the current block and writes new checkpoint to storage.\"},\"allowance(address,address)\":{\"params\":{\"owner\":\"The address of the account which owns the tokens to be spent\",\"spender\":\"The address of the account which may transfer tokens\"},\"return\":\"The number of tokens allowed to be spent (-1 means infinite)\"},\"approve(address,uint256)\":{\"details\":\"This will overwrite the approval amount for `spender` and is subject to issues noted [here](https://eips.ethereum.org/EIPS/eip-20#approve)\",\"params\":{\"amount\":\"The number of tokens that are approved (-1 means infinite)\",\"spender\":\"The address of the account which may transfer tokens\"},\"return\":\"Whether or not the approval succeeded\"},\"balanceOf(address)\":{\"params\":{\"owner\":\"The address of the account to query\"},\"return\":\"The number of tokens owned by `owner`\"},\"balanceOfUnderlying(address)\":{\"details\":\"This also accrues interest in a transaction\",\"params\":{\"owner\":\"The address of the account to query\"},\"return\":\"The amount of underlying owned by `owner`\"},\"borrow(uint256)\":{\"params\":{\"borrowAmount\":\"The amount of the underlying asset to borrow\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"borrowBalanceCurrent(address)\":{\"params\":{\"account\":\"The address whose balance should be calculated after updating borrowIndex\"},\"return\":\"The calculated balance\"},\"borrowBalanceStored(address)\":{\"params\":{\"account\":\"The address whose balance should be calculated\"},\"return\":\"The calculated balance\"},\"borrowRatePerBlock()\":{\"return\":\"The borrow interest rate per block, scaled by 1e18\"},\"exchangeRateCurrent()\":{\"return\":\"Calculated exchange rate scaled by 1e18\"},\"exchangeRateStored()\":{\"details\":\"This function does not accrue interest before calculating the exchange rate\",\"return\":\"Calculated exchange rate scaled by 1e18\"},\"getAccountSnapshot(address)\":{\"details\":\"This is used by comptroller to more efficiently perform liquidity checks.\",\"params\":{\"account\":\"Address of the account to snapshot\"},\"return\":\"(possible error, token balance, borrow balance, exchange rate mantissa)\"},\"getCash()\":{\"return\":\"The quantity of underlying asset owned by this contract\"},\"initialize(address,address,string,string,uint256,uint256)\":{\"params\":{\"comptroller_\":\"The address of the Comptroller\",\"interestRateModel_\":\"The address of the interest rate model\",\"name_\":\"ERC-20 name of this token\",\"symbol_\":\"ERC-20 symbol of this token\"}},\"initialize(address,address,uint256,string,string,uint8,uint256,uint256)\":{\"params\":{\"comptroller_\":\"The address of the Comptroller\",\"decimals_\":\"EIP-20 decimal precision of this token\",\"initialExchangeRateMantissa_\":\"The initial exchange rate, scaled by 1e18\",\"interestRateModel_\":\"The address of the interest rate model\",\"name_\":\"EIP-20 name of this token\",\"symbol_\":\"EIP-20 symbol of this token\"}},\"liquidateBorrow(address,address)\":{\"details\":\"Reverts upon any failure\",\"params\":{\"borrower\":\"The borrower of this cToken to be liquidated\",\"cTokenCollateral\":\"The market in which to seize collateral from the borrower\"}},\"mint()\":{\"details\":\"Reverts upon any failure\"},\"redeem(uint256)\":{\"details\":\"Accrues interest whether or not the operation succeeds, unless reverted\",\"params\":{\"redeemTokens\":\"The number of cTokens to redeem into underlying\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"redeemUnderlying(uint256)\":{\"details\":\"Accrues interest whether or not the operation succeeds, unless reverted\",\"params\":{\"redeemAmount\":\"The amount of underlying to redeem\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"repayBorrow()\":{\"details\":\"Reverts upon any failure\"},\"repayBorrowBehalf(address)\":{\"details\":\"Reverts upon any failure\",\"params\":{\"borrower\":\"the account with the debt being payed off\"}},\"seize(address,address,uint256)\":{\"details\":\"Will fail unless called by another cToken during the process of liquidation. Its absolutely critical to use msg.sender as the borrowed cToken and not a parameter.\",\"params\":{\"borrower\":\"The account having collateral seized\",\"liquidator\":\"The account receiving seized collateral\",\"seizeTokens\":\"The number of cTokens to seize\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"supplyRatePerBlock()\":{\"return\":\"The supply interest rate per block, scaled by 1e18\"},\"totalBorrowsCurrent()\":{\"return\":\"The total borrows with interest\"},\"transfer(address,uint256)\":{\"params\":{\"amount\":\"The number of tokens to transfer\",\"dst\":\"The address of the destination account\"},\"return\":\"Whether or not the transfer succeeded\"},\"transferFrom(address,address,uint256)\":{\"params\":{\"amount\":\"The number of tokens to transfer\",\"dst\":\"The address of the destination account\",\"src\":\"The address of the source account\"},\"return\":\"Whether or not the transfer succeeded\"}},\"title\":\"Compound's CEtherDelegate Contract\"},\"userdoc\":{\"methods\":{\"_becomeImplementation(bytes)\":{\"notice\":\"Called by the delegator on a delegate to initialize it for duty\"},\"_prepare()\":{\"notice\":\"Function called before all delegator functions\"},\"_reduceReserves(uint256)\":{\"notice\":\"Accrues interest and reduces reserves by transferring to admin\"},\"_setAdminFee(uint256)\":{\"notice\":\"accrues interest and sets a new admin fee for the protocol using _setAdminFeeFresh\"},\"_setImplementationSafe(address,bool,bytes)\":{\"notice\":\"Called by the admin to update the implementation of the delegator\"},\"_setInterestRateModel(address)\":{\"notice\":\"accrues interest and updates the interest rate model using _setInterestRateModelFresh\"},\"_setNameAndSymbol(string,string)\":{\"notice\":\"updates the cToken ERC20 name and symbol\"},\"_setReserveFactor(uint256)\":{\"notice\":\"accrues interest and sets a new reserve factor for the protocol using _setReserveFactorFresh\"},\"_withdrawAdminFees(uint256)\":{\"notice\":\"Accrues interest and reduces admin fees by transferring to admin\"},\"_withdrawFuseFees(uint256)\":{\"notice\":\"Accrues interest and reduces Fuse fees by transferring to Fuse\"},\"accrueInterest()\":{\"notice\":\"Applies accrued interest to total borrows and reserves\"},\"allowance(address,address)\":{\"notice\":\"Get the current allowance from `owner` for `spender`\"},\"approve(address,uint256)\":{\"notice\":\"Approve `spender` to transfer up to `amount` from `src`\"},\"balanceOf(address)\":{\"notice\":\"Get the token balance of the `owner`\"},\"balanceOfUnderlying(address)\":{\"notice\":\"Get the underlying balance of the `owner`\"},\"borrow(uint256)\":{\"notice\":\"Sender borrows assets from the protocol to their own address\"},\"borrowBalanceCurrent(address)\":{\"notice\":\"Accrue interest to updated borrowIndex and then calculate account's borrow balance using the updated borrowIndex\"},\"borrowBalanceStored(address)\":{\"notice\":\"Return the borrow balance of account based on stored data\"},\"borrowRatePerBlock()\":{\"notice\":\"Returns the current per-block borrow interest rate for this cToken\"},\"constructor\":\"Construct an empty delegate\",\"exchangeRateCurrent()\":{\"notice\":\"Accrue interest then return the up-to-date exchange rate\"},\"exchangeRateStored()\":{\"notice\":\"Calculates the exchange rate from the underlying to the CToken\"},\"getAccountSnapshot(address)\":{\"notice\":\"Get a snapshot of the account's balances, and the cached exchange rate\"},\"getCash()\":{\"notice\":\"Get cash balance of this cToken in the underlying asset\"},\"initialize(address,address,string,string,uint256,uint256)\":{\"notice\":\"Initialize the new money market\"},\"initialize(address,address,uint256,string,string,uint8,uint256,uint256)\":{\"notice\":\"Initialize the money market\"},\"liquidateBorrow(address,address)\":{\"notice\":\"The sender liquidates the borrowers collateral. The collateral seized is transferred to the liquidator.\"},\"mint()\":{\"notice\":\"Sender supplies assets into the market and receives cTokens in exchange\"},\"redeem(uint256)\":{\"notice\":\"Sender redeems cTokens in exchange for the underlying asset\"},\"redeemUnderlying(uint256)\":{\"notice\":\"Sender redeems cTokens in exchange for a specified amount of underlying asset\"},\"repayBorrow()\":{\"notice\":\"Sender repays their own borrow\"},\"repayBorrowBehalf(address)\":{\"notice\":\"Sender repays a borrow belonging to borrower\"},\"seize(address,address,uint256)\":{\"notice\":\"Transfers collateral tokens (this market) to the liquidator.\"},\"supplyRatePerBlock()\":{\"notice\":\"Returns the current per-block supply interest rate for this cToken\"},\"totalBorrowsCurrent()\":{\"notice\":\"Returns the current total borrows plus accrued interest\"},\"transfer(address,uint256)\":{\"notice\":\"Transfer `amount` tokens from `msg.sender` to `dst`\"},\"transferFrom(address,address,uint256)\":{\"notice\":\"Transfer `amount` tokens from `src` to `dst`\"}},\"notice\":\"CTokens which wrap Ether and are delegated to\"}},\"settings\":{\"compilationTarget\":{\"contracts/CEtherDelegate.sol\":\"CEtherDelegate\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/CEther.sol\":{\"keccak256\":\"0x582241553bc00e4ca35535fd0adef37f352a72be794260c74ff0cdd8877421fb\",\"urls\":[\"bzz-raw://f38ad51666cc1aa9bb2788771196a3f59fbd79f2aee1891815cdbcf959f19b7a\",\"dweb:/ipfs/QmdX5fSj5QWLgpDDHDwjQp1sB3esZz6VJ8d3NVYCqnojgd\"]},\"contracts/CEtherDelegate.sol\":{\"keccak256\":\"0xf090cde05267e673084a85e71cf1347db89eb31c87cf7fe7298e5efc510bb3ce\",\"urls\":[\"bzz-raw://3d324e1d50309de50573aefb1f1d6d39be696107f259547468e2b6a183814c77\",\"dweb:/ipfs/QmWZy3kchwknuqWh8bpE8tB2rSPnfgzjsbPwf2crbmsLBa\"]},\"contracts/CToken.sol\":{\"keccak256\":\"0xc3a5a827241528049e20a24cc446558c8a9272909f75ce5d1cf14ae3ab5feba3\",\"urls\":[\"bzz-raw://a403db2bf1a8e5e9384df19600bd18d4251056818b094afcdab418e683bb5cb8\",\"dweb:/ipfs/QmdkRbFGtKP67tNNqyH7BraDRGerwRNA7ktscbFV9LioM2\"]},\"contracts/CTokenInterfaces.sol\":{\"keccak256\":\"0xc8a056c724ef4f0215ece6011e7ac1007c9dc7611ce5160d470ec858bbb06bd3\",\"urls\":[\"bzz-raw://58951693d1b53d2722e55b068bab2b570f4b044d89c28ed6b53bac6e95aeb662\",\"dweb:/ipfs/QmQiNTw5jZR74WjKfX2bPiuTT4tuFuq8rx7QxEVyVvdGLn\"]},\"contracts/CarefulMath.sol\":{\"keccak256\":\"0x1487237dbbbb73ad43c8eff16e78311753719a94a5065f574de5c91b672c56f8\",\"urls\":[\"bzz-raw://349966a236f313b2cb42e1942832e6bd7e134f65f6654e6c4d46788e65cc4a9b\",\"dweb:/ipfs/Qmebpv8i5jLR4fLgpZHQZRLu6aefVAbLC2yUk9ABEekquz\"]},\"contracts/ComptrollerInterface.sol\":{\"keccak256\":\"0xecfb84fabc9792d0b1c912886249c67bc42c39eb065d962d0b9a5f3736af5892\",\"urls\":[\"bzz-raw://711547ebc1a7f18b271118dd98276771953a9d7b3674716f67d247be9b907372\",\"dweb:/ipfs/QmbVZNvkBp8miByATrL6y5j8MePdcQ8uTAUZMpKrhpLgoa\"]},\"contracts/ComptrollerStorage.sol\":{\"keccak256\":\"0x83961d3c12984fe4afc72717fc44b2d868563d053a0eceda0cbf17ec6b255913\",\"urls\":[\"bzz-raw://ea667c2de43881f9be19f4f75dec348632273178965fc9b3655705d853b032bb\",\"dweb:/ipfs/QmZP6sbNFSgFZrAEvfRjhp1NtGj6U6Sea3JGiKG96AHyeP\"]},\"contracts/EIP20Interface.sol\":{\"keccak256\":\"0xee33b8b333743308a9153a59f22da2cadb22cedef4403fe039bf9e057c9c729a\",\"urls\":[\"bzz-raw://5427fdb941300d36a424da0a0a5800e3b2ca51c9c922831dbfce2f6637402b43\",\"dweb:/ipfs/QmTrvmLynqSUPjsGW2dpiQ91dSmn4xzccQiwr8qaBtyvjH\"]},\"contracts/EIP20NonStandardInterface.sol\":{\"keccak256\":\"0x469899442dd9640bfc2c670d404ad3027e48df5df8e5aeab0e25cc6b6aae05f5\",\"urls\":[\"bzz-raw://d8c4498abaf539eb413a2f1a916d75945adc8bd4ef437f8450cb67e07be3f38d\",\"dweb:/ipfs/QmaFpWfnhAMYW21rbT5PEszn4TGHdGU58Eq5AfZsCuapZ3\"]},\"contracts/ErrorReporter.sol\":{\"keccak256\":\"0xe9587478bc9efad203cab02b8aecae32828cfc9a271b13ae3c018e38e44aab32\",\"urls\":[\"bzz-raw://2eb34bdbbbc410fb401d50ddca44a7421a1d8191711c569ed5bcec1c1b07a05c\",\"dweb:/ipfs/QmYKNCYppyx3NGiwtjdLEmxUMgfnFBqT4pnvnhnBrPgrxS\"]},\"contracts/Exponential.sol\":{\"keccak256\":\"0xfda0e2b610541cf1cf316a0000c89a1069ccc21f1566affc0a058810e2b835d3\",\"urls\":[\"bzz-raw://fe319f184f1b5f27019d3d890124cd24e466d27153ac38eb9ff6b16efbad48b9\",\"dweb:/ipfs/Qmcev6jCmtdCviJxUQvUCmesPDShRDSvdfUEfvsqd4GEJA\"]},\"contracts/ExponentialNoError.sol\":{\"keccak256\":\"0x713a089f4bbcaec1d3924fc7d9a2154904a39f46cb6f25b713167dbe5f21623e\",\"urls\":[\"bzz-raw://d7108d68af7c5effd4272615ceba54e79e585f6b8be5aabc7602245c84c7b9e0\",\"dweb:/ipfs/QmQZo2XpxW7w5viVEg71mi9eKaAYD7HUqfCMB5yCCPVnc5\"]},\"contracts/IFuseFeeDistributor.sol\":{\"keccak256\":\"0xb5d287b8e05574d38bd5d0b413f44b4c5d312f28188573ac60abe78123fbd92c\",\"urls\":[\"bzz-raw://84c2bbf746a82aaa100bee90c7dd40411c723bded124bb1775bf72bf7fda8a2c\",\"dweb:/ipfs/QmToQzDtz9BV2tvU71YsfWjdaZu5qpP1xKFZ1TkQgubhDb\"]},\"contracts/InterestRateModel.sol\":{\"keccak256\":\"0x0cc0dbd1991e5dcdcff58b0c82a9471a0fb9df26763e5e7415e1d081b7332409\",\"urls\":[\"bzz-raw://f4d7936aefc43ea2724f0e472b8f1517f1ca40170258ab9d5bbd0862dd0c4f13\",\"dweb:/ipfs/QmfYjG1Sm3kNwbhomHCWhMqw9LvaJVWVzBe4Te5BHRbTQS\"]},\"contracts/PriceOracle.sol\":{\"keccak256\":\"0x62ba3a5ec8f06d456ab089d6ca7f9d14d3a6ce6814923271ca60a6990918fb41\",\"urls\":[\"bzz-raw://aa6d2f20efdd5389161eb15bdab98b5628dc8cd5354394bbed35bb14d3612506\",\"dweb:/ipfs/QmVfo4eCDuk8LMSywpBjZBxCv7zLCNsG6u3nyD1d4CYwsD\"]}},\"version\":1}"}},"contracts/CEtherDelegator.sol":{"CEtherDelegator":{"abi":[{"inputs":[{"internalType":"contract ComptrollerInterface","name":"comptroller_","type":"address"},{"internalType":"contract InterestRateModel","name":"interestRateModel_","type":"address"},{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"address","name":"implementation_","type":"address"},{"internalType":"bytes","name":"becomeImplementationData","type":"bytes"},{"internalType":"uint256","name":"reserveFactorMantissa_","type":"uint256"},{"internalType":"uint256","name":"adminFeeMantissa_","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":true,"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b50604051610785380380610785833981810160405261010081101561003457600080fd5b8151602083015160408085018051915193959294830192918464010000000082111561005f57600080fd5b90830190602082018581111561007457600080fd5b825164010000000081118282018810171561008e57600080fd5b82525081516020918201929091019080838360005b838110156100bb5781810151838201526020016100a3565b50505050905090810190601f1680156100e85780820380516001836020036101000a031916815260200191505b506040526020018051604051939291908464010000000082111561010b57600080fd5b90830190602082018581111561012057600080fd5b825164010000000081118282018810171561013a57600080fd5b82525081516020918201929091019080838360005b8381101561016757818101518382015260200161014f565b50505050905090810190601f1680156101945780820380516001836020036101000a031916815260200191505b506040818152602083015192018051929491939192846401000000008211156101bc57600080fd5b9083019060208201858111156101d157600080fd5b82516401000000008111828201881017156101eb57600080fd5b82525081516020918201929091019080838360005b83811015610218578181015183820152602001610200565b50505050905090810190601f1680156102455780820380516001836020036101000a031916815260200191505b5060405260200180519060200190929190805190602001909291905050506103ba8489898989878760405160240180876001600160a01b03166001600160a01b03168152602001866001600160a01b03166001600160a01b031681526020018060200180602001858152602001848152602001838103835287818151815260200191508051906020019080838360005b838110156102ed5781810151838201526020016102d5565b50505050905090810190601f16801561031a5780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b8381101561034d578181015183820152602001610335565b50505050905090810190601f16801561037a5780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529190526020810180516001600160e01b03908116631e70b25560e21b1790915290995061049c16975050505050505050565b5061048e848560008660405160240180846001600160a01b03166001600160a01b031681526020018315151515815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561042557818101518382015260200161040d565b50505050905090810190601f1680156104525780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529190526020810180516001600160e01b039081166350d85b7360e01b1790915290955061049c169350505050565b50505050505050505061055e565b606060006060846001600160a01b0316846040518082805190602001908083835b602083106104dc5780518252601f1990920191602091820191016104bd565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d806000811461053c576040519150601f19603f3d011682016040523d82523d6000602084013e610541565b606091505b50915091506000821415610556573d60208201fd5b949350505050565b6102188061056d6000396000f3fe60806040526004361061001e5760003560e01c80635c60da1b146100e1575b6000546040805160048152602481019091526020810180516001600160e01b031663076de25160e21b17905261005d916001600160a01b031690610112565b50600080546040516001600160a01b0390911690829036908083838082843760405192019450600093509091505080830381855af49150503d80600081146100c1576040519150601f19603f3d011682016040523d82523d6000602084013e6100c6565b606091505b505090506040513d6000823e8180156100dd573d82f35b3d82fd5b3480156100ed57600080fd5b506100f66101d4565b604080516001600160a01b039092168252519081900360200190f35b606060006060846001600160a01b0316846040518082805190602001908083835b602083106101525780518252601f199092019160209182019101610133565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146101b2576040519150601f19603f3d011682016040523d82523d6000602084013e6101b7565b606091505b509150915060008214156101cc573d60208201fd5b949350505050565b6000546001600160a01b03168156fea265627a7a7231582009a19c1cc102f25e3dfb4f90db6ce7db541c695942a54c7822e23e50c4c0c2bc64736f6c63430005110032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x785 CODESIZE SUB DUP1 PUSH2 0x785 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x34 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP1 DUP6 ADD DUP1 MLOAD SWAP2 MLOAD SWAP4 SWAP6 SWAP3 SWAP5 DUP4 ADD SWAP3 SWAP2 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0x5F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x74 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH2 0x8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xBB JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA3 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xE8 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE PUSH1 0x20 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0x10B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x120 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH2 0x13A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x167 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x14F JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x194 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 DUP2 DUP2 MSTORE PUSH1 0x20 DUP4 ADD MLOAD SWAP3 ADD DUP1 MLOAD SWAP3 SWAP5 SWAP2 SWAP4 SWAP2 SWAP3 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0x1BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x1D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH2 0x1EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x218 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x200 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x245 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE PUSH1 0x20 ADD DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x3BA DUP5 DUP10 DUP10 DUP10 DUP10 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP8 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2ED JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2D5 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x31A JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP7 MLOAD DUP2 MSTORE DUP7 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP9 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x34D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x335 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x37A JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB SWAP1 DUP2 AND PUSH4 0x1E70B255 PUSH1 0xE2 SHL OR SWAP1 SWAP2 MSTORE SWAP1 SWAP10 POP PUSH2 0x49C AND SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST POP PUSH2 0x48E DUP5 DUP6 PUSH1 0x0 DUP7 PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x425 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x40D JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x452 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB SWAP1 DUP2 AND PUSH4 0x50D85B73 PUSH1 0xE0 SHL OR SWAP1 SWAP2 MSTORE SWAP1 SWAP6 POP PUSH2 0x49C AND SWAP4 POP POP POP POP JUMP JUMPDEST POP POP POP POP POP POP POP POP POP PUSH2 0x55E JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x60 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x4DC JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x4BD JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x53C 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 0x541 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x556 JUMPI RETURNDATASIZE PUSH1 0x20 DUP3 ADD REVERT JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x218 DUP1 PUSH2 0x56D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1E JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0xE1 JUMPI JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x76DE251 PUSH1 0xE2 SHL OR SWAP1 MSTORE PUSH2 0x5D SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0x112 JUMP JUMPDEST POP PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 DUP3 SWAP1 CALLDATASIZE SWAP1 DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x40 MLOAD SWAP3 ADD SWAP5 POP PUSH1 0x0 SWAP4 POP SWAP1 SWAP2 POP POP DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xC1 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 0xC6 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY DUP2 DUP1 ISZERO PUSH2 0xDD JUMPI RETURNDATASIZE DUP3 RETURN JUMPDEST RETURNDATASIZE DUP3 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF6 PUSH2 0x1D4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x60 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x152 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x133 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1B2 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 0x1B7 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x1CC JUMPI RETURNDATASIZE PUSH1 0x20 DUP3 ADD REVERT JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 MULMOD LOG1 SWAP13 SHR 0xC1 MUL CALLCODE 0x5E RETURNDATASIZE 0xFB 0x4F SWAP1 0xDB PUSH13 0xE7DB541C695942A54C7822E23E POP 0xC4 0xC0 0xC2 0xBC PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ","sourceMap":"238:3242:9:-;;;755:1275;8:9:-1;5:2;;;30:1;27;20:12;5:2;755:1275:9;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;755:1275:9;;;;;;;;;;;;;;;;;;;;;;;19:11:-1;11:20;;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;261:11;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;755:1275:9;;420:4:-1;411:14;;;;755:1275:9;;;;;411:14:-1;755:1275:9;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;755:1275:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;261:11;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;755:1275:9;;420:4:-1;411:14;;;;755:1275:9;;;;;411:14:-1;755:1275:9;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;755:1275:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;755:1275:9;;;;;;;;;;;;;;;;;;;19:11:-1;11:20;;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;261:11;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;755:1275:9;;420:4:-1;411:14;;;;755:1275:9;;;;;411:14:-1;755:1275:9;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;755:1275:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1219:566;1230:15;1392:12;1466:18;1546:5;1613:7;1682:22;1766:17;1247:537;;;;;;-1:-1:-1;;;;;1247:537:9;-1:-1:-1;;;;;1247:537:9;;;;;;-1:-1:-1;;;;;1247:537:9;-1:-1:-1;;;;;1247:537:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1247:537:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1247:537:9;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1247:537:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1247:537:9;;;-1:-1:-1;;26:21;;;22:32;6:49;;1247:537:9;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;;;-1:-1;;;179:29;160:49;;;1247:537:9;;-1:-1:-1;1219:10:9;:566;;-1:-1:-1;;;;;;;;1219:566:9:i;:::-;;1875:148;1886:15;1973;1990:5;1997:24;1903:119;;;;;;-1:-1:-1;;;;;1903:119:9;-1:-1:-1;;;;;1903:119:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1903:119:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1903:119:9;;;-1:-1:-1;;26:21;;;22:32;6:49;;1903:119:9;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;;;-1:-1;;;179:29;160:49;;;1903:119:9;;-1:-1:-1;1875:10:9;:148;;-1:-1:-1;;;;1875:148:9:i;:::-;;755:1275;;;;;;;;238:3242;;2381:335;2454:12;2479;2493:23;2520:6;-1:-1:-1;;;;;2520:19:9;2540:4;2520:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;2520:25:9;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;2478:67:9;;;;2593:1;2584:7;2581:14;2578:2;;;2644:14;2637:4;2625:10;2621:21;2614:45;2578:2;2699:10;2381:335;-1:-1:-1;;;;2381:335:9:o;238:3242::-;;;;;;;"},"deployedBytecode":{"linkReferences":{},"object":"60806040526004361061001e5760003560e01c80635c60da1b146100e1575b6000546040805160048152602481019091526020810180516001600160e01b031663076de25160e21b17905261005d916001600160a01b031690610112565b50600080546040516001600160a01b0390911690829036908083838082843760405192019450600093509091505080830381855af49150503d80600081146100c1576040519150601f19603f3d011682016040523d82523d6000602084013e6100c6565b606091505b505090506040513d6000823e8180156100dd573d82f35b3d82fd5b3480156100ed57600080fd5b506100f66101d4565b604080516001600160a01b039092168252519081900360200190f35b606060006060846001600160a01b0316846040518082805190602001908083835b602083106101525780518252601f199092019160209182019101610133565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146101b2576040519150601f19603f3d011682016040523d82523d6000602084013e6101b7565b606091505b509150915060008214156101cc573d60208201fd5b949350505050565b6000546001600160a01b03168156fea265627a7a7231582009a19c1cc102f25e3dfb4f90db6ce7db541c695942a54c7822e23e50c4c0c2bc64736f6c63430005110032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1E JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0xE1 JUMPI JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x76DE251 PUSH1 0xE2 SHL OR SWAP1 MSTORE PUSH2 0x5D SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0x112 JUMP JUMPDEST POP PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 DUP3 SWAP1 CALLDATASIZE SWAP1 DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x40 MLOAD SWAP3 ADD SWAP5 POP PUSH1 0x0 SWAP4 POP SWAP1 SWAP2 POP POP DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xC1 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 0xC6 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY DUP2 DUP1 ISZERO PUSH2 0xDD JUMPI RETURNDATASIZE DUP3 RETURN JUMPDEST RETURNDATASIZE DUP3 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF6 PUSH2 0x1D4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x60 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x152 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x133 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1B2 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 0x1B7 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x1CC JUMPI RETURNDATASIZE PUSH1 0x20 DUP3 ADD REVERT JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 MULMOD LOG1 SWAP13 SHR 0xC1 MUL CALLCODE 0x5E RETURNDATASIZE 0xFB 0x4F SWAP1 0xDB PUSH13 0xE7DB541C695942A54C7822E23E POP 0xC4 0xC0 0xC2 0xBC PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ","sourceMap":"238:3242:9:-;;;;;;;;;;;;;;;;;;3001:14;;3017:37;;;22:32:-1;6:49;;3017:37:9;;;;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2990:65:9;;-1:-1:-1;;;;;3001:14:9;;2990:10;:65::i;:::-;-1:-1:-1;3133:12:9;3151:14;;:37;;-1:-1:-1;;;;;3151:14:9;;;;3133:12;;3179:8;;3151:37;3133:12;3179:8;;3133:12;3151:37;1:33:-1;3151:37:9;;45:16:-1;;;-1:-1;3151:37:9;;-1:-1:-1;3151:37:9;;-1:-1:-1;;3151:37:9;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;3132:56:9;;;3248:4;3242:11;3298:14;3295:1;3281:12;3266:47;3334:7;3354:47;;;;3445:14;3431:12;3424:36;3354:47;3384:14;3370:12;3363:36;9773:29:11;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9773:29:11;;;:::i;:::-;;;;-1:-1:-1;;;;;9773:29:11;;;;;;;;;;;;;;2381:335:9;2454:12;2479;2493:23;2520:6;-1:-1:-1;;;;;2520:19:9;2540:4;2520:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;2520:25:9;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;2478:67:9;;;;2593:1;2584:7;2581:14;2578:2;;;2644:14;2637:4;2625:10;2621:21;2614:45;2578:2;2699:10;2381:335;-1:-1:-1;;;;2381:335:9:o;9773:29:11:-;;;-1:-1:-1;;;;;9773:29:11;;:::o"},"methodIdentifiers":{"implementation()":"5c60da1b"}},"metadata":"{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract ComptrollerInterface\",\"name\":\"comptroller_\",\"type\":\"address\"},{\"internalType\":\"contract InterestRateModel\",\"name\":\"interestRateModel_\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"implementation_\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"becomeImplementationData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"reserveFactorMantissa_\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"adminFeeMantissa_\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"constant\":true,\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Compound\",\"methods\":{\"constructor\":{\"params\":{\"becomeImplementationData\":\"The encoded args for becomeImplementation\",\"comptroller_\":\"The address of the Comptroller\",\"implementation_\":\"The address of the implementation the contract delegates to\",\"interestRateModel_\":\"The address of the interest rate model\",\"name_\":\"ERC-20 name of this token\",\"symbol_\":\"ERC-20 symbol of this token\"}}},\"title\":\"Compound's CEtherDelegator Contract\"},\"userdoc\":{\"methods\":{\"constructor\":\"Construct a new CEther money market\"},\"notice\":\"CTokens which wrap Ether and delegate to an implementation\"}},\"settings\":{\"compilationTarget\":{\"contracts/CEtherDelegator.sol\":\"CEtherDelegator\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/CEtherDelegator.sol\":{\"keccak256\":\"0x8825b09f967a2242db3c95f96f7eec4df27086d5c7ae577f17f26e00a7f7b099\",\"urls\":[\"bzz-raw://6a7d09456758d9f33585e02da291431b5f256e74fa3fd8a0947d80844035f1a8\",\"dweb:/ipfs/QmUrnZxG3FYzTGLQJaLFppZhRfzR5c3SZ2j1bYTNDvWexk\"]},\"contracts/CToken.sol\":{\"keccak256\":\"0xc3a5a827241528049e20a24cc446558c8a9272909f75ce5d1cf14ae3ab5feba3\",\"urls\":[\"bzz-raw://a403db2bf1a8e5e9384df19600bd18d4251056818b094afcdab418e683bb5cb8\",\"dweb:/ipfs/QmdkRbFGtKP67tNNqyH7BraDRGerwRNA7ktscbFV9LioM2\"]},\"contracts/CTokenInterfaces.sol\":{\"keccak256\":\"0xc8a056c724ef4f0215ece6011e7ac1007c9dc7611ce5160d470ec858bbb06bd3\",\"urls\":[\"bzz-raw://58951693d1b53d2722e55b068bab2b570f4b044d89c28ed6b53bac6e95aeb662\",\"dweb:/ipfs/QmQiNTw5jZR74WjKfX2bPiuTT4tuFuq8rx7QxEVyVvdGLn\"]},\"contracts/CarefulMath.sol\":{\"keccak256\":\"0x1487237dbbbb73ad43c8eff16e78311753719a94a5065f574de5c91b672c56f8\",\"urls\":[\"bzz-raw://349966a236f313b2cb42e1942832e6bd7e134f65f6654e6c4d46788e65cc4a9b\",\"dweb:/ipfs/Qmebpv8i5jLR4fLgpZHQZRLu6aefVAbLC2yUk9ABEekquz\"]},\"contracts/ComptrollerInterface.sol\":{\"keccak256\":\"0xecfb84fabc9792d0b1c912886249c67bc42c39eb065d962d0b9a5f3736af5892\",\"urls\":[\"bzz-raw://711547ebc1a7f18b271118dd98276771953a9d7b3674716f67d247be9b907372\",\"dweb:/ipfs/QmbVZNvkBp8miByATrL6y5j8MePdcQ8uTAUZMpKrhpLgoa\"]},\"contracts/ComptrollerStorage.sol\":{\"keccak256\":\"0x83961d3c12984fe4afc72717fc44b2d868563d053a0eceda0cbf17ec6b255913\",\"urls\":[\"bzz-raw://ea667c2de43881f9be19f4f75dec348632273178965fc9b3655705d853b032bb\",\"dweb:/ipfs/QmZP6sbNFSgFZrAEvfRjhp1NtGj6U6Sea3JGiKG96AHyeP\"]},\"contracts/EIP20Interface.sol\":{\"keccak256\":\"0xee33b8b333743308a9153a59f22da2cadb22cedef4403fe039bf9e057c9c729a\",\"urls\":[\"bzz-raw://5427fdb941300d36a424da0a0a5800e3b2ca51c9c922831dbfce2f6637402b43\",\"dweb:/ipfs/QmTrvmLynqSUPjsGW2dpiQ91dSmn4xzccQiwr8qaBtyvjH\"]},\"contracts/EIP20NonStandardInterface.sol\":{\"keccak256\":\"0x469899442dd9640bfc2c670d404ad3027e48df5df8e5aeab0e25cc6b6aae05f5\",\"urls\":[\"bzz-raw://d8c4498abaf539eb413a2f1a916d75945adc8bd4ef437f8450cb67e07be3f38d\",\"dweb:/ipfs/QmaFpWfnhAMYW21rbT5PEszn4TGHdGU58Eq5AfZsCuapZ3\"]},\"contracts/ErrorReporter.sol\":{\"keccak256\":\"0xe9587478bc9efad203cab02b8aecae32828cfc9a271b13ae3c018e38e44aab32\",\"urls\":[\"bzz-raw://2eb34bdbbbc410fb401d50ddca44a7421a1d8191711c569ed5bcec1c1b07a05c\",\"dweb:/ipfs/QmYKNCYppyx3NGiwtjdLEmxUMgfnFBqT4pnvnhnBrPgrxS\"]},\"contracts/Exponential.sol\":{\"keccak256\":\"0xfda0e2b610541cf1cf316a0000c89a1069ccc21f1566affc0a058810e2b835d3\",\"urls\":[\"bzz-raw://fe319f184f1b5f27019d3d890124cd24e466d27153ac38eb9ff6b16efbad48b9\",\"dweb:/ipfs/Qmcev6jCmtdCviJxUQvUCmesPDShRDSvdfUEfvsqd4GEJA\"]},\"contracts/ExponentialNoError.sol\":{\"keccak256\":\"0x713a089f4bbcaec1d3924fc7d9a2154904a39f46cb6f25b713167dbe5f21623e\",\"urls\":[\"bzz-raw://d7108d68af7c5effd4272615ceba54e79e585f6b8be5aabc7602245c84c7b9e0\",\"dweb:/ipfs/QmQZo2XpxW7w5viVEg71mi9eKaAYD7HUqfCMB5yCCPVnc5\"]},\"contracts/IFuseFeeDistributor.sol\":{\"keccak256\":\"0xb5d287b8e05574d38bd5d0b413f44b4c5d312f28188573ac60abe78123fbd92c\",\"urls\":[\"bzz-raw://84c2bbf746a82aaa100bee90c7dd40411c723bded124bb1775bf72bf7fda8a2c\",\"dweb:/ipfs/QmToQzDtz9BV2tvU71YsfWjdaZu5qpP1xKFZ1TkQgubhDb\"]},\"contracts/InterestRateModel.sol\":{\"keccak256\":\"0x0cc0dbd1991e5dcdcff58b0c82a9471a0fb9df26763e5e7415e1d081b7332409\",\"urls\":[\"bzz-raw://f4d7936aefc43ea2724f0e472b8f1517f1ca40170258ab9d5bbd0862dd0c4f13\",\"dweb:/ipfs/QmfYjG1Sm3kNwbhomHCWhMqw9LvaJVWVzBe4Te5BHRbTQS\"]},\"contracts/PriceOracle.sol\":{\"keccak256\":\"0x62ba3a5ec8f06d456ab089d6ca7f9d14d3a6ce6814923271ca60a6990918fb41\",\"urls\":[\"bzz-raw://aa6d2f20efdd5389161eb15bdab98b5628dc8cd5354394bbed35bb14d3612506\",\"dweb:/ipfs/QmVfo4eCDuk8LMSywpBjZBxCv7zLCNsG6u3nyD1d4CYwsD\"]}},\"version\":1}"}},"contracts/CToken.sol":{"CToken":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"cashPrior","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"interestAccumulated","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"borrowIndex","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalBorrows","type":"uint256"}],"name":"AccrueInterest","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"borrower","type":"address"},{"indexed":false,"internalType":"uint256","name":"borrowAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"accountBorrows","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalBorrows","type":"uint256"}],"name":"Borrow","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"error","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"info","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"detail","type":"uint256"}],"name":"Failure","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"liquidator","type":"address"},{"indexed":false,"internalType":"address","name":"borrower","type":"address"},{"indexed":false,"internalType":"uint256","name":"repayAmount","type":"uint256"},{"indexed":false,"internalType":"address","name":"cTokenCollateral","type":"address"},{"indexed":false,"internalType":"uint256","name":"seizeTokens","type":"uint256"}],"name":"LiquidateBorrow","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"minter","type":"address"},{"indexed":false,"internalType":"uint256","name":"mintAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"mintTokens","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldAdminFeeMantissa","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newAdminFeeMantissa","type":"uint256"}],"name":"NewAdminFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract ComptrollerInterface","name":"oldComptroller","type":"address"},{"indexed":false,"internalType":"contract ComptrollerInterface","name":"newComptroller","type":"address"}],"name":"NewComptroller","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldFuseFeeMantissa","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newFuseFeeMantissa","type":"uint256"}],"name":"NewFuseFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract InterestRateModel","name":"oldInterestRateModel","type":"address"},{"indexed":false,"internalType":"contract InterestRateModel","name":"newInterestRateModel","type":"address"}],"name":"NewMarketInterestRateModel","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldReserveFactorMantissa","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newReserveFactorMantissa","type":"uint256"}],"name":"NewReserveFactor","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"redeemer","type":"address"},{"indexed":false,"internalType":"uint256","name":"redeemAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"redeemTokens","type":"uint256"}],"name":"Redeem","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"payer","type":"address"},{"indexed":false,"internalType":"address","name":"borrower","type":"address"},{"indexed":false,"internalType":"uint256","name":"repayAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"accountBorrows","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalBorrows","type":"uint256"}],"name":"RepayBorrow","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"benefactor","type":"address"},{"indexed":false,"internalType":"uint256","name":"addAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newTotalReserves","type":"uint256"}],"name":"ReservesAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"admin","type":"address"},{"indexed":false,"internalType":"uint256","name":"reduceAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newTotalReserves","type":"uint256"}],"name":"ReservesReduced","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":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"constant":false,"inputs":[{"internalType":"uint256","name":"reduceAmount","type":"uint256"}],"name":"_reduceReserves","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"newAdminFeeMantissa","type":"uint256"}],"name":"_setAdminFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"contract InterestRateModel","name":"newInterestRateModel","type":"address"}],"name":"_setInterestRateModel","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"}],"name":"_setNameAndSymbol","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"newReserveFactorMantissa","type":"uint256"}],"name":"_setReserveFactor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"withdrawAmount","type":"uint256"}],"name":"_withdrawAdminFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"withdrawAmount","type":"uint256"}],"name":"_withdrawFuseFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"accrualBlockNumber","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"accrueInterest","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"adminFeeMantissa","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOfUnderlying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"borrowBalanceCurrent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"borrowBalanceStored","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"borrowIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"borrowRatePerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"comptroller","outputs":[{"internalType":"contract ComptrollerInterface","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"exchangeRateCurrent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"exchangeRateStored","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"fuseFeeMantissa","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getAccountSnapshot","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getCash","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"contract ComptrollerInterface","name":"comptroller_","type":"address"},{"internalType":"contract InterestRateModel","name":"interestRateModel_","type":"address"},{"internalType":"uint256","name":"initialExchangeRateMantissa_","type":"uint256"},{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"uint8","name":"decimals_","type":"uint8"},{"internalType":"uint256","name":"reserveFactorMantissa_","type":"uint256"},{"internalType":"uint256","name":"adminFeeMantissa_","type":"uint256"}],"name":"initialize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"interestRateModel","outputs":[{"internalType":"contract InterestRateModel","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isCEther","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isCToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"protocolSeizeShareMantissa","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"reserveFactorMantissa","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"liquidator","type":"address"},{"internalType":"address","name":"borrower","type":"address"},{"internalType":"uint256","name":"seizeTokens","type":"uint256"}],"name":"seize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"supplyRatePerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalAdminFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalBorrows","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"totalBorrowsCurrent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalFuseFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalReserves","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"src","type":"address"},{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"_reduceReserves(uint256)":"601a0bf1","_setAdminFee(uint256)":"91dd36c6","_setInterestRateModel(address)":"f2b3abbd","_setNameAndSymbol(string,string)":"34154d4c","_setReserveFactor(uint256)":"fca7820b","_withdrawAdminFees(uint256)":"a7b820df","_withdrawFuseFees(uint256)":"a03dce8d","accrualBlockNumber()":"6c540baf","accrueInterest()":"a6afed95","adminFeeMantissa()":"8d02d9a1","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","balanceOfUnderlying(address)":"3af9e669","borrowBalanceCurrent(address)":"17bfdfbc","borrowBalanceStored(address)":"95dd9193","borrowIndex()":"aa5af0fd","borrowRatePerBlock()":"f8f9da28","comptroller()":"5fe3b567","decimals()":"313ce567","exchangeRateCurrent()":"bd6d894d","exchangeRateStored()":"182df0f5","fuseFeeMantissa()":"dbfe7c19","getAccountSnapshot(address)":"c37f68e2","getCash()":"3b1d21a2","initialize(address,address,uint256,string,string,uint8,uint256,uint256)":"0f8855e8","interestRateModel()":"f3fdb15a","isCEther()":"ac784ddc","isCToken()":"fe9c44ae","name()":"06fdde03","protocolSeizeShareMantissa()":"6752e702","reserveFactorMantissa()":"173b9904","seize(address,address,uint256)":"b2a02ff1","supplyRatePerBlock()":"ae9d70b0","symbol()":"95d89b41","totalAdminFees()":"61feacff","totalBorrows()":"47bd3718","totalBorrowsCurrent()":"73acee98","totalFuseFees()":"dc028ab1","totalReserves()":"8f840ddd","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"cashPrior\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"interestAccumulated\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"borrowIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalBorrows\",\"type\":\"uint256\"}],\"name\":\"AccrueInterest\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"borrowAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"accountBorrows\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalBorrows\",\"type\":\"uint256\"}],\"name\":\"Borrow\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"error\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"info\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"detail\",\"type\":\"uint256\"}],\"name\":\"Failure\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"liquidator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"repayAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"cTokenCollateral\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"seizeTokens\",\"type\":\"uint256\"}],\"name\":\"LiquidateBorrow\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"mintAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"mintTokens\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldAdminFeeMantissa\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newAdminFeeMantissa\",\"type\":\"uint256\"}],\"name\":\"NewAdminFee\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract ComptrollerInterface\",\"name\":\"oldComptroller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract ComptrollerInterface\",\"name\":\"newComptroller\",\"type\":\"address\"}],\"name\":\"NewComptroller\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldFuseFeeMantissa\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newFuseFeeMantissa\",\"type\":\"uint256\"}],\"name\":\"NewFuseFee\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract InterestRateModel\",\"name\":\"oldInterestRateModel\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract InterestRateModel\",\"name\":\"newInterestRateModel\",\"type\":\"address\"}],\"name\":\"NewMarketInterestRateModel\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldReserveFactorMantissa\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newReserveFactorMantissa\",\"type\":\"uint256\"}],\"name\":\"NewReserveFactor\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"redeemer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"redeemAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"redeemTokens\",\"type\":\"uint256\"}],\"name\":\"Redeem\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"repayAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"accountBorrows\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalBorrows\",\"type\":\"uint256\"}],\"name\":\"RepayBorrow\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"benefactor\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"addAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newTotalReserves\",\"type\":\"uint256\"}],\"name\":\"ReservesAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reduceAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newTotalReserves\",\"type\":\"uint256\"}],\"name\":\"ReservesReduced\",\"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\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"reduceAmount\",\"type\":\"uint256\"}],\"name\":\"_reduceReserves\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newAdminFeeMantissa\",\"type\":\"uint256\"}],\"name\":\"_setAdminFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contract InterestRateModel\",\"name\":\"newInterestRateModel\",\"type\":\"address\"}],\"name\":\"_setInterestRateModel\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"}],\"name\":\"_setNameAndSymbol\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newReserveFactorMantissa\",\"type\":\"uint256\"}],\"name\":\"_setReserveFactor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"withdrawAmount\",\"type\":\"uint256\"}],\"name\":\"_withdrawAdminFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"withdrawAmount\",\"type\":\"uint256\"}],\"name\":\"_withdrawFuseFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"accrualBlockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"accrueInterest\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"adminFeeMantissa\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOfUnderlying\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"borrowBalanceCurrent\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"borrowBalanceStored\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"borrowIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"borrowRatePerBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"comptroller\",\"outputs\":[{\"internalType\":\"contract ComptrollerInterface\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"exchangeRateCurrent\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"exchangeRateStored\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"fuseFeeMantissa\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getAccountSnapshot\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getCash\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contract ComptrollerInterface\",\"name\":\"comptroller_\",\"type\":\"address\"},{\"internalType\":\"contract InterestRateModel\",\"name\":\"interestRateModel_\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"initialExchangeRateMantissa_\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"decimals_\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"reserveFactorMantissa_\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"adminFeeMantissa_\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"interestRateModel\",\"outputs\":[{\"internalType\":\"contract InterestRateModel\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isCEther\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isCToken\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"protocolSeizeShareMantissa\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"reserveFactorMantissa\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"liquidator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"seizeTokens\",\"type\":\"uint256\"}],\"name\":\"seize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"supplyRatePerBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalAdminFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalBorrows\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"totalBorrowsCurrent\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalFuseFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalReserves\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Compound\",\"methods\":{\"_reduceReserves(uint256)\":{\"params\":{\"reduceAmount\":\"Amount of reduction to reserves\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"_setAdminFee(uint256)\":{\"details\":\"Admin function to accrue interest and set a new admin fee\",\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"_setInterestRateModel(address)\":{\"details\":\"Admin function to accrue interest and update the interest rate model\",\"params\":{\"newInterestRateModel\":\"the new interest rate model to use\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"_setNameAndSymbol(string,string)\":{\"details\":\"Admin function to update the cToken ERC20 name and symbol\",\"params\":{\"_name\":\"the new ERC20 token name to use\",\"_symbol\":\"the new ERC20 token symbol to use\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"_setReserveFactor(uint256)\":{\"details\":\"Admin function to accrue interest and set a new reserve factor\",\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"_withdrawAdminFees(uint256)\":{\"params\":{\"withdrawAmount\":\"Amount of fees to withdraw\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"_withdrawFuseFees(uint256)\":{\"params\":{\"withdrawAmount\":\"Amount of fees to withdraw\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"accrueInterest()\":{\"details\":\"This calculates interest accrued from the last checkpointed block up to the current block and writes new checkpoint to storage.\"},\"allowance(address,address)\":{\"params\":{\"owner\":\"The address of the account which owns the tokens to be spent\",\"spender\":\"The address of the account which may transfer tokens\"},\"return\":\"The number of tokens allowed to be spent (-1 means infinite)\"},\"approve(address,uint256)\":{\"details\":\"This will overwrite the approval amount for `spender` and is subject to issues noted [here](https://eips.ethereum.org/EIPS/eip-20#approve)\",\"params\":{\"amount\":\"The number of tokens that are approved (-1 means infinite)\",\"spender\":\"The address of the account which may transfer tokens\"},\"return\":\"Whether or not the approval succeeded\"},\"balanceOf(address)\":{\"params\":{\"owner\":\"The address of the account to query\"},\"return\":\"The number of tokens owned by `owner`\"},\"balanceOfUnderlying(address)\":{\"details\":\"This also accrues interest in a transaction\",\"params\":{\"owner\":\"The address of the account to query\"},\"return\":\"The amount of underlying owned by `owner`\"},\"borrowBalanceCurrent(address)\":{\"params\":{\"account\":\"The address whose balance should be calculated after updating borrowIndex\"},\"return\":\"The calculated balance\"},\"borrowBalanceStored(address)\":{\"params\":{\"account\":\"The address whose balance should be calculated\"},\"return\":\"The calculated balance\"},\"borrowRatePerBlock()\":{\"return\":\"The borrow interest rate per block, scaled by 1e18\"},\"exchangeRateCurrent()\":{\"return\":\"Calculated exchange rate scaled by 1e18\"},\"exchangeRateStored()\":{\"details\":\"This function does not accrue interest before calculating the exchange rate\",\"return\":\"Calculated exchange rate scaled by 1e18\"},\"getAccountSnapshot(address)\":{\"details\":\"This is used by comptroller to more efficiently perform liquidity checks.\",\"params\":{\"account\":\"Address of the account to snapshot\"},\"return\":\"(possible error, token balance, borrow balance, exchange rate mantissa)\"},\"getCash()\":{\"return\":\"The quantity of underlying asset owned by this contract\"},\"initialize(address,address,uint256,string,string,uint8,uint256,uint256)\":{\"params\":{\"comptroller_\":\"The address of the Comptroller\",\"decimals_\":\"EIP-20 decimal precision of this token\",\"initialExchangeRateMantissa_\":\"The initial exchange rate, scaled by 1e18\",\"interestRateModel_\":\"The address of the interest rate model\",\"name_\":\"EIP-20 name of this token\",\"symbol_\":\"EIP-20 symbol of this token\"}},\"seize(address,address,uint256)\":{\"details\":\"Will fail unless called by another cToken during the process of liquidation. Its absolutely critical to use msg.sender as the borrowed cToken and not a parameter.\",\"params\":{\"borrower\":\"The account having collateral seized\",\"liquidator\":\"The account receiving seized collateral\",\"seizeTokens\":\"The number of cTokens to seize\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"supplyRatePerBlock()\":{\"return\":\"The supply interest rate per block, scaled by 1e18\"},\"totalBorrowsCurrent()\":{\"return\":\"The total borrows with interest\"},\"transfer(address,uint256)\":{\"params\":{\"amount\":\"The number of tokens to transfer\",\"dst\":\"The address of the destination account\"},\"return\":\"Whether or not the transfer succeeded\"},\"transferFrom(address,address,uint256)\":{\"params\":{\"amount\":\"The number of tokens to transfer\",\"dst\":\"The address of the destination account\",\"src\":\"The address of the source account\"},\"return\":\"Whether or not the transfer succeeded\"}},\"title\":\"Compound's CToken Contract\"},\"userdoc\":{\"methods\":{\"_reduceReserves(uint256)\":{\"notice\":\"Accrues interest and reduces reserves by transferring to admin\"},\"_setAdminFee(uint256)\":{\"notice\":\"accrues interest and sets a new admin fee for the protocol using _setAdminFeeFresh\"},\"_setInterestRateModel(address)\":{\"notice\":\"accrues interest and updates the interest rate model using _setInterestRateModelFresh\"},\"_setNameAndSymbol(string,string)\":{\"notice\":\"updates the cToken ERC20 name and symbol\"},\"_setReserveFactor(uint256)\":{\"notice\":\"accrues interest and sets a new reserve factor for the protocol using _setReserveFactorFresh\"},\"_withdrawAdminFees(uint256)\":{\"notice\":\"Accrues interest and reduces admin fees by transferring to admin\"},\"_withdrawFuseFees(uint256)\":{\"notice\":\"Accrues interest and reduces Fuse fees by transferring to Fuse\"},\"accrueInterest()\":{\"notice\":\"Applies accrued interest to total borrows and reserves\"},\"allowance(address,address)\":{\"notice\":\"Get the current allowance from `owner` for `spender`\"},\"approve(address,uint256)\":{\"notice\":\"Approve `spender` to transfer up to `amount` from `src`\"},\"balanceOf(address)\":{\"notice\":\"Get the token balance of the `owner`\"},\"balanceOfUnderlying(address)\":{\"notice\":\"Get the underlying balance of the `owner`\"},\"borrowBalanceCurrent(address)\":{\"notice\":\"Accrue interest to updated borrowIndex and then calculate account's borrow balance using the updated borrowIndex\"},\"borrowBalanceStored(address)\":{\"notice\":\"Return the borrow balance of account based on stored data\"},\"borrowRatePerBlock()\":{\"notice\":\"Returns the current per-block borrow interest rate for this cToken\"},\"exchangeRateCurrent()\":{\"notice\":\"Accrue interest then return the up-to-date exchange rate\"},\"exchangeRateStored()\":{\"notice\":\"Calculates the exchange rate from the underlying to the CToken\"},\"getAccountSnapshot(address)\":{\"notice\":\"Get a snapshot of the account's balances, and the cached exchange rate\"},\"getCash()\":{\"notice\":\"Get cash balance of this cToken in the underlying asset\"},\"initialize(address,address,uint256,string,string,uint8,uint256,uint256)\":{\"notice\":\"Initialize the money market\"},\"seize(address,address,uint256)\":{\"notice\":\"Transfers collateral tokens (this market) to the liquidator.\"},\"supplyRatePerBlock()\":{\"notice\":\"Returns the current per-block supply interest rate for this cToken\"},\"totalBorrowsCurrent()\":{\"notice\":\"Returns the current total borrows plus accrued interest\"},\"transfer(address,uint256)\":{\"notice\":\"Transfer `amount` tokens from `msg.sender` to `dst`\"},\"transferFrom(address,address,uint256)\":{\"notice\":\"Transfer `amount` tokens from `src` to `dst`\"}},\"notice\":\"Abstract base for CTokens\"}},\"settings\":{\"compilationTarget\":{\"contracts/CToken.sol\":\"CToken\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/CToken.sol\":{\"keccak256\":\"0xc3a5a827241528049e20a24cc446558c8a9272909f75ce5d1cf14ae3ab5feba3\",\"urls\":[\"bzz-raw://a403db2bf1a8e5e9384df19600bd18d4251056818b094afcdab418e683bb5cb8\",\"dweb:/ipfs/QmdkRbFGtKP67tNNqyH7BraDRGerwRNA7ktscbFV9LioM2\"]},\"contracts/CTokenInterfaces.sol\":{\"keccak256\":\"0xc8a056c724ef4f0215ece6011e7ac1007c9dc7611ce5160d470ec858bbb06bd3\",\"urls\":[\"bzz-raw://58951693d1b53d2722e55b068bab2b570f4b044d89c28ed6b53bac6e95aeb662\",\"dweb:/ipfs/QmQiNTw5jZR74WjKfX2bPiuTT4tuFuq8rx7QxEVyVvdGLn\"]},\"contracts/CarefulMath.sol\":{\"keccak256\":\"0x1487237dbbbb73ad43c8eff16e78311753719a94a5065f574de5c91b672c56f8\",\"urls\":[\"bzz-raw://349966a236f313b2cb42e1942832e6bd7e134f65f6654e6c4d46788e65cc4a9b\",\"dweb:/ipfs/Qmebpv8i5jLR4fLgpZHQZRLu6aefVAbLC2yUk9ABEekquz\"]},\"contracts/ComptrollerInterface.sol\":{\"keccak256\":\"0xecfb84fabc9792d0b1c912886249c67bc42c39eb065d962d0b9a5f3736af5892\",\"urls\":[\"bzz-raw://711547ebc1a7f18b271118dd98276771953a9d7b3674716f67d247be9b907372\",\"dweb:/ipfs/QmbVZNvkBp8miByATrL6y5j8MePdcQ8uTAUZMpKrhpLgoa\"]},\"contracts/ComptrollerStorage.sol\":{\"keccak256\":\"0x83961d3c12984fe4afc72717fc44b2d868563d053a0eceda0cbf17ec6b255913\",\"urls\":[\"bzz-raw://ea667c2de43881f9be19f4f75dec348632273178965fc9b3655705d853b032bb\",\"dweb:/ipfs/QmZP6sbNFSgFZrAEvfRjhp1NtGj6U6Sea3JGiKG96AHyeP\"]},\"contracts/EIP20Interface.sol\":{\"keccak256\":\"0xee33b8b333743308a9153a59f22da2cadb22cedef4403fe039bf9e057c9c729a\",\"urls\":[\"bzz-raw://5427fdb941300d36a424da0a0a5800e3b2ca51c9c922831dbfce2f6637402b43\",\"dweb:/ipfs/QmTrvmLynqSUPjsGW2dpiQ91dSmn4xzccQiwr8qaBtyvjH\"]},\"contracts/EIP20NonStandardInterface.sol\":{\"keccak256\":\"0x469899442dd9640bfc2c670d404ad3027e48df5df8e5aeab0e25cc6b6aae05f5\",\"urls\":[\"bzz-raw://d8c4498abaf539eb413a2f1a916d75945adc8bd4ef437f8450cb67e07be3f38d\",\"dweb:/ipfs/QmaFpWfnhAMYW21rbT5PEszn4TGHdGU58Eq5AfZsCuapZ3\"]},\"contracts/ErrorReporter.sol\":{\"keccak256\":\"0xe9587478bc9efad203cab02b8aecae32828cfc9a271b13ae3c018e38e44aab32\",\"urls\":[\"bzz-raw://2eb34bdbbbc410fb401d50ddca44a7421a1d8191711c569ed5bcec1c1b07a05c\",\"dweb:/ipfs/QmYKNCYppyx3NGiwtjdLEmxUMgfnFBqT4pnvnhnBrPgrxS\"]},\"contracts/Exponential.sol\":{\"keccak256\":\"0xfda0e2b610541cf1cf316a0000c89a1069ccc21f1566affc0a058810e2b835d3\",\"urls\":[\"bzz-raw://fe319f184f1b5f27019d3d890124cd24e466d27153ac38eb9ff6b16efbad48b9\",\"dweb:/ipfs/Qmcev6jCmtdCviJxUQvUCmesPDShRDSvdfUEfvsqd4GEJA\"]},\"contracts/ExponentialNoError.sol\":{\"keccak256\":\"0x713a089f4bbcaec1d3924fc7d9a2154904a39f46cb6f25b713167dbe5f21623e\",\"urls\":[\"bzz-raw://d7108d68af7c5effd4272615ceba54e79e585f6b8be5aabc7602245c84c7b9e0\",\"dweb:/ipfs/QmQZo2XpxW7w5viVEg71mi9eKaAYD7HUqfCMB5yCCPVnc5\"]},\"contracts/IFuseFeeDistributor.sol\":{\"keccak256\":\"0xb5d287b8e05574d38bd5d0b413f44b4c5d312f28188573ac60abe78123fbd92c\",\"urls\":[\"bzz-raw://84c2bbf746a82aaa100bee90c7dd40411c723bded124bb1775bf72bf7fda8a2c\",\"dweb:/ipfs/QmToQzDtz9BV2tvU71YsfWjdaZu5qpP1xKFZ1TkQgubhDb\"]},\"contracts/InterestRateModel.sol\":{\"keccak256\":\"0x0cc0dbd1991e5dcdcff58b0c82a9471a0fb9df26763e5e7415e1d081b7332409\",\"urls\":[\"bzz-raw://f4d7936aefc43ea2724f0e472b8f1517f1ca40170258ab9d5bbd0862dd0c4f13\",\"dweb:/ipfs/QmfYjG1Sm3kNwbhomHCWhMqw9LvaJVWVzBe4Te5BHRbTQS\"]},\"contracts/PriceOracle.sol\":{\"keccak256\":\"0x62ba3a5ec8f06d456ab089d6ca7f9d14d3a6ce6814923271ca60a6990918fb41\",\"urls\":[\"bzz-raw://aa6d2f20efdd5389161eb15bdab98b5628dc8cd5354394bbed35bb14d3612506\",\"dweb:/ipfs/QmVfo4eCDuk8LMSywpBjZBxCv7zLCNsG6u3nyD1d4CYwsD\"]}},\"version\":1}"}},"contracts/CTokenInterfaces.sol":{"CDelegateInterface":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldImplementation","type":"address"},{"indexed":false,"internalType":"address","name":"newImplementation","type":"address"}],"name":"NewImplementation","type":"event"},{"constant":false,"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"name":"_becomeImplementation","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"_prepare","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"implementation_","type":"address"},{"internalType":"bool","name":"allowResign","type":"bool"},{"internalType":"bytes","name":"becomeImplementationData","type":"bytes"}],"name":"_setImplementationSafe","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"_becomeImplementation(bytes)":"56e67728","_prepare()":"1db78944","_setImplementationSafe(address,bool,bytes)":"50d85b73","implementation()":"5c60da1b"}},"metadata":"{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldImplementation\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"NewImplementation\",\"type\":\"event\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"_becomeImplementation\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"_prepare\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation_\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"allowResign\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"becomeImplementationData\",\"type\":\"bytes\"}],\"name\":\"_setImplementationSafe\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"_becomeImplementation(bytes)\":{\"details\":\"Should revert if any issues arise which make it unfit for delegation\",\"params\":{\"data\":\"The encoded bytes data for any initialization\"}},\"_prepare()\":{\"details\":\"Checks comptroller.autoImplementation and upgrades the implementation if necessary\"},\"_setImplementationSafe(address,bool,bytes)\":{\"params\":{\"allowResign\":\"Flag to indicate whether to call _resignImplementation on the old implementation\",\"becomeImplementationData\":\"The encoded bytes data to be passed to _becomeImplementation\",\"implementation_\":\"The address of the new implementation for delegation\"}}}},\"userdoc\":{\"methods\":{\"_becomeImplementation(bytes)\":{\"notice\":\"Called by the delegator on a delegate to initialize it for duty\"},\"_prepare()\":{\"notice\":\"Function called before all delegator functions\"},\"_setImplementationSafe(address,bool,bytes)\":{\"notice\":\"Called by the admin to update the implementation of the delegator\"}}}},\"settings\":{\"compilationTarget\":{\"contracts/CTokenInterfaces.sol\":\"CDelegateInterface\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/CToken.sol\":{\"keccak256\":\"0xc3a5a827241528049e20a24cc446558c8a9272909f75ce5d1cf14ae3ab5feba3\",\"urls\":[\"bzz-raw://a403db2bf1a8e5e9384df19600bd18d4251056818b094afcdab418e683bb5cb8\",\"dweb:/ipfs/QmdkRbFGtKP67tNNqyH7BraDRGerwRNA7ktscbFV9LioM2\"]},\"contracts/CTokenInterfaces.sol\":{\"keccak256\":\"0xc8a056c724ef4f0215ece6011e7ac1007c9dc7611ce5160d470ec858bbb06bd3\",\"urls\":[\"bzz-raw://58951693d1b53d2722e55b068bab2b570f4b044d89c28ed6b53bac6e95aeb662\",\"dweb:/ipfs/QmQiNTw5jZR74WjKfX2bPiuTT4tuFuq8rx7QxEVyVvdGLn\"]},\"contracts/CarefulMath.sol\":{\"keccak256\":\"0x1487237dbbbb73ad43c8eff16e78311753719a94a5065f574de5c91b672c56f8\",\"urls\":[\"bzz-raw://349966a236f313b2cb42e1942832e6bd7e134f65f6654e6c4d46788e65cc4a9b\",\"dweb:/ipfs/Qmebpv8i5jLR4fLgpZHQZRLu6aefVAbLC2yUk9ABEekquz\"]},\"contracts/ComptrollerInterface.sol\":{\"keccak256\":\"0xecfb84fabc9792d0b1c912886249c67bc42c39eb065d962d0b9a5f3736af5892\",\"urls\":[\"bzz-raw://711547ebc1a7f18b271118dd98276771953a9d7b3674716f67d247be9b907372\",\"dweb:/ipfs/QmbVZNvkBp8miByATrL6y5j8MePdcQ8uTAUZMpKrhpLgoa\"]},\"contracts/ComptrollerStorage.sol\":{\"keccak256\":\"0x83961d3c12984fe4afc72717fc44b2d868563d053a0eceda0cbf17ec6b255913\",\"urls\":[\"bzz-raw://ea667c2de43881f9be19f4f75dec348632273178965fc9b3655705d853b032bb\",\"dweb:/ipfs/QmZP6sbNFSgFZrAEvfRjhp1NtGj6U6Sea3JGiKG96AHyeP\"]},\"contracts/EIP20Interface.sol\":{\"keccak256\":\"0xee33b8b333743308a9153a59f22da2cadb22cedef4403fe039bf9e057c9c729a\",\"urls\":[\"bzz-raw://5427fdb941300d36a424da0a0a5800e3b2ca51c9c922831dbfce2f6637402b43\",\"dweb:/ipfs/QmTrvmLynqSUPjsGW2dpiQ91dSmn4xzccQiwr8qaBtyvjH\"]},\"contracts/EIP20NonStandardInterface.sol\":{\"keccak256\":\"0x469899442dd9640bfc2c670d404ad3027e48df5df8e5aeab0e25cc6b6aae05f5\",\"urls\":[\"bzz-raw://d8c4498abaf539eb413a2f1a916d75945adc8bd4ef437f8450cb67e07be3f38d\",\"dweb:/ipfs/QmaFpWfnhAMYW21rbT5PEszn4TGHdGU58Eq5AfZsCuapZ3\"]},\"contracts/ErrorReporter.sol\":{\"keccak256\":\"0xe9587478bc9efad203cab02b8aecae32828cfc9a271b13ae3c018e38e44aab32\",\"urls\":[\"bzz-raw://2eb34bdbbbc410fb401d50ddca44a7421a1d8191711c569ed5bcec1c1b07a05c\",\"dweb:/ipfs/QmYKNCYppyx3NGiwtjdLEmxUMgfnFBqT4pnvnhnBrPgrxS\"]},\"contracts/Exponential.sol\":{\"keccak256\":\"0xfda0e2b610541cf1cf316a0000c89a1069ccc21f1566affc0a058810e2b835d3\",\"urls\":[\"bzz-raw://fe319f184f1b5f27019d3d890124cd24e466d27153ac38eb9ff6b16efbad48b9\",\"dweb:/ipfs/Qmcev6jCmtdCviJxUQvUCmesPDShRDSvdfUEfvsqd4GEJA\"]},\"contracts/ExponentialNoError.sol\":{\"keccak256\":\"0x713a089f4bbcaec1d3924fc7d9a2154904a39f46cb6f25b713167dbe5f21623e\",\"urls\":[\"bzz-raw://d7108d68af7c5effd4272615ceba54e79e585f6b8be5aabc7602245c84c7b9e0\",\"dweb:/ipfs/QmQZo2XpxW7w5viVEg71mi9eKaAYD7HUqfCMB5yCCPVnc5\"]},\"contracts/IFuseFeeDistributor.sol\":{\"keccak256\":\"0xb5d287b8e05574d38bd5d0b413f44b4c5d312f28188573ac60abe78123fbd92c\",\"urls\":[\"bzz-raw://84c2bbf746a82aaa100bee90c7dd40411c723bded124bb1775bf72bf7fda8a2c\",\"dweb:/ipfs/QmToQzDtz9BV2tvU71YsfWjdaZu5qpP1xKFZ1TkQgubhDb\"]},\"contracts/InterestRateModel.sol\":{\"keccak256\":\"0x0cc0dbd1991e5dcdcff58b0c82a9471a0fb9df26763e5e7415e1d081b7332409\",\"urls\":[\"bzz-raw://f4d7936aefc43ea2724f0e472b8f1517f1ca40170258ab9d5bbd0862dd0c4f13\",\"dweb:/ipfs/QmfYjG1Sm3kNwbhomHCWhMqw9LvaJVWVzBe4Te5BHRbTQS\"]},\"contracts/PriceOracle.sol\":{\"keccak256\":\"0x62ba3a5ec8f06d456ab089d6ca7f9d14d3a6ce6814923271ca60a6990918fb41\",\"urls\":[\"bzz-raw://aa6d2f20efdd5389161eb15bdab98b5628dc8cd5354394bbed35bb14d3612506\",\"dweb:/ipfs/QmVfo4eCDuk8LMSywpBjZBxCv7zLCNsG6u3nyD1d4CYwsD\"]}},\"version\":1}"},"CDelegationStorage":{"abi":[{"constant":true,"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"6080604052348015600f57600080fd5b5060938061001e6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80635c60da1b14602d575b600080fd5b6033604f565b604080516001600160a01b039092168252519081900360200190f35b6000546001600160a01b03168156fea265627a7a723158200c0dee57180513bf64cc004b58d2c3790771496686b403571dd4d653c24b14d264736f6c63430005110032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x93 DUP1 PUSH2 0x1E PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x5C60DA1B EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x33 PUSH1 0x4F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xC 0xD 0xEE JUMPI XOR SDIV SGT 0xBF PUSH5 0xCC004B58D2 0xC3 PUSH26 0x771496686B403571DD4D653C24B14D264736F6C634300051100 ORIGIN ","sourceMap":"9667:138:11:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9667:138:11;;;;;;;"},"deployedBytecode":{"linkReferences":{},"object":"6080604052348015600f57600080fd5b506004361060285760003560e01c80635c60da1b14602d575b600080fd5b6033604f565b604080516001600160a01b039092168252519081900360200190f35b6000546001600160a01b03168156fea265627a7a723158200c0dee57180513bf64cc004b58d2c3790771496686b403571dd4d653c24b14d264736f6c63430005110032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x5C60DA1B EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x33 PUSH1 0x4F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xC 0xD 0xEE JUMPI XOR SDIV SGT 0xBF PUSH5 0xCC004B58D2 0xC3 PUSH26 0x771496686B403571DD4D653C24B14D264736F6C634300051100 ORIGIN ","sourceMap":"9667:138:11:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9667:138:11;;;;;;;;;;;;;;;;;;;9773:29;;;:::i;:::-;;;;-1:-1:-1;;;;;9773:29:11;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9773:29:11;;:::o"},"methodIdentifiers":{"implementation()":"5c60da1b"}},"metadata":"{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/CTokenInterfaces.sol\":\"CDelegationStorage\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/CToken.sol\":{\"keccak256\":\"0xc3a5a827241528049e20a24cc446558c8a9272909f75ce5d1cf14ae3ab5feba3\",\"urls\":[\"bzz-raw://a403db2bf1a8e5e9384df19600bd18d4251056818b094afcdab418e683bb5cb8\",\"dweb:/ipfs/QmdkRbFGtKP67tNNqyH7BraDRGerwRNA7ktscbFV9LioM2\"]},\"contracts/CTokenInterfaces.sol\":{\"keccak256\":\"0xc8a056c724ef4f0215ece6011e7ac1007c9dc7611ce5160d470ec858bbb06bd3\",\"urls\":[\"bzz-raw://58951693d1b53d2722e55b068bab2b570f4b044d89c28ed6b53bac6e95aeb662\",\"dweb:/ipfs/QmQiNTw5jZR74WjKfX2bPiuTT4tuFuq8rx7QxEVyVvdGLn\"]},\"contracts/CarefulMath.sol\":{\"keccak256\":\"0x1487237dbbbb73ad43c8eff16e78311753719a94a5065f574de5c91b672c56f8\",\"urls\":[\"bzz-raw://349966a236f313b2cb42e1942832e6bd7e134f65f6654e6c4d46788e65cc4a9b\",\"dweb:/ipfs/Qmebpv8i5jLR4fLgpZHQZRLu6aefVAbLC2yUk9ABEekquz\"]},\"contracts/ComptrollerInterface.sol\":{\"keccak256\":\"0xecfb84fabc9792d0b1c912886249c67bc42c39eb065d962d0b9a5f3736af5892\",\"urls\":[\"bzz-raw://711547ebc1a7f18b271118dd98276771953a9d7b3674716f67d247be9b907372\",\"dweb:/ipfs/QmbVZNvkBp8miByATrL6y5j8MePdcQ8uTAUZMpKrhpLgoa\"]},\"contracts/ComptrollerStorage.sol\":{\"keccak256\":\"0x83961d3c12984fe4afc72717fc44b2d868563d053a0eceda0cbf17ec6b255913\",\"urls\":[\"bzz-raw://ea667c2de43881f9be19f4f75dec348632273178965fc9b3655705d853b032bb\",\"dweb:/ipfs/QmZP6sbNFSgFZrAEvfRjhp1NtGj6U6Sea3JGiKG96AHyeP\"]},\"contracts/EIP20Interface.sol\":{\"keccak256\":\"0xee33b8b333743308a9153a59f22da2cadb22cedef4403fe039bf9e057c9c729a\",\"urls\":[\"bzz-raw://5427fdb941300d36a424da0a0a5800e3b2ca51c9c922831dbfce2f6637402b43\",\"dweb:/ipfs/QmTrvmLynqSUPjsGW2dpiQ91dSmn4xzccQiwr8qaBtyvjH\"]},\"contracts/EIP20NonStandardInterface.sol\":{\"keccak256\":\"0x469899442dd9640bfc2c670d404ad3027e48df5df8e5aeab0e25cc6b6aae05f5\",\"urls\":[\"bzz-raw://d8c4498abaf539eb413a2f1a916d75945adc8bd4ef437f8450cb67e07be3f38d\",\"dweb:/ipfs/QmaFpWfnhAMYW21rbT5PEszn4TGHdGU58Eq5AfZsCuapZ3\"]},\"contracts/ErrorReporter.sol\":{\"keccak256\":\"0xe9587478bc9efad203cab02b8aecae32828cfc9a271b13ae3c018e38e44aab32\",\"urls\":[\"bzz-raw://2eb34bdbbbc410fb401d50ddca44a7421a1d8191711c569ed5bcec1c1b07a05c\",\"dweb:/ipfs/QmYKNCYppyx3NGiwtjdLEmxUMgfnFBqT4pnvnhnBrPgrxS\"]},\"contracts/Exponential.sol\":{\"keccak256\":\"0xfda0e2b610541cf1cf316a0000c89a1069ccc21f1566affc0a058810e2b835d3\",\"urls\":[\"bzz-raw://fe319f184f1b5f27019d3d890124cd24e466d27153ac38eb9ff6b16efbad48b9\",\"dweb:/ipfs/Qmcev6jCmtdCviJxUQvUCmesPDShRDSvdfUEfvsqd4GEJA\"]},\"contracts/ExponentialNoError.sol\":{\"keccak256\":\"0x713a089f4bbcaec1d3924fc7d9a2154904a39f46cb6f25b713167dbe5f21623e\",\"urls\":[\"bzz-raw://d7108d68af7c5effd4272615ceba54e79e585f6b8be5aabc7602245c84c7b9e0\",\"dweb:/ipfs/QmQZo2XpxW7w5viVEg71mi9eKaAYD7HUqfCMB5yCCPVnc5\"]},\"contracts/IFuseFeeDistributor.sol\":{\"keccak256\":\"0xb5d287b8e05574d38bd5d0b413f44b4c5d312f28188573ac60abe78123fbd92c\",\"urls\":[\"bzz-raw://84c2bbf746a82aaa100bee90c7dd40411c723bded124bb1775bf72bf7fda8a2c\",\"dweb:/ipfs/QmToQzDtz9BV2tvU71YsfWjdaZu5qpP1xKFZ1TkQgubhDb\"]},\"contracts/InterestRateModel.sol\":{\"keccak256\":\"0x0cc0dbd1991e5dcdcff58b0c82a9471a0fb9df26763e5e7415e1d081b7332409\",\"urls\":[\"bzz-raw://f4d7936aefc43ea2724f0e472b8f1517f1ca40170258ab9d5bbd0862dd0c4f13\",\"dweb:/ipfs/QmfYjG1Sm3kNwbhomHCWhMqw9LvaJVWVzBe4Te5BHRbTQS\"]},\"contracts/PriceOracle.sol\":{\"keccak256\":\"0x62ba3a5ec8f06d456ab089d6ca7f9d14d3a6ce6814923271ca60a6990918fb41\",\"urls\":[\"bzz-raw://aa6d2f20efdd5389161eb15bdab98b5628dc8cd5354394bbed35bb14d3612506\",\"dweb:/ipfs/QmVfo4eCDuk8LMSywpBjZBxCv7zLCNsG6u3nyD1d4CYwsD\"]}},\"version\":1}"},"CErc20Interface":{"abi":[{"constant":false,"inputs":[{"internalType":"uint256","name":"borrowAmount","type":"uint256"}],"name":"borrow","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"borrower","type":"address"},{"internalType":"uint256","name":"repayAmount","type":"uint256"},{"internalType":"contract CTokenInterface","name":"cTokenCollateral","type":"address"}],"name":"liquidateBorrow","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"mintAmount","type":"uint256"}],"name":"mint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"redeemTokens","type":"uint256"}],"name":"redeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"redeemAmount","type":"uint256"}],"name":"redeemUnderlying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"repayAmount","type":"uint256"}],"name":"repayBorrow","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"borrower","type":"address"},{"internalType":"uint256","name":"repayAmount","type":"uint256"}],"name":"repayBorrowBehalf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"underlying","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"borrow(uint256)":"c5ebeaec","liquidateBorrow(address,uint256,address)":"f5e3c462","mint(uint256)":"a0712d68","redeem(uint256)":"db006a75","redeemUnderlying(uint256)":"852a12e3","repayBorrow(uint256)":"0e752702","repayBorrowBehalf(address,uint256)":"2608f818","underlying()":"6f307dc3"}},"metadata":"{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"borrowAmount\",\"type\":\"uint256\"}],\"name\":\"borrow\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"repayAmount\",\"type\":\"uint256\"},{\"internalType\":\"contract CTokenInterface\",\"name\":\"cTokenCollateral\",\"type\":\"address\"}],\"name\":\"liquidateBorrow\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"mintAmount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"redeemTokens\",\"type\":\"uint256\"}],\"name\":\"redeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"redeemAmount\",\"type\":\"uint256\"}],\"name\":\"redeemUnderlying\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"repayAmount\",\"type\":\"uint256\"}],\"name\":\"repayBorrow\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"repayAmount\",\"type\":\"uint256\"}],\"name\":\"repayBorrowBehalf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"underlying\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{\"mint(uint256)\":{\"notice\":\"* User Interface **\"}}}},\"settings\":{\"compilationTarget\":{\"contracts/CTokenInterfaces.sol\":\"CErc20Interface\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/CToken.sol\":{\"keccak256\":\"0xc3a5a827241528049e20a24cc446558c8a9272909f75ce5d1cf14ae3ab5feba3\",\"urls\":[\"bzz-raw://a403db2bf1a8e5e9384df19600bd18d4251056818b094afcdab418e683bb5cb8\",\"dweb:/ipfs/QmdkRbFGtKP67tNNqyH7BraDRGerwRNA7ktscbFV9LioM2\"]},\"contracts/CTokenInterfaces.sol\":{\"keccak256\":\"0xc8a056c724ef4f0215ece6011e7ac1007c9dc7611ce5160d470ec858bbb06bd3\",\"urls\":[\"bzz-raw://58951693d1b53d2722e55b068bab2b570f4b044d89c28ed6b53bac6e95aeb662\",\"dweb:/ipfs/QmQiNTw5jZR74WjKfX2bPiuTT4tuFuq8rx7QxEVyVvdGLn\"]},\"contracts/CarefulMath.sol\":{\"keccak256\":\"0x1487237dbbbb73ad43c8eff16e78311753719a94a5065f574de5c91b672c56f8\",\"urls\":[\"bzz-raw://349966a236f313b2cb42e1942832e6bd7e134f65f6654e6c4d46788e65cc4a9b\",\"dweb:/ipfs/Qmebpv8i5jLR4fLgpZHQZRLu6aefVAbLC2yUk9ABEekquz\"]},\"contracts/ComptrollerInterface.sol\":{\"keccak256\":\"0xecfb84fabc9792d0b1c912886249c67bc42c39eb065d962d0b9a5f3736af5892\",\"urls\":[\"bzz-raw://711547ebc1a7f18b271118dd98276771953a9d7b3674716f67d247be9b907372\",\"dweb:/ipfs/QmbVZNvkBp8miByATrL6y5j8MePdcQ8uTAUZMpKrhpLgoa\"]},\"contracts/ComptrollerStorage.sol\":{\"keccak256\":\"0x83961d3c12984fe4afc72717fc44b2d868563d053a0eceda0cbf17ec6b255913\",\"urls\":[\"bzz-raw://ea667c2de43881f9be19f4f75dec348632273178965fc9b3655705d853b032bb\",\"dweb:/ipfs/QmZP6sbNFSgFZrAEvfRjhp1NtGj6U6Sea3JGiKG96AHyeP\"]},\"contracts/EIP20Interface.sol\":{\"keccak256\":\"0xee33b8b333743308a9153a59f22da2cadb22cedef4403fe039bf9e057c9c729a\",\"urls\":[\"bzz-raw://5427fdb941300d36a424da0a0a5800e3b2ca51c9c922831dbfce2f6637402b43\",\"dweb:/ipfs/QmTrvmLynqSUPjsGW2dpiQ91dSmn4xzccQiwr8qaBtyvjH\"]},\"contracts/EIP20NonStandardInterface.sol\":{\"keccak256\":\"0x469899442dd9640bfc2c670d404ad3027e48df5df8e5aeab0e25cc6b6aae05f5\",\"urls\":[\"bzz-raw://d8c4498abaf539eb413a2f1a916d75945adc8bd4ef437f8450cb67e07be3f38d\",\"dweb:/ipfs/QmaFpWfnhAMYW21rbT5PEszn4TGHdGU58Eq5AfZsCuapZ3\"]},\"contracts/ErrorReporter.sol\":{\"keccak256\":\"0xe9587478bc9efad203cab02b8aecae32828cfc9a271b13ae3c018e38e44aab32\",\"urls\":[\"bzz-raw://2eb34bdbbbc410fb401d50ddca44a7421a1d8191711c569ed5bcec1c1b07a05c\",\"dweb:/ipfs/QmYKNCYppyx3NGiwtjdLEmxUMgfnFBqT4pnvnhnBrPgrxS\"]},\"contracts/Exponential.sol\":{\"keccak256\":\"0xfda0e2b610541cf1cf316a0000c89a1069ccc21f1566affc0a058810e2b835d3\",\"urls\":[\"bzz-raw://fe319f184f1b5f27019d3d890124cd24e466d27153ac38eb9ff6b16efbad48b9\",\"dweb:/ipfs/Qmcev6jCmtdCviJxUQvUCmesPDShRDSvdfUEfvsqd4GEJA\"]},\"contracts/ExponentialNoError.sol\":{\"keccak256\":\"0x713a089f4bbcaec1d3924fc7d9a2154904a39f46cb6f25b713167dbe5f21623e\",\"urls\":[\"bzz-raw://d7108d68af7c5effd4272615ceba54e79e585f6b8be5aabc7602245c84c7b9e0\",\"dweb:/ipfs/QmQZo2XpxW7w5viVEg71mi9eKaAYD7HUqfCMB5yCCPVnc5\"]},\"contracts/IFuseFeeDistributor.sol\":{\"keccak256\":\"0xb5d287b8e05574d38bd5d0b413f44b4c5d312f28188573ac60abe78123fbd92c\",\"urls\":[\"bzz-raw://84c2bbf746a82aaa100bee90c7dd40411c723bded124bb1775bf72bf7fda8a2c\",\"dweb:/ipfs/QmToQzDtz9BV2tvU71YsfWjdaZu5qpP1xKFZ1TkQgubhDb\"]},\"contracts/InterestRateModel.sol\":{\"keccak256\":\"0x0cc0dbd1991e5dcdcff58b0c82a9471a0fb9df26763e5e7415e1d081b7332409\",\"urls\":[\"bzz-raw://f4d7936aefc43ea2724f0e472b8f1517f1ca40170258ab9d5bbd0862dd0c4f13\",\"dweb:/ipfs/QmfYjG1Sm3kNwbhomHCWhMqw9LvaJVWVzBe4Te5BHRbTQS\"]},\"contracts/PriceOracle.sol\":{\"keccak256\":\"0x62ba3a5ec8f06d456ab089d6ca7f9d14d3a6ce6814923271ca60a6990918fb41\",\"urls\":[\"bzz-raw://aa6d2f20efdd5389161eb15bdab98b5628dc8cd5354394bbed35bb14d3612506\",\"dweb:/ipfs/QmVfo4eCDuk8LMSywpBjZBxCv7zLCNsG6u3nyD1d4CYwsD\"]}},\"version\":1}"},"CErc20Storage":{"abi":[{"constant":true,"inputs":[],"name":"underlying","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"6080604052348015600f57600080fd5b5060938061001e6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80636f307dc314602d575b600080fd5b6033604f565b604080516001600160a01b039092168252519081900360200190f35b6000546001600160a01b03168156fea265627a7a72315820597c4f9f1e72c8ae8b0c83a917f1a4c748a76214f079f5a27f17d9406da6736b64736f6c63430005110032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x93 DUP1 PUSH2 0x1E PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6F307DC3 EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x33 PUSH1 0x4F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 MSIZE PUSH29 0x4F9F1E72C8AE8B0C83A917F1A4C748A76214F079F5A27F17D9406DA673 PUSH12 0x64736F6C6343000511003200 ","sourceMap":"8741:121:11:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8741:121:11;;;;;;;"},"deployedBytecode":{"linkReferences":{},"object":"6080604052348015600f57600080fd5b506004361060285760003560e01c80636f307dc314602d575b600080fd5b6033604f565b604080516001600160a01b039092168252519081900360200190f35b6000546001600160a01b03168156fea265627a7a72315820597c4f9f1e72c8ae8b0c83a917f1a4c748a76214f079f5a27f17d9406da6736b64736f6c63430005110032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6F307DC3 EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x33 PUSH1 0x4F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 MSIZE PUSH29 0x4F9F1E72C8AE8B0C83A917F1A4C748A76214F079F5A27F17D9406DA673 PUSH12 0x64736F6C6343000511003200 ","sourceMap":"8741:121:11:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8741:121:11;;;;;;;;;;;;;;;;;;;8834:25;;;:::i;:::-;;;;-1:-1:-1;;;;;8834:25:11;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8834:25:11;;:::o"},"methodIdentifiers":{"underlying()":"6f307dc3"}},"metadata":"{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[],\"name\":\"underlying\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/CTokenInterfaces.sol\":\"CErc20Storage\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/CToken.sol\":{\"keccak256\":\"0xc3a5a827241528049e20a24cc446558c8a9272909f75ce5d1cf14ae3ab5feba3\",\"urls\":[\"bzz-raw://a403db2bf1a8e5e9384df19600bd18d4251056818b094afcdab418e683bb5cb8\",\"dweb:/ipfs/QmdkRbFGtKP67tNNqyH7BraDRGerwRNA7ktscbFV9LioM2\"]},\"contracts/CTokenInterfaces.sol\":{\"keccak256\":\"0xc8a056c724ef4f0215ece6011e7ac1007c9dc7611ce5160d470ec858bbb06bd3\",\"urls\":[\"bzz-raw://58951693d1b53d2722e55b068bab2b570f4b044d89c28ed6b53bac6e95aeb662\",\"dweb:/ipfs/QmQiNTw5jZR74WjKfX2bPiuTT4tuFuq8rx7QxEVyVvdGLn\"]},\"contracts/CarefulMath.sol\":{\"keccak256\":\"0x1487237dbbbb73ad43c8eff16e78311753719a94a5065f574de5c91b672c56f8\",\"urls\":[\"bzz-raw://349966a236f313b2cb42e1942832e6bd7e134f65f6654e6c4d46788e65cc4a9b\",\"dweb:/ipfs/Qmebpv8i5jLR4fLgpZHQZRLu6aefVAbLC2yUk9ABEekquz\"]},\"contracts/ComptrollerInterface.sol\":{\"keccak256\":\"0xecfb84fabc9792d0b1c912886249c67bc42c39eb065d962d0b9a5f3736af5892\",\"urls\":[\"bzz-raw://711547ebc1a7f18b271118dd98276771953a9d7b3674716f67d247be9b907372\",\"dweb:/ipfs/QmbVZNvkBp8miByATrL6y5j8MePdcQ8uTAUZMpKrhpLgoa\"]},\"contracts/ComptrollerStorage.sol\":{\"keccak256\":\"0x83961d3c12984fe4afc72717fc44b2d868563d053a0eceda0cbf17ec6b255913\",\"urls\":[\"bzz-raw://ea667c2de43881f9be19f4f75dec348632273178965fc9b3655705d853b032bb\",\"dweb:/ipfs/QmZP6sbNFSgFZrAEvfRjhp1NtGj6U6Sea3JGiKG96AHyeP\"]},\"contracts/EIP20Interface.sol\":{\"keccak256\":\"0xee33b8b333743308a9153a59f22da2cadb22cedef4403fe039bf9e057c9c729a\",\"urls\":[\"bzz-raw://5427fdb941300d36a424da0a0a5800e3b2ca51c9c922831dbfce2f6637402b43\",\"dweb:/ipfs/QmTrvmLynqSUPjsGW2dpiQ91dSmn4xzccQiwr8qaBtyvjH\"]},\"contracts/EIP20NonStandardInterface.sol\":{\"keccak256\":\"0x469899442dd9640bfc2c670d404ad3027e48df5df8e5aeab0e25cc6b6aae05f5\",\"urls\":[\"bzz-raw://d8c4498abaf539eb413a2f1a916d75945adc8bd4ef437f8450cb67e07be3f38d\",\"dweb:/ipfs/QmaFpWfnhAMYW21rbT5PEszn4TGHdGU58Eq5AfZsCuapZ3\"]},\"contracts/ErrorReporter.sol\":{\"keccak256\":\"0xe9587478bc9efad203cab02b8aecae32828cfc9a271b13ae3c018e38e44aab32\",\"urls\":[\"bzz-raw://2eb34bdbbbc410fb401d50ddca44a7421a1d8191711c569ed5bcec1c1b07a05c\",\"dweb:/ipfs/QmYKNCYppyx3NGiwtjdLEmxUMgfnFBqT4pnvnhnBrPgrxS\"]},\"contracts/Exponential.sol\":{\"keccak256\":\"0xfda0e2b610541cf1cf316a0000c89a1069ccc21f1566affc0a058810e2b835d3\",\"urls\":[\"bzz-raw://fe319f184f1b5f27019d3d890124cd24e466d27153ac38eb9ff6b16efbad48b9\",\"dweb:/ipfs/Qmcev6jCmtdCviJxUQvUCmesPDShRDSvdfUEfvsqd4GEJA\"]},\"contracts/ExponentialNoError.sol\":{\"keccak256\":\"0x713a089f4bbcaec1d3924fc7d9a2154904a39f46cb6f25b713167dbe5f21623e\",\"urls\":[\"bzz-raw://d7108d68af7c5effd4272615ceba54e79e585f6b8be5aabc7602245c84c7b9e0\",\"dweb:/ipfs/QmQZo2XpxW7w5viVEg71mi9eKaAYD7HUqfCMB5yCCPVnc5\"]},\"contracts/IFuseFeeDistributor.sol\":{\"keccak256\":\"0xb5d287b8e05574d38bd5d0b413f44b4c5d312f28188573ac60abe78123fbd92c\",\"urls\":[\"bzz-raw://84c2bbf746a82aaa100bee90c7dd40411c723bded124bb1775bf72bf7fda8a2c\",\"dweb:/ipfs/QmToQzDtz9BV2tvU71YsfWjdaZu5qpP1xKFZ1TkQgubhDb\"]},\"contracts/InterestRateModel.sol\":{\"keccak256\":\"0x0cc0dbd1991e5dcdcff58b0c82a9471a0fb9df26763e5e7415e1d081b7332409\",\"urls\":[\"bzz-raw://f4d7936aefc43ea2724f0e472b8f1517f1ca40170258ab9d5bbd0862dd0c4f13\",\"dweb:/ipfs/QmfYjG1Sm3kNwbhomHCWhMqw9LvaJVWVzBe4Te5BHRbTQS\"]},\"contracts/PriceOracle.sol\":{\"keccak256\":\"0x62ba3a5ec8f06d456ab089d6ca7f9d14d3a6ce6814923271ca60a6990918fb41\",\"urls\":[\"bzz-raw://aa6d2f20efdd5389161eb15bdab98b5628dc8cd5354394bbed35bb14d3612506\",\"dweb:/ipfs/QmVfo4eCDuk8LMSywpBjZBxCv7zLCNsG6u3nyD1d4CYwsD\"]}},\"version\":1}"},"CEtherInterface":{"abi":[{"constant":true,"inputs":[],"name":"isCEther","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"underlying","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b5060bc8061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c80636f307dc3146037578063ac784ddc146059575b600080fd5b603d6073565b604080516001600160a01b039092168252519081900360200190f35b605f6082565b604080519115158252519081900360200190f35b6000546001600160a01b031681565b60018156fea265627a7a72315820d2ca309daf20483ad80e867adb1ae5fbff89a204a742ed65c8abeef03b1f7c4b64736f6c63430005110032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xBC DUP1 PUSH2 0x1F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x32 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6F307DC3 EQ PUSH1 0x37 JUMPI DUP1 PUSH4 0xAC784DDC EQ PUSH1 0x59 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3D PUSH1 0x73 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x5F PUSH1 0x82 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 DUP2 JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xD2 0xCA ADDRESS SWAP14 0xAF KECCAK256 0x48 GASPRICE 0xD8 0xE DUP7 PUSH27 0xDB1AE5FBFF89A204A742ED65C8ABEEF03B1F7C4B64736F6C634300 SDIV GT STOP ORIGIN ","sourceMap":"9489:176:11:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9489:176:11;;;;;;;"},"deployedBytecode":{"linkReferences":{},"object":"6080604052348015600f57600080fd5b506004361060325760003560e01c80636f307dc3146037578063ac784ddc146059575b600080fd5b603d6073565b604080516001600160a01b039092168252519081900360200190f35b605f6082565b604080519115158252519081900360200190f35b6000546001600160a01b031681565b60018156fea265627a7a72315820d2ca309daf20483ad80e867adb1ae5fbff89a204a742ed65c8abeef03b1f7c4b64736f6c63430005110032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x32 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6F307DC3 EQ PUSH1 0x37 JUMPI DUP1 PUSH4 0xAC784DDC EQ PUSH1 0x59 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3D PUSH1 0x73 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x5F PUSH1 0x82 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 DUP2 JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xD2 0xCA ADDRESS SWAP14 0xAF KECCAK256 0x48 GASPRICE 0xD8 0xE DUP7 PUSH27 0xDB1AE5FBFF89A204A742ED65C8ABEEF03B1F7C4B64736F6C634300 SDIV GT STOP ORIGIN ","sourceMap":"9489:176:11:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9489:176:11;;;;;;;;;;;;;;;;;;;;;;;;8834:25;;;:::i;:::-;;;;-1:-1:-1;;;;;8834:25:11;;;;;;;;;;;;;;9626:36;;;:::i;:::-;;;;;;;;;;;;;;;;;;8834:25;;;-1:-1:-1;;;;;8834:25:11;;:::o;9626:36::-;9658:4;9626:36;:::o"},"methodIdentifiers":{"isCEther()":"ac784ddc","underlying()":"6f307dc3"}},"metadata":"{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[],\"name\":\"isCEther\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"underlying\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/CTokenInterfaces.sol\":\"CEtherInterface\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/CToken.sol\":{\"keccak256\":\"0xc3a5a827241528049e20a24cc446558c8a9272909f75ce5d1cf14ae3ab5feba3\",\"urls\":[\"bzz-raw://a403db2bf1a8e5e9384df19600bd18d4251056818b094afcdab418e683bb5cb8\",\"dweb:/ipfs/QmdkRbFGtKP67tNNqyH7BraDRGerwRNA7ktscbFV9LioM2\"]},\"contracts/CTokenInterfaces.sol\":{\"keccak256\":\"0xc8a056c724ef4f0215ece6011e7ac1007c9dc7611ce5160d470ec858bbb06bd3\",\"urls\":[\"bzz-raw://58951693d1b53d2722e55b068bab2b570f4b044d89c28ed6b53bac6e95aeb662\",\"dweb:/ipfs/QmQiNTw5jZR74WjKfX2bPiuTT4tuFuq8rx7QxEVyVvdGLn\"]},\"contracts/CarefulMath.sol\":{\"keccak256\":\"0x1487237dbbbb73ad43c8eff16e78311753719a94a5065f574de5c91b672c56f8\",\"urls\":[\"bzz-raw://349966a236f313b2cb42e1942832e6bd7e134f65f6654e6c4d46788e65cc4a9b\",\"dweb:/ipfs/Qmebpv8i5jLR4fLgpZHQZRLu6aefVAbLC2yUk9ABEekquz\"]},\"contracts/ComptrollerInterface.sol\":{\"keccak256\":\"0xecfb84fabc9792d0b1c912886249c67bc42c39eb065d962d0b9a5f3736af5892\",\"urls\":[\"bzz-raw://711547ebc1a7f18b271118dd98276771953a9d7b3674716f67d247be9b907372\",\"dweb:/ipfs/QmbVZNvkBp8miByATrL6y5j8MePdcQ8uTAUZMpKrhpLgoa\"]},\"contracts/ComptrollerStorage.sol\":{\"keccak256\":\"0x83961d3c12984fe4afc72717fc44b2d868563d053a0eceda0cbf17ec6b255913\",\"urls\":[\"bzz-raw://ea667c2de43881f9be19f4f75dec348632273178965fc9b3655705d853b032bb\",\"dweb:/ipfs/QmZP6sbNFSgFZrAEvfRjhp1NtGj6U6Sea3JGiKG96AHyeP\"]},\"contracts/EIP20Interface.sol\":{\"keccak256\":\"0xee33b8b333743308a9153a59f22da2cadb22cedef4403fe039bf9e057c9c729a\",\"urls\":[\"bzz-raw://5427fdb941300d36a424da0a0a5800e3b2ca51c9c922831dbfce2f6637402b43\",\"dweb:/ipfs/QmTrvmLynqSUPjsGW2dpiQ91dSmn4xzccQiwr8qaBtyvjH\"]},\"contracts/EIP20NonStandardInterface.sol\":{\"keccak256\":\"0x469899442dd9640bfc2c670d404ad3027e48df5df8e5aeab0e25cc6b6aae05f5\",\"urls\":[\"bzz-raw://d8c4498abaf539eb413a2f1a916d75945adc8bd4ef437f8450cb67e07be3f38d\",\"dweb:/ipfs/QmaFpWfnhAMYW21rbT5PEszn4TGHdGU58Eq5AfZsCuapZ3\"]},\"contracts/ErrorReporter.sol\":{\"keccak256\":\"0xe9587478bc9efad203cab02b8aecae32828cfc9a271b13ae3c018e38e44aab32\",\"urls\":[\"bzz-raw://2eb34bdbbbc410fb401d50ddca44a7421a1d8191711c569ed5bcec1c1b07a05c\",\"dweb:/ipfs/QmYKNCYppyx3NGiwtjdLEmxUMgfnFBqT4pnvnhnBrPgrxS\"]},\"contracts/Exponential.sol\":{\"keccak256\":\"0xfda0e2b610541cf1cf316a0000c89a1069ccc21f1566affc0a058810e2b835d3\",\"urls\":[\"bzz-raw://fe319f184f1b5f27019d3d890124cd24e466d27153ac38eb9ff6b16efbad48b9\",\"dweb:/ipfs/Qmcev6jCmtdCviJxUQvUCmesPDShRDSvdfUEfvsqd4GEJA\"]},\"contracts/ExponentialNoError.sol\":{\"keccak256\":\"0x713a089f4bbcaec1d3924fc7d9a2154904a39f46cb6f25b713167dbe5f21623e\",\"urls\":[\"bzz-raw://d7108d68af7c5effd4272615ceba54e79e585f6b8be5aabc7602245c84c7b9e0\",\"dweb:/ipfs/QmQZo2XpxW7w5viVEg71mi9eKaAYD7HUqfCMB5yCCPVnc5\"]},\"contracts/IFuseFeeDistributor.sol\":{\"keccak256\":\"0xb5d287b8e05574d38bd5d0b413f44b4c5d312f28188573ac60abe78123fbd92c\",\"urls\":[\"bzz-raw://84c2bbf746a82aaa100bee90c7dd40411c723bded124bb1775bf72bf7fda8a2c\",\"dweb:/ipfs/QmToQzDtz9BV2tvU71YsfWjdaZu5qpP1xKFZ1TkQgubhDb\"]},\"contracts/InterestRateModel.sol\":{\"keccak256\":\"0x0cc0dbd1991e5dcdcff58b0c82a9471a0fb9df26763e5e7415e1d081b7332409\",\"urls\":[\"bzz-raw://f4d7936aefc43ea2724f0e472b8f1517f1ca40170258ab9d5bbd0862dd0c4f13\",\"dweb:/ipfs/QmfYjG1Sm3kNwbhomHCWhMqw9LvaJVWVzBe4Te5BHRbTQS\"]},\"contracts/PriceOracle.sol\":{\"keccak256\":\"0x62ba3a5ec8f06d456ab089d6ca7f9d14d3a6ce6814923271ca60a6990918fb41\",\"urls\":[\"bzz-raw://aa6d2f20efdd5389161eb15bdab98b5628dc8cd5354394bbed35bb14d3612506\",\"dweb:/ipfs/QmVfo4eCDuk8LMSywpBjZBxCv7zLCNsG6u3nyD1d4CYwsD\"]}},\"version\":1}"},"CTokenAdminStorage":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a7231582097c75167c8cd3aaeaf02475493a8340e2bd13d17d6289113537ca6da5317858364736f6c63430005110032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3E DUP1 PUSH1 0x1D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 SWAP8 0xC7 MLOAD PUSH8 0xC8CD3AAEAF024754 SWAP4 0xA8 CALLVALUE 0xE 0x2B 0xD1 RETURNDATASIZE OR 0xD6 0x28 SWAP2 SGT MSTORE8 PUSH29 0xA6DA5317858364736F6C63430005110032000000000000000000000000 ","sourceMap":"168:577:11:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;168:577:11;;;;;;;"},"deployedBytecode":{"linkReferences":{},"object":"6080604052600080fdfea265627a7a7231582097c75167c8cd3aaeaf02475493a8340e2bd13d17d6289113537ca6da5317858364736f6c63430005110032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 SWAP8 0xC7 MLOAD PUSH8 0xC8CD3AAEAF024754 SWAP4 0xA8 CALLVALUE 0xE 0x2B 0xD1 RETURNDATASIZE OR 0xD6 0x28 SWAP2 SGT MSTORE8 PUSH29 0xA6DA5317858364736F6C63430005110032000000000000000000000000 ","sourceMap":"168:577:11:-;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/CTokenInterfaces.sol\":\"CTokenAdminStorage\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/CToken.sol\":{\"keccak256\":\"0xc3a5a827241528049e20a24cc446558c8a9272909f75ce5d1cf14ae3ab5feba3\",\"urls\":[\"bzz-raw://a403db2bf1a8e5e9384df19600bd18d4251056818b094afcdab418e683bb5cb8\",\"dweb:/ipfs/QmdkRbFGtKP67tNNqyH7BraDRGerwRNA7ktscbFV9LioM2\"]},\"contracts/CTokenInterfaces.sol\":{\"keccak256\":\"0xc8a056c724ef4f0215ece6011e7ac1007c9dc7611ce5160d470ec858bbb06bd3\",\"urls\":[\"bzz-raw://58951693d1b53d2722e55b068bab2b570f4b044d89c28ed6b53bac6e95aeb662\",\"dweb:/ipfs/QmQiNTw5jZR74WjKfX2bPiuTT4tuFuq8rx7QxEVyVvdGLn\"]},\"contracts/CarefulMath.sol\":{\"keccak256\":\"0x1487237dbbbb73ad43c8eff16e78311753719a94a5065f574de5c91b672c56f8\",\"urls\":[\"bzz-raw://349966a236f313b2cb42e1942832e6bd7e134f65f6654e6c4d46788e65cc4a9b\",\"dweb:/ipfs/Qmebpv8i5jLR4fLgpZHQZRLu6aefVAbLC2yUk9ABEekquz\"]},\"contracts/ComptrollerInterface.sol\":{\"keccak256\":\"0xecfb84fabc9792d0b1c912886249c67bc42c39eb065d962d0b9a5f3736af5892\",\"urls\":[\"bzz-raw://711547ebc1a7f18b271118dd98276771953a9d7b3674716f67d247be9b907372\",\"dweb:/ipfs/QmbVZNvkBp8miByATrL6y5j8MePdcQ8uTAUZMpKrhpLgoa\"]},\"contracts/ComptrollerStorage.sol\":{\"keccak256\":\"0x83961d3c12984fe4afc72717fc44b2d868563d053a0eceda0cbf17ec6b255913\",\"urls\":[\"bzz-raw://ea667c2de43881f9be19f4f75dec348632273178965fc9b3655705d853b032bb\",\"dweb:/ipfs/QmZP6sbNFSgFZrAEvfRjhp1NtGj6U6Sea3JGiKG96AHyeP\"]},\"contracts/EIP20Interface.sol\":{\"keccak256\":\"0xee33b8b333743308a9153a59f22da2cadb22cedef4403fe039bf9e057c9c729a\",\"urls\":[\"bzz-raw://5427fdb941300d36a424da0a0a5800e3b2ca51c9c922831dbfce2f6637402b43\",\"dweb:/ipfs/QmTrvmLynqSUPjsGW2dpiQ91dSmn4xzccQiwr8qaBtyvjH\"]},\"contracts/EIP20NonStandardInterface.sol\":{\"keccak256\":\"0x469899442dd9640bfc2c670d404ad3027e48df5df8e5aeab0e25cc6b6aae05f5\",\"urls\":[\"bzz-raw://d8c4498abaf539eb413a2f1a916d75945adc8bd4ef437f8450cb67e07be3f38d\",\"dweb:/ipfs/QmaFpWfnhAMYW21rbT5PEszn4TGHdGU58Eq5AfZsCuapZ3\"]},\"contracts/ErrorReporter.sol\":{\"keccak256\":\"0xe9587478bc9efad203cab02b8aecae32828cfc9a271b13ae3c018e38e44aab32\",\"urls\":[\"bzz-raw://2eb34bdbbbc410fb401d50ddca44a7421a1d8191711c569ed5bcec1c1b07a05c\",\"dweb:/ipfs/QmYKNCYppyx3NGiwtjdLEmxUMgfnFBqT4pnvnhnBrPgrxS\"]},\"contracts/Exponential.sol\":{\"keccak256\":\"0xfda0e2b610541cf1cf316a0000c89a1069ccc21f1566affc0a058810e2b835d3\",\"urls\":[\"bzz-raw://fe319f184f1b5f27019d3d890124cd24e466d27153ac38eb9ff6b16efbad48b9\",\"dweb:/ipfs/Qmcev6jCmtdCviJxUQvUCmesPDShRDSvdfUEfvsqd4GEJA\"]},\"contracts/ExponentialNoError.sol\":{\"keccak256\":\"0x713a089f4bbcaec1d3924fc7d9a2154904a39f46cb6f25b713167dbe5f21623e\",\"urls\":[\"bzz-raw://d7108d68af7c5effd4272615ceba54e79e585f6b8be5aabc7602245c84c7b9e0\",\"dweb:/ipfs/QmQZo2XpxW7w5viVEg71mi9eKaAYD7HUqfCMB5yCCPVnc5\"]},\"contracts/IFuseFeeDistributor.sol\":{\"keccak256\":\"0xb5d287b8e05574d38bd5d0b413f44b4c5d312f28188573ac60abe78123fbd92c\",\"urls\":[\"bzz-raw://84c2bbf746a82aaa100bee90c7dd40411c723bded124bb1775bf72bf7fda8a2c\",\"dweb:/ipfs/QmToQzDtz9BV2tvU71YsfWjdaZu5qpP1xKFZ1TkQgubhDb\"]},\"contracts/InterestRateModel.sol\":{\"keccak256\":\"0x0cc0dbd1991e5dcdcff58b0c82a9471a0fb9df26763e5e7415e1d081b7332409\",\"urls\":[\"bzz-raw://f4d7936aefc43ea2724f0e472b8f1517f1ca40170258ab9d5bbd0862dd0c4f13\",\"dweb:/ipfs/QmfYjG1Sm3kNwbhomHCWhMqw9LvaJVWVzBe4Te5BHRbTQS\"]},\"contracts/PriceOracle.sol\":{\"keccak256\":\"0x62ba3a5ec8f06d456ab089d6ca7f9d14d3a6ce6814923271ca60a6990918fb41\",\"urls\":[\"bzz-raw://aa6d2f20efdd5389161eb15bdab98b5628dc8cd5354394bbed35bb14d3612506\",\"dweb:/ipfs/QmVfo4eCDuk8LMSywpBjZBxCv7zLCNsG6u3nyD1d4CYwsD\"]}},\"version\":1}"},"CTokenInterface":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"cashPrior","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"interestAccumulated","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"borrowIndex","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalBorrows","type":"uint256"}],"name":"AccrueInterest","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"borrower","type":"address"},{"indexed":false,"internalType":"uint256","name":"borrowAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"accountBorrows","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalBorrows","type":"uint256"}],"name":"Borrow","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"error","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"info","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"detail","type":"uint256"}],"name":"Failure","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"liquidator","type":"address"},{"indexed":false,"internalType":"address","name":"borrower","type":"address"},{"indexed":false,"internalType":"uint256","name":"repayAmount","type":"uint256"},{"indexed":false,"internalType":"address","name":"cTokenCollateral","type":"address"},{"indexed":false,"internalType":"uint256","name":"seizeTokens","type":"uint256"}],"name":"LiquidateBorrow","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"minter","type":"address"},{"indexed":false,"internalType":"uint256","name":"mintAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"mintTokens","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldAdminFeeMantissa","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newAdminFeeMantissa","type":"uint256"}],"name":"NewAdminFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract ComptrollerInterface","name":"oldComptroller","type":"address"},{"indexed":false,"internalType":"contract ComptrollerInterface","name":"newComptroller","type":"address"}],"name":"NewComptroller","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldFuseFeeMantissa","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newFuseFeeMantissa","type":"uint256"}],"name":"NewFuseFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract InterestRateModel","name":"oldInterestRateModel","type":"address"},{"indexed":false,"internalType":"contract InterestRateModel","name":"newInterestRateModel","type":"address"}],"name":"NewMarketInterestRateModel","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldReserveFactorMantissa","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newReserveFactorMantissa","type":"uint256"}],"name":"NewReserveFactor","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"redeemer","type":"address"},{"indexed":false,"internalType":"uint256","name":"redeemAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"redeemTokens","type":"uint256"}],"name":"Redeem","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"payer","type":"address"},{"indexed":false,"internalType":"address","name":"borrower","type":"address"},{"indexed":false,"internalType":"uint256","name":"repayAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"accountBorrows","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalBorrows","type":"uint256"}],"name":"RepayBorrow","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"benefactor","type":"address"},{"indexed":false,"internalType":"uint256","name":"addAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newTotalReserves","type":"uint256"}],"name":"ReservesAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"admin","type":"address"},{"indexed":false,"internalType":"uint256","name":"reduceAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newTotalReserves","type":"uint256"}],"name":"ReservesReduced","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":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"constant":false,"inputs":[{"internalType":"uint256","name":"reduceAmount","type":"uint256"}],"name":"_reduceReserves","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"contract InterestRateModel","name":"newInterestRateModel","type":"address"}],"name":"_setInterestRateModel","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"newReserveFactorMantissa","type":"uint256"}],"name":"_setReserveFactor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"accrualBlockNumber","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"accrueInterest","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"adminFeeMantissa","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOfUnderlying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"borrowBalanceCurrent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"borrowBalanceStored","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"borrowIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"borrowRatePerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"comptroller","outputs":[{"internalType":"contract ComptrollerInterface","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"exchangeRateCurrent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"exchangeRateStored","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"fuseFeeMantissa","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getAccountSnapshot","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getCash","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"interestRateModel","outputs":[{"internalType":"contract InterestRateModel","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isCEther","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isCToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"protocolSeizeShareMantissa","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"reserveFactorMantissa","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"liquidator","type":"address"},{"internalType":"address","name":"borrower","type":"address"},{"internalType":"uint256","name":"seizeTokens","type":"uint256"}],"name":"seize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"supplyRatePerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalAdminFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalBorrows","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"totalBorrowsCurrent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalFuseFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalReserves","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"src","type":"address"},{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"_reduceReserves(uint256)":"601a0bf1","_setInterestRateModel(address)":"f2b3abbd","_setReserveFactor(uint256)":"fca7820b","accrualBlockNumber()":"6c540baf","accrueInterest()":"a6afed95","adminFeeMantissa()":"8d02d9a1","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","balanceOfUnderlying(address)":"3af9e669","borrowBalanceCurrent(address)":"17bfdfbc","borrowBalanceStored(address)":"95dd9193","borrowIndex()":"aa5af0fd","borrowRatePerBlock()":"f8f9da28","comptroller()":"5fe3b567","decimals()":"313ce567","exchangeRateCurrent()":"bd6d894d","exchangeRateStored()":"182df0f5","fuseFeeMantissa()":"dbfe7c19","getAccountSnapshot(address)":"c37f68e2","getCash()":"3b1d21a2","interestRateModel()":"f3fdb15a","isCEther()":"ac784ddc","isCToken()":"fe9c44ae","name()":"06fdde03","protocolSeizeShareMantissa()":"6752e702","reserveFactorMantissa()":"173b9904","seize(address,address,uint256)":"b2a02ff1","supplyRatePerBlock()":"ae9d70b0","symbol()":"95d89b41","totalAdminFees()":"61feacff","totalBorrows()":"47bd3718","totalBorrowsCurrent()":"73acee98","totalFuseFees()":"dc028ab1","totalReserves()":"8f840ddd","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"cashPrior\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"interestAccumulated\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"borrowIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalBorrows\",\"type\":\"uint256\"}],\"name\":\"AccrueInterest\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"borrowAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"accountBorrows\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalBorrows\",\"type\":\"uint256\"}],\"name\":\"Borrow\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"error\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"info\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"detail\",\"type\":\"uint256\"}],\"name\":\"Failure\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"liquidator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"repayAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"cTokenCollateral\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"seizeTokens\",\"type\":\"uint256\"}],\"name\":\"LiquidateBorrow\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"mintAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"mintTokens\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldAdminFeeMantissa\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newAdminFeeMantissa\",\"type\":\"uint256\"}],\"name\":\"NewAdminFee\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract ComptrollerInterface\",\"name\":\"oldComptroller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract ComptrollerInterface\",\"name\":\"newComptroller\",\"type\":\"address\"}],\"name\":\"NewComptroller\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldFuseFeeMantissa\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newFuseFeeMantissa\",\"type\":\"uint256\"}],\"name\":\"NewFuseFee\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract InterestRateModel\",\"name\":\"oldInterestRateModel\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract InterestRateModel\",\"name\":\"newInterestRateModel\",\"type\":\"address\"}],\"name\":\"NewMarketInterestRateModel\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldReserveFactorMantissa\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newReserveFactorMantissa\",\"type\":\"uint256\"}],\"name\":\"NewReserveFactor\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"redeemer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"redeemAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"redeemTokens\",\"type\":\"uint256\"}],\"name\":\"Redeem\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"repayAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"accountBorrows\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalBorrows\",\"type\":\"uint256\"}],\"name\":\"RepayBorrow\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"benefactor\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"addAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newTotalReserves\",\"type\":\"uint256\"}],\"name\":\"ReservesAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reduceAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newTotalReserves\",\"type\":\"uint256\"}],\"name\":\"ReservesReduced\",\"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\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"reduceAmount\",\"type\":\"uint256\"}],\"name\":\"_reduceReserves\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contract InterestRateModel\",\"name\":\"newInterestRateModel\",\"type\":\"address\"}],\"name\":\"_setInterestRateModel\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newReserveFactorMantissa\",\"type\":\"uint256\"}],\"name\":\"_setReserveFactor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"accrualBlockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"accrueInterest\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"adminFeeMantissa\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOfUnderlying\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"borrowBalanceCurrent\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"borrowBalanceStored\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"borrowIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"borrowRatePerBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"comptroller\",\"outputs\":[{\"internalType\":\"contract ComptrollerInterface\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"exchangeRateCurrent\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"exchangeRateStored\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"fuseFeeMantissa\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getAccountSnapshot\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getCash\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"interestRateModel\",\"outputs\":[{\"internalType\":\"contract InterestRateModel\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isCEther\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isCToken\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"protocolSeizeShareMantissa\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"reserveFactorMantissa\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"liquidator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"seizeTokens\",\"type\":\"uint256\"}],\"name\":\"seize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"supplyRatePerBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalAdminFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalBorrows\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"totalBorrowsCurrent\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalFuseFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalReserves\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{\"_setReserveFactor(uint256)\":{\"notice\":\"* Admin Functions **\"},\"transfer(address,uint256)\":{\"notice\":\"* User Interface **\"}}}},\"settings\":{\"compilationTarget\":{\"contracts/CTokenInterfaces.sol\":\"CTokenInterface\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/CToken.sol\":{\"keccak256\":\"0xc3a5a827241528049e20a24cc446558c8a9272909f75ce5d1cf14ae3ab5feba3\",\"urls\":[\"bzz-raw://a403db2bf1a8e5e9384df19600bd18d4251056818b094afcdab418e683bb5cb8\",\"dweb:/ipfs/QmdkRbFGtKP67tNNqyH7BraDRGerwRNA7ktscbFV9LioM2\"]},\"contracts/CTokenInterfaces.sol\":{\"keccak256\":\"0xc8a056c724ef4f0215ece6011e7ac1007c9dc7611ce5160d470ec858bbb06bd3\",\"urls\":[\"bzz-raw://58951693d1b53d2722e55b068bab2b570f4b044d89c28ed6b53bac6e95aeb662\",\"dweb:/ipfs/QmQiNTw5jZR74WjKfX2bPiuTT4tuFuq8rx7QxEVyVvdGLn\"]},\"contracts/CarefulMath.sol\":{\"keccak256\":\"0x1487237dbbbb73ad43c8eff16e78311753719a94a5065f574de5c91b672c56f8\",\"urls\":[\"bzz-raw://349966a236f313b2cb42e1942832e6bd7e134f65f6654e6c4d46788e65cc4a9b\",\"dweb:/ipfs/Qmebpv8i5jLR4fLgpZHQZRLu6aefVAbLC2yUk9ABEekquz\"]},\"contracts/ComptrollerInterface.sol\":{\"keccak256\":\"0xecfb84fabc9792d0b1c912886249c67bc42c39eb065d962d0b9a5f3736af5892\",\"urls\":[\"bzz-raw://711547ebc1a7f18b271118dd98276771953a9d7b3674716f67d247be9b907372\",\"dweb:/ipfs/QmbVZNvkBp8miByATrL6y5j8MePdcQ8uTAUZMpKrhpLgoa\"]},\"contracts/ComptrollerStorage.sol\":{\"keccak256\":\"0x83961d3c12984fe4afc72717fc44b2d868563d053a0eceda0cbf17ec6b255913\",\"urls\":[\"bzz-raw://ea667c2de43881f9be19f4f75dec348632273178965fc9b3655705d853b032bb\",\"dweb:/ipfs/QmZP6sbNFSgFZrAEvfRjhp1NtGj6U6Sea3JGiKG96AHyeP\"]},\"contracts/EIP20Interface.sol\":{\"keccak256\":\"0xee33b8b333743308a9153a59f22da2cadb22cedef4403fe039bf9e057c9c729a\",\"urls\":[\"bzz-raw://5427fdb941300d36a424da0a0a5800e3b2ca51c9c922831dbfce2f6637402b43\",\"dweb:/ipfs/QmTrvmLynqSUPjsGW2dpiQ91dSmn4xzccQiwr8qaBtyvjH\"]},\"contracts/EIP20NonStandardInterface.sol\":{\"keccak256\":\"0x469899442dd9640bfc2c670d404ad3027e48df5df8e5aeab0e25cc6b6aae05f5\",\"urls\":[\"bzz-raw://d8c4498abaf539eb413a2f1a916d75945adc8bd4ef437f8450cb67e07be3f38d\",\"dweb:/ipfs/QmaFpWfnhAMYW21rbT5PEszn4TGHdGU58Eq5AfZsCuapZ3\"]},\"contracts/ErrorReporter.sol\":{\"keccak256\":\"0xe9587478bc9efad203cab02b8aecae32828cfc9a271b13ae3c018e38e44aab32\",\"urls\":[\"bzz-raw://2eb34bdbbbc410fb401d50ddca44a7421a1d8191711c569ed5bcec1c1b07a05c\",\"dweb:/ipfs/QmYKNCYppyx3NGiwtjdLEmxUMgfnFBqT4pnvnhnBrPgrxS\"]},\"contracts/Exponential.sol\":{\"keccak256\":\"0xfda0e2b610541cf1cf316a0000c89a1069ccc21f1566affc0a058810e2b835d3\",\"urls\":[\"bzz-raw://fe319f184f1b5f27019d3d890124cd24e466d27153ac38eb9ff6b16efbad48b9\",\"dweb:/ipfs/Qmcev6jCmtdCviJxUQvUCmesPDShRDSvdfUEfvsqd4GEJA\"]},\"contracts/ExponentialNoError.sol\":{\"keccak256\":\"0x713a089f4bbcaec1d3924fc7d9a2154904a39f46cb6f25b713167dbe5f21623e\",\"urls\":[\"bzz-raw://d7108d68af7c5effd4272615ceba54e79e585f6b8be5aabc7602245c84c7b9e0\",\"dweb:/ipfs/QmQZo2XpxW7w5viVEg71mi9eKaAYD7HUqfCMB5yCCPVnc5\"]},\"contracts/IFuseFeeDistributor.sol\":{\"keccak256\":\"0xb5d287b8e05574d38bd5d0b413f44b4c5d312f28188573ac60abe78123fbd92c\",\"urls\":[\"bzz-raw://84c2bbf746a82aaa100bee90c7dd40411c723bded124bb1775bf72bf7fda8a2c\",\"dweb:/ipfs/QmToQzDtz9BV2tvU71YsfWjdaZu5qpP1xKFZ1TkQgubhDb\"]},\"contracts/InterestRateModel.sol\":{\"keccak256\":\"0x0cc0dbd1991e5dcdcff58b0c82a9471a0fb9df26763e5e7415e1d081b7332409\",\"urls\":[\"bzz-raw://f4d7936aefc43ea2724f0e472b8f1517f1ca40170258ab9d5bbd0862dd0c4f13\",\"dweb:/ipfs/QmfYjG1Sm3kNwbhomHCWhMqw9LvaJVWVzBe4Te5BHRbTQS\"]},\"contracts/PriceOracle.sol\":{\"keccak256\":\"0x62ba3a5ec8f06d456ab089d6ca7f9d14d3a6ce6814923271ca60a6990918fb41\",\"urls\":[\"bzz-raw://aa6d2f20efdd5389161eb15bdab98b5628dc8cd5354394bbed35bb14d3612506\",\"dweb:/ipfs/QmVfo4eCDuk8LMSywpBjZBxCv7zLCNsG6u3nyD1d4CYwsD\"]}},\"version\":1}"},"CTokenStorage":{"abi":[{"constant":true,"inputs":[],"name":"accrualBlockNumber","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"adminFeeMantissa","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"borrowIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"comptroller","outputs":[{"internalType":"contract ComptrollerInterface","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"fuseFeeMantissa","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"interestRateModel","outputs":[{"internalType":"contract InterestRateModel","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"protocolSeizeShareMantissa","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"reserveFactorMantissa","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalAdminFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalBorrows","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalFuseFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalReserves","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b506103c6806100206000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80636c540baf11610097578063aa5af0fd11610066578063aa5af0fd1461021e578063dbfe7c1914610226578063dc028ab11461022e578063f3fdb15a1461023657610100565b80636c540baf146101fe5780638d02d9a1146102065780638f840ddd1461020e57806395d89b411461021657610100565b806347bd3718116100d357806347bd3718146101c25780635fe3b567146101ca57806361feacff146101ee5780636752e702146101f657610100565b806306fdde0314610105578063173b99041461018257806318160ddd1461019c578063313ce567146101a4575b600080fd5b61010d61023e565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561014757818101518382015260200161012f565b50505050905090810190601f1680156101745780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61018a6102cb565b60408051918252519081900360200190f35b61018a6102d1565b6101ac6102d7565b6040805160ff9092168252519081900360200190f35b61018a6102e0565b6101d26102e6565b604080516001600160a01b039092168252519081900360200190f35b61018a6102f5565b61018a6102fb565b61018a610306565b61018a61030c565b61018a610312565b61010d610318565b61018a610370565b61018a610376565b61018a61037c565b6101d2610382565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156102c35780601f10610298576101008083540402835291602001916102c3565b820191906000526020600020905b8154815290600101906020018083116102a657829003601f168201915b505050505081565b60095481565b60105481565b60035460ff1681565b600c5481565b6004546001600160a01b031681565b600e5481565b666379da05b6000081565b600a5481565b60075481565b600d5481565b6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156102c35780601f10610298576101008083540402835291602001916102c3565b600b5481565b60085481565b600f5481565b6005546001600160a01b03168156fea265627a7a7231582020068d31c1b2818f1ffcd5d49353cfc026167105ce781a15ee0f83c5b73f2fe764736f6c63430005110032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3C6 DUP1 PUSH2 0x20 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 0x100 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6C540BAF GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xAA5AF0FD GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xAA5AF0FD EQ PUSH2 0x21E JUMPI DUP1 PUSH4 0xDBFE7C19 EQ PUSH2 0x226 JUMPI DUP1 PUSH4 0xDC028AB1 EQ PUSH2 0x22E JUMPI DUP1 PUSH4 0xF3FDB15A EQ PUSH2 0x236 JUMPI PUSH2 0x100 JUMP JUMPDEST DUP1 PUSH4 0x6C540BAF EQ PUSH2 0x1FE JUMPI DUP1 PUSH4 0x8D02D9A1 EQ PUSH2 0x206 JUMPI DUP1 PUSH4 0x8F840DDD EQ PUSH2 0x20E JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x216 JUMPI PUSH2 0x100 JUMP JUMPDEST DUP1 PUSH4 0x47BD3718 GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x47BD3718 EQ PUSH2 0x1C2 JUMPI DUP1 PUSH4 0x5FE3B567 EQ PUSH2 0x1CA JUMPI DUP1 PUSH4 0x61FEACFF EQ PUSH2 0x1EE JUMPI DUP1 PUSH4 0x6752E702 EQ PUSH2 0x1F6 JUMPI PUSH2 0x100 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x105 JUMPI DUP1 PUSH4 0x173B9904 EQ PUSH2 0x182 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x19C JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x1A4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x10D PUSH2 0x23E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x147 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x12F JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x174 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x18A PUSH2 0x2CB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x18A PUSH2 0x2D1 JUMP JUMPDEST PUSH2 0x1AC PUSH2 0x2D7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x18A PUSH2 0x2E0 JUMP JUMPDEST PUSH2 0x1D2 PUSH2 0x2E6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x18A PUSH2 0x2F5 JUMP JUMPDEST PUSH2 0x18A PUSH2 0x2FB JUMP JUMPDEST PUSH2 0x18A PUSH2 0x306 JUMP JUMPDEST PUSH2 0x18A PUSH2 0x30C JUMP JUMPDEST PUSH2 0x18A PUSH2 0x312 JUMP JUMPDEST PUSH2 0x10D PUSH2 0x318 JUMP JUMPDEST PUSH2 0x18A PUSH2 0x370 JUMP JUMPDEST PUSH2 0x18A PUSH2 0x376 JUMP JUMPDEST PUSH2 0x18A PUSH2 0x37C JUMP JUMPDEST PUSH2 0x1D2 PUSH2 0x382 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 DUP5 DUP7 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x2C3 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x298 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x2C3 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x2A6 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x10 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0xC SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0xE SLOAD DUP2 JUMP JUMPDEST PUSH7 0x6379DA05B60000 DUP2 JUMP JUMPDEST PUSH1 0xA SLOAD DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xD SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP4 AND DUP5 SWAP1 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x2C3 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x298 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x2C3 JUMP JUMPDEST PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xF SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 KECCAK256 MOD DUP14 BALANCE 0xC1 0xB2 DUP2 DUP16 0x1F 0xFC 0xD5 0xD4 SWAP4 MSTORE8 0xCF 0xC0 0x26 AND PUSH18 0x5CE781A15EE0F83C5B73F2FE764736F6C63 NUMBER STOP SDIV GT STOP ORIGIN ","sourceMap":"747:3528:11:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;747:3528:11;;;;;;;"},"deployedBytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106101005760003560e01c80636c540baf11610097578063aa5af0fd11610066578063aa5af0fd1461021e578063dbfe7c1914610226578063dc028ab11461022e578063f3fdb15a1461023657610100565b80636c540baf146101fe5780638d02d9a1146102065780638f840ddd1461020e57806395d89b411461021657610100565b806347bd3718116100d357806347bd3718146101c25780635fe3b567146101ca57806361feacff146101ee5780636752e702146101f657610100565b806306fdde0314610105578063173b99041461018257806318160ddd1461019c578063313ce567146101a4575b600080fd5b61010d61023e565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561014757818101518382015260200161012f565b50505050905090810190601f1680156101745780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61018a6102cb565b60408051918252519081900360200190f35b61018a6102d1565b6101ac6102d7565b6040805160ff9092168252519081900360200190f35b61018a6102e0565b6101d26102e6565b604080516001600160a01b039092168252519081900360200190f35b61018a6102f5565b61018a6102fb565b61018a610306565b61018a61030c565b61018a610312565b61010d610318565b61018a610370565b61018a610376565b61018a61037c565b6101d2610382565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156102c35780601f10610298576101008083540402835291602001916102c3565b820191906000526020600020905b8154815290600101906020018083116102a657829003601f168201915b505050505081565b60095481565b60105481565b60035460ff1681565b600c5481565b6004546001600160a01b031681565b600e5481565b666379da05b6000081565b600a5481565b60075481565b600d5481565b6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156102c35780601f10610298576101008083540402835291602001916102c3565b600b5481565b60085481565b600f5481565b6005546001600160a01b03168156fea265627a7a7231582020068d31c1b2818f1ffcd5d49353cfc026167105ce781a15ee0f83c5b73f2fe764736f6c63430005110032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x100 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6C540BAF GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xAA5AF0FD GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xAA5AF0FD EQ PUSH2 0x21E JUMPI DUP1 PUSH4 0xDBFE7C19 EQ PUSH2 0x226 JUMPI DUP1 PUSH4 0xDC028AB1 EQ PUSH2 0x22E JUMPI DUP1 PUSH4 0xF3FDB15A EQ PUSH2 0x236 JUMPI PUSH2 0x100 JUMP JUMPDEST DUP1 PUSH4 0x6C540BAF EQ PUSH2 0x1FE JUMPI DUP1 PUSH4 0x8D02D9A1 EQ PUSH2 0x206 JUMPI DUP1 PUSH4 0x8F840DDD EQ PUSH2 0x20E JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x216 JUMPI PUSH2 0x100 JUMP JUMPDEST DUP1 PUSH4 0x47BD3718 GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x47BD3718 EQ PUSH2 0x1C2 JUMPI DUP1 PUSH4 0x5FE3B567 EQ PUSH2 0x1CA JUMPI DUP1 PUSH4 0x61FEACFF EQ PUSH2 0x1EE JUMPI DUP1 PUSH4 0x6752E702 EQ PUSH2 0x1F6 JUMPI PUSH2 0x100 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x105 JUMPI DUP1 PUSH4 0x173B9904 EQ PUSH2 0x182 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x19C JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x1A4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x10D PUSH2 0x23E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x147 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x12F JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x174 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x18A PUSH2 0x2CB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x18A PUSH2 0x2D1 JUMP JUMPDEST PUSH2 0x1AC PUSH2 0x2D7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x18A PUSH2 0x2E0 JUMP JUMPDEST PUSH2 0x1D2 PUSH2 0x2E6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x18A PUSH2 0x2F5 JUMP JUMPDEST PUSH2 0x18A PUSH2 0x2FB JUMP JUMPDEST PUSH2 0x18A PUSH2 0x306 JUMP JUMPDEST PUSH2 0x18A PUSH2 0x30C JUMP JUMPDEST PUSH2 0x18A PUSH2 0x312 JUMP JUMPDEST PUSH2 0x10D PUSH2 0x318 JUMP JUMPDEST PUSH2 0x18A PUSH2 0x370 JUMP JUMPDEST PUSH2 0x18A PUSH2 0x376 JUMP JUMPDEST PUSH2 0x18A PUSH2 0x37C JUMP JUMPDEST PUSH2 0x1D2 PUSH2 0x382 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 DUP5 DUP7 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x2C3 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x298 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x2C3 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x2A6 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x10 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0xC SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0xE SLOAD DUP2 JUMP JUMPDEST PUSH7 0x6379DA05B60000 DUP2 JUMP JUMPDEST PUSH1 0xA SLOAD DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xD SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP4 AND DUP5 SWAP1 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x2C3 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x298 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x2C3 JUMP JUMPDEST PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xF SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 KECCAK256 MOD DUP14 BALANCE 0xC1 0xB2 DUP2 DUP16 0x1F 0xFC 0xD5 0xD4 SWAP4 MSTORE8 0xCF 0xC0 0x26 AND PUSH18 0x5CE781A15EE0F83C5B73F2FE764736F6C63 NUMBER STOP SDIV GT STOP ORIGIN ","sourceMap":"747:3528:11:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;747:3528:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;960:18;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;960:18:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2390:33;;;:::i;:::-;;;;;;;;;;;;;;;;3266:23;;;:::i;1146:21::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2784:24;;;:::i;1713:39::-;;;:::i;:::-;;;;-1:-1:-1;;;;;1713:39:11;;;;;;;;;;;;;;3037:26;;;:::i;4209:56::-;;;:::i;2508:30::-;;;:::i;2150:28::-;;;:::i;2909:25::-;;;:::i;1051:20::-;;;:::i;2654:23::-;;;:::i;2271:27::-;;;:::i;3165:25::-;;;:::i;1849:42::-;;;:::i;960:18::-;;;;;;;;;;;;;;;-1:-1:-1;;960:18:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2390:33::-;;;;:::o;3266:23::-;;;;:::o;1146:21::-;;;;;;:::o;2784:24::-;;;;:::o;1713:39::-;;;-1:-1:-1;;;;;1713:39:11;;:::o;3037:26::-;;;;:::o;4209:56::-;4259:6;4209:56;:::o;2508:30::-;;;;:::o;2150:28::-;;;;:::o;2909:25::-;;;;:::o;1051:20::-;;;;;;;;;;;;;;-1:-1:-1;;1051:20:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2654:23;;;;:::o;2271:27::-;;;;:::o;3165:25::-;;;;:::o;1849:42::-;;;-1:-1:-1;;;;;1849:42:11;;:::o"},"methodIdentifiers":{"accrualBlockNumber()":"6c540baf","adminFeeMantissa()":"8d02d9a1","borrowIndex()":"aa5af0fd","comptroller()":"5fe3b567","decimals()":"313ce567","fuseFeeMantissa()":"dbfe7c19","interestRateModel()":"f3fdb15a","name()":"06fdde03","protocolSeizeShareMantissa()":"6752e702","reserveFactorMantissa()":"173b9904","symbol()":"95d89b41","totalAdminFees()":"61feacff","totalBorrows()":"47bd3718","totalFuseFees()":"dc028ab1","totalReserves()":"8f840ddd","totalSupply()":"18160ddd"}},"metadata":"{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[],\"name\":\"accrualBlockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"adminFeeMantissa\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"borrowIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"comptroller\",\"outputs\":[{\"internalType\":\"contract ComptrollerInterface\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"fuseFeeMantissa\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"interestRateModel\",\"outputs\":[{\"internalType\":\"contract InterestRateModel\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"protocolSeizeShareMantissa\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"reserveFactorMantissa\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalAdminFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalBorrows\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalFuseFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalReserves\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/CTokenInterfaces.sol\":\"CTokenStorage\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/CToken.sol\":{\"keccak256\":\"0xc3a5a827241528049e20a24cc446558c8a9272909f75ce5d1cf14ae3ab5feba3\",\"urls\":[\"bzz-raw://a403db2bf1a8e5e9384df19600bd18d4251056818b094afcdab418e683bb5cb8\",\"dweb:/ipfs/QmdkRbFGtKP67tNNqyH7BraDRGerwRNA7ktscbFV9LioM2\"]},\"contracts/CTokenInterfaces.sol\":{\"keccak256\":\"0xc8a056c724ef4f0215ece6011e7ac1007c9dc7611ce5160d470ec858bbb06bd3\",\"urls\":[\"bzz-raw://58951693d1b53d2722e55b068bab2b570f4b044d89c28ed6b53bac6e95aeb662\",\"dweb:/ipfs/QmQiNTw5jZR74WjKfX2bPiuTT4tuFuq8rx7QxEVyVvdGLn\"]},\"contracts/CarefulMath.sol\":{\"keccak256\":\"0x1487237dbbbb73ad43c8eff16e78311753719a94a5065f574de5c91b672c56f8\",\"urls\":[\"bzz-raw://349966a236f313b2cb42e1942832e6bd7e134f65f6654e6c4d46788e65cc4a9b\",\"dweb:/ipfs/Qmebpv8i5jLR4fLgpZHQZRLu6aefVAbLC2yUk9ABEekquz\"]},\"contracts/ComptrollerInterface.sol\":{\"keccak256\":\"0xecfb84fabc9792d0b1c912886249c67bc42c39eb065d962d0b9a5f3736af5892\",\"urls\":[\"bzz-raw://711547ebc1a7f18b271118dd98276771953a9d7b3674716f67d247be9b907372\",\"dweb:/ipfs/QmbVZNvkBp8miByATrL6y5j8MePdcQ8uTAUZMpKrhpLgoa\"]},\"contracts/ComptrollerStorage.sol\":{\"keccak256\":\"0x83961d3c12984fe4afc72717fc44b2d868563d053a0eceda0cbf17ec6b255913\",\"urls\":[\"bzz-raw://ea667c2de43881f9be19f4f75dec348632273178965fc9b3655705d853b032bb\",\"dweb:/ipfs/QmZP6sbNFSgFZrAEvfRjhp1NtGj6U6Sea3JGiKG96AHyeP\"]},\"contracts/EIP20Interface.sol\":{\"keccak256\":\"0xee33b8b333743308a9153a59f22da2cadb22cedef4403fe039bf9e057c9c729a\",\"urls\":[\"bzz-raw://5427fdb941300d36a424da0a0a5800e3b2ca51c9c922831dbfce2f6637402b43\",\"dweb:/ipfs/QmTrvmLynqSUPjsGW2dpiQ91dSmn4xzccQiwr8qaBtyvjH\"]},\"contracts/EIP20NonStandardInterface.sol\":{\"keccak256\":\"0x469899442dd9640bfc2c670d404ad3027e48df5df8e5aeab0e25cc6b6aae05f5\",\"urls\":[\"bzz-raw://d8c4498abaf539eb413a2f1a916d75945adc8bd4ef437f8450cb67e07be3f38d\",\"dweb:/ipfs/QmaFpWfnhAMYW21rbT5PEszn4TGHdGU58Eq5AfZsCuapZ3\"]},\"contracts/ErrorReporter.sol\":{\"keccak256\":\"0xe9587478bc9efad203cab02b8aecae32828cfc9a271b13ae3c018e38e44aab32\",\"urls\":[\"bzz-raw://2eb34bdbbbc410fb401d50ddca44a7421a1d8191711c569ed5bcec1c1b07a05c\",\"dweb:/ipfs/QmYKNCYppyx3NGiwtjdLEmxUMgfnFBqT4pnvnhnBrPgrxS\"]},\"contracts/Exponential.sol\":{\"keccak256\":\"0xfda0e2b610541cf1cf316a0000c89a1069ccc21f1566affc0a058810e2b835d3\",\"urls\":[\"bzz-raw://fe319f184f1b5f27019d3d890124cd24e466d27153ac38eb9ff6b16efbad48b9\",\"dweb:/ipfs/Qmcev6jCmtdCviJxUQvUCmesPDShRDSvdfUEfvsqd4GEJA\"]},\"contracts/ExponentialNoError.sol\":{\"keccak256\":\"0x713a089f4bbcaec1d3924fc7d9a2154904a39f46cb6f25b713167dbe5f21623e\",\"urls\":[\"bzz-raw://d7108d68af7c5effd4272615ceba54e79e585f6b8be5aabc7602245c84c7b9e0\",\"dweb:/ipfs/QmQZo2XpxW7w5viVEg71mi9eKaAYD7HUqfCMB5yCCPVnc5\"]},\"contracts/IFuseFeeDistributor.sol\":{\"keccak256\":\"0xb5d287b8e05574d38bd5d0b413f44b4c5d312f28188573ac60abe78123fbd92c\",\"urls\":[\"bzz-raw://84c2bbf746a82aaa100bee90c7dd40411c723bded124bb1775bf72bf7fda8a2c\",\"dweb:/ipfs/QmToQzDtz9BV2tvU71YsfWjdaZu5qpP1xKFZ1TkQgubhDb\"]},\"contracts/InterestRateModel.sol\":{\"keccak256\":\"0x0cc0dbd1991e5dcdcff58b0c82a9471a0fb9df26763e5e7415e1d081b7332409\",\"urls\":[\"bzz-raw://f4d7936aefc43ea2724f0e472b8f1517f1ca40170258ab9d5bbd0862dd0c4f13\",\"dweb:/ipfs/QmfYjG1Sm3kNwbhomHCWhMqw9LvaJVWVzBe4Te5BHRbTQS\"]},\"contracts/PriceOracle.sol\":{\"keccak256\":\"0x62ba3a5ec8f06d456ab089d6ca7f9d14d3a6ce6814923271ca60a6990918fb41\",\"urls\":[\"bzz-raw://aa6d2f20efdd5389161eb15bdab98b5628dc8cd5354394bbed35bb14d3612506\",\"dweb:/ipfs/QmVfo4eCDuk8LMSywpBjZBxCv7zLCNsG6u3nyD1d4CYwsD\"]}},\"version\":1}"}},"contracts/CarefulMath.sol":{"CarefulMath":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a723158204fc006e3ea45f9bb27de87e95d9d5af776696628d8b139460ba4a75253a3705b64736f6c63430005110032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3E DUP1 PUSH1 0x1D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0x4F 0xC0 MOD 0xE3 0xEA GASLIMIT 0xF9 0xBB 0x27 0xDE DUP8 0xE9 0x5D SWAP14 GAS 0xF7 PUSH23 0x696628D8B139460BA4A75253A3705B64736F6C63430005 GT STOP ORIGIN ","sourceMap":"242:1949:12:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;242:1949:12;;;;;;;"},"deployedBytecode":{"linkReferences":{},"object":"6080604052600080fdfea265627a7a723158204fc006e3ea45f9bb27de87e95d9d5af776696628d8b139460ba4a75253a3705b64736f6c63430005110032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0x4F 0xC0 MOD 0xE3 0xEA GASLIMIT 0xF9 0xBB 0x27 0xDE DUP8 0xE9 0x5D SWAP14 GAS 0xF7 PUSH23 0x696628D8B139460BA4A75253A3705B64736F6C63430005 GT STOP ORIGIN ","sourceMap":"242:1949:12:-;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Compound\",\"methods\":{},\"title\":\"Careful Math\"},\"userdoc\":{\"methods\":{},\"notice\":\"Derived from OpenZeppelin's SafeMath library https://github.com/OpenZeppelin/openzeppelin-solidity/blob/master/contracts/math/SafeMath.sol\"}},\"settings\":{\"compilationTarget\":{\"contracts/CarefulMath.sol\":\"CarefulMath\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/CarefulMath.sol\":{\"keccak256\":\"0x1487237dbbbb73ad43c8eff16e78311753719a94a5065f574de5c91b672c56f8\",\"urls\":[\"bzz-raw://349966a236f313b2cb42e1942832e6bd7e134f65f6654e6c4d46788e65cc4a9b\",\"dweb:/ipfs/Qmebpv8i5jLR4fLgpZHQZRLu6aefVAbLC2yUk9ABEekquz\"]}},\"version\":1}"}},"contracts/Comptroller.sol":{"Comptroller":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"action","type":"string"},{"indexed":false,"internalType":"bool","name":"pauseState","type":"bool"}],"name":"ActionPaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract CToken","name":"cToken","type":"address"},{"indexed":false,"internalType":"string","name":"action","type":"string"},{"indexed":false,"internalType":"bool","name":"pauseState","type":"bool"}],"name":"ActionPaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"rewardsDistributor","type":"address"}],"name":"AddedRewardsDistributor","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"AutoImplementationsToggled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"error","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"info","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"detail","type":"uint256"}],"name":"Failure","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract CToken","name":"cToken","type":"address"},{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"MarketEntered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract CToken","name":"cToken","type":"address"},{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"MarketExited","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract CToken","name":"cToken","type":"address"}],"name":"MarketListed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract CToken","name":"cToken","type":"address"}],"name":"MarketUnlisted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract CToken","name":"cToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"newBorrowCap","type":"uint256"}],"name":"NewBorrowCap","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldBorrowCapGuardian","type":"address"},{"indexed":false,"internalType":"address","name":"newBorrowCapGuardian","type":"address"}],"name":"NewBorrowCapGuardian","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldCloseFactorMantissa","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newCloseFactorMantissa","type":"uint256"}],"name":"NewCloseFactor","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract CToken","name":"cToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"oldCollateralFactorMantissa","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newCollateralFactorMantissa","type":"uint256"}],"name":"NewCollateralFactor","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldLiquidationIncentiveMantissa","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newLiquidationIncentiveMantissa","type":"uint256"}],"name":"NewLiquidationIncentive","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldPauseGuardian","type":"address"},{"indexed":false,"internalType":"address","name":"newPauseGuardian","type":"address"}],"name":"NewPauseGuardian","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract PriceOracle","name":"oldPriceOracle","type":"address"},{"indexed":false,"internalType":"contract PriceOracle","name":"newPriceOracle","type":"address"}],"name":"NewPriceOracle","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract CToken","name":"cToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"newSupplyCap","type":"uint256"}],"name":"NewSupplyCap","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enforce","type":"bool"}],"name":"WhitelistEnforcementChanged","type":"event"},{"constant":false,"inputs":[{"internalType":"address","name":"distributor","type":"address"}],"name":"_addRewardsDistributor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"_afterNonReentrant","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"contract Unitroller","name":"unitroller","type":"address"}],"name":"_become","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"_becomeImplementation","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"_beforeNonReentrant","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"_borrowGuardianPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"bool","name":"isCEther","type":"bool"},{"internalType":"bytes","name":"constructorData","type":"bytes"},{"internalType":"uint256","name":"collateralFactorMantissa","type":"uint256"}],"name":"_deployMarket","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"_mintGuardianPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newBorrowCapGuardian","type":"address"}],"name":"_setBorrowCapGuardian","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"contract CToken","name":"cToken","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"_setBorrowPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"newCloseFactorMantissa","type":"uint256"}],"name":"_setCloseFactor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"contract CToken","name":"cToken","type":"address"},{"internalType":"uint256","name":"newCollateralFactorMantissa","type":"uint256"}],"name":"_setCollateralFactor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"newLiquidationIncentiveMantissa","type":"uint256"}],"name":"_setLiquidationIncentive","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"contract CToken[]","name":"cTokens","type":"address[]"},{"internalType":"uint256[]","name":"newBorrowCaps","type":"uint256[]"}],"name":"_setMarketBorrowCaps","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"contract CToken[]","name":"cTokens","type":"address[]"},{"internalType":"uint256[]","name":"newSupplyCaps","type":"uint256[]"}],"name":"_setMarketSupplyCaps","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"contract CToken","name":"cToken","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"_setMintPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newPauseGuardian","type":"address"}],"name":"_setPauseGuardian","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"contract PriceOracle","name":"newOracle","type":"address"}],"name":"_setPriceOracle","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"_setSeizePaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"_setTransferPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bool","name":"enforce","type":"bool"}],"name":"_setWhitelistEnforcement","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address[]","name":"suppliers","type":"address[]"},{"internalType":"bool[]","name":"statuses","type":"bool[]"}],"name":"_setWhitelistStatuses","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"_toggleAutoImplementations","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"contract CToken","name":"cToken","type":"address"}],"name":"_unsupportMarket","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"accountAssets","outputs":[{"internalType":"contract CToken","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"adminHasRights","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"allBorrowers","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"allMarkets","outputs":[{"internalType":"contract CToken","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"autoImplementation","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"cToken","type":"address"},{"internalType":"address","name":"borrower","type":"address"},{"internalType":"uint256","name":"borrowAmount","type":"uint256"}],"name":"borrowAllowed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"borrowCapGuardian","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"borrowCaps","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"borrowGuardianPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"cToken","type":"address"},{"internalType":"address","name":"borrower","type":"address"},{"internalType":"uint256","name":"borrowAmount","type":"uint256"}],"name":"borrowVerify","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"cToken","type":"address"},{"internalType":"uint256","name":"accountBorrowsNew","type":"uint256"}],"name":"borrowWithinLimits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"cTokensByUnderlying","outputs":[{"internalType":"contract CToken","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"contract CToken","name":"cToken","type":"address"}],"name":"checkMembership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"closeFactorMantissa","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"comptrollerImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"enforceWhitelist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address[]","name":"cTokens","type":"address[]"}],"name":"enterMarkets","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"cTokenAddress","type":"address"}],"name":"exitMarket","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"fuseAdminHasRights","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getAccountLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getAllBorrowers","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getAllMarkets","outputs":[{"internalType":"contract CToken[]","name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getAssetsIn","outputs":[{"internalType":"contract CToken[]","name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"cTokenModify","type":"address"},{"internalType":"uint256","name":"redeemTokens","type":"uint256"},{"internalType":"uint256","name":"borrowAmount","type":"uint256"}],"name":"getHypotheticalAccountLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getRewardsDistributors","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getWhitelist","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isComptroller","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"contract CToken","name":"cToken","type":"address"}],"name":"isDeprecated","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"cTokenBorrowed","type":"address"},{"internalType":"address","name":"cTokenCollateral","type":"address"},{"internalType":"address","name":"liquidator","type":"address"},{"internalType":"address","name":"borrower","type":"address"},{"internalType":"uint256","name":"repayAmount","type":"uint256"}],"name":"liquidateBorrowAllowed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"cTokenBorrowed","type":"address"},{"internalType":"address","name":"cTokenCollateral","type":"address"},{"internalType":"address","name":"liquidator","type":"address"},{"internalType":"address","name":"borrower","type":"address"},{"internalType":"uint256","name":"actualRepayAmount","type":"uint256"},{"internalType":"uint256","name":"seizeTokens","type":"uint256"}],"name":"liquidateBorrowVerify","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"cTokenBorrowed","type":"address"},{"internalType":"address","name":"cTokenCollateral","type":"address"},{"internalType":"uint256","name":"actualRepayAmount","type":"uint256"}],"name":"liquidateCalculateSeizeTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"liquidationIncentiveMantissa","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"markets","outputs":[{"internalType":"bool","name":"isListed","type":"bool"},{"internalType":"uint256","name":"collateralFactorMantissa","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"cToken","type":"address"},{"internalType":"address","name":"minter","type":"address"},{"internalType":"uint256","name":"mintAmount","type":"uint256"}],"name":"mintAllowed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"mintGuardianPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"cToken","type":"address"},{"internalType":"address","name":"minter","type":"address"},{"internalType":"uint256","name":"actualMintAmount","type":"uint256"},{"internalType":"uint256","name":"mintTokens","type":"uint256"}],"name":"mintVerify","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"cToken","type":"address"},{"internalType":"uint256","name":"exchangeRateMantissa","type":"uint256"},{"internalType":"uint256","name":"accountTokens","type":"uint256"},{"internalType":"uint256","name":"mintAmount","type":"uint256"}],"name":"mintWithinLimits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"oracle","outputs":[{"internalType":"contract PriceOracle","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pauseGuardian","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pendingAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pendingComptrollerImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"cToken","type":"address"},{"internalType":"address","name":"redeemer","type":"address"},{"internalType":"uint256","name":"redeemTokens","type":"uint256"}],"name":"redeemAllowed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"cToken","type":"address"},{"internalType":"address","name":"redeemer","type":"address"},{"internalType":"uint256","name":"redeemAmount","type":"uint256"},{"internalType":"uint256","name":"redeemTokens","type":"uint256"}],"name":"redeemVerify","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"cToken","type":"address"},{"internalType":"address","name":"payer","type":"address"},{"internalType":"address","name":"borrower","type":"address"},{"internalType":"uint256","name":"repayAmount","type":"uint256"}],"name":"repayBorrowAllowed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"cToken","type":"address"},{"internalType":"address","name":"payer","type":"address"},{"internalType":"address","name":"borrower","type":"address"},{"internalType":"uint256","name":"actualRepayAmount","type":"uint256"},{"internalType":"uint256","name":"borrowerIndex","type":"uint256"}],"name":"repayBorrowVerify","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"rewardsDistributors","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"cTokenCollateral","type":"address"},{"internalType":"address","name":"cTokenBorrowed","type":"address"},{"internalType":"address","name":"liquidator","type":"address"},{"internalType":"address","name":"borrower","type":"address"},{"internalType":"uint256","name":"seizeTokens","type":"uint256"}],"name":"seizeAllowed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"seizeGuardianPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"cTokenCollateral","type":"address"},{"internalType":"address","name":"cTokenBorrowed","type":"address"},{"internalType":"address","name":"liquidator","type":"address"},{"internalType":"address","name":"borrower","type":"address"},{"internalType":"uint256","name":"seizeTokens","type":"uint256"}],"name":"seizeVerify","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"suppliers","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"supplyCaps","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"cToken","type":"address"},{"internalType":"address","name":"src","type":"address"},{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"transferTokens","type":"uint256"}],"name":"transferAllowed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"transferGuardianPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"cToken","type":"address"},{"internalType":"address","name":"src","type":"address"},{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"transferTokens","type":"uint256"}],"name":"transferVerify","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"whitelistArray","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60806040526001805460ff60a81b1960ff60a01b19909116600160a01b1716600160a81b17905534801561003257600080fd5b50615db380620000436000396000f3fe608060405234801561001057600080fd5b506004361061048a5760003560e01c80636d154ea511610262578063bb82aa5e11610151578063d5333166116100ce578063e4028eee11610092578063e4028eee146111e1578063e6653f3d1461120d578063e875544614611215578063eabe7d911461121d578063ede4edd014611253578063f851a440146112795761048a565b8063d533316614611150578063da3d454c1461116f578063dce15449146111a5578063dcfbc0c7146111d1578063dd5cd22c146111d95761048a565b8063c8c9c97511610115578063c8c9c9751461101f578063c90c20b1146110dd578063d01f63f5146110e5578063d02f7351146110ed578063d251fefc146111335761048a565b8063bb82aa5e14610ece578063bdcdc25814610ed6578063c299823814610f12578063c488847b14610fb3578063c6c5b0dd146110025761048a565b8063929fe9a1116101df578063abfceffc116101a3578063abfceffc14610e6a578063ac0b0bb714610e90578063b0772d0b14610e98578063b095721014610ea0578063b9b5b15314610ea85761048a565b8063929fe9a114610d5a57806394543c1514610d88578063952adf5a14610dae5780639b19251a14610dcd578063aba35b9814610df35761048a565b80637dc0d1d0116102265780637dc0d1d014610cc4578063819605a814610ccc57806387f7630314610cf25780638e8f294b14610cfa5780638ebf636414610d3b5761048a565b80636d154ea514610be95780636d35bf9114610c0f578063731f0c2b14610c555780637515bafa14610c7b578063779b229414610c985761048a565b80633c94786f1161037e57806352d84d1e116102fb5780635f5af1aa116102bf5780635f5af1aa14610a7b5780635fc7e71e14610aa1578063607ef6c114610ae7578063632e514214610ba55780636a56947e14610bad5761048a565b806352d84d1e146109d457806355ee1fe1146109f15780635c77860514610a175780635d72de6214610a4d5780635ec88c7914610a555761048a565b80634e79238f116103425780634e79238f1461082d5780634ef4c3e1146108875780634fd42e17146108bd57806351a485e4146108da57806351dff989146109985761048a565b80633c94786f1461076f57806341c728b91461077757806347ef3b3b146107b35780634a584432146107ff5780634ada90af146108255761048a565b806324a3d6221161040c57806331ff47fa116103d057806331ff47fa1461069557806332abcdbe146106bb5780633605b51b14610713578063391957d71461071b5780633bcf7ec1146107415761048a565b806324a3d6221461064157806326782247146106495780632d70db78146106515780632f1069ba14610670578063317b0b77146106785761048a565b80631d504dc6116104535780631d504dc61461053f5780631ededc911461056757806321af4569146105a95780632259192a146105cd57806324008a62146106055761048a565b80627e3dd21461048f57806302c3bcbb146104ab5780630a755ec2146104e357806316dc15fe146104eb57806318c882a514610511575b600080fd5b610497611281565b604080519115158252519081900360200190f35b6104d1600480360360208110156104c157600080fd5b50356001600160a01b0316611286565b60408051918252519081900360200190f35b610497611298565b6104976004803603602081101561050157600080fd5b50356001600160a01b03166112a8565b6104976004803603604081101561052757600080fd5b506001600160a01b03813516906020013515156112bd565b6105656004803603602081101561055557600080fd5b50356001600160a01b0316611450565b005b610565600480360360a081101561057d57600080fd5b506001600160a01b038135811691602081013582169160408201351690606081013590608001356116ff565b6105b1611706565b604080516001600160a01b039092168252519081900360200190f35b6104d1600480360360808110156105e357600080fd5b506001600160a01b03813516906020810135906040810135906060013561171a565b6104d16004803603608081101561061b57600080fd5b506001600160a01b03813581169160208101358216916040820135169060600135611729565b6105b1611764565b6105b1611773565b6104976004803603602081101561066757600080fd5b50351515611782565b6104976118af565b6104d16004803603602081101561068e57600080fd5b50356118bf565b6105b1600480360360208110156106ab57600080fd5b50356001600160a01b03166119cd565b6106c36119e8565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156106ff5781810151838201526020016106e7565b505050509050019250505060405180910390f35b6106c3611a4b565b6105656004803603602081101561073157600080fd5b50356001600160a01b0316611aab565b6104976004803603604081101561075757600080fd5b506001600160a01b0381351690602001351515611b5b565b610497611ce9565b6105656004803603608081101561078d57600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135611cf9565b610565600480360360c08110156107c957600080fd5b506001600160a01b0381358116916020810135821691604082013581169160608101359091169060808101359060a00135611d20565b6104d16004803603602081101561081557600080fd5b50356001600160a01b0316611d25565b6104d1611d37565b6108696004803603608081101561084357600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135611d3d565b60408051938452602084019290925282820152519081900360600190f35b6104d16004803603606081101561089d57600080fd5b506001600160a01b03813581169160208101359091169060400135611d77565b6104d1600480360360208110156108d357600080fd5b503561217b565b610565600480360360408110156108f057600080fd5b810190602081018135600160201b81111561090a57600080fd5b82018360208201111561091c57600080fd5b803590602001918460208302840111600160201b8311171561093d57600080fd5b919390929091602081019035600160201b81111561095a57600080fd5b82018360208201111561096c57600080fd5b803590602001918460208302840111600160201b8311171561098d57600080fd5b50909250905061226a565b610565600480360360808110156109ae57600080fd5b506001600160a01b038135811691602081013590911690604081013590606001356123f9565b6105b1600480360360208110156109ea57600080fd5b5035612453565b6104d160048036036020811015610a0757600080fd5b50356001600160a01b031661247a565b61056560048036036060811015610a2d57600080fd5b506001600160a01b038135811691602081013590911690604001356124fc565b610565612501565b61086960048036036020811015610a6b57600080fd5b50356001600160a01b0316612574565b6104d160048036036020811015610a9157600080fd5b50356001600160a01b03166125a9565b6104d1600480360360a0811015610ab757600080fd5b506001600160a01b0381358116916020810135821691604082013581169160608101359091169060800135612628565b61056560048036036040811015610afd57600080fd5b810190602081018135600160201b811115610b1757600080fd5b820183602082011115610b2957600080fd5b803590602001918460208302840111600160201b83111715610b4a57600080fd5b919390929091602081019035600160201b811115610b6757600080fd5b820183602082011115610b7957600080fd5b803590602001918460208302840111600160201b83111715610b9a57600080fd5b5090925090506127df565b610565612965565b61056560048036036080811015610bc357600080fd5b506001600160a01b038135811691602081013582169160408201351690606001356129c2565b61049760048036036020811015610bff57600080fd5b50356001600160a01b03166129c7565b610565600480360360a0811015610c2557600080fd5b506001600160a01b03813581169160208101358216916040820135811691606081013590911690608001356116ff565b61049760048036036020811015610c6b57600080fd5b50356001600160a01b03166129dc565b6105b160048036036020811015610c9157600080fd5b50356129f1565b6104d160048036036040811015610cae57600080fd5b506001600160a01b0381351690602001356129fe565b6105b1612b71565b6104d160048036036020811015610ce257600080fd5b50356001600160a01b0316612b80565b610497612eda565b610d2060048036036020811015610d1057600080fd5b50356001600160a01b0316612eea565b60408051921515835260208301919091528051918290030190f35b61049760048036036020811015610d5157600080fd5b50351515612f09565b61049760048036036040811015610d7057600080fd5b506001600160a01b0381358116916020013516613035565b61049760048036036020811015610d9e57600080fd5b50356001600160a01b0316613068565b6104d160048036036020811015610dc457600080fd5b503515156131da565b61049760048036036020811015610de357600080fd5b50356001600160a01b0316613257565b6104d160048036036060811015610e0957600080fd5b813515159190810190604081016020820135600160201b811115610e2c57600080fd5b820183602082011115610e3e57600080fd5b803590602001918460018302840111600160201b83111715610e5f57600080fd5b91935091503561326c565b6106c360048036036020811015610e8057600080fd5b50356001600160a01b031661344b565b6104976134d4565b6106c36134e4565b610497613544565b6104d160048036036020811015610ebe57600080fd5b50356001600160a01b031661354d565b6105b161371e565b6104d160048036036080811015610eec57600080fd5b506001600160a01b0381358116916020810135821691604082013516906060013561372d565b6106c360048036036020811015610f2857600080fd5b810190602081018135600160201b811115610f4257600080fd5b820183602082011115610f5457600080fd5b803590602001918460208302840111600160201b83111715610f7557600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506137b7945050505050565b610fe960048036036060811015610fc957600080fd5b506001600160a01b0381358116916020810135909116906040013561384e565b6040805192835260208301919091528051918290030190f35b6105b16004803603602081101561101857600080fd5b5035613a76565b6104d16004803603604081101561103557600080fd5b810190602081018135600160201b81111561104f57600080fd5b82018360208201111561106157600080fd5b803590602001918460208302840111600160201b8311171561108257600080fd5b919390929091602081019035600160201b81111561109f57600080fd5b8201836020820111156110b157600080fd5b803590602001918460208302840111600160201b831117156110d257600080fd5b509092509050613a83565b610565613c96565b6106c3613d47565b6104d1600480360360a081101561110357600080fd5b506001600160a01b0381358116916020810135821691604082013581169160608101359091169060800135613da7565b6105b16004803603602081101561114957600080fd5b5035613f3d565b6104d16004803603602081101561116657600080fd5b50351515613f4a565b6104d16004803603606081101561118557600080fd5b506001600160a01b03813581169160208101359091169060400135613fc7565b6105b1600480360360408110156111bb57600080fd5b506001600160a01b038135169060200135614375565b6105b16143aa565b6104976143b9565b6104d1600480360360408110156111f757600080fd5b506001600160a01b0381351690602001356143c2565b61049761456d565b6104d161457d565b6104d16004803603606081101561123357600080fd5b506001600160a01b03813581169160208101359091169060400135614583565b6104d16004803603602081101561126957600080fd5b50356001600160a01b03166145a0565b6105b161498b565b600181565b60196020526000908152604090205481565b600154600160a81b900460ff1681565b600e6020526000908152604090205460ff1681565b6001600160a01b03821660009081526009602052604081205460ff166113145760405162461bcd60e51b8152600401808060200182810382526028815260200180615b4e6028913960400191505060405180910390fd5b6014546001600160a01b0316331480611330575061133061499a565b61136b5760405162461bcd60e51b8152600401808060200182810382526027815260200180615bd96027913960400191505060405180910390fd5b61137361499a565b8061138057506001821515145b6113ca576040805162461bcd60e51b81526020600482015260166024820152756f6e6c792061646d696e2063616e20756e706175736560501b604482015290519081900360640190fd5b6001600160a01b038316600081815260166020908152604091829020805486151560ff199091168117909155825193845283830152606090830181905260069083015265426f72726f7760d01b6080830152517f71aec636243f9709bb0007ae15e9afb8150ab01716d75fd7573be5cc096e03b09181900360a00190a150805b92915050565b3373a731585ab05fc9f83555cf9bff8f58ee94e18f851480156114d45750806001600160a01b0316632f1069ba6040518163ffffffff1660e01b815260040160206040518083038186803b1580156114a757600080fd5b505afa1580156114bb573d6000803e3d6000fd5b505050506040513d60208110156114d157600080fd5b50515b806115b75750806001600160a01b031663f851a4406040518163ffffffff1660e01b815260040160206040518083038186803b15801561151357600080fd5b505afa158015611527573d6000803e3d6000fd5b505050506040513d602081101561153d57600080fd5b50516001600160a01b0316331480156115b75750806001600160a01b0316630a755ec26040518163ffffffff1660e01b815260040160206040518083038186803b15801561158a57600080fd5b505afa15801561159e573d6000803e3d6000fd5b505050506040513d60208110156115b457600080fd5b50515b6115f25760405162461bcd60e51b8152600401808060200182810382526027815260200180615d586027913960400191505060405180910390fd5b6000816001600160a01b031663c1e803346040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561162f57600080fd5b505af1158015611643573d6000803e3d6000fd5b505050506040513d602081101561165957600080fd5b5051905080156116a8576040805162461bcd60e51b815260206004820152601560248201527418da185b99d9481b9bdd08185d5d1a1bdc9a5e9959605a1b604482015290519081900360640190fd5b816001600160a01b0316635d72de626040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156116e357600080fd5b505af11580156116f7573d6000803e3d6000fd5b505050505050565b5050505050565b60175461010090046001600160a01b031681565b6000805b90505b949350505050565b6001600160a01b03841660009081526009602052604081205460ff166117535760095b9050611721565b61175d85846149f5565b600061171e565b6014546001600160a01b031681565b6001546001600160a01b031681565b6014546000906001600160a01b03163314806117a157506117a161499a565b6117dc5760405162461bcd60e51b8152600401808060200182810382526027815260200180615bd96027913960400191505060405180910390fd5b6117e461499a565b806117f157506001821515145b61183b576040805162461bcd60e51b81526020600482015260166024820152756f6e6c792061646d696e2063616e20756e706175736560501b604482015290519081900360640190fd5b60148054831515600160b81b810260ff60b81b1990921691909117909155604080516020810192909252808252600582820152645365697a6560d81b6060830152517fef159d9a32b2472e32b098f954f3ce62d232939f1c207070b584df1814de2de09181900360800190a150805b919050565b600154600160a01b900460ff1681565b60006118c961499a565b6118e0576118d960016007614a8d565b90506118aa565b6118e8615a65565b5060408051602081019091528281526118ff615a65565b50604080516020810190915266b1a2bc2ec50000815261191f8282614af3565b156119395761193060056008614a8d565b925050506118aa565b611941615a65565b506040805160208101909152670c7d713b49da000081526119628184614afb565b1561197d5761197360056008614a8d565b93505050506118aa565b6005805490869055604080518281526020810188905281517f3b9670cf975d26958e754b57098eaa2ac914d8d2a31b83257997b9f346110fd9929181900390910190a160005b9695505050505050565b600f602052600090815260409020546001600160a01b031681565b6060600c805480602002602001604051908101604052809291908181526020018280548015611a4057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611a22575b505050505090505b90565b6060601a805480602002602001604051908101604052809291908181526020018280548015611a40576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611a22575050505050905090565b611ab361499a565b611aee5760405162461bcd60e51b8152600401808060200182810382526026815260200180615c006026913960400191505060405180910390fd5b601780546001600160a01b03838116610100818102610100600160a81b03198516179094556040805194909304919091168084526020840191909152815190927feda98690e518e9a05f8ec6837663e188211b2da8f4906648b323f2c1d4434e2992908290030190a15050565b6001600160a01b03821660009081526009602052604081205460ff16611bb25760405162461bcd60e51b8152600401808060200182810382526028815260200180615b4e6028913960400191505060405180910390fd5b6014546001600160a01b0316331480611bce5750611bce61499a565b611c095760405162461bcd60e51b8152600401808060200182810382526027815260200180615bd96027913960400191505060405180910390fd5b611c1161499a565b80611c1e57506001821515145b611c68576040805162461bcd60e51b81526020600482015260166024820152756f6e6c792061646d696e2063616e20756e706175736560501b604482015290519081900360640190fd5b6001600160a01b038316600081815260156020908152604091829020805486151560ff199091168117909155825193845283830152606090830181905260049083015263135a5b9d60e21b6080830152517f71aec636243f9709bb0007ae15e9afb8150ab01716d75fd7573be5cc096e03b09181900360a00190a150919050565b601454600160a01b900460ff1681565b50506001600160a01b03166000908152600e60205260409020805460ff1916600117905550565b6116f7565b60186020526000908152604090205481565b60065481565b600080600080600080611d528a8a8a8a614b02565b925092509250826015811115611d6457fe5b95509093509150505b9450945094915050565b6001600160a01b03831660009081526015602052604081205460ff1615611dd6576040805162461bcd60e51b815260206004820152600e60248201526d1b5a5b9d081a5cc81c185d5cd95960921b604482015290519081900360640190fd5b6001600160a01b03841660009081526009602052604090205460ff16611e005760095b9050612174565b60105460ff168015611e2b57506001600160a01b03831660009081526011602052604090205460ff16155b15611e37576012611df9565b6001600160a01b0384166000908152601960205260409020548015612163576000856001600160a01b0316633b1d21a26040518163ffffffff1660e01b815260040160206040518083038186803b158015611e9157600080fd5b505afa158015611ea5573d6000803e3d6000fd5b505050506040513d6020811015611ebb57600080fd5b5051604080516308f7a6e360e31b815290519192506000916001600160a01b038916916347bd3718916004808301926020929190829003018186803b158015611f0357600080fd5b505afa158015611f17573d6000803e3d6000fd5b505050506040513d6020811015611f2d57600080fd5b505160408051638f840ddd60e01b815290519192506000916001600160a01b038a1691638f840ddd916004808301926020929190829003018186803b158015611f7557600080fd5b505afa158015611f89573d6000803e3d6000fd5b505050506040513d6020811015611f9f57600080fd5b50516040805163dc028ab160e01b815290519192506000916001600160a01b038b169163dc028ab1916004808301926020929190829003018186803b158015611fe757600080fd5b505afa158015611ffb573d6000803e3d6000fd5b505050506040513d602081101561201157600080fd5b5051604080516361feacff60e01b815290519192506000916001600160a01b038c16916361feacff916004808301926020929190829003018186803b15801561205957600080fd5b505afa15801561206d573d6000803e3d6000fd5b505050506040513d602081101561208357600080fd5b505190506000806120a787876120a261209c8989614e3a565b87614e3a565b614e70565b909250905060008260038111156120ba57fe5b146120d057600b98505050505050505050612174565b60006120dc828c614ebc565b909350905060008360038111156120ef57fe5b1461210657600b9950505050505050505050612174565b88811061215a576040805162461bcd60e51b815260206004820152601960248201527f6d61726b657420737570706c7920636170207265616368656400000000000000604482015290519081900360640190fd5b50505050505050505b61216d8585614ee5565b60005b9150505b9392505050565b600061218561499a565b612195576118d96001600d614a8d565b61219d615a65565b5060408051602081019091528281526121b4615a65565b506040805160208101909152670de0b6b3a764000081526121d58282614afb565b156121e6576119306007600e614a8d565b6121ee615a65565b5060408051602081019091526714d1120d7b160000815261220f8184614afb565b15612220576119736007600e614a8d565b6006805490869055604080518281526020810188905281517faeba5a6c40a8ac138134bff1aaa65debf25971188a58804bad717f82f0ec1316929181900390910190a160006119c3565b61227261499a565b8061228c575060175461010090046001600160a01b031633145b6122c75760405162461bcd60e51b8152600401808060200182810382526035815260200180615cee6035913960400191505060405180910390fd5b828181158015906122d757508082145b612318576040805162461bcd60e51b815260206004820152600d60248201526c1a5b9d985b1a59081a5b9c1d5d609a1b604482015290519081900360640190fd5b60005b828110156123f05784848281811061232f57fe5b905060200201356019600089898581811061234657fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000208190555086868281811061238657fe5b905060200201356001600160a01b03166001600160a01b03167f9e0ad9cee10bdf36b7fbd38910c0bdff0f275ace679b45b922381c2723d676f88686848181106123cc57fe5b905060200201356040518082815260200191505060405180910390a260010161231b565b50505050505050565b801580156124075750600082115b1561244d576040805162461bcd60e51b815260206004820152601160248201527072656465656d546f6b656e73207a65726f60781b604482015290519081900360640190fd5b50505050565b600a818154811061246057fe5b6000918252602090912001546001600160a01b0316905081565b600061248461499a565b612494576118d960016013614a8d565b600480546001600160a01b038481166001600160a01b0319831681179093556040805191909216808252602082019390935281517fd52b2b9b7e9ee655fcb95d2e5b9e0c9f69e7ef2b8e9d2d0ea78402d576d22e22929181900390910190a160009392505050565b505050565b6002546001600160a01b0316331461254a5760405162461bcd60e51b8152600401808060200182810382526032815260200180615c266032913960400191505060405180910390fd5b601b54610100900460ff1661257257601b805461ff001960ff19909116600117166101001790555b565b60008060008060008061258b876000806000614b02565b92509250925082601581111561259d57fe5b97919650945092505050565b60006125b361499a565b6125c3576118d960016018614a8d565b601480546001600160a01b038481166001600160a01b0319831617928390556040805192821680845293909116602083015280517f0613b6ee6a04f0d09f390e4d9318894b9f6ac7fd83897cd8d18896ba579c401e9281900390910190a16000612174565b6001600160a01b03851660009081526009602052604081205460ff16158061266957506001600160a01b03851660009081526009602052604090205460ff16155b156126785760095b90506127d6565b6000866001600160a01b03166395dd9193856040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156126d057600080fd5b505afa1580156126e4573d6000803e3d6000fd5b505050506040513d60208110156126fa57600080fd5b5051905061270787613068565b15612750578281101561274b5760405162461bcd60e51b8152600401808060200182810382526028815260200180615b766028913960400191505060405180910390fd5b6127d0565b60008061275c86614f7c565b9193509091506000905082601581111561277257fe5b1461278d5781601581111561278357fe5b93505050506127d6565b80612799576003612783565b60006127b5604051806020016040528060055481525085614f9c565b9050808611156127cc5760119450505050506127d6565b5050505b60009150505b95945050505050565b6127e761499a565b80612801575060175461010090046001600160a01b031633145b61283c5760405162461bcd60e51b8152600401808060200182810382526035815260200180615c946035913960400191505060405180910390fd5b8281811580159061284c57508082145b61288d576040805162461bcd60e51b815260206004820152600d60248201526c1a5b9d985b1a59081a5b9c1d5d609a1b604482015290519081900360640190fd5b60005b828110156123f0578484828181106128a457fe5b90506020020135601860008989858181106128bb57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020819055508686828181106128fb57fe5b905060200201356001600160a01b03166001600160a01b03167f6f1951b2aad10f3fc81b86d91105b413a5b3f847a34bbc5ce1904201b14438f686868481811061294157fe5b905060200201356040518082815260200191505060405180910390a2600101612890565b3360009081526009602052604090205460ff166129b35760405162461bcd60e51b815260040180806020018281038252603b815260200180615b9e603b913960400191505060405180910390fd5b601b805460ff19166001179055565b61244d565b60166020526000908152604090205460ff1681565b60156020526000908152604090205460ff1681565b600c818154811061246057fe5b60008073a731585ab05fc9f83555cf9bff8f58ee94e18f856001600160a01b031663fdb25fb16040518163ffffffff1660e01b815260040160206040518083038186803b158015612a4e57600080fd5b505afa158015612a62573d6000803e3d6000fd5b505050506040513d6020811015612a7857600080fd5b505190508015612b6757600480546040805163fc57d4df60e01b81526001600160a01b038881169482019490945290516000939092169163fc57d4df91602480820192602092909190829003018186803b158015612ad557600080fd5b505afa158015612ae9573d6000803e3d6000fd5b505050506040513d6020811015612aff57600080fd5b5051905080612b1357600d9250505061144a565b600080612b2e60405180602001604052808581525087614fbb565b90925090506000826003811115612b4157fe5b14612b5457600b5b94505050505061144a565b83811015612b63576013612b49565b5050505b6000949350505050565b6004546001600160a01b031681565b6000612b8a61499a565b612b9a576118d960016019614a8d565b6001600160a01b03821660009081526009602052604090205460ff16612bc6576118d96009601a614a8d565b6000826001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015612c0157600080fd5b505afa158015612c15573d6000803e3d6000fd5b505050506040513d6020811015612c2b57600080fd5b50511115612c3f576118d96015601b614a8d565b6001600160a01b0382166000908152600960209081526040808320805460ff1916815560010192909255600a805483518184028101840190945280845260609392830182828015612cb957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612c9b575b5050835193945083925060009150505b82811015612d0e57856001600160a01b0316848281518110612ce757fe5b60200260200101516001600160a01b03161415612d0657809150612d0e565b600101612cc9565b50818110612d1857fe5b600a80546000198101908110612d2a57fe5b600091825260209091200154600a80546001600160a01b039092169183908110612d5057fe5b600091825260209091200180546001600160a01b0319166001600160a01b0392909216919091179055600a805490612d8c906000198301615a78565b506000600f6000876001600160a01b031663ac784ddc6040518163ffffffff1660e01b815260040160206040518083038186803b158015612dcc57600080fd5b505afa158015612de0573d6000803e3d6000fd5b505050506040513d6020811015612df657600080fd5b5051612e6657876001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015612e3557600080fd5b505afa158015612e49573d6000803e3d6000fd5b505050506040513d6020811015612e5f57600080fd5b5051612e69565b60005b6001600160a01b039081168252602080830193909352604091820160002080546001600160a01b0319169482169490941790935580519288168352517f302feb03efd5741df80efe7f97f5d93d74d46a542a3d312d0faae64fa1f3e0e99281900390910190a1600095945050505050565b601454600160b01b900460ff1681565b6009602052600090815260409020805460019091015460ff9091169082565b6014546000906001600160a01b0316331480612f285750612f2861499a565b612f635760405162461bcd60e51b8152600401808060200182810382526027815260200180615bd96027913960400191505060405180910390fd5b612f6b61499a565b80612f7857506001821515145b612fc2576040805162461bcd60e51b81526020600482015260166024820152756f6e6c792061646d696e2063616e20756e706175736560501b604482015290519081900360640190fd5b60148054831515600160b01b810260ff60b01b1990921691909117909155604080516020810192909252808252600882820152672a3930b739b332b960c11b6060830152517fef159d9a32b2472e32b098f954f3ce62d232939f1c207070b584df1814de2de09181900360800190a15090565b6001600160a01b038082166000908152600960209081526040808320938616835260029093019052205460ff1692915050565b6001600160a01b0381166000908152600960205260408120600101541580156130ae57506001600160a01b03821660009081526016602052604090205460ff1615156001145b801561144a57506131ca613191836001600160a01b031663173b99046040518163ffffffff1660e01b815260040160206040518083038186803b1580156130f457600080fd5b505afa158015613108573d6000803e3d6000fd5b505050506040513d602081101561311e57600080fd5b505160408051638d02d9a160e01b815290516001600160a01b03871691638d02d9a1916004808301926020929190829003018186803b15801561316057600080fd5b505afa158015613174573d6000803e3d6000fd5b505050506040513d602081101561318a57600080fd5b5051614e3a565b836001600160a01b031663dbfe7c196040518163ffffffff1660e01b815260040160206040518083038186803b15801561316057600080fd5b670de0b6b3a76400001492915050565b60006131e461499a565b6131f4576118d960016014614a8d565b60105460ff161515821515141561320c5760006118d9565b6010805483151560ff19909116811790915560408051918252517f84c7d948374a180eddab35d27d2f7a94167a1ff4e79467f1e89c061984190a1e9181900360200190a1600061144a565b60116020526000908152604090205460ff1681565b600061327661499a565b6132865761174c60016017614a8d565b60018054600160a01b60ff60a01b19821681179092550460ff1660008661335757604051638754e4fd60e01b81526020600482019081526024820187905273a731585ab05fc9f83555cf9bff8f58ee94e18f8591638754e4fd9189918991908190604401848480828437600081840152601f19601f8201169050808301925050509350505050602060405180830381600087803b15801561332657600080fd5b505af115801561333a573d6000803e3d6000fd5b505050506040513d602081101561335057600080fd5b5051613403565b604051639b86a9b560e01b81526020600482019081526024820187905273a731585ab05fc9f83555cf9bff8f58ee94e18f8591639b86a9b59189918991908190604401848480828437600081840152601f19601f8201169050808301925050509350505050602060405180830381600087803b1580156133d657600080fd5b505af11580156133ea573d6000803e3d6000fd5b505050506040513d602081101561340057600080fd5b50515b6001805460ff60a01b1916600160a01b85151502179055905060006134278261500e565b90508015613435578061343f565b61343f82866143c2565b98975050505050505050565b60608060086000846001600160a01b03166001600160a01b031681526020019081526020016000208054806020026020016040519081016040528092919081815260200182805480156134c757602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116134a9575b5093979650505050505050565b601454600160b81b900460ff1681565b6060600a805480602002602001604051908101604052809291908181526020018280548015611a40576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611a22575050505050905090565b60105460ff1681565b600061355761499a565b613567576118d960016002614a8d565b816001600160a01b031663abc6d72d6040518163ffffffff1660e01b815260040160206040518083038186803b1580156135a057600080fd5b505afa1580156135b4573d6000803e3d6000fd5b505050506040513d60208110156135ca57600080fd5b505161361d576040805162461bcd60e51b815260206004820152601c60248201527f6d61726b6572206d6574686f642072657475726e65642066616c736500000000604482015290519081900360640190fd5b60005b601a5481101561369557601a818154811061363757fe5b6000918252602090912001546001600160a01b038481169116141561368d5760405162461bcd60e51b8152600401808060200182810382526029815260200180615b256029913960400191505060405180910390fd5b600101613620565b50601a80546001810182556000919091527f057c384a7d1c54f3a1b2e5e67b2617b8224fdfd1ea7234eea573a6ff665ff63e0180546001600160a01b0384166001600160a01b0319909116811790915560408051918252517f98ef1187fb6fd2bc85f8996489877eb2b5428f9e9bdfc068c9ad6c2ea82eacc79181900360200190a1600061144a565b6002546001600160a01b031681565b601454600090600160b01b900460ff1615613784576040805162461bcd60e51b81526020600482015260126024820152711d1c985b9cd9995c881a5cc81c185d5cd95960721b604482015290519081900360640190fd5b60006137918686856153a1565b905080156137a0579050611721565b6137ab86868661544d565b60009695505050505050565b60606000825190506060816040519080825280602002602001820160405280156137eb578160200160208202803883390190505b50905060005b8281101561384657600085828151811061380757fe5b6020026020010151905061381b81336154ed565b601581111561382657fe5b83838151811061383257fe5b6020908102919091010152506001016137f1565b509392505050565b600480546040805163fc57d4df60e01b81526001600160a01b038781169482019490945290516000938493849391169163fc57d4df91602480820192602092909190829003018186803b1580156138a457600080fd5b505afa1580156138b8573d6000803e3d6000fd5b505050506040513d60208110156138ce57600080fd5b5051600480546040805163fc57d4df60e01b81526001600160a01b038a8116948201949094529051939450600093929091169163fc57d4df91602480820192602092909190829003018186803b15801561392757600080fd5b505afa15801561393b573d6000803e3d6000fd5b505050506040513d602081101561395157600080fd5b50519050811580613960575080155b1561397557600d935060009250613a6e915050565b6000866001600160a01b031663182df0f56040518163ffffffff1660e01b815260040160206040518083038186803b1580156139b057600080fd5b505afa1580156139c4573d6000803e3d6000fd5b505050506040513d60208110156139da57600080fd5b5051905060006139e8615a65565b6139f0615a65565b6139f8615a65565b613a20604051806020016040528060065481525060405180602001604052808a81525061567a565b9250613a4860405180602001604052808881525060405180602001604052808881525061567a565b9150613a5483836156b9565b9050613a60818b614f9c565b600099509750505050505050505b935093915050565b601a818154811061246057fe5b6000613a8d61499a565b613a9d5761174c60016015614a8d565b60005b84811015613c8e576000868683818110613ab657fe5b905060200201356001600160a01b03169050848483818110613ad457fe5b9050602002013515613b80576001600160a01b03811660009081526011602052604090205460ff16613b7b576001600160a01b0381166000818152601160209081526040808320805460ff191660019081179091556012805491820181557fbb8a6a4669ba250d26cd7a459eca9d215f8307e33aebe50379bc5a3617ec344490910180546001600160a01b0319168617905554938352601390915290206000199190910190555b613c85565b6001600160a01b03811660009081526011602052604090205460ff1615613c85576001600160a01b03811660009081526013602052604090205460125460001901811015613c425760128054600091906000198101908110613bde57fe5b600091825260209091200154601280546001600160a01b039092169250829184908110613c0757fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559290911681526013909152604090208190555b6012805490613c55906000198301615a78565b50506001600160a01b038116600090815260136020908152604080832083905560119091529020805460ff191690555b50600101613aa0565b50600061171e565b3360009081526009602052604090205460ff16613ce45760405162461bcd60e51b815260040180806020018281038252603c815260200180615c58603c913960400191505060405180910390fd5b601b5460ff16613d3b576040805162461bcd60e51b815260206004820152601860248201527f72652d656e7465726564206163726f7373206173736574730000000000000000604482015290519081900360640190fd5b601b805460ff19169055565b60606012805480602002602001604051908101604052809291908181526020018280548015611a40576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611a22575050505050905090565b601454600090600160b81b900460ff1615613dfb576040805162461bcd60e51b815260206004820152600f60248201526e1cd95a5e99481a5cc81c185d5cd959608a1b604482015290519081900360640190fd5b6001600160a01b03861660009081526009602052604090205460ff161580613e3c57506001600160a01b03851660009081526009602052604090205460ff16155b15613e48576009612671565b846001600160a01b0316635fe3b5676040518163ffffffff1660e01b815260040160206040518083038186803b158015613e8157600080fd5b505afa158015613e95573d6000803e3d6000fd5b505050506040513d6020811015613eab57600080fd5b505160408051635fe3b56760e01b815290516001600160a01b0392831692891691635fe3b567916004808301926020929190829003018186803b158015613ef157600080fd5b505afa158015613f05573d6000803e3d6000fd5b505050506040513d6020811015613f1b57600080fd5b50516001600160a01b031614613f32576002612671565b6137ab86848661544d565b6012818154811061246057fe5b6000613f5461499a565b613f64576118d960016006614a8d565b60175460ff1615158215151415613f7c5760006118d9565b6017805483151560ff19909116811790915560408051918252517faa40ee94af55250363b91641a0a615c47690148901505f89b01dafae03fff2819181900360200190a1600061144a565b6001600160a01b03831660009081526016602052604081205460ff1615614028576040805162461bcd60e51b815260206004820152601060248201526f189bdc9c9bddc81a5cc81c185d5cd95960821b604482015290519081900360640190fd5b6001600160a01b03841660009081526009602052604090205460ff1661404f576009611df9565b6001600160a01b038085166000908152600960209081526040808320938716835260029093019052205460ff1661413f57336001600160a01b038516146140d5576040805162461bcd60e51b815260206004820152601560248201527439b2b73232b91036bab9ba1031329031aa37b5b2b760591b604482015290519081900360640190fd5b60006140e133856154ed565b905060008160158111156140f157fe5b1461410a5780601581111561410257fe5b915050612174565b6001600160a01b038086166000908152600960209081526040808320938816835260029093019052205460ff1661413d57fe5b505b600480546040805163fc57d4df60e01b81526001600160a01b03888116948201949094529051929091169163fc57d4df91602480820192602092909190829003018186803b15801561419057600080fd5b505afa1580156141a4573d6000803e3d6000fd5b505050506040513d60208110156141ba57600080fd5b50516141c757600d611df9565b60105460ff1680156141f257506001600160a01b03831660009081526011602052604090205460ff16155b156141fe576012611df9565b6001600160a01b0384166000908152601860205260409020548015614310576000856001600160a01b03166347bd37186040518163ffffffff1660e01b815260040160206040518083038186803b15801561425857600080fd5b505afa15801561426c573d6000803e3d6000fd5b505050506040513d602081101561428257600080fd5b505190506000806142938387614ebc565b909250905060008260038111156142a657fe5b146142b857600b945050505050612174565b83811061430c576040805162461bcd60e51b815260206004820152601960248201527f6d61726b657420626f72726f7720636170207265616368656400000000000000604482015290519081900360640190fd5b5050505b61431a85856149f5565b60008061432a8688600088614b02565b9193509091506000905082601581111561434057fe5b1461435b5781601581111561435157fe5b9350505050612174565b8015614368576004614351565b6000979650505050505050565b6008602052816000526040600020818154811061438e57fe5b6000918252602090912001546001600160a01b03169150829050565b6003546001600160a01b031681565b60175460ff1681565b60006143cc61499a565b6143e3576143dc60016009614a8d565b905061144a565b6001600160a01b0383166000908152600960205260409020805460ff16614418576144106009600a614a8d565b91505061144a565b614420615a65565b506040805160208101909152838152614437615a65565b506040805160208101909152670c7d713b49da000081526144588183614afb565b15614473576144696006600b614a8d565b935050505061144a565b84158015906144fc5750600480546040805163fc57d4df60e01b81526001600160a01b038a8116948201949094529051929091169163fc57d4df91602480820192602092909190829003018186803b1580156144ce57600080fd5b505afa1580156144e2573d6000803e3d6000fd5b505050506040513d60208110156144f857600080fd5b5051155b1561450d57614469600d600c614a8d565b60018301805490869055604080516001600160a01b03891681526020810183905280820188905290517f70483e6592cd5182d45ac970e05bc62cdcc90e9d8ef2c2dbe686cf383bcd7fc59181900360600190a16000979650505050505050565b601454600160a81b900460ff1681565b60055481565b6000806145918585856153a1565b90508015612163579050612174565b6000808290506000806000836001600160a01b031663c37f68e2336040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060806040518083038186803b15801561460157600080fd5b505afa158015614615573d6000803e3d6000fd5b505050506040513d608081101561462b57600080fd5b50805160208201516040909201519094509092509050821561467e5760405162461bcd60e51b8152600401808060200182810382526025815260200180615cc96025913960400191505060405180910390fd5b801561469b57614690600c6003614a8d565b9450505050506118aa565b60006146a88733856153a1565b905080156146c9576146bd600e6004836156f5565b955050505050506118aa565b6001600160a01b0385166000908152600960209081526040808320338452600281019092529091205460ff1661470857600096505050505050506118aa565b3360009081526002820160209081526040808320805460ff19169055600882529182902080548351818402810184019094528084526060939283018282801561477a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161475c575b5050835193945083925060009150505b828110156147cf57896001600160a01b03168482815181106147a857fe5b60200260200101516001600160a01b031614156147c7578091506147cf565b60010161478a565b508181106147d957fe5b3360009081526008602052604090208054819060001981019081106147fa57fe5b9060005260206000200160009054906101000a90046001600160a01b031681838154811061482457fe5b600091825260209091200180546001600160a01b0319166001600160a01b0392909216919091179055805461485d826000198301615a78565b50805461493657336000908152600d6020526040902054600c54600019018110156148fc57600c805460009190600019810190811061489857fe5b600091825260209091200154600c80546001600160a01b0390921692508291849081106148c157fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055929091168152600d909152604090208190555b600c80549061490f906000198301615a78565b5050336000908152600d60209081526040808320839055600b9091529020805460ff191690555b604080516001600160a01b038c16815233602082015281517fe699a64c18b07ac5b7301aa273f36a2287239eb9501d81950672794afba29a0d929181900390910190a160009c9b505050505050505050505050565b6000546001600160a01b031681565b600080546001600160a01b0316331480156149be5750600154600160a81b900460ff165b806149f057503373a731585ab05fc9f83555cf9bff8f58ee94e18f851480156149f05750600154600160a01b900460ff165b905090565b60005b601a548110156124fc57601a8181548110614a0f57fe5b600091825260208220015460408051631cdc2c5d60e31b81526001600160a01b03878116600483015286811660248301529151919092169263e6e162e8926044808201939182900301818387803b158015614a6957600080fd5b505af1158015614a7d573d6000803e3d6000fd5b5050600190920191506149f89050565b60007f45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0836015811115614abc57fe5b83601b811115614ac857fe5b604080519283526020830191909152600082820152519081900360600190a182601581111561217457fe5b519051111590565b5190511090565b6000806000614b0f615a9c565b6001600160a01b03881660009081526008602090815260408083208054825181850281018501909352808352606093830182828015614b7757602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311614b59575b50939450600093505050505b8151811015614dfb576000828281518110614b9a57fe5b60200260200101519050806001600160a01b031663c37f68e28d6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060806040518083038186803b158015614bfa57600080fd5b505afa158015614c0e573d6000803e3d6000fd5b505050506040513d6080811015614c2457600080fd5b508051602082015160408084015160609485015160808b0152938901939093529187019190915293508315614c695750600f965060009550859450611d6d9350505050565b60408051602080820183526001600160a01b0380851660008181526009845285902060010154845260c08a01939093528351808301855260808a0151815260e08a015260048054855163fc57d4df60e01b815291820194909452935192169263fc57d4df9260248083019392829003018186803b158015614ce957600080fd5b505afa158015614cfd573d6000803e3d6000fd5b505050506040513d6020811015614d1357600080fd5b505160a08601819052614d365750600d965060009550859450611d6d9350505050565b604080516020810190915260a0860151815261010086015260c085015160e0860151614d7091614d659161567a565b86610100015161567a565b610120860181905260408601518651614d8a92919061575b565b855261010085015160608601516020870151614da792919061575b565b60208601526001600160a01b03818116908c161415614df257614dd48561012001518b876020015161575b565b60208601819052610100860151614dec918b9061575b565b60208601525b50600101614b83565b50602083015183511115614e215750506020810151905160009450039150829050611d6d565b5050805160209091015160009450849350039050611d6d565b60006121748383604051806040016040528060118152602001706164646974696f6e206f766572666c6f7760781b815250615783565b600080600080614e808787614ebc565b90925090506000826003811115614e9357fe5b14614ea45750915060009050613a6e565b614eae818661581e565b935093505050935093915050565b600080838301848110614ed457600092509050614ede565b5060029150600090505b9250929050565b60005b601a548110156124fc57601a8181548110614eff57fe5b60009182526020822001546040805162e48b0f60e51b81526001600160a01b038781166004830152868116602483015291519190921692631c9161e0926044808201939182900301818387803b158015614f5857600080fd5b505af1158015614f6c573d6000803e3d6000fd5b505060019092019150614ee89050565b6000806000614f8f846000806000614b02565b9250925092509193909250565b6000614fa6615a65565b614fb08484615841565b905061172181615862565b6000806000614fc8615a65565b614fd28686615871565b90925090506000826003811115614fe557fe5b14614ff65750915060009050614ede565b600061500182615862565b9350935050509250929050565b600061501861499a565b615028576118d960016017614a8d565b6001600160a01b03821660009081526009602052604090205460ff1615615055576118d9600a6016614a8d565b816001600160a01b031663fe9c44ae6040518163ffffffff1660e01b815260040160206040518083038186803b15801561508e57600080fd5b505afa1580156150a2573d6000803e3d6000fd5b505050506040513d60208110156150b857600080fd5b505161510b576040805162461bcd60e51b815260206004820152601c60248201527f6d61726b6572206d6574686f642072657475726e65642066616c736500000000604482015290519081900360640190fd5b306001600160a01b0316826001600160a01b0316635fe3b5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561514e57600080fd5b505afa158015615162573d6000803e3d6000fd5b505050506040513d602081101561517857600080fd5b50516001600160a01b0316146151bf5760405162461bcd60e51b8152600401808060200182810382526035815260200180615d236035913960400191505060405180910390fd5b6000826001600160a01b031663ac784ddc6040518163ffffffff1660e01b815260040160206040518083038186803b1580156151fa57600080fd5b505afa15801561520e573d6000803e3d6000fd5b505050506040513d602081101561522457600080fd5b505161529457826001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561526357600080fd5b505afa158015615277573d6000803e3d6000fd5b505050506040513d602081101561528d57600080fd5b5051615297565b60005b6001600160a01b038082166000908152600f602052604090205491925016156152ce576152c6600a6016614a8d565b9150506118aa565b6040805180820182526001808252600060208084018281526001600160a01b03898116808552600984528785209651875460ff1916901515178755915195850195909555600a805494850190557fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a890930180546001600160a01b031990811685179091559386168252600f81529084902080549093168217909255825190815291517fcf583bb0c569eb967f806b11601c4cb93c10310485c67add5f8362c2f212321f9281900390910190a16000612174565b6001600160a01b03831660009081526009602052604081205460ff166153c8576009611df9565b6001600160a01b038085166000908152600960209081526040808320938716835260029093019052205460ff16615400576000611df9565b6000806154108587866000614b02565b9193509091506000905082601581111561542657fe5b146154405781601581111561543757fe5b92505050612174565b80156137ab576004615437565b60005b601a5481101561244d57601a818154811061546757fe5b600091825260208220015460408051634e081c9560e01b81526001600160a01b0388811660048301528781166024830152868116604483015291519190921692634e081c95926064808201939182900301818387803b1580156154c957600080fd5b505af11580156154dd573d6000803e3d6000fd5b5050600190920191506154509050565b6001600160a01b0382166000908152600960205260408120805460ff1661551857600991505061144a565b6001600160a01b038316600090815260028201602052604090205460ff1615156001141561554a57600091505061144a565b6001600160a01b03838116600081815260028401602090815260408083208054600160ff199091168117909155600883528184208054918201815584528284200180546001600160a01b031916958a1695909517909455918152600b909152205460ff1661562b57600c8054600180820183557fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c790910180546001600160a01b0319166001600160a01b0387169081179091556000908152600b60209081526040808320805460ff19169094179093559254600d9093522060001990910190555b604080516001600160a01b0380871682528516602082015281517f3ab23ab0d51cccc0c3085aec51f99228625aa1a922b3a8ca89a26b0f2027a1a5929181900390910190a15060009392505050565b615682615a65565b6040518060200160405280670de0b6b3a76400006156a8866000015186600001516158d9565b816156af57fe5b0490529392505050565b6156c1615a65565b60405180602001604052806156ec6156e58660000151670de0b6b3a76400006158d9565b855161591b565b90529392505050565b60007f45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa084601581111561572457fe5b84601b81111561573057fe5b604080519283526020830191909152818101859052519081900360600190a183601581111561172157fe5b6000615765615a65565b61576f8585615841565b905061217061577d82615862565b84614e3a565b600083830182858210156158155760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156157da5781810151838201526020016157c2565b50505050905090810190601f1680156158075780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50949350505050565b600080838311615835575060009050818303614ede565b50600390506000614ede565b615849615a65565b60405180602001604052806156ec8560000151856158d9565b51670de0b6b3a7640000900490565b600061587b615a65565b60008061588c86600001518661594e565b9092509050600082600381111561589f57fe5b146158be57506040805160208101909152600081529092509050614ede565b60408051602081019091529081526000969095509350505050565b600061217483836040518060400160405280601781526020017f6d756c7469706c69636174696f6e206f766572666c6f7700000000000000000081525061598d565b600061217483836040518060400160405280600e81526020016d646976696465206279207a65726f60901b815250615a03565b6000808361596157506000905080614ede565b8383028385828161596e57fe5b041461598257506002915060009050614ede565b600092509050614ede565b600083158061599a575082155b156159a757506000612174565b838302838582816159b457fe5b041483906158155760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156157da5781810151838201526020016157c2565b60008183615a525760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156157da5781810151838201526020016157c2565b50828481615a5c57fe5b04949350505050565b6040518060200160405280600081525090565b8154818355818111156124fc576000838152602090206124fc918101908301615b06565b604051806101400160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001615ada615a65565b8152602001615ae7615a65565b8152602001615af4615a65565b8152602001615b01615a65565b905290565b611a4891905b80821115615b205760008155600101615b0c565b509056fe526577617264734469737472696275746f7220636f6e747261637420616c726561647920616464656463616e6e6f742070617573652061206d61726b65742074686174206973206e6f74206c697374656443616e206e6f74207265706179206d6f7265207468616e2074686520746f74616c20626f72726f77436f6d7074726f6c6c65723a5f61667465724e6f6e5265656e7472616e743a2063616c6c6572206e6f74206c6973746564206173206d61726b65746f6e6c7920706175736520677561726469616e20616e642061646d696e2063616e2070617573656f6e6c792061646d696e2063616e2073657420626f72726f772063617020677561726469616e6f6e6c7920696d706c656d656e746174696f6e206d61792063616c6c205f6265636f6d65496d706c656d656e746174696f6e436f6d7074726f6c6c65723a5f6265666f72654e6f6e5265656e7472616e743a2063616c6c6572206e6f74206c6973746564206173206d61726b65746f6e6c792061646d696e206f7220626f72726f772063617020677561726469616e2063616e2073657420626f72726f772063617073657869744d61726b65743a206765744163636f756e74536e617073686f74206661696c65646f6e6c792061646d696e206f7220626f72726f772063617020677561726469616e2063616e2073657420737570706c79206361707343616e6e6f7420737570706f72742061206d61726b65742077697468206120646966666572656e7420436f6d7074726f6c6c65722e6f6e6c7920756e6974726f6c6c65722061646d696e2063616e206368616e676520627261696e73a265627a7a7231582035a49f711967e2d51921c4ba0ca4c07edda37b01175127a26ce1cef35824a57d64736f6c63430005110032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA8 SHL NOT PUSH1 0xFF PUSH1 0xA0 SHL NOT SWAP1 SWAP2 AND PUSH1 0x1 PUSH1 0xA0 SHL OR AND PUSH1 0x1 PUSH1 0xA8 SHL OR SWAP1 SSTORE CALLVALUE DUP1 ISZERO PUSH2 0x32 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5DB3 DUP1 PUSH3 0x43 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 0x48A JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6D154EA5 GT PUSH2 0x262 JUMPI DUP1 PUSH4 0xBB82AA5E GT PUSH2 0x151 JUMPI DUP1 PUSH4 0xD5333166 GT PUSH2 0xCE JUMPI DUP1 PUSH4 0xE4028EEE GT PUSH2 0x92 JUMPI DUP1 PUSH4 0xE4028EEE EQ PUSH2 0x11E1 JUMPI DUP1 PUSH4 0xE6653F3D EQ PUSH2 0x120D JUMPI DUP1 PUSH4 0xE8755446 EQ PUSH2 0x1215 JUMPI DUP1 PUSH4 0xEABE7D91 EQ PUSH2 0x121D JUMPI DUP1 PUSH4 0xEDE4EDD0 EQ PUSH2 0x1253 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x1279 JUMPI PUSH2 0x48A JUMP JUMPDEST DUP1 PUSH4 0xD5333166 EQ PUSH2 0x1150 JUMPI DUP1 PUSH4 0xDA3D454C EQ PUSH2 0x116F JUMPI DUP1 PUSH4 0xDCE15449 EQ PUSH2 0x11A5 JUMPI DUP1 PUSH4 0xDCFBC0C7 EQ PUSH2 0x11D1 JUMPI DUP1 PUSH4 0xDD5CD22C EQ PUSH2 0x11D9 JUMPI PUSH2 0x48A JUMP JUMPDEST DUP1 PUSH4 0xC8C9C975 GT PUSH2 0x115 JUMPI DUP1 PUSH4 0xC8C9C975 EQ PUSH2 0x101F JUMPI DUP1 PUSH4 0xC90C20B1 EQ PUSH2 0x10DD JUMPI DUP1 PUSH4 0xD01F63F5 EQ PUSH2 0x10E5 JUMPI DUP1 PUSH4 0xD02F7351 EQ PUSH2 0x10ED JUMPI DUP1 PUSH4 0xD251FEFC EQ PUSH2 0x1133 JUMPI PUSH2 0x48A JUMP JUMPDEST DUP1 PUSH4 0xBB82AA5E EQ PUSH2 0xECE JUMPI DUP1 PUSH4 0xBDCDC258 EQ PUSH2 0xED6 JUMPI DUP1 PUSH4 0xC2998238 EQ PUSH2 0xF12 JUMPI DUP1 PUSH4 0xC488847B EQ PUSH2 0xFB3 JUMPI DUP1 PUSH4 0xC6C5B0DD EQ PUSH2 0x1002 JUMPI PUSH2 0x48A JUMP JUMPDEST DUP1 PUSH4 0x929FE9A1 GT PUSH2 0x1DF JUMPI DUP1 PUSH4 0xABFCEFFC GT PUSH2 0x1A3 JUMPI DUP1 PUSH4 0xABFCEFFC EQ PUSH2 0xE6A JUMPI DUP1 PUSH4 0xAC0B0BB7 EQ PUSH2 0xE90 JUMPI DUP1 PUSH4 0xB0772D0B EQ PUSH2 0xE98 JUMPI DUP1 PUSH4 0xB0957210 EQ PUSH2 0xEA0 JUMPI DUP1 PUSH4 0xB9B5B153 EQ PUSH2 0xEA8 JUMPI PUSH2 0x48A JUMP JUMPDEST DUP1 PUSH4 0x929FE9A1 EQ PUSH2 0xD5A JUMPI DUP1 PUSH4 0x94543C15 EQ PUSH2 0xD88 JUMPI DUP1 PUSH4 0x952ADF5A EQ PUSH2 0xDAE JUMPI DUP1 PUSH4 0x9B19251A EQ PUSH2 0xDCD JUMPI DUP1 PUSH4 0xABA35B98 EQ PUSH2 0xDF3 JUMPI PUSH2 0x48A JUMP JUMPDEST DUP1 PUSH4 0x7DC0D1D0 GT PUSH2 0x226 JUMPI DUP1 PUSH4 0x7DC0D1D0 EQ PUSH2 0xCC4 JUMPI DUP1 PUSH4 0x819605A8 EQ PUSH2 0xCCC JUMPI DUP1 PUSH4 0x87F76303 EQ PUSH2 0xCF2 JUMPI DUP1 PUSH4 0x8E8F294B EQ PUSH2 0xCFA JUMPI DUP1 PUSH4 0x8EBF6364 EQ PUSH2 0xD3B JUMPI PUSH2 0x48A JUMP JUMPDEST DUP1 PUSH4 0x6D154EA5 EQ PUSH2 0xBE9 JUMPI DUP1 PUSH4 0x6D35BF91 EQ PUSH2 0xC0F JUMPI DUP1 PUSH4 0x731F0C2B EQ PUSH2 0xC55 JUMPI DUP1 PUSH4 0x7515BAFA EQ PUSH2 0xC7B JUMPI DUP1 PUSH4 0x779B2294 EQ PUSH2 0xC98 JUMPI PUSH2 0x48A JUMP JUMPDEST DUP1 PUSH4 0x3C94786F GT PUSH2 0x37E JUMPI DUP1 PUSH4 0x52D84D1E GT PUSH2 0x2FB JUMPI DUP1 PUSH4 0x5F5AF1AA GT PUSH2 0x2BF JUMPI DUP1 PUSH4 0x5F5AF1AA EQ PUSH2 0xA7B JUMPI DUP1 PUSH4 0x5FC7E71E EQ PUSH2 0xAA1 JUMPI DUP1 PUSH4 0x607EF6C1 EQ PUSH2 0xAE7 JUMPI DUP1 PUSH4 0x632E5142 EQ PUSH2 0xBA5 JUMPI DUP1 PUSH4 0x6A56947E EQ PUSH2 0xBAD JUMPI PUSH2 0x48A JUMP JUMPDEST DUP1 PUSH4 0x52D84D1E EQ PUSH2 0x9D4 JUMPI DUP1 PUSH4 0x55EE1FE1 EQ PUSH2 0x9F1 JUMPI DUP1 PUSH4 0x5C778605 EQ PUSH2 0xA17 JUMPI DUP1 PUSH4 0x5D72DE62 EQ PUSH2 0xA4D JUMPI DUP1 PUSH4 0x5EC88C79 EQ PUSH2 0xA55 JUMPI PUSH2 0x48A JUMP JUMPDEST DUP1 PUSH4 0x4E79238F GT PUSH2 0x342 JUMPI DUP1 PUSH4 0x4E79238F EQ PUSH2 0x82D JUMPI DUP1 PUSH4 0x4EF4C3E1 EQ PUSH2 0x887 JUMPI DUP1 PUSH4 0x4FD42E17 EQ PUSH2 0x8BD JUMPI DUP1 PUSH4 0x51A485E4 EQ PUSH2 0x8DA JUMPI DUP1 PUSH4 0x51DFF989 EQ PUSH2 0x998 JUMPI PUSH2 0x48A JUMP JUMPDEST DUP1 PUSH4 0x3C94786F EQ PUSH2 0x76F JUMPI DUP1 PUSH4 0x41C728B9 EQ PUSH2 0x777 JUMPI DUP1 PUSH4 0x47EF3B3B EQ PUSH2 0x7B3 JUMPI DUP1 PUSH4 0x4A584432 EQ PUSH2 0x7FF JUMPI DUP1 PUSH4 0x4ADA90AF EQ PUSH2 0x825 JUMPI PUSH2 0x48A JUMP JUMPDEST DUP1 PUSH4 0x24A3D622 GT PUSH2 0x40C JUMPI DUP1 PUSH4 0x31FF47FA GT PUSH2 0x3D0 JUMPI DUP1 PUSH4 0x31FF47FA EQ PUSH2 0x695 JUMPI DUP1 PUSH4 0x32ABCDBE EQ PUSH2 0x6BB JUMPI DUP1 PUSH4 0x3605B51B EQ PUSH2 0x713 JUMPI DUP1 PUSH4 0x391957D7 EQ PUSH2 0x71B JUMPI DUP1 PUSH4 0x3BCF7EC1 EQ PUSH2 0x741 JUMPI PUSH2 0x48A JUMP JUMPDEST DUP1 PUSH4 0x24A3D622 EQ PUSH2 0x641 JUMPI DUP1 PUSH4 0x26782247 EQ PUSH2 0x649 JUMPI DUP1 PUSH4 0x2D70DB78 EQ PUSH2 0x651 JUMPI DUP1 PUSH4 0x2F1069BA EQ PUSH2 0x670 JUMPI DUP1 PUSH4 0x317B0B77 EQ PUSH2 0x678 JUMPI PUSH2 0x48A JUMP JUMPDEST DUP1 PUSH4 0x1D504DC6 GT PUSH2 0x453 JUMPI DUP1 PUSH4 0x1D504DC6 EQ PUSH2 0x53F JUMPI DUP1 PUSH4 0x1EDEDC91 EQ PUSH2 0x567 JUMPI DUP1 PUSH4 0x21AF4569 EQ PUSH2 0x5A9 JUMPI DUP1 PUSH4 0x2259192A EQ PUSH2 0x5CD JUMPI DUP1 PUSH4 0x24008A62 EQ PUSH2 0x605 JUMPI PUSH2 0x48A JUMP JUMPDEST DUP1 PUSH3 0x7E3DD2 EQ PUSH2 0x48F JUMPI DUP1 PUSH4 0x2C3BCBB EQ PUSH2 0x4AB JUMPI DUP1 PUSH4 0xA755EC2 EQ PUSH2 0x4E3 JUMPI DUP1 PUSH4 0x16DC15FE EQ PUSH2 0x4EB JUMPI DUP1 PUSH4 0x18C882A5 EQ PUSH2 0x511 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x497 PUSH2 0x1281 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x4D1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1286 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x497 PUSH2 0x1298 JUMP JUMPDEST PUSH2 0x497 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x501 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x12A8 JUMP JUMPDEST PUSH2 0x497 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x527 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x12BD JUMP JUMPDEST PUSH2 0x565 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x555 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1450 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x565 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x57D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x16FF JUMP JUMPDEST PUSH2 0x5B1 PUSH2 0x1706 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x4D1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x5E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x171A JUMP JUMPDEST PUSH2 0x4D1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x61B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x1729 JUMP JUMPDEST PUSH2 0x5B1 PUSH2 0x1764 JUMP JUMPDEST PUSH2 0x5B1 PUSH2 0x1773 JUMP JUMPDEST PUSH2 0x497 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x667 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD ISZERO ISZERO PUSH2 0x1782 JUMP JUMPDEST PUSH2 0x497 PUSH2 0x18AF JUMP JUMPDEST PUSH2 0x4D1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x68E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x18BF JUMP JUMPDEST PUSH2 0x5B1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x19CD JUMP JUMPDEST PUSH2 0x6C3 PUSH2 0x19E8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 DUP2 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x6FF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x6E7 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x6C3 PUSH2 0x1A4B JUMP JUMPDEST PUSH2 0x565 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x731 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1AAB JUMP JUMPDEST PUSH2 0x497 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x757 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x1B5B JUMP JUMPDEST PUSH2 0x497 PUSH2 0x1CE9 JUMP JUMPDEST PUSH2 0x565 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x78D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x1CF9 JUMP JUMPDEST PUSH2 0x565 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x7C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xA0 ADD CALLDATALOAD PUSH2 0x1D20 JUMP JUMPDEST PUSH2 0x4D1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x815 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1D25 JUMP JUMPDEST PUSH2 0x4D1 PUSH2 0x1D37 JUMP JUMPDEST PUSH2 0x869 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x843 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x1D3D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST PUSH2 0x4D1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x89D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x1D77 JUMP JUMPDEST PUSH2 0x4D1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x217B JUMP JUMPDEST PUSH2 0x565 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x8F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x90A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x91C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x93D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x95A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x96C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x98D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x226A JUMP JUMPDEST PUSH2 0x565 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x9AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x23F9 JUMP JUMPDEST PUSH2 0x5B1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x2453 JUMP JUMPDEST PUSH2 0x4D1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA07 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x247A JUMP JUMPDEST PUSH2 0x565 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xA2D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x24FC JUMP JUMPDEST PUSH2 0x565 PUSH2 0x2501 JUMP JUMPDEST PUSH2 0x869 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA6B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2574 JUMP JUMPDEST PUSH2 0x4D1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA91 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x25A9 JUMP JUMPDEST PUSH2 0x4D1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0xAB7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x2628 JUMP JUMPDEST PUSH2 0x565 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xAFD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xB17 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xB29 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0xB4A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xB67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xB79 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0xB9A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x27DF JUMP JUMPDEST PUSH2 0x565 PUSH2 0x2965 JUMP JUMPDEST PUSH2 0x565 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0xBC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x29C2 JUMP JUMPDEST PUSH2 0x497 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xBFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x29C7 JUMP JUMPDEST PUSH2 0x565 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0xC25 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x16FF JUMP JUMPDEST PUSH2 0x497 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC6B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x29DC JUMP JUMPDEST PUSH2 0x5B1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC91 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x29F1 JUMP JUMPDEST PUSH2 0x4D1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xCAE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x29FE JUMP JUMPDEST PUSH2 0x5B1 PUSH2 0x2B71 JUMP JUMPDEST PUSH2 0x4D1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xCE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2B80 JUMP JUMPDEST PUSH2 0x497 PUSH2 0x2EDA JUMP JUMPDEST PUSH2 0xD20 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2EEA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 ISZERO ISZERO DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x497 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD ISZERO ISZERO PUSH2 0x2F09 JUMP JUMPDEST PUSH2 0x497 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xD70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x3035 JUMP JUMPDEST PUSH2 0x497 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD9E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3068 JUMP JUMPDEST PUSH2 0x4D1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xDC4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD ISZERO ISZERO PUSH2 0x31DA JUMP JUMPDEST PUSH2 0x497 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xDE3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3257 JUMP JUMPDEST PUSH2 0x4D1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xE09 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD ISZERO ISZERO SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xE2C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xE3E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0xE5F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP CALLDATALOAD PUSH2 0x326C JUMP JUMPDEST PUSH2 0x6C3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE80 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x344B JUMP JUMPDEST PUSH2 0x497 PUSH2 0x34D4 JUMP JUMPDEST PUSH2 0x6C3 PUSH2 0x34E4 JUMP JUMPDEST PUSH2 0x497 PUSH2 0x3544 JUMP JUMPDEST PUSH2 0x4D1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xEBE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x354D JUMP JUMPDEST PUSH2 0x5B1 PUSH2 0x371E JUMP JUMPDEST PUSH2 0x4D1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0xEEC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x372D JUMP JUMPDEST PUSH2 0x6C3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF28 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xF42 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xF54 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0xF75 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x37B7 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0xFE9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xFC9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x384E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x5B1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1018 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x3A76 JUMP JUMPDEST PUSH2 0x4D1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1035 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x104F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1061 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x1082 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x109F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x10B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x10D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x3A83 JUMP JUMPDEST PUSH2 0x565 PUSH2 0x3C96 JUMP JUMPDEST PUSH2 0x6C3 PUSH2 0x3D47 JUMP JUMPDEST PUSH2 0x4D1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x1103 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x3DA7 JUMP JUMPDEST PUSH2 0x5B1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1149 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x3F3D JUMP JUMPDEST PUSH2 0x4D1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1166 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD ISZERO ISZERO PUSH2 0x3F4A JUMP JUMPDEST PUSH2 0x4D1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1185 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x3FC7 JUMP JUMPDEST PUSH2 0x5B1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x11BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x4375 JUMP JUMPDEST PUSH2 0x5B1 PUSH2 0x43AA JUMP JUMPDEST PUSH2 0x497 PUSH2 0x43B9 JUMP JUMPDEST PUSH2 0x4D1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x11F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x43C2 JUMP JUMPDEST PUSH2 0x497 PUSH2 0x456D JUMP JUMPDEST PUSH2 0x4D1 PUSH2 0x457D JUMP JUMPDEST PUSH2 0x4D1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1233 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x4583 JUMP JUMPDEST PUSH2 0x4D1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1269 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x45A0 JUMP JUMPDEST PUSH2 0x5B1 PUSH2 0x498B JUMP JUMPDEST PUSH1 0x1 DUP2 JUMP JUMPDEST PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0xA8 SHL SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0xE PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x1314 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5B4E PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ DUP1 PUSH2 0x1330 JUMPI POP PUSH2 0x1330 PUSH2 0x499A JUMP JUMPDEST PUSH2 0x136B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5BD9 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1373 PUSH2 0x499A JUMP JUMPDEST DUP1 PUSH2 0x1380 JUMPI POP PUSH1 0x1 DUP3 ISZERO ISZERO EQ JUMPDEST PUSH2 0x13CA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x6F6E6C792061646D696E2063616E20756E7061757365 PUSH1 0x50 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x16 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD DUP7 ISZERO ISZERO PUSH1 0xFF NOT SWAP1 SWAP2 AND DUP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP4 DUP5 MSTORE DUP4 DUP4 ADD MSTORE PUSH1 0x60 SWAP1 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x6 SWAP1 DUP4 ADD MSTORE PUSH6 0x426F72726F77 PUSH1 0xD0 SHL PUSH1 0x80 DUP4 ADD MSTORE MLOAD PUSH32 0x71AEC636243F9709BB0007AE15E9AFB8150AB01716D75FD7573BE5CC096E03B0 SWAP2 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 LOG1 POP DUP1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST CALLER PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 EQ DUP1 ISZERO PUSH2 0x14D4 JUMPI POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x2F1069BA 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 0x14A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x14BB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x14D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST DUP1 PUSH2 0x15B7 JUMPI POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xF851A440 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 0x1513 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1527 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x153D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ DUP1 ISZERO PUSH2 0x15B7 JUMPI POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA755EC2 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 0x158A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x159E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x15B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x15F2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5D58 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC1E80334 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x162F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1643 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1659 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x16A8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x18DA185B99D9481B9BDD08185D5D1A1BDC9A5E9959 PUSH1 0x5A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5D72DE62 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x16E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x16F7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x17 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 JUMPDEST SWAP1 POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x1753 JUMPI PUSH1 0x9 JUMPDEST SWAP1 POP PUSH2 0x1721 JUMP JUMPDEST PUSH2 0x175D DUP6 DUP5 PUSH2 0x49F5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x171E JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ DUP1 PUSH2 0x17A1 JUMPI POP PUSH2 0x17A1 PUSH2 0x499A JUMP JUMPDEST PUSH2 0x17DC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5BD9 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x17E4 PUSH2 0x499A JUMP JUMPDEST DUP1 PUSH2 0x17F1 JUMPI POP PUSH1 0x1 DUP3 ISZERO ISZERO EQ JUMPDEST PUSH2 0x183B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x6F6E6C792061646D696E2063616E20756E7061757365 PUSH1 0x50 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x14 DUP1 SLOAD DUP4 ISZERO ISZERO PUSH1 0x1 PUSH1 0xB8 SHL DUP2 MUL PUSH1 0xFF PUSH1 0xB8 SHL NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP1 DUP3 MSTORE PUSH1 0x5 DUP3 DUP3 ADD MSTORE PUSH5 0x5365697A65 PUSH1 0xD8 SHL PUSH1 0x60 DUP4 ADD MSTORE MLOAD PUSH32 0xEF159D9A32B2472E32B098F954F3CE62D232939F1C207070B584DF1814DE2DE0 SWAP2 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG1 POP DUP1 JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x18C9 PUSH2 0x499A JUMP JUMPDEST PUSH2 0x18E0 JUMPI PUSH2 0x18D9 PUSH1 0x1 PUSH1 0x7 PUSH2 0x4A8D JUMP JUMPDEST SWAP1 POP PUSH2 0x18AA JUMP JUMPDEST PUSH2 0x18E8 PUSH2 0x5A65 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE DUP3 DUP2 MSTORE PUSH2 0x18FF PUSH2 0x5A65 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH7 0xB1A2BC2EC50000 DUP2 MSTORE PUSH2 0x191F DUP3 DUP3 PUSH2 0x4AF3 JUMP JUMPDEST ISZERO PUSH2 0x1939 JUMPI PUSH2 0x1930 PUSH1 0x5 PUSH1 0x8 PUSH2 0x4A8D JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x18AA JUMP JUMPDEST PUSH2 0x1941 PUSH2 0x5A65 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH8 0xC7D713B49DA0000 DUP2 MSTORE PUSH2 0x1962 DUP2 DUP5 PUSH2 0x4AFB JUMP JUMPDEST ISZERO PUSH2 0x197D JUMPI PUSH2 0x1973 PUSH1 0x5 PUSH1 0x8 PUSH2 0x4A8D JUMP JUMPDEST SWAP4 POP POP POP POP PUSH2 0x18AA JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD SWAP1 DUP7 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP9 SWAP1 MSTORE DUP2 MLOAD PUSH32 0x3B9670CF975D26958E754B57098EAA2AC914D8D2A31B83257997B9F346110FD9 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x0 JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x60 PUSH1 0xC DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x1A40 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1A22 JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1A DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x1A40 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1A22 JUMPI POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x1AB3 PUSH2 0x499A JUMP JUMPDEST PUSH2 0x1AEE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5C00 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x17 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH2 0x100 DUP2 DUP2 MUL PUSH2 0x100 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT DUP6 AND OR SWAP1 SWAP5 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP5 SWAP1 SWAP4 DIV SWAP2 SWAP1 SWAP2 AND DUP1 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 MLOAD SWAP1 SWAP3 PUSH32 0xEDA98690E518E9A05F8EC6837663E188211B2DA8F4906648B323F2C1D4434E29 SWAP3 SWAP1 DUP3 SWAP1 SUB ADD SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x1BB2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5B4E PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ DUP1 PUSH2 0x1BCE JUMPI POP PUSH2 0x1BCE PUSH2 0x499A JUMP JUMPDEST PUSH2 0x1C09 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5BD9 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1C11 PUSH2 0x499A JUMP JUMPDEST DUP1 PUSH2 0x1C1E JUMPI POP PUSH1 0x1 DUP3 ISZERO ISZERO EQ JUMPDEST PUSH2 0x1C68 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x6F6E6C792061646D696E2063616E20756E7061757365 PUSH1 0x50 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x15 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD DUP7 ISZERO ISZERO PUSH1 0xFF NOT SWAP1 SWAP2 AND DUP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP4 DUP5 MSTORE DUP4 DUP4 ADD MSTORE PUSH1 0x60 SWAP1 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x4 SWAP1 DUP4 ADD MSTORE PUSH4 0x135A5B9D PUSH1 0xE2 SHL PUSH1 0x80 DUP4 ADD MSTORE MLOAD PUSH32 0x71AEC636243F9709BB0007AE15E9AFB8150AB01716D75FD7573BE5CC096E03B0 SWAP2 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 LOG1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH2 0x16F7 JUMP JUMPDEST PUSH1 0x18 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x1D52 DUP11 DUP11 DUP11 DUP11 PUSH2 0x4B02 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP DUP3 PUSH1 0x15 DUP2 GT ISZERO PUSH2 0x1D64 JUMPI INVALID JUMPDEST SWAP6 POP SWAP1 SWAP4 POP SWAP2 POP POP JUMPDEST SWAP5 POP SWAP5 POP SWAP5 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x15 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1DD6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x1B5A5B9D081A5CC81C185D5CD959 PUSH1 0x92 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x1E00 JUMPI PUSH1 0x9 JUMPDEST SWAP1 POP PUSH2 0x2174 JUMP JUMPDEST PUSH1 0x10 SLOAD PUSH1 0xFF AND DUP1 ISZERO PUSH2 0x1E2B JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST ISZERO PUSH2 0x1E37 JUMPI PUSH1 0x12 PUSH2 0x1DF9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x2163 JUMPI PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x3B1D21A2 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 0x1E91 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1EA5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1EBB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x8F7A6E3 PUSH1 0xE3 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP2 PUSH4 0x47BD3718 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F03 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1F17 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1F2D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x8F840DDD PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND SWAP2 PUSH4 0x8F840DDD SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F75 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1F89 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1F9F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xDC028AB1 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND SWAP2 PUSH4 0xDC028AB1 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1FE7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1FFB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2011 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x61FEACFF PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND SWAP2 PUSH4 0x61FEACFF SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2059 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x206D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2083 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x20A7 DUP8 DUP8 PUSH2 0x20A2 PUSH2 0x209C DUP10 DUP10 PUSH2 0x4E3A JUMP JUMPDEST DUP8 PUSH2 0x4E3A JUMP JUMPDEST PUSH2 0x4E70 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x20BA JUMPI INVALID JUMPDEST EQ PUSH2 0x20D0 JUMPI PUSH1 0xB SWAP9 POP POP POP POP POP POP POP POP POP PUSH2 0x2174 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x20DC DUP3 DUP13 PUSH2 0x4EBC JUMP JUMPDEST SWAP1 SWAP4 POP SWAP1 POP PUSH1 0x0 DUP4 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x20EF JUMPI INVALID JUMPDEST EQ PUSH2 0x2106 JUMPI PUSH1 0xB SWAP10 POP POP POP POP POP POP POP POP POP POP PUSH2 0x2174 JUMP JUMPDEST DUP9 DUP2 LT PUSH2 0x215A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6D61726B657420737570706C7920636170207265616368656400000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP POP POP POP POP POP POP JUMPDEST PUSH2 0x216D DUP6 DUP6 PUSH2 0x4EE5 JUMP JUMPDEST PUSH1 0x0 JUMPDEST SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2185 PUSH2 0x499A JUMP JUMPDEST PUSH2 0x2195 JUMPI PUSH2 0x18D9 PUSH1 0x1 PUSH1 0xD PUSH2 0x4A8D JUMP JUMPDEST PUSH2 0x219D PUSH2 0x5A65 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE DUP3 DUP2 MSTORE PUSH2 0x21B4 PUSH2 0x5A65 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH8 0xDE0B6B3A7640000 DUP2 MSTORE PUSH2 0x21D5 DUP3 DUP3 PUSH2 0x4AFB JUMP JUMPDEST ISZERO PUSH2 0x21E6 JUMPI PUSH2 0x1930 PUSH1 0x7 PUSH1 0xE PUSH2 0x4A8D JUMP JUMPDEST PUSH2 0x21EE PUSH2 0x5A65 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH8 0x14D1120D7B160000 DUP2 MSTORE PUSH2 0x220F DUP2 DUP5 PUSH2 0x4AFB JUMP JUMPDEST ISZERO PUSH2 0x2220 JUMPI PUSH2 0x1973 PUSH1 0x7 PUSH1 0xE PUSH2 0x4A8D JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD SWAP1 DUP7 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP9 SWAP1 MSTORE DUP2 MLOAD PUSH32 0xAEBA5A6C40A8AC138134BFF1AAA65DEBF25971188A58804BAD717F82F0EC1316 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x0 PUSH2 0x19C3 JUMP JUMPDEST PUSH2 0x2272 PUSH2 0x499A JUMP JUMPDEST DUP1 PUSH2 0x228C JUMPI POP PUSH1 0x17 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ JUMPDEST PUSH2 0x22C7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x35 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5CEE PUSH1 0x35 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 DUP2 DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x22D7 JUMPI POP DUP1 DUP3 EQ JUMPDEST PUSH2 0x2318 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x1A5B9D985B1A59081A5B9C1D5D PUSH1 0x9A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x23F0 JUMPI DUP5 DUP5 DUP3 DUP2 DUP2 LT PUSH2 0x232F JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x19 PUSH1 0x0 DUP10 DUP10 DUP6 DUP2 DUP2 LT PUSH2 0x2346 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP7 DUP7 DUP3 DUP2 DUP2 LT PUSH2 0x2386 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x9E0AD9CEE10BDF36B7FBD38910C0BDFF0F275ACE679B45B922381C2723D676F8 DUP7 DUP7 DUP5 DUP2 DUP2 LT PUSH2 0x23CC JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH1 0x1 ADD PUSH2 0x231B JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST DUP1 ISZERO DUP1 ISZERO PUSH2 0x2407 JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST ISZERO PUSH2 0x244D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x72656465656D546F6B656E73207A65726F PUSH1 0x78 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0xA DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x2460 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2484 PUSH2 0x499A JUMP JUMPDEST PUSH2 0x2494 JUMPI PUSH2 0x18D9 PUSH1 0x1 PUSH1 0x13 PUSH2 0x4A8D JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP2 SWAP1 SWAP3 AND DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP2 MLOAD PUSH32 0xD52B2B9B7E9EE655FCB95D2E5B9E0C9F69E7EF2B8E9D2D0EA78402D576D22E22 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x0 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x254A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5C26 PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1B SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2572 JUMPI PUSH1 0x1B DUP1 SLOAD PUSH2 0xFF00 NOT PUSH1 0xFF NOT SWAP1 SWAP2 AND PUSH1 0x1 OR AND PUSH2 0x100 OR SWAP1 SSTORE JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x258B DUP8 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x4B02 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP DUP3 PUSH1 0x15 DUP2 GT ISZERO PUSH2 0x259D JUMPI INVALID JUMPDEST SWAP8 SWAP2 SWAP7 POP SWAP5 POP SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x25B3 PUSH2 0x499A JUMP JUMPDEST PUSH2 0x25C3 JUMPI PUSH2 0x18D9 PUSH1 0x1 PUSH1 0x18 PUSH2 0x4A8D JUMP JUMPDEST PUSH1 0x14 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND OR SWAP3 DUP4 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP3 DUP3 AND DUP1 DUP5 MSTORE SWAP4 SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD PUSH32 0x613B6EE6A04F0D09F390E4D9318894B9F6AC7FD83897CD8D18896BA579C401E SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x0 PUSH2 0x2174 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO DUP1 PUSH2 0x2669 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST ISZERO PUSH2 0x2678 JUMPI PUSH1 0x9 JUMPDEST SWAP1 POP PUSH2 0x27D6 JUMP JUMPDEST PUSH1 0x0 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x95DD9193 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x26D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x26E4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x26FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH2 0x2707 DUP8 PUSH2 0x3068 JUMP JUMPDEST ISZERO PUSH2 0x2750 JUMPI DUP3 DUP2 LT ISZERO PUSH2 0x274B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5B76 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x27D0 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x275C DUP7 PUSH2 0x4F7C JUMP JUMPDEST SWAP2 SWAP4 POP SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 POP DUP3 PUSH1 0x15 DUP2 GT ISZERO PUSH2 0x2772 JUMPI INVALID JUMPDEST EQ PUSH2 0x278D JUMPI DUP2 PUSH1 0x15 DUP2 GT ISZERO PUSH2 0x2783 JUMPI INVALID JUMPDEST SWAP4 POP POP POP POP PUSH2 0x27D6 JUMP JUMPDEST DUP1 PUSH2 0x2799 JUMPI PUSH1 0x3 PUSH2 0x2783 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27B5 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 SLOAD DUP2 MSTORE POP DUP6 PUSH2 0x4F9C JUMP JUMPDEST SWAP1 POP DUP1 DUP7 GT ISZERO PUSH2 0x27CC JUMPI PUSH1 0x11 SWAP5 POP POP POP POP POP PUSH2 0x27D6 JUMP JUMPDEST POP POP POP JUMPDEST PUSH1 0x0 SWAP2 POP POP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x27E7 PUSH2 0x499A JUMP JUMPDEST DUP1 PUSH2 0x2801 JUMPI POP PUSH1 0x17 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ JUMPDEST PUSH2 0x283C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x35 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5C94 PUSH1 0x35 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 DUP2 DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x284C JUMPI POP DUP1 DUP3 EQ JUMPDEST PUSH2 0x288D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x1A5B9D985B1A59081A5B9C1D5D PUSH1 0x9A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x23F0 JUMPI DUP5 DUP5 DUP3 DUP2 DUP2 LT PUSH2 0x28A4 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x18 PUSH1 0x0 DUP10 DUP10 DUP6 DUP2 DUP2 LT PUSH2 0x28BB JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP7 DUP7 DUP3 DUP2 DUP2 LT PUSH2 0x28FB JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x6F1951B2AAD10F3FC81B86D91105B413A5B3F847A34BBC5CE1904201B14438F6 DUP7 DUP7 DUP5 DUP2 DUP2 LT PUSH2 0x2941 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH1 0x1 ADD PUSH2 0x2890 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x29B3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5B9E PUSH1 0x3B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1B DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x244D JUMP JUMPDEST PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x15 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0xC DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x2460 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP1 PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFDB25FB1 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 0x2A4E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2A62 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2A78 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x2B67 JUMPI PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xFC57D4DF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 DUP2 AND SWAP5 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP4 SWAP1 SWAP3 AND SWAP2 PUSH4 0xFC57D4DF SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2AD5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2AE9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2AFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0x2B13 JUMPI PUSH1 0xD SWAP3 POP POP POP PUSH2 0x144A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2B2E PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP6 DUP2 MSTORE POP DUP8 PUSH2 0x4FBB JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2B41 JUMPI INVALID JUMPDEST EQ PUSH2 0x2B54 JUMPI PUSH1 0xB JUMPDEST SWAP5 POP POP POP POP POP PUSH2 0x144A JUMP JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2B63 JUMPI PUSH1 0x13 PUSH2 0x2B49 JUMP JUMPDEST POP POP POP JUMPDEST PUSH1 0x0 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2B8A PUSH2 0x499A JUMP JUMPDEST PUSH2 0x2B9A JUMPI PUSH2 0x18D9 PUSH1 0x1 PUSH1 0x19 PUSH2 0x4A8D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x2BC6 JUMPI PUSH2 0x18D9 PUSH1 0x9 PUSH1 0x1A PUSH2 0x4A8D JUMP JUMPDEST PUSH1 0x0 DUP3 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 0x2C01 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2C15 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2C2B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD GT ISZERO PUSH2 0x2C3F JUMPI PUSH2 0x18D9 PUSH1 0x15 PUSH1 0x1B PUSH2 0x4A8D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP2 SSTORE PUSH1 0x1 ADD SWAP3 SWAP1 SWAP3 SSTORE PUSH1 0xA DUP1 SLOAD DUP4 MLOAD DUP2 DUP5 MUL DUP2 ADD DUP5 ADD SWAP1 SWAP5 MSTORE DUP1 DUP5 MSTORE PUSH1 0x60 SWAP4 SWAP3 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x2CB9 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x2C9B JUMPI JUMPDEST POP POP DUP4 MLOAD SWAP4 SWAP5 POP DUP4 SWAP3 POP PUSH1 0x0 SWAP2 POP POP JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2D0E JUMPI DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2CE7 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x2D06 JUMPI DUP1 SWAP2 POP PUSH2 0x2D0E JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x2CC9 JUMP JUMPDEST POP DUP2 DUP2 LT PUSH2 0x2D18 JUMPI INVALID JUMPDEST PUSH1 0xA DUP1 SLOAD PUSH1 0x0 NOT DUP2 ADD SWAP1 DUP2 LT PUSH2 0x2D2A JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0xA DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 DUP4 SWAP1 DUP2 LT PUSH2 0x2D50 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0xA DUP1 SLOAD SWAP1 PUSH2 0x2D8C SWAP1 PUSH1 0x0 NOT DUP4 ADD PUSH2 0x5A78 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0xF PUSH1 0x0 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xAC784DDC 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 0x2DCC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2DE0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2DF6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x2E66 JUMPI DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6F307DC3 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 0x2E35 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2E49 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2E5F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x2E69 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP5 DUP3 AND SWAP5 SWAP1 SWAP5 OR SWAP1 SWAP4 SSTORE DUP1 MLOAD SWAP3 DUP9 AND DUP4 MSTORE MLOAD PUSH32 0x302FEB03EFD5741DF80EFE7F97F5D93D74D46A542A3D312D0FAAE64FA1F3E0E9 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x0 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0xB0 SHL SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD PUSH1 0xFF SWAP1 SWAP2 AND SWAP1 DUP3 JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ DUP1 PUSH2 0x2F28 JUMPI POP PUSH2 0x2F28 PUSH2 0x499A JUMP JUMPDEST PUSH2 0x2F63 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5BD9 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2F6B PUSH2 0x499A JUMP JUMPDEST DUP1 PUSH2 0x2F78 JUMPI POP PUSH1 0x1 DUP3 ISZERO ISZERO EQ JUMPDEST PUSH2 0x2FC2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x6F6E6C792061646D696E2063616E20756E7061757365 PUSH1 0x50 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x14 DUP1 SLOAD DUP4 ISZERO ISZERO PUSH1 0x1 PUSH1 0xB0 SHL DUP2 MUL PUSH1 0xFF PUSH1 0xB0 SHL NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP1 DUP3 MSTORE PUSH1 0x8 DUP3 DUP3 ADD MSTORE PUSH8 0x2A3930B739B332B9 PUSH1 0xC1 SHL PUSH1 0x60 DUP4 ADD MSTORE MLOAD PUSH32 0xEF159D9A32B2472E32B098F954F3CE62D232939F1C207070B584DF1814DE2DE0 SWAP2 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG1 POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE PUSH1 0x2 SWAP1 SWAP4 ADD SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x1 ADD SLOAD ISZERO DUP1 ISZERO PUSH2 0x30AE JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x1 EQ JUMPDEST DUP1 ISZERO PUSH2 0x144A JUMPI POP PUSH2 0x31CA PUSH2 0x3191 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x173B9904 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 0x30F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3108 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x311E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x8D02D9A1 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP2 PUSH4 0x8D02D9A1 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3160 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3174 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x318A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x4E3A JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xDBFE7C19 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 0x3160 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH8 0xDE0B6B3A7640000 EQ SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x31E4 PUSH2 0x499A JUMP JUMPDEST PUSH2 0x31F4 JUMPI PUSH2 0x18D9 PUSH1 0x1 PUSH1 0x14 PUSH2 0x4A8D JUMP JUMPDEST PUSH1 0x10 SLOAD PUSH1 0xFF AND ISZERO ISZERO DUP3 ISZERO ISZERO EQ ISZERO PUSH2 0x320C JUMPI PUSH1 0x0 PUSH2 0x18D9 JUMP JUMPDEST PUSH1 0x10 DUP1 SLOAD DUP4 ISZERO ISZERO PUSH1 0xFF NOT SWAP1 SWAP2 AND DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD PUSH32 0x84C7D948374A180EDDAB35D27D2F7A94167A1FF4E79467F1E89C061984190A1E SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 PUSH1 0x0 PUSH2 0x144A JUMP JUMPDEST PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3276 PUSH2 0x499A JUMP JUMPDEST PUSH2 0x3286 JUMPI PUSH2 0x174C PUSH1 0x1 PUSH1 0x17 PUSH2 0x4A8D JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL PUSH1 0xFF PUSH1 0xA0 SHL NOT DUP3 AND DUP2 OR SWAP1 SWAP3 SSTORE DIV PUSH1 0xFF AND PUSH1 0x0 DUP7 PUSH2 0x3357 JUMPI PUSH1 0x40 MLOAD PUSH4 0x8754E4FD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD SWAP1 DUP2 MSTORE PUSH1 0x24 DUP3 ADD DUP8 SWAP1 MSTORE PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 SWAP2 PUSH4 0x8754E4FD SWAP2 DUP10 SWAP2 DUP10 SWAP2 SWAP1 DUP2 SWAP1 PUSH1 0x44 ADD DUP5 DUP5 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3326 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x333A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3350 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x3403 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x9B86A9B5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD SWAP1 DUP2 MSTORE PUSH1 0x24 DUP3 ADD DUP8 SWAP1 MSTORE PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 SWAP2 PUSH4 0x9B86A9B5 SWAP2 DUP10 SWAP2 DUP10 SWAP2 SWAP1 DUP2 SWAP1 PUSH1 0x44 ADD DUP5 DUP5 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x33D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x33EA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3400 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL DUP6 ISZERO ISZERO MUL OR SWAP1 SSTORE SWAP1 POP PUSH1 0x0 PUSH2 0x3427 DUP3 PUSH2 0x500E JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x3435 JUMPI DUP1 PUSH2 0x343F JUMP JUMPDEST PUSH2 0x343F DUP3 DUP7 PUSH2 0x43C2 JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x8 PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x34C7 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x34A9 JUMPI JUMPDEST POP SWAP4 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0xB8 SHL SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x60 PUSH1 0xA DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x1A40 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1A22 JUMPI POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x10 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3557 PUSH2 0x499A JUMP JUMPDEST PUSH2 0x3567 JUMPI PUSH2 0x18D9 PUSH1 0x1 PUSH1 0x2 PUSH2 0x4A8D JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xABC6D72D 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 0x35A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x35B4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x35CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x361D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6D61726B6572206D6574686F642072657475726E65642066616C736500000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x1A SLOAD DUP2 LT ISZERO PUSH2 0x3695 JUMPI PUSH1 0x1A DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x3637 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND SWAP2 AND EQ ISZERO PUSH2 0x368D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5B25 PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 ADD PUSH2 0x3620 JUMP JUMPDEST POP PUSH1 0x1A DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE PUSH1 0x0 SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x57C384A7D1C54F3A1B2E5E67B2617B8224FDFD1EA7234EEA573A6FF665FF63E ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP2 AND DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD PUSH32 0x98EF1187FB6FD2BC85F8996489877EB2B5428F9E9BDFC068C9AD6C2EA82EACC7 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 PUSH1 0x0 PUSH2 0x144A JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0xB0 SHL SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x3784 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH18 0x1D1C985B9CD9995C881A5CC81C185D5CD959 PUSH1 0x72 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3791 DUP7 DUP7 DUP6 PUSH2 0x53A1 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x37A0 JUMPI SWAP1 POP PUSH2 0x1721 JUMP JUMPDEST PUSH2 0x37AB DUP7 DUP7 DUP7 PUSH2 0x544D JUMP JUMPDEST PUSH1 0x0 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP3 MLOAD SWAP1 POP PUSH1 0x60 DUP2 PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x37EB JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x3846 JUMPI PUSH1 0x0 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x3807 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x381B DUP2 CALLER PUSH2 0x54ED JUMP JUMPDEST PUSH1 0x15 DUP2 GT ISZERO PUSH2 0x3826 JUMPI INVALID JUMPDEST DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x3832 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP PUSH1 0x1 ADD PUSH2 0x37F1 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xFC57D4DF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND SWAP5 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 DUP5 SWAP4 SWAP2 AND SWAP2 PUSH4 0xFC57D4DF SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x38A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x38B8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x38CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xFC57D4DF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 DUP2 AND SWAP5 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE SWAP1 MLOAD SWAP4 SWAP5 POP PUSH1 0x0 SWAP4 SWAP3 SWAP1 SWAP2 AND SWAP2 PUSH4 0xFC57D4DF SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3927 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x393B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3951 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP2 ISZERO DUP1 PUSH2 0x3960 JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0x3975 JUMPI PUSH1 0xD SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x3A6E SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x182DF0F5 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 0x39B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x39C4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x39DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x39E8 PUSH2 0x5A65 JUMP JUMPDEST PUSH2 0x39F0 PUSH2 0x5A65 JUMP JUMPDEST PUSH2 0x39F8 PUSH2 0x5A65 JUMP JUMPDEST PUSH2 0x3A20 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x6 SLOAD DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP11 DUP2 MSTORE POP PUSH2 0x567A JUMP JUMPDEST SWAP3 POP PUSH2 0x3A48 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP9 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP9 DUP2 MSTORE POP PUSH2 0x567A JUMP JUMPDEST SWAP2 POP PUSH2 0x3A54 DUP4 DUP4 PUSH2 0x56B9 JUMP JUMPDEST SWAP1 POP PUSH2 0x3A60 DUP2 DUP12 PUSH2 0x4F9C JUMP JUMPDEST PUSH1 0x0 SWAP10 POP SWAP8 POP POP POP POP POP POP POP POP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1A DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x2460 JUMPI INVALID JUMPDEST PUSH1 0x0 PUSH2 0x3A8D PUSH2 0x499A JUMP JUMPDEST PUSH2 0x3A9D JUMPI PUSH2 0x174C PUSH1 0x1 PUSH1 0x15 PUSH2 0x4A8D JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x3C8E JUMPI PUSH1 0x0 DUP7 DUP7 DUP4 DUP2 DUP2 LT PUSH2 0x3AB6 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x3AD4 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD ISZERO PUSH2 0x3B80 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x3B7B JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x12 DUP1 SLOAD SWAP2 DUP3 ADD DUP2 SSTORE PUSH32 0xBB8A6A4669BA250D26CD7A459ECA9D215F8307E33AEBE50379BC5A3617EC3444 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND DUP7 OR SWAP1 SSTORE SLOAD SWAP4 DUP4 MSTORE PUSH1 0x13 SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 PUSH1 0x0 NOT SWAP2 SWAP1 SWAP2 ADD SWAP1 SSTORE JUMPDEST PUSH2 0x3C85 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x3C85 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x12 SLOAD PUSH1 0x0 NOT ADD DUP2 LT ISZERO PUSH2 0x3C42 JUMPI PUSH1 0x12 DUP1 SLOAD PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x0 NOT DUP2 ADD SWAP1 DUP2 LT PUSH2 0x3BDE JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x12 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP3 POP DUP3 SWAP2 DUP5 SWAP1 DUP2 LT PUSH2 0x3C07 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP2 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND OR SWAP1 SSTORE SWAP3 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x13 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP2 SWAP1 SSTORE JUMPDEST PUSH1 0x12 DUP1 SLOAD SWAP1 PUSH2 0x3C55 SWAP1 PUSH1 0x0 NOT DUP4 ADD PUSH2 0x5A78 JUMP JUMPDEST POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP4 SWAP1 SSTORE PUSH1 0x11 SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x3AA0 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x171E JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x3CE4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5C58 PUSH1 0x3C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1B SLOAD PUSH1 0xFF AND PUSH2 0x3D3B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x72652D656E7465726564206163726F7373206173736574730000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1B DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x12 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x1A40 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1A22 JUMPI POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0xB8 SHL SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x3DFB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x1CD95A5E99481A5CC81C185D5CD959 PUSH1 0x8A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO DUP1 PUSH2 0x3E3C JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST ISZERO PUSH2 0x3E48 JUMPI PUSH1 0x9 PUSH2 0x2671 JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5FE3B567 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 0x3E81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3E95 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3EAB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x5FE3B567 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP3 DUP10 AND SWAP2 PUSH4 0x5FE3B567 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3EF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3F05 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3F1B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x3F32 JUMPI PUSH1 0x2 PUSH2 0x2671 JUMP JUMPDEST PUSH2 0x37AB DUP7 DUP5 DUP7 PUSH2 0x544D JUMP JUMPDEST PUSH1 0x12 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x2460 JUMPI INVALID JUMPDEST PUSH1 0x0 PUSH2 0x3F54 PUSH2 0x499A JUMP JUMPDEST PUSH2 0x3F64 JUMPI PUSH2 0x18D9 PUSH1 0x1 PUSH1 0x6 PUSH2 0x4A8D JUMP JUMPDEST PUSH1 0x17 SLOAD PUSH1 0xFF AND ISZERO ISZERO DUP3 ISZERO ISZERO EQ ISZERO PUSH2 0x3F7C JUMPI PUSH1 0x0 PUSH2 0x18D9 JUMP JUMPDEST PUSH1 0x17 DUP1 SLOAD DUP4 ISZERO ISZERO PUSH1 0xFF NOT SWAP1 SWAP2 AND DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD PUSH32 0xAA40EE94AF55250363B91641A0A615C47690148901505F89B01DAFAE03FFF281 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 PUSH1 0x0 PUSH2 0x144A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x4028 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x189BDC9C9BDDC81A5CC81C185D5CD959 PUSH1 0x82 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x404F JUMPI PUSH1 0x9 PUSH2 0x1DF9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP8 AND DUP4 MSTORE PUSH1 0x2 SWAP1 SWAP4 ADD SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x413F JUMPI CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EQ PUSH2 0x40D5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x39B2B73232B91036BAB9BA1031329031AA37B5B2B7 PUSH1 0x59 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x40E1 CALLER DUP6 PUSH2 0x54ED JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x15 DUP2 GT ISZERO PUSH2 0x40F1 JUMPI INVALID JUMPDEST EQ PUSH2 0x410A JUMPI DUP1 PUSH1 0x15 DUP2 GT ISZERO PUSH2 0x4102 JUMPI INVALID JUMPDEST SWAP2 POP POP PUSH2 0x2174 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP9 AND DUP4 MSTORE PUSH1 0x2 SWAP1 SWAP4 ADD SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x413D JUMPI INVALID JUMPDEST POP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xFC57D4DF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 DUP2 AND SWAP5 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE SWAP1 MLOAD SWAP3 SWAP1 SWAP2 AND SWAP2 PUSH4 0xFC57D4DF SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4190 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x41A4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x41BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x41C7 JUMPI PUSH1 0xD PUSH2 0x1DF9 JUMP JUMPDEST PUSH1 0x10 SLOAD PUSH1 0xFF AND DUP1 ISZERO PUSH2 0x41F2 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST ISZERO PUSH2 0x41FE JUMPI PUSH1 0x12 PUSH2 0x1DF9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x18 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x4310 JUMPI PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x47BD3718 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 0x4258 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x426C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4282 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x4293 DUP4 DUP8 PUSH2 0x4EBC JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x42A6 JUMPI INVALID JUMPDEST EQ PUSH2 0x42B8 JUMPI PUSH1 0xB SWAP5 POP POP POP POP POP PUSH2 0x2174 JUMP JUMPDEST DUP4 DUP2 LT PUSH2 0x430C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6D61726B657420626F72726F7720636170207265616368656400000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP POP JUMPDEST PUSH2 0x431A DUP6 DUP6 PUSH2 0x49F5 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x432A DUP7 DUP9 PUSH1 0x0 DUP9 PUSH2 0x4B02 JUMP JUMPDEST SWAP2 SWAP4 POP SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 POP DUP3 PUSH1 0x15 DUP2 GT ISZERO PUSH2 0x4340 JUMPI INVALID JUMPDEST EQ PUSH2 0x435B JUMPI DUP2 PUSH1 0x15 DUP2 GT ISZERO PUSH2 0x4351 JUMPI INVALID JUMPDEST SWAP4 POP POP POP POP PUSH2 0x2174 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x4368 JUMPI PUSH1 0x4 PUSH2 0x4351 JUMP JUMPDEST PUSH1 0x0 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 MSTORE DUP2 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x438E JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 POP DUP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x17 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x43CC PUSH2 0x499A JUMP JUMPDEST PUSH2 0x43E3 JUMPI PUSH2 0x43DC PUSH1 0x1 PUSH1 0x9 PUSH2 0x4A8D JUMP JUMPDEST SWAP1 POP PUSH2 0x144A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF AND PUSH2 0x4418 JUMPI PUSH2 0x4410 PUSH1 0x9 PUSH1 0xA PUSH2 0x4A8D JUMP JUMPDEST SWAP2 POP POP PUSH2 0x144A JUMP JUMPDEST PUSH2 0x4420 PUSH2 0x5A65 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE DUP4 DUP2 MSTORE PUSH2 0x4437 PUSH2 0x5A65 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH8 0xC7D713B49DA0000 DUP2 MSTORE PUSH2 0x4458 DUP2 DUP4 PUSH2 0x4AFB JUMP JUMPDEST ISZERO PUSH2 0x4473 JUMPI PUSH2 0x4469 PUSH1 0x6 PUSH1 0xB PUSH2 0x4A8D JUMP JUMPDEST SWAP4 POP POP POP POP PUSH2 0x144A JUMP JUMPDEST DUP5 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x44FC JUMPI POP PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xFC57D4DF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 DUP2 AND SWAP5 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE SWAP1 MLOAD SWAP3 SWAP1 SWAP2 AND SWAP2 PUSH4 0xFC57D4DF SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x44CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x44E2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x44F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO JUMPDEST ISZERO PUSH2 0x450D JUMPI PUSH2 0x4469 PUSH1 0xD PUSH1 0xC PUSH2 0x4A8D JUMP JUMPDEST PUSH1 0x1 DUP4 ADD DUP1 SLOAD SWAP1 DUP7 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE DUP1 DUP3 ADD DUP9 SWAP1 MSTORE SWAP1 MLOAD PUSH32 0x70483E6592CD5182D45AC970E05BC62CDCC90E9D8EF2C2DBE686CF383BCD7FC5 SWAP2 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 PUSH1 0x0 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0xA8 SHL SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x4591 DUP6 DUP6 DUP6 PUSH2 0x53A1 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x2163 JUMPI SWAP1 POP PUSH2 0x2174 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC37F68E2 CALLER PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4601 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4615 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x462B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 SWAP1 SWAP3 ADD MLOAD SWAP1 SWAP5 POP SWAP1 SWAP3 POP SWAP1 POP DUP3 ISZERO PUSH2 0x467E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5CC9 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x469B JUMPI PUSH2 0x4690 PUSH1 0xC PUSH1 0x3 PUSH2 0x4A8D JUMP JUMPDEST SWAP5 POP POP POP POP POP PUSH2 0x18AA JUMP JUMPDEST PUSH1 0x0 PUSH2 0x46A8 DUP8 CALLER DUP6 PUSH2 0x53A1 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x46C9 JUMPI PUSH2 0x46BD PUSH1 0xE PUSH1 0x4 DUP4 PUSH2 0x56F5 JUMP JUMPDEST SWAP6 POP POP POP POP POP POP PUSH2 0x18AA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE PUSH1 0x2 DUP2 ADD SWAP1 SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x4708 JUMPI PUSH1 0x0 SWAP7 POP POP POP POP POP POP POP PUSH2 0x18AA JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 DUP3 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE PUSH1 0x8 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD DUP4 MLOAD DUP2 DUP5 MUL DUP2 ADD DUP5 ADD SWAP1 SWAP5 MSTORE DUP1 DUP5 MSTORE PUSH1 0x60 SWAP4 SWAP3 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x477A JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x475C JUMPI JUMPDEST POP POP DUP4 MLOAD SWAP4 SWAP5 POP DUP4 SWAP3 POP PUSH1 0x0 SWAP2 POP POP JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x47CF JUMPI DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x47A8 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x47C7 JUMPI DUP1 SWAP2 POP PUSH2 0x47CF JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x478A JUMP JUMPDEST POP DUP2 DUP2 LT PUSH2 0x47D9 JUMPI INVALID JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP2 SWAP1 PUSH1 0x0 NOT DUP2 ADD SWAP1 DUP2 LT PUSH2 0x47FA JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x4824 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE DUP1 SLOAD PUSH2 0x485D DUP3 PUSH1 0x0 NOT DUP4 ADD PUSH2 0x5A78 JUMP JUMPDEST POP DUP1 SLOAD PUSH2 0x4936 JUMPI CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xC SLOAD PUSH1 0x0 NOT ADD DUP2 LT ISZERO PUSH2 0x48FC JUMPI PUSH1 0xC DUP1 SLOAD PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x0 NOT DUP2 ADD SWAP1 DUP2 LT PUSH2 0x4898 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0xC DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP3 POP DUP3 SWAP2 DUP5 SWAP1 DUP2 LT PUSH2 0x48C1 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP2 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND OR SWAP1 SSTORE SWAP3 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0xD SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP2 SWAP1 SSTORE JUMPDEST PUSH1 0xC DUP1 SLOAD SWAP1 PUSH2 0x490F SWAP1 PUSH1 0x0 NOT DUP4 ADD PUSH2 0x5A78 JUMP JUMPDEST POP POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP4 SWAP1 SSTORE PUSH1 0xB SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND DUP2 MSTORE CALLER PUSH1 0x20 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0xE699A64C18B07AC5B7301AA273F36A2287239EB9501D81950672794AFBA29A0D SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x0 SWAP13 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ DUP1 ISZERO PUSH2 0x49BE JUMPI POP PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0xA8 SHL SWAP1 DIV PUSH1 0xFF AND JUMPDEST DUP1 PUSH2 0x49F0 JUMPI POP CALLER PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 EQ DUP1 ISZERO PUSH2 0x49F0 JUMPI POP PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x1A SLOAD DUP2 LT ISZERO PUSH2 0x24FC JUMPI PUSH1 0x1A DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x4A0F JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 KECCAK256 ADD SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x1CDC2C5D PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP7 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 PUSH4 0xE6E162E8 SWAP3 PUSH1 0x44 DUP1 DUP3 ADD SWAP4 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4A69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4A7D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 POP PUSH2 0x49F8 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x45B96FE442630264581B197E84BBADA861235052C5A1AADFFF9EA4E40A969AA0 DUP4 PUSH1 0x15 DUP2 GT ISZERO PUSH2 0x4ABC JUMPI INVALID JUMPDEST DUP4 PUSH1 0x1B DUP2 GT ISZERO PUSH2 0x4AC8 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 DUP3 PUSH1 0x15 DUP2 GT ISZERO PUSH2 0x2174 JUMPI INVALID JUMPDEST MLOAD SWAP1 MLOAD GT ISZERO SWAP1 JUMP JUMPDEST MLOAD SWAP1 MLOAD LT SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x4B0F PUSH2 0x5A9C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP3 MLOAD DUP2 DUP6 MUL DUP2 ADD DUP6 ADD SWAP1 SWAP4 MSTORE DUP1 DUP4 MSTORE PUSH1 0x60 SWAP4 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x4B77 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x4B59 JUMPI JUMPDEST POP SWAP4 SWAP5 POP PUSH1 0x0 SWAP4 POP POP POP POP JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x4DFB JUMPI PUSH1 0x0 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x4B9A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC37F68E2 DUP14 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4BFA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4C0E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x4C24 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 DUP1 DUP5 ADD MLOAD PUSH1 0x60 SWAP5 DUP6 ADD MLOAD PUSH1 0x80 DUP12 ADD MSTORE SWAP4 DUP10 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP2 DUP8 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 POP DUP4 ISZERO PUSH2 0x4C69 JUMPI POP PUSH1 0xF SWAP7 POP PUSH1 0x0 SWAP6 POP DUP6 SWAP5 POP PUSH2 0x1D6D SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x9 DUP5 MSTORE DUP6 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD DUP5 MSTORE PUSH1 0xC0 DUP11 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP4 MLOAD DUP1 DUP4 ADD DUP6 MSTORE PUSH1 0x80 DUP11 ADD MLOAD DUP2 MSTORE PUSH1 0xE0 DUP11 ADD MSTORE PUSH1 0x4 DUP1 SLOAD DUP6 MLOAD PUSH4 0xFC57D4DF PUSH1 0xE0 SHL DUP2 MSTORE SWAP2 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE SWAP4 MLOAD SWAP3 AND SWAP3 PUSH4 0xFC57D4DF SWAP3 PUSH1 0x24 DUP1 DUP4 ADD SWAP4 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4CE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4CFD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4D13 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0xA0 DUP7 ADD DUP2 SWAP1 MSTORE PUSH2 0x4D36 JUMPI POP PUSH1 0xD SWAP7 POP PUSH1 0x0 SWAP6 POP DUP6 SWAP5 POP PUSH2 0x1D6D SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0xA0 DUP7 ADD MLOAD DUP2 MSTORE PUSH2 0x100 DUP7 ADD MSTORE PUSH1 0xC0 DUP6 ADD MLOAD PUSH1 0xE0 DUP7 ADD MLOAD PUSH2 0x4D70 SWAP2 PUSH2 0x4D65 SWAP2 PUSH2 0x567A JUMP JUMPDEST DUP7 PUSH2 0x100 ADD MLOAD PUSH2 0x567A JUMP JUMPDEST PUSH2 0x120 DUP7 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP7 ADD MLOAD DUP7 MLOAD PUSH2 0x4D8A SWAP3 SWAP2 SWAP1 PUSH2 0x575B JUMP JUMPDEST DUP6 MSTORE PUSH2 0x100 DUP6 ADD MLOAD PUSH1 0x60 DUP7 ADD MLOAD PUSH1 0x20 DUP8 ADD MLOAD PUSH2 0x4DA7 SWAP3 SWAP2 SWAP1 PUSH2 0x575B JUMP JUMPDEST PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 DUP2 AND SWAP1 DUP13 AND EQ ISZERO PUSH2 0x4DF2 JUMPI PUSH2 0x4DD4 DUP6 PUSH2 0x120 ADD MLOAD DUP12 DUP8 PUSH1 0x20 ADD MLOAD PUSH2 0x575B JUMP JUMPDEST PUSH1 0x20 DUP7 ADD DUP2 SWAP1 MSTORE PUSH2 0x100 DUP7 ADD MLOAD PUSH2 0x4DEC SWAP2 DUP12 SWAP1 PUSH2 0x575B JUMP JUMPDEST PUSH1 0x20 DUP7 ADD MSTORE JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x4B83 JUMP JUMPDEST POP PUSH1 0x20 DUP4 ADD MLOAD DUP4 MLOAD GT ISZERO PUSH2 0x4E21 JUMPI POP POP PUSH1 0x20 DUP2 ADD MLOAD SWAP1 MLOAD PUSH1 0x0 SWAP5 POP SUB SWAP2 POP DUP3 SWAP1 POP PUSH2 0x1D6D JUMP JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH1 0x0 SWAP5 POP DUP5 SWAP4 POP SUB SWAP1 POP PUSH2 0x1D6D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2174 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x11 DUP2 MSTORE PUSH1 0x20 ADD PUSH17 0x6164646974696F6E206F766572666C6F77 PUSH1 0x78 SHL DUP2 MSTORE POP PUSH2 0x5783 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x4E80 DUP8 DUP8 PUSH2 0x4EBC JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4E93 JUMPI INVALID JUMPDEST EQ PUSH2 0x4EA4 JUMPI POP SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH2 0x3A6E JUMP JUMPDEST PUSH2 0x4EAE DUP2 DUP7 PUSH2 0x581E JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 DUP4 ADD DUP5 DUP2 LT PUSH2 0x4ED4 JUMPI PUSH1 0x0 SWAP3 POP SWAP1 POP PUSH2 0x4EDE JUMP JUMPDEST POP PUSH1 0x2 SWAP2 POP PUSH1 0x0 SWAP1 POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x1A SLOAD DUP2 LT ISZERO PUSH2 0x24FC JUMPI PUSH1 0x1A DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x4EFF JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 KECCAK256 ADD SLOAD PUSH1 0x40 DUP1 MLOAD PUSH3 0xE48B0F PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP7 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 PUSH4 0x1C9161E0 SWAP3 PUSH1 0x44 DUP1 DUP3 ADD SWAP4 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4F58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4F6C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 POP PUSH2 0x4EE8 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x4F8F DUP5 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x4B02 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4FA6 PUSH2 0x5A65 JUMP JUMPDEST PUSH2 0x4FB0 DUP5 DUP5 PUSH2 0x5841 JUMP JUMPDEST SWAP1 POP PUSH2 0x1721 DUP2 PUSH2 0x5862 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x4FC8 PUSH2 0x5A65 JUMP JUMPDEST PUSH2 0x4FD2 DUP7 DUP7 PUSH2 0x5871 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4FE5 JUMPI INVALID JUMPDEST EQ PUSH2 0x4FF6 JUMPI POP SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH2 0x4EDE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5001 DUP3 PUSH2 0x5862 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5018 PUSH2 0x499A JUMP JUMPDEST PUSH2 0x5028 JUMPI PUSH2 0x18D9 PUSH1 0x1 PUSH1 0x17 PUSH2 0x4A8D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x5055 JUMPI PUSH2 0x18D9 PUSH1 0xA PUSH1 0x16 PUSH2 0x4A8D JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFE9C44AE 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 0x508E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x50A2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x50B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x510B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6D61726B6572206D6574686F642072657475726E65642066616C736500000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5FE3B567 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 0x514E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5162 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5178 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x51BF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x35 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5D23 PUSH1 0x35 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xAC784DDC 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 0x51FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x520E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5224 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x5294 JUMPI DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6F307DC3 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 0x5263 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5277 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x528D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x5297 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP2 SWAP3 POP AND ISZERO PUSH2 0x52CE JUMPI PUSH2 0x52C6 PUSH1 0xA PUSH1 0x16 PUSH2 0x4A8D JUMP JUMPDEST SWAP2 POP POP PUSH2 0x18AA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x1 DUP1 DUP3 MSTORE PUSH1 0x0 PUSH1 0x20 DUP1 DUP5 ADD DUP3 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 DUP2 AND DUP1 DUP6 MSTORE PUSH1 0x9 DUP5 MSTORE DUP8 DUP6 KECCAK256 SWAP7 MLOAD DUP8 SLOAD PUSH1 0xFF NOT AND SWAP1 ISZERO ISZERO OR DUP8 SSTORE SWAP2 MLOAD SWAP6 DUP6 ADD SWAP6 SWAP1 SWAP6 SSTORE PUSH1 0xA DUP1 SLOAD SWAP5 DUP6 ADD SWAP1 SSTORE PUSH32 0xC65A7BB8D6351C1CF70C95A316CC6A92839C986682D98BC35F958F4883F9D2A8 SWAP1 SWAP4 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 DUP2 AND DUP6 OR SWAP1 SWAP2 SSTORE SWAP4 DUP7 AND DUP3 MSTORE PUSH1 0xF DUP2 MSTORE SWAP1 DUP5 SWAP1 KECCAK256 DUP1 SLOAD SWAP1 SWAP4 AND DUP3 OR SWAP1 SWAP3 SSTORE DUP3 MLOAD SWAP1 DUP2 MSTORE SWAP2 MLOAD PUSH32 0xCF583BB0C569EB967F806B11601C4CB93C10310485C67ADD5F8362C2F212321F SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x0 PUSH2 0x2174 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x53C8 JUMPI PUSH1 0x9 PUSH2 0x1DF9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP8 AND DUP4 MSTORE PUSH1 0x2 SWAP1 SWAP4 ADD SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x5400 JUMPI PUSH1 0x0 PUSH2 0x1DF9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x5410 DUP6 DUP8 DUP7 PUSH1 0x0 PUSH2 0x4B02 JUMP JUMPDEST SWAP2 SWAP4 POP SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 POP DUP3 PUSH1 0x15 DUP2 GT ISZERO PUSH2 0x5426 JUMPI INVALID JUMPDEST EQ PUSH2 0x5440 JUMPI DUP2 PUSH1 0x15 DUP2 GT ISZERO PUSH2 0x5437 JUMPI INVALID JUMPDEST SWAP3 POP POP POP PUSH2 0x2174 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x37AB JUMPI PUSH1 0x4 PUSH2 0x5437 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x1A SLOAD DUP2 LT ISZERO PUSH2 0x244D JUMPI PUSH1 0x1A DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x5467 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 KECCAK256 ADD SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x4E081C95 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP8 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP7 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 PUSH4 0x4E081C95 SWAP3 PUSH1 0x64 DUP1 DUP3 ADD SWAP4 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x54C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x54DD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 POP PUSH2 0x5450 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0xFF AND PUSH2 0x5518 JUMPI PUSH1 0x9 SWAP2 POP POP PUSH2 0x144A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 DUP3 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x1 EQ ISZERO PUSH2 0x554A JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x144A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 DUP5 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0xFF NOT SWAP1 SWAP2 AND DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x8 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP1 SLOAD SWAP2 DUP3 ADD DUP2 SSTORE DUP5 MSTORE DUP3 DUP5 KECCAK256 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP6 DUP11 AND SWAP6 SWAP1 SWAP6 OR SWAP1 SWAP5 SSTORE SWAP2 DUP2 MSTORE PUSH1 0xB SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x562B JUMPI PUSH1 0xC DUP1 SLOAD PUSH1 0x1 DUP1 DUP3 ADD DUP4 SSTORE PUSH32 0xDF6966C971051C3D54EC59162606531493A51404A002842F56009D7E5CF4A8C7 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SWAP5 OR SWAP1 SWAP4 SSTORE SWAP3 SLOAD PUSH1 0xD SWAP1 SWAP4 MSTORE KECCAK256 PUSH1 0x0 NOT SWAP1 SWAP2 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND DUP3 MSTORE DUP6 AND PUSH1 0x20 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x3AB23AB0D51CCCC0C3085AEC51F99228625AA1A922B3A8CA89A26B0F2027A1A5 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP PUSH1 0x0 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x5682 PUSH2 0x5A65 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH8 0xDE0B6B3A7640000 PUSH2 0x56A8 DUP7 PUSH1 0x0 ADD MLOAD DUP7 PUSH1 0x0 ADD MLOAD PUSH2 0x58D9 JUMP JUMPDEST DUP2 PUSH2 0x56AF JUMPI INVALID JUMPDEST DIV SWAP1 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x56C1 PUSH2 0x5A65 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x56EC PUSH2 0x56E5 DUP7 PUSH1 0x0 ADD MLOAD PUSH8 0xDE0B6B3A7640000 PUSH2 0x58D9 JUMP JUMPDEST DUP6 MLOAD PUSH2 0x591B JUMP JUMPDEST SWAP1 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x45B96FE442630264581B197E84BBADA861235052C5A1AADFFF9EA4E40A969AA0 DUP5 PUSH1 0x15 DUP2 GT ISZERO PUSH2 0x5724 JUMPI INVALID JUMPDEST DUP5 PUSH1 0x1B DUP2 GT ISZERO PUSH2 0x5730 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 DUP2 ADD DUP6 SWAP1 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 DUP4 PUSH1 0x15 DUP2 GT ISZERO PUSH2 0x1721 JUMPI INVALID JUMPDEST PUSH1 0x0 PUSH2 0x5765 PUSH2 0x5A65 JUMP JUMPDEST PUSH2 0x576F DUP6 DUP6 PUSH2 0x5841 JUMP JUMPDEST SWAP1 POP PUSH2 0x2170 PUSH2 0x577D DUP3 PUSH2 0x5862 JUMP JUMPDEST DUP5 PUSH2 0x4E3A JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 ADD DUP3 DUP6 DUP3 LT ISZERO PUSH2 0x5815 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x57DA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x57C2 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x5807 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 DUP4 GT PUSH2 0x5835 JUMPI POP PUSH1 0x0 SWAP1 POP DUP2 DUP4 SUB PUSH2 0x4EDE JUMP JUMPDEST POP PUSH1 0x3 SWAP1 POP PUSH1 0x0 PUSH2 0x4EDE JUMP JUMPDEST PUSH2 0x5849 PUSH2 0x5A65 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x56EC DUP6 PUSH1 0x0 ADD MLOAD DUP6 PUSH2 0x58D9 JUMP JUMPDEST MLOAD PUSH8 0xDE0B6B3A7640000 SWAP1 DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x587B PUSH2 0x5A65 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x588C DUP7 PUSH1 0x0 ADD MLOAD DUP7 PUSH2 0x594E JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x589F JUMPI INVALID JUMPDEST EQ PUSH2 0x58BE JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x4EDE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2174 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x17 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x6D756C7469706C69636174696F6E206F766572666C6F77000000000000000000 DUP2 MSTORE POP PUSH2 0x598D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2174 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xE DUP2 MSTORE PUSH1 0x20 ADD PUSH14 0x646976696465206279207A65726F PUSH1 0x90 SHL DUP2 MSTORE POP PUSH2 0x5A03 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH2 0x5961 JUMPI POP PUSH1 0x0 SWAP1 POP DUP1 PUSH2 0x4EDE JUMP JUMPDEST DUP4 DUP4 MUL DUP4 DUP6 DUP3 DUP2 PUSH2 0x596E JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x5982 JUMPI POP PUSH1 0x2 SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH2 0x4EDE JUMP JUMPDEST PUSH1 0x0 SWAP3 POP SWAP1 POP PUSH2 0x4EDE JUMP JUMPDEST PUSH1 0x0 DUP4 ISZERO DUP1 PUSH2 0x599A JUMPI POP DUP3 ISZERO JUMPDEST ISZERO PUSH2 0x59A7 JUMPI POP PUSH1 0x0 PUSH2 0x2174 JUMP JUMPDEST DUP4 DUP4 MUL DUP4 DUP6 DUP3 DUP2 PUSH2 0x59B4 JUMPI INVALID JUMPDEST DIV EQ DUP4 SWAP1 PUSH2 0x5815 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x57DA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x57C2 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x5A52 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x57DA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x57C2 JUMP JUMPDEST POP DUP3 DUP5 DUP2 PUSH2 0x5A5C JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP2 SLOAD DUP2 DUP4 SSTORE DUP2 DUP2 GT ISZERO PUSH2 0x24FC JUMPI PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 PUSH2 0x24FC SWAP2 DUP2 ADD SWAP1 DUP4 ADD PUSH2 0x5B06 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x140 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x5ADA PUSH2 0x5A65 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x5AE7 PUSH2 0x5A65 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x5AF4 PUSH2 0x5A65 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x5B01 PUSH2 0x5A65 JUMP JUMPDEST SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH2 0x1A48 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x5B20 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x5B0C JUMP JUMPDEST POP SWAP1 JUMP INVALID MSTORE PUSH6 0x776172647344 PUSH10 0x737472696275746F7220 PUSH4 0x6F6E7472 PUSH2 0x6374 KECCAK256 PUSH2 0x6C72 PUSH6 0x616479206164 PUSH5 0x656463616E PUSH15 0x6F742070617573652061206D61726B PUSH6 0x742074686174 KECCAK256 PUSH10 0x73206E6F74206C697374 PUSH6 0x6443616E206E PUSH16 0x74207265706179206D6F726520746861 PUSH15 0x2074686520746F74616C20626F7272 PUSH16 0x77436F6D7074726F6C6C65723A5F6166 PUSH21 0x65724E6F6E5265656E7472616E743A2063616C6C65 PUSH19 0x206E6F74206C6973746564206173206D61726B PUSH6 0x746F6E6C7920 PUSH17 0x6175736520677561726469616E20616E64 KECCAK256 PUSH2 0x646D PUSH10 0x6E2063616E2070617573 PUSH6 0x6F6E6C792061 PUSH5 0x6D696E2063 PUSH2 0x6E20 PUSH20 0x657420626F72726F772063617020677561726469 PUSH2 0x6E6F PUSH15 0x6C7920696D706C656D656E74617469 PUSH16 0x6E206D61792063616C6C205F6265636F PUSH14 0x65496D706C656D656E746174696F PUSH15 0x436F6D7074726F6C6C65723A5F6265 PUSH7 0x6F72654E6F6E52 PUSH6 0x656E7472616E PUSH21 0x3A2063616C6C6572206E6F74206C69737465642061 PUSH20 0x206D61726B65746F6E6C792061646D696E206F72 KECCAK256 PUSH3 0x6F7272 PUSH16 0x772063617020677561726469616E2063 PUSH2 0x6E20 PUSH20 0x657420626F72726F772063617073657869744D61 PUSH19 0x6B65743A206765744163636F756E74536E6170 PUSH20 0x686F74206661696C65646F6E6C792061646D696E KECCAK256 PUSH16 0x7220626F72726F772063617020677561 PUSH19 0x6469616E2063616E2073657420737570706C79 KECCAK256 PUSH4 0x61707343 PUSH2 0x6E6E PUSH16 0x7420737570706F72742061206D61726B PUSH6 0x742077697468 KECCAK256 PUSH2 0x2064 PUSH10 0x66666572656E7420436F PUSH14 0x7074726F6C6C65722E6F6E6C7920 PUSH22 0x6E6974726F6C6C65722061646D696E2063616E206368 PUSH2 0x6E67 PUSH6 0x20627261696E PUSH20 0xA265627A7A7231582035A49F711967E2D51921C4 0xBA 0xC LOG4 0xC0 PUSH31 0xDDA37B01175127A26CE1CEF35824A57D64736F6C6343000511003200000000 ","sourceMap":"533:63476:13:-;;;627:4:16;594:37;;-1:-1:-1;;;;;;;;594:37:16;;;-1:-1:-1;;;594:37:16;711:33;-1:-1:-1;;;711:33:16;;;533:63476:13;5:2:-1;;;;30:1;27;20:12;5:2;533:63476:13;;;;;;;"},"deployedBytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061048a5760003560e01c80636d154ea511610262578063bb82aa5e11610151578063d5333166116100ce578063e4028eee11610092578063e4028eee146111e1578063e6653f3d1461120d578063e875544614611215578063eabe7d911461121d578063ede4edd014611253578063f851a440146112795761048a565b8063d533316614611150578063da3d454c1461116f578063dce15449146111a5578063dcfbc0c7146111d1578063dd5cd22c146111d95761048a565b8063c8c9c97511610115578063c8c9c9751461101f578063c90c20b1146110dd578063d01f63f5146110e5578063d02f7351146110ed578063d251fefc146111335761048a565b8063bb82aa5e14610ece578063bdcdc25814610ed6578063c299823814610f12578063c488847b14610fb3578063c6c5b0dd146110025761048a565b8063929fe9a1116101df578063abfceffc116101a3578063abfceffc14610e6a578063ac0b0bb714610e90578063b0772d0b14610e98578063b095721014610ea0578063b9b5b15314610ea85761048a565b8063929fe9a114610d5a57806394543c1514610d88578063952adf5a14610dae5780639b19251a14610dcd578063aba35b9814610df35761048a565b80637dc0d1d0116102265780637dc0d1d014610cc4578063819605a814610ccc57806387f7630314610cf25780638e8f294b14610cfa5780638ebf636414610d3b5761048a565b80636d154ea514610be95780636d35bf9114610c0f578063731f0c2b14610c555780637515bafa14610c7b578063779b229414610c985761048a565b80633c94786f1161037e57806352d84d1e116102fb5780635f5af1aa116102bf5780635f5af1aa14610a7b5780635fc7e71e14610aa1578063607ef6c114610ae7578063632e514214610ba55780636a56947e14610bad5761048a565b806352d84d1e146109d457806355ee1fe1146109f15780635c77860514610a175780635d72de6214610a4d5780635ec88c7914610a555761048a565b80634e79238f116103425780634e79238f1461082d5780634ef4c3e1146108875780634fd42e17146108bd57806351a485e4146108da57806351dff989146109985761048a565b80633c94786f1461076f57806341c728b91461077757806347ef3b3b146107b35780634a584432146107ff5780634ada90af146108255761048a565b806324a3d6221161040c57806331ff47fa116103d057806331ff47fa1461069557806332abcdbe146106bb5780633605b51b14610713578063391957d71461071b5780633bcf7ec1146107415761048a565b806324a3d6221461064157806326782247146106495780632d70db78146106515780632f1069ba14610670578063317b0b77146106785761048a565b80631d504dc6116104535780631d504dc61461053f5780631ededc911461056757806321af4569146105a95780632259192a146105cd57806324008a62146106055761048a565b80627e3dd21461048f57806302c3bcbb146104ab5780630a755ec2146104e357806316dc15fe146104eb57806318c882a514610511575b600080fd5b610497611281565b604080519115158252519081900360200190f35b6104d1600480360360208110156104c157600080fd5b50356001600160a01b0316611286565b60408051918252519081900360200190f35b610497611298565b6104976004803603602081101561050157600080fd5b50356001600160a01b03166112a8565b6104976004803603604081101561052757600080fd5b506001600160a01b03813516906020013515156112bd565b6105656004803603602081101561055557600080fd5b50356001600160a01b0316611450565b005b610565600480360360a081101561057d57600080fd5b506001600160a01b038135811691602081013582169160408201351690606081013590608001356116ff565b6105b1611706565b604080516001600160a01b039092168252519081900360200190f35b6104d1600480360360808110156105e357600080fd5b506001600160a01b03813516906020810135906040810135906060013561171a565b6104d16004803603608081101561061b57600080fd5b506001600160a01b03813581169160208101358216916040820135169060600135611729565b6105b1611764565b6105b1611773565b6104976004803603602081101561066757600080fd5b50351515611782565b6104976118af565b6104d16004803603602081101561068e57600080fd5b50356118bf565b6105b1600480360360208110156106ab57600080fd5b50356001600160a01b03166119cd565b6106c36119e8565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156106ff5781810151838201526020016106e7565b505050509050019250505060405180910390f35b6106c3611a4b565b6105656004803603602081101561073157600080fd5b50356001600160a01b0316611aab565b6104976004803603604081101561075757600080fd5b506001600160a01b0381351690602001351515611b5b565b610497611ce9565b6105656004803603608081101561078d57600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135611cf9565b610565600480360360c08110156107c957600080fd5b506001600160a01b0381358116916020810135821691604082013581169160608101359091169060808101359060a00135611d20565b6104d16004803603602081101561081557600080fd5b50356001600160a01b0316611d25565b6104d1611d37565b6108696004803603608081101561084357600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135611d3d565b60408051938452602084019290925282820152519081900360600190f35b6104d16004803603606081101561089d57600080fd5b506001600160a01b03813581169160208101359091169060400135611d77565b6104d1600480360360208110156108d357600080fd5b503561217b565b610565600480360360408110156108f057600080fd5b810190602081018135600160201b81111561090a57600080fd5b82018360208201111561091c57600080fd5b803590602001918460208302840111600160201b8311171561093d57600080fd5b919390929091602081019035600160201b81111561095a57600080fd5b82018360208201111561096c57600080fd5b803590602001918460208302840111600160201b8311171561098d57600080fd5b50909250905061226a565b610565600480360360808110156109ae57600080fd5b506001600160a01b038135811691602081013590911690604081013590606001356123f9565b6105b1600480360360208110156109ea57600080fd5b5035612453565b6104d160048036036020811015610a0757600080fd5b50356001600160a01b031661247a565b61056560048036036060811015610a2d57600080fd5b506001600160a01b038135811691602081013590911690604001356124fc565b610565612501565b61086960048036036020811015610a6b57600080fd5b50356001600160a01b0316612574565b6104d160048036036020811015610a9157600080fd5b50356001600160a01b03166125a9565b6104d1600480360360a0811015610ab757600080fd5b506001600160a01b0381358116916020810135821691604082013581169160608101359091169060800135612628565b61056560048036036040811015610afd57600080fd5b810190602081018135600160201b811115610b1757600080fd5b820183602082011115610b2957600080fd5b803590602001918460208302840111600160201b83111715610b4a57600080fd5b919390929091602081019035600160201b811115610b6757600080fd5b820183602082011115610b7957600080fd5b803590602001918460208302840111600160201b83111715610b9a57600080fd5b5090925090506127df565b610565612965565b61056560048036036080811015610bc357600080fd5b506001600160a01b038135811691602081013582169160408201351690606001356129c2565b61049760048036036020811015610bff57600080fd5b50356001600160a01b03166129c7565b610565600480360360a0811015610c2557600080fd5b506001600160a01b03813581169160208101358216916040820135811691606081013590911690608001356116ff565b61049760048036036020811015610c6b57600080fd5b50356001600160a01b03166129dc565b6105b160048036036020811015610c9157600080fd5b50356129f1565b6104d160048036036040811015610cae57600080fd5b506001600160a01b0381351690602001356129fe565b6105b1612b71565b6104d160048036036020811015610ce257600080fd5b50356001600160a01b0316612b80565b610497612eda565b610d2060048036036020811015610d1057600080fd5b50356001600160a01b0316612eea565b60408051921515835260208301919091528051918290030190f35b61049760048036036020811015610d5157600080fd5b50351515612f09565b61049760048036036040811015610d7057600080fd5b506001600160a01b0381358116916020013516613035565b61049760048036036020811015610d9e57600080fd5b50356001600160a01b0316613068565b6104d160048036036020811015610dc457600080fd5b503515156131da565b61049760048036036020811015610de357600080fd5b50356001600160a01b0316613257565b6104d160048036036060811015610e0957600080fd5b813515159190810190604081016020820135600160201b811115610e2c57600080fd5b820183602082011115610e3e57600080fd5b803590602001918460018302840111600160201b83111715610e5f57600080fd5b91935091503561326c565b6106c360048036036020811015610e8057600080fd5b50356001600160a01b031661344b565b6104976134d4565b6106c36134e4565b610497613544565b6104d160048036036020811015610ebe57600080fd5b50356001600160a01b031661354d565b6105b161371e565b6104d160048036036080811015610eec57600080fd5b506001600160a01b0381358116916020810135821691604082013516906060013561372d565b6106c360048036036020811015610f2857600080fd5b810190602081018135600160201b811115610f4257600080fd5b820183602082011115610f5457600080fd5b803590602001918460208302840111600160201b83111715610f7557600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506137b7945050505050565b610fe960048036036060811015610fc957600080fd5b506001600160a01b0381358116916020810135909116906040013561384e565b6040805192835260208301919091528051918290030190f35b6105b16004803603602081101561101857600080fd5b5035613a76565b6104d16004803603604081101561103557600080fd5b810190602081018135600160201b81111561104f57600080fd5b82018360208201111561106157600080fd5b803590602001918460208302840111600160201b8311171561108257600080fd5b919390929091602081019035600160201b81111561109f57600080fd5b8201836020820111156110b157600080fd5b803590602001918460208302840111600160201b831117156110d257600080fd5b509092509050613a83565b610565613c96565b6106c3613d47565b6104d1600480360360a081101561110357600080fd5b506001600160a01b0381358116916020810135821691604082013581169160608101359091169060800135613da7565b6105b16004803603602081101561114957600080fd5b5035613f3d565b6104d16004803603602081101561116657600080fd5b50351515613f4a565b6104d16004803603606081101561118557600080fd5b506001600160a01b03813581169160208101359091169060400135613fc7565b6105b1600480360360408110156111bb57600080fd5b506001600160a01b038135169060200135614375565b6105b16143aa565b6104976143b9565b6104d1600480360360408110156111f757600080fd5b506001600160a01b0381351690602001356143c2565b61049761456d565b6104d161457d565b6104d16004803603606081101561123357600080fd5b506001600160a01b03813581169160208101359091169060400135614583565b6104d16004803603602081101561126957600080fd5b50356001600160a01b03166145a0565b6105b161498b565b600181565b60196020526000908152604090205481565b600154600160a81b900460ff1681565b600e6020526000908152604090205460ff1681565b6001600160a01b03821660009081526009602052604081205460ff166113145760405162461bcd60e51b8152600401808060200182810382526028815260200180615b4e6028913960400191505060405180910390fd5b6014546001600160a01b0316331480611330575061133061499a565b61136b5760405162461bcd60e51b8152600401808060200182810382526027815260200180615bd96027913960400191505060405180910390fd5b61137361499a565b8061138057506001821515145b6113ca576040805162461bcd60e51b81526020600482015260166024820152756f6e6c792061646d696e2063616e20756e706175736560501b604482015290519081900360640190fd5b6001600160a01b038316600081815260166020908152604091829020805486151560ff199091168117909155825193845283830152606090830181905260069083015265426f72726f7760d01b6080830152517f71aec636243f9709bb0007ae15e9afb8150ab01716d75fd7573be5cc096e03b09181900360a00190a150805b92915050565b3373a731585ab05fc9f83555cf9bff8f58ee94e18f851480156114d45750806001600160a01b0316632f1069ba6040518163ffffffff1660e01b815260040160206040518083038186803b1580156114a757600080fd5b505afa1580156114bb573d6000803e3d6000fd5b505050506040513d60208110156114d157600080fd5b50515b806115b75750806001600160a01b031663f851a4406040518163ffffffff1660e01b815260040160206040518083038186803b15801561151357600080fd5b505afa158015611527573d6000803e3d6000fd5b505050506040513d602081101561153d57600080fd5b50516001600160a01b0316331480156115b75750806001600160a01b0316630a755ec26040518163ffffffff1660e01b815260040160206040518083038186803b15801561158a57600080fd5b505afa15801561159e573d6000803e3d6000fd5b505050506040513d60208110156115b457600080fd5b50515b6115f25760405162461bcd60e51b8152600401808060200182810382526027815260200180615d586027913960400191505060405180910390fd5b6000816001600160a01b031663c1e803346040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561162f57600080fd5b505af1158015611643573d6000803e3d6000fd5b505050506040513d602081101561165957600080fd5b5051905080156116a8576040805162461bcd60e51b815260206004820152601560248201527418da185b99d9481b9bdd08185d5d1a1bdc9a5e9959605a1b604482015290519081900360640190fd5b816001600160a01b0316635d72de626040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156116e357600080fd5b505af11580156116f7573d6000803e3d6000fd5b505050505050565b5050505050565b60175461010090046001600160a01b031681565b6000805b90505b949350505050565b6001600160a01b03841660009081526009602052604081205460ff166117535760095b9050611721565b61175d85846149f5565b600061171e565b6014546001600160a01b031681565b6001546001600160a01b031681565b6014546000906001600160a01b03163314806117a157506117a161499a565b6117dc5760405162461bcd60e51b8152600401808060200182810382526027815260200180615bd96027913960400191505060405180910390fd5b6117e461499a565b806117f157506001821515145b61183b576040805162461bcd60e51b81526020600482015260166024820152756f6e6c792061646d696e2063616e20756e706175736560501b604482015290519081900360640190fd5b60148054831515600160b81b810260ff60b81b1990921691909117909155604080516020810192909252808252600582820152645365697a6560d81b6060830152517fef159d9a32b2472e32b098f954f3ce62d232939f1c207070b584df1814de2de09181900360800190a150805b919050565b600154600160a01b900460ff1681565b60006118c961499a565b6118e0576118d960016007614a8d565b90506118aa565b6118e8615a65565b5060408051602081019091528281526118ff615a65565b50604080516020810190915266b1a2bc2ec50000815261191f8282614af3565b156119395761193060056008614a8d565b925050506118aa565b611941615a65565b506040805160208101909152670c7d713b49da000081526119628184614afb565b1561197d5761197360056008614a8d565b93505050506118aa565b6005805490869055604080518281526020810188905281517f3b9670cf975d26958e754b57098eaa2ac914d8d2a31b83257997b9f346110fd9929181900390910190a160005b9695505050505050565b600f602052600090815260409020546001600160a01b031681565b6060600c805480602002602001604051908101604052809291908181526020018280548015611a4057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611a22575b505050505090505b90565b6060601a805480602002602001604051908101604052809291908181526020018280548015611a40576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611a22575050505050905090565b611ab361499a565b611aee5760405162461bcd60e51b8152600401808060200182810382526026815260200180615c006026913960400191505060405180910390fd5b601780546001600160a01b03838116610100818102610100600160a81b03198516179094556040805194909304919091168084526020840191909152815190927feda98690e518e9a05f8ec6837663e188211b2da8f4906648b323f2c1d4434e2992908290030190a15050565b6001600160a01b03821660009081526009602052604081205460ff16611bb25760405162461bcd60e51b8152600401808060200182810382526028815260200180615b4e6028913960400191505060405180910390fd5b6014546001600160a01b0316331480611bce5750611bce61499a565b611c095760405162461bcd60e51b8152600401808060200182810382526027815260200180615bd96027913960400191505060405180910390fd5b611c1161499a565b80611c1e57506001821515145b611c68576040805162461bcd60e51b81526020600482015260166024820152756f6e6c792061646d696e2063616e20756e706175736560501b604482015290519081900360640190fd5b6001600160a01b038316600081815260156020908152604091829020805486151560ff199091168117909155825193845283830152606090830181905260049083015263135a5b9d60e21b6080830152517f71aec636243f9709bb0007ae15e9afb8150ab01716d75fd7573be5cc096e03b09181900360a00190a150919050565b601454600160a01b900460ff1681565b50506001600160a01b03166000908152600e60205260409020805460ff1916600117905550565b6116f7565b60186020526000908152604090205481565b60065481565b600080600080600080611d528a8a8a8a614b02565b925092509250826015811115611d6457fe5b95509093509150505b9450945094915050565b6001600160a01b03831660009081526015602052604081205460ff1615611dd6576040805162461bcd60e51b815260206004820152600e60248201526d1b5a5b9d081a5cc81c185d5cd95960921b604482015290519081900360640190fd5b6001600160a01b03841660009081526009602052604090205460ff16611e005760095b9050612174565b60105460ff168015611e2b57506001600160a01b03831660009081526011602052604090205460ff16155b15611e37576012611df9565b6001600160a01b0384166000908152601960205260409020548015612163576000856001600160a01b0316633b1d21a26040518163ffffffff1660e01b815260040160206040518083038186803b158015611e9157600080fd5b505afa158015611ea5573d6000803e3d6000fd5b505050506040513d6020811015611ebb57600080fd5b5051604080516308f7a6e360e31b815290519192506000916001600160a01b038916916347bd3718916004808301926020929190829003018186803b158015611f0357600080fd5b505afa158015611f17573d6000803e3d6000fd5b505050506040513d6020811015611f2d57600080fd5b505160408051638f840ddd60e01b815290519192506000916001600160a01b038a1691638f840ddd916004808301926020929190829003018186803b158015611f7557600080fd5b505afa158015611f89573d6000803e3d6000fd5b505050506040513d6020811015611f9f57600080fd5b50516040805163dc028ab160e01b815290519192506000916001600160a01b038b169163dc028ab1916004808301926020929190829003018186803b158015611fe757600080fd5b505afa158015611ffb573d6000803e3d6000fd5b505050506040513d602081101561201157600080fd5b5051604080516361feacff60e01b815290519192506000916001600160a01b038c16916361feacff916004808301926020929190829003018186803b15801561205957600080fd5b505afa15801561206d573d6000803e3d6000fd5b505050506040513d602081101561208357600080fd5b505190506000806120a787876120a261209c8989614e3a565b87614e3a565b614e70565b909250905060008260038111156120ba57fe5b146120d057600b98505050505050505050612174565b60006120dc828c614ebc565b909350905060008360038111156120ef57fe5b1461210657600b9950505050505050505050612174565b88811061215a576040805162461bcd60e51b815260206004820152601960248201527f6d61726b657420737570706c7920636170207265616368656400000000000000604482015290519081900360640190fd5b50505050505050505b61216d8585614ee5565b60005b9150505b9392505050565b600061218561499a565b612195576118d96001600d614a8d565b61219d615a65565b5060408051602081019091528281526121b4615a65565b506040805160208101909152670de0b6b3a764000081526121d58282614afb565b156121e6576119306007600e614a8d565b6121ee615a65565b5060408051602081019091526714d1120d7b160000815261220f8184614afb565b15612220576119736007600e614a8d565b6006805490869055604080518281526020810188905281517faeba5a6c40a8ac138134bff1aaa65debf25971188a58804bad717f82f0ec1316929181900390910190a160006119c3565b61227261499a565b8061228c575060175461010090046001600160a01b031633145b6122c75760405162461bcd60e51b8152600401808060200182810382526035815260200180615cee6035913960400191505060405180910390fd5b828181158015906122d757508082145b612318576040805162461bcd60e51b815260206004820152600d60248201526c1a5b9d985b1a59081a5b9c1d5d609a1b604482015290519081900360640190fd5b60005b828110156123f05784848281811061232f57fe5b905060200201356019600089898581811061234657fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000208190555086868281811061238657fe5b905060200201356001600160a01b03166001600160a01b03167f9e0ad9cee10bdf36b7fbd38910c0bdff0f275ace679b45b922381c2723d676f88686848181106123cc57fe5b905060200201356040518082815260200191505060405180910390a260010161231b565b50505050505050565b801580156124075750600082115b1561244d576040805162461bcd60e51b815260206004820152601160248201527072656465656d546f6b656e73207a65726f60781b604482015290519081900360640190fd5b50505050565b600a818154811061246057fe5b6000918252602090912001546001600160a01b0316905081565b600061248461499a565b612494576118d960016013614a8d565b600480546001600160a01b038481166001600160a01b0319831681179093556040805191909216808252602082019390935281517fd52b2b9b7e9ee655fcb95d2e5b9e0c9f69e7ef2b8e9d2d0ea78402d576d22e22929181900390910190a160009392505050565b505050565b6002546001600160a01b0316331461254a5760405162461bcd60e51b8152600401808060200182810382526032815260200180615c266032913960400191505060405180910390fd5b601b54610100900460ff1661257257601b805461ff001960ff19909116600117166101001790555b565b60008060008060008061258b876000806000614b02565b92509250925082601581111561259d57fe5b97919650945092505050565b60006125b361499a565b6125c3576118d960016018614a8d565b601480546001600160a01b038481166001600160a01b0319831617928390556040805192821680845293909116602083015280517f0613b6ee6a04f0d09f390e4d9318894b9f6ac7fd83897cd8d18896ba579c401e9281900390910190a16000612174565b6001600160a01b03851660009081526009602052604081205460ff16158061266957506001600160a01b03851660009081526009602052604090205460ff16155b156126785760095b90506127d6565b6000866001600160a01b03166395dd9193856040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156126d057600080fd5b505afa1580156126e4573d6000803e3d6000fd5b505050506040513d60208110156126fa57600080fd5b5051905061270787613068565b15612750578281101561274b5760405162461bcd60e51b8152600401808060200182810382526028815260200180615b766028913960400191505060405180910390fd5b6127d0565b60008061275c86614f7c565b9193509091506000905082601581111561277257fe5b1461278d5781601581111561278357fe5b93505050506127d6565b80612799576003612783565b60006127b5604051806020016040528060055481525085614f9c565b9050808611156127cc5760119450505050506127d6565b5050505b60009150505b95945050505050565b6127e761499a565b80612801575060175461010090046001600160a01b031633145b61283c5760405162461bcd60e51b8152600401808060200182810382526035815260200180615c946035913960400191505060405180910390fd5b8281811580159061284c57508082145b61288d576040805162461bcd60e51b815260206004820152600d60248201526c1a5b9d985b1a59081a5b9c1d5d609a1b604482015290519081900360640190fd5b60005b828110156123f0578484828181106128a457fe5b90506020020135601860008989858181106128bb57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020819055508686828181106128fb57fe5b905060200201356001600160a01b03166001600160a01b03167f6f1951b2aad10f3fc81b86d91105b413a5b3f847a34bbc5ce1904201b14438f686868481811061294157fe5b905060200201356040518082815260200191505060405180910390a2600101612890565b3360009081526009602052604090205460ff166129b35760405162461bcd60e51b815260040180806020018281038252603b815260200180615b9e603b913960400191505060405180910390fd5b601b805460ff19166001179055565b61244d565b60166020526000908152604090205460ff1681565b60156020526000908152604090205460ff1681565b600c818154811061246057fe5b60008073a731585ab05fc9f83555cf9bff8f58ee94e18f856001600160a01b031663fdb25fb16040518163ffffffff1660e01b815260040160206040518083038186803b158015612a4e57600080fd5b505afa158015612a62573d6000803e3d6000fd5b505050506040513d6020811015612a7857600080fd5b505190508015612b6757600480546040805163fc57d4df60e01b81526001600160a01b038881169482019490945290516000939092169163fc57d4df91602480820192602092909190829003018186803b158015612ad557600080fd5b505afa158015612ae9573d6000803e3d6000fd5b505050506040513d6020811015612aff57600080fd5b5051905080612b1357600d9250505061144a565b600080612b2e60405180602001604052808581525087614fbb565b90925090506000826003811115612b4157fe5b14612b5457600b5b94505050505061144a565b83811015612b63576013612b49565b5050505b6000949350505050565b6004546001600160a01b031681565b6000612b8a61499a565b612b9a576118d960016019614a8d565b6001600160a01b03821660009081526009602052604090205460ff16612bc6576118d96009601a614a8d565b6000826001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015612c0157600080fd5b505afa158015612c15573d6000803e3d6000fd5b505050506040513d6020811015612c2b57600080fd5b50511115612c3f576118d96015601b614a8d565b6001600160a01b0382166000908152600960209081526040808320805460ff1916815560010192909255600a805483518184028101840190945280845260609392830182828015612cb957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612c9b575b5050835193945083925060009150505b82811015612d0e57856001600160a01b0316848281518110612ce757fe5b60200260200101516001600160a01b03161415612d0657809150612d0e565b600101612cc9565b50818110612d1857fe5b600a80546000198101908110612d2a57fe5b600091825260209091200154600a80546001600160a01b039092169183908110612d5057fe5b600091825260209091200180546001600160a01b0319166001600160a01b0392909216919091179055600a805490612d8c906000198301615a78565b506000600f6000876001600160a01b031663ac784ddc6040518163ffffffff1660e01b815260040160206040518083038186803b158015612dcc57600080fd5b505afa158015612de0573d6000803e3d6000fd5b505050506040513d6020811015612df657600080fd5b5051612e6657876001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015612e3557600080fd5b505afa158015612e49573d6000803e3d6000fd5b505050506040513d6020811015612e5f57600080fd5b5051612e69565b60005b6001600160a01b039081168252602080830193909352604091820160002080546001600160a01b0319169482169490941790935580519288168352517f302feb03efd5741df80efe7f97f5d93d74d46a542a3d312d0faae64fa1f3e0e99281900390910190a1600095945050505050565b601454600160b01b900460ff1681565b6009602052600090815260409020805460019091015460ff9091169082565b6014546000906001600160a01b0316331480612f285750612f2861499a565b612f635760405162461bcd60e51b8152600401808060200182810382526027815260200180615bd96027913960400191505060405180910390fd5b612f6b61499a565b80612f7857506001821515145b612fc2576040805162461bcd60e51b81526020600482015260166024820152756f6e6c792061646d696e2063616e20756e706175736560501b604482015290519081900360640190fd5b60148054831515600160b01b810260ff60b01b1990921691909117909155604080516020810192909252808252600882820152672a3930b739b332b960c11b6060830152517fef159d9a32b2472e32b098f954f3ce62d232939f1c207070b584df1814de2de09181900360800190a15090565b6001600160a01b038082166000908152600960209081526040808320938616835260029093019052205460ff1692915050565b6001600160a01b0381166000908152600960205260408120600101541580156130ae57506001600160a01b03821660009081526016602052604090205460ff1615156001145b801561144a57506131ca613191836001600160a01b031663173b99046040518163ffffffff1660e01b815260040160206040518083038186803b1580156130f457600080fd5b505afa158015613108573d6000803e3d6000fd5b505050506040513d602081101561311e57600080fd5b505160408051638d02d9a160e01b815290516001600160a01b03871691638d02d9a1916004808301926020929190829003018186803b15801561316057600080fd5b505afa158015613174573d6000803e3d6000fd5b505050506040513d602081101561318a57600080fd5b5051614e3a565b836001600160a01b031663dbfe7c196040518163ffffffff1660e01b815260040160206040518083038186803b15801561316057600080fd5b670de0b6b3a76400001492915050565b60006131e461499a565b6131f4576118d960016014614a8d565b60105460ff161515821515141561320c5760006118d9565b6010805483151560ff19909116811790915560408051918252517f84c7d948374a180eddab35d27d2f7a94167a1ff4e79467f1e89c061984190a1e9181900360200190a1600061144a565b60116020526000908152604090205460ff1681565b600061327661499a565b6132865761174c60016017614a8d565b60018054600160a01b60ff60a01b19821681179092550460ff1660008661335757604051638754e4fd60e01b81526020600482019081526024820187905273a731585ab05fc9f83555cf9bff8f58ee94e18f8591638754e4fd9189918991908190604401848480828437600081840152601f19601f8201169050808301925050509350505050602060405180830381600087803b15801561332657600080fd5b505af115801561333a573d6000803e3d6000fd5b505050506040513d602081101561335057600080fd5b5051613403565b604051639b86a9b560e01b81526020600482019081526024820187905273a731585ab05fc9f83555cf9bff8f58ee94e18f8591639b86a9b59189918991908190604401848480828437600081840152601f19601f8201169050808301925050509350505050602060405180830381600087803b1580156133d657600080fd5b505af11580156133ea573d6000803e3d6000fd5b505050506040513d602081101561340057600080fd5b50515b6001805460ff60a01b1916600160a01b85151502179055905060006134278261500e565b90508015613435578061343f565b61343f82866143c2565b98975050505050505050565b60608060086000846001600160a01b03166001600160a01b031681526020019081526020016000208054806020026020016040519081016040528092919081815260200182805480156134c757602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116134a9575b5093979650505050505050565b601454600160b81b900460ff1681565b6060600a805480602002602001604051908101604052809291908181526020018280548015611a40576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611a22575050505050905090565b60105460ff1681565b600061355761499a565b613567576118d960016002614a8d565b816001600160a01b031663abc6d72d6040518163ffffffff1660e01b815260040160206040518083038186803b1580156135a057600080fd5b505afa1580156135b4573d6000803e3d6000fd5b505050506040513d60208110156135ca57600080fd5b505161361d576040805162461bcd60e51b815260206004820152601c60248201527f6d61726b6572206d6574686f642072657475726e65642066616c736500000000604482015290519081900360640190fd5b60005b601a5481101561369557601a818154811061363757fe5b6000918252602090912001546001600160a01b038481169116141561368d5760405162461bcd60e51b8152600401808060200182810382526029815260200180615b256029913960400191505060405180910390fd5b600101613620565b50601a80546001810182556000919091527f057c384a7d1c54f3a1b2e5e67b2617b8224fdfd1ea7234eea573a6ff665ff63e0180546001600160a01b0384166001600160a01b0319909116811790915560408051918252517f98ef1187fb6fd2bc85f8996489877eb2b5428f9e9bdfc068c9ad6c2ea82eacc79181900360200190a1600061144a565b6002546001600160a01b031681565b601454600090600160b01b900460ff1615613784576040805162461bcd60e51b81526020600482015260126024820152711d1c985b9cd9995c881a5cc81c185d5cd95960721b604482015290519081900360640190fd5b60006137918686856153a1565b905080156137a0579050611721565b6137ab86868661544d565b60009695505050505050565b60606000825190506060816040519080825280602002602001820160405280156137eb578160200160208202803883390190505b50905060005b8281101561384657600085828151811061380757fe5b6020026020010151905061381b81336154ed565b601581111561382657fe5b83838151811061383257fe5b6020908102919091010152506001016137f1565b509392505050565b600480546040805163fc57d4df60e01b81526001600160a01b038781169482019490945290516000938493849391169163fc57d4df91602480820192602092909190829003018186803b1580156138a457600080fd5b505afa1580156138b8573d6000803e3d6000fd5b505050506040513d60208110156138ce57600080fd5b5051600480546040805163fc57d4df60e01b81526001600160a01b038a8116948201949094529051939450600093929091169163fc57d4df91602480820192602092909190829003018186803b15801561392757600080fd5b505afa15801561393b573d6000803e3d6000fd5b505050506040513d602081101561395157600080fd5b50519050811580613960575080155b1561397557600d935060009250613a6e915050565b6000866001600160a01b031663182df0f56040518163ffffffff1660e01b815260040160206040518083038186803b1580156139b057600080fd5b505afa1580156139c4573d6000803e3d6000fd5b505050506040513d60208110156139da57600080fd5b5051905060006139e8615a65565b6139f0615a65565b6139f8615a65565b613a20604051806020016040528060065481525060405180602001604052808a81525061567a565b9250613a4860405180602001604052808881525060405180602001604052808881525061567a565b9150613a5483836156b9565b9050613a60818b614f9c565b600099509750505050505050505b935093915050565b601a818154811061246057fe5b6000613a8d61499a565b613a9d5761174c60016015614a8d565b60005b84811015613c8e576000868683818110613ab657fe5b905060200201356001600160a01b03169050848483818110613ad457fe5b9050602002013515613b80576001600160a01b03811660009081526011602052604090205460ff16613b7b576001600160a01b0381166000818152601160209081526040808320805460ff191660019081179091556012805491820181557fbb8a6a4669ba250d26cd7a459eca9d215f8307e33aebe50379bc5a3617ec344490910180546001600160a01b0319168617905554938352601390915290206000199190910190555b613c85565b6001600160a01b03811660009081526011602052604090205460ff1615613c85576001600160a01b03811660009081526013602052604090205460125460001901811015613c425760128054600091906000198101908110613bde57fe5b600091825260209091200154601280546001600160a01b039092169250829184908110613c0757fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559290911681526013909152604090208190555b6012805490613c55906000198301615a78565b50506001600160a01b038116600090815260136020908152604080832083905560119091529020805460ff191690555b50600101613aa0565b50600061171e565b3360009081526009602052604090205460ff16613ce45760405162461bcd60e51b815260040180806020018281038252603c815260200180615c58603c913960400191505060405180910390fd5b601b5460ff16613d3b576040805162461bcd60e51b815260206004820152601860248201527f72652d656e7465726564206163726f7373206173736574730000000000000000604482015290519081900360640190fd5b601b805460ff19169055565b60606012805480602002602001604051908101604052809291908181526020018280548015611a40576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611a22575050505050905090565b601454600090600160b81b900460ff1615613dfb576040805162461bcd60e51b815260206004820152600f60248201526e1cd95a5e99481a5cc81c185d5cd959608a1b604482015290519081900360640190fd5b6001600160a01b03861660009081526009602052604090205460ff161580613e3c57506001600160a01b03851660009081526009602052604090205460ff16155b15613e48576009612671565b846001600160a01b0316635fe3b5676040518163ffffffff1660e01b815260040160206040518083038186803b158015613e8157600080fd5b505afa158015613e95573d6000803e3d6000fd5b505050506040513d6020811015613eab57600080fd5b505160408051635fe3b56760e01b815290516001600160a01b0392831692891691635fe3b567916004808301926020929190829003018186803b158015613ef157600080fd5b505afa158015613f05573d6000803e3d6000fd5b505050506040513d6020811015613f1b57600080fd5b50516001600160a01b031614613f32576002612671565b6137ab86848661544d565b6012818154811061246057fe5b6000613f5461499a565b613f64576118d960016006614a8d565b60175460ff1615158215151415613f7c5760006118d9565b6017805483151560ff19909116811790915560408051918252517faa40ee94af55250363b91641a0a615c47690148901505f89b01dafae03fff2819181900360200190a1600061144a565b6001600160a01b03831660009081526016602052604081205460ff1615614028576040805162461bcd60e51b815260206004820152601060248201526f189bdc9c9bddc81a5cc81c185d5cd95960821b604482015290519081900360640190fd5b6001600160a01b03841660009081526009602052604090205460ff1661404f576009611df9565b6001600160a01b038085166000908152600960209081526040808320938716835260029093019052205460ff1661413f57336001600160a01b038516146140d5576040805162461bcd60e51b815260206004820152601560248201527439b2b73232b91036bab9ba1031329031aa37b5b2b760591b604482015290519081900360640190fd5b60006140e133856154ed565b905060008160158111156140f157fe5b1461410a5780601581111561410257fe5b915050612174565b6001600160a01b038086166000908152600960209081526040808320938816835260029093019052205460ff1661413d57fe5b505b600480546040805163fc57d4df60e01b81526001600160a01b03888116948201949094529051929091169163fc57d4df91602480820192602092909190829003018186803b15801561419057600080fd5b505afa1580156141a4573d6000803e3d6000fd5b505050506040513d60208110156141ba57600080fd5b50516141c757600d611df9565b60105460ff1680156141f257506001600160a01b03831660009081526011602052604090205460ff16155b156141fe576012611df9565b6001600160a01b0384166000908152601860205260409020548015614310576000856001600160a01b03166347bd37186040518163ffffffff1660e01b815260040160206040518083038186803b15801561425857600080fd5b505afa15801561426c573d6000803e3d6000fd5b505050506040513d602081101561428257600080fd5b505190506000806142938387614ebc565b909250905060008260038111156142a657fe5b146142b857600b945050505050612174565b83811061430c576040805162461bcd60e51b815260206004820152601960248201527f6d61726b657420626f72726f7720636170207265616368656400000000000000604482015290519081900360640190fd5b5050505b61431a85856149f5565b60008061432a8688600088614b02565b9193509091506000905082601581111561434057fe5b1461435b5781601581111561435157fe5b9350505050612174565b8015614368576004614351565b6000979650505050505050565b6008602052816000526040600020818154811061438e57fe5b6000918252602090912001546001600160a01b03169150829050565b6003546001600160a01b031681565b60175460ff1681565b60006143cc61499a565b6143e3576143dc60016009614a8d565b905061144a565b6001600160a01b0383166000908152600960205260409020805460ff16614418576144106009600a614a8d565b91505061144a565b614420615a65565b506040805160208101909152838152614437615a65565b506040805160208101909152670c7d713b49da000081526144588183614afb565b15614473576144696006600b614a8d565b935050505061144a565b84158015906144fc5750600480546040805163fc57d4df60e01b81526001600160a01b038a8116948201949094529051929091169163fc57d4df91602480820192602092909190829003018186803b1580156144ce57600080fd5b505afa1580156144e2573d6000803e3d6000fd5b505050506040513d60208110156144f857600080fd5b5051155b1561450d57614469600d600c614a8d565b60018301805490869055604080516001600160a01b03891681526020810183905280820188905290517f70483e6592cd5182d45ac970e05bc62cdcc90e9d8ef2c2dbe686cf383bcd7fc59181900360600190a16000979650505050505050565b601454600160a81b900460ff1681565b60055481565b6000806145918585856153a1565b90508015612163579050612174565b6000808290506000806000836001600160a01b031663c37f68e2336040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060806040518083038186803b15801561460157600080fd5b505afa158015614615573d6000803e3d6000fd5b505050506040513d608081101561462b57600080fd5b50805160208201516040909201519094509092509050821561467e5760405162461bcd60e51b8152600401808060200182810382526025815260200180615cc96025913960400191505060405180910390fd5b801561469b57614690600c6003614a8d565b9450505050506118aa565b60006146a88733856153a1565b905080156146c9576146bd600e6004836156f5565b955050505050506118aa565b6001600160a01b0385166000908152600960209081526040808320338452600281019092529091205460ff1661470857600096505050505050506118aa565b3360009081526002820160209081526040808320805460ff19169055600882529182902080548351818402810184019094528084526060939283018282801561477a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161475c575b5050835193945083925060009150505b828110156147cf57896001600160a01b03168482815181106147a857fe5b60200260200101516001600160a01b031614156147c7578091506147cf565b60010161478a565b508181106147d957fe5b3360009081526008602052604090208054819060001981019081106147fa57fe5b9060005260206000200160009054906101000a90046001600160a01b031681838154811061482457fe5b600091825260209091200180546001600160a01b0319166001600160a01b0392909216919091179055805461485d826000198301615a78565b50805461493657336000908152600d6020526040902054600c54600019018110156148fc57600c805460009190600019810190811061489857fe5b600091825260209091200154600c80546001600160a01b0390921692508291849081106148c157fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055929091168152600d909152604090208190555b600c80549061490f906000198301615a78565b5050336000908152600d60209081526040808320839055600b9091529020805460ff191690555b604080516001600160a01b038c16815233602082015281517fe699a64c18b07ac5b7301aa273f36a2287239eb9501d81950672794afba29a0d929181900390910190a160009c9b505050505050505050505050565b6000546001600160a01b031681565b600080546001600160a01b0316331480156149be5750600154600160a81b900460ff165b806149f057503373a731585ab05fc9f83555cf9bff8f58ee94e18f851480156149f05750600154600160a01b900460ff165b905090565b60005b601a548110156124fc57601a8181548110614a0f57fe5b600091825260208220015460408051631cdc2c5d60e31b81526001600160a01b03878116600483015286811660248301529151919092169263e6e162e8926044808201939182900301818387803b158015614a6957600080fd5b505af1158015614a7d573d6000803e3d6000fd5b5050600190920191506149f89050565b60007f45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0836015811115614abc57fe5b83601b811115614ac857fe5b604080519283526020830191909152600082820152519081900360600190a182601581111561217457fe5b519051111590565b5190511090565b6000806000614b0f615a9c565b6001600160a01b03881660009081526008602090815260408083208054825181850281018501909352808352606093830182828015614b7757602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311614b59575b50939450600093505050505b8151811015614dfb576000828281518110614b9a57fe5b60200260200101519050806001600160a01b031663c37f68e28d6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060806040518083038186803b158015614bfa57600080fd5b505afa158015614c0e573d6000803e3d6000fd5b505050506040513d6080811015614c2457600080fd5b508051602082015160408084015160609485015160808b0152938901939093529187019190915293508315614c695750600f965060009550859450611d6d9350505050565b60408051602080820183526001600160a01b0380851660008181526009845285902060010154845260c08a01939093528351808301855260808a0151815260e08a015260048054855163fc57d4df60e01b815291820194909452935192169263fc57d4df9260248083019392829003018186803b158015614ce957600080fd5b505afa158015614cfd573d6000803e3d6000fd5b505050506040513d6020811015614d1357600080fd5b505160a08601819052614d365750600d965060009550859450611d6d9350505050565b604080516020810190915260a0860151815261010086015260c085015160e0860151614d7091614d659161567a565b86610100015161567a565b610120860181905260408601518651614d8a92919061575b565b855261010085015160608601516020870151614da792919061575b565b60208601526001600160a01b03818116908c161415614df257614dd48561012001518b876020015161575b565b60208601819052610100860151614dec918b9061575b565b60208601525b50600101614b83565b50602083015183511115614e215750506020810151905160009450039150829050611d6d565b5050805160209091015160009450849350039050611d6d565b60006121748383604051806040016040528060118152602001706164646974696f6e206f766572666c6f7760781b815250615783565b600080600080614e808787614ebc565b90925090506000826003811115614e9357fe5b14614ea45750915060009050613a6e565b614eae818661581e565b935093505050935093915050565b600080838301848110614ed457600092509050614ede565b5060029150600090505b9250929050565b60005b601a548110156124fc57601a8181548110614eff57fe5b60009182526020822001546040805162e48b0f60e51b81526001600160a01b038781166004830152868116602483015291519190921692631c9161e0926044808201939182900301818387803b158015614f5857600080fd5b505af1158015614f6c573d6000803e3d6000fd5b505060019092019150614ee89050565b6000806000614f8f846000806000614b02565b9250925092509193909250565b6000614fa6615a65565b614fb08484615841565b905061172181615862565b6000806000614fc8615a65565b614fd28686615871565b90925090506000826003811115614fe557fe5b14614ff65750915060009050614ede565b600061500182615862565b9350935050509250929050565b600061501861499a565b615028576118d960016017614a8d565b6001600160a01b03821660009081526009602052604090205460ff1615615055576118d9600a6016614a8d565b816001600160a01b031663fe9c44ae6040518163ffffffff1660e01b815260040160206040518083038186803b15801561508e57600080fd5b505afa1580156150a2573d6000803e3d6000fd5b505050506040513d60208110156150b857600080fd5b505161510b576040805162461bcd60e51b815260206004820152601c60248201527f6d61726b6572206d6574686f642072657475726e65642066616c736500000000604482015290519081900360640190fd5b306001600160a01b0316826001600160a01b0316635fe3b5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561514e57600080fd5b505afa158015615162573d6000803e3d6000fd5b505050506040513d602081101561517857600080fd5b50516001600160a01b0316146151bf5760405162461bcd60e51b8152600401808060200182810382526035815260200180615d236035913960400191505060405180910390fd5b6000826001600160a01b031663ac784ddc6040518163ffffffff1660e01b815260040160206040518083038186803b1580156151fa57600080fd5b505afa15801561520e573d6000803e3d6000fd5b505050506040513d602081101561522457600080fd5b505161529457826001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561526357600080fd5b505afa158015615277573d6000803e3d6000fd5b505050506040513d602081101561528d57600080fd5b5051615297565b60005b6001600160a01b038082166000908152600f602052604090205491925016156152ce576152c6600a6016614a8d565b9150506118aa565b6040805180820182526001808252600060208084018281526001600160a01b03898116808552600984528785209651875460ff1916901515178755915195850195909555600a805494850190557fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a890930180546001600160a01b031990811685179091559386168252600f81529084902080549093168217909255825190815291517fcf583bb0c569eb967f806b11601c4cb93c10310485c67add5f8362c2f212321f9281900390910190a16000612174565b6001600160a01b03831660009081526009602052604081205460ff166153c8576009611df9565b6001600160a01b038085166000908152600960209081526040808320938716835260029093019052205460ff16615400576000611df9565b6000806154108587866000614b02565b9193509091506000905082601581111561542657fe5b146154405781601581111561543757fe5b92505050612174565b80156137ab576004615437565b60005b601a5481101561244d57601a818154811061546757fe5b600091825260208220015460408051634e081c9560e01b81526001600160a01b0388811660048301528781166024830152868116604483015291519190921692634e081c95926064808201939182900301818387803b1580156154c957600080fd5b505af11580156154dd573d6000803e3d6000fd5b5050600190920191506154509050565b6001600160a01b0382166000908152600960205260408120805460ff1661551857600991505061144a565b6001600160a01b038316600090815260028201602052604090205460ff1615156001141561554a57600091505061144a565b6001600160a01b03838116600081815260028401602090815260408083208054600160ff199091168117909155600883528184208054918201815584528284200180546001600160a01b031916958a1695909517909455918152600b909152205460ff1661562b57600c8054600180820183557fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c790910180546001600160a01b0319166001600160a01b0387169081179091556000908152600b60209081526040808320805460ff19169094179093559254600d9093522060001990910190555b604080516001600160a01b0380871682528516602082015281517f3ab23ab0d51cccc0c3085aec51f99228625aa1a922b3a8ca89a26b0f2027a1a5929181900390910190a15060009392505050565b615682615a65565b6040518060200160405280670de0b6b3a76400006156a8866000015186600001516158d9565b816156af57fe5b0490529392505050565b6156c1615a65565b60405180602001604052806156ec6156e58660000151670de0b6b3a76400006158d9565b855161591b565b90529392505050565b60007f45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa084601581111561572457fe5b84601b81111561573057fe5b604080519283526020830191909152818101859052519081900360600190a183601581111561172157fe5b6000615765615a65565b61576f8585615841565b905061217061577d82615862565b84614e3a565b600083830182858210156158155760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156157da5781810151838201526020016157c2565b50505050905090810190601f1680156158075780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50949350505050565b600080838311615835575060009050818303614ede565b50600390506000614ede565b615849615a65565b60405180602001604052806156ec8560000151856158d9565b51670de0b6b3a7640000900490565b600061587b615a65565b60008061588c86600001518661594e565b9092509050600082600381111561589f57fe5b146158be57506040805160208101909152600081529092509050614ede565b60408051602081019091529081526000969095509350505050565b600061217483836040518060400160405280601781526020017f6d756c7469706c69636174696f6e206f766572666c6f7700000000000000000081525061598d565b600061217483836040518060400160405280600e81526020016d646976696465206279207a65726f60901b815250615a03565b6000808361596157506000905080614ede565b8383028385828161596e57fe5b041461598257506002915060009050614ede565b600092509050614ede565b600083158061599a575082155b156159a757506000612174565b838302838582816159b457fe5b041483906158155760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156157da5781810151838201526020016157c2565b60008183615a525760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156157da5781810151838201526020016157c2565b50828481615a5c57fe5b04949350505050565b6040518060200160405280600081525090565b8154818355818111156124fc576000838152602090206124fc918101908301615b06565b604051806101400160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001615ada615a65565b8152602001615ae7615a65565b8152602001615af4615a65565b8152602001615b01615a65565b905290565b611a4891905b80821115615b205760008155600101615b0c565b509056fe526577617264734469737472696275746f7220636f6e747261637420616c726561647920616464656463616e6e6f742070617573652061206d61726b65742074686174206973206e6f74206c697374656443616e206e6f74207265706179206d6f7265207468616e2074686520746f74616c20626f72726f77436f6d7074726f6c6c65723a5f61667465724e6f6e5265656e7472616e743a2063616c6c6572206e6f74206c6973746564206173206d61726b65746f6e6c7920706175736520677561726469616e20616e642061646d696e2063616e2070617573656f6e6c792061646d696e2063616e2073657420626f72726f772063617020677561726469616e6f6e6c7920696d706c656d656e746174696f6e206d61792063616c6c205f6265636f6d65496d706c656d656e746174696f6e436f6d7074726f6c6c65723a5f6265666f72654e6f6e5265656e7472616e743a2063616c6c6572206e6f74206c6973746564206173206d61726b65746f6e6c792061646d696e206f7220626f72726f772063617020677561726469616e2063616e2073657420626f72726f772063617073657869744d61726b65743a206765744163636f756e74536e617073686f74206661696c65646f6e6c792061646d696e206f7220626f72726f772063617020677561726469616e2063616e2073657420737570706c79206361707343616e6e6f7420737570706f72742061206d61726b65742077697468206120646966666572656e7420436f6d7074726f6c6c65722e6f6e6c7920756e6974726f6c6c65722061646d696e2063616e206368616e676520627261696e73a265627a7a7231582035a49f711967e2d51921c4ba0ca4c07edda37b01175127a26ce1cef35824a57d64736f6c63430005110032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x48A JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6D154EA5 GT PUSH2 0x262 JUMPI DUP1 PUSH4 0xBB82AA5E GT PUSH2 0x151 JUMPI DUP1 PUSH4 0xD5333166 GT PUSH2 0xCE JUMPI DUP1 PUSH4 0xE4028EEE GT PUSH2 0x92 JUMPI DUP1 PUSH4 0xE4028EEE EQ PUSH2 0x11E1 JUMPI DUP1 PUSH4 0xE6653F3D EQ PUSH2 0x120D JUMPI DUP1 PUSH4 0xE8755446 EQ PUSH2 0x1215 JUMPI DUP1 PUSH4 0xEABE7D91 EQ PUSH2 0x121D JUMPI DUP1 PUSH4 0xEDE4EDD0 EQ PUSH2 0x1253 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x1279 JUMPI PUSH2 0x48A JUMP JUMPDEST DUP1 PUSH4 0xD5333166 EQ PUSH2 0x1150 JUMPI DUP1 PUSH4 0xDA3D454C EQ PUSH2 0x116F JUMPI DUP1 PUSH4 0xDCE15449 EQ PUSH2 0x11A5 JUMPI DUP1 PUSH4 0xDCFBC0C7 EQ PUSH2 0x11D1 JUMPI DUP1 PUSH4 0xDD5CD22C EQ PUSH2 0x11D9 JUMPI PUSH2 0x48A JUMP JUMPDEST DUP1 PUSH4 0xC8C9C975 GT PUSH2 0x115 JUMPI DUP1 PUSH4 0xC8C9C975 EQ PUSH2 0x101F JUMPI DUP1 PUSH4 0xC90C20B1 EQ PUSH2 0x10DD JUMPI DUP1 PUSH4 0xD01F63F5 EQ PUSH2 0x10E5 JUMPI DUP1 PUSH4 0xD02F7351 EQ PUSH2 0x10ED JUMPI DUP1 PUSH4 0xD251FEFC EQ PUSH2 0x1133 JUMPI PUSH2 0x48A JUMP JUMPDEST DUP1 PUSH4 0xBB82AA5E EQ PUSH2 0xECE JUMPI DUP1 PUSH4 0xBDCDC258 EQ PUSH2 0xED6 JUMPI DUP1 PUSH4 0xC2998238 EQ PUSH2 0xF12 JUMPI DUP1 PUSH4 0xC488847B EQ PUSH2 0xFB3 JUMPI DUP1 PUSH4 0xC6C5B0DD EQ PUSH2 0x1002 JUMPI PUSH2 0x48A JUMP JUMPDEST DUP1 PUSH4 0x929FE9A1 GT PUSH2 0x1DF JUMPI DUP1 PUSH4 0xABFCEFFC GT PUSH2 0x1A3 JUMPI DUP1 PUSH4 0xABFCEFFC EQ PUSH2 0xE6A JUMPI DUP1 PUSH4 0xAC0B0BB7 EQ PUSH2 0xE90 JUMPI DUP1 PUSH4 0xB0772D0B EQ PUSH2 0xE98 JUMPI DUP1 PUSH4 0xB0957210 EQ PUSH2 0xEA0 JUMPI DUP1 PUSH4 0xB9B5B153 EQ PUSH2 0xEA8 JUMPI PUSH2 0x48A JUMP JUMPDEST DUP1 PUSH4 0x929FE9A1 EQ PUSH2 0xD5A JUMPI DUP1 PUSH4 0x94543C15 EQ PUSH2 0xD88 JUMPI DUP1 PUSH4 0x952ADF5A EQ PUSH2 0xDAE JUMPI DUP1 PUSH4 0x9B19251A EQ PUSH2 0xDCD JUMPI DUP1 PUSH4 0xABA35B98 EQ PUSH2 0xDF3 JUMPI PUSH2 0x48A JUMP JUMPDEST DUP1 PUSH4 0x7DC0D1D0 GT PUSH2 0x226 JUMPI DUP1 PUSH4 0x7DC0D1D0 EQ PUSH2 0xCC4 JUMPI DUP1 PUSH4 0x819605A8 EQ PUSH2 0xCCC JUMPI DUP1 PUSH4 0x87F76303 EQ PUSH2 0xCF2 JUMPI DUP1 PUSH4 0x8E8F294B EQ PUSH2 0xCFA JUMPI DUP1 PUSH4 0x8EBF6364 EQ PUSH2 0xD3B JUMPI PUSH2 0x48A JUMP JUMPDEST DUP1 PUSH4 0x6D154EA5 EQ PUSH2 0xBE9 JUMPI DUP1 PUSH4 0x6D35BF91 EQ PUSH2 0xC0F JUMPI DUP1 PUSH4 0x731F0C2B EQ PUSH2 0xC55 JUMPI DUP1 PUSH4 0x7515BAFA EQ PUSH2 0xC7B JUMPI DUP1 PUSH4 0x779B2294 EQ PUSH2 0xC98 JUMPI PUSH2 0x48A JUMP JUMPDEST DUP1 PUSH4 0x3C94786F GT PUSH2 0x37E JUMPI DUP1 PUSH4 0x52D84D1E GT PUSH2 0x2FB JUMPI DUP1 PUSH4 0x5F5AF1AA GT PUSH2 0x2BF JUMPI DUP1 PUSH4 0x5F5AF1AA EQ PUSH2 0xA7B JUMPI DUP1 PUSH4 0x5FC7E71E EQ PUSH2 0xAA1 JUMPI DUP1 PUSH4 0x607EF6C1 EQ PUSH2 0xAE7 JUMPI DUP1 PUSH4 0x632E5142 EQ PUSH2 0xBA5 JUMPI DUP1 PUSH4 0x6A56947E EQ PUSH2 0xBAD JUMPI PUSH2 0x48A JUMP JUMPDEST DUP1 PUSH4 0x52D84D1E EQ PUSH2 0x9D4 JUMPI DUP1 PUSH4 0x55EE1FE1 EQ PUSH2 0x9F1 JUMPI DUP1 PUSH4 0x5C778605 EQ PUSH2 0xA17 JUMPI DUP1 PUSH4 0x5D72DE62 EQ PUSH2 0xA4D JUMPI DUP1 PUSH4 0x5EC88C79 EQ PUSH2 0xA55 JUMPI PUSH2 0x48A JUMP JUMPDEST DUP1 PUSH4 0x4E79238F GT PUSH2 0x342 JUMPI DUP1 PUSH4 0x4E79238F EQ PUSH2 0x82D JUMPI DUP1 PUSH4 0x4EF4C3E1 EQ PUSH2 0x887 JUMPI DUP1 PUSH4 0x4FD42E17 EQ PUSH2 0x8BD JUMPI DUP1 PUSH4 0x51A485E4 EQ PUSH2 0x8DA JUMPI DUP1 PUSH4 0x51DFF989 EQ PUSH2 0x998 JUMPI PUSH2 0x48A JUMP JUMPDEST DUP1 PUSH4 0x3C94786F EQ PUSH2 0x76F JUMPI DUP1 PUSH4 0x41C728B9 EQ PUSH2 0x777 JUMPI DUP1 PUSH4 0x47EF3B3B EQ PUSH2 0x7B3 JUMPI DUP1 PUSH4 0x4A584432 EQ PUSH2 0x7FF JUMPI DUP1 PUSH4 0x4ADA90AF EQ PUSH2 0x825 JUMPI PUSH2 0x48A JUMP JUMPDEST DUP1 PUSH4 0x24A3D622 GT PUSH2 0x40C JUMPI DUP1 PUSH4 0x31FF47FA GT PUSH2 0x3D0 JUMPI DUP1 PUSH4 0x31FF47FA EQ PUSH2 0x695 JUMPI DUP1 PUSH4 0x32ABCDBE EQ PUSH2 0x6BB JUMPI DUP1 PUSH4 0x3605B51B EQ PUSH2 0x713 JUMPI DUP1 PUSH4 0x391957D7 EQ PUSH2 0x71B JUMPI DUP1 PUSH4 0x3BCF7EC1 EQ PUSH2 0x741 JUMPI PUSH2 0x48A JUMP JUMPDEST DUP1 PUSH4 0x24A3D622 EQ PUSH2 0x641 JUMPI DUP1 PUSH4 0x26782247 EQ PUSH2 0x649 JUMPI DUP1 PUSH4 0x2D70DB78 EQ PUSH2 0x651 JUMPI DUP1 PUSH4 0x2F1069BA EQ PUSH2 0x670 JUMPI DUP1 PUSH4 0x317B0B77 EQ PUSH2 0x678 JUMPI PUSH2 0x48A JUMP JUMPDEST DUP1 PUSH4 0x1D504DC6 GT PUSH2 0x453 JUMPI DUP1 PUSH4 0x1D504DC6 EQ PUSH2 0x53F JUMPI DUP1 PUSH4 0x1EDEDC91 EQ PUSH2 0x567 JUMPI DUP1 PUSH4 0x21AF4569 EQ PUSH2 0x5A9 JUMPI DUP1 PUSH4 0x2259192A EQ PUSH2 0x5CD JUMPI DUP1 PUSH4 0x24008A62 EQ PUSH2 0x605 JUMPI PUSH2 0x48A JUMP JUMPDEST DUP1 PUSH3 0x7E3DD2 EQ PUSH2 0x48F JUMPI DUP1 PUSH4 0x2C3BCBB EQ PUSH2 0x4AB JUMPI DUP1 PUSH4 0xA755EC2 EQ PUSH2 0x4E3 JUMPI DUP1 PUSH4 0x16DC15FE EQ PUSH2 0x4EB JUMPI DUP1 PUSH4 0x18C882A5 EQ PUSH2 0x511 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x497 PUSH2 0x1281 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x4D1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1286 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x497 PUSH2 0x1298 JUMP JUMPDEST PUSH2 0x497 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x501 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x12A8 JUMP JUMPDEST PUSH2 0x497 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x527 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x12BD JUMP JUMPDEST PUSH2 0x565 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x555 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1450 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x565 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x57D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x16FF JUMP JUMPDEST PUSH2 0x5B1 PUSH2 0x1706 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x4D1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x5E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x171A JUMP JUMPDEST PUSH2 0x4D1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x61B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x1729 JUMP JUMPDEST PUSH2 0x5B1 PUSH2 0x1764 JUMP JUMPDEST PUSH2 0x5B1 PUSH2 0x1773 JUMP JUMPDEST PUSH2 0x497 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x667 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD ISZERO ISZERO PUSH2 0x1782 JUMP JUMPDEST PUSH2 0x497 PUSH2 0x18AF JUMP JUMPDEST PUSH2 0x4D1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x68E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x18BF JUMP JUMPDEST PUSH2 0x5B1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x19CD JUMP JUMPDEST PUSH2 0x6C3 PUSH2 0x19E8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 DUP2 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x6FF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x6E7 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x6C3 PUSH2 0x1A4B JUMP JUMPDEST PUSH2 0x565 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x731 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1AAB JUMP JUMPDEST PUSH2 0x497 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x757 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x1B5B JUMP JUMPDEST PUSH2 0x497 PUSH2 0x1CE9 JUMP JUMPDEST PUSH2 0x565 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x78D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x1CF9 JUMP JUMPDEST PUSH2 0x565 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x7C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xA0 ADD CALLDATALOAD PUSH2 0x1D20 JUMP JUMPDEST PUSH2 0x4D1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x815 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1D25 JUMP JUMPDEST PUSH2 0x4D1 PUSH2 0x1D37 JUMP JUMPDEST PUSH2 0x869 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x843 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x1D3D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST PUSH2 0x4D1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x89D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x1D77 JUMP JUMPDEST PUSH2 0x4D1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x217B JUMP JUMPDEST PUSH2 0x565 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x8F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x90A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x91C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x93D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x95A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x96C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x98D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x226A JUMP JUMPDEST PUSH2 0x565 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x9AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x23F9 JUMP JUMPDEST PUSH2 0x5B1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x2453 JUMP JUMPDEST PUSH2 0x4D1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA07 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x247A JUMP JUMPDEST PUSH2 0x565 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xA2D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x24FC JUMP JUMPDEST PUSH2 0x565 PUSH2 0x2501 JUMP JUMPDEST PUSH2 0x869 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA6B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2574 JUMP JUMPDEST PUSH2 0x4D1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA91 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x25A9 JUMP JUMPDEST PUSH2 0x4D1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0xAB7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x2628 JUMP JUMPDEST PUSH2 0x565 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xAFD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xB17 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xB29 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0xB4A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xB67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xB79 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0xB9A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x27DF JUMP JUMPDEST PUSH2 0x565 PUSH2 0x2965 JUMP JUMPDEST PUSH2 0x565 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0xBC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x29C2 JUMP JUMPDEST PUSH2 0x497 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xBFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x29C7 JUMP JUMPDEST PUSH2 0x565 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0xC25 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x16FF JUMP JUMPDEST PUSH2 0x497 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC6B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x29DC JUMP JUMPDEST PUSH2 0x5B1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC91 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x29F1 JUMP JUMPDEST PUSH2 0x4D1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xCAE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x29FE JUMP JUMPDEST PUSH2 0x5B1 PUSH2 0x2B71 JUMP JUMPDEST PUSH2 0x4D1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xCE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2B80 JUMP JUMPDEST PUSH2 0x497 PUSH2 0x2EDA JUMP JUMPDEST PUSH2 0xD20 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2EEA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 ISZERO ISZERO DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x497 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD ISZERO ISZERO PUSH2 0x2F09 JUMP JUMPDEST PUSH2 0x497 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xD70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x3035 JUMP JUMPDEST PUSH2 0x497 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD9E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3068 JUMP JUMPDEST PUSH2 0x4D1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xDC4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD ISZERO ISZERO PUSH2 0x31DA JUMP JUMPDEST PUSH2 0x497 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xDE3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3257 JUMP JUMPDEST PUSH2 0x4D1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xE09 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD ISZERO ISZERO SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xE2C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xE3E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0xE5F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP CALLDATALOAD PUSH2 0x326C JUMP JUMPDEST PUSH2 0x6C3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE80 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x344B JUMP JUMPDEST PUSH2 0x497 PUSH2 0x34D4 JUMP JUMPDEST PUSH2 0x6C3 PUSH2 0x34E4 JUMP JUMPDEST PUSH2 0x497 PUSH2 0x3544 JUMP JUMPDEST PUSH2 0x4D1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xEBE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x354D JUMP JUMPDEST PUSH2 0x5B1 PUSH2 0x371E JUMP JUMPDEST PUSH2 0x4D1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0xEEC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x372D JUMP JUMPDEST PUSH2 0x6C3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF28 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xF42 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xF54 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0xF75 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x37B7 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0xFE9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xFC9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x384E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x5B1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1018 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x3A76 JUMP JUMPDEST PUSH2 0x4D1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1035 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x104F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1061 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x1082 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x109F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x10B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x10D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x3A83 JUMP JUMPDEST PUSH2 0x565 PUSH2 0x3C96 JUMP JUMPDEST PUSH2 0x6C3 PUSH2 0x3D47 JUMP JUMPDEST PUSH2 0x4D1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x1103 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x3DA7 JUMP JUMPDEST PUSH2 0x5B1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1149 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x3F3D JUMP JUMPDEST PUSH2 0x4D1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1166 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD ISZERO ISZERO PUSH2 0x3F4A JUMP JUMPDEST PUSH2 0x4D1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1185 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x3FC7 JUMP JUMPDEST PUSH2 0x5B1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x11BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x4375 JUMP JUMPDEST PUSH2 0x5B1 PUSH2 0x43AA JUMP JUMPDEST PUSH2 0x497 PUSH2 0x43B9 JUMP JUMPDEST PUSH2 0x4D1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x11F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x43C2 JUMP JUMPDEST PUSH2 0x497 PUSH2 0x456D JUMP JUMPDEST PUSH2 0x4D1 PUSH2 0x457D JUMP JUMPDEST PUSH2 0x4D1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1233 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x4583 JUMP JUMPDEST PUSH2 0x4D1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1269 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x45A0 JUMP JUMPDEST PUSH2 0x5B1 PUSH2 0x498B JUMP JUMPDEST PUSH1 0x1 DUP2 JUMP JUMPDEST PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0xA8 SHL SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0xE PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x1314 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5B4E PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ DUP1 PUSH2 0x1330 JUMPI POP PUSH2 0x1330 PUSH2 0x499A JUMP JUMPDEST PUSH2 0x136B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5BD9 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1373 PUSH2 0x499A JUMP JUMPDEST DUP1 PUSH2 0x1380 JUMPI POP PUSH1 0x1 DUP3 ISZERO ISZERO EQ JUMPDEST PUSH2 0x13CA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x6F6E6C792061646D696E2063616E20756E7061757365 PUSH1 0x50 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x16 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD DUP7 ISZERO ISZERO PUSH1 0xFF NOT SWAP1 SWAP2 AND DUP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP4 DUP5 MSTORE DUP4 DUP4 ADD MSTORE PUSH1 0x60 SWAP1 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x6 SWAP1 DUP4 ADD MSTORE PUSH6 0x426F72726F77 PUSH1 0xD0 SHL PUSH1 0x80 DUP4 ADD MSTORE MLOAD PUSH32 0x71AEC636243F9709BB0007AE15E9AFB8150AB01716D75FD7573BE5CC096E03B0 SWAP2 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 LOG1 POP DUP1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST CALLER PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 EQ DUP1 ISZERO PUSH2 0x14D4 JUMPI POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x2F1069BA 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 0x14A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x14BB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x14D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST DUP1 PUSH2 0x15B7 JUMPI POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xF851A440 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 0x1513 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1527 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x153D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ DUP1 ISZERO PUSH2 0x15B7 JUMPI POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA755EC2 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 0x158A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x159E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x15B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x15F2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5D58 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC1E80334 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x162F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1643 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1659 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x16A8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x18DA185B99D9481B9BDD08185D5D1A1BDC9A5E9959 PUSH1 0x5A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5D72DE62 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x16E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x16F7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x17 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 JUMPDEST SWAP1 POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x1753 JUMPI PUSH1 0x9 JUMPDEST SWAP1 POP PUSH2 0x1721 JUMP JUMPDEST PUSH2 0x175D DUP6 DUP5 PUSH2 0x49F5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x171E JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ DUP1 PUSH2 0x17A1 JUMPI POP PUSH2 0x17A1 PUSH2 0x499A JUMP JUMPDEST PUSH2 0x17DC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5BD9 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x17E4 PUSH2 0x499A JUMP JUMPDEST DUP1 PUSH2 0x17F1 JUMPI POP PUSH1 0x1 DUP3 ISZERO ISZERO EQ JUMPDEST PUSH2 0x183B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x6F6E6C792061646D696E2063616E20756E7061757365 PUSH1 0x50 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x14 DUP1 SLOAD DUP4 ISZERO ISZERO PUSH1 0x1 PUSH1 0xB8 SHL DUP2 MUL PUSH1 0xFF PUSH1 0xB8 SHL NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP1 DUP3 MSTORE PUSH1 0x5 DUP3 DUP3 ADD MSTORE PUSH5 0x5365697A65 PUSH1 0xD8 SHL PUSH1 0x60 DUP4 ADD MSTORE MLOAD PUSH32 0xEF159D9A32B2472E32B098F954F3CE62D232939F1C207070B584DF1814DE2DE0 SWAP2 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG1 POP DUP1 JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x18C9 PUSH2 0x499A JUMP JUMPDEST PUSH2 0x18E0 JUMPI PUSH2 0x18D9 PUSH1 0x1 PUSH1 0x7 PUSH2 0x4A8D JUMP JUMPDEST SWAP1 POP PUSH2 0x18AA JUMP JUMPDEST PUSH2 0x18E8 PUSH2 0x5A65 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE DUP3 DUP2 MSTORE PUSH2 0x18FF PUSH2 0x5A65 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH7 0xB1A2BC2EC50000 DUP2 MSTORE PUSH2 0x191F DUP3 DUP3 PUSH2 0x4AF3 JUMP JUMPDEST ISZERO PUSH2 0x1939 JUMPI PUSH2 0x1930 PUSH1 0x5 PUSH1 0x8 PUSH2 0x4A8D JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x18AA JUMP JUMPDEST PUSH2 0x1941 PUSH2 0x5A65 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH8 0xC7D713B49DA0000 DUP2 MSTORE PUSH2 0x1962 DUP2 DUP5 PUSH2 0x4AFB JUMP JUMPDEST ISZERO PUSH2 0x197D JUMPI PUSH2 0x1973 PUSH1 0x5 PUSH1 0x8 PUSH2 0x4A8D JUMP JUMPDEST SWAP4 POP POP POP POP PUSH2 0x18AA JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD SWAP1 DUP7 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP9 SWAP1 MSTORE DUP2 MLOAD PUSH32 0x3B9670CF975D26958E754B57098EAA2AC914D8D2A31B83257997B9F346110FD9 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x0 JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x60 PUSH1 0xC DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x1A40 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1A22 JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1A DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x1A40 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1A22 JUMPI POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x1AB3 PUSH2 0x499A JUMP JUMPDEST PUSH2 0x1AEE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5C00 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x17 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH2 0x100 DUP2 DUP2 MUL PUSH2 0x100 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT DUP6 AND OR SWAP1 SWAP5 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP5 SWAP1 SWAP4 DIV SWAP2 SWAP1 SWAP2 AND DUP1 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 MLOAD SWAP1 SWAP3 PUSH32 0xEDA98690E518E9A05F8EC6837663E188211B2DA8F4906648B323F2C1D4434E29 SWAP3 SWAP1 DUP3 SWAP1 SUB ADD SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x1BB2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5B4E PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ DUP1 PUSH2 0x1BCE JUMPI POP PUSH2 0x1BCE PUSH2 0x499A JUMP JUMPDEST PUSH2 0x1C09 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5BD9 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1C11 PUSH2 0x499A JUMP JUMPDEST DUP1 PUSH2 0x1C1E JUMPI POP PUSH1 0x1 DUP3 ISZERO ISZERO EQ JUMPDEST PUSH2 0x1C68 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x6F6E6C792061646D696E2063616E20756E7061757365 PUSH1 0x50 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x15 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD DUP7 ISZERO ISZERO PUSH1 0xFF NOT SWAP1 SWAP2 AND DUP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP4 DUP5 MSTORE DUP4 DUP4 ADD MSTORE PUSH1 0x60 SWAP1 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x4 SWAP1 DUP4 ADD MSTORE PUSH4 0x135A5B9D PUSH1 0xE2 SHL PUSH1 0x80 DUP4 ADD MSTORE MLOAD PUSH32 0x71AEC636243F9709BB0007AE15E9AFB8150AB01716D75FD7573BE5CC096E03B0 SWAP2 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 LOG1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH2 0x16F7 JUMP JUMPDEST PUSH1 0x18 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x1D52 DUP11 DUP11 DUP11 DUP11 PUSH2 0x4B02 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP DUP3 PUSH1 0x15 DUP2 GT ISZERO PUSH2 0x1D64 JUMPI INVALID JUMPDEST SWAP6 POP SWAP1 SWAP4 POP SWAP2 POP POP JUMPDEST SWAP5 POP SWAP5 POP SWAP5 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x15 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1DD6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x1B5A5B9D081A5CC81C185D5CD959 PUSH1 0x92 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x1E00 JUMPI PUSH1 0x9 JUMPDEST SWAP1 POP PUSH2 0x2174 JUMP JUMPDEST PUSH1 0x10 SLOAD PUSH1 0xFF AND DUP1 ISZERO PUSH2 0x1E2B JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST ISZERO PUSH2 0x1E37 JUMPI PUSH1 0x12 PUSH2 0x1DF9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x2163 JUMPI PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x3B1D21A2 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 0x1E91 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1EA5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1EBB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x8F7A6E3 PUSH1 0xE3 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP2 PUSH4 0x47BD3718 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F03 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1F17 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1F2D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x8F840DDD PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND SWAP2 PUSH4 0x8F840DDD SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F75 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1F89 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1F9F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xDC028AB1 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND SWAP2 PUSH4 0xDC028AB1 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1FE7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1FFB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2011 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x61FEACFF PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND SWAP2 PUSH4 0x61FEACFF SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2059 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x206D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2083 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x20A7 DUP8 DUP8 PUSH2 0x20A2 PUSH2 0x209C DUP10 DUP10 PUSH2 0x4E3A JUMP JUMPDEST DUP8 PUSH2 0x4E3A JUMP JUMPDEST PUSH2 0x4E70 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x20BA JUMPI INVALID JUMPDEST EQ PUSH2 0x20D0 JUMPI PUSH1 0xB SWAP9 POP POP POP POP POP POP POP POP POP PUSH2 0x2174 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x20DC DUP3 DUP13 PUSH2 0x4EBC JUMP JUMPDEST SWAP1 SWAP4 POP SWAP1 POP PUSH1 0x0 DUP4 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x20EF JUMPI INVALID JUMPDEST EQ PUSH2 0x2106 JUMPI PUSH1 0xB SWAP10 POP POP POP POP POP POP POP POP POP POP PUSH2 0x2174 JUMP JUMPDEST DUP9 DUP2 LT PUSH2 0x215A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6D61726B657420737570706C7920636170207265616368656400000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP POP POP POP POP POP POP JUMPDEST PUSH2 0x216D DUP6 DUP6 PUSH2 0x4EE5 JUMP JUMPDEST PUSH1 0x0 JUMPDEST SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2185 PUSH2 0x499A JUMP JUMPDEST PUSH2 0x2195 JUMPI PUSH2 0x18D9 PUSH1 0x1 PUSH1 0xD PUSH2 0x4A8D JUMP JUMPDEST PUSH2 0x219D PUSH2 0x5A65 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE DUP3 DUP2 MSTORE PUSH2 0x21B4 PUSH2 0x5A65 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH8 0xDE0B6B3A7640000 DUP2 MSTORE PUSH2 0x21D5 DUP3 DUP3 PUSH2 0x4AFB JUMP JUMPDEST ISZERO PUSH2 0x21E6 JUMPI PUSH2 0x1930 PUSH1 0x7 PUSH1 0xE PUSH2 0x4A8D JUMP JUMPDEST PUSH2 0x21EE PUSH2 0x5A65 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH8 0x14D1120D7B160000 DUP2 MSTORE PUSH2 0x220F DUP2 DUP5 PUSH2 0x4AFB JUMP JUMPDEST ISZERO PUSH2 0x2220 JUMPI PUSH2 0x1973 PUSH1 0x7 PUSH1 0xE PUSH2 0x4A8D JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD SWAP1 DUP7 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP9 SWAP1 MSTORE DUP2 MLOAD PUSH32 0xAEBA5A6C40A8AC138134BFF1AAA65DEBF25971188A58804BAD717F82F0EC1316 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x0 PUSH2 0x19C3 JUMP JUMPDEST PUSH2 0x2272 PUSH2 0x499A JUMP JUMPDEST DUP1 PUSH2 0x228C JUMPI POP PUSH1 0x17 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ JUMPDEST PUSH2 0x22C7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x35 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5CEE PUSH1 0x35 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 DUP2 DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x22D7 JUMPI POP DUP1 DUP3 EQ JUMPDEST PUSH2 0x2318 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x1A5B9D985B1A59081A5B9C1D5D PUSH1 0x9A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x23F0 JUMPI DUP5 DUP5 DUP3 DUP2 DUP2 LT PUSH2 0x232F JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x19 PUSH1 0x0 DUP10 DUP10 DUP6 DUP2 DUP2 LT PUSH2 0x2346 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP7 DUP7 DUP3 DUP2 DUP2 LT PUSH2 0x2386 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x9E0AD9CEE10BDF36B7FBD38910C0BDFF0F275ACE679B45B922381C2723D676F8 DUP7 DUP7 DUP5 DUP2 DUP2 LT PUSH2 0x23CC JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH1 0x1 ADD PUSH2 0x231B JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST DUP1 ISZERO DUP1 ISZERO PUSH2 0x2407 JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST ISZERO PUSH2 0x244D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x72656465656D546F6B656E73207A65726F PUSH1 0x78 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0xA DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x2460 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2484 PUSH2 0x499A JUMP JUMPDEST PUSH2 0x2494 JUMPI PUSH2 0x18D9 PUSH1 0x1 PUSH1 0x13 PUSH2 0x4A8D JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP2 SWAP1 SWAP3 AND DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP2 MLOAD PUSH32 0xD52B2B9B7E9EE655FCB95D2E5B9E0C9F69E7EF2B8E9D2D0EA78402D576D22E22 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x0 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x254A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5C26 PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1B SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2572 JUMPI PUSH1 0x1B DUP1 SLOAD PUSH2 0xFF00 NOT PUSH1 0xFF NOT SWAP1 SWAP2 AND PUSH1 0x1 OR AND PUSH2 0x100 OR SWAP1 SSTORE JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x258B DUP8 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x4B02 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP DUP3 PUSH1 0x15 DUP2 GT ISZERO PUSH2 0x259D JUMPI INVALID JUMPDEST SWAP8 SWAP2 SWAP7 POP SWAP5 POP SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x25B3 PUSH2 0x499A JUMP JUMPDEST PUSH2 0x25C3 JUMPI PUSH2 0x18D9 PUSH1 0x1 PUSH1 0x18 PUSH2 0x4A8D JUMP JUMPDEST PUSH1 0x14 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND OR SWAP3 DUP4 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP3 DUP3 AND DUP1 DUP5 MSTORE SWAP4 SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD PUSH32 0x613B6EE6A04F0D09F390E4D9318894B9F6AC7FD83897CD8D18896BA579C401E SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x0 PUSH2 0x2174 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO DUP1 PUSH2 0x2669 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST ISZERO PUSH2 0x2678 JUMPI PUSH1 0x9 JUMPDEST SWAP1 POP PUSH2 0x27D6 JUMP JUMPDEST PUSH1 0x0 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x95DD9193 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x26D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x26E4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x26FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH2 0x2707 DUP8 PUSH2 0x3068 JUMP JUMPDEST ISZERO PUSH2 0x2750 JUMPI DUP3 DUP2 LT ISZERO PUSH2 0x274B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5B76 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x27D0 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x275C DUP7 PUSH2 0x4F7C JUMP JUMPDEST SWAP2 SWAP4 POP SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 POP DUP3 PUSH1 0x15 DUP2 GT ISZERO PUSH2 0x2772 JUMPI INVALID JUMPDEST EQ PUSH2 0x278D JUMPI DUP2 PUSH1 0x15 DUP2 GT ISZERO PUSH2 0x2783 JUMPI INVALID JUMPDEST SWAP4 POP POP POP POP PUSH2 0x27D6 JUMP JUMPDEST DUP1 PUSH2 0x2799 JUMPI PUSH1 0x3 PUSH2 0x2783 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27B5 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 SLOAD DUP2 MSTORE POP DUP6 PUSH2 0x4F9C JUMP JUMPDEST SWAP1 POP DUP1 DUP7 GT ISZERO PUSH2 0x27CC JUMPI PUSH1 0x11 SWAP5 POP POP POP POP POP PUSH2 0x27D6 JUMP JUMPDEST POP POP POP JUMPDEST PUSH1 0x0 SWAP2 POP POP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x27E7 PUSH2 0x499A JUMP JUMPDEST DUP1 PUSH2 0x2801 JUMPI POP PUSH1 0x17 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ JUMPDEST PUSH2 0x283C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x35 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5C94 PUSH1 0x35 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 DUP2 DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x284C JUMPI POP DUP1 DUP3 EQ JUMPDEST PUSH2 0x288D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x1A5B9D985B1A59081A5B9C1D5D PUSH1 0x9A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x23F0 JUMPI DUP5 DUP5 DUP3 DUP2 DUP2 LT PUSH2 0x28A4 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x18 PUSH1 0x0 DUP10 DUP10 DUP6 DUP2 DUP2 LT PUSH2 0x28BB JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP7 DUP7 DUP3 DUP2 DUP2 LT PUSH2 0x28FB JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x6F1951B2AAD10F3FC81B86D91105B413A5B3F847A34BBC5CE1904201B14438F6 DUP7 DUP7 DUP5 DUP2 DUP2 LT PUSH2 0x2941 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH1 0x1 ADD PUSH2 0x2890 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x29B3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5B9E PUSH1 0x3B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1B DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x244D JUMP JUMPDEST PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x15 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0xC DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x2460 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP1 PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFDB25FB1 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 0x2A4E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2A62 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2A78 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x2B67 JUMPI PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xFC57D4DF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 DUP2 AND SWAP5 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP4 SWAP1 SWAP3 AND SWAP2 PUSH4 0xFC57D4DF SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2AD5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2AE9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2AFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0x2B13 JUMPI PUSH1 0xD SWAP3 POP POP POP PUSH2 0x144A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2B2E PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP6 DUP2 MSTORE POP DUP8 PUSH2 0x4FBB JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2B41 JUMPI INVALID JUMPDEST EQ PUSH2 0x2B54 JUMPI PUSH1 0xB JUMPDEST SWAP5 POP POP POP POP POP PUSH2 0x144A JUMP JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2B63 JUMPI PUSH1 0x13 PUSH2 0x2B49 JUMP JUMPDEST POP POP POP JUMPDEST PUSH1 0x0 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2B8A PUSH2 0x499A JUMP JUMPDEST PUSH2 0x2B9A JUMPI PUSH2 0x18D9 PUSH1 0x1 PUSH1 0x19 PUSH2 0x4A8D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x2BC6 JUMPI PUSH2 0x18D9 PUSH1 0x9 PUSH1 0x1A PUSH2 0x4A8D JUMP JUMPDEST PUSH1 0x0 DUP3 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 0x2C01 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2C15 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2C2B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD GT ISZERO PUSH2 0x2C3F JUMPI PUSH2 0x18D9 PUSH1 0x15 PUSH1 0x1B PUSH2 0x4A8D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP2 SSTORE PUSH1 0x1 ADD SWAP3 SWAP1 SWAP3 SSTORE PUSH1 0xA DUP1 SLOAD DUP4 MLOAD DUP2 DUP5 MUL DUP2 ADD DUP5 ADD SWAP1 SWAP5 MSTORE DUP1 DUP5 MSTORE PUSH1 0x60 SWAP4 SWAP3 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x2CB9 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x2C9B JUMPI JUMPDEST POP POP DUP4 MLOAD SWAP4 SWAP5 POP DUP4 SWAP3 POP PUSH1 0x0 SWAP2 POP POP JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2D0E JUMPI DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2CE7 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x2D06 JUMPI DUP1 SWAP2 POP PUSH2 0x2D0E JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x2CC9 JUMP JUMPDEST POP DUP2 DUP2 LT PUSH2 0x2D18 JUMPI INVALID JUMPDEST PUSH1 0xA DUP1 SLOAD PUSH1 0x0 NOT DUP2 ADD SWAP1 DUP2 LT PUSH2 0x2D2A JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0xA DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 DUP4 SWAP1 DUP2 LT PUSH2 0x2D50 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0xA DUP1 SLOAD SWAP1 PUSH2 0x2D8C SWAP1 PUSH1 0x0 NOT DUP4 ADD PUSH2 0x5A78 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0xF PUSH1 0x0 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xAC784DDC 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 0x2DCC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2DE0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2DF6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x2E66 JUMPI DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6F307DC3 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 0x2E35 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2E49 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2E5F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x2E69 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP5 DUP3 AND SWAP5 SWAP1 SWAP5 OR SWAP1 SWAP4 SSTORE DUP1 MLOAD SWAP3 DUP9 AND DUP4 MSTORE MLOAD PUSH32 0x302FEB03EFD5741DF80EFE7F97F5D93D74D46A542A3D312D0FAAE64FA1F3E0E9 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x0 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0xB0 SHL SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD PUSH1 0xFF SWAP1 SWAP2 AND SWAP1 DUP3 JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ DUP1 PUSH2 0x2F28 JUMPI POP PUSH2 0x2F28 PUSH2 0x499A JUMP JUMPDEST PUSH2 0x2F63 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5BD9 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2F6B PUSH2 0x499A JUMP JUMPDEST DUP1 PUSH2 0x2F78 JUMPI POP PUSH1 0x1 DUP3 ISZERO ISZERO EQ JUMPDEST PUSH2 0x2FC2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x6F6E6C792061646D696E2063616E20756E7061757365 PUSH1 0x50 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x14 DUP1 SLOAD DUP4 ISZERO ISZERO PUSH1 0x1 PUSH1 0xB0 SHL DUP2 MUL PUSH1 0xFF PUSH1 0xB0 SHL NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP1 DUP3 MSTORE PUSH1 0x8 DUP3 DUP3 ADD MSTORE PUSH8 0x2A3930B739B332B9 PUSH1 0xC1 SHL PUSH1 0x60 DUP4 ADD MSTORE MLOAD PUSH32 0xEF159D9A32B2472E32B098F954F3CE62D232939F1C207070B584DF1814DE2DE0 SWAP2 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG1 POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE PUSH1 0x2 SWAP1 SWAP4 ADD SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x1 ADD SLOAD ISZERO DUP1 ISZERO PUSH2 0x30AE JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x1 EQ JUMPDEST DUP1 ISZERO PUSH2 0x144A JUMPI POP PUSH2 0x31CA PUSH2 0x3191 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x173B9904 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 0x30F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3108 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x311E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x8D02D9A1 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP2 PUSH4 0x8D02D9A1 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3160 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3174 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x318A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x4E3A JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xDBFE7C19 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 0x3160 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH8 0xDE0B6B3A7640000 EQ SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x31E4 PUSH2 0x499A JUMP JUMPDEST PUSH2 0x31F4 JUMPI PUSH2 0x18D9 PUSH1 0x1 PUSH1 0x14 PUSH2 0x4A8D JUMP JUMPDEST PUSH1 0x10 SLOAD PUSH1 0xFF AND ISZERO ISZERO DUP3 ISZERO ISZERO EQ ISZERO PUSH2 0x320C JUMPI PUSH1 0x0 PUSH2 0x18D9 JUMP JUMPDEST PUSH1 0x10 DUP1 SLOAD DUP4 ISZERO ISZERO PUSH1 0xFF NOT SWAP1 SWAP2 AND DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD PUSH32 0x84C7D948374A180EDDAB35D27D2F7A94167A1FF4E79467F1E89C061984190A1E SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 PUSH1 0x0 PUSH2 0x144A JUMP JUMPDEST PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3276 PUSH2 0x499A JUMP JUMPDEST PUSH2 0x3286 JUMPI PUSH2 0x174C PUSH1 0x1 PUSH1 0x17 PUSH2 0x4A8D JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL PUSH1 0xFF PUSH1 0xA0 SHL NOT DUP3 AND DUP2 OR SWAP1 SWAP3 SSTORE DIV PUSH1 0xFF AND PUSH1 0x0 DUP7 PUSH2 0x3357 JUMPI PUSH1 0x40 MLOAD PUSH4 0x8754E4FD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD SWAP1 DUP2 MSTORE PUSH1 0x24 DUP3 ADD DUP8 SWAP1 MSTORE PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 SWAP2 PUSH4 0x8754E4FD SWAP2 DUP10 SWAP2 DUP10 SWAP2 SWAP1 DUP2 SWAP1 PUSH1 0x44 ADD DUP5 DUP5 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3326 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x333A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3350 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x3403 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x9B86A9B5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD SWAP1 DUP2 MSTORE PUSH1 0x24 DUP3 ADD DUP8 SWAP1 MSTORE PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 SWAP2 PUSH4 0x9B86A9B5 SWAP2 DUP10 SWAP2 DUP10 SWAP2 SWAP1 DUP2 SWAP1 PUSH1 0x44 ADD DUP5 DUP5 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x33D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x33EA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3400 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL DUP6 ISZERO ISZERO MUL OR SWAP1 SSTORE SWAP1 POP PUSH1 0x0 PUSH2 0x3427 DUP3 PUSH2 0x500E JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x3435 JUMPI DUP1 PUSH2 0x343F JUMP JUMPDEST PUSH2 0x343F DUP3 DUP7 PUSH2 0x43C2 JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x8 PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x34C7 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x34A9 JUMPI JUMPDEST POP SWAP4 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0xB8 SHL SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x60 PUSH1 0xA DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x1A40 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1A22 JUMPI POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x10 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3557 PUSH2 0x499A JUMP JUMPDEST PUSH2 0x3567 JUMPI PUSH2 0x18D9 PUSH1 0x1 PUSH1 0x2 PUSH2 0x4A8D JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xABC6D72D 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 0x35A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x35B4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x35CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x361D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6D61726B6572206D6574686F642072657475726E65642066616C736500000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x1A SLOAD DUP2 LT ISZERO PUSH2 0x3695 JUMPI PUSH1 0x1A DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x3637 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND SWAP2 AND EQ ISZERO PUSH2 0x368D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5B25 PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 ADD PUSH2 0x3620 JUMP JUMPDEST POP PUSH1 0x1A DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE PUSH1 0x0 SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x57C384A7D1C54F3A1B2E5E67B2617B8224FDFD1EA7234EEA573A6FF665FF63E ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP2 AND DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD PUSH32 0x98EF1187FB6FD2BC85F8996489877EB2B5428F9E9BDFC068C9AD6C2EA82EACC7 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 PUSH1 0x0 PUSH2 0x144A JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0xB0 SHL SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x3784 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH18 0x1D1C985B9CD9995C881A5CC81C185D5CD959 PUSH1 0x72 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3791 DUP7 DUP7 DUP6 PUSH2 0x53A1 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x37A0 JUMPI SWAP1 POP PUSH2 0x1721 JUMP JUMPDEST PUSH2 0x37AB DUP7 DUP7 DUP7 PUSH2 0x544D JUMP JUMPDEST PUSH1 0x0 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP3 MLOAD SWAP1 POP PUSH1 0x60 DUP2 PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x37EB JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x3846 JUMPI PUSH1 0x0 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x3807 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x381B DUP2 CALLER PUSH2 0x54ED JUMP JUMPDEST PUSH1 0x15 DUP2 GT ISZERO PUSH2 0x3826 JUMPI INVALID JUMPDEST DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x3832 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP PUSH1 0x1 ADD PUSH2 0x37F1 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xFC57D4DF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND SWAP5 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 DUP5 SWAP4 SWAP2 AND SWAP2 PUSH4 0xFC57D4DF SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x38A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x38B8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x38CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xFC57D4DF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 DUP2 AND SWAP5 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE SWAP1 MLOAD SWAP4 SWAP5 POP PUSH1 0x0 SWAP4 SWAP3 SWAP1 SWAP2 AND SWAP2 PUSH4 0xFC57D4DF SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3927 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x393B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3951 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP2 ISZERO DUP1 PUSH2 0x3960 JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0x3975 JUMPI PUSH1 0xD SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x3A6E SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x182DF0F5 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 0x39B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x39C4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x39DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x39E8 PUSH2 0x5A65 JUMP JUMPDEST PUSH2 0x39F0 PUSH2 0x5A65 JUMP JUMPDEST PUSH2 0x39F8 PUSH2 0x5A65 JUMP JUMPDEST PUSH2 0x3A20 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x6 SLOAD DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP11 DUP2 MSTORE POP PUSH2 0x567A JUMP JUMPDEST SWAP3 POP PUSH2 0x3A48 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP9 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP9 DUP2 MSTORE POP PUSH2 0x567A JUMP JUMPDEST SWAP2 POP PUSH2 0x3A54 DUP4 DUP4 PUSH2 0x56B9 JUMP JUMPDEST SWAP1 POP PUSH2 0x3A60 DUP2 DUP12 PUSH2 0x4F9C JUMP JUMPDEST PUSH1 0x0 SWAP10 POP SWAP8 POP POP POP POP POP POP POP POP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1A DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x2460 JUMPI INVALID JUMPDEST PUSH1 0x0 PUSH2 0x3A8D PUSH2 0x499A JUMP JUMPDEST PUSH2 0x3A9D JUMPI PUSH2 0x174C PUSH1 0x1 PUSH1 0x15 PUSH2 0x4A8D JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x3C8E JUMPI PUSH1 0x0 DUP7 DUP7 DUP4 DUP2 DUP2 LT PUSH2 0x3AB6 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x3AD4 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD ISZERO PUSH2 0x3B80 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x3B7B JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x12 DUP1 SLOAD SWAP2 DUP3 ADD DUP2 SSTORE PUSH32 0xBB8A6A4669BA250D26CD7A459ECA9D215F8307E33AEBE50379BC5A3617EC3444 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND DUP7 OR SWAP1 SSTORE SLOAD SWAP4 DUP4 MSTORE PUSH1 0x13 SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 PUSH1 0x0 NOT SWAP2 SWAP1 SWAP2 ADD SWAP1 SSTORE JUMPDEST PUSH2 0x3C85 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x3C85 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x12 SLOAD PUSH1 0x0 NOT ADD DUP2 LT ISZERO PUSH2 0x3C42 JUMPI PUSH1 0x12 DUP1 SLOAD PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x0 NOT DUP2 ADD SWAP1 DUP2 LT PUSH2 0x3BDE JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x12 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP3 POP DUP3 SWAP2 DUP5 SWAP1 DUP2 LT PUSH2 0x3C07 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP2 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND OR SWAP1 SSTORE SWAP3 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x13 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP2 SWAP1 SSTORE JUMPDEST PUSH1 0x12 DUP1 SLOAD SWAP1 PUSH2 0x3C55 SWAP1 PUSH1 0x0 NOT DUP4 ADD PUSH2 0x5A78 JUMP JUMPDEST POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP4 SWAP1 SSTORE PUSH1 0x11 SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x3AA0 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x171E JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x3CE4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5C58 PUSH1 0x3C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1B SLOAD PUSH1 0xFF AND PUSH2 0x3D3B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x72652D656E7465726564206163726F7373206173736574730000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1B DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x12 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x1A40 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1A22 JUMPI POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0xB8 SHL SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x3DFB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x1CD95A5E99481A5CC81C185D5CD959 PUSH1 0x8A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO DUP1 PUSH2 0x3E3C JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST ISZERO PUSH2 0x3E48 JUMPI PUSH1 0x9 PUSH2 0x2671 JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5FE3B567 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 0x3E81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3E95 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3EAB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x5FE3B567 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP3 DUP10 AND SWAP2 PUSH4 0x5FE3B567 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3EF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3F05 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3F1B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x3F32 JUMPI PUSH1 0x2 PUSH2 0x2671 JUMP JUMPDEST PUSH2 0x37AB DUP7 DUP5 DUP7 PUSH2 0x544D JUMP JUMPDEST PUSH1 0x12 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x2460 JUMPI INVALID JUMPDEST PUSH1 0x0 PUSH2 0x3F54 PUSH2 0x499A JUMP JUMPDEST PUSH2 0x3F64 JUMPI PUSH2 0x18D9 PUSH1 0x1 PUSH1 0x6 PUSH2 0x4A8D JUMP JUMPDEST PUSH1 0x17 SLOAD PUSH1 0xFF AND ISZERO ISZERO DUP3 ISZERO ISZERO EQ ISZERO PUSH2 0x3F7C JUMPI PUSH1 0x0 PUSH2 0x18D9 JUMP JUMPDEST PUSH1 0x17 DUP1 SLOAD DUP4 ISZERO ISZERO PUSH1 0xFF NOT SWAP1 SWAP2 AND DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD PUSH32 0xAA40EE94AF55250363B91641A0A615C47690148901505F89B01DAFAE03FFF281 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 PUSH1 0x0 PUSH2 0x144A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x4028 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x189BDC9C9BDDC81A5CC81C185D5CD959 PUSH1 0x82 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x404F JUMPI PUSH1 0x9 PUSH2 0x1DF9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP8 AND DUP4 MSTORE PUSH1 0x2 SWAP1 SWAP4 ADD SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x413F JUMPI CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EQ PUSH2 0x40D5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x39B2B73232B91036BAB9BA1031329031AA37B5B2B7 PUSH1 0x59 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x40E1 CALLER DUP6 PUSH2 0x54ED JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x15 DUP2 GT ISZERO PUSH2 0x40F1 JUMPI INVALID JUMPDEST EQ PUSH2 0x410A JUMPI DUP1 PUSH1 0x15 DUP2 GT ISZERO PUSH2 0x4102 JUMPI INVALID JUMPDEST SWAP2 POP POP PUSH2 0x2174 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP9 AND DUP4 MSTORE PUSH1 0x2 SWAP1 SWAP4 ADD SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x413D JUMPI INVALID JUMPDEST POP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xFC57D4DF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 DUP2 AND SWAP5 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE SWAP1 MLOAD SWAP3 SWAP1 SWAP2 AND SWAP2 PUSH4 0xFC57D4DF SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4190 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x41A4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x41BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x41C7 JUMPI PUSH1 0xD PUSH2 0x1DF9 JUMP JUMPDEST PUSH1 0x10 SLOAD PUSH1 0xFF AND DUP1 ISZERO PUSH2 0x41F2 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST ISZERO PUSH2 0x41FE JUMPI PUSH1 0x12 PUSH2 0x1DF9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x18 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x4310 JUMPI PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x47BD3718 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 0x4258 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x426C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4282 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x4293 DUP4 DUP8 PUSH2 0x4EBC JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x42A6 JUMPI INVALID JUMPDEST EQ PUSH2 0x42B8 JUMPI PUSH1 0xB SWAP5 POP POP POP POP POP PUSH2 0x2174 JUMP JUMPDEST DUP4 DUP2 LT PUSH2 0x430C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6D61726B657420626F72726F7720636170207265616368656400000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP POP JUMPDEST PUSH2 0x431A DUP6 DUP6 PUSH2 0x49F5 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x432A DUP7 DUP9 PUSH1 0x0 DUP9 PUSH2 0x4B02 JUMP JUMPDEST SWAP2 SWAP4 POP SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 POP DUP3 PUSH1 0x15 DUP2 GT ISZERO PUSH2 0x4340 JUMPI INVALID JUMPDEST EQ PUSH2 0x435B JUMPI DUP2 PUSH1 0x15 DUP2 GT ISZERO PUSH2 0x4351 JUMPI INVALID JUMPDEST SWAP4 POP POP POP POP PUSH2 0x2174 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x4368 JUMPI PUSH1 0x4 PUSH2 0x4351 JUMP JUMPDEST PUSH1 0x0 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 MSTORE DUP2 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x438E JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 POP DUP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x17 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x43CC PUSH2 0x499A JUMP JUMPDEST PUSH2 0x43E3 JUMPI PUSH2 0x43DC PUSH1 0x1 PUSH1 0x9 PUSH2 0x4A8D JUMP JUMPDEST SWAP1 POP PUSH2 0x144A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF AND PUSH2 0x4418 JUMPI PUSH2 0x4410 PUSH1 0x9 PUSH1 0xA PUSH2 0x4A8D JUMP JUMPDEST SWAP2 POP POP PUSH2 0x144A JUMP JUMPDEST PUSH2 0x4420 PUSH2 0x5A65 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE DUP4 DUP2 MSTORE PUSH2 0x4437 PUSH2 0x5A65 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH8 0xC7D713B49DA0000 DUP2 MSTORE PUSH2 0x4458 DUP2 DUP4 PUSH2 0x4AFB JUMP JUMPDEST ISZERO PUSH2 0x4473 JUMPI PUSH2 0x4469 PUSH1 0x6 PUSH1 0xB PUSH2 0x4A8D JUMP JUMPDEST SWAP4 POP POP POP POP PUSH2 0x144A JUMP JUMPDEST DUP5 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x44FC JUMPI POP PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xFC57D4DF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 DUP2 AND SWAP5 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE SWAP1 MLOAD SWAP3 SWAP1 SWAP2 AND SWAP2 PUSH4 0xFC57D4DF SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x44CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x44E2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x44F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO JUMPDEST ISZERO PUSH2 0x450D JUMPI PUSH2 0x4469 PUSH1 0xD PUSH1 0xC PUSH2 0x4A8D JUMP JUMPDEST PUSH1 0x1 DUP4 ADD DUP1 SLOAD SWAP1 DUP7 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE DUP1 DUP3 ADD DUP9 SWAP1 MSTORE SWAP1 MLOAD PUSH32 0x70483E6592CD5182D45AC970E05BC62CDCC90E9D8EF2C2DBE686CF383BCD7FC5 SWAP2 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 PUSH1 0x0 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0xA8 SHL SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x4591 DUP6 DUP6 DUP6 PUSH2 0x53A1 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x2163 JUMPI SWAP1 POP PUSH2 0x2174 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC37F68E2 CALLER PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4601 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4615 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x462B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 SWAP1 SWAP3 ADD MLOAD SWAP1 SWAP5 POP SWAP1 SWAP3 POP SWAP1 POP DUP3 ISZERO PUSH2 0x467E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5CC9 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x469B JUMPI PUSH2 0x4690 PUSH1 0xC PUSH1 0x3 PUSH2 0x4A8D JUMP JUMPDEST SWAP5 POP POP POP POP POP PUSH2 0x18AA JUMP JUMPDEST PUSH1 0x0 PUSH2 0x46A8 DUP8 CALLER DUP6 PUSH2 0x53A1 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x46C9 JUMPI PUSH2 0x46BD PUSH1 0xE PUSH1 0x4 DUP4 PUSH2 0x56F5 JUMP JUMPDEST SWAP6 POP POP POP POP POP POP PUSH2 0x18AA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE PUSH1 0x2 DUP2 ADD SWAP1 SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x4708 JUMPI PUSH1 0x0 SWAP7 POP POP POP POP POP POP POP PUSH2 0x18AA JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 DUP3 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE PUSH1 0x8 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD DUP4 MLOAD DUP2 DUP5 MUL DUP2 ADD DUP5 ADD SWAP1 SWAP5 MSTORE DUP1 DUP5 MSTORE PUSH1 0x60 SWAP4 SWAP3 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x477A JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x475C JUMPI JUMPDEST POP POP DUP4 MLOAD SWAP4 SWAP5 POP DUP4 SWAP3 POP PUSH1 0x0 SWAP2 POP POP JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x47CF JUMPI DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x47A8 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x47C7 JUMPI DUP1 SWAP2 POP PUSH2 0x47CF JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x478A JUMP JUMPDEST POP DUP2 DUP2 LT PUSH2 0x47D9 JUMPI INVALID JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP2 SWAP1 PUSH1 0x0 NOT DUP2 ADD SWAP1 DUP2 LT PUSH2 0x47FA JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x4824 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE DUP1 SLOAD PUSH2 0x485D DUP3 PUSH1 0x0 NOT DUP4 ADD PUSH2 0x5A78 JUMP JUMPDEST POP DUP1 SLOAD PUSH2 0x4936 JUMPI CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xC SLOAD PUSH1 0x0 NOT ADD DUP2 LT ISZERO PUSH2 0x48FC JUMPI PUSH1 0xC DUP1 SLOAD PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x0 NOT DUP2 ADD SWAP1 DUP2 LT PUSH2 0x4898 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0xC DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP3 POP DUP3 SWAP2 DUP5 SWAP1 DUP2 LT PUSH2 0x48C1 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP2 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND OR SWAP1 SSTORE SWAP3 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0xD SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP2 SWAP1 SSTORE JUMPDEST PUSH1 0xC DUP1 SLOAD SWAP1 PUSH2 0x490F SWAP1 PUSH1 0x0 NOT DUP4 ADD PUSH2 0x5A78 JUMP JUMPDEST POP POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP4 SWAP1 SSTORE PUSH1 0xB SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND DUP2 MSTORE CALLER PUSH1 0x20 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0xE699A64C18B07AC5B7301AA273F36A2287239EB9501D81950672794AFBA29A0D SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x0 SWAP13 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ DUP1 ISZERO PUSH2 0x49BE JUMPI POP PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0xA8 SHL SWAP1 DIV PUSH1 0xFF AND JUMPDEST DUP1 PUSH2 0x49F0 JUMPI POP CALLER PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 EQ DUP1 ISZERO PUSH2 0x49F0 JUMPI POP PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x1A SLOAD DUP2 LT ISZERO PUSH2 0x24FC JUMPI PUSH1 0x1A DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x4A0F JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 KECCAK256 ADD SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x1CDC2C5D PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP7 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 PUSH4 0xE6E162E8 SWAP3 PUSH1 0x44 DUP1 DUP3 ADD SWAP4 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4A69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4A7D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 POP PUSH2 0x49F8 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x45B96FE442630264581B197E84BBADA861235052C5A1AADFFF9EA4E40A969AA0 DUP4 PUSH1 0x15 DUP2 GT ISZERO PUSH2 0x4ABC JUMPI INVALID JUMPDEST DUP4 PUSH1 0x1B DUP2 GT ISZERO PUSH2 0x4AC8 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 DUP3 PUSH1 0x15 DUP2 GT ISZERO PUSH2 0x2174 JUMPI INVALID JUMPDEST MLOAD SWAP1 MLOAD GT ISZERO SWAP1 JUMP JUMPDEST MLOAD SWAP1 MLOAD LT SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x4B0F PUSH2 0x5A9C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP3 MLOAD DUP2 DUP6 MUL DUP2 ADD DUP6 ADD SWAP1 SWAP4 MSTORE DUP1 DUP4 MSTORE PUSH1 0x60 SWAP4 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x4B77 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x4B59 JUMPI JUMPDEST POP SWAP4 SWAP5 POP PUSH1 0x0 SWAP4 POP POP POP POP JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x4DFB JUMPI PUSH1 0x0 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x4B9A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC37F68E2 DUP14 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4BFA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4C0E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x4C24 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 DUP1 DUP5 ADD MLOAD PUSH1 0x60 SWAP5 DUP6 ADD MLOAD PUSH1 0x80 DUP12 ADD MSTORE SWAP4 DUP10 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP2 DUP8 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 POP DUP4 ISZERO PUSH2 0x4C69 JUMPI POP PUSH1 0xF SWAP7 POP PUSH1 0x0 SWAP6 POP DUP6 SWAP5 POP PUSH2 0x1D6D SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x9 DUP5 MSTORE DUP6 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD DUP5 MSTORE PUSH1 0xC0 DUP11 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP4 MLOAD DUP1 DUP4 ADD DUP6 MSTORE PUSH1 0x80 DUP11 ADD MLOAD DUP2 MSTORE PUSH1 0xE0 DUP11 ADD MSTORE PUSH1 0x4 DUP1 SLOAD DUP6 MLOAD PUSH4 0xFC57D4DF PUSH1 0xE0 SHL DUP2 MSTORE SWAP2 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE SWAP4 MLOAD SWAP3 AND SWAP3 PUSH4 0xFC57D4DF SWAP3 PUSH1 0x24 DUP1 DUP4 ADD SWAP4 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4CE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4CFD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4D13 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0xA0 DUP7 ADD DUP2 SWAP1 MSTORE PUSH2 0x4D36 JUMPI POP PUSH1 0xD SWAP7 POP PUSH1 0x0 SWAP6 POP DUP6 SWAP5 POP PUSH2 0x1D6D SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0xA0 DUP7 ADD MLOAD DUP2 MSTORE PUSH2 0x100 DUP7 ADD MSTORE PUSH1 0xC0 DUP6 ADD MLOAD PUSH1 0xE0 DUP7 ADD MLOAD PUSH2 0x4D70 SWAP2 PUSH2 0x4D65 SWAP2 PUSH2 0x567A JUMP JUMPDEST DUP7 PUSH2 0x100 ADD MLOAD PUSH2 0x567A JUMP JUMPDEST PUSH2 0x120 DUP7 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP7 ADD MLOAD DUP7 MLOAD PUSH2 0x4D8A SWAP3 SWAP2 SWAP1 PUSH2 0x575B JUMP JUMPDEST DUP6 MSTORE PUSH2 0x100 DUP6 ADD MLOAD PUSH1 0x60 DUP7 ADD MLOAD PUSH1 0x20 DUP8 ADD MLOAD PUSH2 0x4DA7 SWAP3 SWAP2 SWAP1 PUSH2 0x575B JUMP JUMPDEST PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 DUP2 AND SWAP1 DUP13 AND EQ ISZERO PUSH2 0x4DF2 JUMPI PUSH2 0x4DD4 DUP6 PUSH2 0x120 ADD MLOAD DUP12 DUP8 PUSH1 0x20 ADD MLOAD PUSH2 0x575B JUMP JUMPDEST PUSH1 0x20 DUP7 ADD DUP2 SWAP1 MSTORE PUSH2 0x100 DUP7 ADD MLOAD PUSH2 0x4DEC SWAP2 DUP12 SWAP1 PUSH2 0x575B JUMP JUMPDEST PUSH1 0x20 DUP7 ADD MSTORE JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x4B83 JUMP JUMPDEST POP PUSH1 0x20 DUP4 ADD MLOAD DUP4 MLOAD GT ISZERO PUSH2 0x4E21 JUMPI POP POP PUSH1 0x20 DUP2 ADD MLOAD SWAP1 MLOAD PUSH1 0x0 SWAP5 POP SUB SWAP2 POP DUP3 SWAP1 POP PUSH2 0x1D6D JUMP JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH1 0x0 SWAP5 POP DUP5 SWAP4 POP SUB SWAP1 POP PUSH2 0x1D6D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2174 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x11 DUP2 MSTORE PUSH1 0x20 ADD PUSH17 0x6164646974696F6E206F766572666C6F77 PUSH1 0x78 SHL DUP2 MSTORE POP PUSH2 0x5783 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x4E80 DUP8 DUP8 PUSH2 0x4EBC JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4E93 JUMPI INVALID JUMPDEST EQ PUSH2 0x4EA4 JUMPI POP SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH2 0x3A6E JUMP JUMPDEST PUSH2 0x4EAE DUP2 DUP7 PUSH2 0x581E JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 DUP4 ADD DUP5 DUP2 LT PUSH2 0x4ED4 JUMPI PUSH1 0x0 SWAP3 POP SWAP1 POP PUSH2 0x4EDE JUMP JUMPDEST POP PUSH1 0x2 SWAP2 POP PUSH1 0x0 SWAP1 POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x1A SLOAD DUP2 LT ISZERO PUSH2 0x24FC JUMPI PUSH1 0x1A DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x4EFF JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 KECCAK256 ADD SLOAD PUSH1 0x40 DUP1 MLOAD PUSH3 0xE48B0F PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP7 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 PUSH4 0x1C9161E0 SWAP3 PUSH1 0x44 DUP1 DUP3 ADD SWAP4 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4F58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4F6C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 POP PUSH2 0x4EE8 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x4F8F DUP5 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x4B02 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4FA6 PUSH2 0x5A65 JUMP JUMPDEST PUSH2 0x4FB0 DUP5 DUP5 PUSH2 0x5841 JUMP JUMPDEST SWAP1 POP PUSH2 0x1721 DUP2 PUSH2 0x5862 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x4FC8 PUSH2 0x5A65 JUMP JUMPDEST PUSH2 0x4FD2 DUP7 DUP7 PUSH2 0x5871 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4FE5 JUMPI INVALID JUMPDEST EQ PUSH2 0x4FF6 JUMPI POP SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH2 0x4EDE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5001 DUP3 PUSH2 0x5862 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5018 PUSH2 0x499A JUMP JUMPDEST PUSH2 0x5028 JUMPI PUSH2 0x18D9 PUSH1 0x1 PUSH1 0x17 PUSH2 0x4A8D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x5055 JUMPI PUSH2 0x18D9 PUSH1 0xA PUSH1 0x16 PUSH2 0x4A8D JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFE9C44AE 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 0x508E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x50A2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x50B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x510B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6D61726B6572206D6574686F642072657475726E65642066616C736500000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5FE3B567 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 0x514E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5162 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5178 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x51BF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x35 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5D23 PUSH1 0x35 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xAC784DDC 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 0x51FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x520E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5224 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x5294 JUMPI DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6F307DC3 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 0x5263 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5277 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x528D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x5297 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP2 SWAP3 POP AND ISZERO PUSH2 0x52CE JUMPI PUSH2 0x52C6 PUSH1 0xA PUSH1 0x16 PUSH2 0x4A8D JUMP JUMPDEST SWAP2 POP POP PUSH2 0x18AA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x1 DUP1 DUP3 MSTORE PUSH1 0x0 PUSH1 0x20 DUP1 DUP5 ADD DUP3 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 DUP2 AND DUP1 DUP6 MSTORE PUSH1 0x9 DUP5 MSTORE DUP8 DUP6 KECCAK256 SWAP7 MLOAD DUP8 SLOAD PUSH1 0xFF NOT AND SWAP1 ISZERO ISZERO OR DUP8 SSTORE SWAP2 MLOAD SWAP6 DUP6 ADD SWAP6 SWAP1 SWAP6 SSTORE PUSH1 0xA DUP1 SLOAD SWAP5 DUP6 ADD SWAP1 SSTORE PUSH32 0xC65A7BB8D6351C1CF70C95A316CC6A92839C986682D98BC35F958F4883F9D2A8 SWAP1 SWAP4 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 DUP2 AND DUP6 OR SWAP1 SWAP2 SSTORE SWAP4 DUP7 AND DUP3 MSTORE PUSH1 0xF DUP2 MSTORE SWAP1 DUP5 SWAP1 KECCAK256 DUP1 SLOAD SWAP1 SWAP4 AND DUP3 OR SWAP1 SWAP3 SSTORE DUP3 MLOAD SWAP1 DUP2 MSTORE SWAP2 MLOAD PUSH32 0xCF583BB0C569EB967F806B11601C4CB93C10310485C67ADD5F8362C2F212321F SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x0 PUSH2 0x2174 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x53C8 JUMPI PUSH1 0x9 PUSH2 0x1DF9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP8 AND DUP4 MSTORE PUSH1 0x2 SWAP1 SWAP4 ADD SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x5400 JUMPI PUSH1 0x0 PUSH2 0x1DF9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x5410 DUP6 DUP8 DUP7 PUSH1 0x0 PUSH2 0x4B02 JUMP JUMPDEST SWAP2 SWAP4 POP SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 POP DUP3 PUSH1 0x15 DUP2 GT ISZERO PUSH2 0x5426 JUMPI INVALID JUMPDEST EQ PUSH2 0x5440 JUMPI DUP2 PUSH1 0x15 DUP2 GT ISZERO PUSH2 0x5437 JUMPI INVALID JUMPDEST SWAP3 POP POP POP PUSH2 0x2174 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x37AB JUMPI PUSH1 0x4 PUSH2 0x5437 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x1A SLOAD DUP2 LT ISZERO PUSH2 0x244D JUMPI PUSH1 0x1A DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x5467 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 KECCAK256 ADD SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x4E081C95 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP8 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP7 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 PUSH4 0x4E081C95 SWAP3 PUSH1 0x64 DUP1 DUP3 ADD SWAP4 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x54C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x54DD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 POP PUSH2 0x5450 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0xFF AND PUSH2 0x5518 JUMPI PUSH1 0x9 SWAP2 POP POP PUSH2 0x144A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 DUP3 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x1 EQ ISZERO PUSH2 0x554A JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x144A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 DUP5 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0xFF NOT SWAP1 SWAP2 AND DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x8 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP1 SLOAD SWAP2 DUP3 ADD DUP2 SSTORE DUP5 MSTORE DUP3 DUP5 KECCAK256 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP6 DUP11 AND SWAP6 SWAP1 SWAP6 OR SWAP1 SWAP5 SSTORE SWAP2 DUP2 MSTORE PUSH1 0xB SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x562B JUMPI PUSH1 0xC DUP1 SLOAD PUSH1 0x1 DUP1 DUP3 ADD DUP4 SSTORE PUSH32 0xDF6966C971051C3D54EC59162606531493A51404A002842F56009D7E5CF4A8C7 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SWAP5 OR SWAP1 SWAP4 SSTORE SWAP3 SLOAD PUSH1 0xD SWAP1 SWAP4 MSTORE KECCAK256 PUSH1 0x0 NOT SWAP1 SWAP2 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND DUP3 MSTORE DUP6 AND PUSH1 0x20 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x3AB23AB0D51CCCC0C3085AEC51F99228625AA1A922B3A8CA89A26B0F2027A1A5 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP PUSH1 0x0 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x5682 PUSH2 0x5A65 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH8 0xDE0B6B3A7640000 PUSH2 0x56A8 DUP7 PUSH1 0x0 ADD MLOAD DUP7 PUSH1 0x0 ADD MLOAD PUSH2 0x58D9 JUMP JUMPDEST DUP2 PUSH2 0x56AF JUMPI INVALID JUMPDEST DIV SWAP1 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x56C1 PUSH2 0x5A65 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x56EC PUSH2 0x56E5 DUP7 PUSH1 0x0 ADD MLOAD PUSH8 0xDE0B6B3A7640000 PUSH2 0x58D9 JUMP JUMPDEST DUP6 MLOAD PUSH2 0x591B JUMP JUMPDEST SWAP1 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x45B96FE442630264581B197E84BBADA861235052C5A1AADFFF9EA4E40A969AA0 DUP5 PUSH1 0x15 DUP2 GT ISZERO PUSH2 0x5724 JUMPI INVALID JUMPDEST DUP5 PUSH1 0x1B DUP2 GT ISZERO PUSH2 0x5730 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 DUP2 ADD DUP6 SWAP1 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 DUP4 PUSH1 0x15 DUP2 GT ISZERO PUSH2 0x1721 JUMPI INVALID JUMPDEST PUSH1 0x0 PUSH2 0x5765 PUSH2 0x5A65 JUMP JUMPDEST PUSH2 0x576F DUP6 DUP6 PUSH2 0x5841 JUMP JUMPDEST SWAP1 POP PUSH2 0x2170 PUSH2 0x577D DUP3 PUSH2 0x5862 JUMP JUMPDEST DUP5 PUSH2 0x4E3A JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 ADD DUP3 DUP6 DUP3 LT ISZERO PUSH2 0x5815 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x57DA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x57C2 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x5807 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 DUP4 GT PUSH2 0x5835 JUMPI POP PUSH1 0x0 SWAP1 POP DUP2 DUP4 SUB PUSH2 0x4EDE JUMP JUMPDEST POP PUSH1 0x3 SWAP1 POP PUSH1 0x0 PUSH2 0x4EDE JUMP JUMPDEST PUSH2 0x5849 PUSH2 0x5A65 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x56EC DUP6 PUSH1 0x0 ADD MLOAD DUP6 PUSH2 0x58D9 JUMP JUMPDEST MLOAD PUSH8 0xDE0B6B3A7640000 SWAP1 DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x587B PUSH2 0x5A65 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x588C DUP7 PUSH1 0x0 ADD MLOAD DUP7 PUSH2 0x594E JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x589F JUMPI INVALID JUMPDEST EQ PUSH2 0x58BE JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x4EDE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2174 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x17 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x6D756C7469706C69636174696F6E206F766572666C6F77000000000000000000 DUP2 MSTORE POP PUSH2 0x598D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2174 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xE DUP2 MSTORE PUSH1 0x20 ADD PUSH14 0x646976696465206279207A65726F PUSH1 0x90 SHL DUP2 MSTORE POP PUSH2 0x5A03 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH2 0x5961 JUMPI POP PUSH1 0x0 SWAP1 POP DUP1 PUSH2 0x4EDE JUMP JUMPDEST DUP4 DUP4 MUL DUP4 DUP6 DUP3 DUP2 PUSH2 0x596E JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x5982 JUMPI POP PUSH1 0x2 SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH2 0x4EDE JUMP JUMPDEST PUSH1 0x0 SWAP3 POP SWAP1 POP PUSH2 0x4EDE JUMP JUMPDEST PUSH1 0x0 DUP4 ISZERO DUP1 PUSH2 0x599A JUMPI POP DUP3 ISZERO JUMPDEST ISZERO PUSH2 0x59A7 JUMPI POP PUSH1 0x0 PUSH2 0x2174 JUMP JUMPDEST DUP4 DUP4 MUL DUP4 DUP6 DUP3 DUP2 PUSH2 0x59B4 JUMPI INVALID JUMPDEST DIV EQ DUP4 SWAP1 PUSH2 0x5815 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x57DA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x57C2 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x5A52 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x57DA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x57C2 JUMP JUMPDEST POP DUP3 DUP5 DUP2 PUSH2 0x5A5C JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP2 SLOAD DUP2 DUP4 SSTORE DUP2 DUP2 GT ISZERO PUSH2 0x24FC JUMPI PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 PUSH2 0x24FC SWAP2 DUP2 ADD SWAP1 DUP4 ADD PUSH2 0x5B06 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x140 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x5ADA PUSH2 0x5A65 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x5AE7 PUSH2 0x5A65 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x5AF4 PUSH2 0x5A65 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x5B01 PUSH2 0x5A65 JUMP JUMPDEST SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH2 0x1A48 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x5B20 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x5B0C JUMP JUMPDEST POP SWAP1 JUMP INVALID MSTORE PUSH6 0x776172647344 PUSH10 0x737472696275746F7220 PUSH4 0x6F6E7472 PUSH2 0x6374 KECCAK256 PUSH2 0x6C72 PUSH6 0x616479206164 PUSH5 0x656463616E PUSH15 0x6F742070617573652061206D61726B PUSH6 0x742074686174 KECCAK256 PUSH10 0x73206E6F74206C697374 PUSH6 0x6443616E206E PUSH16 0x74207265706179206D6F726520746861 PUSH15 0x2074686520746F74616C20626F7272 PUSH16 0x77436F6D7074726F6C6C65723A5F6166 PUSH21 0x65724E6F6E5265656E7472616E743A2063616C6C65 PUSH19 0x206E6F74206C6973746564206173206D61726B PUSH6 0x746F6E6C7920 PUSH17 0x6175736520677561726469616E20616E64 KECCAK256 PUSH2 0x646D PUSH10 0x6E2063616E2070617573 PUSH6 0x6F6E6C792061 PUSH5 0x6D696E2063 PUSH2 0x6E20 PUSH20 0x657420626F72726F772063617020677561726469 PUSH2 0x6E6F PUSH15 0x6C7920696D706C656D656E74617469 PUSH16 0x6E206D61792063616C6C205F6265636F PUSH14 0x65496D706C656D656E746174696F PUSH15 0x436F6D7074726F6C6C65723A5F6265 PUSH7 0x6F72654E6F6E52 PUSH6 0x656E7472616E PUSH21 0x3A2063616C6C6572206E6F74206C69737465642061 PUSH20 0x206D61726B65746F6E6C792061646D696E206F72 KECCAK256 PUSH3 0x6F7272 PUSH16 0x772063617020677561726469616E2063 PUSH2 0x6E20 PUSH20 0x657420626F72726F772063617073657869744D61 PUSH19 0x6B65743A206765744163636F756E74536E6170 PUSH20 0x686F74206661696C65646F6E6C792061646D696E KECCAK256 PUSH16 0x7220626F72726F772063617020677561 PUSH19 0x6469616E2063616E2073657420737570706C79 KECCAK256 PUSH4 0x61707343 PUSH2 0x6E6E PUSH16 0x7420737570706F72742061206D61726B PUSH6 0x742077697468 KECCAK256 PUSH2 0x2064 PUSH10 0x66666572656E7420436F PUSH14 0x7074726F6C6C65722E6F6E6C7920 PUSH22 0x6E6974726F6C6C65722061646D696E2063616E206368 PUSH2 0x6E67 PUSH6 0x20627261696E PUSH20 0xA265627A7A7231582035A49F711967E2D51921C4 0xBA 0xC LOG4 0xC0 PUSH31 0xDDA37B01175127A26CE1CEF35824A57D64736F6C6343000511003200000000 ","sourceMap":"533:63476:13:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;533:63476:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;140:41:15;;;:::i;:::-;;;;;;;;;;;;;;;;;;5376:42:16;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5376:42:16;-1:-1:-1;;;;;5376:42:16;;:::i;:::-;;;;;;;;;;;;;;;;711:33;;;:::i;3435:41::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3435:41:16;-1:-1:-1;;;;;3435:41:16;;:::i;59415:495:13:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;59415:495:13;;;;;;;;;;:::i;60649:447::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;60649:447:13;-1:-1:-1;;;;;60649:447:13;;:::i;:::-;;22045:441;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;22045:441:13;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;5014:32:16:-;;;:::i;:::-;;;;-1:-1:-1;;;;;5014:32:16;;;;;;;;;;;;;;19918:201:13;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;19918:201:13;;;;;;;;;;;;;;;;;;:::i;21217:515::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;21217:515:13;;;;;;;;;;;;;;;;;;;;;;:::i;4374:28:16:-;;;:::i;482:27::-;;;:::i;60287:356:13:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;60287:356:13;;;;:::i;594:37:16:-;;;:::i;44602:1150:13:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;44602:1150:13;;:::i;3564:53:16:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3564:53:16;-1:-1:-1;;;;;3564:53:16;;:::i;61899:102:13:-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;61899:102:13;;;;;;;;;;;;;;;;;62391:118;;;:::i;57550:543::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;57550:543:13;-1:-1:-1;;;;;57550:543:13;;:::i;58920:489::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;58920:489:13;;;;;;;;;;:::i;4408:31:16:-;;;:::i;12873:429:13:-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;12873:429:13;;;;;;;;;;;;;;;;;;;;;;:::i;24931:527::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;24931:527:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;5191:42:16:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5191:42:16;-1:-1:-1;;;;;5191:42:16;;:::i;1670:40::-;;;:::i;33260:401:13:-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;33260:401:13;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;10642:1908;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;10642:1908:13;;;;;;;;;;;;;;;;;:::i;48015:1474::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;48015:1474:13;;:::i;55694:589::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;55694:589:13;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;55694:589:13;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;55694:589:13;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;55694:589:13;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;55694:589:13;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;55694:589:13;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;55694:589:13;;-1:-1:-1;55694:589:13;-1:-1:-1;55694:589:13;:::i;15332:340::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;15332:340:13;;;;;;;;;;;;;;;;;;;;;;:::i;2903:26:16:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2903:26:16;;:::i;43755:554:13:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;43755:554:13;-1:-1:-1;;;;;43755:554:13;;:::i;20418:312::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;20418:312:13;;;;;;;;;;;;;;;;;:::i;61102:286::-;;;:::i;31907:264::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;31907:264:13;-1:-1:-1;;;;;31907:264:13;;:::i;58324:590::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;58324:590:13;-1:-1:-1;;;;;58324:590:13;;:::i;22930:1537::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;22930:1537:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;56797:589::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;56797:589:13;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;56797:589:13;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;56797:589:13;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;56797:589:13;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;56797:589:13;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;56797:589:13;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;56797:589:13;;-1:-1:-1;56797:589:13;-1:-1:-1;56797:589:13;:::i;63789:218::-;;;:::i;29247:334::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;29247:334:13;;;;;;;;;;;;;;;;;;;;;;:::i;4617:52:16:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4617:52:16;-1:-1:-1;;;;;4617:52:16;;:::i;27345:458:13:-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;27345:458:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;4561:50:16:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4561:50:16;-1:-1:-1;;;;;4561:50:16;;:::i;3150:29::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3150:29:16;;:::i;18679:869:13:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;18679:869:13;;;;;;;;:::i;1381:25:16:-;;;:::i;52851:1508:13:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;52851:1508:13;-1:-1:-1;;;;;52851:1508:13;;:::i;4484:34:16:-;;;:::i;2817:41::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2817:41:16;-1:-1:-1;;;;;2817:41:16;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;59916:365:13;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;59916:365:13;;;;:::i;4262:161::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4262:161:13;;;;;;;;;;:::i;62745:345::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;62745:345:13;-1:-1:-1;;;;;62745:345:13;;:::i;40658:657::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;40658:657:13;;;;:::i;3837:41:16:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3837:41:16;-1:-1:-1;;;;;3837:41:16;;:::i;51471:1022:13:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;51471:1022:13;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;51471:1022:13;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;51471:1022:13;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;51471:1022:13;;-1:-1:-1;51471:1022:13;-1:-1:-1;51471:1022:13;;:::i;3823:170::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3823:170:13;-1:-1:-1;;;;;3823:170:13;;:::i;4524:31:16:-;;;:::i;61604:97:13:-;;;:::i;3690:28:16:-;;;:::i;39625:784:13:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;39625:784:13;-1:-1:-1;;;;;39625:784:13;;:::i;1083:40:16:-;;;:::i;28260:671:13:-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;28260:671:13;;;;;;;;;;;;;;;;;;;;;;:::i;4682:368::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4682:368:13;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;4682:368:13;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4682:368:13;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;4682:368:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;4682:368:13;;-1:-1:-1;4682:368:13;;-1:-1:-1;;;;;4682:368:13:i;37839:1527::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;37839:1527:13;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5501:36:16;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5501:36:16;;:::i;41564:1966:13:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;41564:1966:13;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;41564:1966:13;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;41564:1966:13;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;41564:1966:13;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;41564:1966:13;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;41564:1966:13;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;41564:1966:13;;-1:-1:-1;41564:1966:13;-1:-1:-1;41564:1966:13;:::i;63347:245::-;;;:::i;62207:103::-;;;:::i;25911:983::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;25911:983:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;3938:31:16:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3938:31:16;;:::i;54571:599:13:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;54571:599:13;;;;:::i;16104:2299::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;16104:2299:13;;;;;;;;;;;;;;;;;:::i;1982:49:16:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1982:49:16;;;;;;;;:::i;1188:47::-;;;:::i;4821:30::-;;;:::i;46117:1605:13:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;46117:1605:13;;;;;;;;:::i;4445:33:16:-;;;:::i;1523:31::-;;;:::i;13744:398:13:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;13744:398:13;;;;;;;;;;;;;;;;;:::i;6939:3235::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6939:3235:13;-1:-1:-1;;;;;6939:3235:13;;:::i;386:20:16:-;;;:::i;140:41:15:-;177:4;140:41;:::o;5376:42:16:-;;;;;;;;;;;;;:::o;711:33::-;;;-1:-1:-1;;;711:33:16;;;;;:::o;3435:41::-;;;;;;;;;;;;;;;:::o;59415:495:13:-;-1:-1:-1;;;;;59508:24:13;;59484:4;59508:24;;;:7;:24;;;;;:33;;;59500:86;;;;-1:-1:-1;;;59500:86:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;59618:13;;-1:-1:-1;;;;;59618:13:13;59604:10;:27;;:47;;;59635:16;:14;:16::i;:::-;59596:99;;;;-1:-1:-1;;;59596:99:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;59713:16;:14;:16::i;:::-;:33;;;-1:-1:-1;59742:4:13;59733:13;;;;59713:33;59705:68;;;;;-1:-1:-1;;;59705:68:13;;;;;;;;;;;;-1:-1:-1;;;59705:68:13;;;;;;;;;;;;;;;-1:-1:-1;;;;;59784:37:13;;;;;;:20;:37;;;;;;;;;:45;;;;;-1:-1:-1;;59784:45:13;;;;;;;;59844:37;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;59844:37:13;;;;;;;;;;;;;;-1:-1:-1;59898:5:13;59415:495;;;;;:::o;60649:447::-;60715:10;275:42:16;60715:32:13;:67;;;;;60751:10;-1:-1:-1;;;;;60751:29:13;;:31;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;60751:31:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;60751:31:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;60751:31:13;60715:67;60714:138;;;;60802:10;-1:-1:-1;;;;;60802:16:13;;:18;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;60802:18:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;60802:18:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;60802:18:13;-1:-1:-1;;;;;60788:32:13;:10;:32;:63;;;;;60824:10;-1:-1:-1;;;;;60824:25:13;;:27;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;60824:27:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;60824:27:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;60824:27:13;60788:63;60706:190;;;;-1:-1:-1;;;60706:190:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;60907:17;60927:10;-1:-1:-1;;;;;60927:32:13;;:34;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;60927:34:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;60927:34:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;60927:34:13;;-1:-1:-1;60979:17:13;;60971:51;;;;;-1:-1:-1;;;60971:51:13;;;;;;;;;;;;-1:-1:-1;;;60971:51:13;;;;;;;;;;;;;;;61053:10;-1:-1:-1;;;;;61033:54:13;;:56;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;61033:56:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;61033:56:13;;;;60649:447;;:::o;22045:441::-;;;;;;:::o;5014:32:16:-;;;;;;-1:-1:-1;;;;;5014:32:16;;:::o;19918:201:13:-;20042:4;;20092:20;20085:27;;19918:201;;;;;;;:::o;21217:515::-;-1:-1:-1;;;;;21511:15:13;;21363:4;21511:15;;;:7;:15;;;;;:24;;;21506:92;;21563:23;21558:29;21551:36;;;;21506:92;21644:43;21670:6;21678:8;21644:25;:43::i;:::-;21710:14;21705:20;;4374:28:16;;;-1:-1:-1;;;;;4374:28:16;;:::o;482:27::-;;;-1:-1:-1;;;;;482:27:16;;:::o;60287:356:13:-;60378:13;;60340:4;;-1:-1:-1;;;;;60378:13:13;60364:10;:27;;:47;;;60395:16;:14;:16::i;:::-;60356:99;;;;-1:-1:-1;;;60356:99:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;60473:16;:14;:16::i;:::-;:33;;;-1:-1:-1;60502:4:13;60493:13;;;;60473:33;60465:68;;;;;-1:-1:-1;;;60465:68:13;;;;;;;;;;;;-1:-1:-1;;;60465:68:13;;;;;;;;;;;;;;;60544:19;:27;;;;;-1:-1:-1;;;60544:27:13;;-1:-1:-1;;;;60544:27:13;;;;;;;;;;60586:28;;;;;;;;;;;;;;;;;;-1:-1:-1;;;60586:28:13;;;;;;;;;;;;;;-1:-1:-1;60631:5:13;60287:356;;;;:::o;594:37:16:-;;;-1:-1:-1;;;594:37:16;;;;;:::o;44602:1150:13:-;44674:7;44731:16;:14;:16::i;:::-;44726:121;;44770:66;44775:18;44795:40;44770:4;:66::i;:::-;44763:73;;;;44726:121;44881:28;;:::i;:::-;-1:-1:-1;44912:39:13;;;;;;;;;;;;44961:19;;:::i;:::-;-1:-1:-1;44983:39:13;;;;;;;;;3012:7;44983:39;;45036:47;45055:17;44983:39;45036:18;:47::i;:::-;45032:158;;;45106:73;45111:26;45139:39;45106:4;:73::i;:::-;45099:80;;;;;;45032:158;45200:20;;:::i;:::-;-1:-1:-1;45223:39:13;;;;;;;;;3136:6;45223:39;;45276:41;45223:39;45299:17;45276:11;:41::i;:::-;45272:152;;;45340:73;45345:26;45373:39;45340:4;:73::i;:::-;45333:80;;;;;;;45272:152;45537:19;;;45566:44;;;;45648:59;;;;;;;;;;;;;;;;;;;;;;;;;45730:14;45725:20;45718:27;44602:1150;-1:-1:-1;;;;;;44602:1150:13:o;3564:53:16:-;;;;;;;;;;;;-1:-1:-1;;;;;3564:53:16;;:::o;61899:102:13:-;61947:16;61982:12;61975:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;61975:19:13;;;;;;;;;;;;;;;;;;;;;;;61899:102;;:::o;62391:118::-;62448:16;62483:19;62476:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;62476:26:13;;;;;;;;;;;;;;;;;;;;;;62391:118;:::o;57550:543::-;57638:16;:14;:16::i;:::-;57630:67;;;;-1:-1:-1;;;57630:67:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;57790:17;;;-1:-1:-1;;;;;57885:40:13;;;57790:17;57885:40;;;-1:-1:-1;;;;;;57885:40:13;;;;;;58022:64;;;57790:17;;;;;;;;58022:64;;;;;;;;;;;;57790:17;;58022:64;;;;;;;;;57550:543;;:::o;58920:489::-;-1:-1:-1;;;;;59011:24:13;;58987:4;59011:24;;;:7;:24;;;;;:33;;;59003:86;;;;-1:-1:-1;;;59003:86:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;59121:13;;-1:-1:-1;;;;;59121:13:13;59107:10;:27;;:47;;;59138:16;:14;:16::i;:::-;59099:99;;;;-1:-1:-1;;;59099:99:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;59216:16;:14;:16::i;:::-;:33;;;-1:-1:-1;59245:4:13;59236:13;;;;59216:33;59208:68;;;;;-1:-1:-1;;;59208:68:13;;;;;;;;;;;;-1:-1:-1;;;59208:68:13;;;;;;;;;;;;;;;-1:-1:-1;;;;;59287:35:13;;;;;;:18;:35;;;;;;;;;:43;;;;;-1:-1:-1;;59287:43:13;;;;;;;;59345:35;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;59345:35:13;;;;;;;;;;;;;;-1:-1:-1;59397:5:13;58920:489;-1:-1:-1;58920:489:13:o;4408:31:16:-;;;-1:-1:-1;;;4408:31:16;;;;;:::o;12873:429:13:-;-1:-1:-1;;;;;;;13271:17:13;;;;;:9;:17;;;;;:24;;-1:-1:-1;;13271:24:13;13291:4;13271:24;;;-1:-1:-1;12873:429:13:o;24931:527::-;25395:57;;5191:42:16;;;;;;;;;;;;;:::o;1670:40::-;;;;:::o;33260:401:13:-;33432:4;33438;33444;33461:9;33472:14;33488;33506:98;33546:7;33562:12;33577;33591;33506:39;:98::i;:::-;33460:144;;;;;;33627:3;33622:9;;;;;;;;33614:40;-1:-1:-1;33633:9:13;;-1:-1:-1;33644:9:13;-1:-1:-1;;33260:401:13;;;;;;;;;:::o;10642:1908::-;-1:-1:-1;;;;;10834:26:13;;10730:4;10834:26;;;:18;:26;;;;;;;;10833:27;10825:54;;;;;-1:-1:-1;;;10825:54:13;;;;;;;;;;;;-1:-1:-1;;;10825:54:13;;;;;;;;;;;;;;;-1:-1:-1;;;;;11004:15:13;;;;;;:7;:15;;;;;:24;;;10999:92;;11056:23;11051:29;11044:36;;;;10999:92;11156:16;;;;:38;;;;-1:-1:-1;;;;;;11177:17:13;;;;;;:9;:17;;;;;;;;11176:18;11156:38;11152:112;;;11222:30;11217:36;;11152:112;-1:-1:-1;;;;;11319:18:13;;11302:14;11319:18;;;:10;:18;;;;;;11413:14;;11409:1009;;11443:14;11467:6;-1:-1:-1;;;;;11460:22:13;;:24;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11460:24:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11460:24:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11460:24:13;11518:29;;;-1:-1:-1;;;11518:29:13;;;;11460:24;;-1:-1:-1;11498:17:13;;-1:-1:-1;;;;;11518:27:13;;;;;:29;;;;;11460:24;;11518:29;;;;;;;:27;:29;;;5:2:-1;;;;30:1;27;20:12;5:2;11518:29:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11518:29:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11518:29:13;11582:30;;;-1:-1:-1;;;11582:30:13;;;;11518:29;;-1:-1:-1;11561:18:13;;-1:-1:-1;;;;;11582:28:13;;;;;:30;;;;;11518:29;;11582:30;;;;;;;:28;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;11582:30:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11582:30:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11582:30:13;11647;;;-1:-1:-1;;;11647:30:13;;;;11582;;-1:-1:-1;11626:18:13;;-1:-1:-1;;;;;11647:28:13;;;;;:30;;;;;11582;;11647;;;;;;;:28;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;11647:30:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11647:30:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11647:30:13;11713:31;;;-1:-1:-1;;;11713:31:13;;;;11647:30;;-1:-1:-1;11691:19:13;;-1:-1:-1;;;;;11713:29:13;;;;;:31;;;;;11647:30;;11713:31;;;;;;;:29;:31;;;5:2:-1;;;;30:1;27;20:12;5:2;11713:31:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11713:31:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11713:31:13;;-1:-1:-1;11875:17:13;;11924:97;11939:9;11950:12;11964:56;11969:34;11974:13;11989;11969:4;:34::i;:::-;12005:14;11964:4;:56::i;:::-;11924:14;:97::i;:::-;11874:147;;-1:-1:-1;11874:147:13;-1:-1:-1;12050:18:13;12039:7;:29;;;;;;;;;12035:64;;12082:16;12070:29;;;;;;;;;;;;12035:64;12114:30;12197:42;12205:21;12228:10;12197:7;:42::i;:::-;12158:81;;-1:-1:-1;12158:81:13;-1:-1:-1;12268:18:13;12257:7;:29;;;;;;;;;12253:64;;12300:16;12288:29;;;;;;;;;;;;;12253:64;12368:9;12340:25;:37;12332:75;;;;;-1:-1:-1;;;12332:75:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;11409:1009;;;;;;;;;12464:41;12490:6;12498;12464:25;:41::i;:::-;12528:14;12523:20;12516:27;;;10642:1908;;;;;;:::o;48015:1474::-;48105:4;48159:16;:14;:16::i;:::-;48154:130;;48198:75;48203:18;48223:49;48198:4;:75::i;48154:130::-;48359:34;;:::i;:::-;-1:-1:-1;48396:48:13;;;;;;;;;;;;48454:34;;:::i;:::-;-1:-1:-1;48491:48:13;;;;;;;;;3411:6;48491:48;;48553:61;48565:23;48491:48;48553:11;:61::i;:::-;48549:190;;;48637:91;48642:35;48679:48;48637:4;:91::i;48549:190::-;48749:34;;:::i;:::-;-1:-1:-1;48786:48:13;;;;;;;;;3559:6;48786:48;;48848:61;48786:48;48885:23;48848:11;:61::i;:::-;48844:190;;;48932:91;48937:35;48974:48;48932:4;:91::i;48844:190::-;49128:28;;;49221:62;;;;49355:89;;;;;;;;;;;;;;;;;;;;;;;;;49467:14;49462:20;;55694:589;55806:16;:14;:16::i;:::-;:51;;;-1:-1:-1;55840:17:13;;;;;-1:-1:-1;;;;;55840:17:13;55826:10;:31;55806:51;55798:117;;;;-1:-1:-1;;;55798:117:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;55945:7;55990:13;56029:15;;;;;:46;;;56062:13;56048:10;:27;56029:46;56021:72;;;;;-1:-1:-1;;;56021:72:13;;;;;;;;;;;;-1:-1:-1;;;56021:72:13;;;;;;;;;;;;;;;56108:6;56104:173;56124:10;56120:1;:14;56104:173;;;56189:13;;56203:1;56189:16;;;;;;;;;;;;;56155:10;:31;56174:7;;56182:1;56174:10;;;;;;;;;;;;;-1:-1:-1;;;;;56174:10:13;-1:-1:-1;;;;;56155:31:13;-1:-1:-1;;;;;56155:31:13;;;;;;;;;;;;:50;;;;56237:7;;56245:1;56237:10;;;;;;;;;;;;;-1:-1:-1;;;;;56237:10:13;-1:-1:-1;;;;;56224:42:13;;56249:13;;56263:1;56249:16;;;;;;;;;;;;;56224:42;;;;;;;;;;;;;;;;;;56136:3;;56104:173;;;;55694:589;;;;;;:::o;15332:340::-;15575:17;;:37;;;;;15611:1;15596:12;:16;15575:37;15571:95;;;15628:27;;;-1:-1:-1;;;15628:27:13;;;;;;;;;;;;-1:-1:-1;;;15628:27:13;;;;;;;;;;;;;;15571:95;15332:340;;;;:::o;2903:26:16:-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2903:26:16;;-1:-1:-1;2903:26:16;:::o;43755:554:13:-;43819:4;43873:16;:14;:16::i;:::-;43868:121;;43912:66;43917:18;43937:40;43912:4;:66::i;43868:121::-;44075:6;;;-1:-1:-1;;;;;44141:18:13;;;-1:-1:-1;;;;;;44141:18:13;;;;;;;44228:36;;;44075:6;;;;44228:36;;;;;;;;;;;;;;;;;;;;;;;44287:14;44275:27;43755:554;-1:-1:-1;;;43755:554:13:o;20418:312::-;;;;:::o;61102:286::-;61176:25;;-1:-1:-1;;;;;61176:25:13;61162:10;:39;61154:102;;;;-1:-1:-1;;;61154:102:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;61272:22;;;;;;;61267:115;;61310:11;:18;;-1:-1:-1;;;;61310:18:13;;;61324:4;61310:18;61342:29;61310:18;61342:29;;;61267:115;61102:286::o;31907:264::-;31974:4;31980;31986;32003:9;32014:14;32030;32048:65;32088:7;32104:1;32108;32111;32048:39;:65::i;:::-;32002:111;;;;;;32137:3;32132:9;;;;;;;;32124:40;32143:9;;-1:-1:-1;32143:9:13;-1:-1:-1;31907:264:13;-1:-1:-1;;;31907:264:13:o;58324:590::-;58393:4;58414:16;:14;:16::i;:::-;58409:123;;58453:68;58458:18;58478:42;58453:4;:68::i;58409:123::-;58620:13;;;-1:-1:-1;;;;;58703:32:13;;;-1:-1:-1;;;;;;58703:32:13;;;;;;;58820:49;;;58620:13;;;58820:49;;;58855:13;;;;58820:49;;;;;;;;;;;;;;;;58892:14;58887:20;;22930:1537;-1:-1:-1;;;;;23243:23:13;;23127:4;23243:23;;;:7;:23;;;;;:32;;;23242:33;;:72;;-1:-1:-1;;;;;;23280:25:13;;;;;;:7;:25;;;;;:34;;;23279:35;23242:72;23238:139;;;23342:23;23337:29;23330:36;;;;23238:139;23440:18;23468:14;-1:-1:-1;;;;;23461:42:13;;23504:8;23461:52;;;;;;;;;;;;;-1:-1:-1;;;;;23461:52:13;-1:-1:-1;;;;;23461:52:13;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23461:52:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23461:52:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23461:52:13;;-1:-1:-1;23602:36:13;23622:14;23602:12;:36::i;:::-;23598:825;;;23679:11;23662:13;:28;;23654:81;;;;-1:-1:-1;;;23654:81:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23598:825;;;23846:9;23859:14;23877:37;23905:8;23877:27;:37::i;:::-;23845:69;;-1:-1:-1;23845:69:13;;-1:-1:-1;23939:14:13;;-1:-1:-1;23932:3:13;:21;;;;;;;;;23928:76;;23985:3;23980:9;;;;;;;;23973:16;;;;;;;23928:76;24022:14;24018:94;;24068:28;24063:34;;24018:94;24218:13;24234:71;24253:36;;;;;;;;24268:19;;24253:36;;;24291:13;24234:18;:71::i;:::-;24218:87;;24337:8;24323:11;:22;24319:94;;;24377:20;24365:33;;;;;;;;24319:94;23598:825;;;;24445:14;24433:27;;;22930:1537;;;;;;;;:::o;56797:589::-;56909:16;:14;:16::i;:::-;:51;;;-1:-1:-1;56943:17:13;;;;;-1:-1:-1;;;;;56943:17:13;56929:10;:31;56909:51;56901:117;;;;-1:-1:-1;;;56901:117:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;57048:7;57093:13;57132:15;;;;;:46;;;57165:13;57151:10;:27;57132:46;57124:72;;;;;-1:-1:-1;;;57124:72:13;;;;;;;;;;;;-1:-1:-1;;;57124:72:13;;;;;;;;;;;;;;;57211:6;57207:173;57227:10;57223:1;:14;57207:173;;;57292:13;;57306:1;57292:16;;;;;;;;;;;;;57258:10;:31;57277:7;;57285:1;57277:10;;;;;;;;;;;;;-1:-1:-1;;;;;57277:10:13;-1:-1:-1;;;;;57258:31:13;-1:-1:-1;;;;;57258:31:13;;;;;;;;;;;;:50;;;;57340:7;;57348:1;57340:10;;;;;;;;;;;;;-1:-1:-1;;;;;57340:10:13;-1:-1:-1;;;;;57327:42:13;;57352:13;;57366:1;57352:16;;;;;;;;;;;;;57327:42;;;;;;;;;;;;;;;;;;57239:3;;57207:173;;63789:218;63854:10;63846:19;;;;:7;:19;;;;;:28;;;63838:100;;;;-1:-1:-1;;;63838:100:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;63948:11;:18;;-1:-1:-1;;63948:18:13;63962:4;63948:18;;;63789:218::o;29247:334::-;29518:57;;4617:52:16;;;;;;;;;;;;;;;:::o;4561:50::-;;;;;;;;;;;;;;;:::o;3150:29::-;;;;;;;;;;18679:869:13;18765:4;18819:17;275:42:16;-1:-1:-1;;;;;18839:22:13;;:24;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18839:24:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18839:24:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18839:24:13;;-1:-1:-1;18878:16:13;;18874:603;;19013:6;;;:41;;;-1:-1:-1;;;19013:41:13;;-1:-1:-1;;;;;19013:41:13;;;;;;;;;;;;18986:24;;19013:6;;;;:25;;:41;;;;;;;;;;;;;;;:6;:41;;;5:2:-1;;;;30:1;27;20:12;5:2;19013:41:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19013:41:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19013:41:13;;-1:-1:-1;19072:24:13;19068:60;;19110:17;19098:30;;;;;;19068:60;19143:17;19162:21;19187:74;19205:36;;;;;;;;19220:19;19205:36;;;19243:17;19187;:74::i;:::-;19142:119;;-1:-1:-1;19142:119:13;-1:-1:-1;19290:18:13;19279:7;:29;;;;;;;;;19275:64;;19322:16;19317:22;19310:29;;;;;;;;19275:64;19417:12;19398:16;:31;19394:72;;;19443:22;19438:28;;19394:72;18874:603;;;;19526:14;19514:27;18679:869;-1:-1:-1;;;;18679:869:13:o;1381:25:16:-;;;-1:-1:-1;;;;;1381:25:16;;:::o;52851:1508:13:-;52910:4;52961:16;:14;:16::i;:::-;52956:96;;52986:66;52991:18;53011:40;52986:4;:66::i;52956:96::-;-1:-1:-1;;;;;53115:24:13;;;;;;:7;:24;;;;;:33;;;53110:121;;53157:74;53162:23;53187:43;53157:4;:74::i;53110:121::-;53306:1;53283:6;-1:-1:-1;;;;;53283:18:13;;:20;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;53283:20:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;53283:20:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;53283:20:13;:24;53279:106;;;53316:69;53321:26;53349:35;53316:4;:69::i;53279:106::-;-1:-1:-1;;;;;53428:24:13;;;;;;:7;:24;;;;;;;;53421:31;;-1:-1:-1;;53421:31:13;;;;;;;;;53594:10;53564:40;;;;;;;;;;;;;;;;;:27;;:40;;;53594:10;53564:40;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;53564:40:13;;;;;;;;;;;;;;;;-1:-1:-1;;53625:18:13;;53564:40;;-1:-1:-1;53625:18:13;;-1:-1:-1;53614:8:13;;-1:-1:-1;;53684:155:13;53705:3;53701:1;:7;53684:155;;;53751:6;-1:-1:-1;;;;;53733:24:13;:11;53745:1;53733:14;;;;;;;;;;;;;;-1:-1:-1;;;;;53733:24:13;;53729:100;;;53790:1;53777:14;;53809:5;;53729:100;53710:3;;53684:155;;;;53965:3;53952:10;:16;53945:24;;;;54093:10;54104:17;;-1:-1:-1;;54104:21:13;;;54093:33;;;;;;;;;;;;;;;;54068:10;:22;;-1:-1:-1;;;;;54093:33:13;;;;54079:10;;54068:22;;;;;;;;;;;;;;;:58;;-1:-1:-1;;;;;;54068:58:13;-1:-1:-1;;;;;54068:58:13;;;;;;;;;;54136:10;:19;;;;;-1:-1:-1;;54136:19:13;;;:::i;:::-;;54274:1;54166:19;:90;54186:6;-1:-1:-1;;;;;54186:15:13;;:17;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;54186:17:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;54186:17:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;54186:17:13;:69;;54234:6;-1:-1:-1;;;;;54219:34:13;;:36;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;54219:36:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;54219:36:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;54219:36:13;54186:69;;;54214:1;54186:69;-1:-1:-1;;;;;54166:90:13;;;;;;;;;;;;;;;;;-1:-1:-1;54166:90:13;:111;;-1:-1:-1;;;;;;54166:111:13;;;;;;;;;;;54292:22;;;;;;;;;;;;;;;;;;54337:14;54325:27;52851:1508;-1:-1:-1;;;;;52851:1508:13:o;4484:34:16:-;;;-1:-1:-1;;;4484:34:16;;;;;:::o;2817:41::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;59916:365:13:-;60010:13;;59972:4;;-1:-1:-1;;;;;60010:13:13;59996:10;:27;;:47;;;60027:16;:14;:16::i;:::-;59988:99;;;;-1:-1:-1;;;59988:99:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;60105:16;:14;:16::i;:::-;:33;;;-1:-1:-1;60134:4:13;60125:13;;;;60105:33;60097:68;;;;;-1:-1:-1;;;60097:68:13;;;;;;;;;;;;-1:-1:-1;;;60097:68:13;;;;;;;;;;;;;;;60176:22;:30;;;;;-1:-1:-1;;;60176:30:13;;-1:-1:-1;;;;60176:30:13;;;;;;;;;;60221:31;;;;;;;;;;;;;;;;;;-1:-1:-1;;;60221:31:13;;;;;;;;;;;;;;-1:-1:-1;60269:5:13;59916:365::o;4262:161::-;-1:-1:-1;;;;;4365:24:13;;;4342:4;4365:24;;;:7;:24;;;;;;;;:51;;;;;:42;;;;:51;;;;;;4262:161;;;;:::o;62745:345::-;-1:-1:-1;;;;;62838:24:13;;62803:4;62838:24;;;:7;:24;;;;;:49;;;:54;:116;;;;-1:-1:-1;;;;;;62909:37:13;;;;;;:20;:37;;;;;;;;:45;;:37;:45;62838:116;:236;;;;;62971:95;62976:63;62981:6;-1:-1:-1;;;;;62981:28:13;;:30;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;62981:30:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;62981:30:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;62981:30:13;63013:25;;;-1:-1:-1;;;63013:25:13;;;;-1:-1:-1;;;;;63013:23:13;;;;;:25;;;;;62981:30;;63013:25;;;;;;;:23;:25;;;5:2:-1;;;;30:1;27;20:12;5:2;63013:25:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;63013:25:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;63013:25:13;62976:4;:63::i;:::-;63041:6;-1:-1:-1;;;;;63041:22:13;;:24;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;62971:95:13;63070:4;62971:103;62819:255;62745:345;-1:-1:-1;;62745:345:13:o;40658:657::-;40724:4;40778:16;:14;:16::i;:::-;40773:130;;40817:75;40822:18;40842:49;40817:4;:75::i;40773:130::-;40981:16;;;;:27;;;;;;40977:85;;;41036:14;41031:20;;40977:85;41133:16;:26;;;;;-1:-1:-1;;41133:26:13;;;;;;;;41234:36;;;;;;;;;;;;;;;;41293:14;41288:20;;3837:41:16;;;;;;;;;;;;;;;:::o;51471:1022:13:-;51620:4;51674:16;:14;:16::i;:::-;51669:119;;51713:64;51718:18;51738:38;51713:4;:64::i;51669:119::-;51925:18;;;-1:-1:-1;;;;;;;51953:25:13;;;;;;;51925:18;;;-1:-1:-1;52045:8:13;:92;;52098:39;;-1:-1:-1;;;52098:39:13;;;;;;;;;;;;;;;275:42:16;;52098:22:13;;52121:15;;;;52098:39;;;;;52121:15;;;;52098:39;1:33:-1;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;52098:39:13;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;52098:39:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;52098:39:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;52098:39:13;52045:92;;;52056:39;;-1:-1:-1;;;52056:39:13;;;;;;;;;;;;;;;275:42:16;;52056:22:13;;52079:15;;;;52056:39;;;;;52079:15;;;;52056:39;1:33:-1;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;52056:39:13;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;52056:39:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;52056:39:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;52056:39:13;52045:92;52206:18;:42;;-1:-1:-1;;;;52206:42:13;-1:-1:-1;;;52206:42:13;;;;;;;52022:116;-1:-1:-1;;52323:22:13;52022:116;52323:14;:22::i;:::-;52309:36;-1:-1:-1;52396:27:13;;:90;;52483:3;52396:90;;;52426:54;52447:6;52455:24;52426:20;:54::i;:::-;52389:97;51471:1022;-1:-1:-1;;;;;;;;51471:1022:13:o;3823:170::-;3884:15;3911:24;3938:13;:22;3952:7;-1:-1:-1;;;;;3938:22:13;-1:-1:-1;;;;;3938:22:13;;;;;;;;;;;;3911:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3911:49:13;;;;;;;;;;;;;;;;-1:-1:-1;3911:49:13;;3823:170;-1:-1:-1;;;;;;;3823:170:13:o;4524:31:16:-;;;-1:-1:-1;;;4524:31:16;;;;;:::o;61604:97:13:-;61650:15;61684:10;61677:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;61677:17:13;;;;;;;;;;;;;;;;;;;;;;61604:97;:::o;3690:28:16:-;;;;;;:::o;39625:784:13:-;39696:4;39750:16;:14;:16::i;:::-;39745:128;;39789:73;39794:18;39814:47;39789:4;:73::i;39745:128::-;39949:11;-1:-1:-1;;;;;39922:60:13;;:62;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;39922:62:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;39922:62:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;39922:62:13;39914:103;;;;;-1:-1:-1;;;39914:103:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;40082:6;40077:145;40098:19;:26;40094:30;;40077:145;;;40154:19;40174:1;40154:22;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;40139:37:13;;;40154:22;;40139:37;;40131:91;;;;-1:-1:-1;;;40131:91:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40126:3;;40077:145;;;-1:-1:-1;40276:19:13;27:10:-1;;39:1;23:18;;45:23;;-1:-1;40276:37:13;;;;;;;;-1:-1:-1;;;;;40276:37:13;;-1:-1:-1;;;;;;40276:37:13;;;;;;;;40328:36;;;;;;;;;;;;40276:37;40328:36;;;40387:14;40382:20;;1083:40:16;;;-1:-1:-1;;;;;1083:40:16;;:::o;28260:671:13:-;28470:22;;28366:4;;-1:-1:-1;;;28470:22:13;;;;28469:23;28461:54;;;;;-1:-1:-1;;;28461:54:13;;;;;;;;;;;;-1:-1:-1;;;28461:54:13;;;;;;;;;;;;;;;28646:12;28661:50;28683:6;28691:3;28696:14;28661:21;:50::i;:::-;28646:65;-1:-1:-1;28725:31:13;;28721:76;;28779:7;-1:-1:-1;28772:14:13;;28721:76;28843:43;28869:6;28877:3;28882;28843:25;:43::i;:::-;28909:14;28897:27;28260:671;-1:-1:-1;;;;;;28260:671:13:o;4682:368::-;4746:13;4771:8;4782:7;:14;4771:25;;4807:21;4842:3;4831:15;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;4831:15:13;-1:-1:-1;4807:39:13;-1:-1:-1;4861:6:13;4856:163;4877:3;4873:1;:7;4856:163;;;4901:13;4924:7;4932:1;4924:10;;;;;;;;;;;;;;4901:34;;4968:39;4988:6;4996:10;4968:19;:39::i;:::-;4963:45;;;;;;;;4950:7;4958:1;4950:10;;;;;;;;;;;;;;;;;:58;-1:-1:-1;4882:3:13;;4856:163;;;-1:-1:-1;5036:7:13;4682:368;-1:-1:-1;;;4682:368:13:o;37839:1527::-;38095:6;;;:49;;;-1:-1:-1;;;38095:49:13;;-1:-1:-1;;;;;38095:49:13;;;;;;;;;;;;37975:4;;;;;;38095:6;;;:25;;:49;;;;;;;;;;;;;;;:6;:49;;;5:2:-1;;;;30:1;27;20:12;5:2;38095:49:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;38095:49:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;38095:49:13;38185:6;;;:51;;;-1:-1:-1;;;38185:51:13;;-1:-1:-1;;;;;38185:51:13;;;;;;;;;;;;38095:49;;-1:-1:-1;38154:28:13;;38185:6;;;;;:25;;:51;;;;;38095:49;;38185:51;;;;;;;;:6;:51;;;5:2:-1;;;;30:1;27;20:12;5:2;38185:51:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;38185:51:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;38185:51:13;;-1:-1:-1;38250:26:13;;;:58;;-1:-1:-1;38280:28:13;;38250:58;38246:124;;;38337:17;38324:35;-1:-1:-1;38357:1:13;;-1:-1:-1;38324:35:13;;-1:-1:-1;;38324:35:13;38246:124;38755:25;38790:16;-1:-1:-1;;;;;38783:43:13;;:45;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;38783:45:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;38783:45:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;38783:45:13;;-1:-1:-1;38864:16:13;38890:20;;:::i;:::-;38920:22;;:::i;:::-;38952:16;;:::i;:::-;38991:91;38996:45;;;;;;;;39011:28;;38996:45;;;39043:38;;;;;;;;39058:21;39043:38;;;38991:4;:91::i;:::-;38979:103;;39106:85;39111:40;;;;;;;;39126:23;39111:40;;;39153:37;;;;;;;;39168:20;39153:37;;;39106:4;:85::i;:::-;39092:99;;39209:28;39214:9;39225:11;39209:4;:28::i;:::-;39201:36;;39262:44;39281:5;39288:17;39262:18;:44::i;:::-;39330:14;;-1:-1:-1;39248:58:13;-1:-1:-1;;;;;;;;37839:1527:13;;;;;;;:::o;5501:36:16:-;;;;;;;;;;41564:1966:13;41669:4;41723:16;:14;:16::i;:::-;41718:125;;41762:70;41767:18;41787:44;41762:4;:70::i;41718:125::-;41906:6;41901:1585;41918:20;;;41901:1585;;;41959:16;41978:9;;41988:1;41978:12;;;;;;;;;;;;;-1:-1:-1;;;;;41978:12:13;41959:31;;42009:8;;42018:1;42009:11;;;;;;;;;;;;;;42005:1471;;-1:-1:-1;;;;;42109:19:13;;;;;;:9;:19;;;;;;;;42104:220;;-1:-1:-1;;;;;42152:19:13;;;;;;:9;:19;;;;;;;;:26;;-1:-1:-1;;42152:26:13;42174:4;42152:26;;;;;;42200:14;27:10:-1;;23:18;;;45:23;;42200:29:13;;;;;;-1:-1:-1;;;;;;42200:29:13;;;;;42280:21;42251:26;;;:16;:26;;;;;-1:-1:-1;;42280:25:13;;;;42251:54;;42104:220;42005:1471;;;-1:-1:-1;;;;;42423:19:13;;;;;;:9;:19;;;;;;;;42419:1043;;;-1:-1:-1;;;;;42490:26:13;;42466:21;42490:26;;;:16;:26;;;;;;42692:14;:21;-1:-1:-1;;42692:25:13;42676:41;;42672:413;;;42767:14;42782:21;;42745:19;;42767:14;-1:-1:-1;;42782:25:13;;;42767:41;;;;;;;;;;;;;;;;42834:14;:29;;-1:-1:-1;;;;;42767:41:13;;;;-1:-1:-1;42767:41:13;;42849:13;;42834:29;;;;;;;;;;;;;;;;;;:43;;-1:-1:-1;;;;;;42834:43:13;-1:-1:-1;;;;;42834:43:13;;;;;;42963:29;;;;;;:16;:29;;;;;;:45;;;42672:413;43177:14;:23;;;;;-1:-1:-1;;43177:23:13;;;:::i;:::-;-1:-1:-1;;;;;;;43244:26:13;;43273:1;43244:26;;;:16;:26;;;;;;;;:30;;;43352:9;:19;;;;;:27;;-1:-1:-1;;43352:27:13;;;42419:1043;-1:-1:-1;41940:3:13;;41901:1585;;;-1:-1:-1;43508:14:13;43503:20;;63347:245;63413:10;63405:19;;;;:7;:19;;;;;:28;;;63397:101;;;;-1:-1:-1;;;63397:101:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;63516:11;;;;63508:48;;;;;-1:-1:-1;;;63508:48:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;63566:11;:19;;-1:-1:-1;;63566:19:13;;;63347:245::o;62207:103::-;62254:16;62289:14;62282:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;62282:21:13;;;;;;;;;;;;;;;;;;;;;;62207:103;:::o;25911:983::-;26202:19;;26098:4;;-1:-1:-1;;;26202:19:13;;;;26201:20;26193:48;;;;;-1:-1:-1;;;26193:48:13;;;;;;;;;;;;-1:-1:-1;;;26193:48:13;;;;;;;;;;;;;;;-1:-1:-1;;;;;26391:25:13;;;;;;:7;:25;;;;;:34;;;26390:35;;:72;;-1:-1:-1;;;;;;26430:23:13;;;;;;:7;:23;;;;;:32;;;26429:33;26390:72;26386:139;;;26490:23;26485:29;;26386:139;26643:14;-1:-1:-1;;;;;26636:34:13;;:36;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26636:36:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26636:36:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;26636:36:13;26594:38;;;-1:-1:-1;;;26594:38:13;;;;-1:-1:-1;;;;;26594:78:13;;;;:36;;;;;:38;;;;;26636:36;;26594:38;;;;;;;:36;:38;;;5:2:-1;;;;30:1;27;20:12;5:2;26594:38:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26594:38:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;26594:38:13;-1:-1:-1;;;;;26594:78:13;;26590:148;;26700:26;26695:32;;26590:148;26784:65;26810:16;26828:8;26838:10;26784:25;:65::i;3938:31:16:-;;;;;;;;;;54571:599:13;54637:4;54658:16;:14;:16::i;:::-;54653:140;;54697:85;54702:18;54722:59;54697:4;:85::i;54653:140::-;54870:18;;;;:29;;;;;;54866:62;;;54913:14;54908:20;;54866:62;54994:18;:28;;;;;-1:-1:-1;;54994:28:13;;;;;;;;55090:35;;;;;;;;;;;;;;;;55148:14;55143:20;;16104:2299;-1:-1:-1;;;;;16302:28:13;;16198:4;16302:28;;;:20;:28;;;;;;;;16301:29;16293:58;;;;;-1:-1:-1;;;16293:58:13;;;;;;;;;;;;-1:-1:-1;;;16293:58:13;;;;;;;;;;;;;;;-1:-1:-1;;;;;16405:15:13;;;;;;:7;:15;;;;;:24;;;16400:92;;16457:23;16452:29;;16400:92;-1:-1:-1;;;;;16507:15:13;;;;;;;:7;:15;;;;;;;;:43;;;;;:33;;;;:43;;;;;;16502:562;;16651:10;-1:-1:-1;;;;;16651:20:13;;;16643:54;;;;;-1:-1:-1;;;16643:54:13;;;;;;;;;;;;-1:-1:-1;;;16643:54:13;;;;;;;;;;;;;;;16765:9;16777:49;16804:10;16817:8;16777:19;:49::i;:::-;16765:61;-1:-1:-1;16851:14:13;16844:3;:21;;;;;;;;;16840:76;;16897:3;16892:9;;;;;;;;16885:16;;;;;16840:76;-1:-1:-1;;;;;17009:15:13;;;;;;;:7;:15;;;;;;;;:43;;;;;:33;;;;:43;;;;;;17002:51;;;;16502:562;;17125:6;;;:41;;;-1:-1:-1;;;17125:41:13;;-1:-1:-1;;;;;17125:41:13;;;;;;;;;;;;:6;;;;;:25;;:41;;;;;;;;;;;;;;;:6;:41;;;5:2:-1;;;;30:1;27;20:12;5:2;17125:41:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17125:41:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17125:41:13;17121:107;;17199:17;17194:23;;17121:107;17295:16;;;;:40;;;;-1:-1:-1;;;;;;17316:19:13;;;;;;:9;:19;;;;;;;;17315:20;17295:40;17291:114;;;17363:30;17358:36;;17291:114;-1:-1:-1;;;;;17460:18:13;;17443:14;17460:18;;;:10;:18;;;;;;17554:14;;17550:346;;17584:17;17611:6;-1:-1:-1;;;;;17604:27:13;;:29;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17604:29:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17604:29:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17604:29:13;;-1:-1:-1;17648:17:13;;17692:35;17604:29;17714:12;17692:7;:35::i;:::-;17647:80;;-1:-1:-1;17647:80:13;-1:-1:-1;17756:18:13;17745:7;:29;;;;;;;;;17741:64;;17788:16;17776:29;;;;;;;;17741:64;17846:9;17827:16;:28;17819:66;;;;;-1:-1:-1;;;17819:66:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;17550:346;;;;17942:43;17968:6;17976:8;17942:25;:43::i;:::-;18074:9;18087:14;18105:82;18145:8;18162:6;18171:1;18174:12;18105:39;:82::i;:::-;18073:114;;-1:-1:-1;18073:114:13;;-1:-1:-1;18208:14:13;;-1:-1:-1;18201:3:13;:21;;;;;;;;;18197:68;;18250:3;18245:9;;;;;;;;18238:16;;;;;;;18197:68;18278:13;;18274:85;;18319:28;18314:34;;18274:85;18381:14;18369:27;16104:2299;-1:-1:-1;;;;;;;16104:2299:13:o;1982:49:16:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1982:49:16;;-1:-1:-1;1982:49:16;;-1:-1:-1;1982:49:16:o;1188:47::-;;;-1:-1:-1;;;;;1188:47:16;;:::o;4821:30::-;;;;;;:::o;46117:1605:13:-;46212:7;46269:16;:14;:16::i;:::-;46264:126;;46308:71;46313:18;46333:45;46308:4;:71::i;:::-;46301:78;;;;46264:126;-1:-1:-1;;;;;46459:24:13;;46435:21;46459:24;;;:7;:24;;;;;46498:15;;;;46493:128;;46536:74;46541:23;46566:43;46536:4;:74::i;:::-;46529:81;;;;;46493:128;46631:33;;:::i;:::-;-1:-1:-1;46667:44:13;;;;;;;;;;;;46764:20;;:::i;:::-;-1:-1:-1;46787:44:13;;;;;;;;;3266:6;46787:44;;46845:46;46787:44;46868:22;46845:11;:46::i;:::-;46841:167;;;46914:83;46919:31;46952:44;46914:4;:83::i;:::-;46907:90;;;;;;;46841:167;47079:32;;;;;:74;;-1:-1:-1;47115:6:13;;;:33;;;-1:-1:-1;;;47115:33:13;;-1:-1:-1;;;;;47115:33:13;;;;;;;;;;;;:6;;;;;:25;;:33;;;;;;;;;;;;;;;:6;:33;;;5:2:-1;;;;30:1;27;20:12;5:2;47115:33:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;47115:33:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;47115:33:13;:38;47079:74;47075:184;;;47176:72;47181:17;47200:47;47176:4;:72::i;47075:184::-;47391:31;;;;;47432:61;;;;47592:85;;;-1:-1:-1;;;;;47592:85:13;;;;;;;;;;;;;;;;;;;;;;;;;;;47700:14;47688:27;46117:1605;-1:-1:-1;;;;;;;46117:1605:13:o;4445:33:16:-;;;-1:-1:-1;;;4445:33:16;;;;;:::o;1523:31::-;;;;:::o;13744:398:13:-;13838:4;13854:12;13869:53;13891:6;13899:8;13909:12;13869:21;:53::i;:::-;13854:68;-1:-1:-1;13936:31:13;;13932:76;;13990:7;-1:-1:-1;13983:14:13;;6939:3235;7000:4;7016:13;7039;7016:37;;7142:9;7153:15;7170;7191:6;-1:-1:-1;;;;;7191:25:13;;7217:10;7191:37;;;;;;;;;;;;;-1:-1:-1;;;;;7191:37:13;-1:-1:-1;;;;;7191:37:13;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7191:37:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7191:37:13;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;7191:37:13;;;;;;;;;;;;;-1:-1:-1;7191:37:13;;-1:-1:-1;7191:37:13;-1:-1:-1;7246:9:13;;7238:59;;;;-1:-1:-1;;;7238:59:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7392:15;;7388:125;;7430:72;7435:28;7465:36;7430:4;:72::i;:::-;7423:79;;;;;;;;7388:125;7603:12;7618:60;7640:13;7655:10;7667;7618:21;:60::i;:::-;7603:75;-1:-1:-1;7692:12:13;;7688:121;;7727:71;7738:15;7755:33;7790:7;7727:10;:71::i;:::-;7720:78;;;;;;;;;7688:121;-1:-1:-1;;;;;7849:24:13;;7819:27;7849:24;;;:7;:24;;;;;;;;7995:10;7964:42;;:30;;;:42;;;;;;;;;7959:101;;8034:14;8022:27;;;;;;;;;;7959:101;8161:10;8130:42;;;;:30;;;:42;;;;;;;;8123:49;;-1:-1:-1;;8123:49:13;;;8328:13;:25;;;;;;8296:57;;;;;;;;;;;;;;;;;:29;;:57;;;8328:25;8296:57;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8296:57:13;;;;;;;;;;;;;;;;-1:-1:-1;;8374:20:13;;8296:57;;-1:-1:-1;8374:20:13;;-1:-1:-1;8363:8:13;;-1:-1:-1;;8435:157:13;8456:3;8452:1;:7;8435:157;;;8504:6;-1:-1:-1;;;;;8484:26:13;:13;8498:1;8484:16;;;;;;;;;;;;;;-1:-1:-1;;;;;8484:26:13;;8480:102;;;8543:1;8530:14;;8562:5;;8480:102;8461:3;;8435:157;;;;8718:3;8705:10;:16;8698:24;;;;8865:10;8821:27;8851:25;;;:13;:25;;;;;8922:17;;8851:25;;-1:-1:-1;;8922:21:13;;;8911:33;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8911:33:13;8886:10;8897;8886:22;;;;;;;;;;;;;;;;;:58;;-1:-1:-1;;;;;;8886:58:13;-1:-1:-1;;;;;8886:58:13;;;;;;;;;;8954:19;;;;-1:-1:-1;;8954:19:13;;;:::i;:::-;-1:-1:-1;9077:17:13;;9073:1009;;9155:10;9115:21;9139:27;;;:15;:27;;;;;;9324:12;:19;-1:-1:-1;;9324:23:13;9308:39;;9304:371;;;9389:12;9402:19;;9367;;9389:12;-1:-1:-1;;9402:23:13;;;9389:37;;;;;;;;;;;;;;;;9444:12;:27;;-1:-1:-1;;;;;9389:37:13;;;;-1:-1:-1;9389:37:13;;9457:13;;9444:27;;;;;;;;;;;;;;;;;;:41;;-1:-1:-1;;;;;;9444:41:13;-1:-1:-1;;;;;9444:41:13;;;;;;9563:28;;;;;;:15;:28;;;;;;:44;;;9304:371;9750:12;:21;;;;;-1:-1:-1;;9750:21:13;;;:::i;:::-;-1:-1:-1;;9823:10:13;9837:1;9807:27;;;:15;:27;;;;;;;;:31;;;9905:9;:21;;;;;:29;;-1:-1:-1;;9905:29:13;;;9073:1009;10097:32;;;-1:-1:-1;;;;;10097:32:13;;;;10118:10;10097:32;;;;;;;;;;;;;;;;;10152:14;10140:27;6939:3235;-1:-1:-1;;;;;;;;;;;;6939:3235:13:o;386:20:16:-;;;-1:-1:-1;;;;;386:20:16;;:::o;842:178::-;891:4;929:5;;-1:-1:-1;;;;;929:5:16;915:10;:19;:37;;;;-1:-1:-1;938:14:16;;-1:-1:-1;;;938:14:16;;;;915:37;914:99;;;-1:-1:-1;958:10:16;275:42;958:32;:54;;;;-1:-1:-1;994:18:16;;-1:-1:-1;;;994:18:16;;;;958:54;907:106;;842:178;:::o;30193:246:13:-;30286:9;30281:151;30305:19;:26;30301:30;;30281:151;;;30365:19;30385:1;30365:22;;;;;;;;;;;;;;;;;30338:94;;;-1:-1:-1;;;30338:94:13;;-1:-1:-1;;;;;30338:94:13;;;;;;;;;;;;;;;;30365:22;;;;;30338:76;;:94;;;;;;;;;;;30365:22;;30338:94;;;5:2:-1;;;;30:1;27;20:12;5:2;30338:94:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;30333:3:13;;;;;-1:-1:-1;30281:151:13;;-1:-1:-1;30281:151:13;2325:149:20;2386:4;2407:33;2420:3;2415:9;;;;;;;;2431:4;2426:10;;;;;;;;2407:33;;;;;;;;;;;;;2438:1;2407:33;;;;;;;;;;;;;2463:3;2458:9;;;;;;;1907:147:22;2033:14;2016:13;;:31;;;1907:147::o;1701:139::-;1819:14;1803:13;;:30;;1701:139::o;34426:2885:13:-;34607:5;34614:4;34620;34637:37;;:::i;:::-;-1:-1:-1;;;;;34810:22:13;;34721:9;34810:22;;;:13;:22;;;;;;;;34785:47;;;;;;;;;;;;;;;;;:22;;:47;;34810:22;34785:47;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;34785:47:13;;;;;;;;;;;;;;;;-1:-1:-1;34785:47:13;;-1:-1:-1;34847:6:13;;-1:-1:-1;;;;34842:2126:13;34863:6;:13;34859:1;:17;34842:2126;;;34897:12;34912:6;34919:1;34912:9;;;;;;;;;;;;;;34897:24;;35079:5;-1:-1:-1;;;;;35079:24:13;;35104:7;35079:33;;;;;;;;;;;;;-1:-1:-1;;;;;35079:33:13;-1:-1:-1;;;;;35079:33:13;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;35079:33:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;35079:33:13;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;35079:33:13;;;;;;;;;;;;;;;;;35050:25;;35003:109;35030:18;;;35003:109;;;;35010:18;;;35003:109;;;;35079:33;-1:-1:-1;35130:9:13;;35126:164;;-1:-1:-1;35248:20:13;;-1:-1:-1;35270:1:13;;-1:-1:-1;35270:1:13;;-1:-1:-1;35240:35:13;;-1:-1:-1;;;;35240:35:13;35126:164;35327:65;;;;;;;;;-1:-1:-1;;;;;35342:23:13;;;-1:-1:-1;35342:23:13;;;:7;:23;;;;;:48;;;35327:65;;35303:21;;;:89;;;;35426:42;;;;;;;-1:-1:-1;;;35441:25:13;35426:42;;35406:17;;;:62;35563:6;;;:32;;-1:-1:-1;;;35563:32:13;;;;;;;;;;;:6;;;:25;;:32;;;;;35327:65;35563:32;;;;;:6;:32;;;5:2:-1;;;;30:1;27;20:12;5:2;35563:32:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;35563:32:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;35563:32:13;35536:24;;;:59;;;35609:100;;-1:-1:-1;35670:17:13;;-1:-1:-1;35689:1:13;;-1:-1:-1;35689:1:13;;-1:-1:-1;35662:32:13;;-1:-1:-1;;;;35662:32:13;35609:100;35741:41;;;;;;;;;35756:24;;;;35741:41;;35722:16;;;:60;35921:21;;;;35944:17;;;;35911:70;;35916:46;;:4;:46::i;:::-;35964:4;:16;;;35911:4;:70::i;:::-;35890:18;;;:91;;;36125:18;;;;36145;;36079:85;;35890:91;36125:18;36079:25;:85::i;:::-;36058:106;;36300:16;;;;36318:18;;;;36338:25;;;;36274:90;;36300:16;36318:18;36274:25;:90::i;:::-;36246:25;;;:118;-1:-1:-1;;;;;36449:21:13;;;;;;;36445:513;;;36623:86;36649:4;:18;;;36669:12;36683:4;:25;;;36623;:86::i;:::-;36595:25;;;:114;;;36885:16;;;;36859:84;;36903:12;;36859:25;:84::i;:::-;36831:25;;;:112;36445:513;-1:-1:-1;34878:3:13;;34842:2126;;;-1:-1:-1;37074:25:13;;;;37053:18;;:46;37049:256;;;-1:-1:-1;;37160:25:13;;;;37139:18;;37123:14;;-1:-1:-1;37139:46:13;;-1:-1:-1;37123:14:13;;-1:-1:-1;37115:74:13;;37049:256;-1:-1:-1;;37275:18:13;;37247:25;;;;;37228:14;;-1:-1:-1;37228:14:13;;-1:-1:-1;37247:46:13;;-1:-1:-1;37220:74:13;;3095:114:22;3148:4;3171:31;3176:1;3179;3171:31;;;;;;;;;;;;;-1:-1:-1;;;3171:31:22;;;:4;:31::i;1926:263:12:-;1997:9;2008:4;2025:14;2041:8;2053:13;2061:1;2064;2053:7;:13::i;:::-;2024:42;;-1:-1:-1;2024:42:12;-1:-1:-1;2089:18:12;2081:4;:26;;;;;;;;;2077:73;;-1:-1:-1;2131:4:12;-1:-1:-1;2137:1:12;;-1:-1:-1;2123:16:12;;2077:73;2167:15;2175:3;2180:1;2167:7;:15::i;:::-;2160:22;;;;;;1926:263;;;;;;:::o;1612:250::-;1668:9;;1704:5;;;1724:6;;;1720:136;;1754:18;;-1:-1:-1;1774:1:12;-1:-1:-1;1746:30:12;;1720:136;-1:-1:-1;1815:26:12;;-1:-1:-1;1843:1:12;;-1:-1:-1;1612:250:12;;;;;;:::o;29782:246:13:-;29875:9;29870:151;29894:19;:26;29890:30;;29870:151;;;29954:19;29974:1;29954:22;;;;;;;;;;;;;;;;;29927:94;;;-1:-1:-1;;;29927:94:13;;-1:-1:-1;;;;;29927:94:13;;;;;;;;;;;;;;;;29954:22;;;;;29927:76;;:94;;;;;;;;;;;29954:22;;29927:94;;;5:2:-1;;;;30:1;27;20:12;5:2;29927:94:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;29922:3:13;;;;;-1:-1:-1;29870:151:13;;-1:-1:-1;29870:151:13;32450:185;32527:5;32534:4;32540;32563:65;32603:7;32619:1;32623;32626;32563:39;:65::i;:::-;32556:72;;;;;;32450:185;;;;;:::o;1106:171:22:-;1184:4;1200:18;;:::i;:::-;1221:15;1226:1;1229:6;1221:4;:15::i;:::-;1200:36;;1253:17;1262:7;1253:8;:17::i;2431:306:21:-;2508:9;2519:4;2536:13;2551:18;;:::i;:::-;2573:20;2583:1;2586:6;2573:9;:20::i;:::-;2535:58;;-1:-1:-1;2535:58:21;-1:-1:-1;2614:18:21;2607:3;:25;;;;;;;;;2603:71;;-1:-1:-1;2656:3:21;-1:-1:-1;2661:1:21;;-1:-1:-1;2648:15:21;;2603:71;2692:18;2712:17;2721:7;2712:8;:17::i;:::-;2684:46;;;;;;2431:306;;;;;:::o;49808:1316:13:-;49865:4;49919:16;:14;:16::i;:::-;49914:119;;49958:64;49963:18;49983:38;49958:4;:64::i;49914:119::-;-1:-1:-1;;;;;50084:24:13;;;;;;:7;:24;;;;;:33;;;50080:139;;;50140:68;50145:27;50174:33;50140:4;:68::i;50080:139::-;50294:6;-1:-1:-1;;;;;50294:15:13;;:17;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;50294:17:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;50294:17:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;50294:17:13;50286:58;;;;;-1:-1:-1;;;50286:58:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;50448:4;-1:-1:-1;;;;;50407:46:13;50415:6;-1:-1:-1;;;;;50415:18:13;;:20;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;50415:20:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;50415:20:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;50415:20:13;-1:-1:-1;;;;;50407:46:13;;50399:112;;;;-1:-1:-1;;;50399:112:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;50572:18;50593:6;-1:-1:-1;;;;;50593:15:13;;:17;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;50593:17:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;50593:17:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;50593:17:13;:69;;50641:6;-1:-1:-1;;;;;50626:34:13;;:36;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;50626:36:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;50626:36:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;50626:36:13;50593:69;;;50621:1;50593:69;-1:-1:-1;;;;;50685:31:13;;;50729:1;50685:31;;;:19;:31;;;;;;50572:90;;-1:-1:-1;50685:31:13;50677:54;50673:160;;50754:68;50759:27;50788:33;50754:4;:68::i;:::-;50747:75;;;;;50673:160;50908:53;;;;;;;;50926:4;50908:53;;;-1:-1:-1;50908:53:13;;;;;;;-1:-1:-1;;;;;50881:24:13;;;;;;:7;:24;;;;;:80;;;;-1:-1:-1;;50881:80:13;;;;;;;;;;;;;;;;50971:10;27::-1;;23:18;;;45:23;;50971::13;;;;;;-1:-1:-1;;;;;;50971:23:13;;;;;;;;51004:31;;;;;:19;:31;;;;;;:40;;;;;;;;;;51059:20;;;;;;;;;;;;;;;;;51102:14;51097:20;;14148:851;-1:-1:-1;;;;;14276:15:13;;14255:4;14276:15;;;:7;:15;;;;;:24;;;14271:92;;14328:23;14323:29;;14271:92;-1:-1:-1;;;;;14471:15:13;;;;;;;:7;:15;;;;;;;;:43;;;;;:33;;;;:43;;;;;;14466:102;;14542:14;14537:20;;14466:102;14670:9;14683:14;14701:82;14741:8;14758:6;14767:12;14781:1;14701:39;:82::i;:::-;14669:114;;-1:-1:-1;14669:114:13;;-1:-1:-1;14804:14:13;;-1:-1:-1;14797:3:13;:21;;;;;;;;;14793:68;;14846:3;14841:9;;;;;;;;14834:16;;;;;;14793:68;14874:13;;14870:85;;14915:28;14910:34;;30681:254;30782:9;30777:151;30801:19;:26;30797:30;;30777:151;;;30861:19;30881:1;30861:22;;;;;;;;;;;;;;;;;30834:94;;;-1:-1:-1;;;30834:94:13;;-1:-1:-1;;;;;30834:94:13;;;;;;;;;;;;;;;;;;;;;;;30861:22;;;;;30834:76;;:94;;;;;;;;;;;30861:22;;30834:94;;;5:2:-1;;;;30:1;27;20:12;5:2;30834:94:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;30829:3:13;;;;;-1:-1:-1;30777:151:13;;-1:-1:-1;30777:151:13;5328:1226;-1:-1:-1;;;;;5455:24:13;;5408:5;5455:24;;;:7;:24;;;;;5495:21;;;;5490:132;;5588:23;5581:30;;;;;5490:132;-1:-1:-1;;;;;5636:40:13;;;;;;:30;;;:40;;;;;;;;:48;;:40;:48;5632:130;;;5737:14;5730:21;;;;;5632:130;-1:-1:-1;;;;;6143:40:13;;;;;;;:30;;;:40;;;;;;;;:47;;6186:4;-1:-1:-1;;6143:47:13;;;;;;;;6200:13;:23;;;;;27:10:-1;;23:18;;;45:23;;6200:36:13;;;;;;;;-1:-1:-1;;;;;;6200:36:13;;;;;;;;;;;6291:19;;;:9;:19;;;;;6143:47;6291:19;6286:183;;6326:12;27:10:-1;;39:1;23:18;;;45:23;;6326:27:13;;;;;;-1:-1:-1;;;;;;6326:27:13;-1:-1:-1;;;;;6326:27:13;;;;;;;;-1:-1:-1;6367:19:13;;;:9;6326:27;6367:19;;;;;;;:26;;-1:-1:-1;;6367:26:13;;;;;;;6435:19;;6407:15;:25;;;;-1:-1:-1;;6435:23:13;;;6407:51;;6286:183;6484:31;;;-1:-1:-1;;;;;6484:31:13;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6533:14:13;;5328:1226;-1:-1:-1;;;5328:1226:13:o;3997:157:22:-;4062:10;;:::i;:::-;4091:56;;;;;;;;409:4;4106:28;4111:1;:10;;;4123:1;:10;;;4106:4;:28::i;:::-;:39;;;;;;4091:56;;4084:63;3997:157;-1:-1:-1;;;3997:157:22:o;5252:162::-;5317:10;;:::i;:::-;5346:61;;;;;;;;5361:44;5366:26;5371:1;:10;;;409:4;5366;:26::i;:::-;5394:10;;5361:4;:44::i;:::-;5346:61;;5339:68;5252:162;-1:-1:-1;;;5252:162:22:o;2592:183:20:-;2677:4;2698:43;2711:3;2706:9;;;;;;;;2722:4;2717:10;;;;;;;;2698:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;2764:3;2759:9;;;;;;;1417:205:22;1515:4;1531:18;;:::i;:::-;1552:15;1557:1;1560:6;1552:4;:15::i;:::-;1531:36;;1584:31;1589:17;1598:7;1589:8;:17::i;:::-;1608:6;1584:4;:31::i;3215:175::-;3296:4;3321:5;;;3352:12;3344:6;;;;3336:29;;;;-1:-1:-1;;;3336:29:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3336:29:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3382:1:22;3215:175;-1:-1:-1;;;;3215:175:22:o;1302:230:12:-;1358:9;1369:4;1394:1;1389;:6;1385:141;;-1:-1:-1;1419:18:12;;-1:-1:-1;1439:5:12;;;1411:34;;1385:141;-1:-1:-1;1484:27:12;;-1:-1:-1;1513:1:12;1476:39;;4160:131:22;4219:10;;:::i;:::-;4248:36;;;;;;;;4263:19;4268:1;:10;;;4280:1;4263:4;:19::i;788:210::-;968:12;409:4;968:23;;;788:210::o;1977:346:21:-;2046:9;2057:10;;:::i;:::-;2080:14;2096:19;2119:27;2127:1;:10;;;2139:6;2119:7;:27::i;:::-;2079:67;;-1:-1:-1;2079:67:21;-1:-1:-1;2168:18:21;2160:4;:26;;;;;;;;;2156:90;;-1:-1:-1;2216:18:21;;;;;;;;;-1:-1:-1;2216:18:21;;2210:4;;-1:-1:-1;2216:18:21;-1:-1:-1;2202:33:21;;2156:90;2284:31;;;;;;;;;;;;-1:-1:-1;;2284:31:21;;-1:-1:-1;1977:346:21;-1:-1:-1;;;;1977:346:21:o;4877:120:22:-;4930:4;4953:37;4958:1;4961;4953:37;;;;;;;;;;;;;;;;;:4;:37::i;6152:111::-;6205:4;6228:28;6233:1;6236;6228:28;;;;;;;;;;;;;-1:-1:-1;;;6228:28:22;;;:4;:28::i;542:331:12:-;598:9;;629:6;625:67;;-1:-1:-1;659:18:12;;-1:-1:-1;659:18:12;651:30;;625:67;711:5;;;715:1;711;:5;:1;731:5;;;;;:10;727:140;;-1:-1:-1;765:26:12;;-1:-1:-1;793:1:12;;-1:-1:-1;757:38:12;;727:140;834:18;;-1:-1:-1;854:1:12;-1:-1:-1;826:30:12;;5003:243:22;5084:4;5104:6;;;:16;;-1:-1:-1;5114:6:22;;5104:16;5100:55;;;-1:-1:-1;5143:1:22;5136:8;;5100:55;5173:5;;;5177:1;5173;:5;:1;5196:5;;;;;:10;5208:12;5188:33;;;;;-1:-1:-1;;;5188:33:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;6269:154:22;6350:4;6381:12;6374:5;6366:28;;;;-1:-1:-1;;;6366:28:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;6366:28:22;;6415:1;6411;:5;;;;;;;6269:154;-1:-1:-1;;;;6269:154:22:o;533:63476:13:-;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;"},"methodIdentifiers":{"_addRewardsDistributor(address)":"b9b5b153","_afterNonReentrant()":"632e5142","_become(address)":"1d504dc6","_becomeImplementation()":"5d72de62","_beforeNonReentrant()":"c90c20b1","_borrowGuardianPaused()":"e6653f3d","_deployMarket(bool,bytes,uint256)":"aba35b98","_mintGuardianPaused()":"3c94786f","_setBorrowCapGuardian(address)":"391957d7","_setBorrowPaused(address,bool)":"18c882a5","_setCloseFactor(uint256)":"317b0b77","_setCollateralFactor(address,uint256)":"e4028eee","_setLiquidationIncentive(uint256)":"4fd42e17","_setMarketBorrowCaps(address[],uint256[])":"607ef6c1","_setMarketSupplyCaps(address[],uint256[])":"51a485e4","_setMintPaused(address,bool)":"3bcf7ec1","_setPauseGuardian(address)":"5f5af1aa","_setPriceOracle(address)":"55ee1fe1","_setSeizePaused(bool)":"2d70db78","_setTransferPaused(bool)":"8ebf6364","_setWhitelistEnforcement(bool)":"952adf5a","_setWhitelistStatuses(address[],bool[])":"c8c9c975","_toggleAutoImplementations(bool)":"d5333166","_unsupportMarket(address)":"819605a8","accountAssets(address,uint256)":"dce15449","admin()":"f851a440","adminHasRights()":"0a755ec2","allBorrowers(uint256)":"7515bafa","allMarkets(uint256)":"52d84d1e","autoImplementation()":"dd5cd22c","borrowAllowed(address,address,uint256)":"da3d454c","borrowCapGuardian()":"21af4569","borrowCaps(address)":"4a584432","borrowGuardianPaused(address)":"6d154ea5","borrowVerify(address,address,uint256)":"5c778605","borrowWithinLimits(address,uint256)":"779b2294","cTokensByUnderlying(address)":"31ff47fa","checkMembership(address,address)":"929fe9a1","closeFactorMantissa()":"e8755446","comptrollerImplementation()":"bb82aa5e","enforceWhitelist()":"b0957210","enterMarkets(address[])":"c2998238","exitMarket(address)":"ede4edd0","fuseAdminHasRights()":"2f1069ba","getAccountLiquidity(address)":"5ec88c79","getAllBorrowers()":"32abcdbe","getAllMarkets()":"b0772d0b","getAssetsIn(address)":"abfceffc","getHypotheticalAccountLiquidity(address,address,uint256,uint256)":"4e79238f","getRewardsDistributors()":"3605b51b","getWhitelist()":"d01f63f5","isComptroller()":"007e3dd2","isDeprecated(address)":"94543c15","liquidateBorrowAllowed(address,address,address,address,uint256)":"5fc7e71e","liquidateBorrowVerify(address,address,address,address,uint256,uint256)":"47ef3b3b","liquidateCalculateSeizeTokens(address,address,uint256)":"c488847b","liquidationIncentiveMantissa()":"4ada90af","markets(address)":"8e8f294b","mintAllowed(address,address,uint256)":"4ef4c3e1","mintGuardianPaused(address)":"731f0c2b","mintVerify(address,address,uint256,uint256)":"41c728b9","mintWithinLimits(address,uint256,uint256,uint256)":"2259192a","oracle()":"7dc0d1d0","pauseGuardian()":"24a3d622","pendingAdmin()":"26782247","pendingComptrollerImplementation()":"dcfbc0c7","redeemAllowed(address,address,uint256)":"eabe7d91","redeemVerify(address,address,uint256,uint256)":"51dff989","repayBorrowAllowed(address,address,address,uint256)":"24008a62","repayBorrowVerify(address,address,address,uint256,uint256)":"1ededc91","rewardsDistributors(uint256)":"c6c5b0dd","seizeAllowed(address,address,address,address,uint256)":"d02f7351","seizeGuardianPaused()":"ac0b0bb7","seizeVerify(address,address,address,address,uint256)":"6d35bf91","suppliers(address)":"16dc15fe","supplyCaps(address)":"02c3bcbb","transferAllowed(address,address,address,uint256)":"bdcdc258","transferGuardianPaused()":"87f76303","transferVerify(address,address,address,uint256)":"6a56947e","whitelist(address)":"9b19251a","whitelistArray(uint256)":"d251fefc"}},"metadata":"{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"action\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"pauseState\",\"type\":\"bool\"}],\"name\":\"ActionPaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract CToken\",\"name\":\"cToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"action\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"pauseState\",\"type\":\"bool\"}],\"name\":\"ActionPaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"rewardsDistributor\",\"type\":\"address\"}],\"name\":\"AddedRewardsDistributor\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"AutoImplementationsToggled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"error\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"info\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"detail\",\"type\":\"uint256\"}],\"name\":\"Failure\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract CToken\",\"name\":\"cToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"MarketEntered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract CToken\",\"name\":\"cToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"MarketExited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract CToken\",\"name\":\"cToken\",\"type\":\"address\"}],\"name\":\"MarketListed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract CToken\",\"name\":\"cToken\",\"type\":\"address\"}],\"name\":\"MarketUnlisted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract CToken\",\"name\":\"cToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newBorrowCap\",\"type\":\"uint256\"}],\"name\":\"NewBorrowCap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldBorrowCapGuardian\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newBorrowCapGuardian\",\"type\":\"address\"}],\"name\":\"NewBorrowCapGuardian\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldCloseFactorMantissa\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newCloseFactorMantissa\",\"type\":\"uint256\"}],\"name\":\"NewCloseFactor\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract CToken\",\"name\":\"cToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldCollateralFactorMantissa\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newCollateralFactorMantissa\",\"type\":\"uint256\"}],\"name\":\"NewCollateralFactor\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldLiquidationIncentiveMantissa\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newLiquidationIncentiveMantissa\",\"type\":\"uint256\"}],\"name\":\"NewLiquidationIncentive\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldPauseGuardian\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newPauseGuardian\",\"type\":\"address\"}],\"name\":\"NewPauseGuardian\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract PriceOracle\",\"name\":\"oldPriceOracle\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract PriceOracle\",\"name\":\"newPriceOracle\",\"type\":\"address\"}],\"name\":\"NewPriceOracle\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract CToken\",\"name\":\"cToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newSupplyCap\",\"type\":\"uint256\"}],\"name\":\"NewSupplyCap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"enforce\",\"type\":\"bool\"}],\"name\":\"WhitelistEnforcementChanged\",\"type\":\"event\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"distributor\",\"type\":\"address\"}],\"name\":\"_addRewardsDistributor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"_afterNonReentrant\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contract Unitroller\",\"name\":\"unitroller\",\"type\":\"address\"}],\"name\":\"_become\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"_becomeImplementation\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"_beforeNonReentrant\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"_borrowGuardianPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bool\",\"name\":\"isCEther\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"constructorData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"collateralFactorMantissa\",\"type\":\"uint256\"}],\"name\":\"_deployMarket\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"_mintGuardianPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"newBorrowCapGuardian\",\"type\":\"address\"}],\"name\":\"_setBorrowCapGuardian\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contract CToken\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"state\",\"type\":\"bool\"}],\"name\":\"_setBorrowPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newCloseFactorMantissa\",\"type\":\"uint256\"}],\"name\":\"_setCloseFactor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contract CToken\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"newCollateralFactorMantissa\",\"type\":\"uint256\"}],\"name\":\"_setCollateralFactor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newLiquidationIncentiveMantissa\",\"type\":\"uint256\"}],\"name\":\"_setLiquidationIncentive\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contract CToken[]\",\"name\":\"cTokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"newBorrowCaps\",\"type\":\"uint256[]\"}],\"name\":\"_setMarketBorrowCaps\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contract CToken[]\",\"name\":\"cTokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"newSupplyCaps\",\"type\":\"uint256[]\"}],\"name\":\"_setMarketSupplyCaps\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contract CToken\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"state\",\"type\":\"bool\"}],\"name\":\"_setMintPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"newPauseGuardian\",\"type\":\"address\"}],\"name\":\"_setPauseGuardian\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contract PriceOracle\",\"name\":\"newOracle\",\"type\":\"address\"}],\"name\":\"_setPriceOracle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bool\",\"name\":\"state\",\"type\":\"bool\"}],\"name\":\"_setSeizePaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bool\",\"name\":\"state\",\"type\":\"bool\"}],\"name\":\"_setTransferPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bool\",\"name\":\"enforce\",\"type\":\"bool\"}],\"name\":\"_setWhitelistEnforcement\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"suppliers\",\"type\":\"address[]\"},{\"internalType\":\"bool[]\",\"name\":\"statuses\",\"type\":\"bool[]\"}],\"name\":\"_setWhitelistStatuses\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"_toggleAutoImplementations\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contract CToken\",\"name\":\"cToken\",\"type\":\"address\"}],\"name\":\"_unsupportMarket\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"accountAssets\",\"outputs\":[{\"internalType\":\"contract CToken\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"adminHasRights\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"allBorrowers\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"allMarkets\",\"outputs\":[{\"internalType\":\"contract CToken\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"autoImplementation\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"borrowAmount\",\"type\":\"uint256\"}],\"name\":\"borrowAllowed\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"borrowCapGuardian\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"borrowCaps\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"borrowGuardianPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"borrowAmount\",\"type\":\"uint256\"}],\"name\":\"borrowVerify\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"accountBorrowsNew\",\"type\":\"uint256\"}],\"name\":\"borrowWithinLimits\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"cTokensByUnderlying\",\"outputs\":[{\"internalType\":\"contract CToken\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"contract CToken\",\"name\":\"cToken\",\"type\":\"address\"}],\"name\":\"checkMembership\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"closeFactorMantissa\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"comptrollerImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"enforceWhitelist\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"cTokens\",\"type\":\"address[]\"}],\"name\":\"enterMarkets\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cTokenAddress\",\"type\":\"address\"}],\"name\":\"exitMarket\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"fuseAdminHasRights\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getAccountLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getAllBorrowers\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getAllMarkets\",\"outputs\":[{\"internalType\":\"contract CToken[]\",\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getAssetsIn\",\"outputs\":[{\"internalType\":\"contract CToken[]\",\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"cTokenModify\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"redeemTokens\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"borrowAmount\",\"type\":\"uint256\"}],\"name\":\"getHypotheticalAccountLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getRewardsDistributors\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getWhitelist\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isComptroller\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"contract CToken\",\"name\":\"cToken\",\"type\":\"address\"}],\"name\":\"isDeprecated\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cTokenBorrowed\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"cTokenCollateral\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"liquidator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"repayAmount\",\"type\":\"uint256\"}],\"name\":\"liquidateBorrowAllowed\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cTokenBorrowed\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"cTokenCollateral\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"liquidator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"actualRepayAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"seizeTokens\",\"type\":\"uint256\"}],\"name\":\"liquidateBorrowVerify\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cTokenBorrowed\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"cTokenCollateral\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"actualRepayAmount\",\"type\":\"uint256\"}],\"name\":\"liquidateCalculateSeizeTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"liquidationIncentiveMantissa\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"markets\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isListed\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"collateralFactorMantissa\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"mintAmount\",\"type\":\"uint256\"}],\"name\":\"mintAllowed\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"mintGuardianPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"actualMintAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"mintTokens\",\"type\":\"uint256\"}],\"name\":\"mintVerify\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exchangeRateMantissa\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"accountTokens\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"mintAmount\",\"type\":\"uint256\"}],\"name\":\"mintWithinLimits\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"oracle\",\"outputs\":[{\"internalType\":\"contract PriceOracle\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"pauseGuardian\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"pendingAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"pendingComptrollerImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"redeemer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"redeemTokens\",\"type\":\"uint256\"}],\"name\":\"redeemAllowed\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"redeemer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"redeemAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"redeemTokens\",\"type\":\"uint256\"}],\"name\":\"redeemVerify\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"repayAmount\",\"type\":\"uint256\"}],\"name\":\"repayBorrowAllowed\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"actualRepayAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"borrowerIndex\",\"type\":\"uint256\"}],\"name\":\"repayBorrowVerify\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"rewardsDistributors\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cTokenCollateral\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"cTokenBorrowed\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"liquidator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"seizeTokens\",\"type\":\"uint256\"}],\"name\":\"seizeAllowed\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"seizeGuardianPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cTokenCollateral\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"cTokenBorrowed\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"liquidator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"seizeTokens\",\"type\":\"uint256\"}],\"name\":\"seizeVerify\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"suppliers\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"supplyCaps\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"transferTokens\",\"type\":\"uint256\"}],\"name\":\"transferAllowed\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"transferGuardianPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"transferTokens\",\"type\":\"uint256\"}],\"name\":\"transferVerify\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"whitelist\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"whitelistArray\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Compound\",\"details\":\"This contract should not to be deployed alone; instead, deploy `Unitroller` (proxy contract) on top of this `Comptroller` (logic/implementation contract).\",\"methods\":{\"_addRewardsDistributor(address)\":{\"details\":\"Admin function to add a RewardsDistributor contract\",\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"_afterNonReentrant()\":{\"details\":\"Called by cTokens after a non-reentrant function for pool-wide reentrancy prevention. Prevents pool-wide/cross-asset reentrancy exploits like AMP on Cream.\"},\"_beforeNonReentrant()\":{\"details\":\"Called by cTokens before a non-reentrant function for pool-wide reentrancy prevention. Prevents pool-wide/cross-asset reentrancy exploits like AMP on Cream.\"},\"_deployMarket(bool,bytes,uint256)\":{\"details\":\"Admin function to deploy cToken, set isListed, and add support for the market and set the collateral factor\",\"return\":\"uint 0=success, otherwise a failure. (See enum Error for details)\"},\"_setBorrowCapGuardian(address)\":{\"params\":{\"newBorrowCapGuardian\":\"The address of the new Borrow Cap Guardian\"}},\"_setCloseFactor(uint256)\":{\"details\":\"Admin function to set closeFactor\",\"params\":{\"newCloseFactorMantissa\":\"New close factor, scaled by 1e18\"},\"return\":\"uint 0=success, otherwise a failure. (See ErrorReporter for details)\"},\"_setCollateralFactor(address,uint256)\":{\"details\":\"Admin function to set per-market collateralFactor\",\"params\":{\"cToken\":\"The market to set the factor on\",\"newCollateralFactorMantissa\":\"The new collateral factor, scaled by 1e18\"},\"return\":\"uint 0=success, otherwise a failure. (See ErrorReporter for details)\"},\"_setLiquidationIncentive(uint256)\":{\"details\":\"Admin function to set liquidationIncentive\",\"params\":{\"newLiquidationIncentiveMantissa\":\"New liquidationIncentive scaled by 1e18\"},\"return\":\"uint 0=success, otherwise a failure. (See ErrorReporter for details)\"},\"_setMarketBorrowCaps(address[],uint256[])\":{\"details\":\"Admin or borrowCapGuardian function to set the borrow caps. A borrow cap of 0 corresponds to unlimited borrowing.\",\"params\":{\"cTokens\":\"The addresses of the markets (tokens) to change the borrow caps for\",\"newBorrowCaps\":\"The new borrow cap values in underlying to be set. A value of 0 corresponds to unlimited borrowing.\"}},\"_setMarketSupplyCaps(address[],uint256[])\":{\"details\":\"Admin or borrowCapGuardian function to set the supply caps. A supply cap of 0 corresponds to unlimited supplying.\",\"params\":{\"cTokens\":\"The addresses of the markets (tokens) to change the supply caps for\",\"newSupplyCaps\":\"The new supply cap values in underlying to be set. A value of 0 corresponds to unlimited supplying.\"}},\"_setPauseGuardian(address)\":{\"params\":{\"newPauseGuardian\":\"The address of the new Pause Guardian\"},\"return\":\"uint 0=success, otherwise a failure. (See enum Error for details)\"},\"_setPriceOracle(address)\":{\"details\":\"Admin function to set a new price oracle\",\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"_setWhitelistEnforcement(bool)\":{\"details\":\"Admin function to set a new whitelist enforcement boolean\",\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"_setWhitelistStatuses(address[],bool[])\":{\"details\":\"Admin function to set the whitelist `statuses` for `suppliers`\",\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"_toggleAutoImplementations(bool)\":{\"params\":{\"enabled\":\"If the feature is to be enabled\"},\"return\":\"uint 0=success, otherwise a failure. (See enum Error for details)\"},\"_unsupportMarket(address)\":{\"details\":\"Admin function unset isListed and collateralFactorMantissa and unadd support for the market\",\"params\":{\"cToken\":\"The address of the market (token) to unlist\"},\"return\":\"uint 0=success, otherwise a failure. (See enum Error for details)\"},\"borrowAllowed(address,address,uint256)\":{\"params\":{\"borrowAmount\":\"The amount of underlying the account would borrow\",\"borrower\":\"The account which would borrow the asset\",\"cToken\":\"The market to verify the borrow against\"},\"return\":\"0 if the borrow is allowed, otherwise a semi-opaque error code (See ErrorReporter.sol)\"},\"borrowVerify(address,address,uint256)\":{\"params\":{\"borrowAmount\":\"The amount of the underlying asset requested to borrow\",\"borrower\":\"The address borrowing the underlying\",\"cToken\":\"Asset whose underlying is being borrowed\"}},\"borrowWithinLimits(address,uint256)\":{\"params\":{\"accountBorrowsNew\":\"The user's new borrow balance of the underlying asset\",\"cToken\":\"Asset whose underlying is being borrowed\"}},\"checkMembership(address,address)\":{\"params\":{\"account\":\"The address of the account to check\",\"cToken\":\"The cToken to check\"},\"return\":\"True if the account is in the asset, otherwise false.\"},\"enterMarkets(address[])\":{\"params\":{\"cTokens\":\"The list of addresses of the cToken markets to be enabled\"},\"return\":\"Success indicator for whether each corresponding market was entered\"},\"exitMarket(address)\":{\"details\":\"Sender must not have an outstanding borrow balance in the asset, or be providing neccessary collateral for an outstanding borrow.\",\"params\":{\"cTokenAddress\":\"The address of the asset to be removed\"},\"return\":\"Whether or not the account successfully exited the market\"},\"getAccountLiquidity(address)\":{\"return\":\"(possible error code (semi-opaque), account liquidity in excess of collateral requirements, account shortfall below collateral requirements)\"},\"getAllBorrowers()\":{\"details\":\"The automatic getter may be used to access an individual borrower.\",\"return\":\"The list of borrower account addresses\"},\"getAllMarkets()\":{\"details\":\"The automatic getter may be used to access an individual market.\",\"return\":\"The list of market addresses\"},\"getAssetsIn(address)\":{\"params\":{\"account\":\"The address of the account to pull assets for\"},\"return\":\"A dynamic list with the assets the account has entered\"},\"getHypotheticalAccountLiquidity(address,address,uint256,uint256)\":{\"params\":{\"account\":\"The account to determine liquidity for\",\"borrowAmount\":\"The amount of underlying to hypothetically borrow\",\"cTokenModify\":\"The market to hypothetically redeem/borrow in\",\"redeemTokens\":\"The number of tokens to hypothetically redeem\"},\"return\":\"(possible error code (semi-opaque), hypothetical account liquidity in excess of collateral requirements, hypothetical account shortfall below collateral requirements)\"},\"getWhitelist()\":{\"details\":\"The automatic getter may be used to access an individual whitelist status.\",\"return\":\"The list of borrower account addresses\"},\"isDeprecated(address)\":{\"details\":\"All borrows in a deprecated cToken market can be immediately liquidated\",\"params\":{\"cToken\":\"The market to check if deprecated\"}},\"liquidateBorrowAllowed(address,address,address,address,uint256)\":{\"params\":{\"borrower\":\"The address of the borrower\",\"cTokenBorrowed\":\"Asset which was borrowed by the borrower\",\"cTokenCollateral\":\"Asset which was used as collateral and will be seized\",\"liquidator\":\"The address repaying the borrow and seizing the collateral\",\"repayAmount\":\"The amount of underlying being repaid\"}},\"liquidateBorrowVerify(address,address,address,address,uint256,uint256)\":{\"params\":{\"actualRepayAmount\":\"The amount of underlying being repaid\",\"borrower\":\"The address of the borrower\",\"cTokenBorrowed\":\"Asset which was borrowed by the borrower\",\"cTokenCollateral\":\"Asset which was used as collateral and will be seized\",\"liquidator\":\"The address repaying the borrow and seizing the collateral\"}},\"liquidateCalculateSeizeTokens(address,address,uint256)\":{\"details\":\"Used in liquidation (called in cToken.liquidateBorrowFresh)\",\"params\":{\"actualRepayAmount\":\"The amount of cTokenBorrowed underlying to convert into cTokenCollateral tokens\",\"cTokenBorrowed\":\"The address of the borrowed cToken\",\"cTokenCollateral\":\"The address of the collateral cToken\"},\"return\":\"(errorCode, number of cTokenCollateral tokens to be seized in a liquidation)\"},\"mintAllowed(address,address,uint256)\":{\"params\":{\"cToken\":\"The market to verify the mint against\",\"mintAmount\":\"The amount of underlying being supplied to the market in exchange for tokens\",\"minter\":\"The account which would get the minted tokens\"},\"return\":\"0 if the mint is allowed, otherwise a semi-opaque error code (See ErrorReporter.sol)\"},\"mintVerify(address,address,uint256,uint256)\":{\"params\":{\"actualMintAmount\":\"The amount of the underlying asset being minted\",\"cToken\":\"Asset being minted\",\"mintTokens\":\"The number of tokens being minted\",\"minter\":\"The address minting the tokens\"}},\"mintWithinLimits(address,uint256,uint256,uint256)\":{\"params\":{\"accountTokens\":\"Underlying amount to mint\",\"cToken\":\"Asset whose underlying is being borrowed\",\"exchangeRateMantissa\":\"Underlying/cToken exchange rate\"}},\"redeemAllowed(address,address,uint256)\":{\"params\":{\"cToken\":\"The market to verify the redeem against\",\"redeemTokens\":\"The number of cTokens to exchange for the underlying asset in the market\",\"redeemer\":\"The account which would redeem the tokens\"},\"return\":\"0 if the redeem is allowed, otherwise a semi-opaque error code (See ErrorReporter.sol)\"},\"redeemVerify(address,address,uint256,uint256)\":{\"params\":{\"cToken\":\"Asset being redeemed\",\"redeemAmount\":\"The amount of the underlying asset being redeemed\",\"redeemTokens\":\"The number of tokens being redeemed\",\"redeemer\":\"The address redeeming the tokens\"}},\"repayBorrowAllowed(address,address,address,uint256)\":{\"params\":{\"borrower\":\"The account which would borrowed the asset\",\"cToken\":\"The market to verify the repay against\",\"payer\":\"The account which would repay the asset\",\"repayAmount\":\"The amount of the underlying asset the account would repay\"},\"return\":\"0 if the repay is allowed, otherwise a semi-opaque error code (See ErrorReporter.sol)\"},\"repayBorrowVerify(address,address,address,uint256,uint256)\":{\"params\":{\"actualRepayAmount\":\"The amount of underlying being repaid\",\"borrower\":\"The address of the borrower\",\"cToken\":\"Asset being repaid\",\"payer\":\"The address repaying the borrow\"}},\"seizeAllowed(address,address,address,address,uint256)\":{\"params\":{\"borrower\":\"The address of the borrower\",\"cTokenBorrowed\":\"Asset which was borrowed by the borrower\",\"cTokenCollateral\":\"Asset which was used as collateral and will be seized\",\"liquidator\":\"The address repaying the borrow and seizing the collateral\",\"seizeTokens\":\"The number of collateral tokens to seize\"}},\"seizeVerify(address,address,address,address,uint256)\":{\"params\":{\"borrower\":\"The address of the borrower\",\"cTokenBorrowed\":\"Asset which was borrowed by the borrower\",\"cTokenCollateral\":\"Asset which was used as collateral and will be seized\",\"liquidator\":\"The address repaying the borrow and seizing the collateral\",\"seizeTokens\":\"The number of collateral tokens to seize\"}},\"transferAllowed(address,address,address,uint256)\":{\"params\":{\"cToken\":\"The market to verify the transfer against\",\"dst\":\"The account which receives the tokens\",\"src\":\"The account which sources the tokens\",\"transferTokens\":\"The number of cTokens to transfer\"},\"return\":\"0 if the transfer is allowed, otherwise a semi-opaque error code (See ErrorReporter.sol)\"},\"transferVerify(address,address,address,uint256)\":{\"params\":{\"cToken\":\"Asset being transferred\",\"dst\":\"The account which receives the tokens\",\"src\":\"The account which sources the tokens\",\"transferTokens\":\"The number of cTokens to transfer\"}}},\"title\":\"Compound's Comptroller Contract\"},\"userdoc\":{\"methods\":{\"_addRewardsDistributor(address)\":{\"notice\":\"Add a RewardsDistributor contracts.\"},\"_deployMarket(bool,bytes,uint256)\":{\"notice\":\"Deploy cToken, add the market to the markets mapping, and set it as listed and set the collateral factor\"},\"_setBorrowCapGuardian(address)\":{\"notice\":\"Admin function to change the Borrow Cap Guardian\"},\"_setCloseFactor(uint256)\":{\"notice\":\"Sets the closeFactor used when liquidating borrows\"},\"_setCollateralFactor(address,uint256)\":{\"notice\":\"Sets the collateralFactor for a market\"},\"_setLiquidationIncentive(uint256)\":{\"notice\":\"Sets liquidationIncentive\"},\"_setMarketBorrowCaps(address[],uint256[])\":{\"notice\":\"Set the given borrow caps for the given cToken markets. Borrowing that brings total borrows to or above borrow cap will revert.\"},\"_setMarketSupplyCaps(address[],uint256[])\":{\"notice\":\"Set the given supply caps for the given cToken markets. Supplying that brings total underlying supply to or above supply cap will revert.\"},\"_setPauseGuardian(address)\":{\"notice\":\"Admin function to change the Pause Guardian\"},\"_setPriceOracle(address)\":{\"notice\":\"Sets a new price oracle for the comptroller\"},\"_setWhitelistEnforcement(bool)\":{\"notice\":\"Sets the whitelist enforcement for the comptroller\"},\"_setWhitelistStatuses(address[],bool[])\":{\"notice\":\"Sets the whitelist `statuses` for `suppliers`\"},\"_toggleAutoImplementations(bool)\":{\"notice\":\"Toggles the auto-implementation feature\"},\"_unsupportMarket(address)\":{\"notice\":\"Removed a market from the markets mapping and sets it as unlisted\"},\"borrowAllowed(address,address,uint256)\":{\"notice\":\"Checks if the account should be allowed to borrow the underlying asset of the given market\"},\"borrowVerify(address,address,uint256)\":{\"notice\":\"Validates borrow and reverts on rejection. May emit logs.\"},\"borrowWithinLimits(address,uint256)\":{\"notice\":\"Checks if the account should be allowed to borrow the underlying asset of the given market\"},\"checkMembership(address,address)\":{\"notice\":\"Returns whether the given account is entered in the given asset\"},\"enterMarkets(address[])\":{\"notice\":\"Add assets to be included in account liquidity calculation\"},\"exitMarket(address)\":{\"notice\":\"Removes asset from sender's account liquidity calculation\"},\"getAccountLiquidity(address)\":{\"notice\":\"Determine the current account liquidity wrt collateral requirements\"},\"getAllBorrowers()\":{\"notice\":\"Return all of the borrowers\"},\"getAllMarkets()\":{\"notice\":\"Return all of the markets\"},\"getAssetsIn(address)\":{\"notice\":\"Returns the assets an account has entered\"},\"getHypotheticalAccountLiquidity(address,address,uint256,uint256)\":{\"notice\":\"Determine what the account liquidity would be if the given amounts were redeemed/borrowed\"},\"getRewardsDistributors()\":{\"notice\":\"Returns an array of all RewardsDistributors\"},\"getWhitelist()\":{\"notice\":\"Return all of the whitelist\"},\"isDeprecated(address)\":{\"notice\":\"Returns true if the given cToken market has been deprecated\"},\"liquidateBorrowAllowed(address,address,address,address,uint256)\":{\"notice\":\"Checks if the liquidation should be allowed to occur\"},\"liquidateBorrowVerify(address,address,address,address,uint256,uint256)\":{\"notice\":\"Validates liquidateBorrow and reverts on rejection. May emit logs.\"},\"liquidateCalculateSeizeTokens(address,address,uint256)\":{\"notice\":\"Calculate number of tokens of collateral asset to seize given an underlying amount\"},\"mintAllowed(address,address,uint256)\":{\"notice\":\"Checks if the account should be allowed to mint tokens in the given market\"},\"mintVerify(address,address,uint256,uint256)\":{\"notice\":\"Validates mint and reverts on rejection. May emit logs.\"},\"mintWithinLimits(address,uint256,uint256,uint256)\":{\"notice\":\"Checks if the account should be allowed to borrow the underlying asset of the given market\"},\"redeemAllowed(address,address,uint256)\":{\"notice\":\"Checks if the account should be allowed to redeem tokens in the given market\"},\"redeemVerify(address,address,uint256,uint256)\":{\"notice\":\"Validates redeem and reverts on rejection. May emit logs.\"},\"repayBorrowAllowed(address,address,address,uint256)\":{\"notice\":\"Checks if the account should be allowed to repay a borrow in the given market\"},\"repayBorrowVerify(address,address,address,uint256,uint256)\":{\"notice\":\"Validates repayBorrow and reverts on rejection. May emit logs.\"},\"seizeAllowed(address,address,address,address,uint256)\":{\"notice\":\"Checks if the seizing of assets should be allowed to occur\"},\"seizeVerify(address,address,address,address,uint256)\":{\"notice\":\"Validates seize and reverts on rejection. May emit logs.\"},\"transferAllowed(address,address,address,uint256)\":{\"notice\":\"Checks if the account should be allowed to transfer tokens in the given market\"},\"transferVerify(address,address,address,uint256)\":{\"notice\":\"Validates transfer and reverts on rejection. May emit logs.\"}}}},\"settings\":{\"compilationTarget\":{\"contracts/Comptroller.sol\":\"Comptroller\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/CErc20.sol\":{\"keccak256\":\"0x37e284e3ca9a2821c3ad1001d110ca529820646f65dd441f5907070408b20bc2\",\"urls\":[\"bzz-raw://cb025aa0f581e05f023e5aef44cfcd47cdece7ec4cf53973d89834f5037666d2\",\"dweb:/ipfs/QmaY78mEyhUCuvbMVdGzpKmkw9yKoHz5noSg5REZgipupY\"]},\"contracts/CToken.sol\":{\"keccak256\":\"0xc3a5a827241528049e20a24cc446558c8a9272909f75ce5d1cf14ae3ab5feba3\",\"urls\":[\"bzz-raw://a403db2bf1a8e5e9384df19600bd18d4251056818b094afcdab418e683bb5cb8\",\"dweb:/ipfs/QmdkRbFGtKP67tNNqyH7BraDRGerwRNA7ktscbFV9LioM2\"]},\"contracts/CTokenInterfaces.sol\":{\"keccak256\":\"0xc8a056c724ef4f0215ece6011e7ac1007c9dc7611ce5160d470ec858bbb06bd3\",\"urls\":[\"bzz-raw://58951693d1b53d2722e55b068bab2b570f4b044d89c28ed6b53bac6e95aeb662\",\"dweb:/ipfs/QmQiNTw5jZR74WjKfX2bPiuTT4tuFuq8rx7QxEVyVvdGLn\"]},\"contracts/CarefulMath.sol\":{\"keccak256\":\"0x1487237dbbbb73ad43c8eff16e78311753719a94a5065f574de5c91b672c56f8\",\"urls\":[\"bzz-raw://349966a236f313b2cb42e1942832e6bd7e134f65f6654e6c4d46788e65cc4a9b\",\"dweb:/ipfs/Qmebpv8i5jLR4fLgpZHQZRLu6aefVAbLC2yUk9ABEekquz\"]},\"contracts/Comptroller.sol\":{\"keccak256\":\"0x1a11340e552facccbe4950166a87a2cabee6f41f0b09062314172f51b12102c4\",\"urls\":[\"bzz-raw://23d8b3dbe4e31d51cf78090a784420aa6b46d0c37f57d093fe78671677895863\",\"dweb:/ipfs/QmcLUe2GNaJQHuhBPdYgBdudDYNqaLjNJc7c914y878gJp\"]},\"contracts/ComptrollerInterface.sol\":{\"keccak256\":\"0xecfb84fabc9792d0b1c912886249c67bc42c39eb065d962d0b9a5f3736af5892\",\"urls\":[\"bzz-raw://711547ebc1a7f18b271118dd98276771953a9d7b3674716f67d247be9b907372\",\"dweb:/ipfs/QmbVZNvkBp8miByATrL6y5j8MePdcQ8uTAUZMpKrhpLgoa\"]},\"contracts/ComptrollerStorage.sol\":{\"keccak256\":\"0x83961d3c12984fe4afc72717fc44b2d868563d053a0eceda0cbf17ec6b255913\",\"urls\":[\"bzz-raw://ea667c2de43881f9be19f4f75dec348632273178965fc9b3655705d853b032bb\",\"dweb:/ipfs/QmZP6sbNFSgFZrAEvfRjhp1NtGj6U6Sea3JGiKG96AHyeP\"]},\"contracts/EIP20Interface.sol\":{\"keccak256\":\"0xee33b8b333743308a9153a59f22da2cadb22cedef4403fe039bf9e057c9c729a\",\"urls\":[\"bzz-raw://5427fdb941300d36a424da0a0a5800e3b2ca51c9c922831dbfce2f6637402b43\",\"dweb:/ipfs/QmTrvmLynqSUPjsGW2dpiQ91dSmn4xzccQiwr8qaBtyvjH\"]},\"contracts/EIP20NonStandardInterface.sol\":{\"keccak256\":\"0x469899442dd9640bfc2c670d404ad3027e48df5df8e5aeab0e25cc6b6aae05f5\",\"urls\":[\"bzz-raw://d8c4498abaf539eb413a2f1a916d75945adc8bd4ef437f8450cb67e07be3f38d\",\"dweb:/ipfs/QmaFpWfnhAMYW21rbT5PEszn4TGHdGU58Eq5AfZsCuapZ3\"]},\"contracts/ErrorReporter.sol\":{\"keccak256\":\"0xe9587478bc9efad203cab02b8aecae32828cfc9a271b13ae3c018e38e44aab32\",\"urls\":[\"bzz-raw://2eb34bdbbbc410fb401d50ddca44a7421a1d8191711c569ed5bcec1c1b07a05c\",\"dweb:/ipfs/QmYKNCYppyx3NGiwtjdLEmxUMgfnFBqT4pnvnhnBrPgrxS\"]},\"contracts/Exponential.sol\":{\"keccak256\":\"0xfda0e2b610541cf1cf316a0000c89a1069ccc21f1566affc0a058810e2b835d3\",\"urls\":[\"bzz-raw://fe319f184f1b5f27019d3d890124cd24e466d27153ac38eb9ff6b16efbad48b9\",\"dweb:/ipfs/Qmcev6jCmtdCviJxUQvUCmesPDShRDSvdfUEfvsqd4GEJA\"]},\"contracts/ExponentialNoError.sol\":{\"keccak256\":\"0x713a089f4bbcaec1d3924fc7d9a2154904a39f46cb6f25b713167dbe5f21623e\",\"urls\":[\"bzz-raw://d7108d68af7c5effd4272615ceba54e79e585f6b8be5aabc7602245c84c7b9e0\",\"dweb:/ipfs/QmQZo2XpxW7w5viVEg71mi9eKaAYD7HUqfCMB5yCCPVnc5\"]},\"contracts/IFuseFeeDistributor.sol\":{\"keccak256\":\"0xb5d287b8e05574d38bd5d0b413f44b4c5d312f28188573ac60abe78123fbd92c\",\"urls\":[\"bzz-raw://84c2bbf746a82aaa100bee90c7dd40411c723bded124bb1775bf72bf7fda8a2c\",\"dweb:/ipfs/QmToQzDtz9BV2tvU71YsfWjdaZu5qpP1xKFZ1TkQgubhDb\"]},\"contracts/InterestRateModel.sol\":{\"keccak256\":\"0x0cc0dbd1991e5dcdcff58b0c82a9471a0fb9df26763e5e7415e1d081b7332409\",\"urls\":[\"bzz-raw://f4d7936aefc43ea2724f0e472b8f1517f1ca40170258ab9d5bbd0862dd0c4f13\",\"dweb:/ipfs/QmfYjG1Sm3kNwbhomHCWhMqw9LvaJVWVzBe4Te5BHRbTQS\"]},\"contracts/PriceOracle.sol\":{\"keccak256\":\"0x62ba3a5ec8f06d456ab089d6ca7f9d14d3a6ce6814923271ca60a6990918fb41\",\"urls\":[\"bzz-raw://aa6d2f20efdd5389161eb15bdab98b5628dc8cd5354394bbed35bb14d3612506\",\"dweb:/ipfs/QmVfo4eCDuk8LMSywpBjZBxCv7zLCNsG6u3nyD1d4CYwsD\"]},\"contracts/RewardsDistributorDelegate.sol\":{\"keccak256\":\"0xe44b7f3b3cc91d387205e2ac37fef6bbac051104a8c654e157dca25aa4efb236\",\"urls\":[\"bzz-raw://7f86f8e3162d8d5deaee2b06e81aa033e91c8f3e523bd45dbbfc1acadbae8732\",\"dweb:/ipfs/QmRGG9FMP24q4D1Xi525LnZHN6iwWddqxYQrTpRnpSPri3\"]},\"contracts/RewardsDistributorStorage.sol\":{\"keccak256\":\"0x3ce7a399413ff2e33fc2d77bb0a124be668c919899e0042ce867232b53f06786\",\"urls\":[\"bzz-raw://6044a7f8506f190e2eb4d300eb55f4bbeb56b30e0690a9f5e430c289d94f5f19\",\"dweb:/ipfs/QmZ5c629f93tQErFZdAwGYD5SegHbMrNGHRFhnc2k6vBVh\"]},\"contracts/Unitroller.sol\":{\"keccak256\":\"0x36bf7b6c12ddf5053da8b8b4c0c23da46df6c62eec0e31230c57f9aedf9b9d2d\",\"urls\":[\"bzz-raw://866cf0d98da484f9ed07fb98b3e1ef2db0ef33f3f0be5c02becdf07da448ce4a\",\"dweb:/ipfs/Qma8qNfmcfjReH5LT7Aaujqu3qdsBkdwExgS5yPgSbzYMF\"]}},\"version\":1}"}},"contracts/ComptrollerG1.sol":{"ComptrollerG1":{"abi":[{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"error","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"info","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"detail","type":"uint256"}],"name":"Failure","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract CToken","name":"cToken","type":"address"},{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"MarketEntered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract CToken","name":"cToken","type":"address"},{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"MarketExited","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract CToken","name":"cToken","type":"address"}],"name":"MarketListed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldCloseFactorMantissa","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newCloseFactorMantissa","type":"uint256"}],"name":"NewCloseFactor","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract CToken","name":"cToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"oldCollateralFactorMantissa","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newCollateralFactorMantissa","type":"uint256"}],"name":"NewCollateralFactor","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldLiquidationIncentiveMantissa","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newLiquidationIncentiveMantissa","type":"uint256"}],"name":"NewLiquidationIncentive","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldMaxAssets","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newMaxAssets","type":"uint256"}],"name":"NewMaxAssets","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract PriceOracle","name":"oldPriceOracle","type":"address"},{"indexed":false,"internalType":"contract PriceOracle","name":"newPriceOracle","type":"address"}],"name":"NewPriceOracle","type":"event"},{"constant":false,"inputs":[],"name":"_afterNonReentrant","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"contract Unitroller","name":"unitroller","type":"address"},{"internalType":"contract PriceOracle","name":"_oracle","type":"address"},{"internalType":"uint256","name":"_closeFactorMantissa","type":"uint256"},{"internalType":"uint256","name":"_maxAssets","type":"uint256"},{"internalType":"bool","name":"reinitializing","type":"bool"}],"name":"_become","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"_beforeNonReentrant","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"newCloseFactorMantissa","type":"uint256"}],"name":"_setCloseFactor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"contract CToken","name":"cToken","type":"address"},{"internalType":"uint256","name":"newCollateralFactorMantissa","type":"uint256"}],"name":"_setCollateralFactor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"newLiquidationIncentiveMantissa","type":"uint256"}],"name":"_setLiquidationIncentive","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"newMaxAssets","type":"uint256"}],"name":"_setMaxAssets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"contract PriceOracle","name":"newOracle","type":"address"}],"name":"_setPriceOracle","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"contract CToken","name":"cToken","type":"address"}],"name":"_supportMarket","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"accountAssets","outputs":[{"internalType":"contract CToken","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"adminHasRights","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"cToken","type":"address"},{"internalType":"address","name":"borrower","type":"address"},{"internalType":"uint256","name":"borrowAmount","type":"uint256"}],"name":"borrowAllowed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"cToken","type":"address"},{"internalType":"address","name":"borrower","type":"address"},{"internalType":"uint256","name":"borrowAmount","type":"uint256"}],"name":"borrowVerify","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"cToken","type":"address"},{"internalType":"uint256","name":"accountBorrowsNew","type":"uint256"}],"name":"borrowWithinLimits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"contract CToken","name":"cToken","type":"address"}],"name":"checkMembership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"closeFactorMantissa","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"comptrollerImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address[]","name":"cTokens","type":"address[]"}],"name":"enterMarkets","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"cTokenAddress","type":"address"}],"name":"exitMarket","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"fuseAdminHasRights","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getAccountLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getAssetsIn","outputs":[{"internalType":"contract CToken[]","name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isComptroller","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"cTokenBorrowed","type":"address"},{"internalType":"address","name":"cTokenCollateral","type":"address"},{"internalType":"address","name":"liquidator","type":"address"},{"internalType":"address","name":"borrower","type":"address"},{"internalType":"uint256","name":"repayAmount","type":"uint256"}],"name":"liquidateBorrowAllowed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"cTokenBorrowed","type":"address"},{"internalType":"address","name":"cTokenCollateral","type":"address"},{"internalType":"address","name":"liquidator","type":"address"},{"internalType":"address","name":"borrower","type":"address"},{"internalType":"uint256","name":"repayAmount","type":"uint256"},{"internalType":"uint256","name":"seizeTokens","type":"uint256"}],"name":"liquidateBorrowVerify","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"cTokenBorrowed","type":"address"},{"internalType":"address","name":"cTokenCollateral","type":"address"},{"internalType":"uint256","name":"repayAmount","type":"uint256"}],"name":"liquidateCalculateSeizeTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"liquidationIncentiveMantissa","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"markets","outputs":[{"internalType":"bool","name":"isListed","type":"bool"},{"internalType":"uint256","name":"collateralFactorMantissa","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"cToken","type":"address"},{"internalType":"address","name":"minter","type":"address"},{"internalType":"uint256","name":"mintAmount","type":"uint256"}],"name":"mintAllowed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"cToken","type":"address"},{"internalType":"address","name":"minter","type":"address"},{"internalType":"uint256","name":"mintAmount","type":"uint256"},{"internalType":"uint256","name":"mintTokens","type":"uint256"}],"name":"mintVerify","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"cToken","type":"address"},{"internalType":"uint256","name":"exchangeRateMantissa","type":"uint256"},{"internalType":"uint256","name":"accountTokens","type":"uint256"},{"internalType":"uint256","name":"mintAmount","type":"uint256"}],"name":"mintWithinLimits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"oracle","outputs":[{"internalType":"contract PriceOracle","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pendingAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pendingComptrollerImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"cToken","type":"address"},{"internalType":"address","name":"redeemer","type":"address"},{"internalType":"uint256","name":"redeemTokens","type":"uint256"}],"name":"redeemAllowed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"cToken","type":"address"},{"internalType":"address","name":"redeemer","type":"address"},{"internalType":"uint256","name":"redeemAmount","type":"uint256"},{"internalType":"uint256","name":"redeemTokens","type":"uint256"}],"name":"redeemVerify","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"cToken","type":"address"},{"internalType":"address","name":"payer","type":"address"},{"internalType":"address","name":"borrower","type":"address"},{"internalType":"uint256","name":"repayAmount","type":"uint256"}],"name":"repayBorrowAllowed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"cToken","type":"address"},{"internalType":"address","name":"payer","type":"address"},{"internalType":"address","name":"borrower","type":"address"},{"internalType":"uint256","name":"repayAmount","type":"uint256"},{"internalType":"uint256","name":"borrowerIndex","type":"uint256"}],"name":"repayBorrowVerify","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"cTokenCollateral","type":"address"},{"internalType":"address","name":"cTokenBorrowed","type":"address"},{"internalType":"address","name":"liquidator","type":"address"},{"internalType":"address","name":"borrower","type":"address"},{"internalType":"uint256","name":"seizeTokens","type":"uint256"}],"name":"seizeAllowed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"cTokenCollateral","type":"address"},{"internalType":"address","name":"cTokenBorrowed","type":"address"},{"internalType":"address","name":"liquidator","type":"address"},{"internalType":"address","name":"borrower","type":"address"},{"internalType":"uint256","name":"seizeTokens","type":"uint256"}],"name":"seizeVerify","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"cToken","type":"address"},{"internalType":"address","name":"src","type":"address"},{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"transferTokens","type":"uint256"}],"name":"transferAllowed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"cToken","type":"address"},{"internalType":"address","name":"src","type":"address"},{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"transferTokens","type":"uint256"}],"name":"transferVerify","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"_afterNonReentrant()":"632e5142","_become(address,address,uint256,uint256,bool)":"32000e00","_beforeNonReentrant()":"c90c20b1","_setCloseFactor(uint256)":"317b0b77","_setCollateralFactor(address,uint256)":"e4028eee","_setLiquidationIncentive(uint256)":"4fd42e17","_setMaxAssets(uint256)":"d9226ced","_setPriceOracle(address)":"55ee1fe1","_supportMarket(address)":"a76b3fda","accountAssets(address,uint256)":"dce15449","admin()":"f851a440","adminHasRights()":"0a755ec2","borrowAllowed(address,address,uint256)":"da3d454c","borrowVerify(address,address,uint256)":"5c778605","borrowWithinLimits(address,uint256)":"779b2294","checkMembership(address,address)":"929fe9a1","closeFactorMantissa()":"e8755446","comptrollerImplementation()":"bb82aa5e","enterMarkets(address[])":"c2998238","exitMarket(address)":"ede4edd0","fuseAdminHasRights()":"2f1069ba","getAccountLiquidity(address)":"5ec88c79","getAssetsIn(address)":"abfceffc","isComptroller()":"007e3dd2","liquidateBorrowAllowed(address,address,address,address,uint256)":"5fc7e71e","liquidateBorrowVerify(address,address,address,address,uint256,uint256)":"47ef3b3b","liquidateCalculateSeizeTokens(address,address,uint256)":"c488847b","liquidationIncentiveMantissa()":"4ada90af","markets(address)":"8e8f294b","mintAllowed(address,address,uint256)":"4ef4c3e1","mintVerify(address,address,uint256,uint256)":"41c728b9","mintWithinLimits(address,uint256,uint256,uint256)":"2259192a","oracle()":"7dc0d1d0","pendingAdmin()":"26782247","pendingComptrollerImplementation()":"dcfbc0c7","redeemAllowed(address,address,uint256)":"eabe7d91","redeemVerify(address,address,uint256,uint256)":"51dff989","repayBorrowAllowed(address,address,address,uint256)":"24008a62","repayBorrowVerify(address,address,address,uint256,uint256)":"1ededc91","seizeAllowed(address,address,address,address,uint256)":"d02f7351","seizeVerify(address,address,address,address,uint256)":"6d35bf91","transferAllowed(address,address,address,uint256)":"bdcdc258","transferVerify(address,address,address,uint256)":"6a56947e"}},"metadata":"{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"error\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"info\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"detail\",\"type\":\"uint256\"}],\"name\":\"Failure\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract CToken\",\"name\":\"cToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"MarketEntered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract CToken\",\"name\":\"cToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"MarketExited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract CToken\",\"name\":\"cToken\",\"type\":\"address\"}],\"name\":\"MarketListed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldCloseFactorMantissa\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newCloseFactorMantissa\",\"type\":\"uint256\"}],\"name\":\"NewCloseFactor\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract CToken\",\"name\":\"cToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldCollateralFactorMantissa\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newCollateralFactorMantissa\",\"type\":\"uint256\"}],\"name\":\"NewCollateralFactor\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldLiquidationIncentiveMantissa\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newLiquidationIncentiveMantissa\",\"type\":\"uint256\"}],\"name\":\"NewLiquidationIncentive\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldMaxAssets\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newMaxAssets\",\"type\":\"uint256\"}],\"name\":\"NewMaxAssets\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract PriceOracle\",\"name\":\"oldPriceOracle\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract PriceOracle\",\"name\":\"newPriceOracle\",\"type\":\"address\"}],\"name\":\"NewPriceOracle\",\"type\":\"event\"},{\"constant\":false,\"inputs\":[],\"name\":\"_afterNonReentrant\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contract Unitroller\",\"name\":\"unitroller\",\"type\":\"address\"},{\"internalType\":\"contract PriceOracle\",\"name\":\"_oracle\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_closeFactorMantissa\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxAssets\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"reinitializing\",\"type\":\"bool\"}],\"name\":\"_become\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"_beforeNonReentrant\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newCloseFactorMantissa\",\"type\":\"uint256\"}],\"name\":\"_setCloseFactor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contract CToken\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"newCollateralFactorMantissa\",\"type\":\"uint256\"}],\"name\":\"_setCollateralFactor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newLiquidationIncentiveMantissa\",\"type\":\"uint256\"}],\"name\":\"_setLiquidationIncentive\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newMaxAssets\",\"type\":\"uint256\"}],\"name\":\"_setMaxAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contract PriceOracle\",\"name\":\"newOracle\",\"type\":\"address\"}],\"name\":\"_setPriceOracle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contract CToken\",\"name\":\"cToken\",\"type\":\"address\"}],\"name\":\"_supportMarket\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"accountAssets\",\"outputs\":[{\"internalType\":\"contract CToken\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"adminHasRights\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"borrowAmount\",\"type\":\"uint256\"}],\"name\":\"borrowAllowed\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"borrowAmount\",\"type\":\"uint256\"}],\"name\":\"borrowVerify\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"accountBorrowsNew\",\"type\":\"uint256\"}],\"name\":\"borrowWithinLimits\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"contract CToken\",\"name\":\"cToken\",\"type\":\"address\"}],\"name\":\"checkMembership\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"closeFactorMantissa\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"comptrollerImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"cTokens\",\"type\":\"address[]\"}],\"name\":\"enterMarkets\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cTokenAddress\",\"type\":\"address\"}],\"name\":\"exitMarket\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"fuseAdminHasRights\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getAccountLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getAssetsIn\",\"outputs\":[{\"internalType\":\"contract CToken[]\",\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isComptroller\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cTokenBorrowed\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"cTokenCollateral\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"liquidator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"repayAmount\",\"type\":\"uint256\"}],\"name\":\"liquidateBorrowAllowed\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cTokenBorrowed\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"cTokenCollateral\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"liquidator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"repayAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"seizeTokens\",\"type\":\"uint256\"}],\"name\":\"liquidateBorrowVerify\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cTokenBorrowed\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"cTokenCollateral\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"repayAmount\",\"type\":\"uint256\"}],\"name\":\"liquidateCalculateSeizeTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"liquidationIncentiveMantissa\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"markets\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isListed\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"collateralFactorMantissa\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"mintAmount\",\"type\":\"uint256\"}],\"name\":\"mintAllowed\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"mintAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"mintTokens\",\"type\":\"uint256\"}],\"name\":\"mintVerify\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exchangeRateMantissa\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"accountTokens\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"mintAmount\",\"type\":\"uint256\"}],\"name\":\"mintWithinLimits\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"oracle\",\"outputs\":[{\"internalType\":\"contract PriceOracle\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"pendingAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"pendingComptrollerImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"redeemer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"redeemTokens\",\"type\":\"uint256\"}],\"name\":\"redeemAllowed\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"redeemer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"redeemAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"redeemTokens\",\"type\":\"uint256\"}],\"name\":\"redeemVerify\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"repayAmount\",\"type\":\"uint256\"}],\"name\":\"repayBorrowAllowed\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"repayAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"borrowerIndex\",\"type\":\"uint256\"}],\"name\":\"repayBorrowVerify\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cTokenCollateral\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"cTokenBorrowed\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"liquidator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"seizeTokens\",\"type\":\"uint256\"}],\"name\":\"seizeAllowed\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cTokenCollateral\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"cTokenBorrowed\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"liquidator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"seizeTokens\",\"type\":\"uint256\"}],\"name\":\"seizeVerify\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"transferTokens\",\"type\":\"uint256\"}],\"name\":\"transferAllowed\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"transferTokens\",\"type\":\"uint256\"}],\"name\":\"transferVerify\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Compound\",\"details\":\"This was the first version of the Comptroller brains. We keep it so our tests can continue to do the real-life behavior of upgrading from this logic forward.\",\"methods\":{\"_setCloseFactor(uint256)\":{\"details\":\"Admin function to set closeFactor\",\"params\":{\"newCloseFactorMantissa\":\"New close factor, scaled by 1e18\"},\"return\":\"uint 0=success, otherwise a failure. (See ErrorReporter for details)\"},\"_setCollateralFactor(address,uint256)\":{\"details\":\"Admin function to set per-market collateralFactor\",\"params\":{\"cToken\":\"The market to set the factor on\",\"newCollateralFactorMantissa\":\"The new collateral factor, scaled by 1e18\"},\"return\":\"uint 0=success, otherwise a failure. (See ErrorReporter for details)\"},\"_setLiquidationIncentive(uint256)\":{\"details\":\"Admin function to set liquidationIncentive\",\"params\":{\"newLiquidationIncentiveMantissa\":\"New liquidationIncentive scaled by 1e18\"},\"return\":\"uint 0=success, otherwise a failure. (See ErrorReporter for details)\"},\"_setMaxAssets(uint256)\":{\"details\":\"Admin function to set maxAssets\",\"params\":{\"newMaxAssets\":\"New max assets\"},\"return\":\"uint 0=success, otherwise a failure. (See ErrorReporter for details)\"},\"_setPriceOracle(address)\":{\"details\":\"Admin function to set a new price oracle\",\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"_supportMarket(address)\":{\"details\":\"Admin function to set isListed and add support for the market\",\"params\":{\"cToken\":\"The address of the market (token) to list\"},\"return\":\"uint 0=success, otherwise a failure. (See enum Error for details)\"},\"borrowAllowed(address,address,uint256)\":{\"params\":{\"borrowAmount\":\"The amount of underlying the account would borrow\",\"borrower\":\"The account which would borrow the asset\",\"cToken\":\"The market to verify the borrow against\"},\"return\":\"0 if the borrow is allowed, otherwise a semi-opaque error code (See ErrorReporter.sol)\"},\"borrowVerify(address,address,uint256)\":{\"params\":{\"borrowAmount\":\"The amount of the underlying asset requested to borrow\",\"borrower\":\"The address borrowing the underlying\",\"cToken\":\"Asset whose underlying is being borrowed\"}},\"checkMembership(address,address)\":{\"params\":{\"account\":\"The address of the account to check\",\"cToken\":\"The cToken to check\"},\"return\":\"True if the account is in the asset, otherwise false.\"},\"enterMarkets(address[])\":{\"params\":{\"cTokens\":\"The list of addresses of the cToken markets to be enabled\"},\"return\":\"Success indicator for whether each corresponding market was entered\"},\"exitMarket(address)\":{\"details\":\"Sender must not have an outstanding borrow balance in the asset, or be providing neccessary collateral for an outstanding borrow.\",\"params\":{\"cTokenAddress\":\"The address of the asset to be removed\"},\"return\":\"Whether or not the account successfully exited the market\"},\"getAccountLiquidity(address)\":{\"return\":\"(possible error code (semi-opaque), account liquidity in excess of collateral requirements, account shortfall below collateral requirements)\"},\"getAssetsIn(address)\":{\"params\":{\"account\":\"The address of the account to pull assets for\"},\"return\":\"A dynamic list with the assets the account has entered\"},\"liquidateBorrowAllowed(address,address,address,address,uint256)\":{\"params\":{\"borrower\":\"The address of the borrower\",\"cTokenBorrowed\":\"Asset which was borrowed by the borrower\",\"cTokenCollateral\":\"Asset which was used as collateral and will be seized\",\"liquidator\":\"The address repaying the borrow and seizing the collateral\",\"repayAmount\":\"The amount of underlying being repaid\"}},\"liquidateBorrowVerify(address,address,address,address,uint256,uint256)\":{\"params\":{\"borrower\":\"The address of the borrower\",\"cTokenBorrowed\":\"Asset which was borrowed by the borrower\",\"cTokenCollateral\":\"Asset which was used as collateral and will be seized\",\"liquidator\":\"The address repaying the borrow and seizing the collateral\",\"repayAmount\":\"The amount of underlying being repaid\"}},\"liquidateCalculateSeizeTokens(address,address,uint256)\":{\"details\":\"Used in liquidation (called in cToken.liquidateBorrowFresh)\",\"params\":{\"cTokenBorrowed\":\"The address of the borrowed cToken\",\"cTokenCollateral\":\"The address of the collateral cToken\",\"repayAmount\":\"The amount of cTokenBorrowed underlying to convert into cTokenCollateral tokens\"},\"return\":\"(errorCode, number of cTokenCollateral tokens to be seized in a liquidation)\"},\"mintAllowed(address,address,uint256)\":{\"params\":{\"cToken\":\"The market to verify the mint against\",\"mintAmount\":\"The amount of underlying being supplied to the market in exchange for tokens\",\"minter\":\"The account which would get the minted tokens\"},\"return\":\"0 if the mint is allowed, otherwise a semi-opaque error code (See ErrorReporter.sol)\"},\"mintVerify(address,address,uint256,uint256)\":{\"params\":{\"cToken\":\"Asset being minted\",\"mintAmount\":\"The amount of the underlying asset being minted\",\"mintTokens\":\"The number of tokens being minted\",\"minter\":\"The address minting the tokens\"}},\"redeemAllowed(address,address,uint256)\":{\"params\":{\"cToken\":\"The market to verify the redeem against\",\"redeemTokens\":\"The number of cTokens to exchange for the underlying asset in the market\",\"redeemer\":\"The account which would redeem the tokens\"},\"return\":\"0 if the redeem is allowed, otherwise a semi-opaque error code (See ErrorReporter.sol)\"},\"redeemVerify(address,address,uint256,uint256)\":{\"params\":{\"cToken\":\"Asset being redeemed\",\"redeemAmount\":\"The amount of the underlying asset being redeemed\",\"redeemTokens\":\"The number of tokens being redeemed\",\"redeemer\":\"The address redeeming the tokens\"}},\"repayBorrowAllowed(address,address,address,uint256)\":{\"params\":{\"borrower\":\"The account which would borrowed the asset\",\"cToken\":\"The market to verify the repay against\",\"payer\":\"The account which would repay the asset\",\"repayAmount\":\"The amount of the underlying asset the account would repay\"},\"return\":\"0 if the repay is allowed, otherwise a semi-opaque error code (See ErrorReporter.sol)\"},\"repayBorrowVerify(address,address,address,uint256,uint256)\":{\"params\":{\"borrower\":\"The address of the borrower\",\"cToken\":\"Asset being repaid\",\"payer\":\"The address repaying the borrow\",\"repayAmount\":\"The amount of underlying being repaid\"}},\"seizeAllowed(address,address,address,address,uint256)\":{\"params\":{\"borrower\":\"The address of the borrower\",\"cTokenBorrowed\":\"Asset which was borrowed by the borrower\",\"cTokenCollateral\":\"Asset which was used as collateral and will be seized\",\"liquidator\":\"The address repaying the borrow and seizing the collateral\",\"seizeTokens\":\"The number of collateral tokens to seize\"}},\"seizeVerify(address,address,address,address,uint256)\":{\"params\":{\"borrower\":\"The address of the borrower\",\"cTokenBorrowed\":\"Asset which was borrowed by the borrower\",\"cTokenCollateral\":\"Asset which was used as collateral and will be seized\",\"liquidator\":\"The address repaying the borrow and seizing the collateral\",\"seizeTokens\":\"The number of collateral tokens to seize\"}},\"transferAllowed(address,address,address,uint256)\":{\"params\":{\"cToken\":\"The market to verify the transfer against\",\"dst\":\"The account which receives the tokens\",\"src\":\"The account which sources the tokens\",\"transferTokens\":\"The number of cTokens to transfer\"},\"return\":\"0 if the transfer is allowed, otherwise a semi-opaque error code (See ErrorReporter.sol)\"},\"transferVerify(address,address,address,uint256)\":{\"params\":{\"cToken\":\"Asset being transferred\",\"dst\":\"The account which receives the tokens\",\"src\":\"The account which sources the tokens\",\"transferTokens\":\"The number of cTokens to transfer\"}}},\"title\":\"Compound's Comptroller Contract\"},\"userdoc\":{\"methods\":{\"_beforeNonReentrant()\":{\"notice\":\"* Pool-Wide/Cross-Asset Reentrancy Prevention **\"},\"_setCloseFactor(uint256)\":{\"notice\":\"Sets the closeFactor used when liquidating borrows\"},\"_setCollateralFactor(address,uint256)\":{\"notice\":\"Sets the collateralFactor for a market\"},\"_setLiquidationIncentive(uint256)\":{\"notice\":\"Sets liquidationIncentive\"},\"_setMaxAssets(uint256)\":{\"notice\":\"Sets maxAssets which controls how many markets can be entered\"},\"_setPriceOracle(address)\":{\"notice\":\"Sets a new price oracle for the comptroller\"},\"_supportMarket(address)\":{\"notice\":\"Add the market to the markets mapping and set it as listed\"},\"borrowAllowed(address,address,uint256)\":{\"notice\":\"Checks if the account should be allowed to borrow the underlying asset of the given market\"},\"borrowVerify(address,address,uint256)\":{\"notice\":\"Validates borrow and reverts on rejection. May emit logs.\"},\"checkMembership(address,address)\":{\"notice\":\"Returns whether the given account is entered in the given asset\"},\"enterMarkets(address[])\":{\"notice\":\"Add assets to be included in account liquidity calculation\"},\"exitMarket(address)\":{\"notice\":\"Removes asset from sender's account liquidity calculation\"},\"getAccountLiquidity(address)\":{\"notice\":\"Determine the current account liquidity wrt collateral requirements\"},\"getAssetsIn(address)\":{\"notice\":\"Returns the assets an account has entered\"},\"liquidateBorrowAllowed(address,address,address,address,uint256)\":{\"notice\":\"Checks if the liquidation should be allowed to occur\"},\"liquidateBorrowVerify(address,address,address,address,uint256,uint256)\":{\"notice\":\"Validates liquidateBorrow and reverts on rejection. May emit logs.\"},\"liquidateCalculateSeizeTokens(address,address,uint256)\":{\"notice\":\"Calculate number of tokens of collateral asset to seize given an underlying amount\"},\"mintAllowed(address,address,uint256)\":{\"notice\":\"Checks if the account should be allowed to mint tokens in the given market\"},\"mintVerify(address,address,uint256,uint256)\":{\"notice\":\"Validates mint and reverts on rejection. May emit logs.\"},\"redeemAllowed(address,address,uint256)\":{\"notice\":\"Checks if the account should be allowed to redeem tokens in the given market\"},\"redeemVerify(address,address,uint256,uint256)\":{\"notice\":\"Validates redeem and reverts on rejection. May emit logs.\"},\"repayBorrowAllowed(address,address,address,uint256)\":{\"notice\":\"Checks if the account should be allowed to repay a borrow in the given market\"},\"repayBorrowVerify(address,address,address,uint256,uint256)\":{\"notice\":\"Validates repayBorrow and reverts on rejection. May emit logs.\"},\"seizeAllowed(address,address,address,address,uint256)\":{\"notice\":\"Checks if the seizing of assets should be allowed to occur\"},\"seizeVerify(address,address,address,address,uint256)\":{\"notice\":\"Validates seize and reverts on rejection. May emit logs.\"},\"transferAllowed(address,address,address,uint256)\":{\"notice\":\"Checks if the account should be allowed to transfer tokens in the given market\"},\"transferVerify(address,address,address,uint256)\":{\"notice\":\"Validates transfer and reverts on rejection. May emit logs.\"}}}},\"settings\":{\"compilationTarget\":{\"contracts/ComptrollerG1.sol\":\"ComptrollerG1\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/CToken.sol\":{\"keccak256\":\"0xc3a5a827241528049e20a24cc446558c8a9272909f75ce5d1cf14ae3ab5feba3\",\"urls\":[\"bzz-raw://a403db2bf1a8e5e9384df19600bd18d4251056818b094afcdab418e683bb5cb8\",\"dweb:/ipfs/QmdkRbFGtKP67tNNqyH7BraDRGerwRNA7ktscbFV9LioM2\"]},\"contracts/CTokenInterfaces.sol\":{\"keccak256\":\"0xc8a056c724ef4f0215ece6011e7ac1007c9dc7611ce5160d470ec858bbb06bd3\",\"urls\":[\"bzz-raw://58951693d1b53d2722e55b068bab2b570f4b044d89c28ed6b53bac6e95aeb662\",\"dweb:/ipfs/QmQiNTw5jZR74WjKfX2bPiuTT4tuFuq8rx7QxEVyVvdGLn\"]},\"contracts/CarefulMath.sol\":{\"keccak256\":\"0x1487237dbbbb73ad43c8eff16e78311753719a94a5065f574de5c91b672c56f8\",\"urls\":[\"bzz-raw://349966a236f313b2cb42e1942832e6bd7e134f65f6654e6c4d46788e65cc4a9b\",\"dweb:/ipfs/Qmebpv8i5jLR4fLgpZHQZRLu6aefVAbLC2yUk9ABEekquz\"]},\"contracts/ComptrollerG1.sol\":{\"keccak256\":\"0x35cbc9179f0403092f8f733562d735963a56f13626593615bd4558e113562c4c\",\"urls\":[\"bzz-raw://dbafb4156676125875cd88b04fcf9789fcb4c3402ff8e8a9911d6dd16d49794d\",\"dweb:/ipfs/QmbuGkHEtCdfS5v49JgiEDEdQwHFS8g5NsBfb4JP8hYay7\"]},\"contracts/ComptrollerInterface.sol\":{\"keccak256\":\"0xecfb84fabc9792d0b1c912886249c67bc42c39eb065d962d0b9a5f3736af5892\",\"urls\":[\"bzz-raw://711547ebc1a7f18b271118dd98276771953a9d7b3674716f67d247be9b907372\",\"dweb:/ipfs/QmbVZNvkBp8miByATrL6y5j8MePdcQ8uTAUZMpKrhpLgoa\"]},\"contracts/ComptrollerStorage.sol\":{\"keccak256\":\"0x83961d3c12984fe4afc72717fc44b2d868563d053a0eceda0cbf17ec6b255913\",\"urls\":[\"bzz-raw://ea667c2de43881f9be19f4f75dec348632273178965fc9b3655705d853b032bb\",\"dweb:/ipfs/QmZP6sbNFSgFZrAEvfRjhp1NtGj6U6Sea3JGiKG96AHyeP\"]},\"contracts/EIP20Interface.sol\":{\"keccak256\":\"0xee33b8b333743308a9153a59f22da2cadb22cedef4403fe039bf9e057c9c729a\",\"urls\":[\"bzz-raw://5427fdb941300d36a424da0a0a5800e3b2ca51c9c922831dbfce2f6637402b43\",\"dweb:/ipfs/QmTrvmLynqSUPjsGW2dpiQ91dSmn4xzccQiwr8qaBtyvjH\"]},\"contracts/EIP20NonStandardInterface.sol\":{\"keccak256\":\"0x469899442dd9640bfc2c670d404ad3027e48df5df8e5aeab0e25cc6b6aae05f5\",\"urls\":[\"bzz-raw://d8c4498abaf539eb413a2f1a916d75945adc8bd4ef437f8450cb67e07be3f38d\",\"dweb:/ipfs/QmaFpWfnhAMYW21rbT5PEszn4TGHdGU58Eq5AfZsCuapZ3\"]},\"contracts/ErrorReporter.sol\":{\"keccak256\":\"0xe9587478bc9efad203cab02b8aecae32828cfc9a271b13ae3c018e38e44aab32\",\"urls\":[\"bzz-raw://2eb34bdbbbc410fb401d50ddca44a7421a1d8191711c569ed5bcec1c1b07a05c\",\"dweb:/ipfs/QmYKNCYppyx3NGiwtjdLEmxUMgfnFBqT4pnvnhnBrPgrxS\"]},\"contracts/Exponential.sol\":{\"keccak256\":\"0xfda0e2b610541cf1cf316a0000c89a1069ccc21f1566affc0a058810e2b835d3\",\"urls\":[\"bzz-raw://fe319f184f1b5f27019d3d890124cd24e466d27153ac38eb9ff6b16efbad48b9\",\"dweb:/ipfs/Qmcev6jCmtdCviJxUQvUCmesPDShRDSvdfUEfvsqd4GEJA\"]},\"contracts/ExponentialNoError.sol\":{\"keccak256\":\"0x713a089f4bbcaec1d3924fc7d9a2154904a39f46cb6f25b713167dbe5f21623e\",\"urls\":[\"bzz-raw://d7108d68af7c5effd4272615ceba54e79e585f6b8be5aabc7602245c84c7b9e0\",\"dweb:/ipfs/QmQZo2XpxW7w5viVEg71mi9eKaAYD7HUqfCMB5yCCPVnc5\"]},\"contracts/IFuseFeeDistributor.sol\":{\"keccak256\":\"0xb5d287b8e05574d38bd5d0b413f44b4c5d312f28188573ac60abe78123fbd92c\",\"urls\":[\"bzz-raw://84c2bbf746a82aaa100bee90c7dd40411c723bded124bb1775bf72bf7fda8a2c\",\"dweb:/ipfs/QmToQzDtz9BV2tvU71YsfWjdaZu5qpP1xKFZ1TkQgubhDb\"]},\"contracts/InterestRateModel.sol\":{\"keccak256\":\"0x0cc0dbd1991e5dcdcff58b0c82a9471a0fb9df26763e5e7415e1d081b7332409\",\"urls\":[\"bzz-raw://f4d7936aefc43ea2724f0e472b8f1517f1ca40170258ab9d5bbd0862dd0c4f13\",\"dweb:/ipfs/QmfYjG1Sm3kNwbhomHCWhMqw9LvaJVWVzBe4Te5BHRbTQS\"]},\"contracts/PriceOracle.sol\":{\"keccak256\":\"0x62ba3a5ec8f06d456ab089d6ca7f9d14d3a6ce6814923271ca60a6990918fb41\",\"urls\":[\"bzz-raw://aa6d2f20efdd5389161eb15bdab98b5628dc8cd5354394bbed35bb14d3612506\",\"dweb:/ipfs/QmVfo4eCDuk8LMSywpBjZBxCv7zLCNsG6u3nyD1d4CYwsD\"]},\"contracts/Unitroller.sol\":{\"keccak256\":\"0x36bf7b6c12ddf5053da8b8b4c0c23da46df6c62eec0e31230c57f9aedf9b9d2d\",\"urls\":[\"bzz-raw://866cf0d98da484f9ed07fb98b3e1ef2db0ef33f3f0be5c02becdf07da448ce4a\",\"dweb:/ipfs/Qma8qNfmcfjReH5LT7Aaujqu3qdsBkdwExgS5yPgSbzYMF\"]}},\"version\":1}"}},"contracts/ComptrollerInterface.sol":{"ComptrollerInterface":{"abi":[{"constant":false,"inputs":[],"name":"_afterNonReentrant","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"_beforeNonReentrant","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"cToken","type":"address"},{"internalType":"address","name":"borrower","type":"address"},{"internalType":"uint256","name":"borrowAmount","type":"uint256"}],"name":"borrowAllowed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"cToken","type":"address"},{"internalType":"address","name":"borrower","type":"address"},{"internalType":"uint256","name":"borrowAmount","type":"uint256"}],"name":"borrowVerify","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"cToken","type":"address"},{"internalType":"uint256","name":"accountBorrowsNew","type":"uint256"}],"name":"borrowWithinLimits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address[]","name":"cTokens","type":"address[]"}],"name":"enterMarkets","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"cToken","type":"address"}],"name":"exitMarket","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isComptroller","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"cTokenBorrowed","type":"address"},{"internalType":"address","name":"cTokenCollateral","type":"address"},{"internalType":"address","name":"liquidator","type":"address"},{"internalType":"address","name":"borrower","type":"address"},{"internalType":"uint256","name":"repayAmount","type":"uint256"}],"name":"liquidateBorrowAllowed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"cTokenBorrowed","type":"address"},{"internalType":"address","name":"cTokenCollateral","type":"address"},{"internalType":"address","name":"liquidator","type":"address"},{"internalType":"address","name":"borrower","type":"address"},{"internalType":"uint256","name":"repayAmount","type":"uint256"},{"internalType":"uint256","name":"seizeTokens","type":"uint256"}],"name":"liquidateBorrowVerify","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"cTokenBorrowed","type":"address"},{"internalType":"address","name":"cTokenCollateral","type":"address"},{"internalType":"uint256","name":"repayAmount","type":"uint256"}],"name":"liquidateCalculateSeizeTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"cToken","type":"address"},{"internalType":"address","name":"minter","type":"address"},{"internalType":"uint256","name":"mintAmount","type":"uint256"}],"name":"mintAllowed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"cToken","type":"address"},{"internalType":"address","name":"minter","type":"address"},{"internalType":"uint256","name":"mintAmount","type":"uint256"},{"internalType":"uint256","name":"mintTokens","type":"uint256"}],"name":"mintVerify","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"cToken","type":"address"},{"internalType":"uint256","name":"exchangeRateMantissa","type":"uint256"},{"internalType":"uint256","name":"accountTokens","type":"uint256"},{"internalType":"uint256","name":"mintAmount","type":"uint256"}],"name":"mintWithinLimits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"cToken","type":"address"},{"internalType":"address","name":"redeemer","type":"address"},{"internalType":"uint256","name":"redeemTokens","type":"uint256"}],"name":"redeemAllowed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"cToken","type":"address"},{"internalType":"address","name":"redeemer","type":"address"},{"internalType":"uint256","name":"redeemAmount","type":"uint256"},{"internalType":"uint256","name":"redeemTokens","type":"uint256"}],"name":"redeemVerify","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"cToken","type":"address"},{"internalType":"address","name":"payer","type":"address"},{"internalType":"address","name":"borrower","type":"address"},{"internalType":"uint256","name":"repayAmount","type":"uint256"}],"name":"repayBorrowAllowed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"cToken","type":"address"},{"internalType":"address","name":"payer","type":"address"},{"internalType":"address","name":"borrower","type":"address"},{"internalType":"uint256","name":"repayAmount","type":"uint256"},{"internalType":"uint256","name":"borrowerIndex","type":"uint256"}],"name":"repayBorrowVerify","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"cTokenCollateral","type":"address"},{"internalType":"address","name":"cTokenBorrowed","type":"address"},{"internalType":"address","name":"liquidator","type":"address"},{"internalType":"address","name":"borrower","type":"address"},{"internalType":"uint256","name":"seizeTokens","type":"uint256"}],"name":"seizeAllowed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"cTokenCollateral","type":"address"},{"internalType":"address","name":"cTokenBorrowed","type":"address"},{"internalType":"address","name":"liquidator","type":"address"},{"internalType":"address","name":"borrower","type":"address"},{"internalType":"uint256","name":"seizeTokens","type":"uint256"}],"name":"seizeVerify","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"cToken","type":"address"},{"internalType":"address","name":"src","type":"address"},{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"transferTokens","type":"uint256"}],"name":"transferAllowed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"cToken","type":"address"},{"internalType":"address","name":"src","type":"address"},{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"transferTokens","type":"uint256"}],"name":"transferVerify","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"_afterNonReentrant()":"632e5142","_beforeNonReentrant()":"c90c20b1","borrowAllowed(address,address,uint256)":"da3d454c","borrowVerify(address,address,uint256)":"5c778605","borrowWithinLimits(address,uint256)":"779b2294","enterMarkets(address[])":"c2998238","exitMarket(address)":"ede4edd0","isComptroller()":"007e3dd2","liquidateBorrowAllowed(address,address,address,address,uint256)":"5fc7e71e","liquidateBorrowVerify(address,address,address,address,uint256,uint256)":"47ef3b3b","liquidateCalculateSeizeTokens(address,address,uint256)":"c488847b","mintAllowed(address,address,uint256)":"4ef4c3e1","mintVerify(address,address,uint256,uint256)":"41c728b9","mintWithinLimits(address,uint256,uint256,uint256)":"2259192a","redeemAllowed(address,address,uint256)":"eabe7d91","redeemVerify(address,address,uint256,uint256)":"51dff989","repayBorrowAllowed(address,address,address,uint256)":"24008a62","repayBorrowVerify(address,address,address,uint256,uint256)":"1ededc91","seizeAllowed(address,address,address,address,uint256)":"d02f7351","seizeVerify(address,address,address,address,uint256)":"6d35bf91","transferAllowed(address,address,address,uint256)":"bdcdc258","transferVerify(address,address,address,uint256)":"6a56947e"}},"metadata":"{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[],\"name\":\"_afterNonReentrant\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"_beforeNonReentrant\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"borrowAmount\",\"type\":\"uint256\"}],\"name\":\"borrowAllowed\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"borrowAmount\",\"type\":\"uint256\"}],\"name\":\"borrowVerify\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"accountBorrowsNew\",\"type\":\"uint256\"}],\"name\":\"borrowWithinLimits\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"cTokens\",\"type\":\"address[]\"}],\"name\":\"enterMarkets\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"}],\"name\":\"exitMarket\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isComptroller\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cTokenBorrowed\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"cTokenCollateral\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"liquidator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"repayAmount\",\"type\":\"uint256\"}],\"name\":\"liquidateBorrowAllowed\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cTokenBorrowed\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"cTokenCollateral\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"liquidator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"repayAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"seizeTokens\",\"type\":\"uint256\"}],\"name\":\"liquidateBorrowVerify\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cTokenBorrowed\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"cTokenCollateral\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"repayAmount\",\"type\":\"uint256\"}],\"name\":\"liquidateCalculateSeizeTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"mintAmount\",\"type\":\"uint256\"}],\"name\":\"mintAllowed\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"mintAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"mintTokens\",\"type\":\"uint256\"}],\"name\":\"mintVerify\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exchangeRateMantissa\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"accountTokens\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"mintAmount\",\"type\":\"uint256\"}],\"name\":\"mintWithinLimits\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"redeemer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"redeemTokens\",\"type\":\"uint256\"}],\"name\":\"redeemAllowed\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"redeemer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"redeemAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"redeemTokens\",\"type\":\"uint256\"}],\"name\":\"redeemVerify\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"repayAmount\",\"type\":\"uint256\"}],\"name\":\"repayBorrowAllowed\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"repayAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"borrowerIndex\",\"type\":\"uint256\"}],\"name\":\"repayBorrowVerify\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cTokenCollateral\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"cTokenBorrowed\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"liquidator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"seizeTokens\",\"type\":\"uint256\"}],\"name\":\"seizeAllowed\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cTokenCollateral\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"cTokenBorrowed\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"liquidator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"seizeTokens\",\"type\":\"uint256\"}],\"name\":\"seizeVerify\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"transferTokens\",\"type\":\"uint256\"}],\"name\":\"transferAllowed\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"transferTokens\",\"type\":\"uint256\"}],\"name\":\"transferVerify\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{\"_beforeNonReentrant()\":{\"notice\":\"* Pool-Wide/Cross-Asset Reentrancy Prevention **\"},\"enterMarkets(address[])\":{\"notice\":\"* Assets You Are In **\"},\"liquidateCalculateSeizeTokens(address,address,uint256)\":{\"notice\":\"* Liquidity/Liquidation Calculations **\"},\"mintAllowed(address,address,uint256)\":{\"notice\":\"* Policy Hooks **\"}}}},\"settings\":{\"compilationTarget\":{\"contracts/ComptrollerInterface.sol\":\"ComptrollerInterface\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/ComptrollerInterface.sol\":{\"keccak256\":\"0xecfb84fabc9792d0b1c912886249c67bc42c39eb065d962d0b9a5f3736af5892\",\"urls\":[\"bzz-raw://711547ebc1a7f18b271118dd98276771953a9d7b3674716f67d247be9b907372\",\"dweb:/ipfs/QmbVZNvkBp8miByATrL6y5j8MePdcQ8uTAUZMpKrhpLgoa\"]}},\"version\":1}"}},"contracts/ComptrollerStorage.sol":{"ComptrollerV1Storage":{"abi":[{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"accountAssets","outputs":[{"internalType":"contract CToken","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"adminHasRights","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"closeFactorMantissa","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"comptrollerImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"fuseAdminHasRights","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"liquidationIncentiveMantissa","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"oracle","outputs":[{"internalType":"contract PriceOracle","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pendingAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pendingComptrollerImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60806040526001805460ff60a81b1960ff60a01b19909116600160a01b1716600160a81b17905534801561003257600080fd5b5061023a806100426000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063bb82aa5e11610066578063bb82aa5e1461010d578063dce1544914610115578063dcfbc0c714610141578063e875544614610149578063f851a440146101515761009e565b80630a755ec2146100a357806326782247146100bf5780632f1069ba146100e35780634ada90af146100eb5780637dc0d1d014610105575b600080fd5b6100ab610159565b604080519115158252519081900360200190f35b6100c7610169565b604080516001600160a01b039092168252519081900360200190f35b6100ab610178565b6100f3610188565b60408051918252519081900360200190f35b6100c761018e565b6100c761019d565b6100c76004803603604081101561012b57600080fd5b506001600160a01b0381351690602001356101ac565b6100c76101e1565b6100f36101f0565b6100c76101f6565b600154600160a81b900460ff1681565b6001546001600160a01b031681565b600154600160a01b900460ff1681565b60065481565b6004546001600160a01b031681565b6002546001600160a01b031681565b600860205281600052604060002081815481106101c557fe5b6000918252602090912001546001600160a01b03169150829050565b6003546001600160a01b031681565b60055481565b6000546001600160a01b03168156fea265627a7a72315820e2d0c52dab9d128b8346a8f400f6eb933a72c72a1400ed4912ca8b92987a9f9a64736f6c63430005110032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA8 SHL NOT PUSH1 0xFF PUSH1 0xA0 SHL NOT SWAP1 SWAP2 AND PUSH1 0x1 PUSH1 0xA0 SHL OR AND PUSH1 0x1 PUSH1 0xA8 SHL OR SWAP1 SSTORE CALLVALUE DUP1 ISZERO PUSH2 0x32 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23A DUP1 PUSH2 0x42 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 0x9E JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xBB82AA5E GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xBB82AA5E EQ PUSH2 0x10D JUMPI DUP1 PUSH4 0xDCE15449 EQ PUSH2 0x115 JUMPI DUP1 PUSH4 0xDCFBC0C7 EQ PUSH2 0x141 JUMPI DUP1 PUSH4 0xE8755446 EQ PUSH2 0x149 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x151 JUMPI PUSH2 0x9E JUMP JUMPDEST DUP1 PUSH4 0xA755EC2 EQ PUSH2 0xA3 JUMPI DUP1 PUSH4 0x26782247 EQ PUSH2 0xBF JUMPI DUP1 PUSH4 0x2F1069BA EQ PUSH2 0xE3 JUMPI DUP1 PUSH4 0x4ADA90AF EQ PUSH2 0xEB JUMPI DUP1 PUSH4 0x7DC0D1D0 EQ PUSH2 0x105 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xAB PUSH2 0x159 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xC7 PUSH2 0x169 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xAB PUSH2 0x178 JUMP JUMPDEST PUSH2 0xF3 PUSH2 0x188 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xC7 PUSH2 0x18E JUMP JUMPDEST PUSH2 0xC7 PUSH2 0x19D JUMP JUMPDEST PUSH2 0xC7 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x12B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1AC JUMP JUMPDEST PUSH2 0xC7 PUSH2 0x1E1 JUMP JUMPDEST PUSH2 0xF3 PUSH2 0x1F0 JUMP JUMPDEST PUSH2 0xC7 PUSH2 0x1F6 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0xA8 SHL SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD 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 0x8 PUSH1 0x20 MSTORE DUP2 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x1C5 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 POP DUP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xE2 0xD0 0xC5 0x2D 0xAB SWAP14 SLT DUP12 DUP4 CHAINID 0xA8 DELEGATECALL STOP 0xF6 0xEB SWAP4 GASPRICE PUSH19 0xC72A1400ED4912CA8B92987A9F9A64736F6C63 NUMBER STOP SDIV GT STOP ORIGIN ","sourceMap":"1240:795:16:-;;;627:4;594:37;;-1:-1:-1;;;;;;;;594:37:16;;;-1:-1:-1;;;594:37:16;711:33;-1:-1:-1;;;711:33:16;;;1240:795;5:2:-1;;;;30:1;27;20:12;5:2;1240:795:16;;;;;;;"},"deployedBytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061009e5760003560e01c8063bb82aa5e11610066578063bb82aa5e1461010d578063dce1544914610115578063dcfbc0c714610141578063e875544614610149578063f851a440146101515761009e565b80630a755ec2146100a357806326782247146100bf5780632f1069ba146100e35780634ada90af146100eb5780637dc0d1d014610105575b600080fd5b6100ab610159565b604080519115158252519081900360200190f35b6100c7610169565b604080516001600160a01b039092168252519081900360200190f35b6100ab610178565b6100f3610188565b60408051918252519081900360200190f35b6100c761018e565b6100c761019d565b6100c76004803603604081101561012b57600080fd5b506001600160a01b0381351690602001356101ac565b6100c76101e1565b6100f36101f0565b6100c76101f6565b600154600160a81b900460ff1681565b6001546001600160a01b031681565b600154600160a01b900460ff1681565b60065481565b6004546001600160a01b031681565b6002546001600160a01b031681565b600860205281600052604060002081815481106101c557fe5b6000918252602090912001546001600160a01b03169150829050565b6003546001600160a01b031681565b60055481565b6000546001600160a01b03168156fea265627a7a72315820e2d0c52dab9d128b8346a8f400f6eb933a72c72a1400ed4912ca8b92987a9f9a64736f6c63430005110032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x9E JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xBB82AA5E GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xBB82AA5E EQ PUSH2 0x10D JUMPI DUP1 PUSH4 0xDCE15449 EQ PUSH2 0x115 JUMPI DUP1 PUSH4 0xDCFBC0C7 EQ PUSH2 0x141 JUMPI DUP1 PUSH4 0xE8755446 EQ PUSH2 0x149 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x151 JUMPI PUSH2 0x9E JUMP JUMPDEST DUP1 PUSH4 0xA755EC2 EQ PUSH2 0xA3 JUMPI DUP1 PUSH4 0x26782247 EQ PUSH2 0xBF JUMPI DUP1 PUSH4 0x2F1069BA EQ PUSH2 0xE3 JUMPI DUP1 PUSH4 0x4ADA90AF EQ PUSH2 0xEB JUMPI DUP1 PUSH4 0x7DC0D1D0 EQ PUSH2 0x105 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xAB PUSH2 0x159 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xC7 PUSH2 0x169 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xAB PUSH2 0x178 JUMP JUMPDEST PUSH2 0xF3 PUSH2 0x188 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xC7 PUSH2 0x18E JUMP JUMPDEST PUSH2 0xC7 PUSH2 0x19D JUMP JUMPDEST PUSH2 0xC7 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x12B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1AC JUMP JUMPDEST PUSH2 0xC7 PUSH2 0x1E1 JUMP JUMPDEST PUSH2 0xF3 PUSH2 0x1F0 JUMP JUMPDEST PUSH2 0xC7 PUSH2 0x1F6 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0xA8 SHL SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD 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 0x8 PUSH1 0x20 MSTORE DUP2 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x1C5 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 POP DUP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xE2 0xD0 0xC5 0x2D 0xAB SWAP14 SLT DUP12 DUP4 CHAINID 0xA8 DELEGATECALL STOP 0xF6 0xEB SWAP4 GASPRICE PUSH19 0xC72A1400ED4912CA8B92987A9F9A64736F6C63 NUMBER STOP SDIV GT STOP ORIGIN ","sourceMap":"1240:795:16:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1240:795:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;711:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;482:27;;;:::i;:::-;;;;-1:-1:-1;;;;;482:27:16;;;;;;;;;;;;;;594:37;;;:::i;1670:40::-;;;:::i;:::-;;;;;;;;;;;;;;;;1381:25;;;:::i;1083:40::-;;;:::i;1982:49::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1982:49:16;;;;;;;;:::i;1188:47::-;;;:::i;1523:31::-;;;:::i;386:20::-;;;:::i;711:33::-;;;-1:-1:-1;;;711:33:16;;;;;:::o;482:27::-;;;-1:-1:-1;;;;;482:27:16;;:::o;594:37::-;;;-1:-1:-1;;;594:37:16;;;;;:::o;1670:40::-;;;;:::o;1381:25::-;;;-1:-1:-1;;;;;1381:25:16;;:::o;1083:40::-;;;-1:-1:-1;;;;;1083:40:16;;:::o;1982:49::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1982:49:16;;-1:-1:-1;1982:49:16;;-1:-1:-1;1982:49:16:o;1188:47::-;;;-1:-1:-1;;;;;1188:47:16;;:::o;1523:31::-;;;;:::o;386:20::-;;;-1:-1:-1;;;;;386:20:16;;:::o"},"methodIdentifiers":{"accountAssets(address,uint256)":"dce15449","admin()":"f851a440","adminHasRights()":"0a755ec2","closeFactorMantissa()":"e8755446","comptrollerImplementation()":"bb82aa5e","fuseAdminHasRights()":"2f1069ba","liquidationIncentiveMantissa()":"4ada90af","oracle()":"7dc0d1d0","pendingAdmin()":"26782247","pendingComptrollerImplementation()":"dcfbc0c7"}},"metadata":"{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"accountAssets\",\"outputs\":[{\"internalType\":\"contract CToken\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"adminHasRights\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"closeFactorMantissa\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"comptrollerImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"fuseAdminHasRights\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"liquidationIncentiveMantissa\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"oracle\",\"outputs\":[{\"internalType\":\"contract PriceOracle\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"pendingAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"pendingComptrollerImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/ComptrollerStorage.sol\":\"ComptrollerV1Storage\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/CToken.sol\":{\"keccak256\":\"0xc3a5a827241528049e20a24cc446558c8a9272909f75ce5d1cf14ae3ab5feba3\",\"urls\":[\"bzz-raw://a403db2bf1a8e5e9384df19600bd18d4251056818b094afcdab418e683bb5cb8\",\"dweb:/ipfs/QmdkRbFGtKP67tNNqyH7BraDRGerwRNA7ktscbFV9LioM2\"]},\"contracts/CTokenInterfaces.sol\":{\"keccak256\":\"0xc8a056c724ef4f0215ece6011e7ac1007c9dc7611ce5160d470ec858bbb06bd3\",\"urls\":[\"bzz-raw://58951693d1b53d2722e55b068bab2b570f4b044d89c28ed6b53bac6e95aeb662\",\"dweb:/ipfs/QmQiNTw5jZR74WjKfX2bPiuTT4tuFuq8rx7QxEVyVvdGLn\"]},\"contracts/CarefulMath.sol\":{\"keccak256\":\"0x1487237dbbbb73ad43c8eff16e78311753719a94a5065f574de5c91b672c56f8\",\"urls\":[\"bzz-raw://349966a236f313b2cb42e1942832e6bd7e134f65f6654e6c4d46788e65cc4a9b\",\"dweb:/ipfs/Qmebpv8i5jLR4fLgpZHQZRLu6aefVAbLC2yUk9ABEekquz\"]},\"contracts/ComptrollerInterface.sol\":{\"keccak256\":\"0xecfb84fabc9792d0b1c912886249c67bc42c39eb065d962d0b9a5f3736af5892\",\"urls\":[\"bzz-raw://711547ebc1a7f18b271118dd98276771953a9d7b3674716f67d247be9b907372\",\"dweb:/ipfs/QmbVZNvkBp8miByATrL6y5j8MePdcQ8uTAUZMpKrhpLgoa\"]},\"contracts/ComptrollerStorage.sol\":{\"keccak256\":\"0x83961d3c12984fe4afc72717fc44b2d868563d053a0eceda0cbf17ec6b255913\",\"urls\":[\"bzz-raw://ea667c2de43881f9be19f4f75dec348632273178965fc9b3655705d853b032bb\",\"dweb:/ipfs/QmZP6sbNFSgFZrAEvfRjhp1NtGj6U6Sea3JGiKG96AHyeP\"]},\"contracts/EIP20Interface.sol\":{\"keccak256\":\"0xee33b8b333743308a9153a59f22da2cadb22cedef4403fe039bf9e057c9c729a\",\"urls\":[\"bzz-raw://5427fdb941300d36a424da0a0a5800e3b2ca51c9c922831dbfce2f6637402b43\",\"dweb:/ipfs/QmTrvmLynqSUPjsGW2dpiQ91dSmn4xzccQiwr8qaBtyvjH\"]},\"contracts/EIP20NonStandardInterface.sol\":{\"keccak256\":\"0x469899442dd9640bfc2c670d404ad3027e48df5df8e5aeab0e25cc6b6aae05f5\",\"urls\":[\"bzz-raw://d8c4498abaf539eb413a2f1a916d75945adc8bd4ef437f8450cb67e07be3f38d\",\"dweb:/ipfs/QmaFpWfnhAMYW21rbT5PEszn4TGHdGU58Eq5AfZsCuapZ3\"]},\"contracts/ErrorReporter.sol\":{\"keccak256\":\"0xe9587478bc9efad203cab02b8aecae32828cfc9a271b13ae3c018e38e44aab32\",\"urls\":[\"bzz-raw://2eb34bdbbbc410fb401d50ddca44a7421a1d8191711c569ed5bcec1c1b07a05c\",\"dweb:/ipfs/QmYKNCYppyx3NGiwtjdLEmxUMgfnFBqT4pnvnhnBrPgrxS\"]},\"contracts/Exponential.sol\":{\"keccak256\":\"0xfda0e2b610541cf1cf316a0000c89a1069ccc21f1566affc0a058810e2b835d3\",\"urls\":[\"bzz-raw://fe319f184f1b5f27019d3d890124cd24e466d27153ac38eb9ff6b16efbad48b9\",\"dweb:/ipfs/Qmcev6jCmtdCviJxUQvUCmesPDShRDSvdfUEfvsqd4GEJA\"]},\"contracts/ExponentialNoError.sol\":{\"keccak256\":\"0x713a089f4bbcaec1d3924fc7d9a2154904a39f46cb6f25b713167dbe5f21623e\",\"urls\":[\"bzz-raw://d7108d68af7c5effd4272615ceba54e79e585f6b8be5aabc7602245c84c7b9e0\",\"dweb:/ipfs/QmQZo2XpxW7w5viVEg71mi9eKaAYD7HUqfCMB5yCCPVnc5\"]},\"contracts/IFuseFeeDistributor.sol\":{\"keccak256\":\"0xb5d287b8e05574d38bd5d0b413f44b4c5d312f28188573ac60abe78123fbd92c\",\"urls\":[\"bzz-raw://84c2bbf746a82aaa100bee90c7dd40411c723bded124bb1775bf72bf7fda8a2c\",\"dweb:/ipfs/QmToQzDtz9BV2tvU71YsfWjdaZu5qpP1xKFZ1TkQgubhDb\"]},\"contracts/InterestRateModel.sol\":{\"keccak256\":\"0x0cc0dbd1991e5dcdcff58b0c82a9471a0fb9df26763e5e7415e1d081b7332409\",\"urls\":[\"bzz-raw://f4d7936aefc43ea2724f0e472b8f1517f1ca40170258ab9d5bbd0862dd0c4f13\",\"dweb:/ipfs/QmfYjG1Sm3kNwbhomHCWhMqw9LvaJVWVzBe4Te5BHRbTQS\"]},\"contracts/PriceOracle.sol\":{\"keccak256\":\"0x62ba3a5ec8f06d456ab089d6ca7f9d14d3a6ce6814923271ca60a6990918fb41\",\"urls\":[\"bzz-raw://aa6d2f20efdd5389161eb15bdab98b5628dc8cd5354394bbed35bb14d3612506\",\"dweb:/ipfs/QmVfo4eCDuk8LMSywpBjZBxCv7zLCNsG6u3nyD1d4CYwsD\"]}},\"version\":1}"},"ComptrollerV2Storage":{"abi":[{"constant":true,"inputs":[],"name":"_borrowGuardianPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_mintGuardianPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"accountAssets","outputs":[{"internalType":"contract CToken","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"adminHasRights","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"allBorrowers","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"allMarkets","outputs":[{"internalType":"contract CToken","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"borrowGuardianPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"cTokensByUnderlying","outputs":[{"internalType":"contract CToken","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"closeFactorMantissa","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"comptrollerImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"enforceWhitelist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"fuseAdminHasRights","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"liquidationIncentiveMantissa","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"markets","outputs":[{"internalType":"bool","name":"isListed","type":"bool"},{"internalType":"uint256","name":"collateralFactorMantissa","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"mintGuardianPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"oracle","outputs":[{"internalType":"contract PriceOracle","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pauseGuardian","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pendingAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pendingComptrollerImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"seizeGuardianPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"suppliers","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"transferGuardianPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"whitelistArray","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60806040526001805460ff60a81b1960ff60a01b19909116600160a01b1716600160a81b17905534801561003257600080fd5b506105bc806100426000396000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c80637dc0d1d0116100de578063bb82aa5e11610097578063dcfbc0c711610071578063dcfbc0c714610394578063e6653f3d1461039c578063e8755446146103a4578063f851a440146103ac57610173565b8063bb82aa5e14610343578063d251fefc1461034b578063dce154491461036857610173565b80637dc0d1d0146102bc57806387f76303146102c45780638e8f294b146102cc5780639b19251a1461030d578063ac0b0bb714610333578063b09572101461033b57610173565b80633c94786f116101305780633c94786f146102145780634ada90af1461021c57806352d84d1e146102365780636d154ea514610253578063731f0c2b146102795780637515bafa1461029f57610173565b80630a755ec21461017857806316dc15fe1461019457806324a3d622146101ba57806326782247146101de5780632f1069ba146101e657806331ff47fa146101ee575b600080fd5b6101806103b4565b604080519115158252519081900360200190f35b610180600480360360208110156101aa57600080fd5b50356001600160a01b03166103c4565b6101c26103d9565b604080516001600160a01b039092168252519081900360200190f35b6101c26103e8565b6101806103f7565b6101c26004803603602081101561020457600080fd5b50356001600160a01b0316610407565b610180610422565b610224610432565b60408051918252519081900360200190f35b6101c26004803603602081101561024c57600080fd5b5035610438565b6101806004803603602081101561026957600080fd5b50356001600160a01b031661045f565b6101806004803603602081101561028f57600080fd5b50356001600160a01b0316610474565b6101c2600480360360208110156102b557600080fd5b5035610489565b6101c2610496565b6101806104a5565b6102f2600480360360208110156102e257600080fd5b50356001600160a01b03166104b5565b60408051921515835260208301919091528051918290030190f35b6101806004803603602081101561032357600080fd5b50356001600160a01b03166104d4565b6101806104e9565b6101806104f9565b6101c2610502565b6101c26004803603602081101561036157600080fd5b5035610511565b6101c26004803603604081101561037e57600080fd5b506001600160a01b03813516906020013561051e565b6101c2610553565b610180610562565b610224610572565b6101c2610578565b600154600160a81b900460ff1681565b600e6020526000908152604090205460ff1681565b6014546001600160a01b031681565b6001546001600160a01b031681565b600154600160a01b900460ff1681565b600f602052600090815260409020546001600160a01b031681565b601454600160a01b900460ff1681565b60065481565b600a818154811061044557fe5b6000918252602090912001546001600160a01b0316905081565b60166020526000908152604090205460ff1681565b60156020526000908152604090205460ff1681565b600c818154811061044557fe5b6004546001600160a01b031681565b601454600160b01b900460ff1681565b6009602052600090815260409020805460019091015460ff9091169082565b60116020526000908152604090205460ff1681565b601454600160b81b900460ff1681565b60105460ff1681565b6002546001600160a01b031681565b6012818154811061044557fe5b6008602052816000526040600020818154811061053757fe5b6000918252602090912001546001600160a01b03169150829050565b6003546001600160a01b031681565b601454600160a81b900460ff1681565b60055481565b6000546001600160a01b03168156fea265627a7a72315820c34086a08765e1999e563613a3f394bdee7f856499419dbc95d6786dc99c3cb064736f6c63430005110032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA8 SHL NOT PUSH1 0xFF PUSH1 0xA0 SHL NOT SWAP1 SWAP2 AND PUSH1 0x1 PUSH1 0xA0 SHL OR AND PUSH1 0x1 PUSH1 0xA8 SHL OR SWAP1 SSTORE CALLVALUE DUP1 ISZERO PUSH2 0x32 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5BC DUP1 PUSH2 0x42 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 0x173 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7DC0D1D0 GT PUSH2 0xDE JUMPI DUP1 PUSH4 0xBB82AA5E GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xDCFBC0C7 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xDCFBC0C7 EQ PUSH2 0x394 JUMPI DUP1 PUSH4 0xE6653F3D EQ PUSH2 0x39C JUMPI DUP1 PUSH4 0xE8755446 EQ PUSH2 0x3A4 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x3AC JUMPI PUSH2 0x173 JUMP JUMPDEST DUP1 PUSH4 0xBB82AA5E EQ PUSH2 0x343 JUMPI DUP1 PUSH4 0xD251FEFC EQ PUSH2 0x34B JUMPI DUP1 PUSH4 0xDCE15449 EQ PUSH2 0x368 JUMPI PUSH2 0x173 JUMP JUMPDEST DUP1 PUSH4 0x7DC0D1D0 EQ PUSH2 0x2BC JUMPI DUP1 PUSH4 0x87F76303 EQ PUSH2 0x2C4 JUMPI DUP1 PUSH4 0x8E8F294B EQ PUSH2 0x2CC JUMPI DUP1 PUSH4 0x9B19251A EQ PUSH2 0x30D JUMPI DUP1 PUSH4 0xAC0B0BB7 EQ PUSH2 0x333 JUMPI DUP1 PUSH4 0xB0957210 EQ PUSH2 0x33B JUMPI PUSH2 0x173 JUMP JUMPDEST DUP1 PUSH4 0x3C94786F GT PUSH2 0x130 JUMPI DUP1 PUSH4 0x3C94786F EQ PUSH2 0x214 JUMPI DUP1 PUSH4 0x4ADA90AF EQ PUSH2 0x21C JUMPI DUP1 PUSH4 0x52D84D1E EQ PUSH2 0x236 JUMPI DUP1 PUSH4 0x6D154EA5 EQ PUSH2 0x253 JUMPI DUP1 PUSH4 0x731F0C2B EQ PUSH2 0x279 JUMPI DUP1 PUSH4 0x7515BAFA EQ PUSH2 0x29F JUMPI PUSH2 0x173 JUMP JUMPDEST DUP1 PUSH4 0xA755EC2 EQ PUSH2 0x178 JUMPI DUP1 PUSH4 0x16DC15FE EQ PUSH2 0x194 JUMPI DUP1 PUSH4 0x24A3D622 EQ PUSH2 0x1BA JUMPI DUP1 PUSH4 0x26782247 EQ PUSH2 0x1DE JUMPI DUP1 PUSH4 0x2F1069BA EQ PUSH2 0x1E6 JUMPI DUP1 PUSH4 0x31FF47FA EQ PUSH2 0x1EE JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x180 PUSH2 0x3B4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x180 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3C4 JUMP JUMPDEST PUSH2 0x1C2 PUSH2 0x3D9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1C2 PUSH2 0x3E8 JUMP JUMPDEST PUSH2 0x180 PUSH2 0x3F7 JUMP JUMPDEST PUSH2 0x1C2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x204 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x407 JUMP JUMPDEST PUSH2 0x180 PUSH2 0x422 JUMP JUMPDEST PUSH2 0x224 PUSH2 0x432 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1C2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x24C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x438 JUMP JUMPDEST PUSH2 0x180 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x269 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x45F JUMP JUMPDEST PUSH2 0x180 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x28F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x474 JUMP JUMPDEST PUSH2 0x1C2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x489 JUMP JUMPDEST PUSH2 0x1C2 PUSH2 0x496 JUMP JUMPDEST PUSH2 0x180 PUSH2 0x4A5 JUMP JUMPDEST PUSH2 0x2F2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4B5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 ISZERO ISZERO DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x180 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x323 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4D4 JUMP JUMPDEST PUSH2 0x180 PUSH2 0x4E9 JUMP JUMPDEST PUSH2 0x180 PUSH2 0x4F9 JUMP JUMPDEST PUSH2 0x1C2 PUSH2 0x502 JUMP JUMPDEST PUSH2 0x1C2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x361 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x511 JUMP JUMPDEST PUSH2 0x1C2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x37E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x51E JUMP JUMPDEST PUSH2 0x1C2 PUSH2 0x553 JUMP JUMPDEST PUSH2 0x180 PUSH2 0x562 JUMP JUMPDEST PUSH2 0x224 PUSH2 0x572 JUMP JUMPDEST PUSH2 0x1C2 PUSH2 0x578 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0xA8 SHL SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0xE PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x445 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP2 JUMP JUMPDEST PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x15 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0xC DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x445 JUMPI INVALID JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0xB0 SHL SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD PUSH1 0xFF SWAP1 SWAP2 AND SWAP1 DUP3 JUMP JUMPDEST PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0xB8 SHL SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x10 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x12 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x445 JUMPI INVALID JUMPDEST PUSH1 0x8 PUSH1 0x20 MSTORE DUP2 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x537 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 POP DUP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0xA8 SHL SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xC3 BLOCKHASH DUP7 LOG0 DUP8 PUSH6 0xE1999E563613 LOG3 RETURN SWAP5 0xBD 0xEE PUSH32 0x856499419DBC95D6786DC99C3CB064736F6C6343000511003200000000000000 ","sourceMap":"2037:2635:16:-;;;627:4;594:37;;-1:-1:-1;;;;;;;;594:37:16;;;-1:-1:-1;;;594:37:16;711:33;-1:-1:-1;;;711:33:16;;;2037:2635;5:2:-1;;;;30:1;27;20:12;5:2;2037:2635:16;;;;;;;"},"deployedBytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106101735760003560e01c80637dc0d1d0116100de578063bb82aa5e11610097578063dcfbc0c711610071578063dcfbc0c714610394578063e6653f3d1461039c578063e8755446146103a4578063f851a440146103ac57610173565b8063bb82aa5e14610343578063d251fefc1461034b578063dce154491461036857610173565b80637dc0d1d0146102bc57806387f76303146102c45780638e8f294b146102cc5780639b19251a1461030d578063ac0b0bb714610333578063b09572101461033b57610173565b80633c94786f116101305780633c94786f146102145780634ada90af1461021c57806352d84d1e146102365780636d154ea514610253578063731f0c2b146102795780637515bafa1461029f57610173565b80630a755ec21461017857806316dc15fe1461019457806324a3d622146101ba57806326782247146101de5780632f1069ba146101e657806331ff47fa146101ee575b600080fd5b6101806103b4565b604080519115158252519081900360200190f35b610180600480360360208110156101aa57600080fd5b50356001600160a01b03166103c4565b6101c26103d9565b604080516001600160a01b039092168252519081900360200190f35b6101c26103e8565b6101806103f7565b6101c26004803603602081101561020457600080fd5b50356001600160a01b0316610407565b610180610422565b610224610432565b60408051918252519081900360200190f35b6101c26004803603602081101561024c57600080fd5b5035610438565b6101806004803603602081101561026957600080fd5b50356001600160a01b031661045f565b6101806004803603602081101561028f57600080fd5b50356001600160a01b0316610474565b6101c2600480360360208110156102b557600080fd5b5035610489565b6101c2610496565b6101806104a5565b6102f2600480360360208110156102e257600080fd5b50356001600160a01b03166104b5565b60408051921515835260208301919091528051918290030190f35b6101806004803603602081101561032357600080fd5b50356001600160a01b03166104d4565b6101806104e9565b6101806104f9565b6101c2610502565b6101c26004803603602081101561036157600080fd5b5035610511565b6101c26004803603604081101561037e57600080fd5b506001600160a01b03813516906020013561051e565b6101c2610553565b610180610562565b610224610572565b6101c2610578565b600154600160a81b900460ff1681565b600e6020526000908152604090205460ff1681565b6014546001600160a01b031681565b6001546001600160a01b031681565b600154600160a01b900460ff1681565b600f602052600090815260409020546001600160a01b031681565b601454600160a01b900460ff1681565b60065481565b600a818154811061044557fe5b6000918252602090912001546001600160a01b0316905081565b60166020526000908152604090205460ff1681565b60156020526000908152604090205460ff1681565b600c818154811061044557fe5b6004546001600160a01b031681565b601454600160b01b900460ff1681565b6009602052600090815260409020805460019091015460ff9091169082565b60116020526000908152604090205460ff1681565b601454600160b81b900460ff1681565b60105460ff1681565b6002546001600160a01b031681565b6012818154811061044557fe5b6008602052816000526040600020818154811061053757fe5b6000918252602090912001546001600160a01b03169150829050565b6003546001600160a01b031681565b601454600160a81b900460ff1681565b60055481565b6000546001600160a01b03168156fea265627a7a72315820c34086a08765e1999e563613a3f394bdee7f856499419dbc95d6786dc99c3cb064736f6c63430005110032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x173 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7DC0D1D0 GT PUSH2 0xDE JUMPI DUP1 PUSH4 0xBB82AA5E GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xDCFBC0C7 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xDCFBC0C7 EQ PUSH2 0x394 JUMPI DUP1 PUSH4 0xE6653F3D EQ PUSH2 0x39C JUMPI DUP1 PUSH4 0xE8755446 EQ PUSH2 0x3A4 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x3AC JUMPI PUSH2 0x173 JUMP JUMPDEST DUP1 PUSH4 0xBB82AA5E EQ PUSH2 0x343 JUMPI DUP1 PUSH4 0xD251FEFC EQ PUSH2 0x34B JUMPI DUP1 PUSH4 0xDCE15449 EQ PUSH2 0x368 JUMPI PUSH2 0x173 JUMP JUMPDEST DUP1 PUSH4 0x7DC0D1D0 EQ PUSH2 0x2BC JUMPI DUP1 PUSH4 0x87F76303 EQ PUSH2 0x2C4 JUMPI DUP1 PUSH4 0x8E8F294B EQ PUSH2 0x2CC JUMPI DUP1 PUSH4 0x9B19251A EQ PUSH2 0x30D JUMPI DUP1 PUSH4 0xAC0B0BB7 EQ PUSH2 0x333 JUMPI DUP1 PUSH4 0xB0957210 EQ PUSH2 0x33B JUMPI PUSH2 0x173 JUMP JUMPDEST DUP1 PUSH4 0x3C94786F GT PUSH2 0x130 JUMPI DUP1 PUSH4 0x3C94786F EQ PUSH2 0x214 JUMPI DUP1 PUSH4 0x4ADA90AF EQ PUSH2 0x21C JUMPI DUP1 PUSH4 0x52D84D1E EQ PUSH2 0x236 JUMPI DUP1 PUSH4 0x6D154EA5 EQ PUSH2 0x253 JUMPI DUP1 PUSH4 0x731F0C2B EQ PUSH2 0x279 JUMPI DUP1 PUSH4 0x7515BAFA EQ PUSH2 0x29F JUMPI PUSH2 0x173 JUMP JUMPDEST DUP1 PUSH4 0xA755EC2 EQ PUSH2 0x178 JUMPI DUP1 PUSH4 0x16DC15FE EQ PUSH2 0x194 JUMPI DUP1 PUSH4 0x24A3D622 EQ PUSH2 0x1BA JUMPI DUP1 PUSH4 0x26782247 EQ PUSH2 0x1DE JUMPI DUP1 PUSH4 0x2F1069BA EQ PUSH2 0x1E6 JUMPI DUP1 PUSH4 0x31FF47FA EQ PUSH2 0x1EE JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x180 PUSH2 0x3B4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x180 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3C4 JUMP JUMPDEST PUSH2 0x1C2 PUSH2 0x3D9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1C2 PUSH2 0x3E8 JUMP JUMPDEST PUSH2 0x180 PUSH2 0x3F7 JUMP JUMPDEST PUSH2 0x1C2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x204 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x407 JUMP JUMPDEST PUSH2 0x180 PUSH2 0x422 JUMP JUMPDEST PUSH2 0x224 PUSH2 0x432 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1C2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x24C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x438 JUMP JUMPDEST PUSH2 0x180 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x269 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x45F JUMP JUMPDEST PUSH2 0x180 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x28F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x474 JUMP JUMPDEST PUSH2 0x1C2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x489 JUMP JUMPDEST PUSH2 0x1C2 PUSH2 0x496 JUMP JUMPDEST PUSH2 0x180 PUSH2 0x4A5 JUMP JUMPDEST PUSH2 0x2F2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4B5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 ISZERO ISZERO DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x180 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x323 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4D4 JUMP JUMPDEST PUSH2 0x180 PUSH2 0x4E9 JUMP JUMPDEST PUSH2 0x180 PUSH2 0x4F9 JUMP JUMPDEST PUSH2 0x1C2 PUSH2 0x502 JUMP JUMPDEST PUSH2 0x1C2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x361 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x511 JUMP JUMPDEST PUSH2 0x1C2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x37E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x51E JUMP JUMPDEST PUSH2 0x1C2 PUSH2 0x553 JUMP JUMPDEST PUSH2 0x180 PUSH2 0x562 JUMP JUMPDEST PUSH2 0x224 PUSH2 0x572 JUMP JUMPDEST PUSH2 0x1C2 PUSH2 0x578 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0xA8 SHL SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0xE PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x445 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP2 JUMP JUMPDEST PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x15 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0xC DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x445 JUMPI INVALID JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0xB0 SHL SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD PUSH1 0xFF SWAP1 SWAP2 AND SWAP1 DUP3 JUMP JUMPDEST PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0xB8 SHL SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x10 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x12 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x445 JUMPI INVALID JUMPDEST PUSH1 0x8 PUSH1 0x20 MSTORE DUP2 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x537 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 POP DUP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0xA8 SHL SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xC3 BLOCKHASH DUP7 LOG0 DUP8 PUSH6 0xE1999E563613 LOG3 RETURN SWAP5 0xBD 0xEE PUSH32 0x856499419DBC95D6786DC99C3CB064736F6C6343000511003200000000000000 ","sourceMap":"2037:2635:16:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2037:2635:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;711:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;3435:41;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3435:41:16;-1:-1:-1;;;;;3435:41:16;;:::i;4374:28::-;;;:::i;:::-;;;;-1:-1:-1;;;;;4374:28:16;;;;;;;;;;;;;;482:27;;;:::i;594:37::-;;;:::i;3564:53::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3564:53:16;-1:-1:-1;;;;;3564:53:16;;:::i;4408:31::-;;;:::i;1670:40::-;;;:::i;:::-;;;;;;;;;;;;;;;;2903:26;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2903:26:16;;:::i;4617:52::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4617:52:16;-1:-1:-1;;;;;4617:52:16;;:::i;4561:50::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4561:50:16;-1:-1:-1;;;;;4561:50:16;;:::i;3150:29::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3150:29:16;;:::i;1381:25::-;;;:::i;4484:34::-;;;:::i;2817:41::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2817:41:16;-1:-1:-1;;;;;2817:41:16;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;3837;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3837:41:16;-1:-1:-1;;;;;3837:41:16;;:::i;4524:31::-;;;:::i;3690:28::-;;;:::i;1083:40::-;;;:::i;3938:31::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3938:31:16;;:::i;1982:49::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1982:49:16;;;;;;;;:::i;1188:47::-;;;:::i;4445:33::-;;;:::i;1523:31::-;;;:::i;386:20::-;;;:::i;711:33::-;;;-1:-1:-1;;;711:33:16;;;;;:::o;3435:41::-;;;;;;;;;;;;;;;:::o;4374:28::-;;;-1:-1:-1;;;;;4374:28:16;;:::o;482:27::-;;;-1:-1:-1;;;;;482:27:16;;:::o;594:37::-;;;-1:-1:-1;;;594:37:16;;;;;:::o;3564:53::-;;;;;;;;;;;;-1:-1:-1;;;;;3564:53:16;;:::o;4408:31::-;;;-1:-1:-1;;;4408:31:16;;;;;:::o;1670:40::-;;;;:::o;2903:26::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2903:26:16;;-1:-1:-1;2903:26:16;:::o;4617:52::-;;;;;;;;;;;;;;;:::o;4561:50::-;;;;;;;;;;;;;;;:::o;3150:29::-;;;;;;;;;;1381:25;;;-1:-1:-1;;;;;1381:25:16;;:::o;4484:34::-;;;-1:-1:-1;;;4484:34:16;;;;;:::o;2817:41::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;3837:::-;;;;;;;;;;;;;;;:::o;4524:31::-;;;-1:-1:-1;;;4524:31:16;;;;;:::o;3690:28::-;;;;;;:::o;1083:40::-;;;-1:-1:-1;;;;;1083:40:16;;:::o;3938:31::-;;;;;;;;;;1982:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1982:49:16;;-1:-1:-1;1982:49:16;;-1:-1:-1;1982:49:16:o;1188:47::-;;;-1:-1:-1;;;;;1188:47:16;;:::o;4445:33::-;;;-1:-1:-1;;;4445:33:16;;;;;:::o;1523:31::-;;;;:::o;386:20::-;;;-1:-1:-1;;;;;386:20:16;;:::o"},"methodIdentifiers":{"_borrowGuardianPaused()":"e6653f3d","_mintGuardianPaused()":"3c94786f","accountAssets(address,uint256)":"dce15449","admin()":"f851a440","adminHasRights()":"0a755ec2","allBorrowers(uint256)":"7515bafa","allMarkets(uint256)":"52d84d1e","borrowGuardianPaused(address)":"6d154ea5","cTokensByUnderlying(address)":"31ff47fa","closeFactorMantissa()":"e8755446","comptrollerImplementation()":"bb82aa5e","enforceWhitelist()":"b0957210","fuseAdminHasRights()":"2f1069ba","liquidationIncentiveMantissa()":"4ada90af","markets(address)":"8e8f294b","mintGuardianPaused(address)":"731f0c2b","oracle()":"7dc0d1d0","pauseGuardian()":"24a3d622","pendingAdmin()":"26782247","pendingComptrollerImplementation()":"dcfbc0c7","seizeGuardianPaused()":"ac0b0bb7","suppliers(address)":"16dc15fe","transferGuardianPaused()":"87f76303","whitelist(address)":"9b19251a","whitelistArray(uint256)":"d251fefc"}},"metadata":"{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[],\"name\":\"_borrowGuardianPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"_mintGuardianPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"accountAssets\",\"outputs\":[{\"internalType\":\"contract CToken\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"adminHasRights\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"allBorrowers\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"allMarkets\",\"outputs\":[{\"internalType\":\"contract CToken\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"borrowGuardianPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"cTokensByUnderlying\",\"outputs\":[{\"internalType\":\"contract CToken\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"closeFactorMantissa\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"comptrollerImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"enforceWhitelist\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"fuseAdminHasRights\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"liquidationIncentiveMantissa\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"markets\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isListed\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"collateralFactorMantissa\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"mintGuardianPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"oracle\",\"outputs\":[{\"internalType\":\"contract PriceOracle\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"pauseGuardian\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"pendingAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"pendingComptrollerImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"seizeGuardianPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"suppliers\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"transferGuardianPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"whitelist\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"whitelistArray\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/ComptrollerStorage.sol\":\"ComptrollerV2Storage\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/CToken.sol\":{\"keccak256\":\"0xc3a5a827241528049e20a24cc446558c8a9272909f75ce5d1cf14ae3ab5feba3\",\"urls\":[\"bzz-raw://a403db2bf1a8e5e9384df19600bd18d4251056818b094afcdab418e683bb5cb8\",\"dweb:/ipfs/QmdkRbFGtKP67tNNqyH7BraDRGerwRNA7ktscbFV9LioM2\"]},\"contracts/CTokenInterfaces.sol\":{\"keccak256\":\"0xc8a056c724ef4f0215ece6011e7ac1007c9dc7611ce5160d470ec858bbb06bd3\",\"urls\":[\"bzz-raw://58951693d1b53d2722e55b068bab2b570f4b044d89c28ed6b53bac6e95aeb662\",\"dweb:/ipfs/QmQiNTw5jZR74WjKfX2bPiuTT4tuFuq8rx7QxEVyVvdGLn\"]},\"contracts/CarefulMath.sol\":{\"keccak256\":\"0x1487237dbbbb73ad43c8eff16e78311753719a94a5065f574de5c91b672c56f8\",\"urls\":[\"bzz-raw://349966a236f313b2cb42e1942832e6bd7e134f65f6654e6c4d46788e65cc4a9b\",\"dweb:/ipfs/Qmebpv8i5jLR4fLgpZHQZRLu6aefVAbLC2yUk9ABEekquz\"]},\"contracts/ComptrollerInterface.sol\":{\"keccak256\":\"0xecfb84fabc9792d0b1c912886249c67bc42c39eb065d962d0b9a5f3736af5892\",\"urls\":[\"bzz-raw://711547ebc1a7f18b271118dd98276771953a9d7b3674716f67d247be9b907372\",\"dweb:/ipfs/QmbVZNvkBp8miByATrL6y5j8MePdcQ8uTAUZMpKrhpLgoa\"]},\"contracts/ComptrollerStorage.sol\":{\"keccak256\":\"0x83961d3c12984fe4afc72717fc44b2d868563d053a0eceda0cbf17ec6b255913\",\"urls\":[\"bzz-raw://ea667c2de43881f9be19f4f75dec348632273178965fc9b3655705d853b032bb\",\"dweb:/ipfs/QmZP6sbNFSgFZrAEvfRjhp1NtGj6U6Sea3JGiKG96AHyeP\"]},\"contracts/EIP20Interface.sol\":{\"keccak256\":\"0xee33b8b333743308a9153a59f22da2cadb22cedef4403fe039bf9e057c9c729a\",\"urls\":[\"bzz-raw://5427fdb941300d36a424da0a0a5800e3b2ca51c9c922831dbfce2f6637402b43\",\"dweb:/ipfs/QmTrvmLynqSUPjsGW2dpiQ91dSmn4xzccQiwr8qaBtyvjH\"]},\"contracts/EIP20NonStandardInterface.sol\":{\"keccak256\":\"0x469899442dd9640bfc2c670d404ad3027e48df5df8e5aeab0e25cc6b6aae05f5\",\"urls\":[\"bzz-raw://d8c4498abaf539eb413a2f1a916d75945adc8bd4ef437f8450cb67e07be3f38d\",\"dweb:/ipfs/QmaFpWfnhAMYW21rbT5PEszn4TGHdGU58Eq5AfZsCuapZ3\"]},\"contracts/ErrorReporter.sol\":{\"keccak256\":\"0xe9587478bc9efad203cab02b8aecae32828cfc9a271b13ae3c018e38e44aab32\",\"urls\":[\"bzz-raw://2eb34bdbbbc410fb401d50ddca44a7421a1d8191711c569ed5bcec1c1b07a05c\",\"dweb:/ipfs/QmYKNCYppyx3NGiwtjdLEmxUMgfnFBqT4pnvnhnBrPgrxS\"]},\"contracts/Exponential.sol\":{\"keccak256\":\"0xfda0e2b610541cf1cf316a0000c89a1069ccc21f1566affc0a058810e2b835d3\",\"urls\":[\"bzz-raw://fe319f184f1b5f27019d3d890124cd24e466d27153ac38eb9ff6b16efbad48b9\",\"dweb:/ipfs/Qmcev6jCmtdCviJxUQvUCmesPDShRDSvdfUEfvsqd4GEJA\"]},\"contracts/ExponentialNoError.sol\":{\"keccak256\":\"0x713a089f4bbcaec1d3924fc7d9a2154904a39f46cb6f25b713167dbe5f21623e\",\"urls\":[\"bzz-raw://d7108d68af7c5effd4272615ceba54e79e585f6b8be5aabc7602245c84c7b9e0\",\"dweb:/ipfs/QmQZo2XpxW7w5viVEg71mi9eKaAYD7HUqfCMB5yCCPVnc5\"]},\"contracts/IFuseFeeDistributor.sol\":{\"keccak256\":\"0xb5d287b8e05574d38bd5d0b413f44b4c5d312f28188573ac60abe78123fbd92c\",\"urls\":[\"bzz-raw://84c2bbf746a82aaa100bee90c7dd40411c723bded124bb1775bf72bf7fda8a2c\",\"dweb:/ipfs/QmToQzDtz9BV2tvU71YsfWjdaZu5qpP1xKFZ1TkQgubhDb\"]},\"contracts/InterestRateModel.sol\":{\"keccak256\":\"0x0cc0dbd1991e5dcdcff58b0c82a9471a0fb9df26763e5e7415e1d081b7332409\",\"urls\":[\"bzz-raw://f4d7936aefc43ea2724f0e472b8f1517f1ca40170258ab9d5bbd0862dd0c4f13\",\"dweb:/ipfs/QmfYjG1Sm3kNwbhomHCWhMqw9LvaJVWVzBe4Te5BHRbTQS\"]},\"contracts/PriceOracle.sol\":{\"keccak256\":\"0x62ba3a5ec8f06d456ab089d6ca7f9d14d3a6ce6814923271ca60a6990918fb41\",\"urls\":[\"bzz-raw://aa6d2f20efdd5389161eb15bdab98b5628dc8cd5354394bbed35bb14d3612506\",\"dweb:/ipfs/QmVfo4eCDuk8LMSywpBjZBxCv7zLCNsG6u3nyD1d4CYwsD\"]}},\"version\":1}"},"ComptrollerV3Storage":{"abi":[{"constant":true,"inputs":[],"name":"_borrowGuardianPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_mintGuardianPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"accountAssets","outputs":[{"internalType":"contract CToken","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"adminHasRights","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"allBorrowers","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"allMarkets","outputs":[{"internalType":"contract CToken","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"autoImplementation","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"borrowCapGuardian","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"borrowCaps","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"borrowGuardianPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"cTokensByUnderlying","outputs":[{"internalType":"contract CToken","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"closeFactorMantissa","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"comptrollerImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"enforceWhitelist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"fuseAdminHasRights","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"liquidationIncentiveMantissa","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"markets","outputs":[{"internalType":"bool","name":"isListed","type":"bool"},{"internalType":"uint256","name":"collateralFactorMantissa","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"mintGuardianPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"oracle","outputs":[{"internalType":"contract PriceOracle","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pauseGuardian","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pendingAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pendingComptrollerImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"rewardsDistributors","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"seizeGuardianPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"suppliers","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"supplyCaps","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"transferGuardianPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"whitelistArray","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60806040526001805460ff60a81b1960ff60a01b19909116600160a01b1716600160a81b17905534801561003257600080fd5b506106ea806100426000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c80637dc0d1d011610104578063c6c5b0dd116100a2578063dd5cd22c11610071578063dd5cd22c14610474578063e6653f3d1461047c578063e875544614610484578063f851a4401461048c576101da565b8063c6c5b0dd14610406578063d251fefc14610423578063dce1544914610440578063dcfbc0c71461046c576101da565b80639b19251a116100de5780639b19251a146103c8578063ac0b0bb7146103ee578063b0957210146103f6578063bb82aa5e146103fe576101da565b80637dc0d1d01461037757806387f763031461037f5780638e8f294b14610387576101da565b806331ff47fa1161017c57806352d84d1e1161014b57806352d84d1e146102f15780636d154ea51461030e578063731f0c2b146103345780637515bafa1461035a576101da565b806331ff47fa146102955780633c94786f146102bb5780634a584432146102c35780634ada90af146102e9576101da565b806321af4569116101b857806321af45691461025957806324a3d6221461027d57806326782247146102855780632f1069ba1461028d576101da565b806302c3bcbb146101df5780630a755ec21461021757806316dc15fe14610233575b600080fd5b610205600480360360208110156101f557600080fd5b50356001600160a01b0316610494565b60408051918252519081900360200190f35b61021f6104a6565b604080519115158252519081900360200190f35b61021f6004803603602081101561024957600080fd5b50356001600160a01b03166104b6565b6102616104cb565b604080516001600160a01b039092168252519081900360200190f35b6102616104df565b6102616104ee565b61021f6104fd565b610261600480360360208110156102ab57600080fd5b50356001600160a01b031661050d565b61021f610528565b610205600480360360208110156102d957600080fd5b50356001600160a01b0316610538565b61020561054a565b6102616004803603602081101561030757600080fd5b5035610550565b61021f6004803603602081101561032457600080fd5b50356001600160a01b0316610577565b61021f6004803603602081101561034a57600080fd5b50356001600160a01b031661058c565b6102616004803603602081101561037057600080fd5b50356105a1565b6102616105ae565b61021f6105bd565b6103ad6004803603602081101561039d57600080fd5b50356001600160a01b03166105cd565b60408051921515835260208301919091528051918290030190f35b61021f600480360360208110156103de57600080fd5b50356001600160a01b03166105ec565b61021f610601565b61021f610611565b61026161061a565b6102616004803603602081101561041c57600080fd5b5035610629565b6102616004803603602081101561043957600080fd5b5035610636565b6102616004803603604081101561045657600080fd5b506001600160a01b038135169060200135610643565b610261610678565b61021f610687565b61021f610690565b6102056106a0565b6102616106a6565b60196020526000908152604090205481565b600154600160a81b900460ff1681565b600e6020526000908152604090205460ff1681565b60175461010090046001600160a01b031681565b6014546001600160a01b031681565b6001546001600160a01b031681565b600154600160a01b900460ff1681565b600f602052600090815260409020546001600160a01b031681565b601454600160a01b900460ff1681565b60186020526000908152604090205481565b60065481565b600a818154811061055d57fe5b6000918252602090912001546001600160a01b0316905081565b60166020526000908152604090205460ff1681565b60156020526000908152604090205460ff1681565b600c818154811061055d57fe5b6004546001600160a01b031681565b601454600160b01b900460ff1681565b6009602052600090815260409020805460019091015460ff9091169082565b60116020526000908152604090205460ff1681565b601454600160b81b900460ff1681565b60105460ff1681565b6002546001600160a01b031681565b601a818154811061055d57fe5b6012818154811061055d57fe5b6008602052816000526040600020818154811061065c57fe5b6000918252602090912001546001600160a01b03169150829050565b6003546001600160a01b031681565b60175460ff1681565b601454600160a81b900460ff1681565b60055481565b6000546001600160a01b03168156fea265627a7a7231582013a695b5b65bad05df41a37f6b6e32326e737621f3713a5bc3205abced82f54a64736f6c63430005110032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA8 SHL NOT PUSH1 0xFF PUSH1 0xA0 SHL NOT SWAP1 SWAP2 AND PUSH1 0x1 PUSH1 0xA0 SHL OR AND PUSH1 0x1 PUSH1 0xA8 SHL OR SWAP1 SSTORE CALLVALUE DUP1 ISZERO PUSH2 0x32 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6EA DUP1 PUSH2 0x42 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 0x1DA JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7DC0D1D0 GT PUSH2 0x104 JUMPI DUP1 PUSH4 0xC6C5B0DD GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xDD5CD22C GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xDD5CD22C EQ PUSH2 0x474 JUMPI DUP1 PUSH4 0xE6653F3D EQ PUSH2 0x47C JUMPI DUP1 PUSH4 0xE8755446 EQ PUSH2 0x484 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x48C JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0xC6C5B0DD EQ PUSH2 0x406 JUMPI DUP1 PUSH4 0xD251FEFC EQ PUSH2 0x423 JUMPI DUP1 PUSH4 0xDCE15449 EQ PUSH2 0x440 JUMPI DUP1 PUSH4 0xDCFBC0C7 EQ PUSH2 0x46C JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x9B19251A GT PUSH2 0xDE JUMPI DUP1 PUSH4 0x9B19251A EQ PUSH2 0x3C8 JUMPI DUP1 PUSH4 0xAC0B0BB7 EQ PUSH2 0x3EE JUMPI DUP1 PUSH4 0xB0957210 EQ PUSH2 0x3F6 JUMPI DUP1 PUSH4 0xBB82AA5E EQ PUSH2 0x3FE JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x7DC0D1D0 EQ PUSH2 0x377 JUMPI DUP1 PUSH4 0x87F76303 EQ PUSH2 0x37F JUMPI DUP1 PUSH4 0x8E8F294B EQ PUSH2 0x387 JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x31FF47FA GT PUSH2 0x17C JUMPI DUP1 PUSH4 0x52D84D1E GT PUSH2 0x14B JUMPI DUP1 PUSH4 0x52D84D1E EQ PUSH2 0x2F1 JUMPI DUP1 PUSH4 0x6D154EA5 EQ PUSH2 0x30E JUMPI DUP1 PUSH4 0x731F0C2B EQ PUSH2 0x334 JUMPI DUP1 PUSH4 0x7515BAFA EQ PUSH2 0x35A JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x31FF47FA EQ PUSH2 0x295 JUMPI DUP1 PUSH4 0x3C94786F EQ PUSH2 0x2BB JUMPI DUP1 PUSH4 0x4A584432 EQ PUSH2 0x2C3 JUMPI DUP1 PUSH4 0x4ADA90AF EQ PUSH2 0x2E9 JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x21AF4569 GT PUSH2 0x1B8 JUMPI DUP1 PUSH4 0x21AF4569 EQ PUSH2 0x259 JUMPI DUP1 PUSH4 0x24A3D622 EQ PUSH2 0x27D JUMPI DUP1 PUSH4 0x26782247 EQ PUSH2 0x285 JUMPI DUP1 PUSH4 0x2F1069BA EQ PUSH2 0x28D JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x2C3BCBB EQ PUSH2 0x1DF JUMPI DUP1 PUSH4 0xA755EC2 EQ PUSH2 0x217 JUMPI DUP1 PUSH4 0x16DC15FE EQ PUSH2 0x233 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x205 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x494 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x21F PUSH2 0x4A6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x21F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x249 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4B6 JUMP JUMPDEST PUSH2 0x261 PUSH2 0x4CB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x261 PUSH2 0x4DF JUMP JUMPDEST PUSH2 0x261 PUSH2 0x4EE JUMP JUMPDEST PUSH2 0x21F PUSH2 0x4FD JUMP JUMPDEST PUSH2 0x261 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x50D JUMP JUMPDEST PUSH2 0x21F PUSH2 0x528 JUMP JUMPDEST PUSH2 0x205 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x538 JUMP JUMPDEST PUSH2 0x205 PUSH2 0x54A JUMP JUMPDEST PUSH2 0x261 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x307 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x550 JUMP JUMPDEST PUSH2 0x21F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x324 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x577 JUMP JUMPDEST PUSH2 0x21F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x34A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x58C JUMP JUMPDEST PUSH2 0x261 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x370 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x5A1 JUMP JUMPDEST PUSH2 0x261 PUSH2 0x5AE JUMP JUMPDEST PUSH2 0x21F PUSH2 0x5BD JUMP JUMPDEST PUSH2 0x3AD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x39D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x5CD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 ISZERO ISZERO DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x21F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x5EC JUMP JUMPDEST PUSH2 0x21F PUSH2 0x601 JUMP JUMPDEST PUSH2 0x21F PUSH2 0x611 JUMP JUMPDEST PUSH2 0x261 PUSH2 0x61A JUMP JUMPDEST PUSH2 0x261 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x41C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x629 JUMP JUMPDEST PUSH2 0x261 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x439 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x636 JUMP JUMPDEST PUSH2 0x261 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x456 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x643 JUMP JUMPDEST PUSH2 0x261 PUSH2 0x678 JUMP JUMPDEST PUSH2 0x21F PUSH2 0x687 JUMP JUMPDEST PUSH2 0x21F PUSH2 0x690 JUMP JUMPDEST PUSH2 0x205 PUSH2 0x6A0 JUMP JUMPDEST PUSH2 0x261 PUSH2 0x6A6 JUMP JUMPDEST PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0xA8 SHL SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0xE PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x17 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x18 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x55D JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP2 JUMP JUMPDEST PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x15 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0xC DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x55D JUMPI INVALID JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0xB0 SHL SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD PUSH1 0xFF SWAP1 SWAP2 AND SWAP1 DUP3 JUMP JUMPDEST PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0xB8 SHL SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x10 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1A DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x55D JUMPI INVALID JUMPDEST PUSH1 0x12 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x55D JUMPI INVALID JUMPDEST PUSH1 0x8 PUSH1 0x20 MSTORE DUP2 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x65C JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 POP DUP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x17 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0xA8 SHL SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 SGT 0xA6 SWAP6 0xB5 0xB6 JUMPDEST 0xAD SDIV 0xDF COINBASE LOG3 PUSH32 0x6B6E32326E737621F3713A5BC3205ABCED82F54A64736F6C6343000511003200 ","sourceMap":"4674:1075:16:-;;;627:4;594:37;;-1:-1:-1;;;;;;;;594:37:16;;;-1:-1:-1;;;594:37:16;711:33;-1:-1:-1;;;711:33:16;;;4674:1075;5:2:-1;;;;30:1;27;20:12;5:2;4674:1075:16;;;;;;;"},"deployedBytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106101da5760003560e01c80637dc0d1d011610104578063c6c5b0dd116100a2578063dd5cd22c11610071578063dd5cd22c14610474578063e6653f3d1461047c578063e875544614610484578063f851a4401461048c576101da565b8063c6c5b0dd14610406578063d251fefc14610423578063dce1544914610440578063dcfbc0c71461046c576101da565b80639b19251a116100de5780639b19251a146103c8578063ac0b0bb7146103ee578063b0957210146103f6578063bb82aa5e146103fe576101da565b80637dc0d1d01461037757806387f763031461037f5780638e8f294b14610387576101da565b806331ff47fa1161017c57806352d84d1e1161014b57806352d84d1e146102f15780636d154ea51461030e578063731f0c2b146103345780637515bafa1461035a576101da565b806331ff47fa146102955780633c94786f146102bb5780634a584432146102c35780634ada90af146102e9576101da565b806321af4569116101b857806321af45691461025957806324a3d6221461027d57806326782247146102855780632f1069ba1461028d576101da565b806302c3bcbb146101df5780630a755ec21461021757806316dc15fe14610233575b600080fd5b610205600480360360208110156101f557600080fd5b50356001600160a01b0316610494565b60408051918252519081900360200190f35b61021f6104a6565b604080519115158252519081900360200190f35b61021f6004803603602081101561024957600080fd5b50356001600160a01b03166104b6565b6102616104cb565b604080516001600160a01b039092168252519081900360200190f35b6102616104df565b6102616104ee565b61021f6104fd565b610261600480360360208110156102ab57600080fd5b50356001600160a01b031661050d565b61021f610528565b610205600480360360208110156102d957600080fd5b50356001600160a01b0316610538565b61020561054a565b6102616004803603602081101561030757600080fd5b5035610550565b61021f6004803603602081101561032457600080fd5b50356001600160a01b0316610577565b61021f6004803603602081101561034a57600080fd5b50356001600160a01b031661058c565b6102616004803603602081101561037057600080fd5b50356105a1565b6102616105ae565b61021f6105bd565b6103ad6004803603602081101561039d57600080fd5b50356001600160a01b03166105cd565b60408051921515835260208301919091528051918290030190f35b61021f600480360360208110156103de57600080fd5b50356001600160a01b03166105ec565b61021f610601565b61021f610611565b61026161061a565b6102616004803603602081101561041c57600080fd5b5035610629565b6102616004803603602081101561043957600080fd5b5035610636565b6102616004803603604081101561045657600080fd5b506001600160a01b038135169060200135610643565b610261610678565b61021f610687565b61021f610690565b6102056106a0565b6102616106a6565b60196020526000908152604090205481565b600154600160a81b900460ff1681565b600e6020526000908152604090205460ff1681565b60175461010090046001600160a01b031681565b6014546001600160a01b031681565b6001546001600160a01b031681565b600154600160a01b900460ff1681565b600f602052600090815260409020546001600160a01b031681565b601454600160a01b900460ff1681565b60186020526000908152604090205481565b60065481565b600a818154811061055d57fe5b6000918252602090912001546001600160a01b0316905081565b60166020526000908152604090205460ff1681565b60156020526000908152604090205460ff1681565b600c818154811061055d57fe5b6004546001600160a01b031681565b601454600160b01b900460ff1681565b6009602052600090815260409020805460019091015460ff9091169082565b60116020526000908152604090205460ff1681565b601454600160b81b900460ff1681565b60105460ff1681565b6002546001600160a01b031681565b601a818154811061055d57fe5b6012818154811061055d57fe5b6008602052816000526040600020818154811061065c57fe5b6000918252602090912001546001600160a01b03169150829050565b6003546001600160a01b031681565b60175460ff1681565b601454600160a81b900460ff1681565b60055481565b6000546001600160a01b03168156fea265627a7a7231582013a695b5b65bad05df41a37f6b6e32326e737621f3713a5bc3205abced82f54a64736f6c63430005110032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1DA JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7DC0D1D0 GT PUSH2 0x104 JUMPI DUP1 PUSH4 0xC6C5B0DD GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xDD5CD22C GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xDD5CD22C EQ PUSH2 0x474 JUMPI DUP1 PUSH4 0xE6653F3D EQ PUSH2 0x47C JUMPI DUP1 PUSH4 0xE8755446 EQ PUSH2 0x484 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x48C JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0xC6C5B0DD EQ PUSH2 0x406 JUMPI DUP1 PUSH4 0xD251FEFC EQ PUSH2 0x423 JUMPI DUP1 PUSH4 0xDCE15449 EQ PUSH2 0x440 JUMPI DUP1 PUSH4 0xDCFBC0C7 EQ PUSH2 0x46C JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x9B19251A GT PUSH2 0xDE JUMPI DUP1 PUSH4 0x9B19251A EQ PUSH2 0x3C8 JUMPI DUP1 PUSH4 0xAC0B0BB7 EQ PUSH2 0x3EE JUMPI DUP1 PUSH4 0xB0957210 EQ PUSH2 0x3F6 JUMPI DUP1 PUSH4 0xBB82AA5E EQ PUSH2 0x3FE JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x7DC0D1D0 EQ PUSH2 0x377 JUMPI DUP1 PUSH4 0x87F76303 EQ PUSH2 0x37F JUMPI DUP1 PUSH4 0x8E8F294B EQ PUSH2 0x387 JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x31FF47FA GT PUSH2 0x17C JUMPI DUP1 PUSH4 0x52D84D1E GT PUSH2 0x14B JUMPI DUP1 PUSH4 0x52D84D1E EQ PUSH2 0x2F1 JUMPI DUP1 PUSH4 0x6D154EA5 EQ PUSH2 0x30E JUMPI DUP1 PUSH4 0x731F0C2B EQ PUSH2 0x334 JUMPI DUP1 PUSH4 0x7515BAFA EQ PUSH2 0x35A JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x31FF47FA EQ PUSH2 0x295 JUMPI DUP1 PUSH4 0x3C94786F EQ PUSH2 0x2BB JUMPI DUP1 PUSH4 0x4A584432 EQ PUSH2 0x2C3 JUMPI DUP1 PUSH4 0x4ADA90AF EQ PUSH2 0x2E9 JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x21AF4569 GT PUSH2 0x1B8 JUMPI DUP1 PUSH4 0x21AF4569 EQ PUSH2 0x259 JUMPI DUP1 PUSH4 0x24A3D622 EQ PUSH2 0x27D JUMPI DUP1 PUSH4 0x26782247 EQ PUSH2 0x285 JUMPI DUP1 PUSH4 0x2F1069BA EQ PUSH2 0x28D JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x2C3BCBB EQ PUSH2 0x1DF JUMPI DUP1 PUSH4 0xA755EC2 EQ PUSH2 0x217 JUMPI DUP1 PUSH4 0x16DC15FE EQ PUSH2 0x233 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x205 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x494 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x21F PUSH2 0x4A6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x21F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x249 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4B6 JUMP JUMPDEST PUSH2 0x261 PUSH2 0x4CB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x261 PUSH2 0x4DF JUMP JUMPDEST PUSH2 0x261 PUSH2 0x4EE JUMP JUMPDEST PUSH2 0x21F PUSH2 0x4FD JUMP JUMPDEST PUSH2 0x261 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x50D JUMP JUMPDEST PUSH2 0x21F PUSH2 0x528 JUMP JUMPDEST PUSH2 0x205 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x538 JUMP JUMPDEST PUSH2 0x205 PUSH2 0x54A JUMP JUMPDEST PUSH2 0x261 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x307 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x550 JUMP JUMPDEST PUSH2 0x21F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x324 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x577 JUMP JUMPDEST PUSH2 0x21F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x34A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x58C JUMP JUMPDEST PUSH2 0x261 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x370 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x5A1 JUMP JUMPDEST PUSH2 0x261 PUSH2 0x5AE JUMP JUMPDEST PUSH2 0x21F PUSH2 0x5BD JUMP JUMPDEST PUSH2 0x3AD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x39D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x5CD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 ISZERO ISZERO DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x21F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x5EC JUMP JUMPDEST PUSH2 0x21F PUSH2 0x601 JUMP JUMPDEST PUSH2 0x21F PUSH2 0x611 JUMP JUMPDEST PUSH2 0x261 PUSH2 0x61A JUMP JUMPDEST PUSH2 0x261 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x41C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x629 JUMP JUMPDEST PUSH2 0x261 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x439 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x636 JUMP JUMPDEST PUSH2 0x261 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x456 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x643 JUMP JUMPDEST PUSH2 0x261 PUSH2 0x678 JUMP JUMPDEST PUSH2 0x21F PUSH2 0x687 JUMP JUMPDEST PUSH2 0x21F PUSH2 0x690 JUMP JUMPDEST PUSH2 0x205 PUSH2 0x6A0 JUMP JUMPDEST PUSH2 0x261 PUSH2 0x6A6 JUMP JUMPDEST PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0xA8 SHL SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0xE PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x17 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x18 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x55D JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP2 JUMP JUMPDEST PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x15 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0xC DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x55D JUMPI INVALID JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0xB0 SHL SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD PUSH1 0xFF SWAP1 SWAP2 AND SWAP1 DUP3 JUMP JUMPDEST PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0xB8 SHL SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x10 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1A DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x55D JUMPI INVALID JUMPDEST PUSH1 0x12 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x55D JUMPI INVALID JUMPDEST PUSH1 0x8 PUSH1 0x20 MSTORE DUP2 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x65C JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 POP DUP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x17 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0xA8 SHL SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 SGT 0xA6 SWAP6 0xB5 0xB6 JUMPDEST 0xAD SDIV 0xDF COINBASE LOG3 PUSH32 0x6B6E32326E737621F3713A5BC3205ABCED82F54A64736F6C6343000511003200 ","sourceMap":"4674:1075:16:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4674:1075:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5376:42;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5376:42:16;-1:-1:-1;;;;;5376:42:16;;:::i;:::-;;;;;;;;;;;;;;;;711:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;3435:41;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3435:41:16;-1:-1:-1;;;;;3435:41:16;;:::i;5014:32::-;;;:::i;:::-;;;;-1:-1:-1;;;;;5014:32:16;;;;;;;;;;;;;;4374:28;;;:::i;482:27::-;;;:::i;594:37::-;;;:::i;3564:53::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3564:53:16;-1:-1:-1;;;;;3564:53:16;;:::i;4408:31::-;;;:::i;5191:42::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5191:42:16;-1:-1:-1;;;;;5191:42:16;;:::i;1670:40::-;;;:::i;2903:26::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2903:26:16;;:::i;4617:52::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4617:52:16;-1:-1:-1;;;;;4617:52:16;;:::i;4561:50::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4561:50:16;-1:-1:-1;;;;;4561:50:16;;:::i;3150:29::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3150:29:16;;:::i;1381:25::-;;;:::i;4484:34::-;;;:::i;2817:41::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2817:41:16;-1:-1:-1;;;;;2817:41:16;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;3837;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3837:41:16;-1:-1:-1;;;;;3837:41:16;;:::i;4524:31::-;;;:::i;3690:28::-;;;:::i;1083:40::-;;;:::i;5501:36::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5501:36:16;;:::i;3938:31::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3938:31:16;;:::i;1982:49::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1982:49:16;;;;;;;;:::i;1188:47::-;;;:::i;4821:30::-;;;:::i;4445:33::-;;;:::i;1523:31::-;;;:::i;386:20::-;;;:::i;5376:42::-;;;;;;;;;;;;;:::o;711:33::-;;;-1:-1:-1;;;711:33:16;;;;;:::o;3435:41::-;;;;;;;;;;;;;;;:::o;5014:32::-;;;;;;-1:-1:-1;;;;;5014:32:16;;:::o;4374:28::-;;;-1:-1:-1;;;;;4374:28:16;;:::o;482:27::-;;;-1:-1:-1;;;;;482:27:16;;:::o;594:37::-;;;-1:-1:-1;;;594:37:16;;;;;:::o;3564:53::-;;;;;;;;;;;;-1:-1:-1;;;;;3564:53:16;;:::o;4408:31::-;;;-1:-1:-1;;;4408:31:16;;;;;:::o;5191:42::-;;;;;;;;;;;;;:::o;1670:40::-;;;;:::o;2903:26::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2903:26:16;;-1:-1:-1;2903:26:16;:::o;4617:52::-;;;;;;;;;;;;;;;:::o;4561:50::-;;;;;;;;;;;;;;;:::o;3150:29::-;;;;;;;;;;1381:25;;;-1:-1:-1;;;;;1381:25:16;;:::o;4484:34::-;;;-1:-1:-1;;;4484:34:16;;;;;:::o;2817:41::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;3837:::-;;;;;;;;;;;;;;;:::o;4524:31::-;;;-1:-1:-1;;;4524:31:16;;;;;:::o;3690:28::-;;;;;;:::o;1083:40::-;;;-1:-1:-1;;;;;1083:40:16;;:::o;5501:36::-;;;;;;;;;;3938:31;;;;;;;;;;1982:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1982:49:16;;-1:-1:-1;1982:49:16;;-1:-1:-1;1982:49:16:o;1188:47::-;;;-1:-1:-1;;;;;1188:47:16;;:::o;4821:30::-;;;;;;:::o;4445:33::-;;;-1:-1:-1;;;4445:33:16;;;;;:::o;1523:31::-;;;;:::o;386:20::-;;;-1:-1:-1;;;;;386:20:16;;:::o"},"methodIdentifiers":{"_borrowGuardianPaused()":"e6653f3d","_mintGuardianPaused()":"3c94786f","accountAssets(address,uint256)":"dce15449","admin()":"f851a440","adminHasRights()":"0a755ec2","allBorrowers(uint256)":"7515bafa","allMarkets(uint256)":"52d84d1e","autoImplementation()":"dd5cd22c","borrowCapGuardian()":"21af4569","borrowCaps(address)":"4a584432","borrowGuardianPaused(address)":"6d154ea5","cTokensByUnderlying(address)":"31ff47fa","closeFactorMantissa()":"e8755446","comptrollerImplementation()":"bb82aa5e","enforceWhitelist()":"b0957210","fuseAdminHasRights()":"2f1069ba","liquidationIncentiveMantissa()":"4ada90af","markets(address)":"8e8f294b","mintGuardianPaused(address)":"731f0c2b","oracle()":"7dc0d1d0","pauseGuardian()":"24a3d622","pendingAdmin()":"26782247","pendingComptrollerImplementation()":"dcfbc0c7","rewardsDistributors(uint256)":"c6c5b0dd","seizeGuardianPaused()":"ac0b0bb7","suppliers(address)":"16dc15fe","supplyCaps(address)":"02c3bcbb","transferGuardianPaused()":"87f76303","whitelist(address)":"9b19251a","whitelistArray(uint256)":"d251fefc"}},"metadata":"{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[],\"name\":\"_borrowGuardianPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"_mintGuardianPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"accountAssets\",\"outputs\":[{\"internalType\":\"contract CToken\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"adminHasRights\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"allBorrowers\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"allMarkets\",\"outputs\":[{\"internalType\":\"contract CToken\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"autoImplementation\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"borrowCapGuardian\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"borrowCaps\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"borrowGuardianPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"cTokensByUnderlying\",\"outputs\":[{\"internalType\":\"contract CToken\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"closeFactorMantissa\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"comptrollerImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"enforceWhitelist\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"fuseAdminHasRights\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"liquidationIncentiveMantissa\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"markets\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isListed\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"collateralFactorMantissa\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"mintGuardianPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"oracle\",\"outputs\":[{\"internalType\":\"contract PriceOracle\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"pauseGuardian\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"pendingAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"pendingComptrollerImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"rewardsDistributors\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"seizeGuardianPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"suppliers\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"supplyCaps\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"transferGuardianPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"whitelist\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"whitelistArray\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/ComptrollerStorage.sol\":\"ComptrollerV3Storage\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/CToken.sol\":{\"keccak256\":\"0xc3a5a827241528049e20a24cc446558c8a9272909f75ce5d1cf14ae3ab5feba3\",\"urls\":[\"bzz-raw://a403db2bf1a8e5e9384df19600bd18d4251056818b094afcdab418e683bb5cb8\",\"dweb:/ipfs/QmdkRbFGtKP67tNNqyH7BraDRGerwRNA7ktscbFV9LioM2\"]},\"contracts/CTokenInterfaces.sol\":{\"keccak256\":\"0xc8a056c724ef4f0215ece6011e7ac1007c9dc7611ce5160d470ec858bbb06bd3\",\"urls\":[\"bzz-raw://58951693d1b53d2722e55b068bab2b570f4b044d89c28ed6b53bac6e95aeb662\",\"dweb:/ipfs/QmQiNTw5jZR74WjKfX2bPiuTT4tuFuq8rx7QxEVyVvdGLn\"]},\"contracts/CarefulMath.sol\":{\"keccak256\":\"0x1487237dbbbb73ad43c8eff16e78311753719a94a5065f574de5c91b672c56f8\",\"urls\":[\"bzz-raw://349966a236f313b2cb42e1942832e6bd7e134f65f6654e6c4d46788e65cc4a9b\",\"dweb:/ipfs/Qmebpv8i5jLR4fLgpZHQZRLu6aefVAbLC2yUk9ABEekquz\"]},\"contracts/ComptrollerInterface.sol\":{\"keccak256\":\"0xecfb84fabc9792d0b1c912886249c67bc42c39eb065d962d0b9a5f3736af5892\",\"urls\":[\"bzz-raw://711547ebc1a7f18b271118dd98276771953a9d7b3674716f67d247be9b907372\",\"dweb:/ipfs/QmbVZNvkBp8miByATrL6y5j8MePdcQ8uTAUZMpKrhpLgoa\"]},\"contracts/ComptrollerStorage.sol\":{\"keccak256\":\"0x83961d3c12984fe4afc72717fc44b2d868563d053a0eceda0cbf17ec6b255913\",\"urls\":[\"bzz-raw://ea667c2de43881f9be19f4f75dec348632273178965fc9b3655705d853b032bb\",\"dweb:/ipfs/QmZP6sbNFSgFZrAEvfRjhp1NtGj6U6Sea3JGiKG96AHyeP\"]},\"contracts/EIP20Interface.sol\":{\"keccak256\":\"0xee33b8b333743308a9153a59f22da2cadb22cedef4403fe039bf9e057c9c729a\",\"urls\":[\"bzz-raw://5427fdb941300d36a424da0a0a5800e3b2ca51c9c922831dbfce2f6637402b43\",\"dweb:/ipfs/QmTrvmLynqSUPjsGW2dpiQ91dSmn4xzccQiwr8qaBtyvjH\"]},\"contracts/EIP20NonStandardInterface.sol\":{\"keccak256\":\"0x469899442dd9640bfc2c670d404ad3027e48df5df8e5aeab0e25cc6b6aae05f5\",\"urls\":[\"bzz-raw://d8c4498abaf539eb413a2f1a916d75945adc8bd4ef437f8450cb67e07be3f38d\",\"dweb:/ipfs/QmaFpWfnhAMYW21rbT5PEszn4TGHdGU58Eq5AfZsCuapZ3\"]},\"contracts/ErrorReporter.sol\":{\"keccak256\":\"0xe9587478bc9efad203cab02b8aecae32828cfc9a271b13ae3c018e38e44aab32\",\"urls\":[\"bzz-raw://2eb34bdbbbc410fb401d50ddca44a7421a1d8191711c569ed5bcec1c1b07a05c\",\"dweb:/ipfs/QmYKNCYppyx3NGiwtjdLEmxUMgfnFBqT4pnvnhnBrPgrxS\"]},\"contracts/Exponential.sol\":{\"keccak256\":\"0xfda0e2b610541cf1cf316a0000c89a1069ccc21f1566affc0a058810e2b835d3\",\"urls\":[\"bzz-raw://fe319f184f1b5f27019d3d890124cd24e466d27153ac38eb9ff6b16efbad48b9\",\"dweb:/ipfs/Qmcev6jCmtdCviJxUQvUCmesPDShRDSvdfUEfvsqd4GEJA\"]},\"contracts/ExponentialNoError.sol\":{\"keccak256\":\"0x713a089f4bbcaec1d3924fc7d9a2154904a39f46cb6f25b713167dbe5f21623e\",\"urls\":[\"bzz-raw://d7108d68af7c5effd4272615ceba54e79e585f6b8be5aabc7602245c84c7b9e0\",\"dweb:/ipfs/QmQZo2XpxW7w5viVEg71mi9eKaAYD7HUqfCMB5yCCPVnc5\"]},\"contracts/IFuseFeeDistributor.sol\":{\"keccak256\":\"0xb5d287b8e05574d38bd5d0b413f44b4c5d312f28188573ac60abe78123fbd92c\",\"urls\":[\"bzz-raw://84c2bbf746a82aaa100bee90c7dd40411c723bded124bb1775bf72bf7fda8a2c\",\"dweb:/ipfs/QmToQzDtz9BV2tvU71YsfWjdaZu5qpP1xKFZ1TkQgubhDb\"]},\"contracts/InterestRateModel.sol\":{\"keccak256\":\"0x0cc0dbd1991e5dcdcff58b0c82a9471a0fb9df26763e5e7415e1d081b7332409\",\"urls\":[\"bzz-raw://f4d7936aefc43ea2724f0e472b8f1517f1ca40170258ab9d5bbd0862dd0c4f13\",\"dweb:/ipfs/QmfYjG1Sm3kNwbhomHCWhMqw9LvaJVWVzBe4Te5BHRbTQS\"]},\"contracts/PriceOracle.sol\":{\"keccak256\":\"0x62ba3a5ec8f06d456ab089d6ca7f9d14d3a6ce6814923271ca60a6990918fb41\",\"urls\":[\"bzz-raw://aa6d2f20efdd5389161eb15bdab98b5628dc8cd5354394bbed35bb14d3612506\",\"dweb:/ipfs/QmVfo4eCDuk8LMSywpBjZBxCv7zLCNsG6u3nyD1d4CYwsD\"]}},\"version\":1}"},"UnitrollerAdminStorage":{"abi":[{"constant":true,"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"adminHasRights","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"comptrollerImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"fuseAdminHasRights","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pendingAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pendingComptrollerImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60806040526001805460ff60a81b1960ff60a01b19909116600160a01b1716600160a81b17905534801561003257600080fd5b50610158806100426000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c80630a755ec21461006757806326782247146100835780632f1069ba146100a7578063bb82aa5e146100af578063dcfbc0c7146100b7578063f851a440146100bf575b600080fd5b61006f6100c7565b604080519115158252519081900360200190f35b61008b6100d7565b604080516001600160a01b039092168252519081900360200190f35b61006f6100e6565b61008b6100f6565b61008b610105565b61008b610114565b600154600160a81b900460ff1681565b6001546001600160a01b031681565b600154600160a01b900460ff1681565b6002546001600160a01b031681565b6003546001600160a01b031681565b6000546001600160a01b03168156fea265627a7a7231582074278a4331b44e6a40f3e608d4a44ad34818395fc61e03ed7c47443737a4e3d164736f6c63430005110032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA8 SHL NOT PUSH1 0xFF PUSH1 0xA0 SHL NOT SWAP1 SWAP2 AND PUSH1 0x1 PUSH1 0xA0 SHL OR AND PUSH1 0x1 PUSH1 0xA8 SHL OR SWAP1 SSTORE CALLVALUE DUP1 ISZERO PUSH2 0x32 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x158 DUP1 PUSH2 0x42 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 0x62 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA755EC2 EQ PUSH2 0x67 JUMPI DUP1 PUSH4 0x26782247 EQ PUSH2 0x83 JUMPI DUP1 PUSH4 0x2F1069BA EQ PUSH2 0xA7 JUMPI DUP1 PUSH4 0xBB82AA5E EQ PUSH2 0xAF JUMPI DUP1 PUSH4 0xDCFBC0C7 EQ PUSH2 0xB7 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0xBF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6F PUSH2 0xC7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x8B PUSH2 0xD7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x6F PUSH2 0xE6 JUMP JUMPDEST PUSH2 0x8B PUSH2 0xF6 JUMP JUMPDEST PUSH2 0x8B PUSH2 0x105 JUMP JUMPDEST PUSH2 0x8B PUSH2 0x114 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0xA8 SHL SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 PUSH21 0x278A4331B44E6A40F3E608D4A44AD34818395FC61E SUB 0xED PUSH29 0x47443737A4E3D164736F6C634300051100320000000000000000000000 ","sourceMap":"113:1125:16:-;;;627:4;594:37;;-1:-1:-1;;;;;;;;594:37:16;;;-1:-1:-1;;;594:37:16;711:33;-1:-1:-1;;;711:33:16;;;113:1125;5:2:-1;;;;30:1;27;20:12;5:2;113:1125:16;;;;;;;"},"deployedBytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100625760003560e01c80630a755ec21461006757806326782247146100835780632f1069ba146100a7578063bb82aa5e146100af578063dcfbc0c7146100b7578063f851a440146100bf575b600080fd5b61006f6100c7565b604080519115158252519081900360200190f35b61008b6100d7565b604080516001600160a01b039092168252519081900360200190f35b61006f6100e6565b61008b6100f6565b61008b610105565b61008b610114565b600154600160a81b900460ff1681565b6001546001600160a01b031681565b600154600160a01b900460ff1681565b6002546001600160a01b031681565b6003546001600160a01b031681565b6000546001600160a01b03168156fea265627a7a7231582074278a4331b44e6a40f3e608d4a44ad34818395fc61e03ed7c47443737a4e3d164736f6c63430005110032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x62 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA755EC2 EQ PUSH2 0x67 JUMPI DUP1 PUSH4 0x26782247 EQ PUSH2 0x83 JUMPI DUP1 PUSH4 0x2F1069BA EQ PUSH2 0xA7 JUMPI DUP1 PUSH4 0xBB82AA5E EQ PUSH2 0xAF JUMPI DUP1 PUSH4 0xDCFBC0C7 EQ PUSH2 0xB7 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0xBF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6F PUSH2 0xC7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x8B PUSH2 0xD7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x6F PUSH2 0xE6 JUMP JUMPDEST PUSH2 0x8B PUSH2 0xF6 JUMP JUMPDEST PUSH2 0x8B PUSH2 0x105 JUMP JUMPDEST PUSH2 0x8B PUSH2 0x114 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0xA8 SHL SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 PUSH21 0x278A4331B44E6A40F3E608D4A44AD34818395FC61E SUB 0xED PUSH29 0x47443737A4E3D164736F6C634300051100320000000000000000000000 ","sourceMap":"113:1125:16:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;113:1125:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;711:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;482:27;;;:::i;:::-;;;;-1:-1:-1;;;;;482:27:16;;;;;;;;;;;;;;594:37;;;:::i;1083:40::-;;;:::i;1188:47::-;;;:::i;386:20::-;;;:::i;711:33::-;;;-1:-1:-1;;;711:33:16;;;;;:::o;482:27::-;;;-1:-1:-1;;;;;482:27:16;;:::o;594:37::-;;;-1:-1:-1;;;594:37:16;;;;;:::o;1083:40::-;;;-1:-1:-1;;;;;1083:40:16;;:::o;1188:47::-;;;-1:-1:-1;;;;;1188:47:16;;:::o;386:20::-;;;-1:-1:-1;;;;;386:20:16;;:::o"},"methodIdentifiers":{"admin()":"f851a440","adminHasRights()":"0a755ec2","comptrollerImplementation()":"bb82aa5e","fuseAdminHasRights()":"2f1069ba","pendingAdmin()":"26782247","pendingComptrollerImplementation()":"dcfbc0c7"}},"metadata":"{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"adminHasRights\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"comptrollerImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"fuseAdminHasRights\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"pendingAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"pendingComptrollerImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/ComptrollerStorage.sol\":\"UnitrollerAdminStorage\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/CToken.sol\":{\"keccak256\":\"0xc3a5a827241528049e20a24cc446558c8a9272909f75ce5d1cf14ae3ab5feba3\",\"urls\":[\"bzz-raw://a403db2bf1a8e5e9384df19600bd18d4251056818b094afcdab418e683bb5cb8\",\"dweb:/ipfs/QmdkRbFGtKP67tNNqyH7BraDRGerwRNA7ktscbFV9LioM2\"]},\"contracts/CTokenInterfaces.sol\":{\"keccak256\":\"0xc8a056c724ef4f0215ece6011e7ac1007c9dc7611ce5160d470ec858bbb06bd3\",\"urls\":[\"bzz-raw://58951693d1b53d2722e55b068bab2b570f4b044d89c28ed6b53bac6e95aeb662\",\"dweb:/ipfs/QmQiNTw5jZR74WjKfX2bPiuTT4tuFuq8rx7QxEVyVvdGLn\"]},\"contracts/CarefulMath.sol\":{\"keccak256\":\"0x1487237dbbbb73ad43c8eff16e78311753719a94a5065f574de5c91b672c56f8\",\"urls\":[\"bzz-raw://349966a236f313b2cb42e1942832e6bd7e134f65f6654e6c4d46788e65cc4a9b\",\"dweb:/ipfs/Qmebpv8i5jLR4fLgpZHQZRLu6aefVAbLC2yUk9ABEekquz\"]},\"contracts/ComptrollerInterface.sol\":{\"keccak256\":\"0xecfb84fabc9792d0b1c912886249c67bc42c39eb065d962d0b9a5f3736af5892\",\"urls\":[\"bzz-raw://711547ebc1a7f18b271118dd98276771953a9d7b3674716f67d247be9b907372\",\"dweb:/ipfs/QmbVZNvkBp8miByATrL6y5j8MePdcQ8uTAUZMpKrhpLgoa\"]},\"contracts/ComptrollerStorage.sol\":{\"keccak256\":\"0x83961d3c12984fe4afc72717fc44b2d868563d053a0eceda0cbf17ec6b255913\",\"urls\":[\"bzz-raw://ea667c2de43881f9be19f4f75dec348632273178965fc9b3655705d853b032bb\",\"dweb:/ipfs/QmZP6sbNFSgFZrAEvfRjhp1NtGj6U6Sea3JGiKG96AHyeP\"]},\"contracts/EIP20Interface.sol\":{\"keccak256\":\"0xee33b8b333743308a9153a59f22da2cadb22cedef4403fe039bf9e057c9c729a\",\"urls\":[\"bzz-raw://5427fdb941300d36a424da0a0a5800e3b2ca51c9c922831dbfce2f6637402b43\",\"dweb:/ipfs/QmTrvmLynqSUPjsGW2dpiQ91dSmn4xzccQiwr8qaBtyvjH\"]},\"contracts/EIP20NonStandardInterface.sol\":{\"keccak256\":\"0x469899442dd9640bfc2c670d404ad3027e48df5df8e5aeab0e25cc6b6aae05f5\",\"urls\":[\"bzz-raw://d8c4498abaf539eb413a2f1a916d75945adc8bd4ef437f8450cb67e07be3f38d\",\"dweb:/ipfs/QmaFpWfnhAMYW21rbT5PEszn4TGHdGU58Eq5AfZsCuapZ3\"]},\"contracts/ErrorReporter.sol\":{\"keccak256\":\"0xe9587478bc9efad203cab02b8aecae32828cfc9a271b13ae3c018e38e44aab32\",\"urls\":[\"bzz-raw://2eb34bdbbbc410fb401d50ddca44a7421a1d8191711c569ed5bcec1c1b07a05c\",\"dweb:/ipfs/QmYKNCYppyx3NGiwtjdLEmxUMgfnFBqT4pnvnhnBrPgrxS\"]},\"contracts/Exponential.sol\":{\"keccak256\":\"0xfda0e2b610541cf1cf316a0000c89a1069ccc21f1566affc0a058810e2b835d3\",\"urls\":[\"bzz-raw://fe319f184f1b5f27019d3d890124cd24e466d27153ac38eb9ff6b16efbad48b9\",\"dweb:/ipfs/Qmcev6jCmtdCviJxUQvUCmesPDShRDSvdfUEfvsqd4GEJA\"]},\"contracts/ExponentialNoError.sol\":{\"keccak256\":\"0x713a089f4bbcaec1d3924fc7d9a2154904a39f46cb6f25b713167dbe5f21623e\",\"urls\":[\"bzz-raw://d7108d68af7c5effd4272615ceba54e79e585f6b8be5aabc7602245c84c7b9e0\",\"dweb:/ipfs/QmQZo2XpxW7w5viVEg71mi9eKaAYD7HUqfCMB5yCCPVnc5\"]},\"contracts/IFuseFeeDistributor.sol\":{\"keccak256\":\"0xb5d287b8e05574d38bd5d0b413f44b4c5d312f28188573ac60abe78123fbd92c\",\"urls\":[\"bzz-raw://84c2bbf746a82aaa100bee90c7dd40411c723bded124bb1775bf72bf7fda8a2c\",\"dweb:/ipfs/QmToQzDtz9BV2tvU71YsfWjdaZu5qpP1xKFZ1TkQgubhDb\"]},\"contracts/InterestRateModel.sol\":{\"keccak256\":\"0x0cc0dbd1991e5dcdcff58b0c82a9471a0fb9df26763e5e7415e1d081b7332409\",\"urls\":[\"bzz-raw://f4d7936aefc43ea2724f0e472b8f1517f1ca40170258ab9d5bbd0862dd0c4f13\",\"dweb:/ipfs/QmfYjG1Sm3kNwbhomHCWhMqw9LvaJVWVzBe4Te5BHRbTQS\"]},\"contracts/PriceOracle.sol\":{\"keccak256\":\"0x62ba3a5ec8f06d456ab089d6ca7f9d14d3a6ce6814923271ca60a6990918fb41\",\"urls\":[\"bzz-raw://aa6d2f20efdd5389161eb15bdab98b5628dc8cd5354394bbed35bb14d3612506\",\"dweb:/ipfs/QmVfo4eCDuk8LMSywpBjZBxCv7zLCNsG6u3nyD1d4CYwsD\"]}},\"version\":1}"}},"contracts/DAIInterestRateModelV2.sol":{"DAIInterestRateModelV2":{"abi":[{"inputs":[{"internalType":"uint256","name":"jumpMultiplierPerYear","type":"uint256"},{"internalType":"uint256","name":"kink_","type":"uint256"},{"internalType":"address","name":"pot_","type":"address"},{"internalType":"address","name":"jug_","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"baseRatePerBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"multiplierPerBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"jumpMultiplierPerBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"kink","type":"uint256"}],"name":"NewInterestParams","type":"event"},{"constant":true,"inputs":[],"name":"assumedOneMinusReserveFactorMantissa","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"baseRatePerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"blocksPerYear","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"dsrPerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"gapPerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"cash","type":"uint256"},{"internalType":"uint256","name":"borrows","type":"uint256"},{"internalType":"uint256","name":"reserves","type":"uint256"}],"name":"getBorrowRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"cash","type":"uint256"},{"internalType":"uint256","name":"borrows","type":"uint256"},{"internalType":"uint256","name":"reserves","type":"uint256"},{"internalType":"uint256","name":"reserveFactorMantissa","type":"uint256"}],"name":"getSupplyRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isInterestRateModel","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"jumpMultiplierPerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"kink","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"multiplierPerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"poke","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"cash","type":"uint256"},{"internalType":"uint256","name":"borrows","type":"uint256"},{"internalType":"uint256","name":"reserves","type":"uint256"}],"name":"utilizationRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60806040523480156200001157600080fd5b50604051620010d1380380620010d1833981810160405260808110156200003757600080fd5b5080516020808301516040840151606090940151929390929091600090819086908690620000759084906224339490620006e86200015c821b17901c565b6001556200009383622433946200015c602090811b620006e817901c565b600055620000b182622433946200015c602090811b620006e817901c565b60028190556003829055600154600054604080519283526020830191909152818101929092526060810183905290517f6960ab234c7ef4b0c9197100f5393cfcde7c453ac910a27bd2000aa1dd4c068d9181900360800190a15050600480546001600160a01b038087166001600160a01b0319928316179092556005805492861692909116919091179055506200015290506001600160e01b03620001af16565b5050505062000721565b6000620001a683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200046360201b60201c565b90505b92915050565b60055460408051636cb1c69b60e11b8152644554482d4160d81b600482015281516000936001600160a01b03169263d9638d369260248082019391829003018186803b158015620001ff57600080fd5b505afa15801562000214573d6000803e3d6000fd5b505050506040513d60408110156200022b57600080fd5b505160055460408051635001f3b560e01b815290519293506000926200032a92600f9262000302926b033b2e3c9fd0803ce8000000926200031692670de0b6b3a76400009286928692620002ee926001600160a01b0390921691635001f3b591600480820192602092909190829003018186803b158015620002ac57600080fd5b505afa158015620002c1573d6000803e3d6000fd5b505050506040513d6020811015620002d857600080fd5b50518b906200050a602090811b6200072a17901c565b6200056560201b620007841790919060201c565b620005af60201b620006861790919060201c565b6200015c60201b620006e81790919060201c565b905062000359670d2f13f7789f000062000316670de0b6b3a7640000620003026001600160e01b036200060d16565b6001819055811115620003cc57620003c360035462000316670de0b6b3a7640000620003026224339466470de4df820000816200039257fe5b04620003af600154886200056560201b620007841790919060201c565b6200050a60201b6200072a1790919060201c565b6000556200040d565b6200040960035462000316670de0b6b3a76400006224339466470de4df82000081620003f457fe5b04620005af60201b620006861790919060201c565b6000555b600154600054600254600354604080519485526020850193909352838301919091526060830152517f6960ab234c7ef4b0c9197100f5393cfcde7c453ac910a27bd2000aa1dd4c068d9181900360800190a15050565b60008183620004f35760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620004b75781810151838201526020016200049d565b50505050905090810190601f168015620004e55780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816200050057fe5b0495945050505050565b600082820183811015620001a6576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000620001a683836040518060400160405280601f81526020017f536166654d6174683a207375627472616374696f6e20756e646572666c6f7700815250620006c460201b60201c565b600082620005c057506000620001a9565b82820282848281620005ce57fe5b0414620001a65760405162461bcd60e51b8152600401808060200182810382526021815260200180620010b06021913960400191505060405180910390fd5b6000620006bf600f62000302633b9aca00620003166b033b2e3c9fd0803ce8000000600460009054906101000a90046001600160a01b03166001600160a01b031663487bf0826040518163ffffffff1660e01b815260040160206040518083038186803b1580156200067e57600080fd5b505afa15801562000693573d6000803e3d6000fd5b505050506040513d6020811015620006aa57600080fd5b50519062000565602090811b6200078417901c565b905090565b60008184841115620007195760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315620004b75781810151838201526020016200049d565b505050900390565b61097f80620007316000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806396456c5c1161008c578063b9f9850a11610066578063b9f9850a146101ad578063f14039de146101b5578063f52d21f3146101bd578063fd2da339146101c5576100cf565b806396456c5c1461016e578063a385fb9614610176578063b81688161461017e576100cf565b806315f24053146100d4578063181783581461010f5780632191f92a146101195780636dac7cd5146101355780636e71e2d81461013d5780638726bb8914610166575b600080fd5b6100fd600480360360608110156100ea57600080fd5b50803590602081013590604001356101cd565b60408051918252519081900360200190f35b6101176102a5565b005b6101216104eb565b604080519115158252519081900360200190f35b6100fd6104f0565b6100fd6004803603606081101561015357600080fd5b50803590602081013590604001356104fc565b6100fd610542565b6100fd610548565b6100fd6105f2565b6100fd6004803603608081101561019457600080fd5b50803590602081013590604081013590606001356105f9565b6100fd61066b565b6100fd610671565b6100fd610677565b6100fd610680565b6000806101db8585856104fc565b9050600354811161022d57610225600154610219670de0b6b3a764000061020d6000548661068690919063ffffffff16565b9063ffffffff6106e816565b9063ffffffff61072a16565b91505061029e565b6000610258600154610219670de0b6b3a764000061020d60005460035461068690919063ffffffff16565b905060006102716003548461078490919063ffffffff16565b905061029882610219670de0b6b3a764000061020d6002548661068690919063ffffffff16565b93505050505b9392505050565b60055460408051636cb1c69b60e11b8152644554482d4160d81b600482015281516000936001600160a01b03169263d9638d369260248082019391829003018186803b1580156102f457600080fd5b505afa158015610308573d6000803e3d6000fd5b505050506040513d604081101561031e57600080fd5b505160055460408051635001f3b560e01b815290519293506000926103eb92600f926103df926b033b2e3c9fd0803ce80000009261020d92670de0b6b3a764000092869286926103d3926001600160a01b0390921691635001f3b591600480820192602092909190829003018186803b15801561039a57600080fd5b505afa1580156103ae573d6000803e3d6000fd5b505050506040513d60208110156103c457600080fd5b50518b9063ffffffff61072a16565b9063ffffffff61078416565b9063ffffffff61068616565b905061040d670d2f13f7789f000061020d670de0b6b3a76400006103df610548565b600181905581111561045f5761045760035461020d670de0b6b3a76400006103df6224339466470de4df8200008161044157fe5b046102196001548861078490919063ffffffff16565b600055610495565b61049160035461020d670de0b6b3a76400006224339466470de4df8200008161048457fe5b049063ffffffff61068616565b6000555b600154600054600254600354604080519485526020850193909352838301919091526060830152517f6960ab234c7ef4b0c9197100f5393cfcde7c453ac910a27bd2000aa1dd4c068d9181900360800190a15050565b600181565b670d2f13f7789f000081565b60008261050b5750600061029e565b61053a610522836103d3878763ffffffff61072a16565b61020d85670de0b6b3a764000063ffffffff61068616565b949350505050565b60005481565b60006105ed600f6103df633b9aca0061020d6b033b2e3c9fd0803ce8000000600460009054906101000a90046001600160a01b03166001600160a01b031663487bf0826040518163ffffffff1660e01b815260040160206040518083038186803b1580156105b557600080fd5b505afa1580156105c9573d6000803e3d6000fd5b505050506040513d60208110156105df57600080fd5b50519063ffffffff61078416565b905090565b6224339481565b600080610608868686866107c6565b90506000610620856103d3898963ffffffff61072a16565b90508061062f5750905061053a565b600061064d8261020d610640610548565b8b9063ffffffff61068616565b905061065f818463ffffffff61072a16565b98975050505050505050565b60025481565b60015481565b6401f676775e81565b60035481565b600082610695575060006106e2565b828202828482816106a257fe5b04146106df5760405162461bcd60e51b815260040180806020018281038252602181526020018061092a6021913960400191505060405180910390fd5b90505b92915050565b60006106df83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061082d565b6000828201838110156106df576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60006106df83836040518060400160405280601f81526020017f536166654d6174683a207375627472616374696f6e20756e646572666c6f77008152506108cf565b6000806107e1670de0b6b3a76400008463ffffffff61078416565b905060006107f08787876101cd565b90506000610810670de0b6b3a764000061020d848663ffffffff61068616565b905061065f670de0b6b3a764000061020d836103df8c8c8c6104fc565b600081836108b95760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561087e578181015183820152602001610866565b50505050905090810190601f1680156108ab5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816108c557fe5b0495945050505050565b600081848411156109215760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561087e578181015183820152602001610866565b50505090039056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a265627a7a7231582015e399ad12964876b758bbed1ff23f3cd9dc3212e8c0f01161b2ea6bd36b3acf64736f6c63430005110032536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x10D1 CODESIZE SUB DUP1 PUSH3 0x10D1 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x80 DUP2 LT ISZERO PUSH3 0x37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0x60 SWAP1 SWAP5 ADD MLOAD SWAP3 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP7 SWAP1 DUP7 SWAP1 PUSH3 0x75 SWAP1 DUP5 SWAP1 PUSH3 0x243394 SWAP1 PUSH3 0x6E8 PUSH3 0x15C DUP3 SHL OR SWAP1 SHR JUMP JUMPDEST PUSH1 0x1 SSTORE PUSH3 0x93 DUP4 PUSH3 0x243394 PUSH3 0x15C PUSH1 0x20 SWAP1 DUP2 SHL PUSH3 0x6E8 OR SWAP1 SHR JUMP JUMPDEST PUSH1 0x0 SSTORE PUSH3 0xB1 DUP3 PUSH3 0x243394 PUSH3 0x15C PUSH1 0x20 SWAP1 DUP2 SHL PUSH3 0x6E8 OR SWAP1 SHR JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE PUSH1 0x3 DUP3 SWAP1 SSTORE PUSH1 0x1 SLOAD PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD PUSH32 0x6960AB234C7EF4B0C9197100F5393CFCDE7C453AC910A27BD2000AA1DD4C068D SWAP2 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG1 POP POP PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND OR SWAP1 SWAP3 SSTORE PUSH1 0x5 DUP1 SLOAD SWAP3 DUP7 AND SWAP3 SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP PUSH3 0x152 SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x1AF AND JUMP JUMPDEST POP POP POP POP PUSH3 0x721 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1A6 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH3 0x463 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x6CB1C69B PUSH1 0xE1 SHL DUP2 MSTORE PUSH5 0x4554482D41 PUSH1 0xD8 SHL PUSH1 0x4 DUP3 ADD MSTORE DUP2 MLOAD PUSH1 0x0 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 PUSH4 0xD9638D36 SWAP3 PUSH1 0x24 DUP1 DUP3 ADD SWAP4 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x1FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x214 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH3 0x22B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x5001F3B5 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP4 POP PUSH1 0x0 SWAP3 PUSH3 0x32A SWAP3 PUSH1 0xF SWAP3 PUSH3 0x302 SWAP3 PUSH12 0x33B2E3C9FD0803CE8000000 SWAP3 PUSH3 0x316 SWAP3 PUSH8 0xDE0B6B3A7640000 SWAP3 DUP7 SWAP3 DUP7 SWAP3 PUSH3 0x2EE SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x5001F3B5 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x2AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x2C1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x2D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP12 SWAP1 PUSH3 0x50A PUSH1 0x20 SWAP1 DUP2 SHL PUSH3 0x72A OR SWAP1 SHR JUMP JUMPDEST PUSH3 0x565 PUSH1 0x20 SHL PUSH3 0x784 OR SWAP1 SWAP2 SWAP1 PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x5AF PUSH1 0x20 SHL PUSH3 0x686 OR SWAP1 SWAP2 SWAP1 PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x15C PUSH1 0x20 SHL PUSH3 0x6E8 OR SWAP1 SWAP2 SWAP1 PUSH1 0x20 SHR JUMP JUMPDEST SWAP1 POP PUSH3 0x359 PUSH8 0xD2F13F7789F0000 PUSH3 0x316 PUSH8 0xDE0B6B3A7640000 PUSH3 0x302 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x60D AND JUMP JUMPDEST PUSH1 0x1 DUP2 SWAP1 SSTORE DUP2 GT ISZERO PUSH3 0x3CC JUMPI PUSH3 0x3C3 PUSH1 0x3 SLOAD PUSH3 0x316 PUSH8 0xDE0B6B3A7640000 PUSH3 0x302 PUSH3 0x243394 PUSH7 0x470DE4DF820000 DUP2 PUSH3 0x392 JUMPI INVALID JUMPDEST DIV PUSH3 0x3AF PUSH1 0x1 SLOAD DUP9 PUSH3 0x565 PUSH1 0x20 SHL PUSH3 0x784 OR SWAP1 SWAP2 SWAP1 PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x50A PUSH1 0x20 SHL PUSH3 0x72A OR SWAP1 SWAP2 SWAP1 PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x0 SSTORE PUSH3 0x40D JUMP JUMPDEST PUSH3 0x409 PUSH1 0x3 SLOAD PUSH3 0x316 PUSH8 0xDE0B6B3A7640000 PUSH3 0x243394 PUSH7 0x470DE4DF820000 DUP2 PUSH3 0x3F4 JUMPI INVALID JUMPDEST DIV PUSH3 0x5AF PUSH1 0x20 SHL PUSH3 0x686 OR SWAP1 SWAP2 SWAP1 PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x0 SSTORE JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SLOAD PUSH1 0x2 SLOAD PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD SWAP5 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP4 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP4 ADD MSTORE MLOAD PUSH32 0x6960AB234C7EF4B0C9197100F5393CFCDE7C453AC910A27BD2000AA1DD4C068D SWAP2 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH3 0x4F3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x4B7 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x49D JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0x4E5 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH3 0x500 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH3 0x1A6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x1A6 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1F DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E20756E646572666C6F7700 DUP2 MSTORE POP PUSH3 0x6C4 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH3 0x5C0 JUMPI POP PUSH1 0x0 PUSH3 0x1A9 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH3 0x5CE JUMPI INVALID JUMPDEST DIV EQ PUSH3 0x1A6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH3 0x10B0 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x6BF PUSH1 0xF PUSH3 0x302 PUSH4 0x3B9ACA00 PUSH3 0x316 PUSH12 0x33B2E3C9FD0803CE8000000 PUSH1 0x4 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 PUSH4 0x487BF082 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 PUSH3 0x67E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x693 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x6AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 PUSH3 0x565 PUSH1 0x20 SWAP1 DUP2 SHL PUSH3 0x784 OR SWAP1 SHR JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH3 0x719 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH3 0x4B7 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x49D JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH2 0x97F DUP1 PUSH3 0x731 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 0xCF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x96456C5C GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xB9F9850A GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xB9F9850A EQ PUSH2 0x1AD JUMPI DUP1 PUSH4 0xF14039DE EQ PUSH2 0x1B5 JUMPI DUP1 PUSH4 0xF52D21F3 EQ PUSH2 0x1BD JUMPI DUP1 PUSH4 0xFD2DA339 EQ PUSH2 0x1C5 JUMPI PUSH2 0xCF JUMP JUMPDEST DUP1 PUSH4 0x96456C5C EQ PUSH2 0x16E JUMPI DUP1 PUSH4 0xA385FB96 EQ PUSH2 0x176 JUMPI DUP1 PUSH4 0xB8168816 EQ PUSH2 0x17E JUMPI PUSH2 0xCF JUMP JUMPDEST DUP1 PUSH4 0x15F24053 EQ PUSH2 0xD4 JUMPI DUP1 PUSH4 0x18178358 EQ PUSH2 0x10F JUMPI DUP1 PUSH4 0x2191F92A EQ PUSH2 0x119 JUMPI DUP1 PUSH4 0x6DAC7CD5 EQ PUSH2 0x135 JUMPI DUP1 PUSH4 0x6E71E2D8 EQ PUSH2 0x13D JUMPI DUP1 PUSH4 0x8726BB89 EQ PUSH2 0x166 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xFD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x1CD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x117 PUSH2 0x2A5 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x121 PUSH2 0x4EB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xFD PUSH2 0x4F0 JUMP JUMPDEST PUSH2 0xFD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x153 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x4FC JUMP JUMPDEST PUSH2 0xFD PUSH2 0x542 JUMP JUMPDEST PUSH2 0xFD PUSH2 0x548 JUMP JUMPDEST PUSH2 0xFD PUSH2 0x5F2 JUMP JUMPDEST PUSH2 0xFD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x194 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x5F9 JUMP JUMPDEST PUSH2 0xFD PUSH2 0x66B JUMP JUMPDEST PUSH2 0xFD PUSH2 0x671 JUMP JUMPDEST PUSH2 0xFD PUSH2 0x677 JUMP JUMPDEST PUSH2 0xFD PUSH2 0x680 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1DB DUP6 DUP6 DUP6 PUSH2 0x4FC JUMP JUMPDEST SWAP1 POP PUSH1 0x3 SLOAD DUP2 GT PUSH2 0x22D JUMPI PUSH2 0x225 PUSH1 0x1 SLOAD PUSH2 0x219 PUSH8 0xDE0B6B3A7640000 PUSH2 0x20D PUSH1 0x0 SLOAD DUP7 PUSH2 0x686 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x6E8 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x72A AND JUMP JUMPDEST SWAP2 POP POP PUSH2 0x29E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x258 PUSH1 0x1 SLOAD PUSH2 0x219 PUSH8 0xDE0B6B3A7640000 PUSH2 0x20D PUSH1 0x0 SLOAD PUSH1 0x3 SLOAD PUSH2 0x686 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x271 PUSH1 0x3 SLOAD DUP5 PUSH2 0x784 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x298 DUP3 PUSH2 0x219 PUSH8 0xDE0B6B3A7640000 PUSH2 0x20D PUSH1 0x2 SLOAD DUP7 PUSH2 0x686 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP4 POP POP POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x6CB1C69B PUSH1 0xE1 SHL DUP2 MSTORE PUSH5 0x4554482D41 PUSH1 0xD8 SHL PUSH1 0x4 DUP3 ADD MSTORE DUP2 MLOAD PUSH1 0x0 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 PUSH4 0xD9638D36 SWAP3 PUSH1 0x24 DUP1 DUP3 ADD SWAP4 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x308 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x31E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x5001F3B5 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP4 POP PUSH1 0x0 SWAP3 PUSH2 0x3EB SWAP3 PUSH1 0xF SWAP3 PUSH2 0x3DF SWAP3 PUSH12 0x33B2E3C9FD0803CE8000000 SWAP3 PUSH2 0x20D SWAP3 PUSH8 0xDE0B6B3A7640000 SWAP3 DUP7 SWAP3 DUP7 SWAP3 PUSH2 0x3D3 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x5001F3B5 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x39A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3AE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP12 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x72A AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x784 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x686 AND JUMP JUMPDEST SWAP1 POP PUSH2 0x40D PUSH8 0xD2F13F7789F0000 PUSH2 0x20D PUSH8 0xDE0B6B3A7640000 PUSH2 0x3DF PUSH2 0x548 JUMP JUMPDEST PUSH1 0x1 DUP2 SWAP1 SSTORE DUP2 GT ISZERO PUSH2 0x45F JUMPI PUSH2 0x457 PUSH1 0x3 SLOAD PUSH2 0x20D PUSH8 0xDE0B6B3A7640000 PUSH2 0x3DF PUSH3 0x243394 PUSH7 0x470DE4DF820000 DUP2 PUSH2 0x441 JUMPI INVALID JUMPDEST DIV PUSH2 0x219 PUSH1 0x1 SLOAD DUP9 PUSH2 0x784 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 SSTORE PUSH2 0x495 JUMP JUMPDEST PUSH2 0x491 PUSH1 0x3 SLOAD PUSH2 0x20D PUSH8 0xDE0B6B3A7640000 PUSH3 0x243394 PUSH7 0x470DE4DF820000 DUP2 PUSH2 0x484 JUMPI INVALID JUMPDEST DIV SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x686 AND JUMP JUMPDEST PUSH1 0x0 SSTORE JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SLOAD PUSH1 0x2 SLOAD PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD SWAP5 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP4 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP4 ADD MSTORE MLOAD PUSH32 0x6960AB234C7EF4B0C9197100F5393CFCDE7C453AC910A27BD2000AA1DD4C068D SWAP2 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 JUMP JUMPDEST PUSH8 0xD2F13F7789F0000 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x50B JUMPI POP PUSH1 0x0 PUSH2 0x29E JUMP JUMPDEST PUSH2 0x53A PUSH2 0x522 DUP4 PUSH2 0x3D3 DUP8 DUP8 PUSH4 0xFFFFFFFF PUSH2 0x72A AND JUMP JUMPDEST PUSH2 0x20D DUP6 PUSH8 0xDE0B6B3A7640000 PUSH4 0xFFFFFFFF PUSH2 0x686 AND JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5ED PUSH1 0xF PUSH2 0x3DF PUSH4 0x3B9ACA00 PUSH2 0x20D PUSH12 0x33B2E3C9FD0803CE8000000 PUSH1 0x4 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 PUSH4 0x487BF082 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 0x5B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5C9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x784 AND JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH3 0x243394 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x608 DUP7 DUP7 DUP7 DUP7 PUSH2 0x7C6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x620 DUP6 PUSH2 0x3D3 DUP10 DUP10 PUSH4 0xFFFFFFFF PUSH2 0x72A AND JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x62F JUMPI POP SWAP1 POP PUSH2 0x53A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x64D DUP3 PUSH2 0x20D PUSH2 0x640 PUSH2 0x548 JUMP JUMPDEST DUP12 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x686 AND JUMP JUMPDEST SWAP1 POP PUSH2 0x65F DUP2 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x72A AND JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH5 0x1F676775E DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x695 JUMPI POP PUSH1 0x0 PUSH2 0x6E2 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x6A2 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x6DF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x92A PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6DF DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x82D JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x6DF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x6DF DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1F DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E20756E646572666C6F7700 DUP2 MSTORE POP PUSH2 0x8CF JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x7E1 PUSH8 0xDE0B6B3A7640000 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x784 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x7F0 DUP8 DUP8 DUP8 PUSH2 0x1CD JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x810 PUSH8 0xDE0B6B3A7640000 PUSH2 0x20D DUP5 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x686 AND JUMP JUMPDEST SWAP1 POP PUSH2 0x65F PUSH8 0xDE0B6B3A7640000 PUSH2 0x20D DUP4 PUSH2 0x3DF DUP13 DUP13 DUP13 PUSH2 0x4FC JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x8B9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x87E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x866 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x8AB JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x8C5 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x921 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x87E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x866 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP INVALID MSTORE8 PUSH2 0x6665 0x4D PUSH2 0x7468 GASPRICE KECCAK256 PUSH14 0x756C7469706C69636174696F6E20 PUSH16 0x766572666C6F77A265627A7A72315820 ISZERO 0xE3 SWAP10 0xAD SLT SWAP7 0x48 PUSH23 0xB758BBED1FF23F3CD9DC3212E8C0F01161B2EA6BD36B3A 0xCF PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN MSTORE8 PUSH2 0x6665 0x4D PUSH2 0x7468 GASPRICE KECCAK256 PUSH14 0x756C7469706C69636174696F6E20 PUSH16 0x766572666C6F77000000000000000000 ","sourceMap":"545:3536:17:-;;;1527:218;8:9:-1;5:2;;;30:1;27;20:12;5:2;1527:218:17;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;1527:218:17;;;;;;;;;;;;;;;;;;;;;;1621:1;;;;1527:218;;;;1681:34:27;;1621:1:17;;511:7:27;;1681:19;;;;;:34;;:::i;:::-;1662:16;:53;1746:36;:17;511:7;1746:21;;;;;;;:36;;:::i;:::-;1725:18;:57;1817:40;:21;511:7;1817:25;;;;;;;:40;;:::i;:::-;1792:22;:65;;;1867:4;:12;;;1913:16;;-1:-1:-1;1931:18:27;1895:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1674:3:17;:19;;-1:-1:-1;;;;;1674:19:17;;;-1:-1:-1;;;;;;1674:19:17;;;;;;;1703:3;:19;;;;;;;;;;;;;;;-1:-1:-1;1732:6:17;;-1:-1:-1;;;;;;1732:4:17;:6;:::i;:::-;1527:218;;;;545:3536;;4266:130:37;4324:7;4350:39;4354:1;4357;4350:39;;;;;;;;;;;;;;;;;:3;;;:39;;:::i;:::-;4343:46;;4266:130;;;;;:::o;3273:806:17:-;3322:3;;:17;;;-1:-1:-1;;;3322:17:17;;-1:-1:-1;;;3322:17:17;;;;;;3307:9;;-1:-1:-1;;;;;3322:3:17;;:8;;:17;;;;;;;;;;;:3;:17;;;5:2:-1;;;;30:1;27;20:12;5:2;3322:17:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3322:17:17;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3322:17:17;3386:3;;3322:17;3386:10;;-1:-1:-1;;;3386:10:17;;;;3322:17;;-1:-1:-1;3349:25:17;;3377:58;;3432:2;;3377:50;;3422:4;;3377:40;;3412:4;;3377:50;;3422:4;;3377:20;;-1:-1:-1;;;;;3386:3:17;;;;:8;;:10;;;;;3322:17;;3386:10;;;;;;;;:3;:10;;;5:2:-1;;;;30:1;27;20:12;5:2;3386:10:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3386:10:17;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3386:10:17;3377:4;;:8;3386:10;3377:8;;;;;:20;;:::i;:::-;:24;;;;;;:30;;;;:::i;:::-;:34;;;;;;:40;;;;:::i;:::-;:44;;;;;;:50;;;;:::i;:58::-;3349:86;-1:-1:-1;3540:65:17;1096:7;3540:23;3558:4;3540:13;-1:-1:-1;;;;;3540:11:17;:13;:::i;:65::-;3521:16;:84;;;3723:39;-1:-1:-1;3719:253:17;;;3799:79;3873:4;;3799:69;3863:4;3799:59;511:7:27;879:4:17;:20;;;;;;3799:42;3824:16;;3799:20;:24;;;;;;:42;;;;:::i;:::-;:46;;;;;;:59;;;;:::i;:79::-;3778:18;:100;3719:253;;;3930:31;3956:4;;3930:21;3946:4;511:7:27;879:4:17;:20;;;;;;3930:15;;;;;;:21;;;;:::i;:31::-;3909:18;:52;3719:253;4005:16;;4023:18;;4043:22;;4067:4;;3987:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3273:806;;:::o;4871:338:37:-;4957:7;5057:12;5050:5;5042:28;;;;-1:-1:-1;;;5042:28:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;5042:28:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5080:9;5096:1;5092;:5;;;;;;;4871:338;-1:-1:-1;;;;;4871:338:37:o;958:176::-;1016:7;1047:5;;;1070:6;;;;1062:46;;;;;-1:-1:-1;;;1062:46:37;;;;;;;;;;;;;;;;;;;;;;;;;;;1821:135;1879:7;1905:44;1909:1;1912;1905:44;;;;;;;;;;;;;;;;;:3;;;:44;;:::i;2655:459::-;2713:7;2954:6;2950:45;;-1:-1:-1;2983:1:37;2976:8;;2950:45;3017:5;;;3021:1;3017;:5;:1;3040:5;;;;;:10;3032:56;;;;-1:-1:-1;;;3032:56:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2880:263:17;2924:4;2947:165;3109:2;2947:125;3068:3;2947:32;2974:4;2947:3;;;;;;;;;-1:-1:-1;;;;;2947:3:17;-1:-1:-1;;;;;2947:20:17;;:22;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2947:22:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2947:22:17;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2947:22:17;;:26;:22;:26;;;;;:32;;:::i;:165::-;2940:172;;2880:263;:::o;2235:187:37:-;2321:7;2356:12;2348:6;;;;2340:29;;;;-1:-1:-1;;;2340:29:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;2340:29:37;-1:-1:-1;;;2391:5:37;;;2235:187::o;545:3536:17:-;;;;;;;"},"deployedBytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100cf5760003560e01c806396456c5c1161008c578063b9f9850a11610066578063b9f9850a146101ad578063f14039de146101b5578063f52d21f3146101bd578063fd2da339146101c5576100cf565b806396456c5c1461016e578063a385fb9614610176578063b81688161461017e576100cf565b806315f24053146100d4578063181783581461010f5780632191f92a146101195780636dac7cd5146101355780636e71e2d81461013d5780638726bb8914610166575b600080fd5b6100fd600480360360608110156100ea57600080fd5b50803590602081013590604001356101cd565b60408051918252519081900360200190f35b6101176102a5565b005b6101216104eb565b604080519115158252519081900360200190f35b6100fd6104f0565b6100fd6004803603606081101561015357600080fd5b50803590602081013590604001356104fc565b6100fd610542565b6100fd610548565b6100fd6105f2565b6100fd6004803603608081101561019457600080fd5b50803590602081013590604081013590606001356105f9565b6100fd61066b565b6100fd610671565b6100fd610677565b6100fd610680565b6000806101db8585856104fc565b9050600354811161022d57610225600154610219670de0b6b3a764000061020d6000548661068690919063ffffffff16565b9063ffffffff6106e816565b9063ffffffff61072a16565b91505061029e565b6000610258600154610219670de0b6b3a764000061020d60005460035461068690919063ffffffff16565b905060006102716003548461078490919063ffffffff16565b905061029882610219670de0b6b3a764000061020d6002548661068690919063ffffffff16565b93505050505b9392505050565b60055460408051636cb1c69b60e11b8152644554482d4160d81b600482015281516000936001600160a01b03169263d9638d369260248082019391829003018186803b1580156102f457600080fd5b505afa158015610308573d6000803e3d6000fd5b505050506040513d604081101561031e57600080fd5b505160055460408051635001f3b560e01b815290519293506000926103eb92600f926103df926b033b2e3c9fd0803ce80000009261020d92670de0b6b3a764000092869286926103d3926001600160a01b0390921691635001f3b591600480820192602092909190829003018186803b15801561039a57600080fd5b505afa1580156103ae573d6000803e3d6000fd5b505050506040513d60208110156103c457600080fd5b50518b9063ffffffff61072a16565b9063ffffffff61078416565b9063ffffffff61068616565b905061040d670d2f13f7789f000061020d670de0b6b3a76400006103df610548565b600181905581111561045f5761045760035461020d670de0b6b3a76400006103df6224339466470de4df8200008161044157fe5b046102196001548861078490919063ffffffff16565b600055610495565b61049160035461020d670de0b6b3a76400006224339466470de4df8200008161048457fe5b049063ffffffff61068616565b6000555b600154600054600254600354604080519485526020850193909352838301919091526060830152517f6960ab234c7ef4b0c9197100f5393cfcde7c453ac910a27bd2000aa1dd4c068d9181900360800190a15050565b600181565b670d2f13f7789f000081565b60008261050b5750600061029e565b61053a610522836103d3878763ffffffff61072a16565b61020d85670de0b6b3a764000063ffffffff61068616565b949350505050565b60005481565b60006105ed600f6103df633b9aca0061020d6b033b2e3c9fd0803ce8000000600460009054906101000a90046001600160a01b03166001600160a01b031663487bf0826040518163ffffffff1660e01b815260040160206040518083038186803b1580156105b557600080fd5b505afa1580156105c9573d6000803e3d6000fd5b505050506040513d60208110156105df57600080fd5b50519063ffffffff61078416565b905090565b6224339481565b600080610608868686866107c6565b90506000610620856103d3898963ffffffff61072a16565b90508061062f5750905061053a565b600061064d8261020d610640610548565b8b9063ffffffff61068616565b905061065f818463ffffffff61072a16565b98975050505050505050565b60025481565b60015481565b6401f676775e81565b60035481565b600082610695575060006106e2565b828202828482816106a257fe5b04146106df5760405162461bcd60e51b815260040180806020018281038252602181526020018061092a6021913960400191505060405180910390fd5b90505b92915050565b60006106df83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061082d565b6000828201838110156106df576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60006106df83836040518060400160405280601f81526020017f536166654d6174683a207375627472616374696f6e20756e646572666c6f77008152506108cf565b6000806107e1670de0b6b3a76400008463ffffffff61078416565b905060006107f08787876101cd565b90506000610810670de0b6b3a764000061020d848663ffffffff61068616565b905061065f670de0b6b3a764000061020d836103df8c8c8c6104fc565b600081836108b95760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561087e578181015183820152602001610866565b50505050905090810190601f1680156108ab5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816108c557fe5b0495945050505050565b600081848411156109215760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561087e578181015183820152602001610866565b50505090039056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a265627a7a7231582015e399ad12964876b758bbed1ff23f3cd9dc3212e8c0f01161b2ea6bd36b3acf64736f6c63430005110032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xCF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x96456C5C GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xB9F9850A GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xB9F9850A EQ PUSH2 0x1AD JUMPI DUP1 PUSH4 0xF14039DE EQ PUSH2 0x1B5 JUMPI DUP1 PUSH4 0xF52D21F3 EQ PUSH2 0x1BD JUMPI DUP1 PUSH4 0xFD2DA339 EQ PUSH2 0x1C5 JUMPI PUSH2 0xCF JUMP JUMPDEST DUP1 PUSH4 0x96456C5C EQ PUSH2 0x16E JUMPI DUP1 PUSH4 0xA385FB96 EQ PUSH2 0x176 JUMPI DUP1 PUSH4 0xB8168816 EQ PUSH2 0x17E JUMPI PUSH2 0xCF JUMP JUMPDEST DUP1 PUSH4 0x15F24053 EQ PUSH2 0xD4 JUMPI DUP1 PUSH4 0x18178358 EQ PUSH2 0x10F JUMPI DUP1 PUSH4 0x2191F92A EQ PUSH2 0x119 JUMPI DUP1 PUSH4 0x6DAC7CD5 EQ PUSH2 0x135 JUMPI DUP1 PUSH4 0x6E71E2D8 EQ PUSH2 0x13D JUMPI DUP1 PUSH4 0x8726BB89 EQ PUSH2 0x166 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xFD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x1CD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x117 PUSH2 0x2A5 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x121 PUSH2 0x4EB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xFD PUSH2 0x4F0 JUMP JUMPDEST PUSH2 0xFD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x153 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x4FC JUMP JUMPDEST PUSH2 0xFD PUSH2 0x542 JUMP JUMPDEST PUSH2 0xFD PUSH2 0x548 JUMP JUMPDEST PUSH2 0xFD PUSH2 0x5F2 JUMP JUMPDEST PUSH2 0xFD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x194 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x5F9 JUMP JUMPDEST PUSH2 0xFD PUSH2 0x66B JUMP JUMPDEST PUSH2 0xFD PUSH2 0x671 JUMP JUMPDEST PUSH2 0xFD PUSH2 0x677 JUMP JUMPDEST PUSH2 0xFD PUSH2 0x680 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1DB DUP6 DUP6 DUP6 PUSH2 0x4FC JUMP JUMPDEST SWAP1 POP PUSH1 0x3 SLOAD DUP2 GT PUSH2 0x22D JUMPI PUSH2 0x225 PUSH1 0x1 SLOAD PUSH2 0x219 PUSH8 0xDE0B6B3A7640000 PUSH2 0x20D PUSH1 0x0 SLOAD DUP7 PUSH2 0x686 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x6E8 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x72A AND JUMP JUMPDEST SWAP2 POP POP PUSH2 0x29E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x258 PUSH1 0x1 SLOAD PUSH2 0x219 PUSH8 0xDE0B6B3A7640000 PUSH2 0x20D PUSH1 0x0 SLOAD PUSH1 0x3 SLOAD PUSH2 0x686 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x271 PUSH1 0x3 SLOAD DUP5 PUSH2 0x784 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x298 DUP3 PUSH2 0x219 PUSH8 0xDE0B6B3A7640000 PUSH2 0x20D PUSH1 0x2 SLOAD DUP7 PUSH2 0x686 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP4 POP POP POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x6CB1C69B PUSH1 0xE1 SHL DUP2 MSTORE PUSH5 0x4554482D41 PUSH1 0xD8 SHL PUSH1 0x4 DUP3 ADD MSTORE DUP2 MLOAD PUSH1 0x0 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 PUSH4 0xD9638D36 SWAP3 PUSH1 0x24 DUP1 DUP3 ADD SWAP4 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x308 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x31E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x5001F3B5 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP4 POP PUSH1 0x0 SWAP3 PUSH2 0x3EB SWAP3 PUSH1 0xF SWAP3 PUSH2 0x3DF SWAP3 PUSH12 0x33B2E3C9FD0803CE8000000 SWAP3 PUSH2 0x20D SWAP3 PUSH8 0xDE0B6B3A7640000 SWAP3 DUP7 SWAP3 DUP7 SWAP3 PUSH2 0x3D3 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x5001F3B5 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x39A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3AE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP12 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x72A AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x784 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x686 AND JUMP JUMPDEST SWAP1 POP PUSH2 0x40D PUSH8 0xD2F13F7789F0000 PUSH2 0x20D PUSH8 0xDE0B6B3A7640000 PUSH2 0x3DF PUSH2 0x548 JUMP JUMPDEST PUSH1 0x1 DUP2 SWAP1 SSTORE DUP2 GT ISZERO PUSH2 0x45F JUMPI PUSH2 0x457 PUSH1 0x3 SLOAD PUSH2 0x20D PUSH8 0xDE0B6B3A7640000 PUSH2 0x3DF PUSH3 0x243394 PUSH7 0x470DE4DF820000 DUP2 PUSH2 0x441 JUMPI INVALID JUMPDEST DIV PUSH2 0x219 PUSH1 0x1 SLOAD DUP9 PUSH2 0x784 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 SSTORE PUSH2 0x495 JUMP JUMPDEST PUSH2 0x491 PUSH1 0x3 SLOAD PUSH2 0x20D PUSH8 0xDE0B6B3A7640000 PUSH3 0x243394 PUSH7 0x470DE4DF820000 DUP2 PUSH2 0x484 JUMPI INVALID JUMPDEST DIV SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x686 AND JUMP JUMPDEST PUSH1 0x0 SSTORE JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SLOAD PUSH1 0x2 SLOAD PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD SWAP5 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP4 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP4 ADD MSTORE MLOAD PUSH32 0x6960AB234C7EF4B0C9197100F5393CFCDE7C453AC910A27BD2000AA1DD4C068D SWAP2 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 JUMP JUMPDEST PUSH8 0xD2F13F7789F0000 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x50B JUMPI POP PUSH1 0x0 PUSH2 0x29E JUMP JUMPDEST PUSH2 0x53A PUSH2 0x522 DUP4 PUSH2 0x3D3 DUP8 DUP8 PUSH4 0xFFFFFFFF PUSH2 0x72A AND JUMP JUMPDEST PUSH2 0x20D DUP6 PUSH8 0xDE0B6B3A7640000 PUSH4 0xFFFFFFFF PUSH2 0x686 AND JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5ED PUSH1 0xF PUSH2 0x3DF PUSH4 0x3B9ACA00 PUSH2 0x20D PUSH12 0x33B2E3C9FD0803CE8000000 PUSH1 0x4 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 PUSH4 0x487BF082 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 0x5B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5C9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x784 AND JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH3 0x243394 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x608 DUP7 DUP7 DUP7 DUP7 PUSH2 0x7C6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x620 DUP6 PUSH2 0x3D3 DUP10 DUP10 PUSH4 0xFFFFFFFF PUSH2 0x72A AND JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x62F JUMPI POP SWAP1 POP PUSH2 0x53A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x64D DUP3 PUSH2 0x20D PUSH2 0x640 PUSH2 0x548 JUMP JUMPDEST DUP12 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x686 AND JUMP JUMPDEST SWAP1 POP PUSH2 0x65F DUP2 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x72A AND JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH5 0x1F676775E DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x695 JUMPI POP PUSH1 0x0 PUSH2 0x6E2 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x6A2 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x6DF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x92A PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6DF DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x82D JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x6DF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x6DF DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1F DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E20756E646572666C6F7700 DUP2 MSTORE POP PUSH2 0x8CF JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x7E1 PUSH8 0xDE0B6B3A7640000 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x784 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x7F0 DUP8 DUP8 DUP8 PUSH2 0x1CD JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x810 PUSH8 0xDE0B6B3A7640000 PUSH2 0x20D DUP5 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x686 AND JUMP JUMPDEST SWAP1 POP PUSH2 0x65F PUSH8 0xDE0B6B3A7640000 PUSH2 0x20D DUP4 PUSH2 0x3DF DUP13 DUP13 DUP13 PUSH2 0x4FC JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x8B9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x87E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x866 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x8AB JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x8C5 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x921 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x87E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x866 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP INVALID MSTORE8 PUSH2 0x6665 0x4D PUSH2 0x7468 GASPRICE KECCAK256 PUSH14 0x756C7469706C69636174696F6E20 PUSH16 0x766572666C6F77A265627A7A72315820 ISZERO 0xE3 SWAP10 0xAD SLT SWAP7 0x48 PUSH23 0xB758BBED1FF23F3CD9DC3212E8C0F01161B2EA6BD36B3A 0xCF PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ","sourceMap":"545:3536:17:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;545:3536:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3037:519:27;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3037:519:27;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;3273:806:17;;;:::i;:::-;;224:47:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;1036:67:17;;;:::i;2368:290:27:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2368:290:27;;;;;;;;;;;;:::i;668:30::-;;;:::i;2880:263:17:-;;;:::i;474:44:27:-;;;:::i;2228:489:17:-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;2228:489:17;;;;;;;;;;;;;;;;;:::i;944:34:27:-;;;:::i;811:28::-;;;:::i;844:55:17:-;;;:::i;1078:16:27:-;;;:::i;3037:519::-;3121:4;3137:9;3149:40;3165:4;3171:7;3180:8;3149:15;:40::i;:::-;3137:52;;3212:4;;3204;:12;3200:350;;3239:60;3282:16;;3239:38;3272:4;3239:28;3248:18;;3239:4;:8;;:28;;;;:::i;:::-;:32;:38;:32;:38;:::i;:::-;:42;:60;:42;:60;:::i;:::-;3232:67;;;;;3200:350;3330:15;3348:60;3391:16;;3348:38;3381:4;3348:28;3357:18;;3348:4;;:8;;:28;;;;:::i;:60::-;3330:78;;3422:15;3440:14;3449:4;;3440;:8;;:14;;;;:::i;:::-;3422:32;;3475:64;3528:10;3475:48;3518:4;3475:38;3490:22;;3475:10;:14;;:38;;;;:::i;:64::-;3468:71;;;;;3037:519;;;;;;:::o;3273:806:17:-;3322:3;;:17;;;-1:-1:-1;;;3322:17:17;;-1:-1:-1;;;3322:17:17;;;;;;3307:9;;-1:-1:-1;;;;;3322:3:17;;:8;;:17;;;;;;;;;;;:3;:17;;;5:2:-1;;;;30:1;27;20:12;5:2;3322:17:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3322:17:17;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3322:17:17;3386:3;;3322:17;3386:10;;-1:-1:-1;;;3386:10:17;;;;3322:17;;-1:-1:-1;3349:25:17;;3377:58;;3432:2;;3377:50;;3422:4;;3377:40;;3412:4;;3377:50;;3422:4;;3377:20;;-1:-1:-1;;;;;3386:3:17;;;;:8;;:10;;;;;3322:17;;3386:10;;;;;;;;:3;:10;;;5:2:-1;;;;30:1;27;20:12;5:2;3386:10:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3386:10:17;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3386:10:17;3377:4;;:20;:8;:20;:::i;:::-;:24;:30;:24;:30;:::i;:::-;:34;:40;:34;:40;:::i;:58::-;3349:86;;3540:65;1096:7;3540:23;3558:4;3540:13;:11;:13::i;:65::-;3521:16;:84;;;3723:39;-1:-1:-1;3719:253:17;;;3799:79;3873:4;;3799:69;3863:4;3799:59;511:7:27;879:4:17;:20;;;;;;3799:42;3824:16;;3799:20;:24;;:42;;;;:::i;:79::-;3778:18;:100;3719:253;;;3930:31;3956:4;;3930:21;3946:4;511:7:27;879:4:17;:20;;;;;;;3930:21;:15;:21;:::i;:31::-;3909:18;:52;3719:253;4005:16;;4023:18;;4043:22;;4067:4;;3987:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3273:806;;:::o;224:47:26:-;267:4;224:47;:::o;1036:67:17:-;1096:7;1036:67;:::o;2368:290:27:-;2454:4;2533:12;2529:51;;-1:-1:-1;2568:1:27;2561:8;;2529:51;2597:54;2619:31;2641:8;2619:17;:4;2628:7;2619:17;:8;:17;:::i;:31::-;2597:17;:7;2609:4;2597:17;:11;:17;:::i;:54::-;2590:61;2368:290;-1:-1:-1;;;;2368:290:27:o;668:30::-;;;;:::o;2880:263:17:-;2924:4;2947:165;3109:2;2947:125;3068:3;2947:32;2974:4;2947:3;;;;;;;;;-1:-1:-1;;;;;2947:3:17;-1:-1:-1;;;;;2947:20:17;;:22;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2947:22:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2947:22:17;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2947:22:17;;:32;:26;:32;:::i;:165::-;2940:172;;2880:263;:::o;474:44:27:-;511:7;474:44;:::o;2228:489:17:-;2340:4;2356:17;2376:67;2396:4;2402:7;2411:8;2421:21;2376:19;:67::i;:::-;2356:87;-1:-1:-1;2454:15:17;2472:31;2494:8;2472:17;:4;2481:7;2472:17;:8;:17;:::i;:31::-;2454:49;-1:-1:-1;2517:15:17;2513:198;;-1:-1:-1;2555:12:17;-1:-1:-1;2548:19:17;;2513:198;2598:13;2614:39;2642:10;2614:23;2623:13;:11;:13::i;:::-;2614:4;;:23;:8;:23;:::i;:39::-;2598:55;-1:-1:-1;2674:26:17;2598:55;2687:12;2674:26;:12;:26;:::i;:::-;2667:33;2228:489;-1:-1:-1;;;;;;;;2228:489:17:o;944:34:27:-;;;;:::o;811:28::-;;;;:::o;844:55:17:-;879:20;844:55;:::o;1078:16:27:-;;;;:::o;2655:459:37:-;2713:7;2954:6;2950:45;;-1:-1:-1;2983:1:37;2976:8;;2950:45;3017:5;;;3021:1;3017;:5;:1;3040:5;;;;;:10;3032:56;;;;-1:-1:-1;;;3032:56:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3106:1;-1:-1:-1;2655:459:37;;;;;:::o;4266:130::-;4324:7;4350:39;4354:1;4357;4350:39;;;;;;;;;;;;;;;;;:3;:39::i;958:176::-;1016:7;1047:5;;;1070:6;;;;1062:46;;;;;-1:-1:-1;;;1062:46:37;;;;;;;;;;;;;;;;;;;;;;;;;;;1821:135;1879:7;1905:44;1909:1;1912;1905:44;;;;;;;;;;;;;;;;;:3;:44::i;3969:425:27:-;4081:4;;4126:37;4131:4;4141:21;4126:37;:14;:37;:::i;:::-;4097:66;;4173:15;4191:38;4205:4;4211:7;4220:8;4191:13;:38::i;:::-;4173:56;-1:-1:-1;4239:15:27;4257:47;4299:4;4257:37;4173:56;4272:21;4257:37;:14;:37;:::i;:47::-;4239:65;;4321:66;4382:4;4321:56;4366:10;4321:40;4337:4;4343:7;4352:8;4321:15;:40::i;4871:338:37:-;4957:7;5057:12;5050:5;5042:28;;;;-1:-1:-1;;;5042:28:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;5042:28:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5080:9;5096:1;5092;:5;;;;;;;4871:338;-1:-1:-1;;;;;4871:338:37:o;2235:187::-;2321:7;2356:12;2348:6;;;;2340:29;;;;-1:-1:-1;;;2340:29:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;2340:29:37;-1:-1:-1;;;2391:5:37;;;2235:187::o"},"methodIdentifiers":{"assumedOneMinusReserveFactorMantissa()":"6dac7cd5","baseRatePerBlock()":"f14039de","blocksPerYear()":"a385fb96","dsrPerBlock()":"96456c5c","gapPerBlock()":"f52d21f3","getBorrowRate(uint256,uint256,uint256)":"15f24053","getSupplyRate(uint256,uint256,uint256,uint256)":"b8168816","isInterestRateModel()":"2191f92a","jumpMultiplierPerBlock()":"b9f9850a","kink()":"fd2da339","multiplierPerBlock()":"8726bb89","poke()":"18178358","utilizationRate(uint256,uint256,uint256)":"6e71e2d8"}},"metadata":"{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"jumpMultiplierPerYear\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"kink_\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"pot_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"jug_\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"baseRatePerBlock\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"multiplierPerBlock\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"jumpMultiplierPerBlock\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"kink\",\"type\":\"uint256\"}],\"name\":\"NewInterestParams\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"assumedOneMinusReserveFactorMantissa\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"baseRatePerBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"blocksPerYear\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"dsrPerBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"gapPerBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"cash\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"borrows\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserves\",\"type\":\"uint256\"}],\"name\":\"getBorrowRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"cash\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"borrows\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserves\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveFactorMantissa\",\"type\":\"uint256\"}],\"name\":\"getSupplyRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isInterestRateModel\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"jumpMultiplierPerBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"kink\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"multiplierPerBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"poke\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"cash\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"borrows\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserves\",\"type\":\"uint256\"}],\"name\":\"utilizationRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Compound (modified by Dharma Labs)\",\"methods\":{\"constructor\":{\"params\":{\"jug_\":\"The address of the Dai jug (where SF is kept)\",\"jumpMultiplierPerYear\":\"The multiplierPerBlock after hitting a specified utilization point\",\"kink_\":\"The utilization point at which the jump multiplier is applied\",\"pot_\":\"The address of the Dai pot (where DSR is earned)\"}},\"dsrPerBlock()\":{\"return\":\"The Dai savings rate per block (as a percentage, and scaled by 1e18)\"},\"getBorrowRate(uint256,uint256,uint256)\":{\"params\":{\"borrows\":\"The amount of borrows in the market\",\"cash\":\"The amount of cash in the market\",\"reserves\":\"The amount of reserves in the market\"},\"return\":\"The borrow rate percentage per block as a mantissa (scaled by 1e18)\"},\"getSupplyRate(uint256,uint256,uint256,uint256)\":{\"params\":{\"borrows\":\"The total amount of borrows the market has outstanding\",\"cash\":\"The total amount of cash the market has\",\"reserveFactorMantissa\":\"The current reserve factor the market has\",\"reserves\":\"The total amnount of reserves the market has\"},\"return\":\"The supply rate per block (as a percentage, and scaled by 1e18)\"},\"utilizationRate(uint256,uint256,uint256)\":{\"params\":{\"borrows\":\"The amount of borrows in the market\",\"cash\":\"The amount of cash in the market\",\"reserves\":\"The amount of reserves in the market (currently unused)\"},\"return\":\"The utilization rate as a mantissa between [0, 1e18]\"}},\"title\":\"Compound's DAIInterestRateModel Contract (version 2)\"},\"userdoc\":{\"methods\":{\"constructor\":\"Construct an interest rate model\",\"dsrPerBlock()\":{\"notice\":\"Calculates the Dai savings rate per block\"},\"getBorrowRate(uint256,uint256,uint256)\":{\"notice\":\"Calculates the current borrow rate per block, with the error code expected by the market\"},\"getSupplyRate(uint256,uint256,uint256,uint256)\":{\"notice\":\"Calculates the current supply interest rate per block including the Dai savings rate\"},\"poke()\":{\"notice\":\"Resets the baseRate and multiplier per block based on the stability fee and Dai savings rate\"},\"utilizationRate(uint256,uint256,uint256)\":{\"notice\":\"Calculates the utilization rate of the market: `borrows / (cash + borrows - reserves)`\"}},\"notice\":\"The parameterized model described in section 2.4 of the original Compound Protocol whitepaper. Version 2 modifies the original interest rate model by increasing the \\\"gap\\\" or slope of the model prior to the \\\"kink\\\" from 0.05% to 2% with the goal of \\\"smoothing out\\\" interest rate changes as the utilization rate increases.\"}},\"settings\":{\"compilationTarget\":{\"contracts/DAIInterestRateModelV2.sol\":\"DAIInterestRateModelV2\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/DAIInterestRateModelV2.sol\":{\"keccak256\":\"0xa7e572b90bf9af054ef927af6036fd64efffaf6b34f3d9ce153e42456ed688de\",\"urls\":[\"bzz-raw://ea54395c2c6fe16d69c47b633734453e2826506f3555d4459ee150a0a588cb40\",\"dweb:/ipfs/QmYNQrRGTPRd4viwTGD8RDmZw3Ua2FmVpLevJs6DnSpboZ\"]},\"contracts/InterestRateModel.sol\":{\"keccak256\":\"0x0cc0dbd1991e5dcdcff58b0c82a9471a0fb9df26763e5e7415e1d081b7332409\",\"urls\":[\"bzz-raw://f4d7936aefc43ea2724f0e472b8f1517f1ca40170258ab9d5bbd0862dd0c4f13\",\"dweb:/ipfs/QmfYjG1Sm3kNwbhomHCWhMqw9LvaJVWVzBe4Te5BHRbTQS\"]},\"contracts/JumpRateModel.sol\":{\"keccak256\":\"0x7dbb8a4541e39be73ae21c3da8781b4dfa5e8aaef3ccbf01a0b922556fb9a49c\",\"urls\":[\"bzz-raw://76aa2e2b23b88364281e20e2ab13b68231845dfceb1ee60472a76af8f68448a5\",\"dweb:/ipfs/QmaXcJS6qafCNSr6mP8qB3fYE8oRh4kSzxn4bgEvmimH8V\"]},\"contracts/SafeMath.sol\":{\"keccak256\":\"0x675b1178c34633ecc37124c254349c1d3fe239c7bd74a649eb55f54adafd2dee\",\"urls\":[\"bzz-raw://c55f6f93d24b0976189d8fcf4df706b04439041d43a1e4d289db440251f9bc2a\",\"dweb:/ipfs/QmUAsuvRZMJ4hvsxKF3ud5g93DBEbnaXnt7waJzziurC2S\"]}},\"version\":1}"},"JugLike":{"abi":[{"constant":true,"inputs":[],"name":"base","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"ilks","outputs":[{"internalType":"uint256","name":"duty","type":"uint256"},{"internalType":"uint256","name":"rho","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b5060d68061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c80635001f3b5146037578063d9638d3614604f575b600080fd5b603d6082565b60408051918252519081900360200190f35b606960048036036020811015606357600080fd5b50356088565b6040805192835260208301919091528051918290030190f35b60015481565b600060208190529081526040902080546001909101548256fea265627a7a7231582031c2110c8b06e1aabb37fb718bfe835924d83a45b7c88117a1aebfe97701bf6b64736f6c63430005110032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xD6 DUP1 PUSH2 0x1F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x32 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x5001F3B5 EQ PUSH1 0x37 JUMPI DUP1 PUSH4 0xD9638D36 EQ PUSH1 0x4F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3D PUSH1 0x82 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x69 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH1 0x63 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x88 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP2 SWAP1 MSTORE SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD DUP3 JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 BALANCE 0xC2 GT 0xC DUP12 MOD 0xE1 0xAA 0xBB CALLDATACOPY 0xFB PUSH18 0x8BFE835924D83A45B7C88117A1AEBFE97701 0xBF PUSH12 0x64736F6C6343000511003200 ","sourceMap":"4450:173:17:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4450:173:17;;;;;;;"},"deployedBytecode":{"linkReferences":{},"object":"6080604052348015600f57600080fd5b506004361060325760003560e01c80635001f3b5146037578063d9638d3614604f575b600080fd5b603d6082565b60408051918252519081900360200190f35b606960048036036020811015606357600080fd5b50356088565b6040805192835260208301919091528051918290030190f35b60015481565b600060208190529081526040902080546001909101548256fea265627a7a7231582031c2110c8b06e1aabb37fb718bfe835924d83a45b7c88117a1aebfe97701bf6b64736f6c63430005110032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x32 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x5001F3B5 EQ PUSH1 0x37 JUMPI DUP1 PUSH4 0xD9638D36 EQ PUSH1 0x4F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3D PUSH1 0x82 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x69 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH1 0x63 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x88 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP2 SWAP1 MSTORE SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD DUP3 JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 BALANCE 0xC2 GT 0xC DUP12 MOD 0xE1 0xAA 0xBB CALLDATACOPY 0xFB PUSH18 0x8BFE835924D83A45B7C88117A1AEBFE97701 0xBF PUSH12 0x64736F6C6343000511003200 ","sourceMap":"4450:173:17:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4450:173:17;;;;;;;;;;;;;;;;;;;;;;;;4601:19;;;:::i;:::-;;;;;;;;;;;;;;;;4560:36;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4560:36:17;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4601:19;;;;:::o;4560:36::-;;;;;;;;;;;;;;;;;;;;:::o"},"methodIdentifiers":{"base()":"5001f3b5","ilks(bytes32)":"d9638d36"}},"metadata":"{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[],\"name\":\"base\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"ilks\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"duty\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rho\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/DAIInterestRateModelV2.sol\":\"JugLike\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/DAIInterestRateModelV2.sol\":{\"keccak256\":\"0xa7e572b90bf9af054ef927af6036fd64efffaf6b34f3d9ce153e42456ed688de\",\"urls\":[\"bzz-raw://ea54395c2c6fe16d69c47b633734453e2826506f3555d4459ee150a0a588cb40\",\"dweb:/ipfs/QmYNQrRGTPRd4viwTGD8RDmZw3Ua2FmVpLevJs6DnSpboZ\"]},\"contracts/InterestRateModel.sol\":{\"keccak256\":\"0x0cc0dbd1991e5dcdcff58b0c82a9471a0fb9df26763e5e7415e1d081b7332409\",\"urls\":[\"bzz-raw://f4d7936aefc43ea2724f0e472b8f1517f1ca40170258ab9d5bbd0862dd0c4f13\",\"dweb:/ipfs/QmfYjG1Sm3kNwbhomHCWhMqw9LvaJVWVzBe4Te5BHRbTQS\"]},\"contracts/JumpRateModel.sol\":{\"keccak256\":\"0x7dbb8a4541e39be73ae21c3da8781b4dfa5e8aaef3ccbf01a0b922556fb9a49c\",\"urls\":[\"bzz-raw://76aa2e2b23b88364281e20e2ab13b68231845dfceb1ee60472a76af8f68448a5\",\"dweb:/ipfs/QmaXcJS6qafCNSr6mP8qB3fYE8oRh4kSzxn4bgEvmimH8V\"]},\"contracts/SafeMath.sol\":{\"keccak256\":\"0x675b1178c34633ecc37124c254349c1d3fe239c7bd74a649eb55f54adafd2dee\",\"urls\":[\"bzz-raw://c55f6f93d24b0976189d8fcf4df706b04439041d43a1e4d289db440251f9bc2a\",\"dweb:/ipfs/QmUAsuvRZMJ4hvsxKF3ud5g93DBEbnaXnt7waJzziurC2S\"]}},\"version\":1}"},"PotLike":{"abi":[{"constant":true,"inputs":[],"name":"chi","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"drip","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"dsr","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"exit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"join","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"pie","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rho","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"chi()":"c92aecc4","drip()":"9f678cca","dsr()":"487bf082","exit(uint256)":"7f8661a1","join(uint256)":"049878f3","pie(address)":"0bebac86","rho()":"20aba08b"}},"metadata":"{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[],\"name\":\"chi\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"drip\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"dsr\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"exit\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"join\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"pie\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"rho\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{},\"notice\":\"* Maker Interfaces **\"}},\"settings\":{\"compilationTarget\":{\"contracts/DAIInterestRateModelV2.sol\":\"PotLike\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/DAIInterestRateModelV2.sol\":{\"keccak256\":\"0xa7e572b90bf9af054ef927af6036fd64efffaf6b34f3d9ce153e42456ed688de\",\"urls\":[\"bzz-raw://ea54395c2c6fe16d69c47b633734453e2826506f3555d4459ee150a0a588cb40\",\"dweb:/ipfs/QmYNQrRGTPRd4viwTGD8RDmZw3Ua2FmVpLevJs6DnSpboZ\"]},\"contracts/InterestRateModel.sol\":{\"keccak256\":\"0x0cc0dbd1991e5dcdcff58b0c82a9471a0fb9df26763e5e7415e1d081b7332409\",\"urls\":[\"bzz-raw://f4d7936aefc43ea2724f0e472b8f1517f1ca40170258ab9d5bbd0862dd0c4f13\",\"dweb:/ipfs/QmfYjG1Sm3kNwbhomHCWhMqw9LvaJVWVzBe4Te5BHRbTQS\"]},\"contracts/JumpRateModel.sol\":{\"keccak256\":\"0x7dbb8a4541e39be73ae21c3da8781b4dfa5e8aaef3ccbf01a0b922556fb9a49c\",\"urls\":[\"bzz-raw://76aa2e2b23b88364281e20e2ab13b68231845dfceb1ee60472a76af8f68448a5\",\"dweb:/ipfs/QmaXcJS6qafCNSr6mP8qB3fYE8oRh4kSzxn4bgEvmimH8V\"]},\"contracts/SafeMath.sol\":{\"keccak256\":\"0x675b1178c34633ecc37124c254349c1d3fe239c7bd74a649eb55f54adafd2dee\",\"urls\":[\"bzz-raw://c55f6f93d24b0976189d8fcf4df706b04439041d43a1e4d289db440251f9bc2a\",\"dweb:/ipfs/QmUAsuvRZMJ4hvsxKF3ud5g93DBEbnaXnt7waJzziurC2S\"]}},\"version\":1}"}},"contracts/EIP20Interface.sol":{"EIP20Interface":{"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":"amount","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":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"src","type":"address"},{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"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\":\"amount\",\"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\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"remaining\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"allowance(address,address)\":{\"params\":{\"owner\":\"The address of the account which owns the tokens to be spent\",\"spender\":\"The address of the account which may transfer tokens\"},\"return\":\"The number of tokens allowed to be spent (-1 means infinite)\"},\"approve(address,uint256)\":{\"details\":\"This will overwrite the approval amount for `spender` and is subject to issues noted [here](https://eips.ethereum.org/EIPS/eip-20#approve)\",\"params\":{\"amount\":\"The number of tokens that are approved (-1 means infinite)\",\"spender\":\"The address of the account which may transfer tokens\"},\"return\":\"Whether or not the approval succeeded\"},\"balanceOf(address)\":{\"params\":{\"owner\":\"The address from which the balance will be retrieved\"},\"return\":\"The balance\"},\"totalSupply()\":{\"return\":\"The supply of tokens\"},\"transfer(address,uint256)\":{\"params\":{\"amount\":\"The number of tokens to transfer\",\"dst\":\"The address of the destination account\"},\"return\":\"Whether or not the transfer succeeded\"},\"transferFrom(address,address,uint256)\":{\"params\":{\"amount\":\"The number of tokens to transfer\",\"dst\":\"The address of the destination account\",\"src\":\"The address of the source account\"},\"return\":\"Whether or not the transfer succeeded\"}},\"title\":\"ERC 20 Token Standard Interface https://eips.ethereum.org/EIPS/eip-20\"},\"userdoc\":{\"methods\":{\"allowance(address,address)\":{\"notice\":\"Get the current allowance from `owner` for `spender`\"},\"approve(address,uint256)\":{\"notice\":\"Approve `spender` to transfer up to `amount` from `src`\"},\"balanceOf(address)\":{\"notice\":\"Gets the balance of the specified address\"},\"totalSupply()\":{\"notice\":\"Get the total number of tokens in circulation\"},\"transfer(address,uint256)\":{\"notice\":\"Transfer `amount` tokens from `msg.sender` to `dst`\"},\"transferFrom(address,address,uint256)\":{\"notice\":\"Transfer `amount` tokens from `src` to `dst`\"}}}},\"settings\":{\"compilationTarget\":{\"contracts/EIP20Interface.sol\":\"EIP20Interface\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/EIP20Interface.sol\":{\"keccak256\":\"0xee33b8b333743308a9153a59f22da2cadb22cedef4403fe039bf9e057c9c729a\",\"urls\":[\"bzz-raw://5427fdb941300d36a424da0a0a5800e3b2ca51c9c922831dbfce2f6637402b43\",\"dweb:/ipfs/QmTrvmLynqSUPjsGW2dpiQ91dSmn4xzccQiwr8qaBtyvjH\"]}},\"version\":1}"}},"contracts/EIP20NonStandardInterface.sol":{"EIP20NonStandardInterface":{"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":"amount","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":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"src","type":"address"},{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"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.5.17+commit.d19bba13\"},\"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\":\"amount\",\"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\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"remaining\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Version of ERC20 with no return values for `transfer` and `transferFrom` See https://medium.com/coinmonks/missing-return-value-bug-at-least-130-tokens-affected-d67bf08521ca\",\"methods\":{\"allowance(address,address)\":{\"params\":{\"owner\":\"The address of the account which owns the tokens to be spent\",\"spender\":\"The address of the account which may transfer tokens\"},\"return\":\"The number of tokens allowed to be spent\"},\"approve(address,uint256)\":{\"details\":\"This will overwrite the approval amount for `spender` and is subject to issues noted [here](https://eips.ethereum.org/EIPS/eip-20#approve)\",\"params\":{\"amount\":\"The number of tokens that are approved\",\"spender\":\"The address of the account which may transfer tokens\"},\"return\":\"Whether or not the approval succeeded\"},\"balanceOf(address)\":{\"params\":{\"owner\":\"The address from which the balance will be retrieved\"},\"return\":\"The balance\"},\"totalSupply()\":{\"return\":\"The supply of tokens\"},\"transfer(address,uint256)\":{\"params\":{\"amount\":\"The number of tokens to transfer\",\"dst\":\"The address of the destination account\"}},\"transferFrom(address,address,uint256)\":{\"params\":{\"amount\":\"The number of tokens to transfer\",\"dst\":\"The address of the destination account\",\"src\":\"The address of the source account\"}}},\"title\":\"EIP20NonStandardInterface\"},\"userdoc\":{\"methods\":{\"allowance(address,address)\":{\"notice\":\"Get the current allowance from `owner` for `spender`\"},\"approve(address,uint256)\":{\"notice\":\"Approve `spender` to transfer up to `amount` from `src`\"},\"balanceOf(address)\":{\"notice\":\"Gets the balance of the specified address\"},\"totalSupply()\":{\"notice\":\"Get the total number of tokens in circulation\"},\"transfer(address,uint256)\":{\"notice\":\"Transfer `amount` tokens from `msg.sender` to `dst`\"},\"transferFrom(address,address,uint256)\":{\"notice\":\"Transfer `amount` tokens from `src` to `dst`\"}}}},\"settings\":{\"compilationTarget\":{\"contracts/EIP20NonStandardInterface.sol\":\"EIP20NonStandardInterface\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/EIP20NonStandardInterface.sol\":{\"keccak256\":\"0x469899442dd9640bfc2c670d404ad3027e48df5df8e5aeab0e25cc6b6aae05f5\",\"urls\":[\"bzz-raw://d8c4498abaf539eb413a2f1a916d75945adc8bd4ef437f8450cb67e07be3f38d\",\"dweb:/ipfs/QmaFpWfnhAMYW21rbT5PEszn4TGHdGU58Eq5AfZsCuapZ3\"]}},\"version\":1}"}},"contracts/ErrorReporter.sol":{"ComptrollerErrorReporter":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"error","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"info","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"detail","type":"uint256"}],"name":"Failure","type":"event"}],"evm":{"bytecode":{"linkReferences":{},"object":"6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a723158202145350d2043d32916a49c5c4f13b246f461147dc8a750b6b17a6841348f6e1064736f6c63430005110032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3E DUP1 PUSH1 0x1D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0x21 GASLIMIT CALLDATALOAD 0xD KECCAK256 NUMBER 0xD3 0x29 AND LOG4 SWAP13 0x5C 0x4F SGT 0xB2 CHAINID DELEGATECALL PUSH2 0x147D 0xC8 0xA7 POP 0xB6 0xB1 PUSH27 0x6841348F6E1064736F6C6343000511003200000000000000000000 ","sourceMap":"25:2752:20:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25:2752:20;;;;;;;"},"deployedBytecode":{"linkReferences":{},"object":"6080604052600080fdfea265627a7a723158202145350d2043d32916a49c5c4f13b246f461147dc8a750b6b17a6841348f6e1064736f6c63430005110032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0x21 GASLIMIT CALLDATALOAD 0xD KECCAK256 NUMBER 0xD3 0x29 AND LOG4 SWAP13 0x5C 0x4F SGT 0xB2 CHAINID DELEGATECALL PUSH2 0x147D 0xC8 0xA7 POP 0xB6 0xB1 PUSH27 0x6841348F6E1064736F6C6343000511003200000000000000000000 ","sourceMap":"25:2752:20:-;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"error\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"info\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"detail\",\"type\":\"uint256\"}],\"name\":\"Failure\",\"type\":\"event\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/ErrorReporter.sol\":\"ComptrollerErrorReporter\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/ErrorReporter.sol\":{\"keccak256\":\"0xe9587478bc9efad203cab02b8aecae32828cfc9a271b13ae3c018e38e44aab32\",\"urls\":[\"bzz-raw://2eb34bdbbbc410fb401d50ddca44a7421a1d8191711c569ed5bcec1c1b07a05c\",\"dweb:/ipfs/QmYKNCYppyx3NGiwtjdLEmxUMgfnFBqT4pnvnhnBrPgrxS\"]}},\"version\":1}"},"TokenErrorReporter":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"error","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"info","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"detail","type":"uint256"}],"name":"Failure","type":"event"}],"evm":{"bytecode":{"linkReferences":{},"object":"6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a723158202b9033895ddd28fa0d26c7dd294a41c59ca48c5556c846276bacfbc5e193b6f264736f6c63430005110032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3E DUP1 PUSH1 0x1D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0x2B SWAP1 CALLER DUP10 0x5D 0xDD 0x28 STATICCALL 0xD 0x26 0xC7 0xDD 0x29 0x4A COINBASE 0xC5 SWAP13 LOG4 DUP13 SSTORE JUMP 0xC8 CHAINID 0x27 PUSH12 0xACFBC5E193B6F264736F6C63 NUMBER STOP SDIV GT STOP ORIGIN ","sourceMap":"2779:6299:20:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2779:6299:20;;;;;;;"},"deployedBytecode":{"linkReferences":{},"object":"6080604052600080fdfea265627a7a723158202b9033895ddd28fa0d26c7dd294a41c59ca48c5556c846276bacfbc5e193b6f264736f6c63430005110032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0x2B SWAP1 CALLER DUP10 0x5D 0xDD 0x28 STATICCALL 0xD 0x26 0xC7 0xDD 0x29 0x4A COINBASE 0xC5 SWAP13 LOG4 DUP13 SSTORE JUMP 0xC8 CHAINID 0x27 PUSH12 0xACFBC5E193B6F264736F6C63 NUMBER STOP SDIV GT STOP ORIGIN ","sourceMap":"2779:6299:20:-;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"error\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"info\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"detail\",\"type\":\"uint256\"}],\"name\":\"Failure\",\"type\":\"event\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/ErrorReporter.sol\":\"TokenErrorReporter\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/ErrorReporter.sol\":{\"keccak256\":\"0xe9587478bc9efad203cab02b8aecae32828cfc9a271b13ae3c018e38e44aab32\",\"urls\":[\"bzz-raw://2eb34bdbbbc410fb401d50ddca44a7421a1d8191711c569ed5bcec1c1b07a05c\",\"dweb:/ipfs/QmYKNCYppyx3NGiwtjdLEmxUMgfnFBqT4pnvnhnBrPgrxS\"]}},\"version\":1}"}},"contracts/Exponential.sol":{"Exponential":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a723158200abb1a75f2edc9dbde3dae1726a8d05461b334a88b779479036f0e023505caf764736f6c63430005110032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3E DUP1 PUSH1 0x1D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 EXP 0xBB BYTE PUSH22 0xF2EDC9DBDE3DAE1726A8D05461B334A88B779479036F 0xE MUL CALLDATALOAD SDIV 0xCA 0xF7 PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ","sourceMap":"513:6460:21:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;513:6460:21;;;;;;;"},"deployedBytecode":{"linkReferences":{},"object":"6080604052600080fdfea265627a7a723158200abb1a75f2edc9dbde3dae1726a8d05461b334a88b779479036f0e023505caf764736f6c63430005110032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 EXP 0xBB BYTE PUSH22 0xF2EDC9DBDE3DAE1726A8D05461B334A88B779479036F 0xE MUL CALLDATALOAD SDIV 0xCA 0xF7 PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ","sourceMap":"513:6460:21:-;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Compound\",\"details\":\"Legacy contract for compatibility reasons with existing contracts that still use MathError\",\"methods\":{},\"title\":\"Exponential module for storing fixed-precision decimals\"},\"userdoc\":{\"methods\":{},\"notice\":\"Exp is a struct which stores decimals with a fixed precision of 18 decimal places. Thus, if we wanted to store the 5.1, mantissa would store 5.1e18. That is: `Exp({mantissa: 5100000000000000000})`.\"}},\"settings\":{\"compilationTarget\":{\"contracts/Exponential.sol\":\"Exponential\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/CarefulMath.sol\":{\"keccak256\":\"0x1487237dbbbb73ad43c8eff16e78311753719a94a5065f574de5c91b672c56f8\",\"urls\":[\"bzz-raw://349966a236f313b2cb42e1942832e6bd7e134f65f6654e6c4d46788e65cc4a9b\",\"dweb:/ipfs/Qmebpv8i5jLR4fLgpZHQZRLu6aefVAbLC2yUk9ABEekquz\"]},\"contracts/Exponential.sol\":{\"keccak256\":\"0xfda0e2b610541cf1cf316a0000c89a1069ccc21f1566affc0a058810e2b835d3\",\"urls\":[\"bzz-raw://fe319f184f1b5f27019d3d890124cd24e466d27153ac38eb9ff6b16efbad48b9\",\"dweb:/ipfs/Qmcev6jCmtdCviJxUQvUCmesPDShRDSvdfUEfvsqd4GEJA\"]},\"contracts/ExponentialNoError.sol\":{\"keccak256\":\"0x713a089f4bbcaec1d3924fc7d9a2154904a39f46cb6f25b713167dbe5f21623e\",\"urls\":[\"bzz-raw://d7108d68af7c5effd4272615ceba54e79e585f6b8be5aabc7602245c84c7b9e0\",\"dweb:/ipfs/QmQZo2XpxW7w5viVEg71mi9eKaAYD7HUqfCMB5yCCPVnc5\"]}},\"version\":1}"}},"contracts/ExponentialNoError.sol":{"ExponentialNoError":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a72315820eaa490f7336fbaf41f22feb1166078534941d000fdc4a63d124a1961c493282364736f6c63430005110032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3E DUP1 PUSH1 0x1D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xEA LOG4 SWAP1 0xF7 CALLER PUSH16 0xBAF41F22FEB1166078534941D000FDC4 0xA6 RETURNDATASIZE SLT 0x4A NOT PUSH2 0xC493 0x28 0x23 PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ","sourceMap":"350:6226:22:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;350:6226:22;;;;;;;"},"deployedBytecode":{"linkReferences":{},"object":"6080604052600080fdfea265627a7a72315820eaa490f7336fbaf41f22feb1166078534941d000fdc4a63d124a1961c493282364736f6c63430005110032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xEA LOG4 SWAP1 0xF7 CALLER PUSH16 0xBAF41F22FEB1166078534941D000FDC4 0xA6 RETURNDATASIZE SLT 0x4A NOT PUSH2 0xC493 0x28 0x23 PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ","sourceMap":"350:6226:22:-;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Compound\",\"methods\":{},\"title\":\"Exponential module for storing fixed-precision decimals\"},\"userdoc\":{\"methods\":{},\"notice\":\"Exp is a struct which stores decimals with a fixed precision of 18 decimal places. Thus, if we wanted to store the 5.1, mantissa would store 5.1e18. That is: `Exp({mantissa: 5100000000000000000})`.\"}},\"settings\":{\"compilationTarget\":{\"contracts/ExponentialNoError.sol\":\"ExponentialNoError\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/ExponentialNoError.sol\":{\"keccak256\":\"0x713a089f4bbcaec1d3924fc7d9a2154904a39f46cb6f25b713167dbe5f21623e\",\"urls\":[\"bzz-raw://d7108d68af7c5effd4272615ceba54e79e585f6b8be5aabc7602245c84c7b9e0\",\"dweb:/ipfs/QmQZo2XpxW7w5viVEg71mi9eKaAYD7HUqfCMB5yCCPVnc5\"]}},\"version\":1}"}},"contracts/Governance/Comp.sol":{"Comp":{"abi":[{"inputs":[{"internalType":"address","name":"account","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegator","type":"address"},{"indexed":true,"internalType":"address","name":"fromDelegate","type":"address"},{"indexed":true,"internalType":"address","name":"toDelegate","type":"address"}],"name":"DelegateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegate","type":"address"},{"indexed":false,"internalType":"uint256","name":"previousBalance","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBalance","type":"uint256"}],"name":"DelegateVotesChanged","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":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"constant":true,"inputs":[],"name":"DELEGATION_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"DOMAIN_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint32","name":"","type":"uint32"}],"name":"checkpoints","outputs":[{"internalType":"uint32","name":"fromBlock","type":"uint32"},{"internalType":"uint96","name":"votes","type":"uint96"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"delegatee","type":"address"}],"name":"delegate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"delegatee","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"delegateBySig","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"delegates","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getCurrentVotes","outputs":[{"internalType":"uint96","name":"","type":"uint96"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPriorVotes","outputs":[{"internalType":"uint96","name":"","type":"uint96"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"numCheckpoints","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"src","type":"address"},{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60806040523480156200001157600080fd5b5060405162001bd038038062001bd08339810160408190526200003491620000bc565b6001600160a01b03811660008181526001602052604080822080546001600160601b0319166a084595161401484a00000090811790915590517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef916200009a91620000f6565b60405180910390a35062000135565b8051620000b6816200011b565b92915050565b600060208284031215620000cf57600080fd5b6000620000dd8484620000a9565b949350505050565b620000f08162000118565b82525050565b60208101620000b68284620000e5565b60006001600160a01b038216620000b6565b90565b620001268162000106565b81146200013257600080fd5b50565b611a8b80620001456000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c806370a08231116100ad578063b4b5ea5711610071578063b4b5ea571461025f578063c3cda52014610272578063dd62ed3e14610285578063e7a324dc14610298578063f1127ed8146102a057610121565b806370a08231146101fe578063782d6fe1146102115780637ecebe001461023157806395d89b4114610244578063a9059cbb1461024c57610121565b806323b872dd116100f457806323b872dd14610181578063313ce56714610194578063587cde1e146101a95780635c19a95c146101c95780636fcfff45146101de57610121565b806306fdde0314610126578063095ea7b31461014457806318160ddd1461016457806320606b7014610179575b600080fd5b61012e6102c1565b60405161013b919061173c565b60405180910390f35b610157610152366004611205565b6102e5565b60405161013b9190611692565b61016c6103a2565b60405161013b91906116a0565b61016c6103b1565b61015761018f3660046111b8565b6103c8565b61019c61050d565b60405161013b91906117d6565b6101bc6101b7366004611158565b610512565b60405161013b9190611684565b6101dc6101d7366004611158565b61052d565b005b6101f16101ec366004611158565b61053a565b60405161013b91906117ad565b61016c61020c366004611158565b610552565b61022461021f366004611205565b610576565b60405161013b91906117f2565b61016c61023f366004611158565b61078d565b61012e61079f565b61015761025a366004611205565b6107bf565b61022461026d366004611158565b6107fb565b6101dc610280366004611235565b61086b565b61016c61029336600461117e565b610a55565b61016c610a87565b6102b36102ae3660046112bc565b610a93565b60405161013b9291906117bb565b6040518060400160405280600881526020016710dbdb5c1bdd5b9960c21b81525081565b6000806000198314156102fb5750600019610320565b61031d8360405180606001604052806025815260200161190e60259139610ac8565b90505b336000818152602081815260408083206001600160a01b03891680855292529182902080546001600160601b0319166001600160601b03861617905590519091907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061038e9085906117e4565b60405180910390a360019150505b92915050565b6a084595161401484a00000081565b6040516103bd9061166e565b604051809103902081565b6001600160a01b0383166000908152602081815260408083203380855290835281842054825160608101909352602580845291936001600160601b0390911692859261041e928892919061190e90830139610ac8565b9050866001600160a01b0316836001600160a01b03161415801561044b57506001600160601b0382811614155b156104f357600061047583836040518060600160405280603d81526020016119e5603d9139610af7565b6001600160a01b03898116600081815260208181526040808320948a16808452949091529081902080546001600160601b0319166001600160601b0386161790555192935090917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906104e99085906117e4565b60405180910390a3505b6104fe878783610b36565b600193505050505b9392505050565b601281565b6002602052600090815260409020546001600160a01b031681565b6105373382610ce1565b50565b60046020526000908152604090205463ffffffff1681565b6001600160a01b03166000908152600160205260409020546001600160601b031690565b60004382106105a05760405162461bcd60e51b81526004016105979061176d565b60405180910390fd5b6001600160a01b03831660009081526004602052604090205463ffffffff16806105ce57600091505061039c565b6001600160a01b038416600090815260036020908152604080832063ffffffff60001986018116855292529091205416831061064a576001600160a01b03841660009081526003602090815260408083206000199490940163ffffffff1683529290522054600160201b90046001600160601b0316905061039c565b6001600160a01b038416600090815260036020908152604080832083805290915290205463ffffffff1683101561068557600091505061039c565b600060001982015b8163ffffffff168163ffffffff16111561074857600282820363ffffffff160481036106b7611115565b506001600160a01b038716600090815260036020908152604080832063ffffffff858116855290835292819020815180830190925254928316808252600160201b9093046001600160601b031691810191909152908714156107235760200151945061039c9350505050565b805163ffffffff1687111561073a57819350610741565b6001820392505b505061068d565b506001600160a01b038516600090815260036020908152604080832063ffffffff909416835292905220546001600160601b03600160201b9091041691505092915050565b60056020526000908152604090205481565b604051806040016040528060048152602001630434f4d560e41b81525081565b6000806107e48360405180606001604052806026815260200161193360269139610ac8565b90506107f1338583610b36565b5060019392505050565b6001600160a01b03811660009081526004602052604081205463ffffffff1680610826576000610506565b6001600160a01b0383166000908152600360209081526040808320600019850163ffffffff168452909152902054600160201b90046001600160601b03169392505050565b60006040516108799061166e565b60408051918290038220828201909152600882526710dbdb5c1bdd5b9960c21b6020909201919091527f561ca898cce9f021c15a441ef41899706e923541cee724530075d1a1144761c76108cb610d6b565b306040516020016108df94939291906116ec565b604051602081830303815290604052805190602001209050600060405161090590611679565b604051908190038120610920918a908a908a906020016116ae565b6040516020818303038152906040528051906020012090506000828260405160200161094d92919061163d565b60405160208183030381529060405280519060200120905060006001828888886040516000815260200160405260405161098a9493929190611721565b6020604051602081039080840390855afa1580156109ac573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166109df5760405162461bcd60e51b81526004016105979061174d565b6001600160a01b03811660009081526005602052604090208054600181019091558914610a1e5760405162461bcd60e51b81526004016105979061177d565b87421115610a3e5760405162461bcd60e51b81526004016105979061175d565b610a48818b610ce1565b505050505b505050505050565b6001600160a01b039182166000908152602081815260408083209390941682529190915220546001600160601b031690565b6040516103bd90611679565b600360209081526000928352604080842090915290825290205463ffffffff811690600160201b90046001600160601b031682565b600081600160601b8410610aef5760405162461bcd60e51b8152600401610597919061173c565b509192915050565b6000836001600160601b0316836001600160601b031611158290610b2e5760405162461bcd60e51b8152600401610597919061173c565b505050900390565b6001600160a01b038316610b5c5760405162461bcd60e51b81526004016105979061179d565b6001600160a01b038216610b825760405162461bcd60e51b81526004016105979061178d565b6001600160a01b038316600090815260016020908152604091829020548251606081019093526036808452610bcd936001600160601b0390921692859291906118d890830139610af7565b6001600160a01b03848116600090815260016020908152604080832080546001600160601b0319166001600160601b03968716179055928616825290829020548251606081019093526030808452610c3594919091169285929091906119b590830139610d6f565b6001600160a01b038381166000818152600160205260409081902080546001600160601b0319166001600160601b0395909516949094179093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610ca29085906117e4565b60405180910390a36001600160a01b03808416600090815260026020526040808220548584168352912054610cdc92918216911683610dab565b505050565b6001600160a01b03808316600081815260026020818152604080842080546001845282862054949093528787166001600160a01b031984168117909155905191909516946001600160601b039092169391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4610d65828483610dab565b50505050565b4690565b6000838301826001600160601b038087169083161015610da25760405162461bcd60e51b8152600401610597919061173c565b50949350505050565b816001600160a01b0316836001600160a01b031614158015610dd657506000816001600160601b0316115b15610cdc576001600160a01b03831615610e8e576001600160a01b03831660009081526004602052604081205463ffffffff169081610e16576000610e55565b6001600160a01b0385166000908152600360209081526040808320600019860163ffffffff168452909152902054600160201b90046001600160601b03165b90506000610e7c828560405180606001604052806028815260200161198d60289139610af7565b9050610e8a86848484610f39565b5050505b6001600160a01b03821615610cdc576001600160a01b03821660009081526004602052604081205463ffffffff169081610ec9576000610f08565b6001600160a01b0384166000908152600360209081526040808320600019860163ffffffff168452909152902054600160201b90046001600160601b03165b90506000610f2f8285604051806060016040528060278152602001611a2260279139610d6f565b9050610a4d858484845b6000610f5d43604051806060016040528060348152602001611959603491396110ee565b905060008463ffffffff16118015610fa657506001600160a01b038516600090815260036020908152604080832063ffffffff6000198901811685529252909120548282169116145b15611005576001600160a01b0385166000908152600360209081526040808320600019880163ffffffff168452909152902080546fffffffffffffffffffffffff000000001916600160201b6001600160601b038516021790556110a4565b60408051808201825263ffffffff80841682526001600160601b0380861660208085019182526001600160a01b038b166000818152600383528781208c871682528352878120965187549451909516600160201b026fffffffffffffffffffffffff000000001995871663ffffffff19958616179590951694909417909555938252600490935292909220805460018801909316929091169190911790555b846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72484846040516110df929190611800565b60405180910390a25050505050565b600081600160201b8410610aef5760405162461bcd60e51b8152600401610597919061173c565b604080518082019091526000808252602082015290565b803561039c816118a8565b803561039c816118bc565b803561039c816118c5565b803561039c816118ce565b60006020828403121561116a57600080fd5b6000611176848461112c565b949350505050565b6000806040838503121561119157600080fd5b600061119d858561112c565b92505060206111ae8582860161112c565b9150509250929050565b6000806000606084860312156111cd57600080fd5b60006111d9868661112c565b93505060206111ea8682870161112c565b92505060406111fb86828701611137565b9150509250925092565b6000806040838503121561121857600080fd5b6000611224858561112c565b92505060206111ae85828601611137565b60008060008060008060c0878903121561124e57600080fd5b600061125a898961112c565b965050602061126b89828a01611137565b955050604061127c89828a01611137565b945050606061128d89828a0161114d565b935050608061129e89828a01611137565b92505060a06112af89828a01611137565b9150509295509295509295565b600080604083850312156112cf57600080fd5b60006112db858561112c565b92505060206111ae85828601611142565b6112f58161182d565b82525050565b6112f581611838565b6112f58161183d565b6112f56113198261183d565b61183d565b60006113298261181b565b611333818561181f565b9350611343818560208601611872565b61134c8161189e565b9093019392505050565b600061136360268361181f565b7f436f6d703a3a64656c656761746542795369673a20696e76616c6964207369678152656e617475726560d01b602082015260400192915050565b60006113ab60268361181f565b7f436f6d703a3a64656c656761746542795369673a207369676e617475726520658152651e1c1a5c995960d21b602082015260400192915050565b60006113f3600283611828565b61190160f01b815260020192915050565b600061141160278361181f565b7f436f6d703a3a6765745072696f72566f7465733a206e6f742079657420646574815266195c9b5a5b995960ca1b602082015260400192915050565b600061145a60228361181f565b7f436f6d703a3a64656c656761746542795369673a20696e76616c6964206e6f6e815261636560f01b602082015260400192915050565b600061149e603a8361181f565b7f436f6d703a3a5f7472616e73666572546f6b656e733a2063616e6e6f7420747281527f616e7366657220746f20746865207a65726f2061646472657373000000000000602082015260400192915050565b60006114fd604383611828565b7f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353681527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208201526263742960e81b604082015260430192915050565b6000611568603c8361181f565b7f436f6d703a3a5f7472616e73666572546f6b656e733a2063616e6e6f7420747281527f616e736665722066726f6d20746865207a65726f206164647265737300000000602082015260400192915050565b60006115c7603a83611828565b7f44656c65676174696f6e28616464726573732064656c6567617465652c75696e81527f74323536206e6f6e63652c75696e7432353620657870697279290000000000006020820152603a0192915050565b6112f58161184c565b6112f581611855565b6112f581611867565b6112f58161185b565b6000611648826113e6565b9150611654828561130d565b602082019150611664828461130d565b5060200192915050565b600061039c826114f0565b600061039c826115ba565b6020810161039c82846112ec565b6020810161039c82846112fb565b6020810161039c8284611304565b608081016116bc8287611304565b6116c960208301866112ec565b6116d66040830185611304565b6116e36060830184611304565b95945050505050565b608081016116fa8287611304565b6117076020830186611304565b6117146040830185611304565b6116e360608301846112ec565b6080810161172f8287611304565b6116c96020830186611622565b60208082528101610506818461131e565b6020808252810161039c81611356565b6020808252810161039c8161139e565b6020808252810161039c81611404565b6020808252810161039c8161144d565b6020808252810161039c81611491565b6020808252810161039c8161155b565b6020810161039c8284611619565b604081016117c98285611619565b6105066020830184611634565b6020810161039c8284611622565b6020810161039c828461162b565b6020810161039c8284611634565b6040810161180e828561162b565b610506602083018461162b565b5190565b90815260200190565b919050565b600061039c82611840565b151590565b90565b6001600160a01b031690565b63ffffffff1690565b60ff1690565b6001600160601b031690565b600061039c8261185b565b60005b8381101561188d578181015183820152602001611875565b83811115610d655750506000910152565b601f01601f191690565b6118b18161182d565b811461053757600080fd5b6118b18161183d565b6118b18161184c565b6118b18161185556fe436f6d703a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e7420657863656564732062616c616e6365436f6d703a3a617070726f76653a20616d6f756e7420657863656564732039362062697473436f6d703a3a7472616e736665723a20616d6f756e7420657863656564732039362062697473436f6d703a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d62657220657863656564732033322062697473436f6d703a3a5f6d6f7665566f7465733a20766f746520616d6f756e7420756e646572666c6f7773436f6d703a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e74206f766572666c6f7773436f6d703a3a7472616e7366657246726f6d3a207472616e7366657220616d6f756e742065786365656473207370656e64657220616c6c6f77616e6365436f6d703a3a5f6d6f7665566f7465733a20766f746520616d6f756e74206f766572666c6f7773a365627a7a72315820d670c129560336800ad8845f62512beb1709abbf1843e14f3054993a627a0ac86c6578706572696d656e74616cf564736f6c63430005110040","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1BD0 CODESIZE SUB DUP1 PUSH3 0x1BD0 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0xBC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH11 0x84595161401484A000000 SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 PUSH3 0x9A SWAP2 PUSH3 0xF6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH3 0x135 JUMP JUMPDEST DUP1 MLOAD PUSH3 0xB6 DUP2 PUSH3 0x11B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0xCF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0xDD DUP5 DUP5 PUSH3 0xA9 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH3 0xF0 DUP2 PUSH3 0x118 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH3 0xB6 DUP3 DUP5 PUSH3 0xE5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH3 0xB6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH3 0x126 DUP2 PUSH3 0x106 JUMP JUMPDEST DUP2 EQ PUSH3 0x132 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x1A8B DUP1 PUSH3 0x145 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 0x121 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0xAD JUMPI DUP1 PUSH4 0xB4B5EA57 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xB4B5EA57 EQ PUSH2 0x25F JUMPI DUP1 PUSH4 0xC3CDA520 EQ PUSH2 0x272 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x285 JUMPI DUP1 PUSH4 0xE7A324DC EQ PUSH2 0x298 JUMPI DUP1 PUSH4 0xF1127ED8 EQ PUSH2 0x2A0 JUMPI PUSH2 0x121 JUMP JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x1FE JUMPI DUP1 PUSH4 0x782D6FE1 EQ PUSH2 0x211 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x231 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x244 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x24C JUMPI PUSH2 0x121 JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0xF4 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x181 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x194 JUMPI DUP1 PUSH4 0x587CDE1E EQ PUSH2 0x1A9 JUMPI DUP1 PUSH4 0x5C19A95C EQ PUSH2 0x1C9 JUMPI DUP1 PUSH4 0x6FCFFF45 EQ PUSH2 0x1DE JUMPI PUSH2 0x121 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x126 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x144 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x164 JUMPI DUP1 PUSH4 0x20606B70 EQ PUSH2 0x179 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x12E PUSH2 0x2C1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x13B SWAP2 SWAP1 PUSH2 0x173C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x157 PUSH2 0x152 CALLDATASIZE PUSH1 0x4 PUSH2 0x1205 JUMP JUMPDEST PUSH2 0x2E5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x13B SWAP2 SWAP1 PUSH2 0x1692 JUMP JUMPDEST PUSH2 0x16C PUSH2 0x3A2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x13B SWAP2 SWAP1 PUSH2 0x16A0 JUMP JUMPDEST PUSH2 0x16C PUSH2 0x3B1 JUMP JUMPDEST PUSH2 0x157 PUSH2 0x18F CALLDATASIZE PUSH1 0x4 PUSH2 0x11B8 JUMP JUMPDEST PUSH2 0x3C8 JUMP JUMPDEST PUSH2 0x19C PUSH2 0x50D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x13B SWAP2 SWAP1 PUSH2 0x17D6 JUMP JUMPDEST PUSH2 0x1BC PUSH2 0x1B7 CALLDATASIZE PUSH1 0x4 PUSH2 0x1158 JUMP JUMPDEST PUSH2 0x512 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x13B SWAP2 SWAP1 PUSH2 0x1684 JUMP JUMPDEST PUSH2 0x1DC PUSH2 0x1D7 CALLDATASIZE PUSH1 0x4 PUSH2 0x1158 JUMP JUMPDEST PUSH2 0x52D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1F1 PUSH2 0x1EC CALLDATASIZE PUSH1 0x4 PUSH2 0x1158 JUMP JUMPDEST PUSH2 0x53A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x13B SWAP2 SWAP1 PUSH2 0x17AD JUMP JUMPDEST PUSH2 0x16C PUSH2 0x20C CALLDATASIZE PUSH1 0x4 PUSH2 0x1158 JUMP JUMPDEST PUSH2 0x552 JUMP JUMPDEST PUSH2 0x224 PUSH2 0x21F CALLDATASIZE PUSH1 0x4 PUSH2 0x1205 JUMP JUMPDEST PUSH2 0x576 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x13B SWAP2 SWAP1 PUSH2 0x17F2 JUMP JUMPDEST PUSH2 0x16C PUSH2 0x23F CALLDATASIZE PUSH1 0x4 PUSH2 0x1158 JUMP JUMPDEST PUSH2 0x78D JUMP JUMPDEST PUSH2 0x12E PUSH2 0x79F JUMP JUMPDEST PUSH2 0x157 PUSH2 0x25A CALLDATASIZE PUSH1 0x4 PUSH2 0x1205 JUMP JUMPDEST PUSH2 0x7BF JUMP JUMPDEST PUSH2 0x224 PUSH2 0x26D CALLDATASIZE PUSH1 0x4 PUSH2 0x1158 JUMP JUMPDEST PUSH2 0x7FB JUMP JUMPDEST PUSH2 0x1DC PUSH2 0x280 CALLDATASIZE PUSH1 0x4 PUSH2 0x1235 JUMP JUMPDEST PUSH2 0x86B JUMP JUMPDEST PUSH2 0x16C PUSH2 0x293 CALLDATASIZE PUSH1 0x4 PUSH2 0x117E JUMP JUMPDEST PUSH2 0xA55 JUMP JUMPDEST PUSH2 0x16C PUSH2 0xA87 JUMP JUMPDEST PUSH2 0x2B3 PUSH2 0x2AE CALLDATASIZE PUSH1 0x4 PUSH2 0x12BC JUMP JUMPDEST PUSH2 0xA93 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x13B SWAP3 SWAP2 SWAP1 PUSH2 0x17BB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x8 DUP2 MSTORE PUSH1 0x20 ADD PUSH8 0x10DBDB5C1BDD5B99 PUSH1 0xC2 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 NOT DUP4 EQ ISZERO PUSH2 0x2FB JUMPI POP PUSH1 0x0 NOT PUSH2 0x320 JUMP JUMPDEST PUSH2 0x31D DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x190E PUSH1 0x25 SWAP2 CODECOPY PUSH2 0xAC8 JUMP JUMPDEST SWAP1 POP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP7 AND OR SWAP1 SSTORE SWAP1 MLOAD SWAP1 SWAP2 SWAP1 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP1 PUSH2 0x38E SWAP1 DUP6 SWAP1 PUSH2 0x17E4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH11 0x84595161401484A000000 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3BD SWAP1 PUSH2 0x166E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 SLOAD DUP3 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP4 MSTORE PUSH1 0x25 DUP1 DUP5 MSTORE SWAP2 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 SWAP2 AND SWAP3 DUP6 SWAP3 PUSH2 0x41E SWAP3 DUP9 SWAP3 SWAP2 SWAP1 PUSH2 0x190E SWAP1 DUP4 ADD CODECOPY PUSH2 0xAC8 JUMP JUMPDEST SWAP1 POP DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO DUP1 ISZERO PUSH2 0x44B JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP3 DUP2 AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x4F3 JUMPI PUSH1 0x0 PUSH2 0x475 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3D DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x19E5 PUSH1 0x3D SWAP2 CODECOPY PUSH2 0xAF7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP11 AND DUP1 DUP5 MSTORE SWAP5 SWAP1 SWAP2 MSTORE SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP7 AND OR SWAP1 SSTORE MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP1 PUSH2 0x4E9 SWAP1 DUP6 SWAP1 PUSH2 0x17E4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP JUMPDEST PUSH2 0x4FE DUP8 DUP8 DUP4 PUSH2 0xB36 JUMP JUMPDEST PUSH1 0x1 SWAP4 POP POP POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x537 CALLER DUP3 PUSH2 0xCE1 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 NUMBER DUP3 LT PUSH2 0x5A0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x597 SWAP1 PUSH2 0x176D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP1 PUSH2 0x5CE JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x39C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH1 0x0 NOT DUP7 ADD DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD AND DUP4 LT PUSH2 0x64A JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x0 NOT SWAP5 SWAP1 SWAP5 ADD PUSH4 0xFFFFFFFF AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 POP PUSH2 0x39C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP4 DUP1 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP4 LT ISZERO PUSH2 0x685 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x39C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 ADD JUMPDEST DUP2 PUSH4 0xFFFFFFFF AND DUP2 PUSH4 0xFFFFFFFF AND GT ISZERO PUSH2 0x748 JUMPI PUSH1 0x2 DUP3 DUP3 SUB PUSH4 0xFFFFFFFF AND DIV DUP2 SUB PUSH2 0x6B7 PUSH2 0x1115 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF DUP6 DUP2 AND DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP2 MLOAD DUP1 DUP4 ADD SWAP1 SWAP3 MSTORE SLOAD SWAP3 DUP4 AND DUP1 DUP3 MSTORE PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP4 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 DUP8 EQ ISZERO PUSH2 0x723 JUMPI PUSH1 0x20 ADD MLOAD SWAP5 POP PUSH2 0x39C SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH4 0xFFFFFFFF AND DUP8 GT ISZERO PUSH2 0x73A JUMPI DUP2 SWAP4 POP PUSH2 0x741 JUMP JUMPDEST PUSH1 0x1 DUP3 SUB SWAP3 POP JUMPDEST POP POP PUSH2 0x68D JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF SWAP1 SWAP5 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP2 DIV AND SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4 DUP2 MSTORE PUSH1 0x20 ADD PUSH4 0x434F4D5 PUSH1 0xE4 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x7E4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1933 PUSH1 0x26 SWAP2 CODECOPY PUSH2 0xAC8 JUMP JUMPDEST SWAP1 POP PUSH2 0x7F1 CALLER DUP6 DUP4 PUSH2 0xB36 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP1 PUSH2 0x826 JUMPI PUSH1 0x0 PUSH2 0x506 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x0 NOT DUP6 ADD PUSH4 0xFFFFFFFF AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0x879 SWAP1 PUSH2 0x166E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB DUP3 KECCAK256 DUP3 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x8 DUP3 MSTORE PUSH8 0x10DBDB5C1BDD5B99 PUSH1 0xC2 SHL PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x561CA898CCE9F021C15A441EF41899706E923541CEE724530075D1A1144761C7 PUSH2 0x8CB PUSH2 0xD6B JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x8DF SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x16EC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0x905 SWAP1 PUSH2 0x1679 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB DUP2 KECCAK256 PUSH2 0x920 SWAP2 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 PUSH1 0x20 ADD PUSH2 0x16AE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x94D SWAP3 SWAP2 SWAP1 PUSH2 0x163D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP3 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x98A SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1721 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9AC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x9DF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x597 SWAP1 PUSH2 0x174D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 ADD SWAP1 SWAP2 SSTORE DUP10 EQ PUSH2 0xA1E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x597 SWAP1 PUSH2 0x177D JUMP JUMPDEST DUP8 TIMESTAMP GT ISZERO PUSH2 0xA3E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x597 SWAP1 PUSH2 0x175D JUMP JUMPDEST PUSH2 0xA48 DUP2 DUP12 PUSH2 0xCE1 JUMP JUMPDEST POP POP POP POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3BD SWAP1 PUSH2 0x1679 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF DUP2 AND SWAP1 PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP3 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x60 SHL DUP5 LT PUSH2 0xAEF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x597 SWAP2 SWAP1 PUSH2 0x173C JUMP JUMPDEST POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND GT ISZERO DUP3 SWAP1 PUSH2 0xB2E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x597 SWAP2 SWAP1 PUSH2 0x173C JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xB5C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x597 SWAP1 PUSH2 0x179D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xB82 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x597 SWAP1 PUSH2 0x178D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD DUP3 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP4 MSTORE PUSH1 0x36 DUP1 DUP5 MSTORE PUSH2 0xBCD SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 SWAP3 AND SWAP3 DUP6 SWAP3 SWAP2 SWAP1 PUSH2 0x18D8 SWAP1 DUP4 ADD CODECOPY PUSH2 0xAF7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP7 DUP8 AND OR SWAP1 SSTORE SWAP3 DUP7 AND DUP3 MSTORE SWAP1 DUP3 SWAP1 KECCAK256 SLOAD DUP3 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP4 MSTORE PUSH1 0x30 DUP1 DUP5 MSTORE PUSH2 0xC35 SWAP5 SWAP2 SWAP1 SWAP2 AND SWAP3 DUP6 SWAP3 SWAP1 SWAP2 SWAP1 PUSH2 0x19B5 SWAP1 DUP4 ADD CODECOPY PUSH2 0xD6F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP6 SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR SWAP1 SWAP4 SSTORE SWAP2 MLOAD SWAP1 DUP6 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0xCA2 SWAP1 DUP6 SWAP1 PUSH2 0x17E4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SLOAD DUP6 DUP5 AND DUP4 MSTORE SWAP2 KECCAK256 SLOAD PUSH2 0xCDC SWAP3 SWAP2 DUP3 AND SWAP2 AND DUP4 PUSH2 0xDAB JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP5 MSTORE DUP3 DUP7 KECCAK256 SLOAD SWAP5 SWAP1 SWAP4 MSTORE DUP8 DUP8 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP5 AND DUP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD SWAP2 SWAP1 SWAP6 AND SWAP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 SWAP3 AND SWAP4 SWAP2 SWAP3 DUP6 SWAP3 SWAP2 PUSH32 0x3134E8A2E6D97E929A7E54011EA5485D7D196DD5F0BA4D4EF95803E8E3FC257F SWAP2 SWAP1 LOG4 PUSH2 0xD65 DUP3 DUP5 DUP4 PUSH2 0xDAB JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP1 DUP8 AND SWAP1 DUP4 AND LT ISZERO PUSH2 0xDA2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x597 SWAP2 SWAP1 PUSH2 0x173C JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO DUP1 ISZERO PUSH2 0xDD6 JUMPI POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND GT JUMPDEST ISZERO PUSH2 0xCDC JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO PUSH2 0xE8E JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND SWAP1 DUP2 PUSH2 0xE16 JUMPI PUSH1 0x0 PUSH2 0xE55 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x0 NOT DUP7 ADD PUSH4 0xFFFFFFFF AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xE7C DUP3 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x198D PUSH1 0x28 SWAP2 CODECOPY PUSH2 0xAF7 JUMP JUMPDEST SWAP1 POP PUSH2 0xE8A DUP7 DUP5 DUP5 DUP5 PUSH2 0xF39 JUMP JUMPDEST POP POP POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ISZERO PUSH2 0xCDC JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND SWAP1 DUP2 PUSH2 0xEC9 JUMPI PUSH1 0x0 PUSH2 0xF08 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x0 NOT DUP7 ADD PUSH4 0xFFFFFFFF AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xF2F DUP3 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1A22 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xD6F JUMP JUMPDEST SWAP1 POP PUSH2 0xA4D DUP6 DUP5 DUP5 DUP5 JUMPDEST PUSH1 0x0 PUSH2 0xF5D NUMBER PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1959 PUSH1 0x34 SWAP2 CODECOPY PUSH2 0x10EE JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP5 PUSH4 0xFFFFFFFF AND GT DUP1 ISZERO PUSH2 0xFA6 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH1 0x0 NOT DUP10 ADD DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD DUP3 DUP3 AND SWAP2 AND EQ JUMPDEST ISZERO PUSH2 0x1005 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x0 NOT DUP9 ADD PUSH4 0xFFFFFFFF AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFF00000000 NOT AND PUSH1 0x1 PUSH1 0x20 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP6 AND MUL OR SWAP1 SSTORE PUSH2 0x10A4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH4 0xFFFFFFFF DUP1 DUP5 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP1 DUP7 AND PUSH1 0x20 DUP1 DUP6 ADD SWAP2 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 DUP4 MSTORE DUP8 DUP2 KECCAK256 DUP13 DUP8 AND DUP3 MSTORE DUP4 MSTORE DUP8 DUP2 KECCAK256 SWAP7 MLOAD DUP8 SLOAD SWAP5 MLOAD SWAP1 SWAP6 AND PUSH1 0x1 PUSH1 0x20 SHL MUL PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFF00000000 NOT SWAP6 DUP8 AND PUSH4 0xFFFFFFFF NOT SWAP6 DUP7 AND OR SWAP6 SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR SWAP1 SWAP6 SSTORE SWAP4 DUP3 MSTORE PUSH1 0x4 SWAP1 SWAP4 MSTORE SWAP3 SWAP1 SWAP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP9 ADD SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDEC2BACDD2F05B59DE34DA9B523DFF8BE42E5E38E818C82FDB0BAE774387A724 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH2 0x10DF SWAP3 SWAP2 SWAP1 PUSH2 0x1800 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x20 SHL DUP5 LT PUSH2 0xAEF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x597 SWAP2 SWAP1 PUSH2 0x173C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x39C DUP2 PUSH2 0x18A8 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x39C DUP2 PUSH2 0x18BC JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x39C DUP2 PUSH2 0x18C5 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x39C DUP2 PUSH2 0x18CE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x116A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1176 DUP5 DUP5 PUSH2 0x112C JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1191 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x119D DUP6 DUP6 PUSH2 0x112C JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x11AE DUP6 DUP3 DUP7 ADD PUSH2 0x112C JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x11CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x11D9 DUP7 DUP7 PUSH2 0x112C JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x11EA DUP7 DUP3 DUP8 ADD PUSH2 0x112C JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x11FB DUP7 DUP3 DUP8 ADD PUSH2 0x1137 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1218 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1224 DUP6 DUP6 PUSH2 0x112C JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x11AE DUP6 DUP3 DUP7 ADD PUSH2 0x1137 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x124E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x125A DUP10 DUP10 PUSH2 0x112C JUMP JUMPDEST SWAP7 POP POP PUSH1 0x20 PUSH2 0x126B DUP10 DUP3 DUP11 ADD PUSH2 0x1137 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x40 PUSH2 0x127C DUP10 DUP3 DUP11 ADD PUSH2 0x1137 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x60 PUSH2 0x128D DUP10 DUP3 DUP11 ADD PUSH2 0x114D JUMP JUMPDEST SWAP4 POP POP PUSH1 0x80 PUSH2 0x129E DUP10 DUP3 DUP11 ADD PUSH2 0x1137 JUMP JUMPDEST SWAP3 POP POP PUSH1 0xA0 PUSH2 0x12AF DUP10 DUP3 DUP11 ADD PUSH2 0x1137 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x12CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x12DB DUP6 DUP6 PUSH2 0x112C JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x11AE DUP6 DUP3 DUP7 ADD PUSH2 0x1142 JUMP JUMPDEST PUSH2 0x12F5 DUP2 PUSH2 0x182D JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x12F5 DUP2 PUSH2 0x1838 JUMP JUMPDEST PUSH2 0x12F5 DUP2 PUSH2 0x183D JUMP JUMPDEST PUSH2 0x12F5 PUSH2 0x1319 DUP3 PUSH2 0x183D JUMP JUMPDEST PUSH2 0x183D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1329 DUP3 PUSH2 0x181B JUMP JUMPDEST PUSH2 0x1333 DUP2 DUP6 PUSH2 0x181F JUMP JUMPDEST SWAP4 POP PUSH2 0x1343 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x1872 JUMP JUMPDEST PUSH2 0x134C DUP2 PUSH2 0x189E JUMP JUMPDEST SWAP1 SWAP4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1363 PUSH1 0x26 DUP4 PUSH2 0x181F JUMP JUMPDEST PUSH32 0x436F6D703A3A64656C656761746542795369673A20696E76616C696420736967 DUP2 MSTORE PUSH6 0x6E6174757265 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x13AB PUSH1 0x26 DUP4 PUSH2 0x181F JUMP JUMPDEST PUSH32 0x436F6D703A3A64656C656761746542795369673A207369676E61747572652065 DUP2 MSTORE PUSH6 0x1E1C1A5C9959 PUSH1 0xD2 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x13F3 PUSH1 0x2 DUP4 PUSH2 0x1828 JUMP JUMPDEST PUSH2 0x1901 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1411 PUSH1 0x27 DUP4 PUSH2 0x181F JUMP JUMPDEST PUSH32 0x436F6D703A3A6765745072696F72566F7465733A206E6F742079657420646574 DUP2 MSTORE PUSH7 0x195C9B5A5B9959 PUSH1 0xCA SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x145A PUSH1 0x22 DUP4 PUSH2 0x181F JUMP JUMPDEST PUSH32 0x436F6D703A3A64656C656761746542795369673A20696E76616C6964206E6F6E DUP2 MSTORE PUSH2 0x6365 PUSH1 0xF0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x149E PUSH1 0x3A DUP4 PUSH2 0x181F JUMP JUMPDEST PUSH32 0x436F6D703A3A5F7472616E73666572546F6B656E733A2063616E6E6F74207472 DUP2 MSTORE PUSH32 0x616E7366657220746F20746865207A65726F2061646472657373000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14FD PUSH1 0x43 DUP4 PUSH2 0x1828 JUMP JUMPDEST PUSH32 0x454950373132446F6D61696E28737472696E67206E616D652C75696E74323536 DUP2 MSTORE PUSH32 0x20636861696E49642C6164647265737320766572696679696E67436F6E747261 PUSH1 0x20 DUP3 ADD MSTORE PUSH3 0x637429 PUSH1 0xE8 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x43 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1568 PUSH1 0x3C DUP4 PUSH2 0x181F JUMP JUMPDEST PUSH32 0x436F6D703A3A5F7472616E73666572546F6B656E733A2063616E6E6F74207472 DUP2 MSTORE PUSH32 0x616E736665722066726F6D20746865207A65726F206164647265737300000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x15C7 PUSH1 0x3A DUP4 PUSH2 0x1828 JUMP JUMPDEST PUSH32 0x44656C65676174696F6E28616464726573732064656C6567617465652C75696E DUP2 MSTORE PUSH32 0x74323536206E6F6E63652C75696E743235362065787069727929000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x3A ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x12F5 DUP2 PUSH2 0x184C JUMP JUMPDEST PUSH2 0x12F5 DUP2 PUSH2 0x1855 JUMP JUMPDEST PUSH2 0x12F5 DUP2 PUSH2 0x1867 JUMP JUMPDEST PUSH2 0x12F5 DUP2 PUSH2 0x185B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1648 DUP3 PUSH2 0x13E6 JUMP JUMPDEST SWAP2 POP PUSH2 0x1654 DUP3 DUP6 PUSH2 0x130D JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH2 0x1664 DUP3 DUP5 PUSH2 0x130D JUMP JUMPDEST POP PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x39C DUP3 PUSH2 0x14F0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x39C DUP3 PUSH2 0x15BA JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x39C DUP3 DUP5 PUSH2 0x12EC JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x39C DUP3 DUP5 PUSH2 0x12FB JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x39C DUP3 DUP5 PUSH2 0x1304 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x16BC DUP3 DUP8 PUSH2 0x1304 JUMP JUMPDEST PUSH2 0x16C9 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x12EC JUMP JUMPDEST PUSH2 0x16D6 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x1304 JUMP JUMPDEST PUSH2 0x16E3 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x1304 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x16FA DUP3 DUP8 PUSH2 0x1304 JUMP JUMPDEST PUSH2 0x1707 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x1304 JUMP JUMPDEST PUSH2 0x1714 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x1304 JUMP JUMPDEST PUSH2 0x16E3 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x12EC JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x172F DUP3 DUP8 PUSH2 0x1304 JUMP JUMPDEST PUSH2 0x16C9 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x1622 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x506 DUP2 DUP5 PUSH2 0x131E JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x39C DUP2 PUSH2 0x1356 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x39C DUP2 PUSH2 0x139E JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x39C DUP2 PUSH2 0x1404 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x39C DUP2 PUSH2 0x144D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x39C DUP2 PUSH2 0x1491 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x39C DUP2 PUSH2 0x155B JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x39C DUP3 DUP5 PUSH2 0x1619 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x17C9 DUP3 DUP6 PUSH2 0x1619 JUMP JUMPDEST PUSH2 0x506 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1634 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x39C DUP3 DUP5 PUSH2 0x1622 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x39C DUP3 DUP5 PUSH2 0x162B JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x39C DUP3 DUP5 PUSH2 0x1634 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x180E DUP3 DUP6 PUSH2 0x162B JUMP JUMPDEST PUSH2 0x506 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x162B JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x39C DUP3 PUSH2 0x1840 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x39C DUP3 PUSH2 0x185B JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x188D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1875 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xD65 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 JUMP JUMPDEST PUSH2 0x18B1 DUP2 PUSH2 0x182D JUMP JUMPDEST DUP2 EQ PUSH2 0x537 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x18B1 DUP2 PUSH2 0x183D JUMP JUMPDEST PUSH2 0x18B1 DUP2 PUSH2 0x184C JUMP JUMPDEST PUSH2 0x18B1 DUP2 PUSH2 0x1855 JUMP INVALID NUMBER PUSH16 0x6D703A3A5F7472616E73666572546F6B PUSH6 0x6E733A207472 PUSH2 0x6E73 PUSH7 0x657220616D6F75 PUSH15 0x7420657863656564732062616C616E PUSH4 0x65436F6D PUSH17 0x3A3A617070726F76653A20616D6F756E74 KECCAK256 PUSH6 0x786365656473 KECCAK256 CODECOPY CALLDATASIZE KECCAK256 PUSH3 0x697473 NUMBER PUSH16 0x6D703A3A7472616E736665723A20616D PUSH16 0x756E7420657863656564732039362062 PUSH10 0x7473436F6D703A3A5F77 PUSH19 0x697465436865636B706F696E743A20626C6F63 PUSH12 0x206E756D6265722065786365 PUSH6 0x647320333220 PUSH3 0x697473 NUMBER PUSH16 0x6D703A3A5F6D6F7665566F7465733A20 PUSH23 0x6F746520616D6F756E7420756E646572666C6F7773436F PUSH14 0x703A3A5F7472616E73666572546F PUSH12 0x656E733A207472616E736665 PUSH19 0x20616D6F756E74206F766572666C6F7773436F PUSH14 0x703A3A7472616E7366657246726F PUSH14 0x3A207472616E7366657220616D6F PUSH22 0x6E742065786365656473207370656E64657220616C6C PUSH16 0x77616E6365436F6D703A3A5F6D6F7665 JUMP PUSH16 0x7465733A20766F746520616D6F756E74 KECCAK256 PUSH16 0x766572666C6F7773A365627A7A723158 KECCAK256 0xD6 PUSH17 0xC129560336800AD8845F62512BEB1709AB 0xBF XOR NUMBER 0xE1 0x4F ADDRESS SLOAD SWAP10 GASPRICE PUSH3 0x7A0AC8 PUSH13 0x6578706572696D656E74616CF5 PUSH5 0x736F6C6343 STOP SDIV GT STOP BLOCKHASH ","sourceMap":"59:12535:23:-;;;2543:149;8:9:-1;5:2;;;30:1;27;20:12;5:2;2543:149:23;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2589:17:23;;;;;;:8;:17;;;;;;:39;;-1:-1:-1;;;;;;2589:39:23;455:11;2589:39;;;;;;2643:42;;;;;;;;;;;;;;;;2543:149;59:12535;;5:134:-1;83:13;;101:33;83:13;101:33;;;68:71;;;;;146:263;;261:2;249:9;240:7;236:23;232:32;229:2;;;277:1;274;267:12;229:2;312:1;329:64;385:7;365:9;329:64;;;319:74;223:186;-1:-1;;;;223:186;416:113;499:24;517:5;499:24;;;494:3;487:37;481:48;;;536:213;654:2;639:18;;668:71;643:9;712:6;668:71;;756:91;;-1:-1;;;;;916:54;;818:24;899:76;982:72;1044:5;1027:27;1061:117;1130:24;1148:5;1130:24;;;1123:5;1120:35;1110:2;;1169:1;1166;1159:12;1110:2;1104:74;;;59:12535:23;;;;;;"},"deployedBytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106101215760003560e01c806370a08231116100ad578063b4b5ea5711610071578063b4b5ea571461025f578063c3cda52014610272578063dd62ed3e14610285578063e7a324dc14610298578063f1127ed8146102a057610121565b806370a08231146101fe578063782d6fe1146102115780637ecebe001461023157806395d89b4114610244578063a9059cbb1461024c57610121565b806323b872dd116100f457806323b872dd14610181578063313ce56714610194578063587cde1e146101a95780635c19a95c146101c95780636fcfff45146101de57610121565b806306fdde0314610126578063095ea7b31461014457806318160ddd1461016457806320606b7014610179575b600080fd5b61012e6102c1565b60405161013b919061173c565b60405180910390f35b610157610152366004611205565b6102e5565b60405161013b9190611692565b61016c6103a2565b60405161013b91906116a0565b61016c6103b1565b61015761018f3660046111b8565b6103c8565b61019c61050d565b60405161013b91906117d6565b6101bc6101b7366004611158565b610512565b60405161013b9190611684565b6101dc6101d7366004611158565b61052d565b005b6101f16101ec366004611158565b61053a565b60405161013b91906117ad565b61016c61020c366004611158565b610552565b61022461021f366004611205565b610576565b60405161013b91906117f2565b61016c61023f366004611158565b61078d565b61012e61079f565b61015761025a366004611205565b6107bf565b61022461026d366004611158565b6107fb565b6101dc610280366004611235565b61086b565b61016c61029336600461117e565b610a55565b61016c610a87565b6102b36102ae3660046112bc565b610a93565b60405161013b9291906117bb565b6040518060400160405280600881526020016710dbdb5c1bdd5b9960c21b81525081565b6000806000198314156102fb5750600019610320565b61031d8360405180606001604052806025815260200161190e60259139610ac8565b90505b336000818152602081815260408083206001600160a01b03891680855292529182902080546001600160601b0319166001600160601b03861617905590519091907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061038e9085906117e4565b60405180910390a360019150505b92915050565b6a084595161401484a00000081565b6040516103bd9061166e565b604051809103902081565b6001600160a01b0383166000908152602081815260408083203380855290835281842054825160608101909352602580845291936001600160601b0390911692859261041e928892919061190e90830139610ac8565b9050866001600160a01b0316836001600160a01b03161415801561044b57506001600160601b0382811614155b156104f357600061047583836040518060600160405280603d81526020016119e5603d9139610af7565b6001600160a01b03898116600081815260208181526040808320948a16808452949091529081902080546001600160601b0319166001600160601b0386161790555192935090917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906104e99085906117e4565b60405180910390a3505b6104fe878783610b36565b600193505050505b9392505050565b601281565b6002602052600090815260409020546001600160a01b031681565b6105373382610ce1565b50565b60046020526000908152604090205463ffffffff1681565b6001600160a01b03166000908152600160205260409020546001600160601b031690565b60004382106105a05760405162461bcd60e51b81526004016105979061176d565b60405180910390fd5b6001600160a01b03831660009081526004602052604090205463ffffffff16806105ce57600091505061039c565b6001600160a01b038416600090815260036020908152604080832063ffffffff60001986018116855292529091205416831061064a576001600160a01b03841660009081526003602090815260408083206000199490940163ffffffff1683529290522054600160201b90046001600160601b0316905061039c565b6001600160a01b038416600090815260036020908152604080832083805290915290205463ffffffff1683101561068557600091505061039c565b600060001982015b8163ffffffff168163ffffffff16111561074857600282820363ffffffff160481036106b7611115565b506001600160a01b038716600090815260036020908152604080832063ffffffff858116855290835292819020815180830190925254928316808252600160201b9093046001600160601b031691810191909152908714156107235760200151945061039c9350505050565b805163ffffffff1687111561073a57819350610741565b6001820392505b505061068d565b506001600160a01b038516600090815260036020908152604080832063ffffffff909416835292905220546001600160601b03600160201b9091041691505092915050565b60056020526000908152604090205481565b604051806040016040528060048152602001630434f4d560e41b81525081565b6000806107e48360405180606001604052806026815260200161193360269139610ac8565b90506107f1338583610b36565b5060019392505050565b6001600160a01b03811660009081526004602052604081205463ffffffff1680610826576000610506565b6001600160a01b0383166000908152600360209081526040808320600019850163ffffffff168452909152902054600160201b90046001600160601b03169392505050565b60006040516108799061166e565b60408051918290038220828201909152600882526710dbdb5c1bdd5b9960c21b6020909201919091527f561ca898cce9f021c15a441ef41899706e923541cee724530075d1a1144761c76108cb610d6b565b306040516020016108df94939291906116ec565b604051602081830303815290604052805190602001209050600060405161090590611679565b604051908190038120610920918a908a908a906020016116ae565b6040516020818303038152906040528051906020012090506000828260405160200161094d92919061163d565b60405160208183030381529060405280519060200120905060006001828888886040516000815260200160405260405161098a9493929190611721565b6020604051602081039080840390855afa1580156109ac573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166109df5760405162461bcd60e51b81526004016105979061174d565b6001600160a01b03811660009081526005602052604090208054600181019091558914610a1e5760405162461bcd60e51b81526004016105979061177d565b87421115610a3e5760405162461bcd60e51b81526004016105979061175d565b610a48818b610ce1565b505050505b505050505050565b6001600160a01b039182166000908152602081815260408083209390941682529190915220546001600160601b031690565b6040516103bd90611679565b600360209081526000928352604080842090915290825290205463ffffffff811690600160201b90046001600160601b031682565b600081600160601b8410610aef5760405162461bcd60e51b8152600401610597919061173c565b509192915050565b6000836001600160601b0316836001600160601b031611158290610b2e5760405162461bcd60e51b8152600401610597919061173c565b505050900390565b6001600160a01b038316610b5c5760405162461bcd60e51b81526004016105979061179d565b6001600160a01b038216610b825760405162461bcd60e51b81526004016105979061178d565b6001600160a01b038316600090815260016020908152604091829020548251606081019093526036808452610bcd936001600160601b0390921692859291906118d890830139610af7565b6001600160a01b03848116600090815260016020908152604080832080546001600160601b0319166001600160601b03968716179055928616825290829020548251606081019093526030808452610c3594919091169285929091906119b590830139610d6f565b6001600160a01b038381166000818152600160205260409081902080546001600160601b0319166001600160601b0395909516949094179093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610ca29085906117e4565b60405180910390a36001600160a01b03808416600090815260026020526040808220548584168352912054610cdc92918216911683610dab565b505050565b6001600160a01b03808316600081815260026020818152604080842080546001845282862054949093528787166001600160a01b031984168117909155905191909516946001600160601b039092169391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4610d65828483610dab565b50505050565b4690565b6000838301826001600160601b038087169083161015610da25760405162461bcd60e51b8152600401610597919061173c565b50949350505050565b816001600160a01b0316836001600160a01b031614158015610dd657506000816001600160601b0316115b15610cdc576001600160a01b03831615610e8e576001600160a01b03831660009081526004602052604081205463ffffffff169081610e16576000610e55565b6001600160a01b0385166000908152600360209081526040808320600019860163ffffffff168452909152902054600160201b90046001600160601b03165b90506000610e7c828560405180606001604052806028815260200161198d60289139610af7565b9050610e8a86848484610f39565b5050505b6001600160a01b03821615610cdc576001600160a01b03821660009081526004602052604081205463ffffffff169081610ec9576000610f08565b6001600160a01b0384166000908152600360209081526040808320600019860163ffffffff168452909152902054600160201b90046001600160601b03165b90506000610f2f8285604051806060016040528060278152602001611a2260279139610d6f565b9050610a4d858484845b6000610f5d43604051806060016040528060348152602001611959603491396110ee565b905060008463ffffffff16118015610fa657506001600160a01b038516600090815260036020908152604080832063ffffffff6000198901811685529252909120548282169116145b15611005576001600160a01b0385166000908152600360209081526040808320600019880163ffffffff168452909152902080546fffffffffffffffffffffffff000000001916600160201b6001600160601b038516021790556110a4565b60408051808201825263ffffffff80841682526001600160601b0380861660208085019182526001600160a01b038b166000818152600383528781208c871682528352878120965187549451909516600160201b026fffffffffffffffffffffffff000000001995871663ffffffff19958616179590951694909417909555938252600490935292909220805460018801909316929091169190911790555b846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72484846040516110df929190611800565b60405180910390a25050505050565b600081600160201b8410610aef5760405162461bcd60e51b8152600401610597919061173c565b604080518082019091526000808252602082015290565b803561039c816118a8565b803561039c816118bc565b803561039c816118c5565b803561039c816118ce565b60006020828403121561116a57600080fd5b6000611176848461112c565b949350505050565b6000806040838503121561119157600080fd5b600061119d858561112c565b92505060206111ae8582860161112c565b9150509250929050565b6000806000606084860312156111cd57600080fd5b60006111d9868661112c565b93505060206111ea8682870161112c565b92505060406111fb86828701611137565b9150509250925092565b6000806040838503121561121857600080fd5b6000611224858561112c565b92505060206111ae85828601611137565b60008060008060008060c0878903121561124e57600080fd5b600061125a898961112c565b965050602061126b89828a01611137565b955050604061127c89828a01611137565b945050606061128d89828a0161114d565b935050608061129e89828a01611137565b92505060a06112af89828a01611137565b9150509295509295509295565b600080604083850312156112cf57600080fd5b60006112db858561112c565b92505060206111ae85828601611142565b6112f58161182d565b82525050565b6112f581611838565b6112f58161183d565b6112f56113198261183d565b61183d565b60006113298261181b565b611333818561181f565b9350611343818560208601611872565b61134c8161189e565b9093019392505050565b600061136360268361181f565b7f436f6d703a3a64656c656761746542795369673a20696e76616c6964207369678152656e617475726560d01b602082015260400192915050565b60006113ab60268361181f565b7f436f6d703a3a64656c656761746542795369673a207369676e617475726520658152651e1c1a5c995960d21b602082015260400192915050565b60006113f3600283611828565b61190160f01b815260020192915050565b600061141160278361181f565b7f436f6d703a3a6765745072696f72566f7465733a206e6f742079657420646574815266195c9b5a5b995960ca1b602082015260400192915050565b600061145a60228361181f565b7f436f6d703a3a64656c656761746542795369673a20696e76616c6964206e6f6e815261636560f01b602082015260400192915050565b600061149e603a8361181f565b7f436f6d703a3a5f7472616e73666572546f6b656e733a2063616e6e6f7420747281527f616e7366657220746f20746865207a65726f2061646472657373000000000000602082015260400192915050565b60006114fd604383611828565b7f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353681527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208201526263742960e81b604082015260430192915050565b6000611568603c8361181f565b7f436f6d703a3a5f7472616e73666572546f6b656e733a2063616e6e6f7420747281527f616e736665722066726f6d20746865207a65726f206164647265737300000000602082015260400192915050565b60006115c7603a83611828565b7f44656c65676174696f6e28616464726573732064656c6567617465652c75696e81527f74323536206e6f6e63652c75696e7432353620657870697279290000000000006020820152603a0192915050565b6112f58161184c565b6112f581611855565b6112f581611867565b6112f58161185b565b6000611648826113e6565b9150611654828561130d565b602082019150611664828461130d565b5060200192915050565b600061039c826114f0565b600061039c826115ba565b6020810161039c82846112ec565b6020810161039c82846112fb565b6020810161039c8284611304565b608081016116bc8287611304565b6116c960208301866112ec565b6116d66040830185611304565b6116e36060830184611304565b95945050505050565b608081016116fa8287611304565b6117076020830186611304565b6117146040830185611304565b6116e360608301846112ec565b6080810161172f8287611304565b6116c96020830186611622565b60208082528101610506818461131e565b6020808252810161039c81611356565b6020808252810161039c8161139e565b6020808252810161039c81611404565b6020808252810161039c8161144d565b6020808252810161039c81611491565b6020808252810161039c8161155b565b6020810161039c8284611619565b604081016117c98285611619565b6105066020830184611634565b6020810161039c8284611622565b6020810161039c828461162b565b6020810161039c8284611634565b6040810161180e828561162b565b610506602083018461162b565b5190565b90815260200190565b919050565b600061039c82611840565b151590565b90565b6001600160a01b031690565b63ffffffff1690565b60ff1690565b6001600160601b031690565b600061039c8261185b565b60005b8381101561188d578181015183820152602001611875565b83811115610d655750506000910152565b601f01601f191690565b6118b18161182d565b811461053757600080fd5b6118b18161183d565b6118b18161184c565b6118b18161185556fe436f6d703a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e7420657863656564732062616c616e6365436f6d703a3a617070726f76653a20616d6f756e7420657863656564732039362062697473436f6d703a3a7472616e736665723a20616d6f756e7420657863656564732039362062697473436f6d703a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d62657220657863656564732033322062697473436f6d703a3a5f6d6f7665566f7465733a20766f746520616d6f756e7420756e646572666c6f7773436f6d703a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e74206f766572666c6f7773436f6d703a3a7472616e7366657246726f6d3a207472616e7366657220616d6f756e742065786365656473207370656e64657220616c6c6f77616e6365436f6d703a3a5f6d6f7665566f7465733a20766f746520616d6f756e74206f766572666c6f7773a365627a7a72315820d670c129560336800ad8845f62512beb1709abbf1843e14f3054993a627a0ac86c6578706572696d656e74616cf564736f6c63430005110040","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x121 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0xAD JUMPI DUP1 PUSH4 0xB4B5EA57 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xB4B5EA57 EQ PUSH2 0x25F JUMPI DUP1 PUSH4 0xC3CDA520 EQ PUSH2 0x272 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x285 JUMPI DUP1 PUSH4 0xE7A324DC EQ PUSH2 0x298 JUMPI DUP1 PUSH4 0xF1127ED8 EQ PUSH2 0x2A0 JUMPI PUSH2 0x121 JUMP JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x1FE JUMPI DUP1 PUSH4 0x782D6FE1 EQ PUSH2 0x211 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x231 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x244 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x24C JUMPI PUSH2 0x121 JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0xF4 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x181 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x194 JUMPI DUP1 PUSH4 0x587CDE1E EQ PUSH2 0x1A9 JUMPI DUP1 PUSH4 0x5C19A95C EQ PUSH2 0x1C9 JUMPI DUP1 PUSH4 0x6FCFFF45 EQ PUSH2 0x1DE JUMPI PUSH2 0x121 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x126 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x144 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x164 JUMPI DUP1 PUSH4 0x20606B70 EQ PUSH2 0x179 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x12E PUSH2 0x2C1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x13B SWAP2 SWAP1 PUSH2 0x173C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x157 PUSH2 0x152 CALLDATASIZE PUSH1 0x4 PUSH2 0x1205 JUMP JUMPDEST PUSH2 0x2E5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x13B SWAP2 SWAP1 PUSH2 0x1692 JUMP JUMPDEST PUSH2 0x16C PUSH2 0x3A2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x13B SWAP2 SWAP1 PUSH2 0x16A0 JUMP JUMPDEST PUSH2 0x16C PUSH2 0x3B1 JUMP JUMPDEST PUSH2 0x157 PUSH2 0x18F CALLDATASIZE PUSH1 0x4 PUSH2 0x11B8 JUMP JUMPDEST PUSH2 0x3C8 JUMP JUMPDEST PUSH2 0x19C PUSH2 0x50D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x13B SWAP2 SWAP1 PUSH2 0x17D6 JUMP JUMPDEST PUSH2 0x1BC PUSH2 0x1B7 CALLDATASIZE PUSH1 0x4 PUSH2 0x1158 JUMP JUMPDEST PUSH2 0x512 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x13B SWAP2 SWAP1 PUSH2 0x1684 JUMP JUMPDEST PUSH2 0x1DC PUSH2 0x1D7 CALLDATASIZE PUSH1 0x4 PUSH2 0x1158 JUMP JUMPDEST PUSH2 0x52D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1F1 PUSH2 0x1EC CALLDATASIZE PUSH1 0x4 PUSH2 0x1158 JUMP JUMPDEST PUSH2 0x53A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x13B SWAP2 SWAP1 PUSH2 0x17AD JUMP JUMPDEST PUSH2 0x16C PUSH2 0x20C CALLDATASIZE PUSH1 0x4 PUSH2 0x1158 JUMP JUMPDEST PUSH2 0x552 JUMP JUMPDEST PUSH2 0x224 PUSH2 0x21F CALLDATASIZE PUSH1 0x4 PUSH2 0x1205 JUMP JUMPDEST PUSH2 0x576 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x13B SWAP2 SWAP1 PUSH2 0x17F2 JUMP JUMPDEST PUSH2 0x16C PUSH2 0x23F CALLDATASIZE PUSH1 0x4 PUSH2 0x1158 JUMP JUMPDEST PUSH2 0x78D JUMP JUMPDEST PUSH2 0x12E PUSH2 0x79F JUMP JUMPDEST PUSH2 0x157 PUSH2 0x25A CALLDATASIZE PUSH1 0x4 PUSH2 0x1205 JUMP JUMPDEST PUSH2 0x7BF JUMP JUMPDEST PUSH2 0x224 PUSH2 0x26D CALLDATASIZE PUSH1 0x4 PUSH2 0x1158 JUMP JUMPDEST PUSH2 0x7FB JUMP JUMPDEST PUSH2 0x1DC PUSH2 0x280 CALLDATASIZE PUSH1 0x4 PUSH2 0x1235 JUMP JUMPDEST PUSH2 0x86B JUMP JUMPDEST PUSH2 0x16C PUSH2 0x293 CALLDATASIZE PUSH1 0x4 PUSH2 0x117E JUMP JUMPDEST PUSH2 0xA55 JUMP JUMPDEST PUSH2 0x16C PUSH2 0xA87 JUMP JUMPDEST PUSH2 0x2B3 PUSH2 0x2AE CALLDATASIZE PUSH1 0x4 PUSH2 0x12BC JUMP JUMPDEST PUSH2 0xA93 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x13B SWAP3 SWAP2 SWAP1 PUSH2 0x17BB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x8 DUP2 MSTORE PUSH1 0x20 ADD PUSH8 0x10DBDB5C1BDD5B99 PUSH1 0xC2 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 NOT DUP4 EQ ISZERO PUSH2 0x2FB JUMPI POP PUSH1 0x0 NOT PUSH2 0x320 JUMP JUMPDEST PUSH2 0x31D DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x190E PUSH1 0x25 SWAP2 CODECOPY PUSH2 0xAC8 JUMP JUMPDEST SWAP1 POP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP7 AND OR SWAP1 SSTORE SWAP1 MLOAD SWAP1 SWAP2 SWAP1 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP1 PUSH2 0x38E SWAP1 DUP6 SWAP1 PUSH2 0x17E4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH11 0x84595161401484A000000 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3BD SWAP1 PUSH2 0x166E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 SLOAD DUP3 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP4 MSTORE PUSH1 0x25 DUP1 DUP5 MSTORE SWAP2 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 SWAP2 AND SWAP3 DUP6 SWAP3 PUSH2 0x41E SWAP3 DUP9 SWAP3 SWAP2 SWAP1 PUSH2 0x190E SWAP1 DUP4 ADD CODECOPY PUSH2 0xAC8 JUMP JUMPDEST SWAP1 POP DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO DUP1 ISZERO PUSH2 0x44B JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP3 DUP2 AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x4F3 JUMPI PUSH1 0x0 PUSH2 0x475 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3D DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x19E5 PUSH1 0x3D SWAP2 CODECOPY PUSH2 0xAF7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP11 AND DUP1 DUP5 MSTORE SWAP5 SWAP1 SWAP2 MSTORE SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP7 AND OR SWAP1 SSTORE MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP1 PUSH2 0x4E9 SWAP1 DUP6 SWAP1 PUSH2 0x17E4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP JUMPDEST PUSH2 0x4FE DUP8 DUP8 DUP4 PUSH2 0xB36 JUMP JUMPDEST PUSH1 0x1 SWAP4 POP POP POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x537 CALLER DUP3 PUSH2 0xCE1 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 NUMBER DUP3 LT PUSH2 0x5A0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x597 SWAP1 PUSH2 0x176D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP1 PUSH2 0x5CE JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x39C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH1 0x0 NOT DUP7 ADD DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD AND DUP4 LT PUSH2 0x64A JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x0 NOT SWAP5 SWAP1 SWAP5 ADD PUSH4 0xFFFFFFFF AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 POP PUSH2 0x39C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP4 DUP1 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP4 LT ISZERO PUSH2 0x685 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x39C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 ADD JUMPDEST DUP2 PUSH4 0xFFFFFFFF AND DUP2 PUSH4 0xFFFFFFFF AND GT ISZERO PUSH2 0x748 JUMPI PUSH1 0x2 DUP3 DUP3 SUB PUSH4 0xFFFFFFFF AND DIV DUP2 SUB PUSH2 0x6B7 PUSH2 0x1115 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF DUP6 DUP2 AND DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP2 MLOAD DUP1 DUP4 ADD SWAP1 SWAP3 MSTORE SLOAD SWAP3 DUP4 AND DUP1 DUP3 MSTORE PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP4 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 DUP8 EQ ISZERO PUSH2 0x723 JUMPI PUSH1 0x20 ADD MLOAD SWAP5 POP PUSH2 0x39C SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH4 0xFFFFFFFF AND DUP8 GT ISZERO PUSH2 0x73A JUMPI DUP2 SWAP4 POP PUSH2 0x741 JUMP JUMPDEST PUSH1 0x1 DUP3 SUB SWAP3 POP JUMPDEST POP POP PUSH2 0x68D JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF SWAP1 SWAP5 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP2 DIV AND SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4 DUP2 MSTORE PUSH1 0x20 ADD PUSH4 0x434F4D5 PUSH1 0xE4 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x7E4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1933 PUSH1 0x26 SWAP2 CODECOPY PUSH2 0xAC8 JUMP JUMPDEST SWAP1 POP PUSH2 0x7F1 CALLER DUP6 DUP4 PUSH2 0xB36 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP1 PUSH2 0x826 JUMPI PUSH1 0x0 PUSH2 0x506 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x0 NOT DUP6 ADD PUSH4 0xFFFFFFFF AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0x879 SWAP1 PUSH2 0x166E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB DUP3 KECCAK256 DUP3 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x8 DUP3 MSTORE PUSH8 0x10DBDB5C1BDD5B99 PUSH1 0xC2 SHL PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x561CA898CCE9F021C15A441EF41899706E923541CEE724530075D1A1144761C7 PUSH2 0x8CB PUSH2 0xD6B JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x8DF SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x16EC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0x905 SWAP1 PUSH2 0x1679 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB DUP2 KECCAK256 PUSH2 0x920 SWAP2 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 PUSH1 0x20 ADD PUSH2 0x16AE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x94D SWAP3 SWAP2 SWAP1 PUSH2 0x163D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP3 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x98A SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1721 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9AC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x9DF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x597 SWAP1 PUSH2 0x174D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 ADD SWAP1 SWAP2 SSTORE DUP10 EQ PUSH2 0xA1E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x597 SWAP1 PUSH2 0x177D JUMP JUMPDEST DUP8 TIMESTAMP GT ISZERO PUSH2 0xA3E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x597 SWAP1 PUSH2 0x175D JUMP JUMPDEST PUSH2 0xA48 DUP2 DUP12 PUSH2 0xCE1 JUMP JUMPDEST POP POP POP POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3BD SWAP1 PUSH2 0x1679 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF DUP2 AND SWAP1 PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP3 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x60 SHL DUP5 LT PUSH2 0xAEF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x597 SWAP2 SWAP1 PUSH2 0x173C JUMP JUMPDEST POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND GT ISZERO DUP3 SWAP1 PUSH2 0xB2E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x597 SWAP2 SWAP1 PUSH2 0x173C JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xB5C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x597 SWAP1 PUSH2 0x179D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xB82 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x597 SWAP1 PUSH2 0x178D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD DUP3 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP4 MSTORE PUSH1 0x36 DUP1 DUP5 MSTORE PUSH2 0xBCD SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 SWAP3 AND SWAP3 DUP6 SWAP3 SWAP2 SWAP1 PUSH2 0x18D8 SWAP1 DUP4 ADD CODECOPY PUSH2 0xAF7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP7 DUP8 AND OR SWAP1 SSTORE SWAP3 DUP7 AND DUP3 MSTORE SWAP1 DUP3 SWAP1 KECCAK256 SLOAD DUP3 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP4 MSTORE PUSH1 0x30 DUP1 DUP5 MSTORE PUSH2 0xC35 SWAP5 SWAP2 SWAP1 SWAP2 AND SWAP3 DUP6 SWAP3 SWAP1 SWAP2 SWAP1 PUSH2 0x19B5 SWAP1 DUP4 ADD CODECOPY PUSH2 0xD6F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP6 SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR SWAP1 SWAP4 SSTORE SWAP2 MLOAD SWAP1 DUP6 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0xCA2 SWAP1 DUP6 SWAP1 PUSH2 0x17E4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SLOAD DUP6 DUP5 AND DUP4 MSTORE SWAP2 KECCAK256 SLOAD PUSH2 0xCDC SWAP3 SWAP2 DUP3 AND SWAP2 AND DUP4 PUSH2 0xDAB JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP5 MSTORE DUP3 DUP7 KECCAK256 SLOAD SWAP5 SWAP1 SWAP4 MSTORE DUP8 DUP8 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP5 AND DUP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD SWAP2 SWAP1 SWAP6 AND SWAP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 SWAP3 AND SWAP4 SWAP2 SWAP3 DUP6 SWAP3 SWAP2 PUSH32 0x3134E8A2E6D97E929A7E54011EA5485D7D196DD5F0BA4D4EF95803E8E3FC257F SWAP2 SWAP1 LOG4 PUSH2 0xD65 DUP3 DUP5 DUP4 PUSH2 0xDAB JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP1 DUP8 AND SWAP1 DUP4 AND LT ISZERO PUSH2 0xDA2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x597 SWAP2 SWAP1 PUSH2 0x173C JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO DUP1 ISZERO PUSH2 0xDD6 JUMPI POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND GT JUMPDEST ISZERO PUSH2 0xCDC JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO PUSH2 0xE8E JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND SWAP1 DUP2 PUSH2 0xE16 JUMPI PUSH1 0x0 PUSH2 0xE55 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x0 NOT DUP7 ADD PUSH4 0xFFFFFFFF AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xE7C DUP3 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x198D PUSH1 0x28 SWAP2 CODECOPY PUSH2 0xAF7 JUMP JUMPDEST SWAP1 POP PUSH2 0xE8A DUP7 DUP5 DUP5 DUP5 PUSH2 0xF39 JUMP JUMPDEST POP POP POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ISZERO PUSH2 0xCDC JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND SWAP1 DUP2 PUSH2 0xEC9 JUMPI PUSH1 0x0 PUSH2 0xF08 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x0 NOT DUP7 ADD PUSH4 0xFFFFFFFF AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xF2F DUP3 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1A22 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xD6F JUMP JUMPDEST SWAP1 POP PUSH2 0xA4D DUP6 DUP5 DUP5 DUP5 JUMPDEST PUSH1 0x0 PUSH2 0xF5D NUMBER PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1959 PUSH1 0x34 SWAP2 CODECOPY PUSH2 0x10EE JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP5 PUSH4 0xFFFFFFFF AND GT DUP1 ISZERO PUSH2 0xFA6 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH1 0x0 NOT DUP10 ADD DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD DUP3 DUP3 AND SWAP2 AND EQ JUMPDEST ISZERO PUSH2 0x1005 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x0 NOT DUP9 ADD PUSH4 0xFFFFFFFF AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFF00000000 NOT AND PUSH1 0x1 PUSH1 0x20 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP6 AND MUL OR SWAP1 SSTORE PUSH2 0x10A4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH4 0xFFFFFFFF DUP1 DUP5 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP1 DUP7 AND PUSH1 0x20 DUP1 DUP6 ADD SWAP2 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 DUP4 MSTORE DUP8 DUP2 KECCAK256 DUP13 DUP8 AND DUP3 MSTORE DUP4 MSTORE DUP8 DUP2 KECCAK256 SWAP7 MLOAD DUP8 SLOAD SWAP5 MLOAD SWAP1 SWAP6 AND PUSH1 0x1 PUSH1 0x20 SHL MUL PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFF00000000 NOT SWAP6 DUP8 AND PUSH4 0xFFFFFFFF NOT SWAP6 DUP7 AND OR SWAP6 SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR SWAP1 SWAP6 SSTORE SWAP4 DUP3 MSTORE PUSH1 0x4 SWAP1 SWAP4 MSTORE SWAP3 SWAP1 SWAP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP9 ADD SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDEC2BACDD2F05B59DE34DA9B523DFF8BE42E5E38E818C82FDB0BAE774387A724 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH2 0x10DF SWAP3 SWAP2 SWAP1 PUSH2 0x1800 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x20 SHL DUP5 LT PUSH2 0xAEF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x597 SWAP2 SWAP1 PUSH2 0x173C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x39C DUP2 PUSH2 0x18A8 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x39C DUP2 PUSH2 0x18BC JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x39C DUP2 PUSH2 0x18C5 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x39C DUP2 PUSH2 0x18CE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x116A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1176 DUP5 DUP5 PUSH2 0x112C JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1191 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x119D DUP6 DUP6 PUSH2 0x112C JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x11AE DUP6 DUP3 DUP7 ADD PUSH2 0x112C JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x11CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x11D9 DUP7 DUP7 PUSH2 0x112C JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x11EA DUP7 DUP3 DUP8 ADD PUSH2 0x112C JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x11FB DUP7 DUP3 DUP8 ADD PUSH2 0x1137 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1218 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1224 DUP6 DUP6 PUSH2 0x112C JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x11AE DUP6 DUP3 DUP7 ADD PUSH2 0x1137 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x124E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x125A DUP10 DUP10 PUSH2 0x112C JUMP JUMPDEST SWAP7 POP POP PUSH1 0x20 PUSH2 0x126B DUP10 DUP3 DUP11 ADD PUSH2 0x1137 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x40 PUSH2 0x127C DUP10 DUP3 DUP11 ADD PUSH2 0x1137 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x60 PUSH2 0x128D DUP10 DUP3 DUP11 ADD PUSH2 0x114D JUMP JUMPDEST SWAP4 POP POP PUSH1 0x80 PUSH2 0x129E DUP10 DUP3 DUP11 ADD PUSH2 0x1137 JUMP JUMPDEST SWAP3 POP POP PUSH1 0xA0 PUSH2 0x12AF DUP10 DUP3 DUP11 ADD PUSH2 0x1137 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x12CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x12DB DUP6 DUP6 PUSH2 0x112C JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x11AE DUP6 DUP3 DUP7 ADD PUSH2 0x1142 JUMP JUMPDEST PUSH2 0x12F5 DUP2 PUSH2 0x182D JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x12F5 DUP2 PUSH2 0x1838 JUMP JUMPDEST PUSH2 0x12F5 DUP2 PUSH2 0x183D JUMP JUMPDEST PUSH2 0x12F5 PUSH2 0x1319 DUP3 PUSH2 0x183D JUMP JUMPDEST PUSH2 0x183D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1329 DUP3 PUSH2 0x181B JUMP JUMPDEST PUSH2 0x1333 DUP2 DUP6 PUSH2 0x181F JUMP JUMPDEST SWAP4 POP PUSH2 0x1343 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x1872 JUMP JUMPDEST PUSH2 0x134C DUP2 PUSH2 0x189E JUMP JUMPDEST SWAP1 SWAP4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1363 PUSH1 0x26 DUP4 PUSH2 0x181F JUMP JUMPDEST PUSH32 0x436F6D703A3A64656C656761746542795369673A20696E76616C696420736967 DUP2 MSTORE PUSH6 0x6E6174757265 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x13AB PUSH1 0x26 DUP4 PUSH2 0x181F JUMP JUMPDEST PUSH32 0x436F6D703A3A64656C656761746542795369673A207369676E61747572652065 DUP2 MSTORE PUSH6 0x1E1C1A5C9959 PUSH1 0xD2 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x13F3 PUSH1 0x2 DUP4 PUSH2 0x1828 JUMP JUMPDEST PUSH2 0x1901 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1411 PUSH1 0x27 DUP4 PUSH2 0x181F JUMP JUMPDEST PUSH32 0x436F6D703A3A6765745072696F72566F7465733A206E6F742079657420646574 DUP2 MSTORE PUSH7 0x195C9B5A5B9959 PUSH1 0xCA SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x145A PUSH1 0x22 DUP4 PUSH2 0x181F JUMP JUMPDEST PUSH32 0x436F6D703A3A64656C656761746542795369673A20696E76616C6964206E6F6E DUP2 MSTORE PUSH2 0x6365 PUSH1 0xF0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x149E PUSH1 0x3A DUP4 PUSH2 0x181F JUMP JUMPDEST PUSH32 0x436F6D703A3A5F7472616E73666572546F6B656E733A2063616E6E6F74207472 DUP2 MSTORE PUSH32 0x616E7366657220746F20746865207A65726F2061646472657373000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14FD PUSH1 0x43 DUP4 PUSH2 0x1828 JUMP JUMPDEST PUSH32 0x454950373132446F6D61696E28737472696E67206E616D652C75696E74323536 DUP2 MSTORE PUSH32 0x20636861696E49642C6164647265737320766572696679696E67436F6E747261 PUSH1 0x20 DUP3 ADD MSTORE PUSH3 0x637429 PUSH1 0xE8 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x43 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1568 PUSH1 0x3C DUP4 PUSH2 0x181F JUMP JUMPDEST PUSH32 0x436F6D703A3A5F7472616E73666572546F6B656E733A2063616E6E6F74207472 DUP2 MSTORE PUSH32 0x616E736665722066726F6D20746865207A65726F206164647265737300000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x15C7 PUSH1 0x3A DUP4 PUSH2 0x1828 JUMP JUMPDEST PUSH32 0x44656C65676174696F6E28616464726573732064656C6567617465652C75696E DUP2 MSTORE PUSH32 0x74323536206E6F6E63652C75696E743235362065787069727929000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x3A ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x12F5 DUP2 PUSH2 0x184C JUMP JUMPDEST PUSH2 0x12F5 DUP2 PUSH2 0x1855 JUMP JUMPDEST PUSH2 0x12F5 DUP2 PUSH2 0x1867 JUMP JUMPDEST PUSH2 0x12F5 DUP2 PUSH2 0x185B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1648 DUP3 PUSH2 0x13E6 JUMP JUMPDEST SWAP2 POP PUSH2 0x1654 DUP3 DUP6 PUSH2 0x130D JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH2 0x1664 DUP3 DUP5 PUSH2 0x130D JUMP JUMPDEST POP PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x39C DUP3 PUSH2 0x14F0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x39C DUP3 PUSH2 0x15BA JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x39C DUP3 DUP5 PUSH2 0x12EC JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x39C DUP3 DUP5 PUSH2 0x12FB JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x39C DUP3 DUP5 PUSH2 0x1304 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x16BC DUP3 DUP8 PUSH2 0x1304 JUMP JUMPDEST PUSH2 0x16C9 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x12EC JUMP JUMPDEST PUSH2 0x16D6 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x1304 JUMP JUMPDEST PUSH2 0x16E3 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x1304 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x16FA DUP3 DUP8 PUSH2 0x1304 JUMP JUMPDEST PUSH2 0x1707 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x1304 JUMP JUMPDEST PUSH2 0x1714 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x1304 JUMP JUMPDEST PUSH2 0x16E3 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x12EC JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x172F DUP3 DUP8 PUSH2 0x1304 JUMP JUMPDEST PUSH2 0x16C9 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x1622 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x506 DUP2 DUP5 PUSH2 0x131E JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x39C DUP2 PUSH2 0x1356 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x39C DUP2 PUSH2 0x139E JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x39C DUP2 PUSH2 0x1404 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x39C DUP2 PUSH2 0x144D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x39C DUP2 PUSH2 0x1491 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x39C DUP2 PUSH2 0x155B JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x39C DUP3 DUP5 PUSH2 0x1619 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x17C9 DUP3 DUP6 PUSH2 0x1619 JUMP JUMPDEST PUSH2 0x506 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1634 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x39C DUP3 DUP5 PUSH2 0x1622 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x39C DUP3 DUP5 PUSH2 0x162B JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x39C DUP3 DUP5 PUSH2 0x1634 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x180E DUP3 DUP6 PUSH2 0x162B JUMP JUMPDEST PUSH2 0x506 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x162B JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x39C DUP3 PUSH2 0x1840 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x39C DUP3 PUSH2 0x185B JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x188D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1875 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xD65 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 JUMP JUMPDEST PUSH2 0x18B1 DUP2 PUSH2 0x182D JUMP JUMPDEST DUP2 EQ PUSH2 0x537 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x18B1 DUP2 PUSH2 0x183D JUMP JUMPDEST PUSH2 0x18B1 DUP2 PUSH2 0x184C JUMP JUMPDEST PUSH2 0x18B1 DUP2 PUSH2 0x1855 JUMP INVALID NUMBER PUSH16 0x6D703A3A5F7472616E73666572546F6B PUSH6 0x6E733A207472 PUSH2 0x6E73 PUSH7 0x657220616D6F75 PUSH15 0x7420657863656564732062616C616E PUSH4 0x65436F6D PUSH17 0x3A3A617070726F76653A20616D6F756E74 KECCAK256 PUSH6 0x786365656473 KECCAK256 CODECOPY CALLDATASIZE KECCAK256 PUSH3 0x697473 NUMBER PUSH16 0x6D703A3A7472616E736665723A20616D PUSH16 0x756E7420657863656564732039362062 PUSH10 0x7473436F6D703A3A5F77 PUSH19 0x697465436865636B706F696E743A20626C6F63 PUSH12 0x206E756D6265722065786365 PUSH6 0x647320333220 PUSH3 0x697473 NUMBER PUSH16 0x6D703A3A5F6D6F7665566F7465733A20 PUSH23 0x6F746520616D6F756E7420756E646572666C6F7773436F PUSH14 0x703A3A5F7472616E73666572546F PUSH12 0x656E733A207472616E736665 PUSH19 0x20616D6F756E74206F766572666C6F7773436F PUSH14 0x703A3A7472616E7366657246726F PUSH14 0x3A207472616E7366657220616D6F PUSH22 0x6E742065786365656473207370656E64657220616C6C PUSH16 0x77616E6365436F6D703A3A5F6D6F7665 JUMP PUSH16 0x7465733A20766F746520616D6F756E74 KECCAK256 PUSH16 0x766572666C6F7773A365627A7A723158 KECCAK256 0xD6 PUSH17 0xC129560336800AD8845F62512BEB1709AB 0xBF XOR NUMBER 0xE1 0x4F ADDRESS SLOAD SWAP10 GASPRICE PUSH3 0x7A0AC8 PUSH13 0x6578706572696D656E74616CF5 PUSH5 0x736F6C6343 STOP SDIV GT STOP BLOCKHASH ","sourceMap":"59:12535:23:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;59:12535:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;128:40;;;:::i;:::-;;;;;;;;;;;;;;;;3590:407;;;;;;;;;:::i;:::-;;;;;;;;420:46;;;:::i;:::-;;;;;;;;1326:122;;;:::i;5090:658::-;;;;;;;;;:::i;324:35::-;;;:::i;:::-;;;;;;;;791:45;;;;;;;;;:::i;:::-;;;;;;;;5890:100;;;;;;;;;:::i;:::-;;1207:49;;;;;;;;;:::i;:::-;;;;;;;;4193:106;;;;;;;;;:::i;8028:1186::-;;;;;;;;;:::i;:::-;;;;;;;;1734:39;;;;;;;;;:::i;226:38::-;;;:::i;4555:234::-;;;;;;;;;:::i;7387:219::-;;;;;;;;;:::i;6413:780::-;;;;;;;;;:::i;2988:134::-;;;;;;;;;:::i;1539:117::-;;;:::i;1071:70::-;;;;;;;;;:::i;:::-;;;;;;;;;128:40;;;;;;;;;;;;;;-1:-1:-1;;;128:40:23;;;;:::o;3590:407::-;3658:4;3674:13;-1:-1:-1;;3701:9:23;:21;3697:169;;;-1:-1:-1;;;3697:169:23;;;3797:58;3804:9;3797:58;;;;;;;;;;;;;;;;;:6;:58::i;:::-;3788:67;;3697:169;3887:10;3876;:22;;;;;;;;;;;-1:-1:-1;;;;;3876:31:23;;;;;;;;;;;:40;;-1:-1:-1;;;;;;3876:40:23;-1:-1:-1;;;;;3876:40:23;;;;;3932:37;;3876:31;;3887:10;3932:37;;;;3876:40;;3932:37;;;;;;;;;;3986:4;3979:11;;;3590:407;;;;;:::o;420:46::-;455:11;420:46;:::o;1326:122::-;1368:80;;;;;;;;;;;;;;1326:122;:::o;5090:658::-;-1:-1:-1;;;;;5252:15:23;;5172:4;5252:15;;;;;;;;;;;5206:10;5252:24;;;;;;;;;;5302:58;;;;;;;;;;;;5206:10;;-1:-1:-1;;;;;5252:24:23;;;;5172:4;;5302:58;;5309:9;;5302:58;;;;;;;:6;:58::i;:::-;5286:74;;5386:3;-1:-1:-1;;;;;5375:14:23;:7;-1:-1:-1;;;;;5375:14:23;;;:48;;;;-1:-1:-1;;;;;;5393:30:23;;;;;5375:48;5371:306;;;5439:19;5461:96;5467:16;5485:6;5461:96;;;;;;;;;;;;;;;;;:5;:96::i;:::-;-1:-1:-1;;;;;5571:15:23;;;:10;:15;;;;;;;;;;;:24;;;;;;;;;;;;;;:39;;-1:-1:-1;;;;;;5571:39:23;-1:-1:-1;;;;;5571:39:23;;;;;5630:36;5571:39;;-1:-1:-1;5571:24:23;;5630:36;;;;5571:39;;5630:36;;;;;;;;;;5371:306;;5687:33;5703:3;5708;5713:6;5687:15;:33::i;:::-;5737:4;5730:11;;;;;5090:658;;;;;;:::o;324:35::-;357:2;324:35;:::o;791:45::-;;;;;;;;;;;;-1:-1:-1;;;;;791:45:23;;:::o;5890:100::-;5951:32;5961:10;5973:9;5951;:32::i;:::-;5890:100;:::o;1207:49::-;;;;;;;;;;;;;;;:::o;4193:106::-;-1:-1:-1;;;;;4275:17:23;4252:4;4275:17;;;:8;:17;;;;;;-1:-1:-1;;;;;4275:17:23;;4193:106::o;8028:1186::-;8107:6;8147:12;8133:11;:26;8125:78;;;;-1:-1:-1;;;8125:78:23;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8236:23:23;;8214:19;8236:23;;;:14;:23;;;;;;;;8273:17;8269:56;;8313:1;8306:8;;;;;8269:56;-1:-1:-1;;;;;8382:20:23;;;;;;:11;:20;;;;;;;;:38;-1:-1:-1;;8403:16:23;;8382:38;;;;;;;;;:48;;:63;-1:-1:-1;8378:145:23;;-1:-1:-1;;;;;8468:20:23;;;;;;:11;:20;;;;;;;;-1:-1:-1;;8489:16:23;;;;8468:38;;;;;;;;:44;-1:-1:-1;;;8468:44:23;;-1:-1:-1;;;;;8468:44:23;;-1:-1:-1;8461:51:23;;8378:145;-1:-1:-1;;;;;8581:20:23;;;;;;:11;:20;;;;;;;;:23;;;;;;;;:33;:23;:33;:47;-1:-1:-1;8577:86:23;;;8651:1;8644:8;;;;;8577:86;8673:12;-1:-1:-1;;8714:16:23;;8740:418;8755:5;8747:13;;:5;:13;;;8740:418;;;8818:1;8801:13;;;8800:19;;;8792:27;;8860:20;;:::i;:::-;-1:-1:-1;;;;;;8883:20:23;;;;;;:11;:20;;;;;;;;:28;;;;;;;;;;;;;8860:51;;;;;;;;;;;;;;;-1:-1:-1;;;8860:51:23;;;-1:-1:-1;;;;;8860:51:23;;;;;;;;;8929:27;;8925:223;;;8983:8;;;;-1:-1:-1;8976:15:23;;-1:-1:-1;;;;8976:15:23;8925:223;9016:12;;:26;;;-1:-1:-1;9012:136:23;;;9070:6;9062:14;;9012:136;;;9132:1;9123:6;:10;9115:18;;9012:136;8740:418;;;;;-1:-1:-1;;;;;;9174:20:23;;;;;;:11;:20;;;;;;;;:27;;;;;;;;;;:33;-1:-1:-1;;;;;;;;9174:33:23;;;;;-1:-1:-1;;8028:1186:23;;;;:::o;1734:39::-;;;;;;;;;;;;;:::o;226:38::-;;;;;;;;;;;;;;-1:-1:-1;;;226:38:23;;;;:::o;4555:234::-;4620:4;4636:13;4652:59;4659:9;4652:59;;;;;;;;;;;;;;;;;:6;:59::i;:::-;4636:75;;4721:40;4737:10;4749:3;4754:6;4721:15;:40::i;:::-;-1:-1:-1;4778:4:23;;4555:234;-1:-1:-1;;;4555:234:23:o;7387:219::-;-1:-1:-1;;;;;7492:23:23;;7452:6;7492:23;;;:14;:23;;;;;;;;7532:16;:67;;7598:1;7532:67;;;-1:-1:-1;;;;;7551:20:23;;;;;;:11;:20;;;;;;;;-1:-1:-1;;7572:16:23;;7551:38;;;;;;;;;:44;-1:-1:-1;;;7551:44:23;;-1:-1:-1;;;;;7551:44:23;7525:74;7387:219;-1:-1:-1;;;7387:219:23:o;6413:780::-;6528:23;1368:80;;;;;;;;;;;;;;;;6608:4;;;;;;;;;-1:-1:-1;;;6608:4:23;;;;;;;;6592:22;6616:12;:10;:12::i;:::-;6638:4;6564:80;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;6564:80:23;;;6554:91;;;;;;6528:117;;6655:18;1585:71;;;;;;;;;;;;;;;6686:57;;6718:9;;6729:5;;6736:6;;6686:57;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;6686:57:23;;;6676:68;;;;;;6655:89;;6754:14;6810:15;6827:10;6781:57;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;6781:57:23;;;6771:68;;;;;;6754:85;;6849:17;6869:26;6879:6;6887:1;6890;6893;6869:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;6869:26:23;;-1:-1:-1;;6869:26:23;;;-1:-1:-1;;;;;;;6913:23:23;;6905:74;;;;-1:-1:-1;;;6905:74:23;;;;;;;;;-1:-1:-1;;;;;7006:17:23;;;;;;:6;:17;;;;;:19;;;;;;;;6997:28;;6989:75;;;;-1:-1:-1;;;6989:75:23;;;;;;;;;7089:6;7082:3;:13;;7074:64;;;;-1:-1:-1;;;7074:64:23;;;;;;;;;7155:31;7165:9;7176;7155;:31::i;:::-;7148:38;;;;6413:780;;;;;;;:::o;2988:134::-;-1:-1:-1;;;;;3087:19:23;;;3064:4;3087:19;;;;;;;;;;;:28;;;;;;;;;;;;-1:-1:-1;;;;;3087:28:23;;2988:134::o;1539:117::-;1585:71;;;;;;1071:70;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1071:70:23;;-1:-1:-1;;;;;1071:70:23;;:::o;11921:158::-;11996:6;12033:12;-1:-1:-1;;;12022:9:23;;12014:32;;;;-1:-1:-1;;;12014:32:23;;;;;;;;;;-1:-1:-1;12070:1:23;;11921:158;-1:-1:-1;;11921:158:23:o;12275:162::-;12361:6;12392:1;-1:-1:-1;;;;;12387:6:23;:1;-1:-1:-1;;;;;12387:6:23;;;12395:12;12379:29;;;;;-1:-1:-1;;;12379:29:23;;;;;;;;;;-1:-1:-1;;;12425:5:23;;;12275:162::o;9593:605::-;-1:-1:-1;;;;;9686:17:23;;9678:90;;;;-1:-1:-1;;;9678:90:23;;;;;;;;;-1:-1:-1;;;;;9786:17:23;;9778:88;;;;-1:-1:-1;;;9778:88:23;;;;;;;;;-1:-1:-1;;;;;9899:13:23;;;;;;:8;:13;;;;;;;;;;9893:86;;;;;;;;;;;;;;-1:-1:-1;;;;;9899:13:23;;;;9914:6;;9893:86;;;;;;;:5;:86::i;:::-;-1:-1:-1;;;;;9877:13:23;;;;;;;:8;:13;;;;;;;;:102;;-1:-1:-1;;;;;;9877:102:23;-1:-1:-1;;;;;9877:102:23;;;;;;10011:13;;;;;;;;;;10005:80;;;;;;;;;;;;;;10011:13;;;;;10026:6;;10005:80;;;;;;;;:5;:80::i;:::-;-1:-1:-1;;;;;9989:13:23;;;;;;;:8;:13;;;;;;;:96;;-1:-1:-1;;;;;;9989:96:23;-1:-1:-1;;;;;9989:96:23;;;;;;;;;;;10100:26;;;;;;;;;;10119:6;;10100:26;;;;;;;;;;-1:-1:-1;;;;;10152:14:23;;;;;;;:9;:14;;;;;;;10168;;;;;;;;10137:54;;10152:14;;;;10168;10184:6;10137:14;:54::i;:::-;9593:605;;;:::o;9220:367::-;-1:-1:-1;;;;;9322:20:23;;;9296:23;9322:20;;;:9;:20;;;;;;;;;;;9378:19;;;;;;9407:20;;;;:32;;;-1:-1:-1;;;;;;9407:32:23;;;;;;;9455:54;;9322:20;;;;;-1:-1:-1;;;;;9378:19:23;;;;9407:32;;9322:20;;;9455:54;;9296:23;9455:54;9520:60;9535:15;9552:9;9563:16;9520:14;:60::i;:::-;9220:367;;;;:::o;12443:149::-;12551:9;12443:149;:::o;12085:184::-;12171:6;12200:5;;;12231:12;-1:-1:-1;;;;;12223:6:23;;;;;;;;12215:29;;;;-1:-1:-1;;;12215:29:23;;;;;;;;;;-1:-1:-1;12261:1:23;12085:184;-1:-1:-1;;;;12085:184:23:o;10204:923::-;10308:6;-1:-1:-1;;;;;10298:16:23;:6;-1:-1:-1;;;;;10298:16:23;;;:30;;;;;10327:1;10318:6;-1:-1:-1;;;;;10318:10:23;;10298:30;10294:827;;;-1:-1:-1;;;;;10348:20:23;;;10344:377;;-1:-1:-1;;;;;10407:22:23;;10388:16;10407:22;;;:14;:22;;;;;;;;;10466:13;:60;;10525:1;10466:60;;;-1:-1:-1;;;;;10482:19:23;;;;;;:11;:19;;;;;;;;-1:-1:-1;;10502:13:23;;10482:34;;;;;;;;;:40;-1:-1:-1;;;10482:40:23;;-1:-1:-1;;;;;10482:40:23;10466:60;10447:79;;10544:16;10563:68;10569:9;10580:6;10563:68;;;;;;;;;;;;;;;;;:5;:68::i;:::-;10544:87;;10649:57;10666:6;10674:9;10685;10696;10649:16;:57::i;:::-;10344:377;;;;-1:-1:-1;;;;;10739:20:23;;;10735:376;;-1:-1:-1;;;;;10798:22:23;;10779:16;10798:22;;;:14;:22;;;;;;;;;10857:13;:60;;10916:1;10857:60;;;-1:-1:-1;;;;;10873:19:23;;;;;;:11;:19;;;;;;;;-1:-1:-1;;10893:13:23;;10873:34;;;;;;;;;:40;-1:-1:-1;;;10873:40:23;;-1:-1:-1;;;;;10873:40:23;10857:60;10838:79;;10935:16;10954:67;10960:9;10971:6;10954:67;;;;;;;;;;;;;;;;;:5;:67::i;:::-;10935:86;;11039:57;11056:6;11064:9;11075;11086;11133:618;11250:18;11271:76;11278:12;11271:76;;;;;;;;;;;;;;;;;:6;:76::i;:::-;11250:97;;11375:1;11360:12;:16;;;:85;;;;-1:-1:-1;;;;;;11380:22:23;;;;;;:11;:22;;;;;;;;:65;-1:-1:-1;;11403:16:23;;11380:40;;;;;;;;;:50;:65;;;:50;;:65;11360:85;11356:324;;;-1:-1:-1;;;;;11459:22:23;;;;;;:11;:22;;;;;;;;-1:-1:-1;;11482:16:23;;11459:40;;;;;;;;;:57;;-1:-1:-1;;11459:57:23;-1:-1:-1;;;;;;;;11459:57:23;;;;;;11356:324;;;11582:33;;;;;;;;;;;;;;-1:-1:-1;;;;;11582:33:23;;;;;;;;;;-1:-1:-1;;;;;11543:22:23;;-1:-1:-1;11543:22:23;;;:11;:22;;;;;:36;;;;;;;;;;:72;;;;;;;;;-1:-1:-1;;;11543:72:23;-1:-1:-1;;11543:72:23;;;-1:-1:-1;;11543:72:23;;;;;;;;;;;;;;;11627:25;;;11543:72;11627:25;;;;;;;:44;;11543:72;11655:16;;11627:44;;;;;;;;;;;;;11356:324;11714:9;-1:-1:-1;;;;;11693:51:23;;11725:8;11735;11693:51;;;;;;;;;;;;;;;;11133:618;;;;;:::o;11757:158::-;11832:6;11869:12;-1:-1:-1;;;11858:9:23;;11850:32;;;;-1:-1:-1;;;11850:32:23;;;;;;;;;59:12535;;;;;;;;;;-1:-1:-1;59:12535:23;;;;;;;;:::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;142:130;209:20;;234:33;209:20;234:33;;416:128;482:20;;507:32;482:20;507:32;;551:126;616:20;;641:31;616:20;641:31;;684:241;;788:2;776:9;767:7;763:23;759:32;756:2;;;804:1;801;794:12;756:2;839:1;856:53;901:7;881:9;856:53;;;846:63;750:175;-1:-1;;;;750:175;932:366;;;1053:2;1041:9;1032:7;1028:23;1024:32;1021:2;;;1069:1;1066;1059:12;1021:2;1104:1;1121:53;1166:7;1146:9;1121:53;;;1111:63;;1083:97;1211:2;1229:53;1274:7;1265:6;1254:9;1250:22;1229:53;;;1219:63;;1190:98;1015:283;;;;;;1305:491;;;;1443:2;1431:9;1422:7;1418:23;1414:32;1411:2;;;1459:1;1456;1449:12;1411:2;1494:1;1511:53;1556:7;1536:9;1511:53;;;1501:63;;1473:97;1601:2;1619:53;1664:7;1655:6;1644:9;1640:22;1619:53;;;1609:63;;1580:98;1709:2;1727:53;1772:7;1763:6;1752:9;1748:22;1727:53;;;1717:63;;1688:98;1405:391;;;;;;1803:366;;;1924:2;1912:9;1903:7;1899:23;1895:32;1892:2;;;1940:1;1937;1930:12;1892:2;1975:1;1992:53;2037:7;2017:9;1992:53;;;1982:63;;1954:97;2082:2;2100:53;2145:7;2136:6;2125:9;2121:22;2100:53;;2176:865;;;;;;;2363:3;2351:9;2342:7;2338:23;2334:33;2331:2;;;2380:1;2377;2370:12;2331:2;2415:1;2432:53;2477:7;2457:9;2432:53;;;2422:63;;2394:97;2522:2;2540:53;2585:7;2576:6;2565:9;2561:22;2540:53;;;2530:63;;2501:98;2630:2;2648:53;2693:7;2684:6;2673:9;2669:22;2648:53;;;2638:63;;2609:98;2738:2;2756:51;2799:7;2790:6;2779:9;2775:22;2756:51;;;2746:61;;2717:96;2844:3;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;;;2853:63;;2823:99;2953:3;2972:53;3017:7;3008:6;2997:9;2993:22;2972:53;;;2962:63;;2932:99;2325:716;;;;;;;;;3048:364;;;3168:2;3156:9;3147:7;3143:23;3139:32;3136:2;;;3184:1;3181;3174:12;3136:2;3219:1;3236:53;3281:7;3261:9;3236:53;;;3226:63;;3198:97;3326:2;3344:52;3388:7;3379:6;3368:9;3364:22;3344:52;;3419:113;3502:24;3520:5;3502:24;;;3497:3;3490:37;3484:48;;;3539:104;3616:21;3631:5;3616:21;;3650:113;3733:24;3751:5;3733:24;;3770:152;3871:45;3891:24;3909:5;3891:24;;;3871:45;;3929:347;;4041:39;4074:5;4041:39;;;4092:71;4156:6;4151:3;4092:71;;;4085:78;;4168:52;4213:6;4208:3;4201:4;4194:5;4190:16;4168:52;;;4241:29;4263:6;4241:29;;;4232:39;;;;4021:255;-1:-1;;;4021:255;4630:375;;4790:67;4854:2;4849:3;4790:67;;;4890:34;4870:55;;-1:-1;;;4954:2;4945:12;;4938:30;4996:2;4987:12;;4776:229;-1:-1;;4776:229;5014:375;;5174:67;5238:2;5233:3;5174:67;;;5274:34;5254:55;;-1:-1;;;5338:2;5329:12;;5322:30;5380:2;5371:12;;5160:229;-1:-1;;5160:229;5398:398;;5576:84;5658:1;5653:3;5576:84;;;-1:-1;;;5673:87;;5788:1;5779:11;;5562:234;-1:-1;;5562:234;5805:376;;5965:67;6029:2;6024:3;5965:67;;;6065:34;6045:55;;-1:-1;;;6129:2;6120:12;;6113:31;6172:2;6163:12;;5951:230;-1:-1;;5951:230;6190:371;;6350:67;6414:2;6409:3;6350:67;;;6450:34;6430:55;;-1:-1;;;6514:2;6505:12;;6498:26;6552:2;6543:12;;6336:225;-1:-1;;6336:225;6570:395;;6730:67;6794:2;6789:3;6730:67;;;6830:34;6810:55;;6899:28;6894:2;6885:12;;6878:50;6956:2;6947:12;;6716:249;-1:-1;;6716:249;6974:477;;7152:85;7234:2;7229:3;7152:85;;;7270:34;7250:55;;7339:34;7334:2;7325:12;;7318:56;-1:-1;;;7403:2;7394:12;;7387:27;7442:2;7433:12;;7138:313;-1:-1;;7138:313;7460:397;;7620:67;7684:2;7679:3;7620:67;;;7720:34;7700:55;;7789:30;7784:2;7775:12;;7768:52;7848:2;7839:12;;7606:251;-1:-1;;7606:251;7866:431;;8044:85;8126:2;8121:3;8044:85;;;8162:34;8142:55;;8231:28;8226:2;8217:12;;8210:50;8288:2;8279:12;;8030:267;-1:-1;;8030:267;8425:110;8506:23;8523:5;8506:23;;8542:107;8621:22;8637:5;8621:22;;8656:124;8738:36;8768:5;8738:36;;8787:110;8868:23;8885:5;8868:23;;8904:650;;9159:148;9303:3;9159:148;;;9152:155;;9318:75;9389:3;9380:6;9318:75;;;9415:2;9410:3;9406:12;9399:19;;9429:75;9500:3;9491:6;9429:75;;;-1:-1;9526:2;9517:12;;9140:414;-1:-1;;9140:414;9561:372;;9760:148;9904:3;9760:148;;9940:372;;10139:148;10283:3;10139:148;;10319:213;10437:2;10422:18;;10451:71;10426:9;10495:6;10451:71;;10539:201;10651:2;10636:18;;10665:65;10640:9;10703:6;10665:65;;10747:213;10865:2;10850:18;;10879:71;10854:9;10923:6;10879:71;;10967:547;11169:3;11154:19;;11184:71;11158:9;11228:6;11184:71;;;11266:72;11334:2;11323:9;11319:18;11310:6;11266:72;;;11349;11417:2;11406:9;11402:18;11393:6;11349:72;;;11432;11500:2;11489:9;11485:18;11476:6;11432:72;;;11140:374;;;;;;;;11521:547;11723:3;11708:19;;11738:71;11712:9;11782:6;11738:71;;;11820:72;11888:2;11877:9;11873:18;11864:6;11820:72;;;11903;11971:2;11960:9;11956:18;11947:6;11903:72;;;11986;12054:2;12043:9;12039:18;12030:6;11986:72;;12075:539;12273:3;12258:19;;12288:71;12262:9;12332:6;12288:71;;;12370:68;12434:2;12423:9;12419:18;12410:6;12370:68;;12621:293;12755:2;12769:47;;;12740:18;;12830:74;12740:18;12890:6;12830:74;;13229:407;13420:2;13434:47;;;13405:18;;13495:131;13405:18;13495:131;;13643:407;13834:2;13848:47;;;13819:18;;13909:131;13819:18;13909:131;;14057:407;14248:2;14262:47;;;14233:18;;14323:131;14233:18;14323:131;;14471:407;14662:2;14676:47;;;14647:18;;14737:131;14647:18;14737:131;;14885:407;15076:2;15090:47;;;15061:18;;15151:131;15061:18;15151:131;;15299:407;15490:2;15504:47;;;15475:18;;15565:131;15475:18;15565:131;;15933:209;16049:2;16034:18;;16063:69;16038:9;16105:6;16063:69;;16149:316;16291:2;16276:18;;16305:69;16280:9;16347:6;16305:69;;;16385:70;16451:2;16440:9;16436:18;16427:6;16385:70;;16472:205;16586:2;16571:18;;16600:67;16575:9;16640:6;16600:67;;16684:211;16801:2;16786:18;;16815:70;16790:9;16858:6;16815:70;;16902:209;17018:2;17003:18;;17032:69;17007:9;17074:6;17032:69;;17118:320;17262:2;17247:18;;17276:70;17251:9;17319:6;17276:70;;;17357:71;17424:2;17413:9;17409:18;17400:6;17357:71;;17445:118;17529:12;;17500:63;17700:163;17803:19;;;17852:4;17843:14;;17796:67;17872:145;18008:3;17986:31;-1:-1;17986:31;18025:91;;18087:24;18105:5;18087:24;;18123:85;18189:13;18182:21;;18165:43;18215:72;18277:5;18260:27;18294:121;-1:-1;;;;;18356:54;;18339:76;18501:88;18573:10;18562:22;;18545:44;18596:81;18667:4;18656:16;;18639:38;18684:104;-1:-1;;;;;18745:38;;18728:60;18795:106;;18873:23;18890:5;18873:23;;18909:268;18974:1;18981:101;18995:6;18992:1;18989:13;18981:101;;;19062:11;;;19056:18;19043:11;;;19036:39;19017:2;19010:10;18981:101;;;19097:6;19094:1;19091:13;19088:2;;;-1:-1;;19162:1;19144:16;;19137:27;18958:219;19266:97;19354:2;19334:14;-1:-1;;19330:28;;19314:49;19371:117;19440:24;19458:5;19440:24;;;19433:5;19430:35;19420:2;;19479:1;19476;19469:12;19495:117;19564:24;19582:5;19564:24;;19743:115;19811:23;19828:5;19811:23;;19865:113;19932:22;19948:5;19932:22;"},"methodIdentifiers":{"DELEGATION_TYPEHASH()":"e7a324dc","DOMAIN_TYPEHASH()":"20606b70","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","checkpoints(address,uint32)":"f1127ed8","decimals()":"313ce567","delegate(address)":"5c19a95c","delegateBySig(address,uint256,uint256,uint8,bytes32,bytes32)":"c3cda520","delegates(address)":"587cde1e","getCurrentVotes(address)":"b4b5ea57","getPriorVotes(address,uint256)":"782d6fe1","name()":"06fdde03","nonces(address)":"7ecebe00","numCheckpoints(address)":"6fcfff45","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"fromDelegate\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"toDelegate\",\"type\":\"address\"}],\"name\":\"DelegateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegate\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"previousBalance\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newBalance\",\"type\":\"uint256\"}],\"name\":\"DelegateVotesChanged\",\"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\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"DELEGATION_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"DOMAIN_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"rawAmount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"checkpoints\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"fromBlock\",\"type\":\"uint32\"},{\"internalType\":\"uint96\",\"name\":\"votes\",\"type\":\"uint96\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"}],\"name\":\"delegate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"delegateBySig\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"delegates\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getCurrentVotes\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"\",\"type\":\"uint96\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"getPriorVotes\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"\",\"type\":\"uint96\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"numCheckpoints\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"rawAmount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"rawAmount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"allowance(address,address)\":{\"params\":{\"account\":\"The address of the account holding the funds\",\"spender\":\"The address of the account spending the funds\"},\"return\":\"The number of tokens approved\"},\"approve(address,uint256)\":{\"details\":\"This will overwrite the approval amount for `spender` and is subject to issues noted [here](https://eips.ethereum.org/EIPS/eip-20#approve)\",\"params\":{\"rawAmount\":\"The number of tokens that are approved (2^256-1 means infinite)\",\"spender\":\"The address of the account which may transfer tokens\"},\"return\":\"Whether or not the approval succeeded\"},\"balanceOf(address)\":{\"params\":{\"account\":\"The address of the account to get the balance of\"},\"return\":\"The number of tokens held\"},\"constructor\":{\"params\":{\"account\":\"The initial account to grant all the tokens\"}},\"delegate(address)\":{\"params\":{\"delegatee\":\"The address to delegate votes to\"}},\"delegateBySig(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"params\":{\"delegatee\":\"The address to delegate votes to\",\"expiry\":\"The time at which to expire the signature\",\"nonce\":\"The contract state required to match the signature\",\"r\":\"Half of the ECDSA signature pair\",\"s\":\"Half of the ECDSA signature pair\",\"v\":\"The recovery byte of the signature\"}},\"getCurrentVotes(address)\":{\"params\":{\"account\":\"The address to get votes balance\"},\"return\":\"The number of current votes for `account`\"},\"getPriorVotes(address,uint256)\":{\"details\":\"Block number must be a finalized block or else this function will revert to prevent misinformation.\",\"params\":{\"account\":\"The address of the account to check\",\"blockNumber\":\"The block number to get the vote balance at\"},\"return\":\"The number of votes the account had as of the given block\"},\"transfer(address,uint256)\":{\"params\":{\"dst\":\"The address of the destination account\",\"rawAmount\":\"The number of tokens to transfer\"},\"return\":\"Whether or not the transfer succeeded\"},\"transferFrom(address,address,uint256)\":{\"params\":{\"dst\":\"The address of the destination account\",\"rawAmount\":\"The number of tokens to transfer\",\"src\":\"The address of the source account\"},\"return\":\"Whether or not the transfer succeeded\"}}},\"userdoc\":{\"methods\":{\"allowance(address,address)\":{\"notice\":\"Get the number of tokens `spender` is approved to spend on behalf of `account`\"},\"approve(address,uint256)\":{\"notice\":\"Approve `spender` to transfer up to `amount` from `src`\"},\"balanceOf(address)\":{\"notice\":\"Get the number of tokens held by the `account`\"},\"constructor\":\"Construct a new Comp token\",\"delegate(address)\":{\"notice\":\"Delegate votes from `msg.sender` to `delegatee`\"},\"delegateBySig(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Delegates votes from signatory to `delegatee`\"},\"getCurrentVotes(address)\":{\"notice\":\"Gets the current votes balance for `account`\"},\"getPriorVotes(address,uint256)\":{\"notice\":\"Determine the prior number of votes for an account as of a block number\"},\"transfer(address,uint256)\":{\"notice\":\"Transfer `amount` tokens from `msg.sender` to `dst`\"},\"transferFrom(address,address,uint256)\":{\"notice\":\"Transfer `amount` tokens from `src` to `dst`\"}}}},\"settings\":{\"compilationTarget\":{\"contracts/Governance/Comp.sol\":\"Comp\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/Governance/Comp.sol\":{\"keccak256\":\"0x2309c20909360c500299d47fc351167265f8b2862dd7848828c928e32d8f7107\",\"urls\":[\"bzz-raw://14f6f4d15ab2f0cfabec2f381463c0cd78fa861deeca0a1fca103eb3ac9a1709\",\"dweb:/ipfs/QmWJWWVmNjDXBQPMZcfz1VGBHk2P7SuU3tCw8N1qtTyhAn\"]}},\"version\":1}"}},"contracts/Governance/GovernorAlpha.sol":{"CompInterface":{"abi":[{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPriorVotes","outputs":[{"internalType":"uint96","name":"","type":"uint96"}],"payable":false,"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getPriorVotes(address,uint256)":"782d6fe1"}},"metadata":"{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"getPriorVotes\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"\",\"type\":\"uint96\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/Governance/GovernorAlpha.sol\":\"CompInterface\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/Governance/GovernorAlpha.sol\":{\"keccak256\":\"0xc91c70583f8edc55495b739b53bc9f0e95b2291cde29e0923ebf4435a7b5a269\",\"urls\":[\"bzz-raw://b74d9e0709ace54fa457a17da0e647ca5c60499bf74c0162479c14792f452f4c\",\"dweb:/ipfs/QmZ9eGjrXsxXTc3JKF7GrygMn49jRXFQjKzyg7hLPu7JuN\"]}},\"version\":1}"},"GovernorAlpha":{"abi":[{"inputs":[{"internalType":"address","name":"timelock_","type":"address"},{"internalType":"address","name":"comp_","type":"address"},{"internalType":"address","name":"guardian_","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"}],"name":"ProposalCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"address[]","name":"targets","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"},{"indexed":false,"internalType":"string[]","name":"signatures","type":"string[]"},{"indexed":false,"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"indexed":false,"internalType":"uint256","name":"startBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endBlock","type":"uint256"},{"indexed":false,"internalType":"string","name":"description","type":"string"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"eta","type":"uint256"}],"name":"ProposalQueued","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"bool","name":"support","type":"bool"},{"indexed":false,"internalType":"uint256","name":"votes","type":"uint256"}],"name":"VoteCast","type":"event"},{"constant":true,"inputs":[],"name":"BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"DOMAIN_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"__abdicate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"__acceptAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newPendingAdmin","type":"address"},{"internalType":"uint256","name":"eta","type":"uint256"}],"name":"__executeSetTimelockPendingAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newPendingAdmin","type":"address"},{"internalType":"uint256","name":"eta","type":"uint256"}],"name":"__queueSetTimelockPendingAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"cancel","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"bool","name":"support","type":"bool"}],"name":"castVote","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"bool","name":"support","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteBySig","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"comp","outputs":[{"internalType":"contract CompInterface","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"execute","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"getActions","outputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"string[]","name":"signatures","type":"string[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"address","name":"voter","type":"address"}],"name":"getReceipt","outputs":[{"components":[{"internalType":"bool","name":"hasVoted","type":"bool"},{"internalType":"bool","name":"support","type":"bool"},{"internalType":"uint96","name":"votes","type":"uint96"}],"internalType":"struct GovernorAlpha.Receipt","name":"","type":"tuple"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"guardian","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"latestProposalIds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"proposalCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"proposalMaxOperations","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"proposalThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"proposals","outputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"address","name":"proposer","type":"address"},{"internalType":"uint256","name":"eta","type":"uint256"},{"internalType":"uint256","name":"startBlock","type":"uint256"},{"internalType":"uint256","name":"endBlock","type":"uint256"},{"internalType":"uint256","name":"forVotes","type":"uint256"},{"internalType":"uint256","name":"againstVotes","type":"uint256"},{"internalType":"bool","name":"canceled","type":"bool"},{"internalType":"bool","name":"executed","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"string[]","name":"signatures","type":"string[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"queue","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"quorumVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"state","outputs":[{"internalType":"enum GovernorAlpha.ProposalState","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"timelock","outputs":[{"internalType":"contract TimelockInterface","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"votingDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"votingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60806040523480156200001157600080fd5b506040516200391d3803806200391d83398101604081905262000034916200008a565b600080546001600160a01b039485166001600160a01b0319918216179091556001805493851693821693909317909255600280549190931691161790556200010a565b80516200008481620000f0565b92915050565b600080600060608486031215620000a057600080fd5b6000620000ae868662000077565b9350506020620000c18682870162000077565b9250506040620000d48682870162000077565b9150509250925092565b60006001600160a01b03821662000084565b620000fb81620000de565b81146200010757600080fd5b50565b613803806200011a6000396000f3fe60806040526004361061019c5760003560e01c8063452a9320116100ec578063d33219b41161008a578063ddf0b00911610064578063ddf0b00914610463578063deaaa7cc14610483578063e23a9a5214610498578063fe0d94c1146104c55761019c565b8063d33219b414610419578063da35c6641461042e578063da95691a146104435761019c565b80637bdbe4d0116100c65780637bdbe4d0146103ba57806391500671146103cf578063b58131b0146103ef578063b9a61961146104045761019c565b8063452a9320146103635780634634c61f14610385578063760fbc13146103a55761019c565b806320606b7011610159578063328dd98211610133578063328dd982146102d15780633932abb1146103015780633e4f49e61461031657806340e58ee5146103435761019c565b806320606b701461028757806321f43e421461029c57806324bc1a64146102bc5761019c565b8063013cf08b146101a157806302a251a3146101df57806306fdde0314610201578063109d0af81461022357806315373e3d1461024557806317977c6114610267575b600080fd5b3480156101ad57600080fd5b506101c16101bc366004612449565b6104d8565b6040516101d6999897969594939291906135ae565b60405180910390f35b3480156101eb57600080fd5b506101f4610531565b6040516101d691906132db565b34801561020d57600080fd5b50610216610538565b6040516101d69190613397565b34801561022f57600080fd5b5061023861056b565b6040516101d6919061337b565b34801561025157600080fd5b50610265610260366004612497565b61057a565b005b34801561027357600080fd5b506101f461028236600461228c565b610589565b34801561029357600080fd5b506101f461059b565b3480156102a857600080fd5b506102656102b73660046122b2565b6105b2565b3480156102c857600080fd5b506101f4610699565b3480156102dd57600080fd5b506102f16102ec366004612449565b6106a7565b6040516101d6949392919061328e565b34801561030d57600080fd5b506101f4610936565b34801561032257600080fd5b50610336610331366004612449565b61093b565b6040516101d69190613389565b34801561034f57600080fd5b5061026561035e366004612449565b610abd565b34801561036f57600080fd5b50610378610d26565b6040516101d69190613138565b34801561039157600080fd5b506102656103a03660046124c7565b610d35565b3480156103b157600080fd5b50610265610ecc565b3480156103c657600080fd5b506101f4610f08565b3480156103db57600080fd5b506102656103ea3660046122b2565b610f0d565b3480156103fb57600080fd5b506101f4610fe2565b34801561041057600080fd5b50610265610ff0565b34801561042557600080fd5b50610238611075565b34801561043a57600080fd5b506101f4611084565b34801561044f57600080fd5b506101f461045e3660046122ec565b61108a565b34801561046f57600080fd5b5061026561047e366004612449565b6114ac565b34801561048f57600080fd5b506101f4611716565b3480156104a457600080fd5b506104b86104b3366004612467565b611722565b6040516101d691906134f8565b6102656104d3366004612449565b611791565b6004602052600090815260409020805460018201546002830154600784015460088501546009860154600a870154600b9097015495966001600160a01b0390951695939492939192909160ff8082169161010090041689565b6143805b90565b60405180604001604052806017815260200176436f6d706f756e6420476f7665726e6f7220416c70686160481b81525081565b6001546001600160a01b031681565b610585338383611956565b5050565b60056020526000908152604090205481565b6040516105a790613122565b604051809103902081565b6002546001600160a01b031633146105e55760405162461bcd60e51b81526004016105dc906133d8565b60405180910390fd5b600080546040516001600160a01b0390911691630825f38f9183919061060f908790602001613138565b604051602081830303815290604052856040518563ffffffff1660e01b815260040161063e9493929190613161565b600060405180830381600087803b15801561065857600080fd5b505af115801561066c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106949190810190612414565b505050565b6954b40b1f852bda00000090565b6060806060806000600460008781526020019081526020016000209050806003018160040182600501836006018380548060200260200160405190810160405280929190818152602001828054801561072957602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161070b575b505050505093508280548060200260200160405190810160405280929190818152602001828054801561077b57602002820191906000526020600020905b815481526020019060010190808311610767575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b8282101561084e5760008481526020908190208301805460408051601f600260001961010060018716150201909416939093049283018590048502810185019091528181529283018282801561083a5780601f1061080f5761010080835404028352916020019161083a565b820191906000526020600020905b81548152906001019060200180831161081d57829003601f168201915b5050505050815260200190600101906107a3565b50505050915080805480602002602001604051908101604052809291908181526020016000905b828210156109205760008481526020908190208301805460408051601f600260001961010060018716150201909416939093049283018590048502810185019091528181529283018282801561090c5780601f106108e15761010080835404028352916020019161090c565b820191906000526020600020905b8154815290600101906020018083116108ef57829003601f168201915b505050505081526020019060010190610875565b5050505090509450945094509450509193509193565b600190565b6000816003541015801561094f5750600082115b61096b5760405162461bcd60e51b81526004016105dc906133e8565b6000828152600460205260409020600b81015460ff1615610990576002915050610ab8565b806007015443116109a5576000915050610ab8565b806008015443116109ba576001915050610ab8565b80600a015481600901541115806109db57506109d4610699565b8160090154105b156109ea576003915050610ab8565b60028101546109fd576004915050610ab8565b600b810154610100900460ff1615610a19576007915050610ab8565b6002810154600054604080516360d143f160e11b81529051610aa293926001600160a01b03169163c1a287e2916004808301926020929190829003018186803b158015610a6557600080fd5b505afa158015610a79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a9d91908101906123f6565b611b1f565b4210610ab2576006915050610ab8565b60059150505b919050565b6000610ac88261093b565b90506007816007811115610ad857fe5b1415610af65760405162461bcd60e51b81526004016105dc906134b8565b60008281526004602052604090206002546001600160a01b0316331480610bc15750610b20610fe2565b60018054838201546001600160a01b039182169263782d6fe19290911690610b49904390611b4b565b6040518363ffffffff1660e01b8152600401610b669291906131b0565b60206040518083038186803b158015610b7e57600080fd5b505afa158015610b92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610bb6919081019061252f565b6001600160601b0316105b610bdd5760405162461bcd60e51b81526004016105dc90613458565b600b8101805460ff1916600117905560005b6003820154811015610ce9576000546003830180546001600160a01b039092169163591fcdfe919084908110610c2157fe5b6000918252602090912001546004850180546001600160a01b039092169185908110610c4957fe5b9060005260206000200154856005018581548110610c6357fe5b90600052602060002001866006018681548110610c7c57fe5b9060005260206000200187600201546040518663ffffffff1660e01b8152600401610cab95949392919061324d565b600060405180830381600087803b158015610cc557600080fd5b505af1158015610cd9573d6000803e3d6000fd5b505060019092019150610bef9050565b507f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c83604051610d1991906132db565b60405180910390a1505050565b6002546001600160a01b031681565b6000604051610d4390613122565b604080519182900382208282019091526017825276436f6d706f756e6420476f7665726e6f7220416c70686160481b6020909201919091527ff5eb22c2e7100465020c98b00537528808db4fec6eb24c550685a92742247bc5610da4611b73565b30604051602001610db894939291906132e9565b6040516020818303038152906040528051906020012090506000604051610dde9061312d565b604051908190038120610df7918990899060200161331e565b60405160208183030381529060405280519060200120905060008282604051602001610e249291906130f1565b604051602081830303815290604052805190602001209050600060018288888860405160008152602001604052604051610e619493929190613346565b6020604051602081039080840390855afa158015610e83573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610eb65760405162461bcd60e51b81526004016105dc90613498565b610ec1818a8a611956565b505050505050505050565b6002546001600160a01b03163314610ef65760405162461bcd60e51b81526004016105dc906134e8565b600280546001600160a01b0319169055565b600a90565b6002546001600160a01b03163314610f375760405162461bcd60e51b81526004016105dc90613418565b600080546040516001600160a01b0390911691633a66f90191839190610f61908790602001613138565b604051602081830303815290604052856040518563ffffffff1660e01b8152600401610f909493929190613161565b602060405180830381600087803b158015610faa57600080fd5b505af1158015610fbe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061069491908101906123f6565b69152d02c7e14af680000090565b6002546001600160a01b0316331461101a5760405162461bcd60e51b81526004016105dc906133a8565b6000805460408051630e18b68160e01b815290516001600160a01b0390921692630e18b6819260048084019382900301818387803b15801561105b57600080fd5b505af115801561106f573d6000803e3d6000fd5b50505050565b6000546001600160a01b031681565b60035481565b6000611094610fe2565b600180546001600160a01b03169063782d6fe19033906110b5904390611b4b565b6040518363ffffffff1660e01b81526004016110d2929190613146565b60206040518083038186803b1580156110ea57600080fd5b505afa1580156110fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611122919081019061252f565b6001600160601b0316116111485760405162461bcd60e51b81526004016105dc90613488565b8451865114801561115a575083518651145b8015611167575082518651145b6111835760405162461bcd60e51b81526004016105dc90613448565b85516111a15760405162461bcd60e51b81526004016105dc90613478565b6111a9610f08565b865111156111c95760405162461bcd60e51b81526004016105dc90613428565b3360009081526005602052604090205480156112465760006111ea8261093b565b905060018160078111156111fa57fe5b14156112185760405162461bcd60e51b81526004016105dc906134a8565b600081600781111561122657fe5b14156112445760405162461bcd60e51b81526004016105dc90613408565b505b600061125443610a9d610936565b9050600061126482610a9d610531565b6003805460010190559050611277611cd6565b604051806101a001604052806003548152602001336001600160a01b03168152602001600081526020018b81526020018a815260200189815260200188815260200184815260200183815260200160008152602001600081526020016000151581526020016000151581525090508060046000836000015181526020019081526020016000206000820151816000015560208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020155606082015181600301908051906020019061135a929190611d4b565b5060808201518051611376916004840191602090910190611db0565b5060a08201518051611392916005840191602090910190611df7565b5060c082015180516113ae916006840191602090910190611e50565b5060e082015181600701556101008201518160080155610120820151816009015561014082015181600a015561016082015181600b0160006101000a81548160ff02191690831515021790555061018082015181600b0160016101000a81548160ff02191690831515021790555090505080600001516005600083602001516001600160a01b03166001600160a01b03168152602001908152602001600020819055507f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e08160000151338c8c8c8c89898e60405161149499989796959493929190613506565b60405180910390a15193505050505b95945050505050565b60046114b78261093b565b60078111156114c257fe5b146114df5760405162461bcd60e51b81526004016105dc906133b8565b600081815260046020818152604080842084548251630d48571f60e31b815292519195946115349442946001600160a01b0390931693636a42b8f8938084019390829003018186803b158015610a6557600080fd5b905060005b60038301548110156116dc576116d483600301828154811061155757fe5b6000918252602090912001546004850180546001600160a01b03909216918490811061157f57fe5b906000526020600020015485600501848154811061159957fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156116275780601f106115fc57610100808354040283529160200191611627565b820191906000526020600020905b81548152906001019060200180831161160a57829003601f168201915b505050505086600601858154811061163b57fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156116c95780601f1061169e576101008083540402835291602001916116c9565b820191906000526020600020905b8154815290600101906020018083116116ac57829003601f168201915b505050505086611b77565b600101611539565b50600282018190556040517f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda289290610d199085908490613634565b6040516105a79061312d565b61172a611ea9565b5060008281526004602090815260408083206001600160a01b0385168452600c018252918290208251606081018452905460ff80821615158352610100820416151592820192909252620100009091046001600160601b0316918101919091525b92915050565b600561179c8261093b565b60078111156117a757fe5b146117c45760405162461bcd60e51b81526004016105dc906133c8565b6000818152600460205260408120600b8101805461ff001916610100179055905b600382015481101561191a576000546004830180546001600160a01b0390921691630825f38f91908490811061181757fe5b906000526020600020015484600301848154811061183157fe5b6000918252602090912001546004860180546001600160a01b03909216918690811061185957fe5b906000526020600020015486600501868154811061187357fe5b9060005260206000200187600601878154811061188c57fe5b9060005260206000200188600201546040518763ffffffff1660e01b81526004016118bb95949392919061324d565b6000604051808303818588803b1580156118d457600080fd5b505af11580156118e8573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526119119190810190612414565b506001016117e5565b507f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f8260405161194a91906132db565b60405180910390a15050565b60016119618361093b565b600781111561196c57fe5b146119895760405162461bcd60e51b81526004016105dc906134c8565b60008281526004602090815260408083206001600160a01b0387168452600c8101909252909120805460ff16156119d25760405162461bcd60e51b81526004016105dc906133f8565b600154600783015460405163782d6fe160e01b81526000926001600160a01b03169163782d6fe191611a08918a916004016131b0565b60206040518083038186803b158015611a2057600080fd5b505afa158015611a34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611a58919081019061252f565b90508315611a8157611a778360090154826001600160601b0316611b1f565b6009840155611a9e565b611a9883600a0154826001600160601b0316611b1f565b600a8401555b8154600160ff199091161761ff00191661010085151502176dffffffffffffffffffffffff00001916620100006001600160601b038316021782556040517f877856338e13f63d0c36822ff0ef736b80934cd90574a3a5bc9262c39d217c4690611b0f9088908890889086906131be565b60405180910390a1505050505050565b600082820183811015611b445760405162461bcd60e51b81526004016105dc90613438565b9392505050565b600082821115611b6d5760405162461bcd60e51b81526004016105dc906134d8565b50900390565b4690565b6000546040516001600160a01b039091169063f2b0653790611ba590889088908890889088906020016131f3565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b8152600401611bd791906132db565b60206040518083038186803b158015611bef57600080fd5b505afa158015611c03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611c2791908101906123d8565b15611c445760405162461bcd60e51b81526004016105dc90613468565b600054604051633a66f90160e01b81526001600160a01b0390911690633a66f90190611c7c90889088908890889088906004016131f3565b602060405180830381600087803b158015611c9657600080fd5b505af1158015611caa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611cce91908101906123f6565b505050505050565b604051806101a001604052806000815260200160006001600160a01b031681526020016000815260200160608152602001606081526020016060815260200160608152602001600081526020016000815260200160008152602001600081526020016000151581526020016000151581525090565b828054828255906000526020600020908101928215611da0579160200282015b82811115611da057825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190611d6b565b50611dac929150611ec9565b5090565b828054828255906000526020600020908101928215611deb579160200282015b82811115611deb578251825591602001919060010190611dd0565b50611dac929150611eed565b828054828255906000526020600020908101928215611e44579160200282015b82811115611e445782518051611e34918491602090910190611f07565b5091602001919060010190611e17565b50611dac929150611f74565b828054828255906000526020600020908101928215611e9d579160200282015b82811115611e9d5782518051611e8d918491602090910190611f07565b5091602001919060010190611e70565b50611dac929150611f97565b604080516060810182526000808252602082018190529181019190915290565b61053591905b80821115611dac5780546001600160a01b0319168155600101611ecf565b61053591905b80821115611dac5760008155600101611ef3565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611f4857805160ff1916838001178555611deb565b82800160010185558215611deb5791820182811115611deb578251825591602001919060010190611dd0565b61053591905b80821115611dac576000611f8e8282611fba565b50600101611f7a565b61053591905b80821115611dac576000611fb18282611fba565b50600101611f9d565b50805460018160011615610100020316600290046000825580601f10611fe05750611ffe565b601f016020900490600052602060002090810190611ffe9190611eed565b50565b803561178b81613788565b600082601f83011261201d57600080fd5b813561203061202b82613669565b613642565b9150818183526020840193506020810190508385602084028201111561205557600080fd5b60005b83811015612081578161206b8882612001565b8452506020928301929190910190600101612058565b5050505092915050565b600082601f83011261209c57600080fd5b81356120aa61202b82613669565b81815260209384019390925082018360005b8381101561208157813586016120d288826121e1565b84525060209283019291909101906001016120bc565b600082601f8301126120f957600080fd5b813561210761202b82613669565b81815260209384019390925082018360005b83811015612081578135860161212f88826121e1565b8452506020928301929190910190600101612119565b600082601f83011261215657600080fd5b813561216461202b82613669565b9150818183526020840193506020810190508385602084028201111561218957600080fd5b60005b83811015612081578161219f88826121cb565b845250602092830192919091019060010161218c565b803561178b8161379c565b805161178b8161379c565b803561178b816137a5565b805161178b816137a5565b600082601f8301126121f257600080fd5b813561220061202b8261368a565b9150808252602083016020830185838301111561221c57600080fd5b61222783828461373c565b50505092915050565b600082601f83011261224157600080fd5b815161224f61202b8261368a565b9150808252602083016020830185838301111561226b57600080fd5b612227838284613748565b803561178b816137ae565b805161178b816137b7565b60006020828403121561229e57600080fd5b60006122aa8484612001565b949350505050565b600080604083850312156122c557600080fd5b60006122d18585612001565b92505060206122e2858286016121cb565b9150509250929050565b600080600080600060a0868803121561230457600080fd5b853567ffffffffffffffff81111561231b57600080fd5b6123278882890161200c565b955050602086013567ffffffffffffffff81111561234457600080fd5b61235088828901612145565b945050604086013567ffffffffffffffff81111561236d57600080fd5b612379888289016120e8565b935050606086013567ffffffffffffffff81111561239657600080fd5b6123a28882890161208b565b925050608086013567ffffffffffffffff8111156123bf57600080fd5b6123cb888289016121e1565b9150509295509295909350565b6000602082840312156123ea57600080fd5b60006122aa84846121c0565b60006020828403121561240857600080fd5b60006122aa84846121d6565b60006020828403121561242657600080fd5b815167ffffffffffffffff81111561243d57600080fd5b6122aa84828501612230565b60006020828403121561245b57600080fd5b60006122aa84846121cb565b6000806040838503121561247a57600080fd5b600061248685856121cb565b92505060206122e285828601612001565b600080604083850312156124aa57600080fd5b60006124b685856121cb565b92505060206122e2858286016121b5565b600080600080600060a086880312156124df57600080fd5b60006124eb88886121cb565b95505060206124fc888289016121b5565b945050604061250d88828901612276565b935050606061251e888289016121cb565b92505060806123cb888289016121cb565b60006020828403121561254157600080fd5b60006122aa8484612281565b60006125598383612588565b505060200190565b6000611b44838361272a565b60006125598383612710565b61258281613709565b82525050565b612582816136d1565b600061259c826136c4565b6125a681856136c8565b93506125b1836136b2565b8060005b838110156125df5781516125c9888261254d565b97506125d4836136b2565b9250506001016125b5565b509495945050505050565b60006125f5826136c4565b6125ff81856136c8565b935083602082028501612611856136b2565b8060005b8581101561264b578484038952815161262e8582612561565b9450612639836136b2565b60209a909a0199925050600101612615565b5091979650505050505050565b6000612663826136c4565b61266d81856136c8565b93508360208202850161267f856136b2565b8060005b8581101561264b578484038952815161269c8582612561565b94506126a7836136b2565b60209a909a0199925050600101612683565b60006126c4826136c4565b6126ce81856136c8565b93506126d9836136b2565b8060005b838110156125df5781516126f1888261256d565b97506126fc836136b2565b9250506001016126dd565b612582816136dc565b61258281610535565b61258261272582610535565b610535565b6000612735826136c4565b61273f81856136c8565b935061274f818560208601613748565b61275881613774565b9093019392505050565b60008154600181166000811461277f57600181146127a5576127e4565b607f600283041661279081876136c8565b60ff19841681529550506020850192506127e4565b600282046127b381876136c8565b95506127be856136b8565b60005b828110156127dd578154888201526001909101906020016127c1565b8701945050505b505092915050565b61258281613710565b6125828161371b565b61258281613726565b60006128146039836136c8565b7f476f7665726e6f72416c7068613a3a5f5f61636365707441646d696e3a20736581527f6e646572206d75737420626520676f7620677561726469616e00000000000000602082015260400192915050565b60006128736044836136c8565b7f476f7665726e6f72416c7068613a3a71756575653a2070726f706f73616c206381527f616e206f6e6c79206265207175657565642069662069742069732073756363656020820152631959195960e21b604082015260600192915050565b60006128df6045836136c8565b7f476f7665726e6f72416c7068613a3a657865637574653a2070726f706f73616c81527f2063616e206f6e6c7920626520657865637574656420696620697420697320716020820152641d595d595960da1b604082015260600192915050565b600061294c600283610ab8565b61190160f01b815260020192915050565b600061296a604c836136c8565b7f476f7665726e6f72416c7068613a3a5f5f6578656375746553657454696d656c81527f6f636b50656e64696e6741646d696e3a2073656e646572206d7573742062652060208201526b33b7bb1033bab0b93234b0b760a11b604082015260600192915050565b60006129de6018836136c8565b7f73657450656e64696e6741646d696e2861646472657373290000000000000000815260200192915050565b6000612a176029836136c8565b7f476f7665726e6f72416c7068613a3a73746174653a20696e76616c69642070728152681bdc1bdcd85b081a5960ba1b602082015260400192915050565b6000612a62602d836136c8565b7f476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f7465722081526c185b1c9958591e481d9bdd1959609a1b602082015260400192915050565b6000612ab16059836136c8565b7f476f7665726e6f72416c7068613a3a70726f706f73653a206f6e65206c69766581527f2070726f706f73616c207065722070726f706f7365722c20666f756e6420616e60208201527f20616c72656164792070656e64696e672070726f706f73616c00000000000000604082015260600192915050565b6000612b36604a836136c8565b7f476f7665726e6f72416c7068613a3a5f5f717565756553657454696d656c6f6381527f6b50656e64696e6741646d696e3a2073656e646572206d75737420626520676f6020820152693b1033bab0b93234b0b760b11b604082015260600192915050565b6000612ba86028836136c8565b7f476f7665726e6f72416c7068613a3a70726f706f73653a20746f6f206d616e7981526720616374696f6e7360c01b602082015260400192915050565b6000612bf26011836136c8565b706164646974696f6e206f766572666c6f7760781b815260200192915050565b6000612c1f604383610ab8565b7f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353681527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208201526263742960e81b604082015260430192915050565b6000612c8a602783610ab8565b7f42616c6c6f742875696e743235362070726f706f73616c49642c626f6f6c20738152667570706f72742960c81b602082015260270192915050565b6000612cd36044836136c8565b7f476f7665726e6f72416c7068613a3a70726f706f73653a2070726f706f73616c81527f2066756e6374696f6e20696e666f726d6174696f6e206172697479206d69736d6020820152630c2e8c6d60e31b604082015260600192915050565b6000612d3f602f836136c8565b7f476f7665726e6f72416c7068613a3a63616e63656c3a2070726f706f7365722081526e18589bdd99481d1a1c995cda1bdb19608a1b602082015260400192915050565b6000612d906044836136c8565b7f476f7665726e6f72416c7068613a3a5f71756575654f725265766572743a207081527f726f706f73616c20616374696f6e20616c7265616479207175657565642061746020820152632065746160e01b604082015260600192915050565b6000612dfc602c836136c8565b7f476f7665726e6f72416c7068613a3a70726f706f73653a206d7573742070726f81526b7669646520616374696f6e7360a01b602082015260400192915050565b6000612e4a603f836136c8565b7f476f7665726e6f72416c7068613a3a70726f706f73653a2070726f706f73657281527f20766f7465732062656c6f772070726f706f73616c207468726573686f6c6400602082015260400192915050565b6000612ea9602f836136c8565b7f476f7665726e6f72416c7068613a3a63617374566f746542795369673a20696e81526e76616c6964207369676e617475726560881b602082015260400192915050565b6000612efa6058836136c8565b7f476f7665726e6f72416c7068613a3a70726f706f73653a206f6e65206c69766581527f2070726f706f73616c207065722070726f706f7365722c20666f756e6420616e60208201527f20616c7265616479206163746976652070726f706f73616c0000000000000000604082015260600192915050565b6000612f7f6036836136c8565b7f476f7665726e6f72416c7068613a3a63616e63656c3a2063616e6e6f742063618152751b98d95b08195e1958dd5d1959081c1c9bdc1bdcd85b60521b602082015260400192915050565b6000612fd7602a836136c8565b7f476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f74696e67815269081a5cc818db1bdcd95960b21b602082015260400192915050565b60006130236015836136c8565b747375627472616374696f6e20756e646572666c6f7760581b815260200192915050565b60006130546036836136c8565b7f476f7665726e6f72416c7068613a3a5f5f61626469636174653a2073656e6465815275391036bab9ba1031329033b7bb1033bab0b93234b0b760511b602082015260400192915050565b805160608301906130b08482612707565b5060208201516130c36020850182612707565b50604082015161106f60408501826130e8565b612582816136f7565b61258281613731565b612582816136fd565b60006130fc8261293f565b91506131088285612719565b6020820191506131188284612719565b5060200192915050565b600061178b82612c12565b600061178b82612c7d565b6020810161178b8284612588565b604081016131548285612579565b611b446020830184612710565b60a0810161316f8287612588565b61317c60208301866127fe565b818103604083015261318d816129d1565b905081810360608301526131a1818561272a565b90506114a36080830184612710565b604081016131548285612588565b608081016131cc8287612588565b6131d96020830186612710565b6131e66040830185612707565b6114a360608301846130df565b60a081016132018288612588565b61320e6020830187612710565b8181036040830152613220818661272a565b90508181036060830152613234818561272a565b90506132436080830184612710565b9695505050505050565b60a0810161325b8288612588565b6132686020830187612710565b818103604083015261327a8186612762565b905081810360608301526132348185612762565b6080808252810161329f8187612591565b905081810360208301526132b381866126b9565b905081810360408301526132c78185612658565b9050818103606083015261324381846125ea565b6020810161178b8284612710565b608081016132f78287612710565b6133046020830186612710565b6133116040830185612710565b6114a36060830184612588565b6060810161332c8286612710565b6133396020830185612710565b6122aa6040830184612707565b608081016133548287612710565b61336160208301866130d6565b61336e6040830185612710565b6114a36060830184612710565b6020810161178b82846127ec565b6020810161178b82846127f5565b60208082528101611b44818461272a565b6020808252810161178b81612807565b6020808252810161178b81612866565b6020808252810161178b816128d2565b6020808252810161178b8161295d565b6020808252810161178b81612a0a565b6020808252810161178b81612a55565b6020808252810161178b81612aa4565b6020808252810161178b81612b29565b6020808252810161178b81612b9b565b6020808252810161178b81612be5565b6020808252810161178b81612cc6565b6020808252810161178b81612d32565b6020808252810161178b81612d83565b6020808252810161178b81612def565b6020808252810161178b81612e3d565b6020808252810161178b81612e9c565b6020808252810161178b81612eed565b6020808252810161178b81612f72565b6020808252810161178b81612fca565b6020808252810161178b81613016565b6020808252810161178b81613047565b6060810161178b828461309f565b6101208101613515828c612710565b613522602083018b612579565b8181036040830152613534818a612591565b9050818103606083015261354881896126b9565b9050818103608083015261355c8188612658565b905081810360a083015261357081876125ea565b905061357f60c0830186612710565b61358c60e0830185612710565b81810361010083015261359f818461272a565b9b9a5050505050505050505050565b61012081016135bd828c612710565b6135ca602083018b612588565b6135d7604083018a612710565b6135e46060830189612710565b6135f16080830188612710565b6135fe60a0830187612710565b61360b60c0830186612710565b61361860e0830185612707565b613626610100830184612707565b9a9950505050505050505050565b604081016131548285612710565b60405181810167ffffffffffffffff8111828210171561366157600080fd5b604052919050565b600067ffffffffffffffff82111561368057600080fd5b5060209081020190565b600067ffffffffffffffff8211156136a157600080fd5b506020601f91909101601f19160190565b60200190565b60009081526020902090565b5190565b90815260200190565b600061178b826136eb565b151590565b80610ab88161377e565b6001600160a01b031690565b60ff1690565b6001600160601b031690565b600061178b825b600061178b826136d1565b600061178b826136e1565b600061178b82610535565b600061178b826136fd565b82818337506000910152565b60005b8381101561376357818101518382015260200161374b565b8381111561106f5750506000910152565b601f01601f191690565b60088110611ffe57fe5b613791816136d1565b8114611ffe57600080fd5b613791816136dc565b61379181610535565b613791816136f7565b613791816136fd56fea365627a7a7231582058d5679a9fb229541a103f1666e704e0b7878d9775a881e8ba6d89f8a606c4e06c6578706572696d656e74616cf564736f6c63430005110040","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x391D CODESIZE SUB DUP1 PUSH3 0x391D DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x8A JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP4 DUP6 AND SWAP4 DUP3 AND SWAP4 SWAP1 SWAP4 OR SWAP1 SWAP3 SSTORE PUSH1 0x2 DUP1 SLOAD SWAP2 SWAP1 SWAP4 AND SWAP2 AND OR SWAP1 SSTORE PUSH3 0x10A JUMP JUMPDEST DUP1 MLOAD PUSH3 0x84 DUP2 PUSH3 0xF0 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0xA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0xAE DUP7 DUP7 PUSH3 0x77 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH3 0xC1 DUP7 DUP3 DUP8 ADD PUSH3 0x77 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH3 0xD4 DUP7 DUP3 DUP8 ADD PUSH3 0x77 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH3 0x84 JUMP JUMPDEST PUSH3 0xFB DUP2 PUSH3 0xDE JUMP JUMPDEST DUP2 EQ PUSH3 0x107 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x3803 DUP1 PUSH3 0x11A PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x19C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x452A9320 GT PUSH2 0xEC JUMPI DUP1 PUSH4 0xD33219B4 GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xDDF0B009 GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xDDF0B009 EQ PUSH2 0x463 JUMPI DUP1 PUSH4 0xDEAAA7CC EQ PUSH2 0x483 JUMPI DUP1 PUSH4 0xE23A9A52 EQ PUSH2 0x498 JUMPI DUP1 PUSH4 0xFE0D94C1 EQ PUSH2 0x4C5 JUMPI PUSH2 0x19C JUMP JUMPDEST DUP1 PUSH4 0xD33219B4 EQ PUSH2 0x419 JUMPI DUP1 PUSH4 0xDA35C664 EQ PUSH2 0x42E JUMPI DUP1 PUSH4 0xDA95691A EQ PUSH2 0x443 JUMPI PUSH2 0x19C JUMP JUMPDEST DUP1 PUSH4 0x7BDBE4D0 GT PUSH2 0xC6 JUMPI DUP1 PUSH4 0x7BDBE4D0 EQ PUSH2 0x3BA JUMPI DUP1 PUSH4 0x91500671 EQ PUSH2 0x3CF JUMPI DUP1 PUSH4 0xB58131B0 EQ PUSH2 0x3EF JUMPI DUP1 PUSH4 0xB9A61961 EQ PUSH2 0x404 JUMPI PUSH2 0x19C JUMP JUMPDEST DUP1 PUSH4 0x452A9320 EQ PUSH2 0x363 JUMPI DUP1 PUSH4 0x4634C61F EQ PUSH2 0x385 JUMPI DUP1 PUSH4 0x760FBC13 EQ PUSH2 0x3A5 JUMPI PUSH2 0x19C JUMP JUMPDEST DUP1 PUSH4 0x20606B70 GT PUSH2 0x159 JUMPI DUP1 PUSH4 0x328DD982 GT PUSH2 0x133 JUMPI DUP1 PUSH4 0x328DD982 EQ PUSH2 0x2D1 JUMPI DUP1 PUSH4 0x3932ABB1 EQ PUSH2 0x301 JUMPI DUP1 PUSH4 0x3E4F49E6 EQ PUSH2 0x316 JUMPI DUP1 PUSH4 0x40E58EE5 EQ PUSH2 0x343 JUMPI PUSH2 0x19C JUMP JUMPDEST DUP1 PUSH4 0x20606B70 EQ PUSH2 0x287 JUMPI DUP1 PUSH4 0x21F43E42 EQ PUSH2 0x29C JUMPI DUP1 PUSH4 0x24BC1A64 EQ PUSH2 0x2BC JUMPI PUSH2 0x19C JUMP JUMPDEST DUP1 PUSH4 0x13CF08B EQ PUSH2 0x1A1 JUMPI DUP1 PUSH4 0x2A251A3 EQ PUSH2 0x1DF JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x201 JUMPI DUP1 PUSH4 0x109D0AF8 EQ PUSH2 0x223 JUMPI DUP1 PUSH4 0x15373E3D EQ PUSH2 0x245 JUMPI DUP1 PUSH4 0x17977C61 EQ PUSH2 0x267 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C1 PUSH2 0x1BC CALLDATASIZE PUSH1 0x4 PUSH2 0x2449 JUMP JUMPDEST PUSH2 0x4D8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1D6 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x35AE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F4 PUSH2 0x531 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1D6 SWAP2 SWAP1 PUSH2 0x32DB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x20D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x216 PUSH2 0x538 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1D6 SWAP2 SWAP1 PUSH2 0x3397 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x22F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x238 PUSH2 0x56B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1D6 SWAP2 SWAP1 PUSH2 0x337B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x251 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x265 PUSH2 0x260 CALLDATASIZE PUSH1 0x4 PUSH2 0x2497 JUMP JUMPDEST PUSH2 0x57A JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x273 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F4 PUSH2 0x282 CALLDATASIZE PUSH1 0x4 PUSH2 0x228C JUMP JUMPDEST PUSH2 0x589 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x293 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F4 PUSH2 0x59B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x265 PUSH2 0x2B7 CALLDATASIZE PUSH1 0x4 PUSH2 0x22B2 JUMP JUMPDEST PUSH2 0x5B2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F4 PUSH2 0x699 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F1 PUSH2 0x2EC CALLDATASIZE PUSH1 0x4 PUSH2 0x2449 JUMP JUMPDEST PUSH2 0x6A7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1D6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x328E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x30D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F4 PUSH2 0x936 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x322 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x336 PUSH2 0x331 CALLDATASIZE PUSH1 0x4 PUSH2 0x2449 JUMP JUMPDEST PUSH2 0x93B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1D6 SWAP2 SWAP1 PUSH2 0x3389 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x34F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x265 PUSH2 0x35E CALLDATASIZE PUSH1 0x4 PUSH2 0x2449 JUMP JUMPDEST PUSH2 0xABD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x36F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x378 PUSH2 0xD26 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1D6 SWAP2 SWAP1 PUSH2 0x3138 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x391 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x265 PUSH2 0x3A0 CALLDATASIZE PUSH1 0x4 PUSH2 0x24C7 JUMP JUMPDEST PUSH2 0xD35 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x265 PUSH2 0xECC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F4 PUSH2 0xF08 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x265 PUSH2 0x3EA CALLDATASIZE PUSH1 0x4 PUSH2 0x22B2 JUMP JUMPDEST PUSH2 0xF0D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F4 PUSH2 0xFE2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x410 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x265 PUSH2 0xFF0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x425 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x238 PUSH2 0x1075 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x43A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F4 PUSH2 0x1084 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x44F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F4 PUSH2 0x45E CALLDATASIZE PUSH1 0x4 PUSH2 0x22EC JUMP JUMPDEST PUSH2 0x108A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x46F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x265 PUSH2 0x47E CALLDATASIZE PUSH1 0x4 PUSH2 0x2449 JUMP JUMPDEST PUSH2 0x14AC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x48F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F4 PUSH2 0x1716 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4B8 PUSH2 0x4B3 CALLDATASIZE PUSH1 0x4 PUSH2 0x2467 JUMP JUMPDEST PUSH2 0x1722 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1D6 SWAP2 SWAP1 PUSH2 0x34F8 JUMP JUMPDEST PUSH2 0x265 PUSH2 0x4D3 CALLDATASIZE PUSH1 0x4 PUSH2 0x2449 JUMP JUMPDEST PUSH2 0x1791 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x7 DUP5 ADD SLOAD PUSH1 0x8 DUP6 ADD SLOAD PUSH1 0x9 DUP7 ADD SLOAD PUSH1 0xA DUP8 ADD SLOAD PUSH1 0xB SWAP1 SWAP8 ADD SLOAD SWAP6 SWAP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP6 AND SWAP6 SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 PUSH1 0xFF DUP1 DUP3 AND SWAP2 PUSH2 0x100 SWAP1 DIV AND DUP10 JUMP JUMPDEST PUSH2 0x4380 JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x17 DUP2 MSTORE PUSH1 0x20 ADD PUSH23 0x436F6D706F756E6420476F7665726E6F7220416C706861 PUSH1 0x48 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x585 CALLER DUP4 DUP4 PUSH2 0x1956 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5A7 SWAP1 PUSH2 0x3122 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x5E5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5DC SWAP1 PUSH2 0x33D8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 PUSH4 0x825F38F SWAP2 DUP4 SWAP2 SWAP1 PUSH2 0x60F SWAP1 DUP8 SWAP1 PUSH1 0x20 ADD PUSH2 0x3138 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP6 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x63E SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3161 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x658 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x66C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x694 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2414 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH10 0x54B40B1F852BDA000000 SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x60 DUP1 PUSH1 0x0 PUSH1 0x4 PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP DUP1 PUSH1 0x3 ADD DUP2 PUSH1 0x4 ADD DUP3 PUSH1 0x5 ADD DUP4 PUSH1 0x6 ADD DUP4 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x729 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x70B JUMPI JUMPDEST POP POP POP POP POP SWAP4 POP DUP3 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x77B JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 DUP1 DUP4 GT PUSH2 0x767 JUMPI JUMPDEST POP POP POP POP POP SWAP3 POP DUP2 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0x84E JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 SWAP1 DUP2 SWAP1 KECCAK256 DUP4 ADD DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP8 AND ISZERO MUL ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV SWAP3 DUP4 ADD DUP6 SWAP1 DIV DUP6 MUL DUP2 ADD DUP6 ADD SWAP1 SWAP2 MSTORE DUP2 DUP2 MSTORE SWAP3 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x83A JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x80F JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x83A JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x81D JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x7A3 JUMP JUMPDEST POP POP POP POP SWAP2 POP DUP1 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0x920 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 SWAP1 DUP2 SWAP1 KECCAK256 DUP4 ADD DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP8 AND ISZERO MUL ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV SWAP3 DUP4 ADD DUP6 SWAP1 DIV DUP6 MUL DUP2 ADD DUP6 ADD SWAP1 SWAP2 MSTORE DUP2 DUP2 MSTORE SWAP3 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x90C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x8E1 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x90C JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x8EF JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x875 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP POP SWAP2 SWAP4 POP SWAP2 SWAP4 JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x3 SLOAD LT ISZERO DUP1 ISZERO PUSH2 0x94F JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST PUSH2 0x96B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5DC SWAP1 PUSH2 0x33E8 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0xB DUP2 ADD SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x990 JUMPI PUSH1 0x2 SWAP2 POP POP PUSH2 0xAB8 JUMP JUMPDEST DUP1 PUSH1 0x7 ADD SLOAD NUMBER GT PUSH2 0x9A5 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0xAB8 JUMP JUMPDEST DUP1 PUSH1 0x8 ADD SLOAD NUMBER GT PUSH2 0x9BA JUMPI PUSH1 0x1 SWAP2 POP POP PUSH2 0xAB8 JUMP JUMPDEST DUP1 PUSH1 0xA ADD SLOAD DUP2 PUSH1 0x9 ADD SLOAD GT ISZERO DUP1 PUSH2 0x9DB JUMPI POP PUSH2 0x9D4 PUSH2 0x699 JUMP JUMPDEST DUP2 PUSH1 0x9 ADD SLOAD LT JUMPDEST ISZERO PUSH2 0x9EA JUMPI PUSH1 0x3 SWAP2 POP POP PUSH2 0xAB8 JUMP JUMPDEST PUSH1 0x2 DUP2 ADD SLOAD PUSH2 0x9FD JUMPI PUSH1 0x4 SWAP2 POP POP PUSH2 0xAB8 JUMP JUMPDEST PUSH1 0xB DUP2 ADD SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0xA19 JUMPI PUSH1 0x7 SWAP2 POP POP PUSH2 0xAB8 JUMP JUMPDEST PUSH1 0x2 DUP2 ADD SLOAD PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x60D143F1 PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD PUSH2 0xAA2 SWAP4 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0xC1A287E2 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA65 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA79 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 PUSH2 0xA9D SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x23F6 JUMP JUMPDEST PUSH2 0x1B1F JUMP JUMPDEST TIMESTAMP LT PUSH2 0xAB2 JUMPI PUSH1 0x6 SWAP2 POP POP PUSH2 0xAB8 JUMP JUMPDEST PUSH1 0x5 SWAP2 POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAC8 DUP3 PUSH2 0x93B JUMP JUMPDEST SWAP1 POP PUSH1 0x7 DUP2 PUSH1 0x7 DUP2 GT ISZERO PUSH2 0xAD8 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0xAF6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5DC SWAP1 PUSH2 0x34B8 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ DUP1 PUSH2 0xBC1 JUMPI POP PUSH2 0xB20 PUSH2 0xFE2 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD DUP4 DUP3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP3 PUSH4 0x782D6FE1 SWAP3 SWAP1 SWAP2 AND SWAP1 PUSH2 0xB49 SWAP1 NUMBER SWAP1 PUSH2 0x1B4B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB66 SWAP3 SWAP2 SWAP1 PUSH2 0x31B0 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB7E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xB92 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 PUSH2 0xBB6 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x252F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND LT JUMPDEST PUSH2 0xBDD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5DC SWAP1 PUSH2 0x3458 JUMP JUMPDEST PUSH1 0xB DUP2 ADD DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP3 ADD SLOAD DUP2 LT ISZERO PUSH2 0xCE9 JUMPI PUSH1 0x0 SLOAD PUSH1 0x3 DUP4 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x591FCDFE SWAP2 SWAP1 DUP5 SWAP1 DUP2 LT PUSH2 0xC21 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x4 DUP6 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 DUP6 SWAP1 DUP2 LT PUSH2 0xC49 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP6 PUSH1 0x5 ADD DUP6 DUP2 SLOAD DUP2 LT PUSH2 0xC63 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD DUP7 PUSH1 0x6 ADD DUP7 DUP2 SLOAD DUP2 LT PUSH2 0xC7C JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD DUP8 PUSH1 0x2 ADD SLOAD PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCAB SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x324D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCC5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xCD9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 POP PUSH2 0xBEF SWAP1 POP JUMP JUMPDEST POP PUSH32 0x789CF55BE980739DAD1D0699B93B58E806B51C9D96619BFA8FE0A28ABAA7B30C DUP4 PUSH1 0x40 MLOAD PUSH2 0xD19 SWAP2 SWAP1 PUSH2 0x32DB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0xD43 SWAP1 PUSH2 0x3122 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB DUP3 KECCAK256 DUP3 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x17 DUP3 MSTORE PUSH23 0x436F6D706F756E6420476F7665726E6F7220416C706861 PUSH1 0x48 SHL PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xF5EB22C2E7100465020C98B00537528808DB4FEC6EB24C550685A92742247BC5 PUSH2 0xDA4 PUSH2 0x1B73 JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xDB8 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x32E9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0xDDE SWAP1 PUSH2 0x312D JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB DUP2 KECCAK256 PUSH2 0xDF7 SWAP2 DUP10 SWAP1 DUP10 SWAP1 PUSH1 0x20 ADD PUSH2 0x331E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xE24 SWAP3 SWAP2 SWAP1 PUSH2 0x30F1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP3 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0xE61 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3346 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE83 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xEB6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5DC SWAP1 PUSH2 0x3498 JUMP JUMPDEST PUSH2 0xEC1 DUP2 DUP11 DUP11 PUSH2 0x1956 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xEF6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5DC SWAP1 PUSH2 0x34E8 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0xA SWAP1 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xF37 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5DC SWAP1 PUSH2 0x3418 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 PUSH4 0x3A66F901 SWAP2 DUP4 SWAP2 SWAP1 PUSH2 0xF61 SWAP1 DUP8 SWAP1 PUSH1 0x20 ADD PUSH2 0x3138 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP6 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF90 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3161 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFAA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xFBE 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 PUSH2 0x694 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x23F6 JUMP JUMPDEST PUSH10 0x152D02C7E14AF6800000 SWAP1 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x101A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5DC SWAP1 PUSH2 0x33A8 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xE18B681 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP3 PUSH4 0xE18B681 SWAP3 PUSH1 0x4 DUP1 DUP5 ADD SWAP4 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x105B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x106F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1094 PUSH2 0xFE2 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x782D6FE1 SWAP1 CALLER SWAP1 PUSH2 0x10B5 SWAP1 NUMBER SWAP1 PUSH2 0x1B4B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x10D2 SWAP3 SWAP2 SWAP1 PUSH2 0x3146 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10FE 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 PUSH2 0x1122 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x252F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND GT PUSH2 0x1148 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5DC SWAP1 PUSH2 0x3488 JUMP JUMPDEST DUP5 MLOAD DUP7 MLOAD EQ DUP1 ISZERO PUSH2 0x115A JUMPI POP DUP4 MLOAD DUP7 MLOAD EQ JUMPDEST DUP1 ISZERO PUSH2 0x1167 JUMPI POP DUP3 MLOAD DUP7 MLOAD EQ JUMPDEST PUSH2 0x1183 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5DC SWAP1 PUSH2 0x3448 JUMP JUMPDEST DUP6 MLOAD PUSH2 0x11A1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5DC SWAP1 PUSH2 0x3478 JUMP JUMPDEST PUSH2 0x11A9 PUSH2 0xF08 JUMP JUMPDEST DUP7 MLOAD GT ISZERO PUSH2 0x11C9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5DC SWAP1 PUSH2 0x3428 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x1246 JUMPI PUSH1 0x0 PUSH2 0x11EA DUP3 PUSH2 0x93B JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP2 PUSH1 0x7 DUP2 GT ISZERO PUSH2 0x11FA JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x1218 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5DC SWAP1 PUSH2 0x34A8 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x7 DUP2 GT ISZERO PUSH2 0x1226 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x1244 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5DC SWAP1 PUSH2 0x3408 JUMP JUMPDEST POP JUMPDEST PUSH1 0x0 PUSH2 0x1254 NUMBER PUSH2 0xA9D PUSH2 0x936 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1264 DUP3 PUSH2 0xA9D PUSH2 0x531 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE SWAP1 POP PUSH2 0x1277 PUSH2 0x1CD6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x1A0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SLOAD DUP2 MSTORE PUSH1 0x20 ADD CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD DUP12 DUP2 MSTORE PUSH1 0x20 ADD DUP11 DUP2 MSTORE PUSH1 0x20 ADD DUP10 DUP2 MSTORE PUSH1 0x20 ADD DUP9 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE POP SWAP1 POP DUP1 PUSH1 0x4 PUSH1 0x0 DUP4 PUSH1 0x0 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD SSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD SSTORE PUSH1 0x60 DUP3 ADD MLOAD DUP2 PUSH1 0x3 ADD SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x135A SWAP3 SWAP2 SWAP1 PUSH2 0x1D4B JUMP JUMPDEST POP PUSH1 0x80 DUP3 ADD MLOAD DUP1 MLOAD PUSH2 0x1376 SWAP2 PUSH1 0x4 DUP5 ADD SWAP2 PUSH1 0x20 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x1DB0 JUMP JUMPDEST POP PUSH1 0xA0 DUP3 ADD MLOAD DUP1 MLOAD PUSH2 0x1392 SWAP2 PUSH1 0x5 DUP5 ADD SWAP2 PUSH1 0x20 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x1DF7 JUMP JUMPDEST POP PUSH1 0xC0 DUP3 ADD MLOAD DUP1 MLOAD PUSH2 0x13AE SWAP2 PUSH1 0x6 DUP5 ADD SWAP2 PUSH1 0x20 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x1E50 JUMP JUMPDEST POP PUSH1 0xE0 DUP3 ADD MLOAD DUP2 PUSH1 0x7 ADD SSTORE PUSH2 0x100 DUP3 ADD MLOAD DUP2 PUSH1 0x8 ADD SSTORE PUSH2 0x120 DUP3 ADD MLOAD DUP2 PUSH1 0x9 ADD SSTORE PUSH2 0x140 DUP3 ADD MLOAD DUP2 PUSH1 0xA ADD SSTORE PUSH2 0x160 DUP3 ADD MLOAD DUP2 PUSH1 0xB ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH2 0x180 DUP3 ADD MLOAD DUP2 PUSH1 0xB ADD PUSH1 0x1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP SWAP1 POP POP DUP1 PUSH1 0x0 ADD MLOAD PUSH1 0x5 PUSH1 0x0 DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH32 0x7D84A6263AE0D98D3329BD7B46BB4E8D6F98CD35A7ADB45C274C8B7FD5EBD5E0 DUP2 PUSH1 0x0 ADD MLOAD CALLER DUP13 DUP13 DUP13 DUP13 DUP10 DUP10 DUP15 PUSH1 0x40 MLOAD PUSH2 0x1494 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3506 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 MLOAD SWAP4 POP POP POP POP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x4 PUSH2 0x14B7 DUP3 PUSH2 0x93B JUMP JUMPDEST PUSH1 0x7 DUP2 GT ISZERO PUSH2 0x14C2 JUMPI INVALID JUMPDEST EQ PUSH2 0x14DF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5DC SWAP1 PUSH2 0x33B8 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP5 SLOAD DUP3 MLOAD PUSH4 0xD48571F PUSH1 0xE3 SHL DUP2 MSTORE SWAP3 MLOAD SWAP2 SWAP6 SWAP5 PUSH2 0x1534 SWAP5 TIMESTAMP SWAP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND SWAP4 PUSH4 0x6A42B8F8 SWAP4 DUP1 DUP5 ADD SWAP4 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA65 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP4 ADD SLOAD DUP2 LT ISZERO PUSH2 0x16DC JUMPI PUSH2 0x16D4 DUP4 PUSH1 0x3 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1557 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x4 DUP6 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 DUP5 SWAP1 DUP2 LT PUSH2 0x157F JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP6 PUSH1 0x5 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x1599 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP2 DUP3 SWAP1 KECCAK256 ADD DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP8 AND ISZERO MUL ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV SWAP3 DUP4 ADD DUP6 SWAP1 DIV DUP6 MUL DUP2 ADD DUP6 ADD SWAP1 SWAP2 MSTORE DUP2 DUP2 MSTORE SWAP3 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x1627 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x15FC JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1627 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x160A JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP7 PUSH1 0x6 ADD DUP6 DUP2 SLOAD DUP2 LT PUSH2 0x163B JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP2 DUP3 SWAP1 KECCAK256 ADD DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP8 AND ISZERO MUL ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV SWAP3 DUP4 ADD DUP6 SWAP1 DIV DUP6 MUL DUP2 ADD DUP6 ADD SWAP1 SWAP2 MSTORE DUP2 DUP2 MSTORE SWAP3 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x16C9 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x169E JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x16C9 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x16AC JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP7 PUSH2 0x1B77 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1539 JUMP JUMPDEST POP PUSH1 0x2 DUP3 ADD DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x9A2E42FD6722813D69113E7D0079D3D940171428DF7373DF9C7F7617CFDA2892 SWAP1 PUSH2 0xD19 SWAP1 DUP6 SWAP1 DUP5 SWAP1 PUSH2 0x3634 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5A7 SWAP1 PUSH2 0x312D JUMP JUMPDEST PUSH2 0x172A PUSH2 0x1EA9 JUMP JUMPDEST POP PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 MSTORE PUSH1 0xC ADD DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP3 MLOAD PUSH1 0x60 DUP2 ADD DUP5 MSTORE SWAP1 SLOAD PUSH1 0xFF DUP1 DUP3 AND ISZERO ISZERO DUP4 MSTORE PUSH2 0x100 DUP3 DIV AND ISZERO ISZERO SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH3 0x10000 SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x5 PUSH2 0x179C DUP3 PUSH2 0x93B JUMP JUMPDEST PUSH1 0x7 DUP2 GT ISZERO PUSH2 0x17A7 JUMPI INVALID JUMPDEST EQ PUSH2 0x17C4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5DC SWAP1 PUSH2 0x33C8 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0xB DUP2 ADD DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 OR SWAP1 SSTORE SWAP1 JUMPDEST PUSH1 0x3 DUP3 ADD SLOAD DUP2 LT ISZERO PUSH2 0x191A JUMPI PUSH1 0x0 SLOAD PUSH1 0x4 DUP4 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x825F38F SWAP2 SWAP1 DUP5 SWAP1 DUP2 LT PUSH2 0x1817 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP5 PUSH1 0x3 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x1831 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x4 DUP7 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 DUP7 SWAP1 DUP2 LT PUSH2 0x1859 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP7 PUSH1 0x5 ADD DUP7 DUP2 SLOAD DUP2 LT PUSH2 0x1873 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD DUP8 PUSH1 0x6 ADD DUP8 DUP2 SLOAD DUP2 LT PUSH2 0x188C JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD DUP9 PUSH1 0x2 ADD SLOAD PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x18BB SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x324D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x18D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x18E8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x1911 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2414 JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x17E5 JUMP JUMPDEST POP PUSH32 0x712AE1383F79AC853F8D882153778E0260EF8F03B504E2866E0593E04D2B291F DUP3 PUSH1 0x40 MLOAD PUSH2 0x194A SWAP2 SWAP1 PUSH2 0x32DB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH2 0x1961 DUP4 PUSH2 0x93B JUMP JUMPDEST PUSH1 0x7 DUP2 GT ISZERO PUSH2 0x196C JUMPI INVALID JUMPDEST EQ PUSH2 0x1989 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5DC SWAP1 PUSH2 0x34C8 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE PUSH1 0xC DUP2 ADD SWAP1 SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x19D2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5DC SWAP1 PUSH2 0x33F8 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x7 DUP4 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x782D6FE1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x782D6FE1 SWAP2 PUSH2 0x1A08 SWAP2 DUP11 SWAP2 PUSH1 0x4 ADD PUSH2 0x31B0 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1A20 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1A34 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 PUSH2 0x1A58 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x252F JUMP JUMPDEST SWAP1 POP DUP4 ISZERO PUSH2 0x1A81 JUMPI PUSH2 0x1A77 DUP4 PUSH1 0x9 ADD SLOAD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH2 0x1B1F JUMP JUMPDEST PUSH1 0x9 DUP5 ADD SSTORE PUSH2 0x1A9E JUMP JUMPDEST PUSH2 0x1A98 DUP4 PUSH1 0xA ADD SLOAD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH2 0x1B1F JUMP JUMPDEST PUSH1 0xA DUP5 ADD SSTORE JUMPDEST DUP2 SLOAD PUSH1 0x1 PUSH1 0xFF NOT SWAP1 SWAP2 AND OR PUSH2 0xFF00 NOT AND PUSH2 0x100 DUP6 ISZERO ISZERO MUL OR PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFF0000 NOT AND PUSH3 0x10000 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP4 AND MUL OR DUP3 SSTORE PUSH1 0x40 MLOAD PUSH32 0x877856338E13F63D0C36822FF0EF736B80934CD90574A3A5BC9262C39D217C46 SWAP1 PUSH2 0x1B0F SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP7 SWAP1 PUSH2 0x31BE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x1B44 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5DC SWAP1 PUSH2 0x3438 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 GT ISZERO PUSH2 0x1B6D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5DC SWAP1 PUSH2 0x34D8 JUMP JUMPDEST POP SWAP1 SUB SWAP1 JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xF2B06537 SWAP1 PUSH2 0x1BA5 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x20 ADD PUSH2 0x31F3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1BD7 SWAP2 SWAP1 PUSH2 0x32DB JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1BEF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1C03 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 PUSH2 0x1C27 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x23D8 JUMP JUMPDEST ISZERO PUSH2 0x1C44 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5DC SWAP1 PUSH2 0x3468 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH4 0x3A66F901 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x3A66F901 SWAP1 PUSH2 0x1C7C SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x31F3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1C96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1CAA 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 PUSH2 0x1CCE SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x23F6 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x1A0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x1DA0 JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x1DA0 JUMPI DUP3 MLOAD DUP3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND OR DUP3 SSTORE PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x1D6B JUMP JUMPDEST POP PUSH2 0x1DAC SWAP3 SWAP2 POP PUSH2 0x1EC9 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x1DEB JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x1DEB JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x1DD0 JUMP JUMPDEST POP PUSH2 0x1DAC SWAP3 SWAP2 POP PUSH2 0x1EED JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x1E44 JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x1E44 JUMPI DUP3 MLOAD DUP1 MLOAD PUSH2 0x1E34 SWAP2 DUP5 SWAP2 PUSH1 0x20 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x1F07 JUMP JUMPDEST POP SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x1E17 JUMP JUMPDEST POP PUSH2 0x1DAC SWAP3 SWAP2 POP PUSH2 0x1F74 JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x1E9D JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x1E9D JUMPI DUP3 MLOAD DUP1 MLOAD PUSH2 0x1E8D SWAP2 DUP5 SWAP2 PUSH1 0x20 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x1F07 JUMP JUMPDEST POP SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x1E70 JUMP JUMPDEST POP PUSH2 0x1DAC SWAP3 SWAP2 POP PUSH2 0x1F97 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH2 0x535 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1DAC JUMPI DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x1ECF JUMP JUMPDEST PUSH2 0x535 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1DAC JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x1EF3 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x1F48 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x1DEB JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x1DEB JUMPI SWAP2 DUP3 ADD DUP3 DUP2 GT ISZERO PUSH2 0x1DEB JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x1DD0 JUMP JUMPDEST PUSH2 0x535 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1DAC JUMPI PUSH1 0x0 PUSH2 0x1F8E DUP3 DUP3 PUSH2 0x1FBA JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x1F7A JUMP JUMPDEST PUSH2 0x535 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1DAC JUMPI PUSH1 0x0 PUSH2 0x1FB1 DUP3 DUP3 PUSH2 0x1FBA JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x1F9D JUMP JUMPDEST POP DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV PUSH1 0x0 DUP3 SSTORE DUP1 PUSH1 0x1F LT PUSH2 0x1FE0 JUMPI POP PUSH2 0x1FFE JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1FFE SWAP2 SWAP1 PUSH2 0x1EED JUMP JUMPDEST POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x178B DUP2 PUSH2 0x3788 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x201D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2030 PUSH2 0x202B DUP3 PUSH2 0x3669 JUMP JUMPDEST PUSH2 0x3642 JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH1 0x20 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0x2055 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2081 JUMPI DUP2 PUSH2 0x206B DUP9 DUP3 PUSH2 0x2001 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2058 JUMP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x209C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x20AA PUSH2 0x202B DUP3 PUSH2 0x3669 JUMP JUMPDEST DUP2 DUP2 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 POP DUP3 ADD DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2081 JUMPI DUP2 CALLDATALOAD DUP7 ADD PUSH2 0x20D2 DUP9 DUP3 PUSH2 0x21E1 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x20BC JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x20F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2107 PUSH2 0x202B DUP3 PUSH2 0x3669 JUMP JUMPDEST DUP2 DUP2 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 POP DUP3 ADD DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2081 JUMPI DUP2 CALLDATALOAD DUP7 ADD PUSH2 0x212F DUP9 DUP3 PUSH2 0x21E1 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2119 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2156 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2164 PUSH2 0x202B DUP3 PUSH2 0x3669 JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH1 0x20 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0x2189 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2081 JUMPI DUP2 PUSH2 0x219F DUP9 DUP3 PUSH2 0x21CB JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x218C JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x178B DUP2 PUSH2 0x379C JUMP JUMPDEST DUP1 MLOAD PUSH2 0x178B DUP2 PUSH2 0x379C JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x178B DUP2 PUSH2 0x37A5 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x178B DUP2 PUSH2 0x37A5 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x21F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2200 PUSH2 0x202B DUP3 PUSH2 0x368A JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x221C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2227 DUP4 DUP3 DUP5 PUSH2 0x373C JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2241 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x224F PUSH2 0x202B DUP3 PUSH2 0x368A JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x226B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2227 DUP4 DUP3 DUP5 PUSH2 0x3748 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x178B DUP2 PUSH2 0x37AE JUMP JUMPDEST DUP1 MLOAD PUSH2 0x178B DUP2 PUSH2 0x37B7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x229E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x22AA DUP5 DUP5 PUSH2 0x2001 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x22C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x22D1 DUP6 DUP6 PUSH2 0x2001 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x22E2 DUP6 DUP3 DUP7 ADD PUSH2 0x21CB JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x2304 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x231B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2327 DUP9 DUP3 DUP10 ADD PUSH2 0x200C JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2344 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2350 DUP9 DUP3 DUP10 ADD PUSH2 0x2145 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x236D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2379 DUP9 DUP3 DUP10 ADD PUSH2 0x20E8 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2396 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x23A2 DUP9 DUP3 DUP10 ADD PUSH2 0x208B JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x23BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x23CB DUP9 DUP3 DUP10 ADD PUSH2 0x21E1 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x23EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x22AA DUP5 DUP5 PUSH2 0x21C0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2408 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x22AA DUP5 DUP5 PUSH2 0x21D6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2426 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x243D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x22AA DUP5 DUP3 DUP6 ADD PUSH2 0x2230 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x245B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x22AA DUP5 DUP5 PUSH2 0x21CB JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x247A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2486 DUP6 DUP6 PUSH2 0x21CB JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x22E2 DUP6 DUP3 DUP7 ADD PUSH2 0x2001 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x24AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x24B6 DUP6 DUP6 PUSH2 0x21CB JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x22E2 DUP6 DUP3 DUP7 ADD PUSH2 0x21B5 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x24DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x24EB DUP9 DUP9 PUSH2 0x21CB JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 PUSH2 0x24FC DUP9 DUP3 DUP10 ADD PUSH2 0x21B5 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 PUSH2 0x250D DUP9 DUP3 DUP10 ADD PUSH2 0x2276 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 PUSH2 0x251E DUP9 DUP3 DUP10 ADD PUSH2 0x21CB JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 PUSH2 0x23CB DUP9 DUP3 DUP10 ADD PUSH2 0x21CB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2541 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x22AA DUP5 DUP5 PUSH2 0x2281 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2559 DUP4 DUP4 PUSH2 0x2588 JUMP JUMPDEST POP POP PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B44 DUP4 DUP4 PUSH2 0x272A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2559 DUP4 DUP4 PUSH2 0x2710 JUMP JUMPDEST PUSH2 0x2582 DUP2 PUSH2 0x3709 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x2582 DUP2 PUSH2 0x36D1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x259C DUP3 PUSH2 0x36C4 JUMP JUMPDEST PUSH2 0x25A6 DUP2 DUP6 PUSH2 0x36C8 JUMP JUMPDEST SWAP4 POP PUSH2 0x25B1 DUP4 PUSH2 0x36B2 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x25DF JUMPI DUP2 MLOAD PUSH2 0x25C9 DUP9 DUP3 PUSH2 0x254D JUMP JUMPDEST SWAP8 POP PUSH2 0x25D4 DUP4 PUSH2 0x36B2 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x25B5 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x25F5 DUP3 PUSH2 0x36C4 JUMP JUMPDEST PUSH2 0x25FF DUP2 DUP6 PUSH2 0x36C8 JUMP JUMPDEST SWAP4 POP DUP4 PUSH1 0x20 DUP3 MUL DUP6 ADD PUSH2 0x2611 DUP6 PUSH2 0x36B2 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x264B JUMPI DUP5 DUP5 SUB DUP10 MSTORE DUP2 MLOAD PUSH2 0x262E DUP6 DUP3 PUSH2 0x2561 JUMP JUMPDEST SWAP5 POP PUSH2 0x2639 DUP4 PUSH2 0x36B2 JUMP JUMPDEST PUSH1 0x20 SWAP11 SWAP1 SWAP11 ADD SWAP10 SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x2615 JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2663 DUP3 PUSH2 0x36C4 JUMP JUMPDEST PUSH2 0x266D DUP2 DUP6 PUSH2 0x36C8 JUMP JUMPDEST SWAP4 POP DUP4 PUSH1 0x20 DUP3 MUL DUP6 ADD PUSH2 0x267F DUP6 PUSH2 0x36B2 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x264B JUMPI DUP5 DUP5 SUB DUP10 MSTORE DUP2 MLOAD PUSH2 0x269C DUP6 DUP3 PUSH2 0x2561 JUMP JUMPDEST SWAP5 POP PUSH2 0x26A7 DUP4 PUSH2 0x36B2 JUMP JUMPDEST PUSH1 0x20 SWAP11 SWAP1 SWAP11 ADD SWAP10 SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x2683 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x26C4 DUP3 PUSH2 0x36C4 JUMP JUMPDEST PUSH2 0x26CE DUP2 DUP6 PUSH2 0x36C8 JUMP JUMPDEST SWAP4 POP PUSH2 0x26D9 DUP4 PUSH2 0x36B2 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x25DF JUMPI DUP2 MLOAD PUSH2 0x26F1 DUP9 DUP3 PUSH2 0x256D JUMP JUMPDEST SWAP8 POP PUSH2 0x26FC DUP4 PUSH2 0x36B2 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x26DD JUMP JUMPDEST PUSH2 0x2582 DUP2 PUSH2 0x36DC JUMP JUMPDEST PUSH2 0x2582 DUP2 PUSH2 0x535 JUMP JUMPDEST PUSH2 0x2582 PUSH2 0x2725 DUP3 PUSH2 0x535 JUMP JUMPDEST PUSH2 0x535 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2735 DUP3 PUSH2 0x36C4 JUMP JUMPDEST PUSH2 0x273F DUP2 DUP6 PUSH2 0x36C8 JUMP JUMPDEST SWAP4 POP PUSH2 0x274F DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x3748 JUMP JUMPDEST PUSH2 0x2758 DUP2 PUSH2 0x3774 JUMP JUMPDEST SWAP1 SWAP4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SLOAD PUSH1 0x1 DUP2 AND PUSH1 0x0 DUP2 EQ PUSH2 0x277F JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0x27A5 JUMPI PUSH2 0x27E4 JUMP JUMPDEST PUSH1 0x7F PUSH1 0x2 DUP4 DIV AND PUSH2 0x2790 DUP2 DUP8 PUSH2 0x36C8 JUMP JUMPDEST PUSH1 0xFF NOT DUP5 AND DUP2 MSTORE SWAP6 POP POP PUSH1 0x20 DUP6 ADD SWAP3 POP PUSH2 0x27E4 JUMP JUMPDEST PUSH1 0x2 DUP3 DIV PUSH2 0x27B3 DUP2 DUP8 PUSH2 0x36C8 JUMP JUMPDEST SWAP6 POP PUSH2 0x27BE DUP6 PUSH2 0x36B8 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x27DD JUMPI DUP2 SLOAD DUP9 DUP3 ADD MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD PUSH2 0x27C1 JUMP JUMPDEST DUP8 ADD SWAP5 POP POP POP JUMPDEST POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2582 DUP2 PUSH2 0x3710 JUMP JUMPDEST PUSH2 0x2582 DUP2 PUSH2 0x371B JUMP JUMPDEST PUSH2 0x2582 DUP2 PUSH2 0x3726 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2814 PUSH1 0x39 DUP4 PUSH2 0x36C8 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A5F5F61636365707441646D696E3A207365 DUP2 MSTORE PUSH32 0x6E646572206D75737420626520676F7620677561726469616E00000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2873 PUSH1 0x44 DUP4 PUSH2 0x36C8 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A71756575653A2070726F706F73616C2063 DUP2 MSTORE PUSH32 0x616E206F6E6C7920626520717565756564206966206974206973207375636365 PUSH1 0x20 DUP3 ADD MSTORE PUSH4 0x19591959 PUSH1 0xE2 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x28DF PUSH1 0x45 DUP4 PUSH2 0x36C8 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A657865637574653A2070726F706F73616C DUP2 MSTORE PUSH32 0x2063616E206F6E6C792062652065786563757465642069662069742069732071 PUSH1 0x20 DUP3 ADD MSTORE PUSH5 0x1D595D5959 PUSH1 0xDA SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x294C PUSH1 0x2 DUP4 PUSH2 0xAB8 JUMP JUMPDEST PUSH2 0x1901 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x296A PUSH1 0x4C DUP4 PUSH2 0x36C8 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A5F5F6578656375746553657454696D656C DUP2 MSTORE PUSH32 0x6F636B50656E64696E6741646D696E3A2073656E646572206D75737420626520 PUSH1 0x20 DUP3 ADD MSTORE PUSH12 0x33B7BB1033BAB0B93234B0B7 PUSH1 0xA1 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x29DE PUSH1 0x18 DUP4 PUSH2 0x36C8 JUMP JUMPDEST PUSH32 0x73657450656E64696E6741646D696E2861646472657373290000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2A17 PUSH1 0x29 DUP4 PUSH2 0x36C8 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A73746174653A20696E76616C6964207072 DUP2 MSTORE PUSH9 0x1BDC1BDCD85B081A59 PUSH1 0xBA SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2A62 PUSH1 0x2D DUP4 PUSH2 0x36C8 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A5F63617374566F74653A20766F74657220 DUP2 MSTORE PUSH13 0x185B1C9958591E481D9BDD1959 PUSH1 0x9A SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2AB1 PUSH1 0x59 DUP4 PUSH2 0x36C8 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A70726F706F73653A206F6E65206C697665 DUP2 MSTORE PUSH32 0x2070726F706F73616C207065722070726F706F7365722C20666F756E6420616E PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x20616C72656164792070656E64696E672070726F706F73616C00000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2B36 PUSH1 0x4A DUP4 PUSH2 0x36C8 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A5F5F717565756553657454696D656C6F63 DUP2 MSTORE PUSH32 0x6B50656E64696E6741646D696E3A2073656E646572206D75737420626520676F PUSH1 0x20 DUP3 ADD MSTORE PUSH10 0x3B1033BAB0B93234B0B7 PUSH1 0xB1 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2BA8 PUSH1 0x28 DUP4 PUSH2 0x36C8 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A70726F706F73653A20746F6F206D616E79 DUP2 MSTORE PUSH8 0x20616374696F6E73 PUSH1 0xC0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2BF2 PUSH1 0x11 DUP4 PUSH2 0x36C8 JUMP JUMPDEST PUSH17 0x6164646974696F6E206F766572666C6F77 PUSH1 0x78 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2C1F PUSH1 0x43 DUP4 PUSH2 0xAB8 JUMP JUMPDEST PUSH32 0x454950373132446F6D61696E28737472696E67206E616D652C75696E74323536 DUP2 MSTORE PUSH32 0x20636861696E49642C6164647265737320766572696679696E67436F6E747261 PUSH1 0x20 DUP3 ADD MSTORE PUSH3 0x637429 PUSH1 0xE8 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x43 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2C8A PUSH1 0x27 DUP4 PUSH2 0xAB8 JUMP JUMPDEST PUSH32 0x42616C6C6F742875696E743235362070726F706F73616C49642C626F6F6C2073 DUP2 MSTORE PUSH7 0x7570706F727429 PUSH1 0xC8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x27 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2CD3 PUSH1 0x44 DUP4 PUSH2 0x36C8 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A70726F706F73653A2070726F706F73616C DUP2 MSTORE PUSH32 0x2066756E6374696F6E20696E666F726D6174696F6E206172697479206D69736D PUSH1 0x20 DUP3 ADD MSTORE PUSH4 0xC2E8C6D PUSH1 0xE3 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2D3F PUSH1 0x2F DUP4 PUSH2 0x36C8 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A63616E63656C3A2070726F706F73657220 DUP2 MSTORE PUSH15 0x18589BDD99481D1A1C995CDA1BDB19 PUSH1 0x8A SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2D90 PUSH1 0x44 DUP4 PUSH2 0x36C8 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A5F71756575654F725265766572743A2070 DUP2 MSTORE PUSH32 0x726F706F73616C20616374696F6E20616C726561647920717565756564206174 PUSH1 0x20 DUP3 ADD MSTORE PUSH4 0x20657461 PUSH1 0xE0 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2DFC PUSH1 0x2C DUP4 PUSH2 0x36C8 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A70726F706F73653A206D7573742070726F DUP2 MSTORE PUSH12 0x7669646520616374696F6E73 PUSH1 0xA0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2E4A PUSH1 0x3F DUP4 PUSH2 0x36C8 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A70726F706F73653A2070726F706F736572 DUP2 MSTORE PUSH32 0x20766F7465732062656C6F772070726F706F73616C207468726573686F6C6400 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2EA9 PUSH1 0x2F DUP4 PUSH2 0x36C8 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A63617374566F746542795369673A20696E DUP2 MSTORE PUSH15 0x76616C6964207369676E6174757265 PUSH1 0x88 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2EFA PUSH1 0x58 DUP4 PUSH2 0x36C8 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A70726F706F73653A206F6E65206C697665 DUP2 MSTORE PUSH32 0x2070726F706F73616C207065722070726F706F7365722C20666F756E6420616E PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x20616C7265616479206163746976652070726F706F73616C0000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2F7F PUSH1 0x36 DUP4 PUSH2 0x36C8 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A63616E63656C3A2063616E6E6F74206361 DUP2 MSTORE PUSH22 0x1B98D95B08195E1958DD5D1959081C1C9BDC1BDCD85B PUSH1 0x52 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2FD7 PUSH1 0x2A DUP4 PUSH2 0x36C8 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A5F63617374566F74653A20766F74696E67 DUP2 MSTORE PUSH10 0x81A5CC818DB1BDCD959 PUSH1 0xB2 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3023 PUSH1 0x15 DUP4 PUSH2 0x36C8 JUMP JUMPDEST PUSH21 0x7375627472616374696F6E20756E646572666C6F77 PUSH1 0x58 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3054 PUSH1 0x36 DUP4 PUSH2 0x36C8 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A5F5F61626469636174653A2073656E6465 DUP2 MSTORE PUSH22 0x391036BAB9BA1031329033B7BB1033BAB0B93234B0B7 PUSH1 0x51 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x60 DUP4 ADD SWAP1 PUSH2 0x30B0 DUP5 DUP3 PUSH2 0x2707 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x30C3 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x2707 JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x106F PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x30E8 JUMP JUMPDEST PUSH2 0x2582 DUP2 PUSH2 0x36F7 JUMP JUMPDEST PUSH2 0x2582 DUP2 PUSH2 0x3731 JUMP JUMPDEST PUSH2 0x2582 DUP2 PUSH2 0x36FD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x30FC DUP3 PUSH2 0x293F JUMP JUMPDEST SWAP2 POP PUSH2 0x3108 DUP3 DUP6 PUSH2 0x2719 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH2 0x3118 DUP3 DUP5 PUSH2 0x2719 JUMP JUMPDEST POP PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x178B DUP3 PUSH2 0x2C12 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x178B DUP3 PUSH2 0x2C7D JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x178B DUP3 DUP5 PUSH2 0x2588 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x3154 DUP3 DUP6 PUSH2 0x2579 JUMP JUMPDEST PUSH2 0x1B44 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2710 JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x316F DUP3 DUP8 PUSH2 0x2588 JUMP JUMPDEST PUSH2 0x317C PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x27FE JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x318D DUP2 PUSH2 0x29D1 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x31A1 DUP2 DUP6 PUSH2 0x272A JUMP JUMPDEST SWAP1 POP PUSH2 0x14A3 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x2710 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x3154 DUP3 DUP6 PUSH2 0x2588 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x31CC DUP3 DUP8 PUSH2 0x2588 JUMP JUMPDEST PUSH2 0x31D9 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x2710 JUMP JUMPDEST PUSH2 0x31E6 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x2707 JUMP JUMPDEST PUSH2 0x14A3 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x30DF JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x3201 DUP3 DUP9 PUSH2 0x2588 JUMP JUMPDEST PUSH2 0x320E PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x2710 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x3220 DUP2 DUP7 PUSH2 0x272A JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x3234 DUP2 DUP6 PUSH2 0x272A JUMP JUMPDEST SWAP1 POP PUSH2 0x3243 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x2710 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x325B DUP3 DUP9 PUSH2 0x2588 JUMP JUMPDEST PUSH2 0x3268 PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x2710 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x327A DUP2 DUP7 PUSH2 0x2762 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x3234 DUP2 DUP6 PUSH2 0x2762 JUMP JUMPDEST PUSH1 0x80 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x329F DUP2 DUP8 PUSH2 0x2591 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x32B3 DUP2 DUP7 PUSH2 0x26B9 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x32C7 DUP2 DUP6 PUSH2 0x2658 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x3243 DUP2 DUP5 PUSH2 0x25EA JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x178B DUP3 DUP5 PUSH2 0x2710 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x32F7 DUP3 DUP8 PUSH2 0x2710 JUMP JUMPDEST PUSH2 0x3304 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x2710 JUMP JUMPDEST PUSH2 0x3311 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x2710 JUMP JUMPDEST PUSH2 0x14A3 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x2588 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x332C DUP3 DUP7 PUSH2 0x2710 JUMP JUMPDEST PUSH2 0x3339 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x2710 JUMP JUMPDEST PUSH2 0x22AA PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x2707 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x3354 DUP3 DUP8 PUSH2 0x2710 JUMP JUMPDEST PUSH2 0x3361 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x30D6 JUMP JUMPDEST PUSH2 0x336E PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x2710 JUMP JUMPDEST PUSH2 0x14A3 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x2710 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x178B DUP3 DUP5 PUSH2 0x27EC JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x178B DUP3 DUP5 PUSH2 0x27F5 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1B44 DUP2 DUP5 PUSH2 0x272A JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x178B DUP2 PUSH2 0x2807 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x178B DUP2 PUSH2 0x2866 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x178B DUP2 PUSH2 0x28D2 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x178B DUP2 PUSH2 0x295D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x178B DUP2 PUSH2 0x2A0A JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x178B DUP2 PUSH2 0x2A55 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x178B DUP2 PUSH2 0x2AA4 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x178B DUP2 PUSH2 0x2B29 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x178B DUP2 PUSH2 0x2B9B JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x178B DUP2 PUSH2 0x2BE5 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x178B DUP2 PUSH2 0x2CC6 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x178B DUP2 PUSH2 0x2D32 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x178B DUP2 PUSH2 0x2D83 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x178B DUP2 PUSH2 0x2DEF JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x178B DUP2 PUSH2 0x2E3D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x178B DUP2 PUSH2 0x2E9C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x178B DUP2 PUSH2 0x2EED JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x178B DUP2 PUSH2 0x2F72 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x178B DUP2 PUSH2 0x2FCA JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x178B DUP2 PUSH2 0x3016 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x178B DUP2 PUSH2 0x3047 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x178B DUP3 DUP5 PUSH2 0x309F JUMP JUMPDEST PUSH2 0x120 DUP2 ADD PUSH2 0x3515 DUP3 DUP13 PUSH2 0x2710 JUMP JUMPDEST PUSH2 0x3522 PUSH1 0x20 DUP4 ADD DUP12 PUSH2 0x2579 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x3534 DUP2 DUP11 PUSH2 0x2591 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x3548 DUP2 DUP10 PUSH2 0x26B9 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x355C DUP2 DUP9 PUSH2 0x2658 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0xA0 DUP4 ADD MSTORE PUSH2 0x3570 DUP2 DUP8 PUSH2 0x25EA JUMP JUMPDEST SWAP1 POP PUSH2 0x357F PUSH1 0xC0 DUP4 ADD DUP7 PUSH2 0x2710 JUMP JUMPDEST PUSH2 0x358C PUSH1 0xE0 DUP4 ADD DUP6 PUSH2 0x2710 JUMP JUMPDEST DUP2 DUP2 SUB PUSH2 0x100 DUP4 ADD MSTORE PUSH2 0x359F DUP2 DUP5 PUSH2 0x272A JUMP JUMPDEST SWAP12 SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x120 DUP2 ADD PUSH2 0x35BD DUP3 DUP13 PUSH2 0x2710 JUMP JUMPDEST PUSH2 0x35CA PUSH1 0x20 DUP4 ADD DUP12 PUSH2 0x2588 JUMP JUMPDEST PUSH2 0x35D7 PUSH1 0x40 DUP4 ADD DUP11 PUSH2 0x2710 JUMP JUMPDEST PUSH2 0x35E4 PUSH1 0x60 DUP4 ADD DUP10 PUSH2 0x2710 JUMP JUMPDEST PUSH2 0x35F1 PUSH1 0x80 DUP4 ADD DUP9 PUSH2 0x2710 JUMP JUMPDEST PUSH2 0x35FE PUSH1 0xA0 DUP4 ADD DUP8 PUSH2 0x2710 JUMP JUMPDEST PUSH2 0x360B PUSH1 0xC0 DUP4 ADD DUP7 PUSH2 0x2710 JUMP JUMPDEST PUSH2 0x3618 PUSH1 0xE0 DUP4 ADD DUP6 PUSH2 0x2707 JUMP JUMPDEST PUSH2 0x3626 PUSH2 0x100 DUP4 ADD DUP5 PUSH2 0x2707 JUMP JUMPDEST SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x3154 DUP3 DUP6 PUSH2 0x2710 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x3661 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x3680 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x36A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 PUSH1 0x1F SWAP2 SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x178B DUP3 PUSH2 0x36EB JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST DUP1 PUSH2 0xAB8 DUP2 PUSH2 0x377E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x178B DUP3 JUMPDEST PUSH1 0x0 PUSH2 0x178B DUP3 PUSH2 0x36D1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x178B DUP3 PUSH2 0x36E1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x178B DUP3 PUSH2 0x535 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x178B DUP3 PUSH2 0x36FD JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3763 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x374B JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x106F JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 JUMP JUMPDEST PUSH1 0x8 DUP2 LT PUSH2 0x1FFE JUMPI INVALID JUMPDEST PUSH2 0x3791 DUP2 PUSH2 0x36D1 JUMP JUMPDEST DUP2 EQ PUSH2 0x1FFE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3791 DUP2 PUSH2 0x36DC JUMP JUMPDEST PUSH2 0x3791 DUP2 PUSH2 0x535 JUMP JUMPDEST PUSH2 0x3791 DUP2 PUSH2 0x36F7 JUMP JUMPDEST PUSH2 0x3791 DUP2 PUSH2 0x36FD JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 PC 0xD5 PUSH8 0x9A9FB229541A103F AND PUSH7 0xE704E0B7878D97 PUSH22 0xA881E8BA6D89F8A606C4E06C6578706572696D656E74 PUSH2 0x6CF5 PUSH5 0x736F6C6343 STOP SDIV GT STOP BLOCKHASH ","sourceMap":"59:14005:24:-;;;4911:195;8:9:-1;5:2;;;30:1;27;20:12;5:2;4911:195:24;;;;;;;;;;;;;;;;;;;;;4993:8;:39;;-1:-1:-1;;;;;4993:39:24;;;-1:-1:-1;;;;;;4993:39:24;;;;;;;;5042:27;;;;;;;;;;;;;;;5079:8;:20;;;;;;;;;;;59:14005;;5:134:-1;83:13;;101:33;83:13;101:33;;;68:71;;;;;146:535;;;;295:2;283:9;274:7;270:23;266:32;263:2;;;311:1;308;301:12;263:2;346:1;363:64;419:7;399:9;363:64;;;353:74;;325:108;464:2;482:64;538:7;529:6;518:9;514:22;482:64;;;472:74;;443:109;583:2;601:64;657:7;648:6;637:9;633:22;601:64;;;591:74;;562:109;257:424;;;;;;688:91;;-1:-1;;;;;848:54;;750:24;831:76;914:117;983:24;1001:5;983:24;;;976:5;973:35;963:2;;1022:1;1019;1012:12;963:2;957:74;;;59:14005:24;;;;;;"},"deployedBytecode":{"linkReferences":{},"object":"60806040526004361061019c5760003560e01c8063452a9320116100ec578063d33219b41161008a578063ddf0b00911610064578063ddf0b00914610463578063deaaa7cc14610483578063e23a9a5214610498578063fe0d94c1146104c55761019c565b8063d33219b414610419578063da35c6641461042e578063da95691a146104435761019c565b80637bdbe4d0116100c65780637bdbe4d0146103ba57806391500671146103cf578063b58131b0146103ef578063b9a61961146104045761019c565b8063452a9320146103635780634634c61f14610385578063760fbc13146103a55761019c565b806320606b7011610159578063328dd98211610133578063328dd982146102d15780633932abb1146103015780633e4f49e61461031657806340e58ee5146103435761019c565b806320606b701461028757806321f43e421461029c57806324bc1a64146102bc5761019c565b8063013cf08b146101a157806302a251a3146101df57806306fdde0314610201578063109d0af81461022357806315373e3d1461024557806317977c6114610267575b600080fd5b3480156101ad57600080fd5b506101c16101bc366004612449565b6104d8565b6040516101d6999897969594939291906135ae565b60405180910390f35b3480156101eb57600080fd5b506101f4610531565b6040516101d691906132db565b34801561020d57600080fd5b50610216610538565b6040516101d69190613397565b34801561022f57600080fd5b5061023861056b565b6040516101d6919061337b565b34801561025157600080fd5b50610265610260366004612497565b61057a565b005b34801561027357600080fd5b506101f461028236600461228c565b610589565b34801561029357600080fd5b506101f461059b565b3480156102a857600080fd5b506102656102b73660046122b2565b6105b2565b3480156102c857600080fd5b506101f4610699565b3480156102dd57600080fd5b506102f16102ec366004612449565b6106a7565b6040516101d6949392919061328e565b34801561030d57600080fd5b506101f4610936565b34801561032257600080fd5b50610336610331366004612449565b61093b565b6040516101d69190613389565b34801561034f57600080fd5b5061026561035e366004612449565b610abd565b34801561036f57600080fd5b50610378610d26565b6040516101d69190613138565b34801561039157600080fd5b506102656103a03660046124c7565b610d35565b3480156103b157600080fd5b50610265610ecc565b3480156103c657600080fd5b506101f4610f08565b3480156103db57600080fd5b506102656103ea3660046122b2565b610f0d565b3480156103fb57600080fd5b506101f4610fe2565b34801561041057600080fd5b50610265610ff0565b34801561042557600080fd5b50610238611075565b34801561043a57600080fd5b506101f4611084565b34801561044f57600080fd5b506101f461045e3660046122ec565b61108a565b34801561046f57600080fd5b5061026561047e366004612449565b6114ac565b34801561048f57600080fd5b506101f4611716565b3480156104a457600080fd5b506104b86104b3366004612467565b611722565b6040516101d691906134f8565b6102656104d3366004612449565b611791565b6004602052600090815260409020805460018201546002830154600784015460088501546009860154600a870154600b9097015495966001600160a01b0390951695939492939192909160ff8082169161010090041689565b6143805b90565b60405180604001604052806017815260200176436f6d706f756e6420476f7665726e6f7220416c70686160481b81525081565b6001546001600160a01b031681565b610585338383611956565b5050565b60056020526000908152604090205481565b6040516105a790613122565b604051809103902081565b6002546001600160a01b031633146105e55760405162461bcd60e51b81526004016105dc906133d8565b60405180910390fd5b600080546040516001600160a01b0390911691630825f38f9183919061060f908790602001613138565b604051602081830303815290604052856040518563ffffffff1660e01b815260040161063e9493929190613161565b600060405180830381600087803b15801561065857600080fd5b505af115801561066c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106949190810190612414565b505050565b6954b40b1f852bda00000090565b6060806060806000600460008781526020019081526020016000209050806003018160040182600501836006018380548060200260200160405190810160405280929190818152602001828054801561072957602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161070b575b505050505093508280548060200260200160405190810160405280929190818152602001828054801561077b57602002820191906000526020600020905b815481526020019060010190808311610767575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b8282101561084e5760008481526020908190208301805460408051601f600260001961010060018716150201909416939093049283018590048502810185019091528181529283018282801561083a5780601f1061080f5761010080835404028352916020019161083a565b820191906000526020600020905b81548152906001019060200180831161081d57829003601f168201915b5050505050815260200190600101906107a3565b50505050915080805480602002602001604051908101604052809291908181526020016000905b828210156109205760008481526020908190208301805460408051601f600260001961010060018716150201909416939093049283018590048502810185019091528181529283018282801561090c5780601f106108e15761010080835404028352916020019161090c565b820191906000526020600020905b8154815290600101906020018083116108ef57829003601f168201915b505050505081526020019060010190610875565b5050505090509450945094509450509193509193565b600190565b6000816003541015801561094f5750600082115b61096b5760405162461bcd60e51b81526004016105dc906133e8565b6000828152600460205260409020600b81015460ff1615610990576002915050610ab8565b806007015443116109a5576000915050610ab8565b806008015443116109ba576001915050610ab8565b80600a015481600901541115806109db57506109d4610699565b8160090154105b156109ea576003915050610ab8565b60028101546109fd576004915050610ab8565b600b810154610100900460ff1615610a19576007915050610ab8565b6002810154600054604080516360d143f160e11b81529051610aa293926001600160a01b03169163c1a287e2916004808301926020929190829003018186803b158015610a6557600080fd5b505afa158015610a79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a9d91908101906123f6565b611b1f565b4210610ab2576006915050610ab8565b60059150505b919050565b6000610ac88261093b565b90506007816007811115610ad857fe5b1415610af65760405162461bcd60e51b81526004016105dc906134b8565b60008281526004602052604090206002546001600160a01b0316331480610bc15750610b20610fe2565b60018054838201546001600160a01b039182169263782d6fe19290911690610b49904390611b4b565b6040518363ffffffff1660e01b8152600401610b669291906131b0565b60206040518083038186803b158015610b7e57600080fd5b505afa158015610b92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610bb6919081019061252f565b6001600160601b0316105b610bdd5760405162461bcd60e51b81526004016105dc90613458565b600b8101805460ff1916600117905560005b6003820154811015610ce9576000546003830180546001600160a01b039092169163591fcdfe919084908110610c2157fe5b6000918252602090912001546004850180546001600160a01b039092169185908110610c4957fe5b9060005260206000200154856005018581548110610c6357fe5b90600052602060002001866006018681548110610c7c57fe5b9060005260206000200187600201546040518663ffffffff1660e01b8152600401610cab95949392919061324d565b600060405180830381600087803b158015610cc557600080fd5b505af1158015610cd9573d6000803e3d6000fd5b505060019092019150610bef9050565b507f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c83604051610d1991906132db565b60405180910390a1505050565b6002546001600160a01b031681565b6000604051610d4390613122565b604080519182900382208282019091526017825276436f6d706f756e6420476f7665726e6f7220416c70686160481b6020909201919091527ff5eb22c2e7100465020c98b00537528808db4fec6eb24c550685a92742247bc5610da4611b73565b30604051602001610db894939291906132e9565b6040516020818303038152906040528051906020012090506000604051610dde9061312d565b604051908190038120610df7918990899060200161331e565b60405160208183030381529060405280519060200120905060008282604051602001610e249291906130f1565b604051602081830303815290604052805190602001209050600060018288888860405160008152602001604052604051610e619493929190613346565b6020604051602081039080840390855afa158015610e83573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610eb65760405162461bcd60e51b81526004016105dc90613498565b610ec1818a8a611956565b505050505050505050565b6002546001600160a01b03163314610ef65760405162461bcd60e51b81526004016105dc906134e8565b600280546001600160a01b0319169055565b600a90565b6002546001600160a01b03163314610f375760405162461bcd60e51b81526004016105dc90613418565b600080546040516001600160a01b0390911691633a66f90191839190610f61908790602001613138565b604051602081830303815290604052856040518563ffffffff1660e01b8152600401610f909493929190613161565b602060405180830381600087803b158015610faa57600080fd5b505af1158015610fbe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061069491908101906123f6565b69152d02c7e14af680000090565b6002546001600160a01b0316331461101a5760405162461bcd60e51b81526004016105dc906133a8565b6000805460408051630e18b68160e01b815290516001600160a01b0390921692630e18b6819260048084019382900301818387803b15801561105b57600080fd5b505af115801561106f573d6000803e3d6000fd5b50505050565b6000546001600160a01b031681565b60035481565b6000611094610fe2565b600180546001600160a01b03169063782d6fe19033906110b5904390611b4b565b6040518363ffffffff1660e01b81526004016110d2929190613146565b60206040518083038186803b1580156110ea57600080fd5b505afa1580156110fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611122919081019061252f565b6001600160601b0316116111485760405162461bcd60e51b81526004016105dc90613488565b8451865114801561115a575083518651145b8015611167575082518651145b6111835760405162461bcd60e51b81526004016105dc90613448565b85516111a15760405162461bcd60e51b81526004016105dc90613478565b6111a9610f08565b865111156111c95760405162461bcd60e51b81526004016105dc90613428565b3360009081526005602052604090205480156112465760006111ea8261093b565b905060018160078111156111fa57fe5b14156112185760405162461bcd60e51b81526004016105dc906134a8565b600081600781111561122657fe5b14156112445760405162461bcd60e51b81526004016105dc90613408565b505b600061125443610a9d610936565b9050600061126482610a9d610531565b6003805460010190559050611277611cd6565b604051806101a001604052806003548152602001336001600160a01b03168152602001600081526020018b81526020018a815260200189815260200188815260200184815260200183815260200160008152602001600081526020016000151581526020016000151581525090508060046000836000015181526020019081526020016000206000820151816000015560208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020155606082015181600301908051906020019061135a929190611d4b565b5060808201518051611376916004840191602090910190611db0565b5060a08201518051611392916005840191602090910190611df7565b5060c082015180516113ae916006840191602090910190611e50565b5060e082015181600701556101008201518160080155610120820151816009015561014082015181600a015561016082015181600b0160006101000a81548160ff02191690831515021790555061018082015181600b0160016101000a81548160ff02191690831515021790555090505080600001516005600083602001516001600160a01b03166001600160a01b03168152602001908152602001600020819055507f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e08160000151338c8c8c8c89898e60405161149499989796959493929190613506565b60405180910390a15193505050505b95945050505050565b60046114b78261093b565b60078111156114c257fe5b146114df5760405162461bcd60e51b81526004016105dc906133b8565b600081815260046020818152604080842084548251630d48571f60e31b815292519195946115349442946001600160a01b0390931693636a42b8f8938084019390829003018186803b158015610a6557600080fd5b905060005b60038301548110156116dc576116d483600301828154811061155757fe5b6000918252602090912001546004850180546001600160a01b03909216918490811061157f57fe5b906000526020600020015485600501848154811061159957fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156116275780601f106115fc57610100808354040283529160200191611627565b820191906000526020600020905b81548152906001019060200180831161160a57829003601f168201915b505050505086600601858154811061163b57fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156116c95780601f1061169e576101008083540402835291602001916116c9565b820191906000526020600020905b8154815290600101906020018083116116ac57829003601f168201915b505050505086611b77565b600101611539565b50600282018190556040517f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda289290610d199085908490613634565b6040516105a79061312d565b61172a611ea9565b5060008281526004602090815260408083206001600160a01b0385168452600c018252918290208251606081018452905460ff80821615158352610100820416151592820192909252620100009091046001600160601b0316918101919091525b92915050565b600561179c8261093b565b60078111156117a757fe5b146117c45760405162461bcd60e51b81526004016105dc906133c8565b6000818152600460205260408120600b8101805461ff001916610100179055905b600382015481101561191a576000546004830180546001600160a01b0390921691630825f38f91908490811061181757fe5b906000526020600020015484600301848154811061183157fe5b6000918252602090912001546004860180546001600160a01b03909216918690811061185957fe5b906000526020600020015486600501868154811061187357fe5b9060005260206000200187600601878154811061188c57fe5b9060005260206000200188600201546040518763ffffffff1660e01b81526004016118bb95949392919061324d565b6000604051808303818588803b1580156118d457600080fd5b505af11580156118e8573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526119119190810190612414565b506001016117e5565b507f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f8260405161194a91906132db565b60405180910390a15050565b60016119618361093b565b600781111561196c57fe5b146119895760405162461bcd60e51b81526004016105dc906134c8565b60008281526004602090815260408083206001600160a01b0387168452600c8101909252909120805460ff16156119d25760405162461bcd60e51b81526004016105dc906133f8565b600154600783015460405163782d6fe160e01b81526000926001600160a01b03169163782d6fe191611a08918a916004016131b0565b60206040518083038186803b158015611a2057600080fd5b505afa158015611a34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611a58919081019061252f565b90508315611a8157611a778360090154826001600160601b0316611b1f565b6009840155611a9e565b611a9883600a0154826001600160601b0316611b1f565b600a8401555b8154600160ff199091161761ff00191661010085151502176dffffffffffffffffffffffff00001916620100006001600160601b038316021782556040517f877856338e13f63d0c36822ff0ef736b80934cd90574a3a5bc9262c39d217c4690611b0f9088908890889086906131be565b60405180910390a1505050505050565b600082820183811015611b445760405162461bcd60e51b81526004016105dc90613438565b9392505050565b600082821115611b6d5760405162461bcd60e51b81526004016105dc906134d8565b50900390565b4690565b6000546040516001600160a01b039091169063f2b0653790611ba590889088908890889088906020016131f3565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b8152600401611bd791906132db565b60206040518083038186803b158015611bef57600080fd5b505afa158015611c03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611c2791908101906123d8565b15611c445760405162461bcd60e51b81526004016105dc90613468565b600054604051633a66f90160e01b81526001600160a01b0390911690633a66f90190611c7c90889088908890889088906004016131f3565b602060405180830381600087803b158015611c9657600080fd5b505af1158015611caa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611cce91908101906123f6565b505050505050565b604051806101a001604052806000815260200160006001600160a01b031681526020016000815260200160608152602001606081526020016060815260200160608152602001600081526020016000815260200160008152602001600081526020016000151581526020016000151581525090565b828054828255906000526020600020908101928215611da0579160200282015b82811115611da057825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190611d6b565b50611dac929150611ec9565b5090565b828054828255906000526020600020908101928215611deb579160200282015b82811115611deb578251825591602001919060010190611dd0565b50611dac929150611eed565b828054828255906000526020600020908101928215611e44579160200282015b82811115611e445782518051611e34918491602090910190611f07565b5091602001919060010190611e17565b50611dac929150611f74565b828054828255906000526020600020908101928215611e9d579160200282015b82811115611e9d5782518051611e8d918491602090910190611f07565b5091602001919060010190611e70565b50611dac929150611f97565b604080516060810182526000808252602082018190529181019190915290565b61053591905b80821115611dac5780546001600160a01b0319168155600101611ecf565b61053591905b80821115611dac5760008155600101611ef3565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611f4857805160ff1916838001178555611deb565b82800160010185558215611deb5791820182811115611deb578251825591602001919060010190611dd0565b61053591905b80821115611dac576000611f8e8282611fba565b50600101611f7a565b61053591905b80821115611dac576000611fb18282611fba565b50600101611f9d565b50805460018160011615610100020316600290046000825580601f10611fe05750611ffe565b601f016020900490600052602060002090810190611ffe9190611eed565b50565b803561178b81613788565b600082601f83011261201d57600080fd5b813561203061202b82613669565b613642565b9150818183526020840193506020810190508385602084028201111561205557600080fd5b60005b83811015612081578161206b8882612001565b8452506020928301929190910190600101612058565b5050505092915050565b600082601f83011261209c57600080fd5b81356120aa61202b82613669565b81815260209384019390925082018360005b8381101561208157813586016120d288826121e1565b84525060209283019291909101906001016120bc565b600082601f8301126120f957600080fd5b813561210761202b82613669565b81815260209384019390925082018360005b83811015612081578135860161212f88826121e1565b8452506020928301929190910190600101612119565b600082601f83011261215657600080fd5b813561216461202b82613669565b9150818183526020840193506020810190508385602084028201111561218957600080fd5b60005b83811015612081578161219f88826121cb565b845250602092830192919091019060010161218c565b803561178b8161379c565b805161178b8161379c565b803561178b816137a5565b805161178b816137a5565b600082601f8301126121f257600080fd5b813561220061202b8261368a565b9150808252602083016020830185838301111561221c57600080fd5b61222783828461373c565b50505092915050565b600082601f83011261224157600080fd5b815161224f61202b8261368a565b9150808252602083016020830185838301111561226b57600080fd5b612227838284613748565b803561178b816137ae565b805161178b816137b7565b60006020828403121561229e57600080fd5b60006122aa8484612001565b949350505050565b600080604083850312156122c557600080fd5b60006122d18585612001565b92505060206122e2858286016121cb565b9150509250929050565b600080600080600060a0868803121561230457600080fd5b853567ffffffffffffffff81111561231b57600080fd5b6123278882890161200c565b955050602086013567ffffffffffffffff81111561234457600080fd5b61235088828901612145565b945050604086013567ffffffffffffffff81111561236d57600080fd5b612379888289016120e8565b935050606086013567ffffffffffffffff81111561239657600080fd5b6123a28882890161208b565b925050608086013567ffffffffffffffff8111156123bf57600080fd5b6123cb888289016121e1565b9150509295509295909350565b6000602082840312156123ea57600080fd5b60006122aa84846121c0565b60006020828403121561240857600080fd5b60006122aa84846121d6565b60006020828403121561242657600080fd5b815167ffffffffffffffff81111561243d57600080fd5b6122aa84828501612230565b60006020828403121561245b57600080fd5b60006122aa84846121cb565b6000806040838503121561247a57600080fd5b600061248685856121cb565b92505060206122e285828601612001565b600080604083850312156124aa57600080fd5b60006124b685856121cb565b92505060206122e2858286016121b5565b600080600080600060a086880312156124df57600080fd5b60006124eb88886121cb565b95505060206124fc888289016121b5565b945050604061250d88828901612276565b935050606061251e888289016121cb565b92505060806123cb888289016121cb565b60006020828403121561254157600080fd5b60006122aa8484612281565b60006125598383612588565b505060200190565b6000611b44838361272a565b60006125598383612710565b61258281613709565b82525050565b612582816136d1565b600061259c826136c4565b6125a681856136c8565b93506125b1836136b2565b8060005b838110156125df5781516125c9888261254d565b97506125d4836136b2565b9250506001016125b5565b509495945050505050565b60006125f5826136c4565b6125ff81856136c8565b935083602082028501612611856136b2565b8060005b8581101561264b578484038952815161262e8582612561565b9450612639836136b2565b60209a909a0199925050600101612615565b5091979650505050505050565b6000612663826136c4565b61266d81856136c8565b93508360208202850161267f856136b2565b8060005b8581101561264b578484038952815161269c8582612561565b94506126a7836136b2565b60209a909a0199925050600101612683565b60006126c4826136c4565b6126ce81856136c8565b93506126d9836136b2565b8060005b838110156125df5781516126f1888261256d565b97506126fc836136b2565b9250506001016126dd565b612582816136dc565b61258281610535565b61258261272582610535565b610535565b6000612735826136c4565b61273f81856136c8565b935061274f818560208601613748565b61275881613774565b9093019392505050565b60008154600181166000811461277f57600181146127a5576127e4565b607f600283041661279081876136c8565b60ff19841681529550506020850192506127e4565b600282046127b381876136c8565b95506127be856136b8565b60005b828110156127dd578154888201526001909101906020016127c1565b8701945050505b505092915050565b61258281613710565b6125828161371b565b61258281613726565b60006128146039836136c8565b7f476f7665726e6f72416c7068613a3a5f5f61636365707441646d696e3a20736581527f6e646572206d75737420626520676f7620677561726469616e00000000000000602082015260400192915050565b60006128736044836136c8565b7f476f7665726e6f72416c7068613a3a71756575653a2070726f706f73616c206381527f616e206f6e6c79206265207175657565642069662069742069732073756363656020820152631959195960e21b604082015260600192915050565b60006128df6045836136c8565b7f476f7665726e6f72416c7068613a3a657865637574653a2070726f706f73616c81527f2063616e206f6e6c7920626520657865637574656420696620697420697320716020820152641d595d595960da1b604082015260600192915050565b600061294c600283610ab8565b61190160f01b815260020192915050565b600061296a604c836136c8565b7f476f7665726e6f72416c7068613a3a5f5f6578656375746553657454696d656c81527f6f636b50656e64696e6741646d696e3a2073656e646572206d7573742062652060208201526b33b7bb1033bab0b93234b0b760a11b604082015260600192915050565b60006129de6018836136c8565b7f73657450656e64696e6741646d696e2861646472657373290000000000000000815260200192915050565b6000612a176029836136c8565b7f476f7665726e6f72416c7068613a3a73746174653a20696e76616c69642070728152681bdc1bdcd85b081a5960ba1b602082015260400192915050565b6000612a62602d836136c8565b7f476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f7465722081526c185b1c9958591e481d9bdd1959609a1b602082015260400192915050565b6000612ab16059836136c8565b7f476f7665726e6f72416c7068613a3a70726f706f73653a206f6e65206c69766581527f2070726f706f73616c207065722070726f706f7365722c20666f756e6420616e60208201527f20616c72656164792070656e64696e672070726f706f73616c00000000000000604082015260600192915050565b6000612b36604a836136c8565b7f476f7665726e6f72416c7068613a3a5f5f717565756553657454696d656c6f6381527f6b50656e64696e6741646d696e3a2073656e646572206d75737420626520676f6020820152693b1033bab0b93234b0b760b11b604082015260600192915050565b6000612ba86028836136c8565b7f476f7665726e6f72416c7068613a3a70726f706f73653a20746f6f206d616e7981526720616374696f6e7360c01b602082015260400192915050565b6000612bf26011836136c8565b706164646974696f6e206f766572666c6f7760781b815260200192915050565b6000612c1f604383610ab8565b7f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353681527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208201526263742960e81b604082015260430192915050565b6000612c8a602783610ab8565b7f42616c6c6f742875696e743235362070726f706f73616c49642c626f6f6c20738152667570706f72742960c81b602082015260270192915050565b6000612cd36044836136c8565b7f476f7665726e6f72416c7068613a3a70726f706f73653a2070726f706f73616c81527f2066756e6374696f6e20696e666f726d6174696f6e206172697479206d69736d6020820152630c2e8c6d60e31b604082015260600192915050565b6000612d3f602f836136c8565b7f476f7665726e6f72416c7068613a3a63616e63656c3a2070726f706f7365722081526e18589bdd99481d1a1c995cda1bdb19608a1b602082015260400192915050565b6000612d906044836136c8565b7f476f7665726e6f72416c7068613a3a5f71756575654f725265766572743a207081527f726f706f73616c20616374696f6e20616c7265616479207175657565642061746020820152632065746160e01b604082015260600192915050565b6000612dfc602c836136c8565b7f476f7665726e6f72416c7068613a3a70726f706f73653a206d7573742070726f81526b7669646520616374696f6e7360a01b602082015260400192915050565b6000612e4a603f836136c8565b7f476f7665726e6f72416c7068613a3a70726f706f73653a2070726f706f73657281527f20766f7465732062656c6f772070726f706f73616c207468726573686f6c6400602082015260400192915050565b6000612ea9602f836136c8565b7f476f7665726e6f72416c7068613a3a63617374566f746542795369673a20696e81526e76616c6964207369676e617475726560881b602082015260400192915050565b6000612efa6058836136c8565b7f476f7665726e6f72416c7068613a3a70726f706f73653a206f6e65206c69766581527f2070726f706f73616c207065722070726f706f7365722c20666f756e6420616e60208201527f20616c7265616479206163746976652070726f706f73616c0000000000000000604082015260600192915050565b6000612f7f6036836136c8565b7f476f7665726e6f72416c7068613a3a63616e63656c3a2063616e6e6f742063618152751b98d95b08195e1958dd5d1959081c1c9bdc1bdcd85b60521b602082015260400192915050565b6000612fd7602a836136c8565b7f476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f74696e67815269081a5cc818db1bdcd95960b21b602082015260400192915050565b60006130236015836136c8565b747375627472616374696f6e20756e646572666c6f7760581b815260200192915050565b60006130546036836136c8565b7f476f7665726e6f72416c7068613a3a5f5f61626469636174653a2073656e6465815275391036bab9ba1031329033b7bb1033bab0b93234b0b760511b602082015260400192915050565b805160608301906130b08482612707565b5060208201516130c36020850182612707565b50604082015161106f60408501826130e8565b612582816136f7565b61258281613731565b612582816136fd565b60006130fc8261293f565b91506131088285612719565b6020820191506131188284612719565b5060200192915050565b600061178b82612c12565b600061178b82612c7d565b6020810161178b8284612588565b604081016131548285612579565b611b446020830184612710565b60a0810161316f8287612588565b61317c60208301866127fe565b818103604083015261318d816129d1565b905081810360608301526131a1818561272a565b90506114a36080830184612710565b604081016131548285612588565b608081016131cc8287612588565b6131d96020830186612710565b6131e66040830185612707565b6114a360608301846130df565b60a081016132018288612588565b61320e6020830187612710565b8181036040830152613220818661272a565b90508181036060830152613234818561272a565b90506132436080830184612710565b9695505050505050565b60a0810161325b8288612588565b6132686020830187612710565b818103604083015261327a8186612762565b905081810360608301526132348185612762565b6080808252810161329f8187612591565b905081810360208301526132b381866126b9565b905081810360408301526132c78185612658565b9050818103606083015261324381846125ea565b6020810161178b8284612710565b608081016132f78287612710565b6133046020830186612710565b6133116040830185612710565b6114a36060830184612588565b6060810161332c8286612710565b6133396020830185612710565b6122aa6040830184612707565b608081016133548287612710565b61336160208301866130d6565b61336e6040830185612710565b6114a36060830184612710565b6020810161178b82846127ec565b6020810161178b82846127f5565b60208082528101611b44818461272a565b6020808252810161178b81612807565b6020808252810161178b81612866565b6020808252810161178b816128d2565b6020808252810161178b8161295d565b6020808252810161178b81612a0a565b6020808252810161178b81612a55565b6020808252810161178b81612aa4565b6020808252810161178b81612b29565b6020808252810161178b81612b9b565b6020808252810161178b81612be5565b6020808252810161178b81612cc6565b6020808252810161178b81612d32565b6020808252810161178b81612d83565b6020808252810161178b81612def565b6020808252810161178b81612e3d565b6020808252810161178b81612e9c565b6020808252810161178b81612eed565b6020808252810161178b81612f72565b6020808252810161178b81612fca565b6020808252810161178b81613016565b6020808252810161178b81613047565b6060810161178b828461309f565b6101208101613515828c612710565b613522602083018b612579565b8181036040830152613534818a612591565b9050818103606083015261354881896126b9565b9050818103608083015261355c8188612658565b905081810360a083015261357081876125ea565b905061357f60c0830186612710565b61358c60e0830185612710565b81810361010083015261359f818461272a565b9b9a5050505050505050505050565b61012081016135bd828c612710565b6135ca602083018b612588565b6135d7604083018a612710565b6135e46060830189612710565b6135f16080830188612710565b6135fe60a0830187612710565b61360b60c0830186612710565b61361860e0830185612707565b613626610100830184612707565b9a9950505050505050505050565b604081016131548285612710565b60405181810167ffffffffffffffff8111828210171561366157600080fd5b604052919050565b600067ffffffffffffffff82111561368057600080fd5b5060209081020190565b600067ffffffffffffffff8211156136a157600080fd5b506020601f91909101601f19160190565b60200190565b60009081526020902090565b5190565b90815260200190565b600061178b826136eb565b151590565b80610ab88161377e565b6001600160a01b031690565b60ff1690565b6001600160601b031690565b600061178b825b600061178b826136d1565b600061178b826136e1565b600061178b82610535565b600061178b826136fd565b82818337506000910152565b60005b8381101561376357818101518382015260200161374b565b8381111561106f5750506000910152565b601f01601f191690565b60088110611ffe57fe5b613791816136d1565b8114611ffe57600080fd5b613791816136dc565b61379181610535565b613791816136f7565b613791816136fd56fea365627a7a7231582058d5679a9fb229541a103f1666e704e0b7878d9775a881e8ba6d89f8a606c4e06c6578706572696d656e74616cf564736f6c63430005110040","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x19C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x452A9320 GT PUSH2 0xEC JUMPI DUP1 PUSH4 0xD33219B4 GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xDDF0B009 GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xDDF0B009 EQ PUSH2 0x463 JUMPI DUP1 PUSH4 0xDEAAA7CC EQ PUSH2 0x483 JUMPI DUP1 PUSH4 0xE23A9A52 EQ PUSH2 0x498 JUMPI DUP1 PUSH4 0xFE0D94C1 EQ PUSH2 0x4C5 JUMPI PUSH2 0x19C JUMP JUMPDEST DUP1 PUSH4 0xD33219B4 EQ PUSH2 0x419 JUMPI DUP1 PUSH4 0xDA35C664 EQ PUSH2 0x42E JUMPI DUP1 PUSH4 0xDA95691A EQ PUSH2 0x443 JUMPI PUSH2 0x19C JUMP JUMPDEST DUP1 PUSH4 0x7BDBE4D0 GT PUSH2 0xC6 JUMPI DUP1 PUSH4 0x7BDBE4D0 EQ PUSH2 0x3BA JUMPI DUP1 PUSH4 0x91500671 EQ PUSH2 0x3CF JUMPI DUP1 PUSH4 0xB58131B0 EQ PUSH2 0x3EF JUMPI DUP1 PUSH4 0xB9A61961 EQ PUSH2 0x404 JUMPI PUSH2 0x19C JUMP JUMPDEST DUP1 PUSH4 0x452A9320 EQ PUSH2 0x363 JUMPI DUP1 PUSH4 0x4634C61F EQ PUSH2 0x385 JUMPI DUP1 PUSH4 0x760FBC13 EQ PUSH2 0x3A5 JUMPI PUSH2 0x19C JUMP JUMPDEST DUP1 PUSH4 0x20606B70 GT PUSH2 0x159 JUMPI DUP1 PUSH4 0x328DD982 GT PUSH2 0x133 JUMPI DUP1 PUSH4 0x328DD982 EQ PUSH2 0x2D1 JUMPI DUP1 PUSH4 0x3932ABB1 EQ PUSH2 0x301 JUMPI DUP1 PUSH4 0x3E4F49E6 EQ PUSH2 0x316 JUMPI DUP1 PUSH4 0x40E58EE5 EQ PUSH2 0x343 JUMPI PUSH2 0x19C JUMP JUMPDEST DUP1 PUSH4 0x20606B70 EQ PUSH2 0x287 JUMPI DUP1 PUSH4 0x21F43E42 EQ PUSH2 0x29C JUMPI DUP1 PUSH4 0x24BC1A64 EQ PUSH2 0x2BC JUMPI PUSH2 0x19C JUMP JUMPDEST DUP1 PUSH4 0x13CF08B EQ PUSH2 0x1A1 JUMPI DUP1 PUSH4 0x2A251A3 EQ PUSH2 0x1DF JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x201 JUMPI DUP1 PUSH4 0x109D0AF8 EQ PUSH2 0x223 JUMPI DUP1 PUSH4 0x15373E3D EQ PUSH2 0x245 JUMPI DUP1 PUSH4 0x17977C61 EQ PUSH2 0x267 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C1 PUSH2 0x1BC CALLDATASIZE PUSH1 0x4 PUSH2 0x2449 JUMP JUMPDEST PUSH2 0x4D8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1D6 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x35AE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F4 PUSH2 0x531 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1D6 SWAP2 SWAP1 PUSH2 0x32DB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x20D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x216 PUSH2 0x538 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1D6 SWAP2 SWAP1 PUSH2 0x3397 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x22F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x238 PUSH2 0x56B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1D6 SWAP2 SWAP1 PUSH2 0x337B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x251 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x265 PUSH2 0x260 CALLDATASIZE PUSH1 0x4 PUSH2 0x2497 JUMP JUMPDEST PUSH2 0x57A JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x273 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F4 PUSH2 0x282 CALLDATASIZE PUSH1 0x4 PUSH2 0x228C JUMP JUMPDEST PUSH2 0x589 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x293 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F4 PUSH2 0x59B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x265 PUSH2 0x2B7 CALLDATASIZE PUSH1 0x4 PUSH2 0x22B2 JUMP JUMPDEST PUSH2 0x5B2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F4 PUSH2 0x699 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F1 PUSH2 0x2EC CALLDATASIZE PUSH1 0x4 PUSH2 0x2449 JUMP JUMPDEST PUSH2 0x6A7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1D6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x328E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x30D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F4 PUSH2 0x936 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x322 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x336 PUSH2 0x331 CALLDATASIZE PUSH1 0x4 PUSH2 0x2449 JUMP JUMPDEST PUSH2 0x93B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1D6 SWAP2 SWAP1 PUSH2 0x3389 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x34F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x265 PUSH2 0x35E CALLDATASIZE PUSH1 0x4 PUSH2 0x2449 JUMP JUMPDEST PUSH2 0xABD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x36F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x378 PUSH2 0xD26 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1D6 SWAP2 SWAP1 PUSH2 0x3138 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x391 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x265 PUSH2 0x3A0 CALLDATASIZE PUSH1 0x4 PUSH2 0x24C7 JUMP JUMPDEST PUSH2 0xD35 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x265 PUSH2 0xECC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F4 PUSH2 0xF08 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x265 PUSH2 0x3EA CALLDATASIZE PUSH1 0x4 PUSH2 0x22B2 JUMP JUMPDEST PUSH2 0xF0D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F4 PUSH2 0xFE2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x410 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x265 PUSH2 0xFF0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x425 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x238 PUSH2 0x1075 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x43A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F4 PUSH2 0x1084 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x44F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F4 PUSH2 0x45E CALLDATASIZE PUSH1 0x4 PUSH2 0x22EC JUMP JUMPDEST PUSH2 0x108A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x46F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x265 PUSH2 0x47E CALLDATASIZE PUSH1 0x4 PUSH2 0x2449 JUMP JUMPDEST PUSH2 0x14AC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x48F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F4 PUSH2 0x1716 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4B8 PUSH2 0x4B3 CALLDATASIZE PUSH1 0x4 PUSH2 0x2467 JUMP JUMPDEST PUSH2 0x1722 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1D6 SWAP2 SWAP1 PUSH2 0x34F8 JUMP JUMPDEST PUSH2 0x265 PUSH2 0x4D3 CALLDATASIZE PUSH1 0x4 PUSH2 0x2449 JUMP JUMPDEST PUSH2 0x1791 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x7 DUP5 ADD SLOAD PUSH1 0x8 DUP6 ADD SLOAD PUSH1 0x9 DUP7 ADD SLOAD PUSH1 0xA DUP8 ADD SLOAD PUSH1 0xB SWAP1 SWAP8 ADD SLOAD SWAP6 SWAP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP6 AND SWAP6 SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 PUSH1 0xFF DUP1 DUP3 AND SWAP2 PUSH2 0x100 SWAP1 DIV AND DUP10 JUMP JUMPDEST PUSH2 0x4380 JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x17 DUP2 MSTORE PUSH1 0x20 ADD PUSH23 0x436F6D706F756E6420476F7665726E6F7220416C706861 PUSH1 0x48 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x585 CALLER DUP4 DUP4 PUSH2 0x1956 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5A7 SWAP1 PUSH2 0x3122 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x5E5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5DC SWAP1 PUSH2 0x33D8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 PUSH4 0x825F38F SWAP2 DUP4 SWAP2 SWAP1 PUSH2 0x60F SWAP1 DUP8 SWAP1 PUSH1 0x20 ADD PUSH2 0x3138 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP6 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x63E SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3161 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x658 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x66C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x694 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2414 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH10 0x54B40B1F852BDA000000 SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x60 DUP1 PUSH1 0x0 PUSH1 0x4 PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP DUP1 PUSH1 0x3 ADD DUP2 PUSH1 0x4 ADD DUP3 PUSH1 0x5 ADD DUP4 PUSH1 0x6 ADD DUP4 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x729 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x70B JUMPI JUMPDEST POP POP POP POP POP SWAP4 POP DUP3 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x77B JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 DUP1 DUP4 GT PUSH2 0x767 JUMPI JUMPDEST POP POP POP POP POP SWAP3 POP DUP2 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0x84E JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 SWAP1 DUP2 SWAP1 KECCAK256 DUP4 ADD DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP8 AND ISZERO MUL ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV SWAP3 DUP4 ADD DUP6 SWAP1 DIV DUP6 MUL DUP2 ADD DUP6 ADD SWAP1 SWAP2 MSTORE DUP2 DUP2 MSTORE SWAP3 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x83A JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x80F JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x83A JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x81D JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x7A3 JUMP JUMPDEST POP POP POP POP SWAP2 POP DUP1 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0x920 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 SWAP1 DUP2 SWAP1 KECCAK256 DUP4 ADD DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP8 AND ISZERO MUL ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV SWAP3 DUP4 ADD DUP6 SWAP1 DIV DUP6 MUL DUP2 ADD DUP6 ADD SWAP1 SWAP2 MSTORE DUP2 DUP2 MSTORE SWAP3 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x90C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x8E1 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x90C JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x8EF JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x875 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP POP SWAP2 SWAP4 POP SWAP2 SWAP4 JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x3 SLOAD LT ISZERO DUP1 ISZERO PUSH2 0x94F JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST PUSH2 0x96B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5DC SWAP1 PUSH2 0x33E8 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0xB DUP2 ADD SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x990 JUMPI PUSH1 0x2 SWAP2 POP POP PUSH2 0xAB8 JUMP JUMPDEST DUP1 PUSH1 0x7 ADD SLOAD NUMBER GT PUSH2 0x9A5 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0xAB8 JUMP JUMPDEST DUP1 PUSH1 0x8 ADD SLOAD NUMBER GT PUSH2 0x9BA JUMPI PUSH1 0x1 SWAP2 POP POP PUSH2 0xAB8 JUMP JUMPDEST DUP1 PUSH1 0xA ADD SLOAD DUP2 PUSH1 0x9 ADD SLOAD GT ISZERO DUP1 PUSH2 0x9DB JUMPI POP PUSH2 0x9D4 PUSH2 0x699 JUMP JUMPDEST DUP2 PUSH1 0x9 ADD SLOAD LT JUMPDEST ISZERO PUSH2 0x9EA JUMPI PUSH1 0x3 SWAP2 POP POP PUSH2 0xAB8 JUMP JUMPDEST PUSH1 0x2 DUP2 ADD SLOAD PUSH2 0x9FD JUMPI PUSH1 0x4 SWAP2 POP POP PUSH2 0xAB8 JUMP JUMPDEST PUSH1 0xB DUP2 ADD SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0xA19 JUMPI PUSH1 0x7 SWAP2 POP POP PUSH2 0xAB8 JUMP JUMPDEST PUSH1 0x2 DUP2 ADD SLOAD PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x60D143F1 PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD PUSH2 0xAA2 SWAP4 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0xC1A287E2 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA65 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA79 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 PUSH2 0xA9D SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x23F6 JUMP JUMPDEST PUSH2 0x1B1F JUMP JUMPDEST TIMESTAMP LT PUSH2 0xAB2 JUMPI PUSH1 0x6 SWAP2 POP POP PUSH2 0xAB8 JUMP JUMPDEST PUSH1 0x5 SWAP2 POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAC8 DUP3 PUSH2 0x93B JUMP JUMPDEST SWAP1 POP PUSH1 0x7 DUP2 PUSH1 0x7 DUP2 GT ISZERO PUSH2 0xAD8 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0xAF6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5DC SWAP1 PUSH2 0x34B8 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ DUP1 PUSH2 0xBC1 JUMPI POP PUSH2 0xB20 PUSH2 0xFE2 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD DUP4 DUP3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP3 PUSH4 0x782D6FE1 SWAP3 SWAP1 SWAP2 AND SWAP1 PUSH2 0xB49 SWAP1 NUMBER SWAP1 PUSH2 0x1B4B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB66 SWAP3 SWAP2 SWAP1 PUSH2 0x31B0 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB7E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xB92 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 PUSH2 0xBB6 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x252F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND LT JUMPDEST PUSH2 0xBDD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5DC SWAP1 PUSH2 0x3458 JUMP JUMPDEST PUSH1 0xB DUP2 ADD DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP3 ADD SLOAD DUP2 LT ISZERO PUSH2 0xCE9 JUMPI PUSH1 0x0 SLOAD PUSH1 0x3 DUP4 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x591FCDFE SWAP2 SWAP1 DUP5 SWAP1 DUP2 LT PUSH2 0xC21 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x4 DUP6 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 DUP6 SWAP1 DUP2 LT PUSH2 0xC49 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP6 PUSH1 0x5 ADD DUP6 DUP2 SLOAD DUP2 LT PUSH2 0xC63 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD DUP7 PUSH1 0x6 ADD DUP7 DUP2 SLOAD DUP2 LT PUSH2 0xC7C JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD DUP8 PUSH1 0x2 ADD SLOAD PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCAB SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x324D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCC5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xCD9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 POP PUSH2 0xBEF SWAP1 POP JUMP JUMPDEST POP PUSH32 0x789CF55BE980739DAD1D0699B93B58E806B51C9D96619BFA8FE0A28ABAA7B30C DUP4 PUSH1 0x40 MLOAD PUSH2 0xD19 SWAP2 SWAP1 PUSH2 0x32DB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0xD43 SWAP1 PUSH2 0x3122 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB DUP3 KECCAK256 DUP3 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x17 DUP3 MSTORE PUSH23 0x436F6D706F756E6420476F7665726E6F7220416C706861 PUSH1 0x48 SHL PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xF5EB22C2E7100465020C98B00537528808DB4FEC6EB24C550685A92742247BC5 PUSH2 0xDA4 PUSH2 0x1B73 JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xDB8 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x32E9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0xDDE SWAP1 PUSH2 0x312D JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB DUP2 KECCAK256 PUSH2 0xDF7 SWAP2 DUP10 SWAP1 DUP10 SWAP1 PUSH1 0x20 ADD PUSH2 0x331E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xE24 SWAP3 SWAP2 SWAP1 PUSH2 0x30F1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP3 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0xE61 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3346 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE83 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xEB6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5DC SWAP1 PUSH2 0x3498 JUMP JUMPDEST PUSH2 0xEC1 DUP2 DUP11 DUP11 PUSH2 0x1956 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xEF6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5DC SWAP1 PUSH2 0x34E8 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0xA SWAP1 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xF37 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5DC SWAP1 PUSH2 0x3418 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 PUSH4 0x3A66F901 SWAP2 DUP4 SWAP2 SWAP1 PUSH2 0xF61 SWAP1 DUP8 SWAP1 PUSH1 0x20 ADD PUSH2 0x3138 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP6 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF90 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3161 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFAA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xFBE 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 PUSH2 0x694 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x23F6 JUMP JUMPDEST PUSH10 0x152D02C7E14AF6800000 SWAP1 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x101A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5DC SWAP1 PUSH2 0x33A8 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xE18B681 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP3 PUSH4 0xE18B681 SWAP3 PUSH1 0x4 DUP1 DUP5 ADD SWAP4 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x105B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x106F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1094 PUSH2 0xFE2 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x782D6FE1 SWAP1 CALLER SWAP1 PUSH2 0x10B5 SWAP1 NUMBER SWAP1 PUSH2 0x1B4B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x10D2 SWAP3 SWAP2 SWAP1 PUSH2 0x3146 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10FE 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 PUSH2 0x1122 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x252F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND GT PUSH2 0x1148 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5DC SWAP1 PUSH2 0x3488 JUMP JUMPDEST DUP5 MLOAD DUP7 MLOAD EQ DUP1 ISZERO PUSH2 0x115A JUMPI POP DUP4 MLOAD DUP7 MLOAD EQ JUMPDEST DUP1 ISZERO PUSH2 0x1167 JUMPI POP DUP3 MLOAD DUP7 MLOAD EQ JUMPDEST PUSH2 0x1183 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5DC SWAP1 PUSH2 0x3448 JUMP JUMPDEST DUP6 MLOAD PUSH2 0x11A1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5DC SWAP1 PUSH2 0x3478 JUMP JUMPDEST PUSH2 0x11A9 PUSH2 0xF08 JUMP JUMPDEST DUP7 MLOAD GT ISZERO PUSH2 0x11C9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5DC SWAP1 PUSH2 0x3428 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x1246 JUMPI PUSH1 0x0 PUSH2 0x11EA DUP3 PUSH2 0x93B JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP2 PUSH1 0x7 DUP2 GT ISZERO PUSH2 0x11FA JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x1218 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5DC SWAP1 PUSH2 0x34A8 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x7 DUP2 GT ISZERO PUSH2 0x1226 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x1244 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5DC SWAP1 PUSH2 0x3408 JUMP JUMPDEST POP JUMPDEST PUSH1 0x0 PUSH2 0x1254 NUMBER PUSH2 0xA9D PUSH2 0x936 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1264 DUP3 PUSH2 0xA9D PUSH2 0x531 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE SWAP1 POP PUSH2 0x1277 PUSH2 0x1CD6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x1A0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SLOAD DUP2 MSTORE PUSH1 0x20 ADD CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD DUP12 DUP2 MSTORE PUSH1 0x20 ADD DUP11 DUP2 MSTORE PUSH1 0x20 ADD DUP10 DUP2 MSTORE PUSH1 0x20 ADD DUP9 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE POP SWAP1 POP DUP1 PUSH1 0x4 PUSH1 0x0 DUP4 PUSH1 0x0 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD SSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD SSTORE PUSH1 0x60 DUP3 ADD MLOAD DUP2 PUSH1 0x3 ADD SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x135A SWAP3 SWAP2 SWAP1 PUSH2 0x1D4B JUMP JUMPDEST POP PUSH1 0x80 DUP3 ADD MLOAD DUP1 MLOAD PUSH2 0x1376 SWAP2 PUSH1 0x4 DUP5 ADD SWAP2 PUSH1 0x20 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x1DB0 JUMP JUMPDEST POP PUSH1 0xA0 DUP3 ADD MLOAD DUP1 MLOAD PUSH2 0x1392 SWAP2 PUSH1 0x5 DUP5 ADD SWAP2 PUSH1 0x20 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x1DF7 JUMP JUMPDEST POP PUSH1 0xC0 DUP3 ADD MLOAD DUP1 MLOAD PUSH2 0x13AE SWAP2 PUSH1 0x6 DUP5 ADD SWAP2 PUSH1 0x20 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x1E50 JUMP JUMPDEST POP PUSH1 0xE0 DUP3 ADD MLOAD DUP2 PUSH1 0x7 ADD SSTORE PUSH2 0x100 DUP3 ADD MLOAD DUP2 PUSH1 0x8 ADD SSTORE PUSH2 0x120 DUP3 ADD MLOAD DUP2 PUSH1 0x9 ADD SSTORE PUSH2 0x140 DUP3 ADD MLOAD DUP2 PUSH1 0xA ADD SSTORE PUSH2 0x160 DUP3 ADD MLOAD DUP2 PUSH1 0xB ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH2 0x180 DUP3 ADD MLOAD DUP2 PUSH1 0xB ADD PUSH1 0x1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP SWAP1 POP POP DUP1 PUSH1 0x0 ADD MLOAD PUSH1 0x5 PUSH1 0x0 DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH32 0x7D84A6263AE0D98D3329BD7B46BB4E8D6F98CD35A7ADB45C274C8B7FD5EBD5E0 DUP2 PUSH1 0x0 ADD MLOAD CALLER DUP13 DUP13 DUP13 DUP13 DUP10 DUP10 DUP15 PUSH1 0x40 MLOAD PUSH2 0x1494 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3506 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 MLOAD SWAP4 POP POP POP POP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x4 PUSH2 0x14B7 DUP3 PUSH2 0x93B JUMP JUMPDEST PUSH1 0x7 DUP2 GT ISZERO PUSH2 0x14C2 JUMPI INVALID JUMPDEST EQ PUSH2 0x14DF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5DC SWAP1 PUSH2 0x33B8 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP5 SLOAD DUP3 MLOAD PUSH4 0xD48571F PUSH1 0xE3 SHL DUP2 MSTORE SWAP3 MLOAD SWAP2 SWAP6 SWAP5 PUSH2 0x1534 SWAP5 TIMESTAMP SWAP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND SWAP4 PUSH4 0x6A42B8F8 SWAP4 DUP1 DUP5 ADD SWAP4 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA65 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP4 ADD SLOAD DUP2 LT ISZERO PUSH2 0x16DC JUMPI PUSH2 0x16D4 DUP4 PUSH1 0x3 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1557 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x4 DUP6 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 DUP5 SWAP1 DUP2 LT PUSH2 0x157F JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP6 PUSH1 0x5 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x1599 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP2 DUP3 SWAP1 KECCAK256 ADD DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP8 AND ISZERO MUL ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV SWAP3 DUP4 ADD DUP6 SWAP1 DIV DUP6 MUL DUP2 ADD DUP6 ADD SWAP1 SWAP2 MSTORE DUP2 DUP2 MSTORE SWAP3 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x1627 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x15FC JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1627 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x160A JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP7 PUSH1 0x6 ADD DUP6 DUP2 SLOAD DUP2 LT PUSH2 0x163B JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP2 DUP3 SWAP1 KECCAK256 ADD DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP8 AND ISZERO MUL ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV SWAP3 DUP4 ADD DUP6 SWAP1 DIV DUP6 MUL DUP2 ADD DUP6 ADD SWAP1 SWAP2 MSTORE DUP2 DUP2 MSTORE SWAP3 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x16C9 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x169E JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x16C9 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x16AC JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP7 PUSH2 0x1B77 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1539 JUMP JUMPDEST POP PUSH1 0x2 DUP3 ADD DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x9A2E42FD6722813D69113E7D0079D3D940171428DF7373DF9C7F7617CFDA2892 SWAP1 PUSH2 0xD19 SWAP1 DUP6 SWAP1 DUP5 SWAP1 PUSH2 0x3634 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5A7 SWAP1 PUSH2 0x312D JUMP JUMPDEST PUSH2 0x172A PUSH2 0x1EA9 JUMP JUMPDEST POP PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 MSTORE PUSH1 0xC ADD DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP3 MLOAD PUSH1 0x60 DUP2 ADD DUP5 MSTORE SWAP1 SLOAD PUSH1 0xFF DUP1 DUP3 AND ISZERO ISZERO DUP4 MSTORE PUSH2 0x100 DUP3 DIV AND ISZERO ISZERO SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH3 0x10000 SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x5 PUSH2 0x179C DUP3 PUSH2 0x93B JUMP JUMPDEST PUSH1 0x7 DUP2 GT ISZERO PUSH2 0x17A7 JUMPI INVALID JUMPDEST EQ PUSH2 0x17C4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5DC SWAP1 PUSH2 0x33C8 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0xB DUP2 ADD DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 OR SWAP1 SSTORE SWAP1 JUMPDEST PUSH1 0x3 DUP3 ADD SLOAD DUP2 LT ISZERO PUSH2 0x191A JUMPI PUSH1 0x0 SLOAD PUSH1 0x4 DUP4 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x825F38F SWAP2 SWAP1 DUP5 SWAP1 DUP2 LT PUSH2 0x1817 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP5 PUSH1 0x3 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x1831 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x4 DUP7 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 DUP7 SWAP1 DUP2 LT PUSH2 0x1859 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP7 PUSH1 0x5 ADD DUP7 DUP2 SLOAD DUP2 LT PUSH2 0x1873 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD DUP8 PUSH1 0x6 ADD DUP8 DUP2 SLOAD DUP2 LT PUSH2 0x188C JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD DUP9 PUSH1 0x2 ADD SLOAD PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x18BB SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x324D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x18D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x18E8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x1911 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2414 JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x17E5 JUMP JUMPDEST POP PUSH32 0x712AE1383F79AC853F8D882153778E0260EF8F03B504E2866E0593E04D2B291F DUP3 PUSH1 0x40 MLOAD PUSH2 0x194A SWAP2 SWAP1 PUSH2 0x32DB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH2 0x1961 DUP4 PUSH2 0x93B JUMP JUMPDEST PUSH1 0x7 DUP2 GT ISZERO PUSH2 0x196C JUMPI INVALID JUMPDEST EQ PUSH2 0x1989 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5DC SWAP1 PUSH2 0x34C8 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE PUSH1 0xC DUP2 ADD SWAP1 SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x19D2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5DC SWAP1 PUSH2 0x33F8 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x7 DUP4 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x782D6FE1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x782D6FE1 SWAP2 PUSH2 0x1A08 SWAP2 DUP11 SWAP2 PUSH1 0x4 ADD PUSH2 0x31B0 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1A20 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1A34 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 PUSH2 0x1A58 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x252F JUMP JUMPDEST SWAP1 POP DUP4 ISZERO PUSH2 0x1A81 JUMPI PUSH2 0x1A77 DUP4 PUSH1 0x9 ADD SLOAD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH2 0x1B1F JUMP JUMPDEST PUSH1 0x9 DUP5 ADD SSTORE PUSH2 0x1A9E JUMP JUMPDEST PUSH2 0x1A98 DUP4 PUSH1 0xA ADD SLOAD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH2 0x1B1F JUMP JUMPDEST PUSH1 0xA DUP5 ADD SSTORE JUMPDEST DUP2 SLOAD PUSH1 0x1 PUSH1 0xFF NOT SWAP1 SWAP2 AND OR PUSH2 0xFF00 NOT AND PUSH2 0x100 DUP6 ISZERO ISZERO MUL OR PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFF0000 NOT AND PUSH3 0x10000 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP4 AND MUL OR DUP3 SSTORE PUSH1 0x40 MLOAD PUSH32 0x877856338E13F63D0C36822FF0EF736B80934CD90574A3A5BC9262C39D217C46 SWAP1 PUSH2 0x1B0F SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP7 SWAP1 PUSH2 0x31BE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x1B44 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5DC SWAP1 PUSH2 0x3438 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 GT ISZERO PUSH2 0x1B6D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5DC SWAP1 PUSH2 0x34D8 JUMP JUMPDEST POP SWAP1 SUB SWAP1 JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xF2B06537 SWAP1 PUSH2 0x1BA5 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x20 ADD PUSH2 0x31F3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1BD7 SWAP2 SWAP1 PUSH2 0x32DB JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1BEF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1C03 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 PUSH2 0x1C27 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x23D8 JUMP JUMPDEST ISZERO PUSH2 0x1C44 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5DC SWAP1 PUSH2 0x3468 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH4 0x3A66F901 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x3A66F901 SWAP1 PUSH2 0x1C7C SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x31F3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1C96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1CAA 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 PUSH2 0x1CCE SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x23F6 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x1A0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x1DA0 JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x1DA0 JUMPI DUP3 MLOAD DUP3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND OR DUP3 SSTORE PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x1D6B JUMP JUMPDEST POP PUSH2 0x1DAC SWAP3 SWAP2 POP PUSH2 0x1EC9 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x1DEB JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x1DEB JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x1DD0 JUMP JUMPDEST POP PUSH2 0x1DAC SWAP3 SWAP2 POP PUSH2 0x1EED JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x1E44 JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x1E44 JUMPI DUP3 MLOAD DUP1 MLOAD PUSH2 0x1E34 SWAP2 DUP5 SWAP2 PUSH1 0x20 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x1F07 JUMP JUMPDEST POP SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x1E17 JUMP JUMPDEST POP PUSH2 0x1DAC SWAP3 SWAP2 POP PUSH2 0x1F74 JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x1E9D JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x1E9D JUMPI DUP3 MLOAD DUP1 MLOAD PUSH2 0x1E8D SWAP2 DUP5 SWAP2 PUSH1 0x20 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x1F07 JUMP JUMPDEST POP SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x1E70 JUMP JUMPDEST POP PUSH2 0x1DAC SWAP3 SWAP2 POP PUSH2 0x1F97 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH2 0x535 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1DAC JUMPI DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x1ECF JUMP JUMPDEST PUSH2 0x535 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1DAC JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x1EF3 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x1F48 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x1DEB JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x1DEB JUMPI SWAP2 DUP3 ADD DUP3 DUP2 GT ISZERO PUSH2 0x1DEB JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x1DD0 JUMP JUMPDEST PUSH2 0x535 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1DAC JUMPI PUSH1 0x0 PUSH2 0x1F8E DUP3 DUP3 PUSH2 0x1FBA JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x1F7A JUMP JUMPDEST PUSH2 0x535 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1DAC JUMPI PUSH1 0x0 PUSH2 0x1FB1 DUP3 DUP3 PUSH2 0x1FBA JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x1F9D JUMP JUMPDEST POP DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV PUSH1 0x0 DUP3 SSTORE DUP1 PUSH1 0x1F LT PUSH2 0x1FE0 JUMPI POP PUSH2 0x1FFE JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1FFE SWAP2 SWAP1 PUSH2 0x1EED JUMP JUMPDEST POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x178B DUP2 PUSH2 0x3788 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x201D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2030 PUSH2 0x202B DUP3 PUSH2 0x3669 JUMP JUMPDEST PUSH2 0x3642 JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH1 0x20 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0x2055 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2081 JUMPI DUP2 PUSH2 0x206B DUP9 DUP3 PUSH2 0x2001 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2058 JUMP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x209C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x20AA PUSH2 0x202B DUP3 PUSH2 0x3669 JUMP JUMPDEST DUP2 DUP2 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 POP DUP3 ADD DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2081 JUMPI DUP2 CALLDATALOAD DUP7 ADD PUSH2 0x20D2 DUP9 DUP3 PUSH2 0x21E1 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x20BC JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x20F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2107 PUSH2 0x202B DUP3 PUSH2 0x3669 JUMP JUMPDEST DUP2 DUP2 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 POP DUP3 ADD DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2081 JUMPI DUP2 CALLDATALOAD DUP7 ADD PUSH2 0x212F DUP9 DUP3 PUSH2 0x21E1 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2119 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2156 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2164 PUSH2 0x202B DUP3 PUSH2 0x3669 JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH1 0x20 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0x2189 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2081 JUMPI DUP2 PUSH2 0x219F DUP9 DUP3 PUSH2 0x21CB JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x218C JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x178B DUP2 PUSH2 0x379C JUMP JUMPDEST DUP1 MLOAD PUSH2 0x178B DUP2 PUSH2 0x379C JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x178B DUP2 PUSH2 0x37A5 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x178B DUP2 PUSH2 0x37A5 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x21F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2200 PUSH2 0x202B DUP3 PUSH2 0x368A JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x221C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2227 DUP4 DUP3 DUP5 PUSH2 0x373C JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2241 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x224F PUSH2 0x202B DUP3 PUSH2 0x368A JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x226B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2227 DUP4 DUP3 DUP5 PUSH2 0x3748 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x178B DUP2 PUSH2 0x37AE JUMP JUMPDEST DUP1 MLOAD PUSH2 0x178B DUP2 PUSH2 0x37B7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x229E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x22AA DUP5 DUP5 PUSH2 0x2001 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x22C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x22D1 DUP6 DUP6 PUSH2 0x2001 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x22E2 DUP6 DUP3 DUP7 ADD PUSH2 0x21CB JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x2304 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x231B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2327 DUP9 DUP3 DUP10 ADD PUSH2 0x200C JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2344 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2350 DUP9 DUP3 DUP10 ADD PUSH2 0x2145 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x236D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2379 DUP9 DUP3 DUP10 ADD PUSH2 0x20E8 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2396 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x23A2 DUP9 DUP3 DUP10 ADD PUSH2 0x208B JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x23BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x23CB DUP9 DUP3 DUP10 ADD PUSH2 0x21E1 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x23EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x22AA DUP5 DUP5 PUSH2 0x21C0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2408 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x22AA DUP5 DUP5 PUSH2 0x21D6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2426 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x243D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x22AA DUP5 DUP3 DUP6 ADD PUSH2 0x2230 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x245B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x22AA DUP5 DUP5 PUSH2 0x21CB JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x247A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2486 DUP6 DUP6 PUSH2 0x21CB JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x22E2 DUP6 DUP3 DUP7 ADD PUSH2 0x2001 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x24AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x24B6 DUP6 DUP6 PUSH2 0x21CB JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x22E2 DUP6 DUP3 DUP7 ADD PUSH2 0x21B5 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x24DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x24EB DUP9 DUP9 PUSH2 0x21CB JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 PUSH2 0x24FC DUP9 DUP3 DUP10 ADD PUSH2 0x21B5 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 PUSH2 0x250D DUP9 DUP3 DUP10 ADD PUSH2 0x2276 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 PUSH2 0x251E DUP9 DUP3 DUP10 ADD PUSH2 0x21CB JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 PUSH2 0x23CB DUP9 DUP3 DUP10 ADD PUSH2 0x21CB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2541 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x22AA DUP5 DUP5 PUSH2 0x2281 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2559 DUP4 DUP4 PUSH2 0x2588 JUMP JUMPDEST POP POP PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B44 DUP4 DUP4 PUSH2 0x272A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2559 DUP4 DUP4 PUSH2 0x2710 JUMP JUMPDEST PUSH2 0x2582 DUP2 PUSH2 0x3709 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x2582 DUP2 PUSH2 0x36D1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x259C DUP3 PUSH2 0x36C4 JUMP JUMPDEST PUSH2 0x25A6 DUP2 DUP6 PUSH2 0x36C8 JUMP JUMPDEST SWAP4 POP PUSH2 0x25B1 DUP4 PUSH2 0x36B2 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x25DF JUMPI DUP2 MLOAD PUSH2 0x25C9 DUP9 DUP3 PUSH2 0x254D JUMP JUMPDEST SWAP8 POP PUSH2 0x25D4 DUP4 PUSH2 0x36B2 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x25B5 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x25F5 DUP3 PUSH2 0x36C4 JUMP JUMPDEST PUSH2 0x25FF DUP2 DUP6 PUSH2 0x36C8 JUMP JUMPDEST SWAP4 POP DUP4 PUSH1 0x20 DUP3 MUL DUP6 ADD PUSH2 0x2611 DUP6 PUSH2 0x36B2 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x264B JUMPI DUP5 DUP5 SUB DUP10 MSTORE DUP2 MLOAD PUSH2 0x262E DUP6 DUP3 PUSH2 0x2561 JUMP JUMPDEST SWAP5 POP PUSH2 0x2639 DUP4 PUSH2 0x36B2 JUMP JUMPDEST PUSH1 0x20 SWAP11 SWAP1 SWAP11 ADD SWAP10 SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x2615 JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2663 DUP3 PUSH2 0x36C4 JUMP JUMPDEST PUSH2 0x266D DUP2 DUP6 PUSH2 0x36C8 JUMP JUMPDEST SWAP4 POP DUP4 PUSH1 0x20 DUP3 MUL DUP6 ADD PUSH2 0x267F DUP6 PUSH2 0x36B2 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x264B JUMPI DUP5 DUP5 SUB DUP10 MSTORE DUP2 MLOAD PUSH2 0x269C DUP6 DUP3 PUSH2 0x2561 JUMP JUMPDEST SWAP5 POP PUSH2 0x26A7 DUP4 PUSH2 0x36B2 JUMP JUMPDEST PUSH1 0x20 SWAP11 SWAP1 SWAP11 ADD SWAP10 SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x2683 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x26C4 DUP3 PUSH2 0x36C4 JUMP JUMPDEST PUSH2 0x26CE DUP2 DUP6 PUSH2 0x36C8 JUMP JUMPDEST SWAP4 POP PUSH2 0x26D9 DUP4 PUSH2 0x36B2 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x25DF JUMPI DUP2 MLOAD PUSH2 0x26F1 DUP9 DUP3 PUSH2 0x256D JUMP JUMPDEST SWAP8 POP PUSH2 0x26FC DUP4 PUSH2 0x36B2 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x26DD JUMP JUMPDEST PUSH2 0x2582 DUP2 PUSH2 0x36DC JUMP JUMPDEST PUSH2 0x2582 DUP2 PUSH2 0x535 JUMP JUMPDEST PUSH2 0x2582 PUSH2 0x2725 DUP3 PUSH2 0x535 JUMP JUMPDEST PUSH2 0x535 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2735 DUP3 PUSH2 0x36C4 JUMP JUMPDEST PUSH2 0x273F DUP2 DUP6 PUSH2 0x36C8 JUMP JUMPDEST SWAP4 POP PUSH2 0x274F DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x3748 JUMP JUMPDEST PUSH2 0x2758 DUP2 PUSH2 0x3774 JUMP JUMPDEST SWAP1 SWAP4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SLOAD PUSH1 0x1 DUP2 AND PUSH1 0x0 DUP2 EQ PUSH2 0x277F JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0x27A5 JUMPI PUSH2 0x27E4 JUMP JUMPDEST PUSH1 0x7F PUSH1 0x2 DUP4 DIV AND PUSH2 0x2790 DUP2 DUP8 PUSH2 0x36C8 JUMP JUMPDEST PUSH1 0xFF NOT DUP5 AND DUP2 MSTORE SWAP6 POP POP PUSH1 0x20 DUP6 ADD SWAP3 POP PUSH2 0x27E4 JUMP JUMPDEST PUSH1 0x2 DUP3 DIV PUSH2 0x27B3 DUP2 DUP8 PUSH2 0x36C8 JUMP JUMPDEST SWAP6 POP PUSH2 0x27BE DUP6 PUSH2 0x36B8 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x27DD JUMPI DUP2 SLOAD DUP9 DUP3 ADD MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD PUSH2 0x27C1 JUMP JUMPDEST DUP8 ADD SWAP5 POP POP POP JUMPDEST POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2582 DUP2 PUSH2 0x3710 JUMP JUMPDEST PUSH2 0x2582 DUP2 PUSH2 0x371B JUMP JUMPDEST PUSH2 0x2582 DUP2 PUSH2 0x3726 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2814 PUSH1 0x39 DUP4 PUSH2 0x36C8 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A5F5F61636365707441646D696E3A207365 DUP2 MSTORE PUSH32 0x6E646572206D75737420626520676F7620677561726469616E00000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2873 PUSH1 0x44 DUP4 PUSH2 0x36C8 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A71756575653A2070726F706F73616C2063 DUP2 MSTORE PUSH32 0x616E206F6E6C7920626520717565756564206966206974206973207375636365 PUSH1 0x20 DUP3 ADD MSTORE PUSH4 0x19591959 PUSH1 0xE2 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x28DF PUSH1 0x45 DUP4 PUSH2 0x36C8 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A657865637574653A2070726F706F73616C DUP2 MSTORE PUSH32 0x2063616E206F6E6C792062652065786563757465642069662069742069732071 PUSH1 0x20 DUP3 ADD MSTORE PUSH5 0x1D595D5959 PUSH1 0xDA SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x294C PUSH1 0x2 DUP4 PUSH2 0xAB8 JUMP JUMPDEST PUSH2 0x1901 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x296A PUSH1 0x4C DUP4 PUSH2 0x36C8 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A5F5F6578656375746553657454696D656C DUP2 MSTORE PUSH32 0x6F636B50656E64696E6741646D696E3A2073656E646572206D75737420626520 PUSH1 0x20 DUP3 ADD MSTORE PUSH12 0x33B7BB1033BAB0B93234B0B7 PUSH1 0xA1 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x29DE PUSH1 0x18 DUP4 PUSH2 0x36C8 JUMP JUMPDEST PUSH32 0x73657450656E64696E6741646D696E2861646472657373290000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2A17 PUSH1 0x29 DUP4 PUSH2 0x36C8 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A73746174653A20696E76616C6964207072 DUP2 MSTORE PUSH9 0x1BDC1BDCD85B081A59 PUSH1 0xBA SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2A62 PUSH1 0x2D DUP4 PUSH2 0x36C8 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A5F63617374566F74653A20766F74657220 DUP2 MSTORE PUSH13 0x185B1C9958591E481D9BDD1959 PUSH1 0x9A SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2AB1 PUSH1 0x59 DUP4 PUSH2 0x36C8 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A70726F706F73653A206F6E65206C697665 DUP2 MSTORE PUSH32 0x2070726F706F73616C207065722070726F706F7365722C20666F756E6420616E PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x20616C72656164792070656E64696E672070726F706F73616C00000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2B36 PUSH1 0x4A DUP4 PUSH2 0x36C8 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A5F5F717565756553657454696D656C6F63 DUP2 MSTORE PUSH32 0x6B50656E64696E6741646D696E3A2073656E646572206D75737420626520676F PUSH1 0x20 DUP3 ADD MSTORE PUSH10 0x3B1033BAB0B93234B0B7 PUSH1 0xB1 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2BA8 PUSH1 0x28 DUP4 PUSH2 0x36C8 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A70726F706F73653A20746F6F206D616E79 DUP2 MSTORE PUSH8 0x20616374696F6E73 PUSH1 0xC0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2BF2 PUSH1 0x11 DUP4 PUSH2 0x36C8 JUMP JUMPDEST PUSH17 0x6164646974696F6E206F766572666C6F77 PUSH1 0x78 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2C1F PUSH1 0x43 DUP4 PUSH2 0xAB8 JUMP JUMPDEST PUSH32 0x454950373132446F6D61696E28737472696E67206E616D652C75696E74323536 DUP2 MSTORE PUSH32 0x20636861696E49642C6164647265737320766572696679696E67436F6E747261 PUSH1 0x20 DUP3 ADD MSTORE PUSH3 0x637429 PUSH1 0xE8 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x43 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2C8A PUSH1 0x27 DUP4 PUSH2 0xAB8 JUMP JUMPDEST PUSH32 0x42616C6C6F742875696E743235362070726F706F73616C49642C626F6F6C2073 DUP2 MSTORE PUSH7 0x7570706F727429 PUSH1 0xC8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x27 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2CD3 PUSH1 0x44 DUP4 PUSH2 0x36C8 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A70726F706F73653A2070726F706F73616C DUP2 MSTORE PUSH32 0x2066756E6374696F6E20696E666F726D6174696F6E206172697479206D69736D PUSH1 0x20 DUP3 ADD MSTORE PUSH4 0xC2E8C6D PUSH1 0xE3 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2D3F PUSH1 0x2F DUP4 PUSH2 0x36C8 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A63616E63656C3A2070726F706F73657220 DUP2 MSTORE PUSH15 0x18589BDD99481D1A1C995CDA1BDB19 PUSH1 0x8A SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2D90 PUSH1 0x44 DUP4 PUSH2 0x36C8 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A5F71756575654F725265766572743A2070 DUP2 MSTORE PUSH32 0x726F706F73616C20616374696F6E20616C726561647920717565756564206174 PUSH1 0x20 DUP3 ADD MSTORE PUSH4 0x20657461 PUSH1 0xE0 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2DFC PUSH1 0x2C DUP4 PUSH2 0x36C8 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A70726F706F73653A206D7573742070726F DUP2 MSTORE PUSH12 0x7669646520616374696F6E73 PUSH1 0xA0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2E4A PUSH1 0x3F DUP4 PUSH2 0x36C8 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A70726F706F73653A2070726F706F736572 DUP2 MSTORE PUSH32 0x20766F7465732062656C6F772070726F706F73616C207468726573686F6C6400 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2EA9 PUSH1 0x2F DUP4 PUSH2 0x36C8 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A63617374566F746542795369673A20696E DUP2 MSTORE PUSH15 0x76616C6964207369676E6174757265 PUSH1 0x88 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2EFA PUSH1 0x58 DUP4 PUSH2 0x36C8 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A70726F706F73653A206F6E65206C697665 DUP2 MSTORE PUSH32 0x2070726F706F73616C207065722070726F706F7365722C20666F756E6420616E PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x20616C7265616479206163746976652070726F706F73616C0000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2F7F PUSH1 0x36 DUP4 PUSH2 0x36C8 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A63616E63656C3A2063616E6E6F74206361 DUP2 MSTORE PUSH22 0x1B98D95B08195E1958DD5D1959081C1C9BDC1BDCD85B PUSH1 0x52 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2FD7 PUSH1 0x2A DUP4 PUSH2 0x36C8 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A5F63617374566F74653A20766F74696E67 DUP2 MSTORE PUSH10 0x81A5CC818DB1BDCD959 PUSH1 0xB2 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3023 PUSH1 0x15 DUP4 PUSH2 0x36C8 JUMP JUMPDEST PUSH21 0x7375627472616374696F6E20756E646572666C6F77 PUSH1 0x58 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3054 PUSH1 0x36 DUP4 PUSH2 0x36C8 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A5F5F61626469636174653A2073656E6465 DUP2 MSTORE PUSH22 0x391036BAB9BA1031329033B7BB1033BAB0B93234B0B7 PUSH1 0x51 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x60 DUP4 ADD SWAP1 PUSH2 0x30B0 DUP5 DUP3 PUSH2 0x2707 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x30C3 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x2707 JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x106F PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x30E8 JUMP JUMPDEST PUSH2 0x2582 DUP2 PUSH2 0x36F7 JUMP JUMPDEST PUSH2 0x2582 DUP2 PUSH2 0x3731 JUMP JUMPDEST PUSH2 0x2582 DUP2 PUSH2 0x36FD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x30FC DUP3 PUSH2 0x293F JUMP JUMPDEST SWAP2 POP PUSH2 0x3108 DUP3 DUP6 PUSH2 0x2719 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH2 0x3118 DUP3 DUP5 PUSH2 0x2719 JUMP JUMPDEST POP PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x178B DUP3 PUSH2 0x2C12 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x178B DUP3 PUSH2 0x2C7D JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x178B DUP3 DUP5 PUSH2 0x2588 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x3154 DUP3 DUP6 PUSH2 0x2579 JUMP JUMPDEST PUSH2 0x1B44 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2710 JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x316F DUP3 DUP8 PUSH2 0x2588 JUMP JUMPDEST PUSH2 0x317C PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x27FE JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x318D DUP2 PUSH2 0x29D1 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x31A1 DUP2 DUP6 PUSH2 0x272A JUMP JUMPDEST SWAP1 POP PUSH2 0x14A3 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x2710 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x3154 DUP3 DUP6 PUSH2 0x2588 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x31CC DUP3 DUP8 PUSH2 0x2588 JUMP JUMPDEST PUSH2 0x31D9 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x2710 JUMP JUMPDEST PUSH2 0x31E6 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x2707 JUMP JUMPDEST PUSH2 0x14A3 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x30DF JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x3201 DUP3 DUP9 PUSH2 0x2588 JUMP JUMPDEST PUSH2 0x320E PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x2710 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x3220 DUP2 DUP7 PUSH2 0x272A JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x3234 DUP2 DUP6 PUSH2 0x272A JUMP JUMPDEST SWAP1 POP PUSH2 0x3243 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x2710 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x325B DUP3 DUP9 PUSH2 0x2588 JUMP JUMPDEST PUSH2 0x3268 PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x2710 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x327A DUP2 DUP7 PUSH2 0x2762 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x3234 DUP2 DUP6 PUSH2 0x2762 JUMP JUMPDEST PUSH1 0x80 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x329F DUP2 DUP8 PUSH2 0x2591 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x32B3 DUP2 DUP7 PUSH2 0x26B9 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x32C7 DUP2 DUP6 PUSH2 0x2658 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x3243 DUP2 DUP5 PUSH2 0x25EA JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x178B DUP3 DUP5 PUSH2 0x2710 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x32F7 DUP3 DUP8 PUSH2 0x2710 JUMP JUMPDEST PUSH2 0x3304 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x2710 JUMP JUMPDEST PUSH2 0x3311 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x2710 JUMP JUMPDEST PUSH2 0x14A3 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x2588 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x332C DUP3 DUP7 PUSH2 0x2710 JUMP JUMPDEST PUSH2 0x3339 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x2710 JUMP JUMPDEST PUSH2 0x22AA PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x2707 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x3354 DUP3 DUP8 PUSH2 0x2710 JUMP JUMPDEST PUSH2 0x3361 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x30D6 JUMP JUMPDEST PUSH2 0x336E PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x2710 JUMP JUMPDEST PUSH2 0x14A3 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x2710 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x178B DUP3 DUP5 PUSH2 0x27EC JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x178B DUP3 DUP5 PUSH2 0x27F5 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1B44 DUP2 DUP5 PUSH2 0x272A JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x178B DUP2 PUSH2 0x2807 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x178B DUP2 PUSH2 0x2866 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x178B DUP2 PUSH2 0x28D2 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x178B DUP2 PUSH2 0x295D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x178B DUP2 PUSH2 0x2A0A JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x178B DUP2 PUSH2 0x2A55 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x178B DUP2 PUSH2 0x2AA4 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x178B DUP2 PUSH2 0x2B29 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x178B DUP2 PUSH2 0x2B9B JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x178B DUP2 PUSH2 0x2BE5 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x178B DUP2 PUSH2 0x2CC6 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x178B DUP2 PUSH2 0x2D32 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x178B DUP2 PUSH2 0x2D83 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x178B DUP2 PUSH2 0x2DEF JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x178B DUP2 PUSH2 0x2E3D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x178B DUP2 PUSH2 0x2E9C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x178B DUP2 PUSH2 0x2EED JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x178B DUP2 PUSH2 0x2F72 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x178B DUP2 PUSH2 0x2FCA JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x178B DUP2 PUSH2 0x3016 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x178B DUP2 PUSH2 0x3047 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x178B DUP3 DUP5 PUSH2 0x309F JUMP JUMPDEST PUSH2 0x120 DUP2 ADD PUSH2 0x3515 DUP3 DUP13 PUSH2 0x2710 JUMP JUMPDEST PUSH2 0x3522 PUSH1 0x20 DUP4 ADD DUP12 PUSH2 0x2579 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x3534 DUP2 DUP11 PUSH2 0x2591 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x3548 DUP2 DUP10 PUSH2 0x26B9 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x355C DUP2 DUP9 PUSH2 0x2658 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0xA0 DUP4 ADD MSTORE PUSH2 0x3570 DUP2 DUP8 PUSH2 0x25EA JUMP JUMPDEST SWAP1 POP PUSH2 0x357F PUSH1 0xC0 DUP4 ADD DUP7 PUSH2 0x2710 JUMP JUMPDEST PUSH2 0x358C PUSH1 0xE0 DUP4 ADD DUP6 PUSH2 0x2710 JUMP JUMPDEST DUP2 DUP2 SUB PUSH2 0x100 DUP4 ADD MSTORE PUSH2 0x359F DUP2 DUP5 PUSH2 0x272A JUMP JUMPDEST SWAP12 SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x120 DUP2 ADD PUSH2 0x35BD DUP3 DUP13 PUSH2 0x2710 JUMP JUMPDEST PUSH2 0x35CA PUSH1 0x20 DUP4 ADD DUP12 PUSH2 0x2588 JUMP JUMPDEST PUSH2 0x35D7 PUSH1 0x40 DUP4 ADD DUP11 PUSH2 0x2710 JUMP JUMPDEST PUSH2 0x35E4 PUSH1 0x60 DUP4 ADD DUP10 PUSH2 0x2710 JUMP JUMPDEST PUSH2 0x35F1 PUSH1 0x80 DUP4 ADD DUP9 PUSH2 0x2710 JUMP JUMPDEST PUSH2 0x35FE PUSH1 0xA0 DUP4 ADD DUP8 PUSH2 0x2710 JUMP JUMPDEST PUSH2 0x360B PUSH1 0xC0 DUP4 ADD DUP7 PUSH2 0x2710 JUMP JUMPDEST PUSH2 0x3618 PUSH1 0xE0 DUP4 ADD DUP6 PUSH2 0x2707 JUMP JUMPDEST PUSH2 0x3626 PUSH2 0x100 DUP4 ADD DUP5 PUSH2 0x2707 JUMP JUMPDEST SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x3154 DUP3 DUP6 PUSH2 0x2710 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x3661 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x3680 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x36A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 PUSH1 0x1F SWAP2 SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x178B DUP3 PUSH2 0x36EB JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST DUP1 PUSH2 0xAB8 DUP2 PUSH2 0x377E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x178B DUP3 JUMPDEST PUSH1 0x0 PUSH2 0x178B DUP3 PUSH2 0x36D1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x178B DUP3 PUSH2 0x36E1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x178B DUP3 PUSH2 0x535 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x178B DUP3 PUSH2 0x36FD JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3763 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x374B JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x106F JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 JUMP JUMPDEST PUSH1 0x8 DUP2 LT PUSH2 0x1FFE JUMPI INVALID JUMPDEST PUSH2 0x3791 DUP2 PUSH2 0x36D1 JUMP JUMPDEST DUP2 EQ PUSH2 0x1FFE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3791 DUP2 PUSH2 0x36DC JUMP JUMPDEST PUSH2 0x3791 DUP2 PUSH2 0x535 JUMP JUMPDEST PUSH2 0x3791 DUP2 PUSH2 0x36F7 JUMP JUMPDEST PUSH2 0x3791 DUP2 PUSH2 0x36FD JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 PC 0xD5 PUSH8 0x9A9FB229541A103F AND PUSH7 0xE704E0B7878D97 PUSH22 0xA881E8BA6D89F8A606C4E06C6578706572696D656E74 PUSH2 0x6CF5 PUSH5 0x736F6C6343 STOP SDIV GT STOP BLOCKHASH ","sourceMap":"59:14005:24:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3627:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3627:43:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;1022:68;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1022:68:24;;;:::i;:::-;;;;;;;;130:55;;8:9:-1;5:2;;;30:1;27;20:12;5:2;130:55:24;;;:::i;:::-;;;;;;;;1302:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1302:25:24;;;:::i;:::-;;;;;;;;10995:122;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;10995:122:24;;;;;;;;:::i;:::-;;3731:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3731:50:24;;;;;;;;:::i;3851:122::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3851:122:24;;;:::i;13257:333::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;13257:333:24;;;;;;;;:::i;324:71::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;324:71:24;;;:::i;9518:284::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;9518:284:24;;;;;;;;:::i;:::-;;;;;;;;;;;878:63;;8:9:-1;5:2;;;30:1;27;20:12;5:2;878:63:24;;;:::i;9964:1025::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;9964:1025:24;;;;;;;;:::i;:::-;;;;;;;;8776:736;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;8776:736:24;;;;;;;;:::i;1387:23::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1387:23:24;;;:::i;:::-;;;;;;;;11123:618;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;11123:618:24;;;;;;;;:::i;12752:166::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12752:166:24;;;:::i;700:74::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;700:74:24;;;:::i;12924:327::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;12924:327:24;;;;;;;;:::i;512:77::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;512:77:24;;;:::i;12573:173::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12573:173:24;;;:::i;1201:33::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1201:33:24;;;:::i;1463:25::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1463:25:24;;;:::i;5112:2134::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5112:2134:24;;;;;;;;:::i;7252:568::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;7252:568:24;;;;;;;;:::i;4060:94::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4060:94:24;;;:::i;9808:150::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;9808:150:24;;;;;;;;:::i;:::-;;;;;;;;8205:565;;;;;;;;;:::i;3627:43::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3627:43:24;;;;;;;;;;;;;;;;;;;;;;:::o;1022:68::-;1082:5;1022:68;;:::o;130:55::-;;;;;;;;;;;;;;-1:-1:-1;;;130:55:24;;;;:::o;1302:25::-;;;-1:-1:-1;;;;;1302:25:24;;:::o;10995:122::-;11068:42;11078:10;11090;11102:7;11068:9;:42::i;:::-;10995:122;;:::o;3731:50::-;;;;;;;;;;;;;:::o;3851:122::-;3893:80;;;;;;;;;;;;;;3851:122;:::o;13257:333::-;13373:8;;-1:-1:-1;;;;;13373:8:24;13359:10;:22;13351:111;;;;-1:-1:-1;;;13351:111:24;;;;;;;;;;;;;;;;;13472:8;;;13550:27;;-1:-1:-1;;;;;13472:8:24;;;;:27;;:8;;;13550:27;;13561:15;;13550:27;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;13550:27:24;;;13579:3;13472:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13472:111:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13472:111:24;;;;;;39:16:-1;36:1;17:17;2:54;101:4;13472:111:24;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13472:111:24;;;;;;;;;;13257:333;;:::o;324:71::-;383:9;324:71;:::o;9518:284::-;9576:24;9602:20;9624:26;9652:24;9688:18;9709:9;:21;9719:10;9709:21;;;;;;;;;;;9688:42;;9748:1;:9;;9759:1;:8;;9769:1;:12;;9783:1;:11;;9740:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9740:55:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9740:55:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9740:55:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9518:284;;;;;:::o;878:63::-;937:1;878:63;:::o;9964:1025::-;10017:13;10067:10;10050:13;;:27;;:45;;;;;10094:1;10081:10;:14;10050:45;10042:99;;;;-1:-1:-1;;;10042:99:24;;;;;;;;;10151:25;10179:21;;;:9;:21;;;;;10214:17;;;;;;10210:773;;;10254:22;10247:29;;;;;10210:773;10313:8;:19;;;10297:12;:35;10293:690;;10355:21;10348:28;;;;;10293:690;10413:8;:17;;;10397:12;:33;10393:590;;10453:20;10446:27;;;;;10393:590;10515:8;:21;;;10494:8;:17;;;:42;;:79;;;;10560:13;:11;:13::i;:::-;10540:8;:17;;;:33;10494:79;10490:493;;;10596:22;10589:29;;;;;10490:493;10639:12;;;;10635:348;;10679:23;10672:30;;;;;10635:348;10723:17;;;;;;;;;10719:264;;;10763:22;10756:29;;;;;10719:264;10832:12;;;;10846:8;;:23;;;-1:-1:-1;;;10846:23:24;;;;10825:45;;10832:12;-1:-1:-1;;;;;10846:8:24;;:21;;:23;;;;;;;;;;;;;;:8;:23;;;5:2:-1;;;;30:1;27;20:12;5:2;10846:23:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10846:23:24;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;10846:23:24;;;;;;;;;10825:6;:45::i;:::-;10806:15;:64;10802:181;;10893:21;10886:28;;;;;10802:181;10952:20;10945:27;;;9964:1025;;;;:::o;8776:736::-;8826:19;8848:17;8854:10;8848:5;:17::i;:::-;8826:39;-1:-1:-1;8892:22:24;8883:5;:31;;;;;;;;;;8875:98;;;;-1:-1:-1;;;8875:98:24;;;;;;;;;8984:25;9012:21;;;:9;:21;;;;;9065:8;;-1:-1:-1;;;;;9065:8:24;9051:10;:22;;:110;;;9142:19;:17;:19::i;:::-;9077:4;;;9096:17;;;;-1:-1:-1;;;;;9077:4:24;;;;:18;;9096:17;;;;9115:23;;9122:12;;9115:6;:23::i;:::-;9077:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9077:62:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9077:62:24;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;9077:62:24;;;;;;;;;-1:-1:-1;;;;;9077:84:24;;9051:110;9043:170;;;;-1:-1:-1;;;9043:170:24;;;;;;;;;9224:17;;;:24;;-1:-1:-1;;9224:24:24;9244:4;9224:24;;;:17;9258:204;9279:16;;;:23;9275:27;;9258:204;;;9323:8;;9350:16;;;:19;;-1:-1:-1;;;;;9323:8:24;;;;:26;;9350:16;9367:1;;9350:19;;;;;;;;;;;;;;;;9371:15;;;:18;;-1:-1:-1;;;;;9350:19:24;;;;9387:1;;9371:18;;;;;;;;;;;;;;9391:8;:19;;9411:1;9391:22;;;;;;;;;;;;;;;9415:8;:18;;9434:1;9415:21;;;;;;;;;;;;;;;9438:8;:12;;;9323:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9323:128:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;9304:3:24;;;;;-1:-1:-1;9258:204:24;;-1:-1:-1;9258:204:24;;;9477:28;9494:10;9477:28;;;;;;;;;;;;;;;8776:736;;;:::o;1387:23::-;;;-1:-1:-1;;;;;1387:23:24;;:::o;11123:618::-;11225:23;3893:80;;;;;;;;;;;;;;;;11305:4;;;;;;;;;-1:-1:-1;;;11305:4:24;;;;;;;;11289:22;11313:12;:10;:12::i;:::-;11335:4;11261:80;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;11261:80:24;;;11251:91;;;;;;11225:117;;11352:18;4102:52;;;;;;;;;;;;;;;11383:48;;11411:10;;11423:7;;11383:48;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;11383:48:24;;;11373:59;;;;;;11352:80;;11442:14;11498:15;11515:10;11469:57;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;11469:57:24;;;11459:68;;;;;;11442:85;;11537:17;11557:26;11567:6;11575:1;11578;11581;11557:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;11557:26:24;;-1:-1:-1;;11557:26:24;;;-1:-1:-1;;;;;;;11601:23:24;;11593:83;;;;-1:-1:-1;;;11593:83:24;;;;;;;;;11693:41;11703:9;11714:10;11726:7;11693:9;:41::i;:::-;11686:48;;;;11123:618;;;;;:::o;12752:166::-;12813:8;;-1:-1:-1;;;;;12813:8:24;12799:10;:22;12791:89;;;;-1:-1:-1;;;12791:89:24;;;;;;;;;12890:8;:21;;-1:-1:-1;;;;;;12890:21:24;;;12752:166::o;700:74::-;769:2;700:74;:::o;12924:327::-;13038:8;;-1:-1:-1;;;;;13038:8:24;13024:10;:22;13016:109;;;;-1:-1:-1;;;13016:109:24;;;;;;;;;13135:8;;;13211:27;;-1:-1:-1;;;;;13135:8:24;;;;:25;;:8;;;13211:27;;13222:15;;13211:27;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;13211:27:24;;;13240:3;13135:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13135:109:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13135:109:24;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;13135:109:24;;;;;;;;512:77;577:9;512:77;:::o;12573:173::-;12637:8;;-1:-1:-1;;;;;12637:8:24;12623:10;:22;12615:92;;;;-1:-1:-1;;;12615:92:24;;;;;;;;;12717:8;;;:22;;;-1:-1:-1;;;12717:22:24;;;;-1:-1:-1;;;;;12717:8:24;;;;:20;;:22;;;;;;;;;;:8;;:22;;;5:2:-1;;;;30:1;27;20:12;5:2;12717:22:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12717:22:24;;;;12573:173::o;1201:33::-;;;-1:-1:-1;;;;;1201:33:24;;:::o;1463:25::-;;;;:::o;5112:2134::-;5274:4;5356:19;:17;:19::i;:::-;5298:4;;;-1:-1:-1;;;;;5298:4:24;;:18;;5317:10;;5329:23;;5336:12;;5329:6;:23::i;:::-;5298:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5298:55:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5298:55:24;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;5298:55:24;;;;;;;;;-1:-1:-1;;;;;5298:77:24;;5290:153;;;;-1:-1:-1;;;5290:153:24;;;;;;;;;5479:6;:13;5461:7;:14;:31;:70;;;;;5514:10;:17;5496:7;:14;:35;5461:70;:108;;;;;5553:9;:16;5535:7;:14;:34;5461:108;5453:189;;;;-1:-1:-1;;;5453:189:24;;;;;;;;;5660:14;;5652:76;;;;-1:-1:-1;;;5652:76:24;;;;;;;;;5764:23;:21;:23::i;:::-;5746:7;:14;:41;;5738:94;;;;-1:-1:-1;;;5738:94:24;;;;;;;;;5885:10;5843:21;5867:29;;;:17;:29;;;;;;5910:21;;5906:450;;5945:42;5990:23;5996:16;5990:5;:23::i;:::-;5945:68;-1:-1:-1;6065:20:24;6033:28;:52;;;;;;;;;;6025:153;;;;-1:-1:-1;;;6025:153:24;;;;;;;;;6230:21;6198:28;:53;;;;;;;;;;6190:155;;;;-1:-1:-1;;;6190:155:24;;;;;;;;;5906:450;;6366:15;6384:35;6391:12;6405:13;:11;:13::i;6384:35::-;6366:53;;6429:13;6445:34;6452:10;6464:14;:12;:14::i;6445:34::-;6490:13;:15;;;;;;6429:50;-1:-1:-1;6515:27:24;;:::i;:::-;6545:413;;;;;;;;6572:13;;6545:413;;;;6609:10;-1:-1:-1;;;;;6545:413:24;;;;;6638:1;6545:413;;;;6662:7;6545:413;;;;6691:6;6545:413;;;;6723:10;6545:413;;;;6758:9;6545:413;;;;6793:10;6545:413;;;;6827:8;6545:413;;;;6859:1;6545:413;;;;6888:1;6545:413;;;;6913:5;6545:413;;;;;;6942:5;6545:413;;;;;6515:443;;6997:11;6969:9;:25;6979:11;:14;;;6969:25;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6969:39:24;;;;;-1:-1:-1;;;;;6969:39:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;6969:39:24;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;6969:39:24;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;6969:39:24;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7060:11;:14;;;7018:17;:39;7036:11;:20;;;-1:-1:-1;;;;;7018:39:24;-1:-1:-1;;;;;7018:39:24;;;;;;;;;;;;:56;;;;7090:118;7106:11;:14;;;7122:10;7134:7;7143:6;7151:10;7163:9;7174:10;7186:8;7196:11;7090:118;;;;;;;;;;;;;;;;;;;;;;;7225:14;;-1:-1:-1;;;;5112:2134:24;;;;;;;;:::o;7252:568::-;7330:23;7309:17;7315:10;7309:5;:17::i;:::-;:44;;;;;;;;;7301:125;;;;-1:-1:-1;;;7301:125:24;;;;;;;;;7436:25;7464:21;;;:9;:21;;;;;;;;7530:8;;:16;;-1:-1:-1;;;7530:16:24;;;;7464:21;;7436:25;7506:41;;7513:15;;-1:-1:-1;;;;;7530:8:24;;;;:14;;:16;;;;;;;;;;:8;:16;;;5:2:-1;;;;30:1;27;20:12;7506:41:24;7495:52;-1:-1:-1;7562:6:24;7557:183;7578:16;;;:23;7574:27;;7557:183;;;7622:107;7637:8;:16;;7654:1;7637:19;;;;;;;;;;;;;;;;;;7658:15;;;:18;;-1:-1:-1;;;;;7637:19:24;;;;7674:1;;7658:18;;;;;;;;;;;;;;7678:8;:19;;7698:1;7678:22;;;;;;;;;;;;;;;;;;7622:107;;;;;;;-1:-1:-1;;7622:107:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7678:22;7622:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7702:8;:18;;7721:1;7702:21;;;;;;;;;;;;;;;;;;7622:107;;;;;;;-1:-1:-1;;7622:107:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7702:21;7622:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7725:3;7622:14;:107::i;:::-;7603:3;;7557:183;;;-1:-1:-1;7749:12:24;;;:18;;;7782:31;;;;;;7797:10;;7764:3;;7782:31;;4060:94;4102:52;;;;;;9808:150;9881:14;;:::i;:::-;-1:-1:-1;9914:21:24;;;;:9;:21;;;;;;;;-1:-1:-1;;;;;9914:37:24;;;;:30;;:37;;;;;;9907:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9907:44:24;;;;;;;;9808:150;;;;;:::o;8205:565::-;8293:20;8272:17;8278:10;8272:5;:17::i;:::-;:41;;;;;;;;;8264:123;;;;-1:-1:-1;;;8264:123:24;;;;;;;;;8397:25;8425:21;;;:9;:21;;;;;8456:17;;;:24;;-1:-1:-1;;8456:24:24;;;;;8425:21;8490:231;8511:16;;;:23;8507:27;;8490:231;;;8555:8;;8589:15;;;:18;;-1:-1:-1;;;;;8555:8:24;;;;:27;;8589:15;8605:1;;8589:18;;;;;;;;;;;;;;8609:8;:16;;8626:1;8609:19;;;;;;;;;;;;;;;;;;8630:15;;;:18;;-1:-1:-1;;;;;8609:19:24;;;;8646:1;;8630:18;;;;;;;;;;;;;;8650:8;:19;;8670:1;8650:22;;;;;;;;;;;;;;;8674:8;:18;;8693:1;8674:21;;;;;;;;;;;;;;;8697:8;:12;;;8555:155;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8555:155:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8555:155:24;;;;;;;39:16:-1;36:1;17:17;2:54;101:4;8555:155:24;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;8555:155:24;;;;;;;;;-1:-1:-1;8536:3:24;;8490:231;;;;8735:28;8752:10;8735:28;;;;;;;;;;;;;;;8205:565;;:::o;11747:820::-;11860:20;11839:17;11845:10;11839:5;:17::i;:::-;:41;;;;;;;;;11831:96;;;;-1:-1:-1;;;11831:96:24;;;;;;;;;11937:25;11965:21;;;:9;:21;;;;;;;;-1:-1:-1;;;;;12022:24:24;;;;:17;;;:24;;;;;;12064:16;;;;:25;12056:83;;;;-1:-1:-1;;;12056:83:24;;;;;;;;;12164:4;;12190:19;;;;12164:46;;-1:-1:-1;;;12164:46:24;;12149:12;;-1:-1:-1;;;;;12164:4:24;;:18;;:46;;12183:5;;12164:46;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12164:46:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12164:46:24;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;12164:46:24;;;;;;;;;12149:61;;12225:7;12221:181;;;12268:32;12275:8;:17;;;12294:5;-1:-1:-1;;;;;12268:32:24;:6;:32::i;:::-;12248:17;;;:52;12221:181;;;12355:36;12362:8;:21;;;12385:5;-1:-1:-1;;;;;12355:36:24;:6;:36::i;:::-;12331:21;;;:60;12221:181;12412:23;;12431:4;-1:-1:-1;;12412:23:24;;;;-1:-1:-1;;12445:25:24;12412:23;12445:25;;;;;-1:-1:-1;;12480:21:24;;-1:-1:-1;;;;;12480:21:24;;;;;;12517:43;;;;;;12526:5;;12533:10;;12445:25;;12480:21;;12517:43;;;;;;;;;;11747:820;;;;;;:::o;13596:162::-;13657:4;13682:5;;;13705:6;;;;13697:36;;;;-1:-1:-1;;;13697:36:24;;;;;;;;;13750:1;13596:162;-1:-1:-1;;;13596:162:24:o;13764:146::-;13825:4;13854:1;13849;:6;;13841:40;;;;-1:-1:-1;;;13841:40:24;;;;;;;;;-1:-1:-1;13898:5:24;;;13764:146::o;13916:::-;14021:9;13916:146;:::o;7826:373::-;7960:8;;7998:47;;-1:-1:-1;;;;;7960:8:24;;;;:27;;7998:47;;8009:6;;8017:5;;8024:9;;8035:4;;8041:3;;7998:47;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;7998:47:24;;;7988:58;;;;;;7960:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7960:87:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7960:87:24;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;7960:87:24;;;;;;;;;7959:88;7951:169;;;;-1:-1:-1;;;7951:169:24;;;;;;;;;8130:8;;:62;;-1:-1:-1;;;8130:62:24;;-1:-1:-1;;;;;8130:8:24;;;;:25;;:62;;8156:6;;8164:5;;8171:9;;8182:4;;8188:3;;8130:62;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8130:62:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8130:62:24;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;8130:62:24;;;;;;;;;;7826:373;;;;;:::o;59:14005::-;;;;;;;;;;;;;;;-1:-1:-1;;;;;59:14005:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;59:14005:24;-1:-1:-1;;;;;59:14005:24;;;;;;;;;;;-1:-1:-1;59:14005:24;;;;;;;-1:-1:-1;59:14005:24;;;-1:-1:-1;59:14005:24;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;59:14005:24;;;-1:-1:-1;59:14005:24;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;59:14005:24;;;-1:-1:-1;59:14005:24;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;59:14005:24;;;-1:-1:-1;59:14005:24;:::i;:::-;;;;;;;;;-1:-1:-1;59:14005:24;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;;59:14005:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;160:707;;277:3;270:4;262:6;258:17;254:27;244:2;;295:1;292;285:12;244:2;332:6;319:20;354:80;369:64;426:6;369:64;;;354:80;;;345:89;;451:5;476:6;469:5;462:21;506:4;498:6;494:17;484:27;;528:4;523:3;519:14;512:21;;581:6;628:3;620:4;612:6;608:17;603:3;599:27;596:36;593:2;;;645:1;642;635:12;593:2;670:1;655:206;680:6;677:1;674:13;655:206;;;738:3;760:37;793:3;781:10;760:37;;;748:50;;-1:-1;821:4;812:14;;;;840;;;;;702:1;695:9;655:206;;;659:14;237:630;;;;;;;;891:693;;1013:3;1006:4;998:6;994:17;990:27;980:2;;1031:1;1028;1021:12;980:2;1068:6;1055:20;1090:85;1105:69;1167:6;1105:69;;1090:85;1203:21;;;1247:4;1235:17;;;;1081:94;;-1:-1;1260:14;;1235:17;1355:1;1340:238;1365:6;1362:1;1359:13;1340:238;;;1448:3;1435:17;1427:6;1423:30;1472:42;1510:3;1498:10;1472:42;;;1460:55;;-1:-1;1538:4;1529:14;;;;1557;;;;;1387:1;1380:9;1340:238;;1609:696;;1732:3;1725:4;1717:6;1713:17;1709:27;1699:2;;1750:1;1747;1740:12;1699:2;1787:6;1774:20;1809:86;1824:70;1887:6;1824:70;;1809:86;1923:21;;;1967:4;1955:17;;;;1800:95;;-1:-1;1980:14;;1955:17;2075:1;2060:239;2085:6;2082:1;2079:13;2060:239;;;2168:3;2155:17;2147:6;2143:30;2192:43;2231:3;2219:10;2192:43;;;2180:56;;-1:-1;2259:4;2250:14;;;;2278;;;;;2107:1;2100:9;2060:239;;2331:707;;2448:3;2441:4;2433:6;2429:17;2425:27;2415:2;;2466:1;2463;2456:12;2415:2;2503:6;2490:20;2525:80;2540:64;2597:6;2540:64;;2525:80;2516:89;;2622:5;2647:6;2640:5;2633:21;2677:4;2669:6;2665:17;2655:27;;2699:4;2694:3;2690:14;2683:21;;2752:6;2799:3;2791:4;2783:6;2779:17;2774:3;2770:27;2767:36;2764:2;;;2816:1;2813;2806:12;2764:2;2841:1;2826:206;2851:6;2848:1;2845:13;2826:206;;;2909:3;2931:37;2964:3;2952:10;2931:37;;;2919:50;;-1:-1;2992:4;2983:14;;;;3011;;;;;2873:1;2866:9;2826:206;;3046:124;3110:20;;3135:30;3110:20;3135:30;;3177:128;3252:13;;3270:30;3252:13;3270:30;;3312:130;3379:20;;3404:33;3379:20;3404:33;;3449:134;3527:13;;3545:33;3527:13;3545:33;;3591:432;;3688:3;3681:4;3673:6;3669:17;3665:27;3655:2;;3706:1;3703;3696:12;3655:2;3743:6;3730:20;3765:60;3780:44;3817:6;3780:44;;3765:60;3756:69;;3845:6;3838:5;3831:21;3881:4;3873:6;3869:17;3914:4;3907:5;3903:16;3949:3;3940:6;3935:3;3931:16;3928:25;3925:2;;;3966:1;3963;3956:12;3925:2;3976:41;4010:6;4005:3;4000;3976:41;;;3648:375;;;;;;;;4032:442;;4144:3;4137:4;4129:6;4125:17;4121:27;4111:2;;4162:1;4159;4152:12;4111:2;4192:6;4186:13;4214:64;4229:48;4270:6;4229:48;;4214:64;4205:73;;4298:6;4291:5;4284:21;4334:4;4326:6;4322:17;4367:4;4360:5;4356:16;4402:3;4393:6;4388:3;4384:16;4381:25;4378:2;;;4419:1;4416;4409:12;4378:2;4429:39;4461:6;4456:3;4451;4429:39;;5654:126;5719:20;;5744:31;5719:20;5744:31;;5787:132;5864:13;;5882:32;5864:13;5882:32;;5926:241;;6030:2;6018:9;6009:7;6005:23;6001:32;5998:2;;;6046:1;6043;6036:12;5998:2;6081:1;6098:53;6143:7;6123:9;6098:53;;;6088:63;5992:175;-1:-1;;;;5992:175;6174:366;;;6295:2;6283:9;6274:7;6270:23;6266:32;6263:2;;;6311:1;6308;6301:12;6263:2;6346:1;6363:53;6408:7;6388:9;6363:53;;;6353:63;;6325:97;6453:2;6471:53;6516:7;6507:6;6496:9;6492:22;6471:53;;;6461:63;;6432:98;6257:283;;;;;;6547:1415;;;;;;6840:3;6828:9;6819:7;6815:23;6811:33;6808:2;;;6857:1;6854;6847:12;6808:2;6892:31;;6943:18;6932:30;;6929:2;;;6975:1;6972;6965:12;6929:2;6995:78;7065:7;7056:6;7045:9;7041:22;6995:78;;;6985:88;;6871:208;7138:2;7127:9;7123:18;7110:32;7162:18;7154:6;7151:30;7148:2;;;7194:1;7191;7184:12;7148:2;7214:78;7284:7;7275:6;7264:9;7260:22;7214:78;;;7204:88;;7089:209;7357:2;7346:9;7342:18;7329:32;7381:18;7373:6;7370:30;7367:2;;;7413:1;7410;7403:12;7367:2;7433:84;7509:7;7500:6;7489:9;7485:22;7433:84;;;7423:94;;7308:215;7582:2;7571:9;7567:18;7554:32;7606:18;7598:6;7595:30;7592:2;;;7638:1;7635;7628:12;7592:2;7658:83;7733:7;7724:6;7713:9;7709:22;7658:83;;;7648:93;;7533:214;7806:3;7795:9;7791:19;7778:33;7831:18;7823:6;7820:30;7817:2;;;7863:1;7860;7853:12;7817:2;7883:63;7938:7;7929:6;7918:9;7914:22;7883:63;;;7873:73;;7757:195;6802:1160;;;;;;;;;7969:257;;8081:2;8069:9;8060:7;8056:23;8052:32;8049:2;;;8097:1;8094;8087:12;8049:2;8132:1;8149:61;8202:7;8182:9;8149:61;;8233:263;;8348:2;8336:9;8327:7;8323:23;8319:32;8316:2;;;8364:1;8361;8354:12;8316:2;8399:1;8416:64;8472:7;8452:9;8416:64;;8503:360;;8627:2;8615:9;8606:7;8602:23;8598:32;8595:2;;;8643:1;8640;8633:12;8595:2;8678:24;;8722:18;8711:30;;8708:2;;;8754:1;8751;8744:12;8708:2;8774:73;8839:7;8830:6;8819:9;8815:22;8774:73;;8870:241;;8974:2;8962:9;8953:7;8949:23;8945:32;8942:2;;;8990:1;8987;8980:12;8942:2;9025:1;9042:53;9087:7;9067:9;9042:53;;9388:366;;;9509:2;9497:9;9488:7;9484:23;9480:32;9477:2;;;9525:1;9522;9515:12;9477:2;9560:1;9577:53;9622:7;9602:9;9577:53;;;9567:63;;9539:97;9667:2;9685:53;9730:7;9721:6;9710:9;9706:22;9685:53;;9761:360;;;9879:2;9867:9;9858:7;9854:23;9850:32;9847:2;;;9895:1;9892;9885:12;9847:2;9930:1;9947:53;9992:7;9972:9;9947:53;;;9937:63;;9909:97;10037:2;10055:50;10097:7;10088:6;10077:9;10073:22;10055:50;;10128:733;;;;;;10295:3;10283:9;10274:7;10270:23;10266:33;10263:2;;;10312:1;10309;10302:12;10263:2;10347:1;10364:53;10409:7;10389:9;10364:53;;;10354:63;;10326:97;10454:2;10472:50;10514:7;10505:6;10494:9;10490:22;10472:50;;;10462:60;;10433:95;10559:2;10577:51;10620:7;10611:6;10600:9;10596:22;10577:51;;;10567:61;;10538:96;10665:2;10683:53;10728:7;10719:6;10708:9;10704:22;10683:53;;;10673:63;;10644:98;10773:3;10792:53;10837:7;10828:6;10817:9;10813:22;10792:53;;10868:261;;10982:2;10970:9;10961:7;10957:23;10953:32;10950:2;;;10998:1;10995;10988:12;10950:2;11033:1;11050:63;11105:7;11085:9;11050:63;;11137:173;;11224:46;11266:3;11258:6;11224:46;;;-1:-1;;11299:4;11290:14;;11217:93;11319:177;;11430:60;11486:3;11478:6;11430:60;;11695:173;;11782:46;11824:3;11816:6;11782:46;;11876:142;11967:45;12006:5;11967:45;;;11962:3;11955:58;11949:69;;;12025:103;12098:24;12116:5;12098:24;;12286:690;;12431:54;12479:5;12431:54;;;12498:86;12577:6;12572:3;12498:86;;;12491:93;;12605:56;12655:5;12605:56;;;12681:7;12709:1;12694:260;12719:6;12716:1;12713:13;12694:260;;;12786:6;12780:13;12807:63;12866:3;12851:13;12807:63;;;12800:70;;12887:60;12940:6;12887:60;;;12877:70;-1:-1;;12741:1;12734:9;12694:260;;;-1:-1;12967:3;;12410:566;-1:-1;;;;;12410:566;13011:888;;13166:59;13219:5;13166:59;;;13238:91;13322:6;13317:3;13238:91;;;13231:98;;13352:3;13394:4;13386:6;13382:17;13377:3;13373:27;13421:61;13476:5;13421:61;;;13502:7;13530:1;13515:345;13540:6;13537:1;13534:13;13515:345;;;13602:9;13596:4;13592:20;13587:3;13580:33;13647:6;13641:13;13669:74;13738:4;13723:13;13669:74;;;13661:82;;13760:65;13818:6;13760:65;;;13848:4;13839:14;;;;;13750:75;-1:-1;;13562:1;13555:9;13515:345;;;-1:-1;13873:4;;13145:754;-1:-1;;;;;;;13145:754;13936:896;;14093:60;14147:5;14093:60;;;14166:92;14251:6;14246:3;14166:92;;;14159:99;;14281:3;14323:4;14315:6;14311:17;14306:3;14302:27;14350:62;14406:5;14350:62;;;14432:7;14460:1;14445:348;14470:6;14467:1;14464:13;14445:348;;;14532:9;14526:4;14522:20;14517:3;14510:33;14577:6;14571:13;14599:76;14670:4;14655:13;14599:76;;;14591:84;;14692:66;14751:6;14692:66;;;14781:4;14772:14;;;;;14682:76;-1:-1;;14492:1;14485:9;14445:348;;14871:690;;15016:54;15064:5;15016:54;;;15083:86;15162:6;15157:3;15083:86;;;15076:93;;15190:56;15240:5;15190:56;;;15266:7;15294:1;15279:260;15304:6;15301:1;15298:13;15279:260;;;15371:6;15365:13;15392:63;15451:3;15436:13;15392:63;;;15385:70;;15472:60;15525:6;15472:60;;;15462:70;-1:-1;;15326:1;15319:9;15279:260;;15569:94;15636:21;15651:5;15636:21;;15781:113;15864:24;15882:5;15864:24;;15901:152;16002:45;16022:24;16040:5;16022:24;;;16002:45;;16060:343;;16170:38;16202:5;16170:38;;;16220:70;16283:6;16278:3;16220:70;;;16213:77;;16295:52;16340:6;16335:3;16328:4;16321:5;16317:16;16295:52;;;16368:29;16390:6;16368:29;;;16359:39;;;;16150:253;-1:-1;;;16150:253;16755:818;;16872:5;16866:12;16906:1;16895:9;16891:17;16919:1;16914:247;;;;17172:1;17167:400;;;;16884:683;;16914:247;16992:4;16988:1;16977:9;16973:17;16969:28;17011:70;17074:6;17069:3;17011:70;;;-1:-1;;17100:25;;17088:38;;17004:77;-1:-1;;17149:4;17140:14;;;-1:-1;16914:247;;17167:400;17236:1;17225:9;17221:17;17252:70;17315:6;17310:3;17252:70;;;17245:77;;17344:37;17375:5;17344:37;;;17397:1;17405:130;17419:6;17416:1;17413:13;17405:130;;;17478:14;;17465:11;;;17458:35;17525:1;17512:15;;;;17441:4;17434:12;17405:130;;;17549:11;;;-1:-1;;;16884:683;;16842:731;;;;;;17581:172;17687:60;17741:5;17687:60;;17947:160;18047:54;18095:5;18047:54;;18114:142;18205:45;18244:5;18205:45;;20146:394;;20306:67;20370:2;20365:3;20306:67;;;20406:34;20386:55;;20475:27;20470:2;20461:12;;20454:49;20531:2;20522:12;;20292:248;-1:-1;;20292:248;20549:442;;20709:67;20773:2;20768:3;20709:67;;;20809:34;20789:55;;20878:34;20873:2;20864:12;;20857:56;-1:-1;;;20942:2;20933:12;;20926:28;20982:2;20973:12;;20695:296;-1:-1;;20695:296;21000:443;;21160:67;21224:2;21219:3;21160:67;;;21260:34;21240:55;;21329:34;21324:2;21315:12;;21308:56;-1:-1;;;21393:2;21384:12;;21377:29;21434:2;21425:12;;21146:297;-1:-1;;21146:297;21452:398;;21630:84;21712:1;21707:3;21630:84;;;-1:-1;;;21727:87;;21842:1;21833:11;;21616:234;-1:-1;;21616:234;21859:450;;22019:67;22083:2;22078:3;22019:67;;;22119:34;22099:55;;22188:34;22183:2;22174:12;;22167:56;-1:-1;;;22252:2;22243:12;;22236:36;22300:2;22291:12;;22005:304;-1:-1;;22005:304;22318:324;;22478:67;22542:2;22537:3;22478:67;;;22578:26;22558:47;;22633:2;22624:12;;22464:178;-1:-1;;22464:178;22651:378;;22811:67;22875:2;22870:3;22811:67;;;22911:34;22891:55;;-1:-1;;;22975:2;22966:12;;22959:33;23020:2;23011:12;;22797:232;-1:-1;;22797:232;23038:382;;23198:67;23262:2;23257:3;23198:67;;;23298:34;23278:55;;-1:-1;;;23362:2;23353:12;;23346:37;23411:2;23402:12;;23184:236;-1:-1;;23184:236;23429:463;;23589:67;23653:2;23648:3;23589:67;;;23689:34;23669:55;;23758:34;23753:2;23744:12;;23737:56;23827:27;23822:2;23813:12;;23806:49;23883:2;23874:12;;23575:317;-1:-1;;23575:317;23901:448;;24061:67;24125:2;24120:3;24061:67;;;24161:34;24141:55;;24230:34;24225:2;24216:12;;24209:56;-1:-1;;;24294:2;24285:12;;24278:34;24340:2;24331:12;;24047:302;-1:-1;;24047:302;24358:377;;24518:67;24582:2;24577:3;24518:67;;;24618:34;24598:55;;-1:-1;;;24682:2;24673:12;;24666:32;24726:2;24717:12;;24504:231;-1:-1;;24504:231;24744:317;;24904:67;24968:2;24963:3;24904:67;;;-1:-1;;;24984:40;;25052:2;25043:12;;24890:171;-1:-1;;24890:171;25070:477;;25248:85;25330:2;25325:3;25248:85;;;25366:34;25346:55;;25435:34;25430:2;25421:12;;25414:56;-1:-1;;;25499:2;25490:12;;25483:27;25538:2;25529:12;;25234:313;-1:-1;;25234:313;25556:412;;25734:85;25816:2;25811:3;25734:85;;;25852:34;25832:55;;-1:-1;;;25916:2;25907:12;;25900:31;25959:2;25950:12;;25720:248;-1:-1;;25720:248;25977:442;;26137:67;26201:2;26196:3;26137:67;;;26237:34;26217:55;;26306:34;26301:2;26292:12;;26285:56;-1:-1;;;26370:2;26361:12;;26354:28;26410:2;26401:12;;26123:296;-1:-1;;26123:296;26428:384;;26588:67;26652:2;26647:3;26588:67;;;26688:34;26668:55;;-1:-1;;;26752:2;26743:12;;26736:39;26803:2;26794:12;;26574:238;-1:-1;;26574:238;26821:442;;26981:67;27045:2;27040:3;26981:67;;;27081:34;27061:55;;27150:34;27145:2;27136:12;;27129:56;-1:-1;;;27214:2;27205:12;;27198:28;27254:2;27245:12;;26967:296;-1:-1;;26967:296;27272:381;;27432:67;27496:2;27491:3;27432:67;;;27532:34;27512:55;;-1:-1;;;27596:2;27587:12;;27580:36;27644:2;27635:12;;27418:235;-1:-1;;27418:235;27662:400;;27822:67;27886:2;27881:3;27822:67;;;27922:34;27902:55;;27991:33;27986:2;27977:12;;27970:55;28053:2;28044:12;;27808:254;-1:-1;;27808:254;28071:384;;28231:67;28295:2;28290:3;28231:67;;;28331:34;28311:55;;-1:-1;;;28395:2;28386:12;;28379:39;28446:2;28437:12;;28217:238;-1:-1;;28217:238;28464:462;;28624:67;28688:2;28683:3;28624:67;;;28724:34;28704:55;;28793:34;28788:2;28779:12;;28772:56;28862:26;28857:2;28848:12;;28841:48;28917:2;28908:12;;28610:316;-1:-1;;28610:316;28935:391;;29095:67;29159:2;29154:3;29095:67;;;29195:34;29175:55;;-1:-1;;;29259:2;29250:12;;29243:46;29317:2;29308:12;;29081:245;-1:-1;;29081:245;29335:379;;29495:67;29559:2;29554:3;29495:67;;;29595:34;29575:55;;-1:-1;;;29659:2;29650:12;;29643:34;29705:2;29696:12;;29481:233;-1:-1;;29481:233;29723:321;;29883:67;29947:2;29942:3;29883:67;;;-1:-1;;;29963:44;;30035:2;30026:12;;29869:175;-1:-1;;29869:175;30053:391;;30213:67;30277:2;30272:3;30213:67;;;30313:34;30293:55;;-1:-1;;;30377:2;30368:12;;30361:46;30435:2;30426:12;;30199:245;-1:-1;;30199:245;30519:626;30734:23;;30664:4;30655:14;;;30763:57;30659:3;30734:23;30763:57;;;30684:142;30902:4;30895:5;30891:16;30885:23;30914:57;30965:4;30960:3;30956:14;30942:12;30914:57;;;30836:141;31051:4;31044:5;31040:16;31034:23;31063:61;31118:4;31113:3;31109:14;31095:12;31063:61;;31382:107;31461:22;31477:5;31461:22;;31496:124;31578:36;31608:5;31578:36;;31627:100;31698:23;31715:5;31698:23;;31734:650;;31989:148;32133:3;31989:148;;;31982:155;;32148:75;32219:3;32210:6;32148:75;;;32245:2;32240:3;32236:12;32229:19;;32259:75;32330:3;32321:6;32259:75;;;-1:-1;32356:2;32347:12;;31970:414;-1:-1;;31970:414;32391:372;;32590:148;32734:3;32590:148;;32770:372;;32969:148;33113:3;32969:148;;33149:213;33267:2;33252:18;;33281:71;33256:9;33325:6;33281:71;;33369:340;33523:2;33508:18;;33537:79;33512:9;33589:6;33537:79;;;33627:72;33695:2;33684:9;33680:18;33671:6;33627:72;;33716:953;34045:3;34030:19;;34060:71;34034:9;34104:6;34060:71;;;34142:80;34218:2;34207:9;34203:18;34194:6;34142:80;;;34270:9;34264:4;34260:20;34255:2;34244:9;34240:18;34233:48;34295:131;34421:4;34295:131;;;34287:139;;34474:9;34468:4;34464:20;34459:2;34448:9;34444:18;34437:48;34499:76;34570:4;34561:6;34499:76;;;34491:84;;34586:73;34654:3;34643:9;34639:19;34630:6;34586:73;;34676:324;34822:2;34807:18;;34836:71;34811:9;34880:6;34836:71;;35007:533;35202:3;35187:19;;35217:71;35191:9;35261:6;35217:71;;;35299:72;35367:2;35356:9;35352:18;35343:6;35299:72;;;35382:66;35444:2;35433:9;35429:18;35420:6;35382:66;;;35459:71;35526:2;35515:9;35511:18;35502:6;35459:71;;35547:831;35815:3;35800:19;;35830:71;35804:9;35874:6;35830:71;;;35912:72;35980:2;35969:9;35965:18;35956:6;35912:72;;;36032:9;36026:4;36022:20;36017:2;36006:9;36002:18;35995:48;36057:78;36130:4;36121:6;36057:78;;;36049:86;;36183:9;36177:4;36173:20;36168:2;36157:9;36153:18;36146:48;36208:76;36279:4;36270:6;36208:76;;;36200:84;;36295:73;36363:3;36352:9;36348:19;36339:6;36295:73;;;35786:592;;;;;;;;;36385:819;36647:3;36632:19;;36662:71;36636:9;36706:6;36662:71;;;36744:72;36812:2;36801:9;36797:18;36788:6;36744:72;;;36864:9;36858:4;36854:20;36849:2;36838:9;36834:18;36827:48;36889:75;36959:4;36950:6;36889:75;;;36881:83;;37012:9;37006:4;37002:20;36997:2;36986:9;36982:18;36975:48;37037:73;37105:4;37096:6;37037:73;;37211:1183;37635:3;37650:47;;;37620:19;;37711:108;37620:19;37805:6;37711:108;;;37703:116;;37867:9;37861:4;37857:20;37852:2;37841:9;37837:18;37830:48;37892:108;37995:4;37986:6;37892:108;;;37884:116;;38048:9;38042:4;38038:20;38033:2;38022:9;38018:18;38011:48;38073:120;38188:4;38179:6;38073:120;;;38065:128;;38241:9;38235:4;38231:20;38226:2;38215:9;38211:18;38204:48;38266:118;38379:4;38370:6;38266:118;;38401:213;38519:2;38504:18;;38533:71;38508:9;38577:6;38533:71;;38621:547;38823:3;38808:19;;38838:71;38812:9;38882:6;38838:71;;;38920:72;38988:2;38977:9;38973:18;38964:6;38920:72;;;39003;39071:2;39060:9;39056:18;39047:6;39003:72;;;39086;39154:2;39143:9;39139:18;39130:6;39086:72;;39175:423;39343:2;39328:18;;39357:71;39332:9;39401:6;39357:71;;;39439:72;39507:2;39496:9;39492:18;39483:6;39439:72;;;39522:66;39584:2;39573:9;39569:18;39560:6;39522:66;;39605:539;39803:3;39788:19;;39818:71;39792:9;39862:6;39818:71;;;39900:68;39964:2;39953:9;39949:18;39940:6;39900:68;;;39979:72;40047:2;40036:9;40032:18;40023:6;39979:72;;;40062;40130:2;40119:9;40115:18;40106:6;40062:72;;40151:259;40292:2;40277:18;;40306:94;40281:9;40373:6;40306:94;;40691:247;40826:2;40811:18;;40840:88;40815:9;40901:6;40840:88;;40945:293;41079:2;41093:47;;;41064:18;;41154:74;41064:18;41214:6;41154:74;;41245:407;41436:2;41450:47;;;41421:18;;41511:131;41421:18;41511:131;;41659:407;41850:2;41864:47;;;41835:18;;41925:131;41835:18;41925:131;;42073:407;42264:2;42278:47;;;42249:18;;42339:131;42249:18;42339:131;;42487:407;42678:2;42692:47;;;42663:18;;42753:131;42663:18;42753:131;;42901:407;43092:2;43106:47;;;43077:18;;43167:131;43077:18;43167:131;;43315:407;43506:2;43520:47;;;43491:18;;43581:131;43491:18;43581:131;;43729:407;43920:2;43934:47;;;43905:18;;43995:131;43905:18;43995:131;;44143:407;44334:2;44348:47;;;44319:18;;44409:131;44319:18;44409:131;;44557:407;44748:2;44762:47;;;44733:18;;44823:131;44733:18;44823:131;;44971:407;45162:2;45176:47;;;45147:18;;45237:131;45147:18;45237:131;;45385:407;45576:2;45590:47;;;45561:18;;45651:131;45561:18;45651:131;;45799:407;45990:2;46004:47;;;45975:18;;46065:131;45975:18;46065:131;;46213:407;46404:2;46418:47;;;46389:18;;46479:131;46389:18;46479:131;;46627:407;46818:2;46832:47;;;46803:18;;46893:131;46803:18;46893:131;;47041:407;47232:2;47246:47;;;47217:18;;47307:131;47217:18;47307:131;;47455:407;47646:2;47660:47;;;47631:18;;47721:131;47631:18;47721:131;;47869:407;48060:2;48074:47;;;48045:18;;48135:131;48045:18;48135:131;;48283:407;48474:2;48488:47;;;48459:18;;48549:131;48459:18;48549:131;;48697:407;48888:2;48902:47;;;48873:18;;48963:131;48873:18;48963:131;;49111:407;49302:2;49316:47;;;49287:18;;49377:131;49287:18;49377:131;;49525:407;49716:2;49730:47;;;49701:18;;49791:131;49701:18;49791:131;;49939:317;50109:2;50094:18;;50123:123;50098:9;50219:6;50123:123;;50483:1847;51075:3;51060:19;;51090:71;51064:9;51134:6;51090:71;;;51172:80;51248:2;51237:9;51233:18;51224:6;51172:80;;;51300:9;51294:4;51290:20;51285:2;51274:9;51270:18;51263:48;51325:108;51428:4;51419:6;51325:108;;;51317:116;;51481:9;51475:4;51471:20;51466:2;51455:9;51451:18;51444:48;51506:108;51609:4;51600:6;51506:108;;;51498:116;;51663:9;51657:4;51653:20;51647:3;51636:9;51632:19;51625:49;51688:120;51803:4;51794:6;51688:120;;;51680:128;;51857:9;51851:4;51847:20;51841:3;51830:9;51826:19;51819:49;51882:118;51995:4;51986:6;51882:118;;;51874:126;;52011:73;52079:3;52068:9;52064:19;52055:6;52011:73;;;52095;52163:3;52152:9;52148:19;52139:6;52095:73;;;52217:9;52211:4;52207:20;52201:3;52190:9;52186:19;52179:49;52242:78;52315:4;52306:6;52242:78;;;52234:86;51046:1284;-1:-1;;;;;;;;;;;51046:1284;52337:1083;52667:3;52652:19;;52682:71;52656:9;52726:6;52682:71;;;52764:72;52832:2;52821:9;52817:18;52808:6;52764:72;;;52847;52915:2;52904:9;52900:18;52891:6;52847:72;;;52930;52998:2;52987:9;52983:18;52974:6;52930:72;;;53013:73;53081:3;53070:9;53066:19;53057:6;53013:73;;;53097;53165:3;53154:9;53150:19;53141:6;53097:73;;;53181;53249:3;53238:9;53234:19;53225:6;53181:73;;;53265:67;53327:3;53316:9;53312:19;53303:6;53265:67;;;53343;53405:3;53394:9;53390:19;53381:6;53343:67;;;52638:782;;;;;;;;;;;;;53427:324;53573:2;53558:18;;53587:71;53562:9;53631:6;53587:71;;53758:256;53820:2;53814:9;53846:17;;;53921:18;53906:34;;53942:22;;;53903:62;53900:2;;;53978:1;53975;53968:12;53900:2;53994;53987:22;53798:216;;-1:-1;53798:216;54021:304;;54180:18;54172:6;54169:30;54166:2;;;54212:1;54209;54202:12;54166:2;-1:-1;54247:4;54235:17;;;54300:15;;54103:222;55276:317;;55415:18;55407:6;55404:30;55401:2;;;55447:1;55444;55437:12;55401:2;-1:-1;55578:4;55514;55491:17;;;;-1:-1;;55487:33;55568:15;;55338:255;56582:151;56706:4;56697:14;;56654:79;57225:157;;57319:14;;;57361:4;57348:18;;;57278:104;57554:137;57657:12;;57628:63;59119:178;59237:19;;;59286:4;59277:14;;59230:67;60697:91;;60759:24;60777:5;60759:24;;60795:85;60861:13;60854:21;;60837:43;60966:144;61047:5;61053:52;61047:5;61053:52;;61117:121;-1:-1;;;;;61179:54;;61162:76;61324:81;61395:4;61384:16;;61367:38;61412:104;-1:-1;;;;;61473:38;;61456:60;61523:129;;61610:37;61641:5;61659:167;;61761:60;61815:5;61761:60;;62295:144;;62391:43;62428:5;62391:43;;62446:116;;62533:24;62551:5;62533:24;;62812:106;;62890:23;62907:5;62890:23;;62926:145;63007:6;63002:3;62997;62984:30;-1:-1;63063:1;63045:16;;63038:27;62977:94;63080:268;63145:1;63152:101;63166:6;63163:1;63160:13;63152:101;;;63233:11;;;63227:18;63214:11;;;63207:39;63188:2;63181:10;63152:101;;;63268:6;63265:1;63262:13;63259:2;;;-1:-1;;63333:1;63315:16;;63308:27;63129:219;63437:97;63525:2;63505:14;-1:-1;;63501:28;;63485:49;63542:110;63630:1;63623:5;63620:12;63610:2;;63636:9;63659:117;63728:24;63746:5;63728:24;;;63721:5;63718:35;63708:2;;63767:1;63764;63757:12;63783:111;63849:21;63864:5;63849:21;;63901:117;63970:24;63988:5;63970:24;;64149:113;64216:22;64232:5;64216:22;;64269:115;64337:23;64354:5;64337:23;"},"methodIdentifiers":{"BALLOT_TYPEHASH()":"deaaa7cc","DOMAIN_TYPEHASH()":"20606b70","__abdicate()":"760fbc13","__acceptAdmin()":"b9a61961","__executeSetTimelockPendingAdmin(address,uint256)":"21f43e42","__queueSetTimelockPendingAdmin(address,uint256)":"91500671","cancel(uint256)":"40e58ee5","castVote(uint256,bool)":"15373e3d","castVoteBySig(uint256,bool,uint8,bytes32,bytes32)":"4634c61f","comp()":"109d0af8","execute(uint256)":"fe0d94c1","getActions(uint256)":"328dd982","getReceipt(uint256,address)":"e23a9a52","guardian()":"452a9320","latestProposalIds(address)":"17977c61","name()":"06fdde03","proposalCount()":"da35c664","proposalMaxOperations()":"7bdbe4d0","proposalThreshold()":"b58131b0","proposals(uint256)":"013cf08b","propose(address[],uint256[],string[],bytes[],string)":"da95691a","queue(uint256)":"ddf0b009","quorumVotes()":"24bc1a64","state(uint256)":"3e4f49e6","timelock()":"d33219b4","votingDelay()":"3932abb1","votingPeriod()":"02a251a3"}},"metadata":"{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"timelock_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"comp_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"guardian_\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"ProposalCanceled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"targets\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"string[]\",\"name\":\"signatures\",\"type\":\"string[]\"},{\"indexed\":false,\"internalType\":\"bytes[]\",\"name\":\"calldatas\",\"type\":\"bytes[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startBlock\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endBlock\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"}],\"name\":\"ProposalCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"ProposalExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"eta\",\"type\":\"uint256\"}],\"name\":\"ProposalQueued\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"voter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"support\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"votes\",\"type\":\"uint256\"}],\"name\":\"VoteCast\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"BALLOT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"DOMAIN_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"__abdicate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"__acceptAdmin\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"newPendingAdmin\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"eta\",\"type\":\"uint256\"}],\"name\":\"__executeSetTimelockPendingAdmin\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"newPendingAdmin\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"eta\",\"type\":\"uint256\"}],\"name\":\"__queueSetTimelockPendingAdmin\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"}],\"name\":\"cancel\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"support\",\"type\":\"bool\"}],\"name\":\"castVote\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"support\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"castVoteBySig\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"comp\",\"outputs\":[{\"internalType\":\"contract CompInterface\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"}],\"name\":\"execute\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"}],\"name\":\"getActions\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"},{\"internalType\":\"string[]\",\"name\":\"signatures\",\"type\":\"string[]\"},{\"internalType\":\"bytes[]\",\"name\":\"calldatas\",\"type\":\"bytes[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"voter\",\"type\":\"address\"}],\"name\":\"getReceipt\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"hasVoted\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"support\",\"type\":\"bool\"},{\"internalType\":\"uint96\",\"name\":\"votes\",\"type\":\"uint96\"}],\"internalType\":\"struct GovernorAlpha.Receipt\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"guardian\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"latestProposalIds\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"proposalCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"proposalMaxOperations\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"proposalThreshold\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"proposals\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"eta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"forVotes\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"againstVotes\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"canceled\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"executed\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"targets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"},{\"internalType\":\"string[]\",\"name\":\"signatures\",\"type\":\"string[]\"},{\"internalType\":\"bytes[]\",\"name\":\"calldatas\",\"type\":\"bytes[]\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"}],\"name\":\"propose\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"}],\"name\":\"queue\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"quorumVotes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"}],\"name\":\"state\",\"outputs\":[{\"internalType\":\"enum GovernorAlpha.ProposalState\",\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"timelock\",\"outputs\":[{\"internalType\":\"contract TimelockInterface\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"votingDelay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"votingPeriod\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{\"proposalMaxOperations()\":{\"notice\":\"The maximum number of actions that can be included in a proposal\"},\"proposalThreshold()\":{\"notice\":\"The number of votes required in order for a voter to become a proposer\"},\"quorumVotes()\":{\"notice\":\"The number of votes in support of a proposal required in order for a quorum to be reached and for a vote to succeed\"},\"votingDelay()\":{\"notice\":\"The delay before voting on a proposal may take place, once proposed\"},\"votingPeriod()\":{\"notice\":\"The duration of voting on a proposal, in blocks\"}}}},\"settings\":{\"compilationTarget\":{\"contracts/Governance/GovernorAlpha.sol\":\"GovernorAlpha\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/Governance/GovernorAlpha.sol\":{\"keccak256\":\"0xc91c70583f8edc55495b739b53bc9f0e95b2291cde29e0923ebf4435a7b5a269\",\"urls\":[\"bzz-raw://b74d9e0709ace54fa457a17da0e647ca5c60499bf74c0162479c14792f452f4c\",\"dweb:/ipfs/QmZ9eGjrXsxXTc3JKF7GrygMn49jRXFQjKzyg7hLPu7JuN\"]}},\"version\":1}"},"TimelockInterface":{"abi":[{"constant":true,"inputs":[],"name":"GRACE_PERIOD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"acceptAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"string","name":"signature","type":"string"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint256","name":"eta","type":"uint256"}],"name":"cancelTransaction","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"delay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"string","name":"signature","type":"string"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint256","name":"eta","type":"uint256"}],"name":"executeTransaction","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"string","name":"signature","type":"string"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint256","name":"eta","type":"uint256"}],"name":"queueTransaction","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"hash","type":"bytes32"}],"name":"queuedTransactions","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"GRACE_PERIOD()":"c1a287e2","acceptAdmin()":"0e18b681","cancelTransaction(address,uint256,string,bytes,uint256)":"591fcdfe","delay()":"6a42b8f8","executeTransaction(address,uint256,string,bytes,uint256)":"0825f38f","queueTransaction(address,uint256,string,bytes,uint256)":"3a66f901","queuedTransactions(bytes32)":"f2b06537"}},"metadata":"{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[],\"name\":\"GRACE_PERIOD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"acceptAdmin\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"signature\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"eta\",\"type\":\"uint256\"}],\"name\":\"cancelTransaction\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"delay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"signature\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"eta\",\"type\":\"uint256\"}],\"name\":\"executeTransaction\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"signature\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"eta\",\"type\":\"uint256\"}],\"name\":\"queueTransaction\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"}],\"name\":\"queuedTransactions\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/Governance/GovernorAlpha.sol\":\"TimelockInterface\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/Governance/GovernorAlpha.sol\":{\"keccak256\":\"0xc91c70583f8edc55495b739b53bc9f0e95b2291cde29e0923ebf4435a7b5a269\",\"urls\":[\"bzz-raw://b74d9e0709ace54fa457a17da0e647ca5c60499bf74c0162479c14792f452f4c\",\"dweb:/ipfs/QmZ9eGjrXsxXTc3JKF7GrygMn49jRXFQjKzyg7hLPu7JuN\"]}},\"version\":1}"}},"contracts/IFuseFeeDistributor.sol":{"IFuseFeeDistributor":{"abi":[{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":true,"inputs":[{"internalType":"address","name":"oldImplementation","type":"address"},{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bool","name":"allowResign","type":"bool"}],"name":"cErc20DelegateWhitelist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"oldImplementation","type":"address"},{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bool","name":"allowResign","type":"bool"}],"name":"cEtherDelegateWhitelist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"oldImplementation","type":"address"},{"internalType":"address","name":"newImplementation","type":"address"}],"name":"comptrollerImplementationWhitelist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes","name":"constructorData","type":"bytes"}],"name":"deployCErc20","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes","name":"constructorData","type":"bytes"}],"name":"deployCEther","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"interestFeeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"oldImplementation","type":"address"}],"name":"latestCErc20Delegate","outputs":[{"internalType":"address","name":"cErc20Delegate","type":"address"},{"internalType":"bool","name":"allowResign","type":"bool"},{"internalType":"bytes","name":"becomeImplementationData","type":"bytes"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"oldImplementation","type":"address"}],"name":"latestCEtherDelegate","outputs":[{"internalType":"address","name":"cEtherDelegate","type":"address"},{"internalType":"bool","name":"allowResign","type":"bool"},{"internalType":"bytes","name":"becomeImplementationData","type":"bytes"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"oldImplementation","type":"address"}],"name":"latestComptrollerImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"maxSupplyEth","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"maxUtilizationRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"minBorrowEth","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"cErc20DelegateWhitelist(address,address,bool)":"71cd40e6","cEtherDelegateWhitelist(address,address,bool)":"c11cd440","comptrollerImplementationWhitelist(address,address)":"9d244f9f","deployCErc20(bytes)":"8754e4fd","deployCEther(bytes)":"9b86a9b5","interestFeeRate()":"dd86fea1","latestCErc20Delegate(address)":"45cc9705","latestCEtherDelegate(address)":"8abe0b75","latestComptrollerImplementation(address)":"bbcdd6d3","maxSupplyEth()":"9c7be708","maxUtilizationRate()":"dfcb48bd","minBorrowEth()":"fdb25fb1"}},"metadata":"{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"oldImplementation\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"allowResign\",\"type\":\"bool\"}],\"name\":\"cErc20DelegateWhitelist\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"oldImplementation\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"allowResign\",\"type\":\"bool\"}],\"name\":\"cEtherDelegateWhitelist\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"oldImplementation\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"comptrollerImplementationWhitelist\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"constructorData\",\"type\":\"bytes\"}],\"name\":\"deployCErc20\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"constructorData\",\"type\":\"bytes\"}],\"name\":\"deployCEther\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"interestFeeRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"oldImplementation\",\"type\":\"address\"}],\"name\":\"latestCErc20Delegate\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"cErc20Delegate\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"allowResign\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"becomeImplementationData\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"oldImplementation\",\"type\":\"address\"}],\"name\":\"latestCEtherDelegate\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"cEtherDelegate\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"allowResign\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"becomeImplementationData\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"oldImplementation\",\"type\":\"address\"}],\"name\":\"latestComptrollerImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"maxSupplyEth\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"maxUtilizationRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"minBorrowEth\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/IFuseFeeDistributor.sol\":\"IFuseFeeDistributor\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/IFuseFeeDistributor.sol\":{\"keccak256\":\"0xb5d287b8e05574d38bd5d0b413f44b4c5d312f28188573ac60abe78123fbd92c\",\"urls\":[\"bzz-raw://84c2bbf746a82aaa100bee90c7dd40411c723bded124bb1775bf72bf7fda8a2c\",\"dweb:/ipfs/QmToQzDtz9BV2tvU71YsfWjdaZu5qpP1xKFZ1TkQgubhDb\"]}},\"version\":1}"}},"contracts/InterestRateModel.sol":{"InterestRateModel":{"abi":[{"constant":true,"inputs":[{"internalType":"uint256","name":"cash","type":"uint256"},{"internalType":"uint256","name":"borrows","type":"uint256"},{"internalType":"uint256","name":"reserves","type":"uint256"}],"name":"getBorrowRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"cash","type":"uint256"},{"internalType":"uint256","name":"borrows","type":"uint256"},{"internalType":"uint256","name":"reserves","type":"uint256"},{"internalType":"uint256","name":"reserveFactorMantissa","type":"uint256"}],"name":"getSupplyRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isInterestRateModel","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getBorrowRate(uint256,uint256,uint256)":"15f24053","getSupplyRate(uint256,uint256,uint256,uint256)":"b8168816","isInterestRateModel()":"2191f92a"}},"metadata":"{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"cash\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"borrows\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserves\",\"type\":\"uint256\"}],\"name\":\"getBorrowRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"cash\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"borrows\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserves\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveFactorMantissa\",\"type\":\"uint256\"}],\"name\":\"getSupplyRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isInterestRateModel\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Compound\",\"methods\":{\"getBorrowRate(uint256,uint256,uint256)\":{\"params\":{\"borrows\":\"The total amount of borrows the market has outstanding\",\"cash\":\"The total amount of cash the market has\",\"reserves\":\"The total amount of reserves the market has\"},\"return\":\"The borrow rate per block (as a percentage, and scaled by 1e18)\"},\"getSupplyRate(uint256,uint256,uint256,uint256)\":{\"params\":{\"borrows\":\"The total amount of borrows the market has outstanding\",\"cash\":\"The total amount of cash the market has\",\"reserveFactorMantissa\":\"The current reserve factor the market has\",\"reserves\":\"The total amount of reserves the market has\"},\"return\":\"The supply rate per block (as a percentage, and scaled by 1e18)\"}},\"title\":\"Compound's InterestRateModel Interface\"},\"userdoc\":{\"methods\":{\"getBorrowRate(uint256,uint256,uint256)\":{\"notice\":\"Calculates the current borrow interest rate per block\"},\"getSupplyRate(uint256,uint256,uint256,uint256)\":{\"notice\":\"Calculates the current supply interest rate per block\"}}}},\"settings\":{\"compilationTarget\":{\"contracts/InterestRateModel.sol\":\"InterestRateModel\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/InterestRateModel.sol\":{\"keccak256\":\"0x0cc0dbd1991e5dcdcff58b0c82a9471a0fb9df26763e5e7415e1d081b7332409\",\"urls\":[\"bzz-raw://f4d7936aefc43ea2724f0e472b8f1517f1ca40170258ab9d5bbd0862dd0c4f13\",\"dweb:/ipfs/QmfYjG1Sm3kNwbhomHCWhMqw9LvaJVWVzBe4Te5BHRbTQS\"]}},\"version\":1}"}},"contracts/JumpRateModel.sol":{"JumpRateModel":{"abi":[{"inputs":[{"internalType":"uint256","name":"baseRatePerYear","type":"uint256"},{"internalType":"uint256","name":"multiplierPerYear","type":"uint256"},{"internalType":"uint256","name":"jumpMultiplierPerYear","type":"uint256"},{"internalType":"uint256","name":"kink_","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"baseRatePerBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"multiplierPerBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"jumpMultiplierPerBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"kink","type":"uint256"}],"name":"NewInterestParams","type":"event"},{"constant":true,"inputs":[],"name":"baseRatePerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"blocksPerYear","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"cash","type":"uint256"},{"internalType":"uint256","name":"borrows","type":"uint256"},{"internalType":"uint256","name":"reserves","type":"uint256"}],"name":"getBorrowRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"cash","type":"uint256"},{"internalType":"uint256","name":"borrows","type":"uint256"},{"internalType":"uint256","name":"reserves","type":"uint256"},{"internalType":"uint256","name":"reserveFactorMantissa","type":"uint256"}],"name":"getSupplyRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isInterestRateModel","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"jumpMultiplierPerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"kink","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"multiplierPerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"cash","type":"uint256"},{"internalType":"uint256","name":"borrows","type":"uint256"},{"internalType":"uint256","name":"reserves","type":"uint256"}],"name":"utilizationRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b506040516107cb3803806107cb8339818101604052608081101561003357600080fd5b5080516020808301516040840151606090940151929390929091610065908590622433949061039e6100fd821b17901c565b60015561008083622433946100fd602090811b61039e17901c565b60005561009b82622433946100fd602090811b61039e17901c565b60028190556003829055600154600054604080519283526020830191909152818101929092526060810183905290517f6960ab234c7ef4b0c9197100f5393cfcde7c453ac910a27bd2000aa1dd4c068d9181900360800190a1505050506101ee565b600061014583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061014c60201b60201c565b9392505050565b600081836101d85760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561019d578181015183820152602001610185565b50505050905090810190601f1680156101ca5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816101e457fe5b0495945050505050565b6105ce806101fd6000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c8063a385fb9611610066578063a385fb9614610120578063b816881614610128578063b9f9850a14610157578063f14039de1461015f578063fd2da3391461016757610093565b806315f24053146100985780632191f92a146100d35780636e71e2d8146100ef5780638726bb8914610118575b600080fd5b6100c1600480360360608110156100ae57600080fd5b508035906020810135906040013561016f565b60408051918252519081900360200190f35b6100db610247565b604080519115158252519081900360200190f35b6100c16004803603606081101561010557600080fd5b508035906020810135906040013561024c565b6100c161029e565b6100c16102a4565b6100c16004803603608081101561013e57600080fd5b50803590602081013590604081013590606001356102ab565b6100c161032a565b6100c1610330565b6100c1610336565b60008061017d85858561024c565b905060035481116101cf576101c76001546101bb670de0b6b3a76400006101af6000548661033c90919063ffffffff16565b9063ffffffff61039e16565b9063ffffffff6103e016565b915050610240565b60006101fa6001546101bb670de0b6b3a76400006101af60005460035461033c90919063ffffffff16565b905060006102136003548461043a90919063ffffffff16565b905061023a826101bb670de0b6b3a76400006101af6002548661033c90919063ffffffff16565b93505050505b9392505050565b600181565b60008261025b57506000610240565b61029661027e83610272878763ffffffff6103e016565b9063ffffffff61043a16565b6101af85670de0b6b3a764000063ffffffff61033c16565b949350505050565b60005481565b6224339481565b6000806102c6670de0b6b3a76400008463ffffffff61043a16565b905060006102d587878761016f565b905060006102f5670de0b6b3a76400006101af848663ffffffff61033c16565b905061031e670de0b6b3a76400006101af836103128c8c8c61024c565b9063ffffffff61033c16565b98975050505050505050565b60025481565b60015481565b60035481565b60008261034b57506000610398565b8282028284828161035857fe5b04146103955760405162461bcd60e51b81526004018080602001828103825260218152602001806105796021913960400191505060405180910390fd5b90505b92915050565b600061039583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061047c565b600082820183811015610395576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600061039583836040518060400160405280601f81526020017f536166654d6174683a207375627472616374696f6e20756e646572666c6f770081525061051e565b600081836105085760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156104cd5781810151838201526020016104b5565b50505050905090810190601f1680156104fa5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161051457fe5b0495945050505050565b600081848411156105705760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156104cd5781810151838201526020016104b5565b50505090039056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a265627a7a72315820311ddb121b1d6d20e29010eeb561e8a2195087c475854b3153aba39b46fcdc3d64736f6c63430005110032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x7CB CODESIZE SUB DUP1 PUSH2 0x7CB DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0x60 SWAP1 SWAP5 ADD MLOAD SWAP3 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH2 0x65 SWAP1 DUP6 SWAP1 PUSH3 0x243394 SWAP1 PUSH2 0x39E PUSH2 0xFD DUP3 SHL OR SWAP1 SHR JUMP JUMPDEST PUSH1 0x1 SSTORE PUSH2 0x80 DUP4 PUSH3 0x243394 PUSH2 0xFD PUSH1 0x20 SWAP1 DUP2 SHL PUSH2 0x39E OR SWAP1 SHR JUMP JUMPDEST PUSH1 0x0 SSTORE PUSH2 0x9B DUP3 PUSH3 0x243394 PUSH2 0xFD PUSH1 0x20 SWAP1 DUP2 SHL PUSH2 0x39E OR SWAP1 SHR JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE PUSH1 0x3 DUP3 SWAP1 SSTORE PUSH1 0x1 SLOAD PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD PUSH32 0x6960AB234C7EF4B0C9197100F5393CFCDE7C453AC910A27BD2000AA1DD4C068D SWAP2 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG1 POP POP POP POP PUSH2 0x1EE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x145 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x14C PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x1D8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x19D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x185 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1CA JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x1E4 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x5CE DUP1 PUSH2 0x1FD 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 0x93 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA385FB96 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xA385FB96 EQ PUSH2 0x120 JUMPI DUP1 PUSH4 0xB8168816 EQ PUSH2 0x128 JUMPI DUP1 PUSH4 0xB9F9850A EQ PUSH2 0x157 JUMPI DUP1 PUSH4 0xF14039DE EQ PUSH2 0x15F JUMPI DUP1 PUSH4 0xFD2DA339 EQ PUSH2 0x167 JUMPI PUSH2 0x93 JUMP JUMPDEST DUP1 PUSH4 0x15F24053 EQ PUSH2 0x98 JUMPI DUP1 PUSH4 0x2191F92A EQ PUSH2 0xD3 JUMPI DUP1 PUSH4 0x6E71E2D8 EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0x8726BB89 EQ PUSH2 0x118 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xAE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x16F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xDB PUSH2 0x247 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xC1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x105 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x24C JUMP JUMPDEST PUSH2 0xC1 PUSH2 0x29E JUMP JUMPDEST PUSH2 0xC1 PUSH2 0x2A4 JUMP JUMPDEST PUSH2 0xC1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x13E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x2AB JUMP JUMPDEST PUSH2 0xC1 PUSH2 0x32A JUMP JUMPDEST PUSH2 0xC1 PUSH2 0x330 JUMP JUMPDEST PUSH2 0xC1 PUSH2 0x336 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x17D DUP6 DUP6 DUP6 PUSH2 0x24C JUMP JUMPDEST SWAP1 POP PUSH1 0x3 SLOAD DUP2 GT PUSH2 0x1CF JUMPI PUSH2 0x1C7 PUSH1 0x1 SLOAD PUSH2 0x1BB PUSH8 0xDE0B6B3A7640000 PUSH2 0x1AF PUSH1 0x0 SLOAD DUP7 PUSH2 0x33C SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x39E AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3E0 AND JUMP JUMPDEST SWAP2 POP POP PUSH2 0x240 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1FA PUSH1 0x1 SLOAD PUSH2 0x1BB PUSH8 0xDE0B6B3A7640000 PUSH2 0x1AF PUSH1 0x0 SLOAD PUSH1 0x3 SLOAD PUSH2 0x33C SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x213 PUSH1 0x3 SLOAD DUP5 PUSH2 0x43A SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x23A DUP3 PUSH2 0x1BB PUSH8 0xDE0B6B3A7640000 PUSH2 0x1AF PUSH1 0x2 SLOAD DUP7 PUSH2 0x33C SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP4 POP POP POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x25B JUMPI POP PUSH1 0x0 PUSH2 0x240 JUMP JUMPDEST PUSH2 0x296 PUSH2 0x27E DUP4 PUSH2 0x272 DUP8 DUP8 PUSH4 0xFFFFFFFF PUSH2 0x3E0 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x43A AND JUMP JUMPDEST PUSH2 0x1AF DUP6 PUSH8 0xDE0B6B3A7640000 PUSH4 0xFFFFFFFF PUSH2 0x33C AND JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH3 0x243394 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2C6 PUSH8 0xDE0B6B3A7640000 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x43A AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2D5 DUP8 DUP8 DUP8 PUSH2 0x16F JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2F5 PUSH8 0xDE0B6B3A7640000 PUSH2 0x1AF DUP5 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x33C AND JUMP JUMPDEST SWAP1 POP PUSH2 0x31E PUSH8 0xDE0B6B3A7640000 PUSH2 0x1AF DUP4 PUSH2 0x312 DUP13 DUP13 DUP13 PUSH2 0x24C JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x33C AND JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x34B JUMPI POP PUSH1 0x0 PUSH2 0x398 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x358 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x395 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x579 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x395 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x47C JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x395 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x395 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1F DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E20756E646572666C6F7700 DUP2 MSTORE POP PUSH2 0x51E JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x508 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4CD JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4B5 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x4FA JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x514 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x570 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x4CD JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4B5 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP INVALID MSTORE8 PUSH2 0x6665 0x4D PUSH2 0x7468 GASPRICE KECCAK256 PUSH14 0x756C7469706C69636174696F6E20 PUSH16 0x766572666C6F77A265627A7A72315820 BALANCE SAR 0xDB SLT SHL SAR PUSH14 0x20E29010EEB561E8A2195087C475 DUP6 0x4B BALANCE MSTORE8 0xAB LOG3 SWAP12 CHAINID 0xFC 0xDC RETURNDATASIZE PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ","sourceMap":"160:4236:27:-;;;1547:440;8:9:-1;5:2;;;30:1;27;20:12;5:2;1547:440:27;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;1547:440:27;;;;;;;;;;;;;;;;;;;;;;1681:34;;1547:440;;511:7;;1681:19;;;;;:34;;:::i;:::-;1662:16;:53;1746:36;:17;511:7;1746:21;;;;;;;:36;;:::i;:::-;1725:18;:57;1817:40;:21;511:7;1817:25;;;;;;;:40;;:::i;:::-;1792:22;:65;;;1867:4;:12;;;1913:16;;-1:-1:-1;1931:18:27;1895:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1547:440;;;;160:4236;;4266:130:37;4324:7;4350:39;4354:1;4357;4350:39;;;;;;;;;;;;;;;;;:3;;;:39;;:::i;:::-;4343:46;4266:130;-1:-1:-1;;;4266:130:37:o;4871:338::-;4957:7;5057:12;5050:5;5042:28;;;;-1:-1:-1;;;5042:28:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;5042:28:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5080:9;5096:1;5092;:5;;;;;;;4871:338;-1:-1:-1;;;;;4871:338:37:o;160:4236:27:-;;;;;;;"},"deployedBytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100935760003560e01c8063a385fb9611610066578063a385fb9614610120578063b816881614610128578063b9f9850a14610157578063f14039de1461015f578063fd2da3391461016757610093565b806315f24053146100985780632191f92a146100d35780636e71e2d8146100ef5780638726bb8914610118575b600080fd5b6100c1600480360360608110156100ae57600080fd5b508035906020810135906040013561016f565b60408051918252519081900360200190f35b6100db610247565b604080519115158252519081900360200190f35b6100c16004803603606081101561010557600080fd5b508035906020810135906040013561024c565b6100c161029e565b6100c16102a4565b6100c16004803603608081101561013e57600080fd5b50803590602081013590604081013590606001356102ab565b6100c161032a565b6100c1610330565b6100c1610336565b60008061017d85858561024c565b905060035481116101cf576101c76001546101bb670de0b6b3a76400006101af6000548661033c90919063ffffffff16565b9063ffffffff61039e16565b9063ffffffff6103e016565b915050610240565b60006101fa6001546101bb670de0b6b3a76400006101af60005460035461033c90919063ffffffff16565b905060006102136003548461043a90919063ffffffff16565b905061023a826101bb670de0b6b3a76400006101af6002548661033c90919063ffffffff16565b93505050505b9392505050565b600181565b60008261025b57506000610240565b61029661027e83610272878763ffffffff6103e016565b9063ffffffff61043a16565b6101af85670de0b6b3a764000063ffffffff61033c16565b949350505050565b60005481565b6224339481565b6000806102c6670de0b6b3a76400008463ffffffff61043a16565b905060006102d587878761016f565b905060006102f5670de0b6b3a76400006101af848663ffffffff61033c16565b905061031e670de0b6b3a76400006101af836103128c8c8c61024c565b9063ffffffff61033c16565b98975050505050505050565b60025481565b60015481565b60035481565b60008261034b57506000610398565b8282028284828161035857fe5b04146103955760405162461bcd60e51b81526004018080602001828103825260218152602001806105796021913960400191505060405180910390fd5b90505b92915050565b600061039583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061047c565b600082820183811015610395576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600061039583836040518060400160405280601f81526020017f536166654d6174683a207375627472616374696f6e20756e646572666c6f770081525061051e565b600081836105085760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156104cd5781810151838201526020016104b5565b50505050905090810190601f1680156104fa5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161051457fe5b0495945050505050565b600081848411156105705760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156104cd5781810151838201526020016104b5565b50505090039056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a265627a7a72315820311ddb121b1d6d20e29010eeb561e8a2195087c475854b3153aba39b46fcdc3d64736f6c63430005110032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x93 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA385FB96 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xA385FB96 EQ PUSH2 0x120 JUMPI DUP1 PUSH4 0xB8168816 EQ PUSH2 0x128 JUMPI DUP1 PUSH4 0xB9F9850A EQ PUSH2 0x157 JUMPI DUP1 PUSH4 0xF14039DE EQ PUSH2 0x15F JUMPI DUP1 PUSH4 0xFD2DA339 EQ PUSH2 0x167 JUMPI PUSH2 0x93 JUMP JUMPDEST DUP1 PUSH4 0x15F24053 EQ PUSH2 0x98 JUMPI DUP1 PUSH4 0x2191F92A EQ PUSH2 0xD3 JUMPI DUP1 PUSH4 0x6E71E2D8 EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0x8726BB89 EQ PUSH2 0x118 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xAE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x16F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xDB PUSH2 0x247 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xC1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x105 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x24C JUMP JUMPDEST PUSH2 0xC1 PUSH2 0x29E JUMP JUMPDEST PUSH2 0xC1 PUSH2 0x2A4 JUMP JUMPDEST PUSH2 0xC1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x13E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x2AB JUMP JUMPDEST PUSH2 0xC1 PUSH2 0x32A JUMP JUMPDEST PUSH2 0xC1 PUSH2 0x330 JUMP JUMPDEST PUSH2 0xC1 PUSH2 0x336 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x17D DUP6 DUP6 DUP6 PUSH2 0x24C JUMP JUMPDEST SWAP1 POP PUSH1 0x3 SLOAD DUP2 GT PUSH2 0x1CF JUMPI PUSH2 0x1C7 PUSH1 0x1 SLOAD PUSH2 0x1BB PUSH8 0xDE0B6B3A7640000 PUSH2 0x1AF PUSH1 0x0 SLOAD DUP7 PUSH2 0x33C SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x39E AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3E0 AND JUMP JUMPDEST SWAP2 POP POP PUSH2 0x240 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1FA PUSH1 0x1 SLOAD PUSH2 0x1BB PUSH8 0xDE0B6B3A7640000 PUSH2 0x1AF PUSH1 0x0 SLOAD PUSH1 0x3 SLOAD PUSH2 0x33C SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x213 PUSH1 0x3 SLOAD DUP5 PUSH2 0x43A SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x23A DUP3 PUSH2 0x1BB PUSH8 0xDE0B6B3A7640000 PUSH2 0x1AF PUSH1 0x2 SLOAD DUP7 PUSH2 0x33C SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP4 POP POP POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x25B JUMPI POP PUSH1 0x0 PUSH2 0x240 JUMP JUMPDEST PUSH2 0x296 PUSH2 0x27E DUP4 PUSH2 0x272 DUP8 DUP8 PUSH4 0xFFFFFFFF PUSH2 0x3E0 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x43A AND JUMP JUMPDEST PUSH2 0x1AF DUP6 PUSH8 0xDE0B6B3A7640000 PUSH4 0xFFFFFFFF PUSH2 0x33C AND JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH3 0x243394 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2C6 PUSH8 0xDE0B6B3A7640000 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x43A AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2D5 DUP8 DUP8 DUP8 PUSH2 0x16F JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2F5 PUSH8 0xDE0B6B3A7640000 PUSH2 0x1AF DUP5 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x33C AND JUMP JUMPDEST SWAP1 POP PUSH2 0x31E PUSH8 0xDE0B6B3A7640000 PUSH2 0x1AF DUP4 PUSH2 0x312 DUP13 DUP13 DUP13 PUSH2 0x24C JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x33C AND JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x34B JUMPI POP PUSH1 0x0 PUSH2 0x398 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x358 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x395 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x579 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x395 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x47C JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x395 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x395 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1F DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E20756E646572666C6F7700 DUP2 MSTORE POP PUSH2 0x51E JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x508 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4CD JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4B5 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x4FA JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x514 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x570 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x4CD JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4B5 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP INVALID MSTORE8 PUSH2 0x6665 0x4D PUSH2 0x7468 GASPRICE KECCAK256 PUSH14 0x756C7469706C69636174696F6E20 PUSH16 0x766572666C6F77A265627A7A72315820 BALANCE SAR 0xDB SLT SHL SAR PUSH14 0x20E29010EEB561E8A2195087C475 DUP6 0x4B BALANCE MSTORE8 0xAB LOG3 SWAP12 CHAINID 0xFC 0xDC RETURNDATASIZE PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ","sourceMap":"160:4236:27:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;160:4236:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3037:519;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3037:519:27;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;224:47:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;2368:290:27;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2368:290:27;;;;;;;;;;;;:::i;668:30::-;;;:::i;474:44::-;;;:::i;3969:425::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;3969:425:27;;;;;;;;;;;;;;;;;:::i;944:34::-;;;:::i;811:28::-;;;:::i;1078:16::-;;;:::i;3037:519::-;3121:4;3137:9;3149:40;3165:4;3171:7;3180:8;3149:15;:40::i;:::-;3137:52;;3212:4;;3204;:12;3200:350;;3239:60;3282:16;;3239:38;3272:4;3239:28;3248:18;;3239:4;:8;;:28;;;;:::i;:::-;:32;:38;:32;:38;:::i;:::-;:42;:60;:42;:60;:::i;:::-;3232:67;;;;;3200:350;3330:15;3348:60;3391:16;;3348:38;3381:4;3348:28;3357:18;;3348:4;;:8;;:28;;;;:::i;:60::-;3330:78;;3422:15;3440:14;3449:4;;3440;:8;;:14;;;;:::i;:::-;3422:32;;3475:64;3528:10;3475:48;3518:4;3475:38;3490:22;;3475:10;:14;;:38;;;;:::i;:64::-;3468:71;;;;;3037:519;;;;;;:::o;224:47:26:-;267:4;224:47;:::o;2368:290:27:-;2454:4;2533:12;2529:51;;-1:-1:-1;2568:1:27;2561:8;;2529:51;2597:54;2619:31;2641:8;2619:17;:4;2628:7;2619:17;:8;:17;:::i;:::-;:21;:31;:21;:31;:::i;:::-;2597:17;:7;2609:4;2597:17;:11;:17;:::i;:54::-;2590:61;2368:290;-1:-1:-1;;;;2368:290:27:o;668:30::-;;;;:::o;474:44::-;511:7;474:44;:::o;3969:425::-;4081:4;;4126:37;4131:4;4141:21;4126:37;:14;:37;:::i;:::-;4097:66;;4173:15;4191:38;4205:4;4211:7;4220:8;4191:13;:38::i;:::-;4173:56;-1:-1:-1;4239:15:27;4257:47;4299:4;4257:37;4173:56;4272:21;4257:37;:14;:37;:::i;:47::-;4239:65;;4321:66;4382:4;4321:56;4366:10;4321:40;4337:4;4343:7;4352:8;4321:15;:40::i;:::-;:44;:56;:44;:56;:::i;:66::-;4314:73;3969:425;-1:-1:-1;;;;;;;;3969:425:27:o;944:34::-;;;;:::o;811:28::-;;;;:::o;1078:16::-;;;;:::o;2655:459:37:-;2713:7;2954:6;2950:45;;-1:-1:-1;2983:1:37;2976:8;;2950:45;3017:5;;;3021:1;3017;:5;:1;3040:5;;;;;:10;3032:56;;;;-1:-1:-1;;;3032:56:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3106:1;-1:-1:-1;2655:459:37;;;;;:::o;4266:130::-;4324:7;4350:39;4354:1;4357;4350:39;;;;;;;;;;;;;;;;;:3;:39::i;958:176::-;1016:7;1047:5;;;1070:6;;;;1062:46;;;;;-1:-1:-1;;;1062:46:37;;;;;;;;;;;;;;;;;;;;;;;;;;;1821:135;1879:7;1905:44;1909:1;1912;1905:44;;;;;;;;;;;;;;;;;:3;:44::i;4871:338::-;4957:7;5057:12;5050:5;5042:28;;;;-1:-1:-1;;;5042:28:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;5042:28:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5080:9;5096:1;5092;:5;;;;;;;4871:338;-1:-1:-1;;;;;4871:338:37:o;2235:187::-;2321:7;2356:12;2348:6;;;;2340:29;;;;-1:-1:-1;;;2340:29:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;2340:29:37;-1:-1:-1;;;2391:5:37;;;2235:187::o"},"methodIdentifiers":{"baseRatePerBlock()":"f14039de","blocksPerYear()":"a385fb96","getBorrowRate(uint256,uint256,uint256)":"15f24053","getSupplyRate(uint256,uint256,uint256,uint256)":"b8168816","isInterestRateModel()":"2191f92a","jumpMultiplierPerBlock()":"b9f9850a","kink()":"fd2da339","multiplierPerBlock()":"8726bb89","utilizationRate(uint256,uint256,uint256)":"6e71e2d8"}},"metadata":"{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"baseRatePerYear\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"multiplierPerYear\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"jumpMultiplierPerYear\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"kink_\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"baseRatePerBlock\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"multiplierPerBlock\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"jumpMultiplierPerBlock\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"kink\",\"type\":\"uint256\"}],\"name\":\"NewInterestParams\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"baseRatePerBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"blocksPerYear\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"cash\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"borrows\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserves\",\"type\":\"uint256\"}],\"name\":\"getBorrowRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"cash\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"borrows\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserves\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveFactorMantissa\",\"type\":\"uint256\"}],\"name\":\"getSupplyRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isInterestRateModel\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"jumpMultiplierPerBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"kink\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"multiplierPerBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"cash\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"borrows\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserves\",\"type\":\"uint256\"}],\"name\":\"utilizationRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Compound\",\"methods\":{\"constructor\":{\"params\":{\"baseRatePerYear\":\"The approximate target base APR, as a mantissa (scaled by 1e18)\",\"jumpMultiplierPerYear\":\"The multiplierPerBlock after hitting a specified utilization point\",\"kink_\":\"The utilization point at which the jump multiplier is applied\",\"multiplierPerYear\":\"The rate of increase in interest rate wrt utilization (scaled by 1e18)\"}},\"getBorrowRate(uint256,uint256,uint256)\":{\"params\":{\"borrows\":\"The amount of borrows in the market\",\"cash\":\"The amount of cash in the market\",\"reserves\":\"The amount of reserves in the market\"},\"return\":\"The borrow rate percentage per block as a mantissa (scaled by 1e18)\"},\"getSupplyRate(uint256,uint256,uint256,uint256)\":{\"params\":{\"borrows\":\"The amount of borrows in the market\",\"cash\":\"The amount of cash in the market\",\"reserveFactorMantissa\":\"The current reserve factor for the market\",\"reserves\":\"The amount of reserves in the market\"},\"return\":\"The supply rate percentage per block as a mantissa (scaled by 1e18)\"},\"utilizationRate(uint256,uint256,uint256)\":{\"params\":{\"borrows\":\"The amount of borrows in the market\",\"cash\":\"The amount of cash in the market\",\"reserves\":\"The amount of reserves in the market (currently unused)\"},\"return\":\"The utilization rate as a mantissa between [0, 1e18]\"}},\"title\":\"Compound's JumpRateModel Contract\"},\"userdoc\":{\"methods\":{\"constructor\":\"Construct an interest rate model\",\"getBorrowRate(uint256,uint256,uint256)\":{\"notice\":\"Calculates the current borrow rate per block, with the error code expected by the market\"},\"getSupplyRate(uint256,uint256,uint256,uint256)\":{\"notice\":\"Calculates the current supply rate per block\"},\"utilizationRate(uint256,uint256,uint256)\":{\"notice\":\"Calculates the utilization rate of the market: `borrows / (cash + borrows - reserves)`\"}}}},\"settings\":{\"compilationTarget\":{\"contracts/JumpRateModel.sol\":\"JumpRateModel\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/InterestRateModel.sol\":{\"keccak256\":\"0x0cc0dbd1991e5dcdcff58b0c82a9471a0fb9df26763e5e7415e1d081b7332409\",\"urls\":[\"bzz-raw://f4d7936aefc43ea2724f0e472b8f1517f1ca40170258ab9d5bbd0862dd0c4f13\",\"dweb:/ipfs/QmfYjG1Sm3kNwbhomHCWhMqw9LvaJVWVzBe4Te5BHRbTQS\"]},\"contracts/JumpRateModel.sol\":{\"keccak256\":\"0x7dbb8a4541e39be73ae21c3da8781b4dfa5e8aaef3ccbf01a0b922556fb9a49c\",\"urls\":[\"bzz-raw://76aa2e2b23b88364281e20e2ab13b68231845dfceb1ee60472a76af8f68448a5\",\"dweb:/ipfs/QmaXcJS6qafCNSr6mP8qB3fYE8oRh4kSzxn4bgEvmimH8V\"]},\"contracts/SafeMath.sol\":{\"keccak256\":\"0x675b1178c34633ecc37124c254349c1d3fe239c7bd74a649eb55f54adafd2dee\",\"urls\":[\"bzz-raw://c55f6f93d24b0976189d8fcf4df706b04439041d43a1e4d289db440251f9bc2a\",\"dweb:/ipfs/QmUAsuvRZMJ4hvsxKF3ud5g93DBEbnaXnt7waJzziurC2S\"]}},\"version\":1}"}},"contracts/JumpRateModelV2.sol":{"JumpRateModelV2":{"abi":[{"inputs":[{"internalType":"uint256","name":"baseRatePerYear","type":"uint256"},{"internalType":"uint256","name":"multiplierPerYear","type":"uint256"},{"internalType":"uint256","name":"jumpMultiplierPerYear","type":"uint256"},{"internalType":"uint256","name":"kink_","type":"uint256"},{"internalType":"address","name":"owner_","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"baseRatePerBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"multiplierPerBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"jumpMultiplierPerBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"kink","type":"uint256"}],"name":"NewInterestParams","type":"event"},{"constant":true,"inputs":[],"name":"baseRatePerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"blocksPerYear","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"cash","type":"uint256"},{"internalType":"uint256","name":"borrows","type":"uint256"},{"internalType":"uint256","name":"reserves","type":"uint256"}],"name":"getBorrowRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"cash","type":"uint256"},{"internalType":"uint256","name":"borrows","type":"uint256"},{"internalType":"uint256","name":"reserves","type":"uint256"},{"internalType":"uint256","name":"reserveFactorMantissa","type":"uint256"}],"name":"getSupplyRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isInterestRateModel","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"jumpMultiplierPerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"kink","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"multiplierPerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"baseRatePerYear","type":"uint256"},{"internalType":"uint256","name":"multiplierPerYear","type":"uint256"},{"internalType":"uint256","name":"jumpMultiplierPerYear","type":"uint256"},{"internalType":"uint256","name":"kink_","type":"uint256"}],"name":"updateJumpRateModel","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"cash","type":"uint256"},{"internalType":"uint256","name":"borrows","type":"uint256"},{"internalType":"uint256","name":"reserves","type":"uint256"}],"name":"utilizationRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b50604051610a62380380610a62833981810160405260a081101561003357600080fd5b508051602082015160408301516060840151608090940151600080546001600160a01b0319166001600160a01b03831617905592939192909190848484848461007e8585858561008d565b505050505050505050506102bc565b6100a7622433948561017060201b6105bc1790919060201c565b6002556100f66100c562243394836101c1602090811b61056317901c565b6100e4670de0b6b3a7640000866101c160201b6105631790919060201c565b61017060201b6105bc1790919060201c565b6001556101118262243394610170602090811b6105bc17901c565b60038190556004829055600254600154604080519283526020830191909152818101929092526060810183905290517f6960ab234c7ef4b0c9197100f5393cfcde7c453ac910a27bd2000aa1dd4c068d9181900360800190a150505050565b60006101b883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061021a60201b60201c565b90505b92915050565b6000826101d0575060006101bb565b828202828482816101dd57fe5b04146101b85760405162461bcd60e51b8152600401808060200182810382526021815260200180610a416021913960400191505060405180910390fd5b600081836102a65760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561026b578181015183820152602001610253565b50505050905090810190601f1680156102985780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816102b257fe5b0495945050505050565b610776806102cb6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80638da5cb5b116100715780638da5cb5b14610167578063a385fb961461018b578063b816881614610193578063b9f9850a146101c2578063f14039de146101ca578063fd2da339146101d2576100a9565b806315f24053146100ae5780632037f3e7146100e95780632191f92a1461011a5780636e71e2d8146101365780638726bb891461015f575b600080fd5b6100d7600480360360608110156100c457600080fd5b50803590602081013590604001356101da565b60408051918252519081900360200190f35b610118600480360360808110156100ff57600080fd5b50803590602081013590604081013590606001356101f1565b005b61012261024c565b604080519115158252519081900360200190f35b6100d76004803603606081101561014c57600080fd5b5080359060208101359060400135610251565b6100d76102a7565b61016f6102ad565b604080516001600160a01b039092168252519081900360200190f35b6100d76102bc565b6100d7600480360360808110156101a957600080fd5b50803590602081013590604081013590606001356102c3565b6100d7610342565b6100d7610348565b6100d761034e565b60006101e7848484610354565b90505b9392505050565b6000546001600160a01b0316331461023a5760405162461bcd60e51b815260040180806020018281038252602681526020018061071c6026913960400191505060405180910390fd5b6102468484848461041d565b50505050565b600181565b600082610260575060006101ea565b6101e761028383610277878763ffffffff6104be16565b9063ffffffff61052116565b61029b85670de0b6b3a764000063ffffffff61056316565b9063ffffffff6105bc16565b60015481565b6000546001600160a01b031681565b6224339481565b6000806102de670de0b6b3a76400008463ffffffff61052116565b905060006102ed878787610354565b9050600061030d670de0b6b3a764000061029b848663ffffffff61056316565b9050610336670de0b6b3a764000061029b8361032a8c8c8c610251565b9063ffffffff61056316565b98975050505050505050565b60035481565b60025481565b60045481565b600080610362858585610251565b905060045481116103a8576103a0600254610394670de0b6b3a764000061029b6001548661056390919063ffffffff16565b9063ffffffff6104be16565b9150506101ea565b60006103d3600254610394670de0b6b3a764000061029b60015460045461056390919063ffffffff16565b905060006103ec6004548461052190919063ffffffff16565b905061041382610394670de0b6b3a764000061029b6003548661056390919063ffffffff16565b93505050506101ea565b610430846224339463ffffffff6105bc16565b600255610449610283622433948363ffffffff61056316565b60015561045f826224339463ffffffff6105bc16565b60038190556004829055600254600154604080519283526020830191909152818101929092526060810183905290517f6960ab234c7ef4b0c9197100f5393cfcde7c453ac910a27bd2000aa1dd4c068d9181900360800190a150505050565b600082820183811015610518576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b90505b92915050565b600061051883836040518060400160405280601f81526020017f536166654d6174683a207375627472616374696f6e20756e646572666c6f77008152506105fe565b6000826105725750600061051b565b8282028284828161057f57fe5b04146105185760405162461bcd60e51b81526004018080602001828103825260218152602001806106fb6021913960400191505060405180910390fd5b600061051883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610695565b6000818484111561068d5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561065257818101518382015260200161063a565b50505050905090810190601f16801561067f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600081836106e45760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561065257818101518382015260200161063a565b5060008385816106f057fe5b049594505050505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f776f6e6c7920746865206f776e6572206d61792063616c6c20746869732066756e6374696f6e2ea265627a7a72315820a80fcb7e9b888f12890a712f833ee50d658ff8eb415aa18ab0f240047786ce4d64736f6c63430005110032536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xA62 CODESIZE SUB DUP1 PUSH2 0xA62 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x60 DUP5 ADD MLOAD PUSH1 0x80 SWAP1 SWAP5 ADD MLOAD PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND OR SWAP1 SSTORE SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 DUP5 DUP5 DUP5 DUP5 DUP5 PUSH2 0x7E DUP6 DUP6 DUP6 DUP6 PUSH2 0x8D JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP PUSH2 0x2BC JUMP JUMPDEST PUSH2 0xA7 PUSH3 0x243394 DUP6 PUSH2 0x170 PUSH1 0x20 SHL PUSH2 0x5BC OR SWAP1 SWAP2 SWAP1 PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x2 SSTORE PUSH2 0xF6 PUSH2 0xC5 PUSH3 0x243394 DUP4 PUSH2 0x1C1 PUSH1 0x20 SWAP1 DUP2 SHL PUSH2 0x563 OR SWAP1 SHR JUMP JUMPDEST PUSH2 0xE4 PUSH8 0xDE0B6B3A7640000 DUP7 PUSH2 0x1C1 PUSH1 0x20 SHL PUSH2 0x563 OR SWAP1 SWAP2 SWAP1 PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x170 PUSH1 0x20 SHL PUSH2 0x5BC OR SWAP1 SWAP2 SWAP1 PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x1 SSTORE PUSH2 0x111 DUP3 PUSH3 0x243394 PUSH2 0x170 PUSH1 0x20 SWAP1 DUP2 SHL PUSH2 0x5BC OR SWAP1 SHR JUMP JUMPDEST PUSH1 0x3 DUP2 SWAP1 SSTORE PUSH1 0x4 DUP3 SWAP1 SSTORE PUSH1 0x2 SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD PUSH32 0x6960AB234C7EF4B0C9197100F5393CFCDE7C453AC910A27BD2000AA1DD4C068D SWAP2 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B8 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x21A PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1D0 JUMPI POP PUSH1 0x0 PUSH2 0x1BB JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x1DD JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x1B8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xA41 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x2A6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x26B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x253 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x298 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x2B2 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x776 DUP1 PUSH2 0x2CB 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 0xA9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x167 JUMPI DUP1 PUSH4 0xA385FB96 EQ PUSH2 0x18B JUMPI DUP1 PUSH4 0xB8168816 EQ PUSH2 0x193 JUMPI DUP1 PUSH4 0xB9F9850A EQ PUSH2 0x1C2 JUMPI DUP1 PUSH4 0xF14039DE EQ PUSH2 0x1CA JUMPI DUP1 PUSH4 0xFD2DA339 EQ PUSH2 0x1D2 JUMPI PUSH2 0xA9 JUMP JUMPDEST DUP1 PUSH4 0x15F24053 EQ PUSH2 0xAE JUMPI DUP1 PUSH4 0x2037F3E7 EQ PUSH2 0xE9 JUMPI DUP1 PUSH4 0x2191F92A EQ PUSH2 0x11A JUMPI DUP1 PUSH4 0x6E71E2D8 EQ PUSH2 0x136 JUMPI DUP1 PUSH4 0x8726BB89 EQ PUSH2 0x15F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD7 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xC4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x1DA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x118 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0xFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x1F1 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x122 PUSH2 0x24C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xD7 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x14C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x251 JUMP JUMPDEST PUSH2 0xD7 PUSH2 0x2A7 JUMP JUMPDEST PUSH2 0x16F PUSH2 0x2AD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xD7 PUSH2 0x2BC JUMP JUMPDEST PUSH2 0xD7 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x1A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x2C3 JUMP JUMPDEST PUSH2 0xD7 PUSH2 0x342 JUMP JUMPDEST PUSH2 0xD7 PUSH2 0x348 JUMP JUMPDEST PUSH2 0xD7 PUSH2 0x34E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E7 DUP5 DUP5 DUP5 PUSH2 0x354 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x23A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x71C PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x246 DUP5 DUP5 DUP5 DUP5 PUSH2 0x41D JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x260 JUMPI POP PUSH1 0x0 PUSH2 0x1EA JUMP JUMPDEST PUSH2 0x1E7 PUSH2 0x283 DUP4 PUSH2 0x277 DUP8 DUP8 PUSH4 0xFFFFFFFF PUSH2 0x4BE AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x521 AND JUMP JUMPDEST PUSH2 0x29B DUP6 PUSH8 0xDE0B6B3A7640000 PUSH4 0xFFFFFFFF PUSH2 0x563 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x5BC AND JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH3 0x243394 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2DE PUSH8 0xDE0B6B3A7640000 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x521 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2ED DUP8 DUP8 DUP8 PUSH2 0x354 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x30D PUSH8 0xDE0B6B3A7640000 PUSH2 0x29B DUP5 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x563 AND JUMP JUMPDEST SWAP1 POP PUSH2 0x336 PUSH8 0xDE0B6B3A7640000 PUSH2 0x29B DUP4 PUSH2 0x32A DUP13 DUP13 DUP13 PUSH2 0x251 JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x563 AND JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x362 DUP6 DUP6 DUP6 PUSH2 0x251 JUMP JUMPDEST SWAP1 POP PUSH1 0x4 SLOAD DUP2 GT PUSH2 0x3A8 JUMPI PUSH2 0x3A0 PUSH1 0x2 SLOAD PUSH2 0x394 PUSH8 0xDE0B6B3A7640000 PUSH2 0x29B PUSH1 0x1 SLOAD DUP7 PUSH2 0x563 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x4BE AND JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1EA JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3D3 PUSH1 0x2 SLOAD PUSH2 0x394 PUSH8 0xDE0B6B3A7640000 PUSH2 0x29B PUSH1 0x1 SLOAD PUSH1 0x4 SLOAD PUSH2 0x563 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3EC PUSH1 0x4 SLOAD DUP5 PUSH2 0x521 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x413 DUP3 PUSH2 0x394 PUSH8 0xDE0B6B3A7640000 PUSH2 0x29B PUSH1 0x3 SLOAD DUP7 PUSH2 0x563 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP4 POP POP POP POP PUSH2 0x1EA JUMP JUMPDEST PUSH2 0x430 DUP5 PUSH3 0x243394 PUSH4 0xFFFFFFFF PUSH2 0x5BC AND JUMP JUMPDEST PUSH1 0x2 SSTORE PUSH2 0x449 PUSH2 0x283 PUSH3 0x243394 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x563 AND JUMP JUMPDEST PUSH1 0x1 SSTORE PUSH2 0x45F DUP3 PUSH3 0x243394 PUSH4 0xFFFFFFFF PUSH2 0x5BC AND JUMP JUMPDEST PUSH1 0x3 DUP2 SWAP1 SSTORE PUSH1 0x4 DUP3 SWAP1 SSTORE PUSH1 0x2 SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD PUSH32 0x6960AB234C7EF4B0C9197100F5393CFCDE7C453AC910A27BD2000AA1DD4C068D SWAP2 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x518 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x518 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1F DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E20756E646572666C6F7700 DUP2 MSTORE POP PUSH2 0x5FE JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x572 JUMPI POP PUSH1 0x0 PUSH2 0x51B JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x57F JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x518 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x6FB PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x518 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x695 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x68D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x652 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x63A JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x67F JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x6E4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x652 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x63A JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x6F0 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP INVALID MSTORE8 PUSH2 0x6665 0x4D PUSH2 0x7468 GASPRICE KECCAK256 PUSH14 0x756C7469706C69636174696F6E20 PUSH16 0x766572666C6F776F6E6C792074686520 PUSH16 0x776E6572206D61792063616C6C207468 PUSH10 0x732066756E6374696F6E 0x2E LOG2 PUSH6 0x627A7A723158 KECCAK256 0xA8 0xF 0xCB PUSH31 0x9B888F12890A712F833EE50D658FF8EB415AA18AB0F240047786CE4D64736F PUSH13 0x63430005110032536166654D61 PUSH21 0x683A206D756C7469706C69636174696F6E206F7665 PUSH19 0x666C6F77000000000000000000000000000000 ","sourceMap":"228:790:28:-;;;797:219;8:9:-1;5:2;;;30:1;27;20:12;5:2;797:219:28;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;797:219:28;;;;;;;;;;;;;;;;;;;2045:5:0;:14;;-1:-1:-1;;;;;;2045:14:0;-1:-1:-1;;;;;2045:14:0;;;;;797:219:28;;;;;;;;;;;;2070:94:0;797:219:28;;;;2070:27:0;:94::i;:::-;1912:259;;;;;797:219:28;;;;;228:790;;5908:490:0;6069:34;748:7;6069:15;:19;;;;;;:34;;;;:::i;:::-;6050:16;:53;6134:59;6168:24;748:7;6186:5;6168:17;;;;;;;:24;;:::i;:::-;6135:27;6157:4;6135:17;:21;;;;;;:27;;;;:::i;:::-;6134:33;;;;;;:59;;;;:::i;:::-;6113:18;:80;6228:40;:21;748:7;6228:25;;;;;;;:40;;:::i;:::-;6203:22;:65;;;6278:4;:12;;;6324:16;;6342:18;;6306:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5908:490;;;;:::o;4266:130:37:-;4324:7;4350:39;4354:1;4357;4350:39;;;;;;;;;;;;;;;;;:3;;;:39;;:::i;:::-;4343:46;;4266:130;;;;;:::o;2655:459::-;2713:7;2954:6;2950:45;;-1:-1:-1;2983:1:37;2976:8;;2950:45;3017:5;;;3021:1;3017;:5;:1;3040:5;;;;;:10;3032:56;;;;-1:-1:-1;;;3032:56:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4871:338;4957:7;5057:12;5050:5;5042:28;;;;-1:-1:-1;;;5042:28:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;5042:28:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5080:9;5096:1;5092;:5;;;;;;;4871:338;-1:-1:-1;;;;;4871:338:37:o;228:790:28:-;;;;;;;"},"deployedBytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100a95760003560e01c80638da5cb5b116100715780638da5cb5b14610167578063a385fb961461018b578063b816881614610193578063b9f9850a146101c2578063f14039de146101ca578063fd2da339146101d2576100a9565b806315f24053146100ae5780632037f3e7146100e95780632191f92a1461011a5780636e71e2d8146101365780638726bb891461015f575b600080fd5b6100d7600480360360608110156100c457600080fd5b50803590602081013590604001356101da565b60408051918252519081900360200190f35b610118600480360360808110156100ff57600080fd5b50803590602081013590604081013590606001356101f1565b005b61012261024c565b604080519115158252519081900360200190f35b6100d76004803603606081101561014c57600080fd5b5080359060208101359060400135610251565b6100d76102a7565b61016f6102ad565b604080516001600160a01b039092168252519081900360200190f35b6100d76102bc565b6100d7600480360360808110156101a957600080fd5b50803590602081013590604081013590606001356102c3565b6100d7610342565b6100d7610348565b6100d761034e565b60006101e7848484610354565b90505b9392505050565b6000546001600160a01b0316331461023a5760405162461bcd60e51b815260040180806020018281038252602681526020018061071c6026913960400191505060405180910390fd5b6102468484848461041d565b50505050565b600181565b600082610260575060006101ea565b6101e761028383610277878763ffffffff6104be16565b9063ffffffff61052116565b61029b85670de0b6b3a764000063ffffffff61056316565b9063ffffffff6105bc16565b60015481565b6000546001600160a01b031681565b6224339481565b6000806102de670de0b6b3a76400008463ffffffff61052116565b905060006102ed878787610354565b9050600061030d670de0b6b3a764000061029b848663ffffffff61056316565b9050610336670de0b6b3a764000061029b8361032a8c8c8c610251565b9063ffffffff61056316565b98975050505050505050565b60035481565b60025481565b60045481565b600080610362858585610251565b905060045481116103a8576103a0600254610394670de0b6b3a764000061029b6001548661056390919063ffffffff16565b9063ffffffff6104be16565b9150506101ea565b60006103d3600254610394670de0b6b3a764000061029b60015460045461056390919063ffffffff16565b905060006103ec6004548461052190919063ffffffff16565b905061041382610394670de0b6b3a764000061029b6003548661056390919063ffffffff16565b93505050506101ea565b610430846224339463ffffffff6105bc16565b600255610449610283622433948363ffffffff61056316565b60015561045f826224339463ffffffff6105bc16565b60038190556004829055600254600154604080519283526020830191909152818101929092526060810183905290517f6960ab234c7ef4b0c9197100f5393cfcde7c453ac910a27bd2000aa1dd4c068d9181900360800190a150505050565b600082820183811015610518576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b90505b92915050565b600061051883836040518060400160405280601f81526020017f536166654d6174683a207375627472616374696f6e20756e646572666c6f77008152506105fe565b6000826105725750600061051b565b8282028284828161057f57fe5b04146105185760405162461bcd60e51b81526004018080602001828103825260218152602001806106fb6021913960400191505060405180910390fd5b600061051883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610695565b6000818484111561068d5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561065257818101518382015260200161063a565b50505050905090810190601f16801561067f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600081836106e45760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561065257818101518382015260200161063a565b5060008385816106f057fe5b049594505050505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f776f6e6c7920746865206f776e6572206d61792063616c6c20746869732066756e6374696f6e2ea265627a7a72315820a80fcb7e9b888f12890a712f833ee50d658ff8eb415aa18ab0f240047786ce4d64736f6c63430005110032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x167 JUMPI DUP1 PUSH4 0xA385FB96 EQ PUSH2 0x18B JUMPI DUP1 PUSH4 0xB8168816 EQ PUSH2 0x193 JUMPI DUP1 PUSH4 0xB9F9850A EQ PUSH2 0x1C2 JUMPI DUP1 PUSH4 0xF14039DE EQ PUSH2 0x1CA JUMPI DUP1 PUSH4 0xFD2DA339 EQ PUSH2 0x1D2 JUMPI PUSH2 0xA9 JUMP JUMPDEST DUP1 PUSH4 0x15F24053 EQ PUSH2 0xAE JUMPI DUP1 PUSH4 0x2037F3E7 EQ PUSH2 0xE9 JUMPI DUP1 PUSH4 0x2191F92A EQ PUSH2 0x11A JUMPI DUP1 PUSH4 0x6E71E2D8 EQ PUSH2 0x136 JUMPI DUP1 PUSH4 0x8726BB89 EQ PUSH2 0x15F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD7 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xC4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x1DA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x118 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0xFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x1F1 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x122 PUSH2 0x24C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xD7 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x14C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x251 JUMP JUMPDEST PUSH2 0xD7 PUSH2 0x2A7 JUMP JUMPDEST PUSH2 0x16F PUSH2 0x2AD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xD7 PUSH2 0x2BC JUMP JUMPDEST PUSH2 0xD7 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x1A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x2C3 JUMP JUMPDEST PUSH2 0xD7 PUSH2 0x342 JUMP JUMPDEST PUSH2 0xD7 PUSH2 0x348 JUMP JUMPDEST PUSH2 0xD7 PUSH2 0x34E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E7 DUP5 DUP5 DUP5 PUSH2 0x354 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x23A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x71C PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x246 DUP5 DUP5 DUP5 DUP5 PUSH2 0x41D JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x260 JUMPI POP PUSH1 0x0 PUSH2 0x1EA JUMP JUMPDEST PUSH2 0x1E7 PUSH2 0x283 DUP4 PUSH2 0x277 DUP8 DUP8 PUSH4 0xFFFFFFFF PUSH2 0x4BE AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x521 AND JUMP JUMPDEST PUSH2 0x29B DUP6 PUSH8 0xDE0B6B3A7640000 PUSH4 0xFFFFFFFF PUSH2 0x563 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x5BC AND JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH3 0x243394 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2DE PUSH8 0xDE0B6B3A7640000 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x521 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2ED DUP8 DUP8 DUP8 PUSH2 0x354 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x30D PUSH8 0xDE0B6B3A7640000 PUSH2 0x29B DUP5 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x563 AND JUMP JUMPDEST SWAP1 POP PUSH2 0x336 PUSH8 0xDE0B6B3A7640000 PUSH2 0x29B DUP4 PUSH2 0x32A DUP13 DUP13 DUP13 PUSH2 0x251 JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x563 AND JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x362 DUP6 DUP6 DUP6 PUSH2 0x251 JUMP JUMPDEST SWAP1 POP PUSH1 0x4 SLOAD DUP2 GT PUSH2 0x3A8 JUMPI PUSH2 0x3A0 PUSH1 0x2 SLOAD PUSH2 0x394 PUSH8 0xDE0B6B3A7640000 PUSH2 0x29B PUSH1 0x1 SLOAD DUP7 PUSH2 0x563 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x4BE AND JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1EA JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3D3 PUSH1 0x2 SLOAD PUSH2 0x394 PUSH8 0xDE0B6B3A7640000 PUSH2 0x29B PUSH1 0x1 SLOAD PUSH1 0x4 SLOAD PUSH2 0x563 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3EC PUSH1 0x4 SLOAD DUP5 PUSH2 0x521 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x413 DUP3 PUSH2 0x394 PUSH8 0xDE0B6B3A7640000 PUSH2 0x29B PUSH1 0x3 SLOAD DUP7 PUSH2 0x563 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP4 POP POP POP POP PUSH2 0x1EA JUMP JUMPDEST PUSH2 0x430 DUP5 PUSH3 0x243394 PUSH4 0xFFFFFFFF PUSH2 0x5BC AND JUMP JUMPDEST PUSH1 0x2 SSTORE PUSH2 0x449 PUSH2 0x283 PUSH3 0x243394 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x563 AND JUMP JUMPDEST PUSH1 0x1 SSTORE PUSH2 0x45F DUP3 PUSH3 0x243394 PUSH4 0xFFFFFFFF PUSH2 0x5BC AND JUMP JUMPDEST PUSH1 0x3 DUP2 SWAP1 SSTORE PUSH1 0x4 DUP3 SWAP1 SSTORE PUSH1 0x2 SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD PUSH32 0x6960AB234C7EF4B0C9197100F5393CFCDE7C453AC910A27BD2000AA1DD4C068D SWAP2 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x518 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x518 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1F DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E20756E646572666C6F7700 DUP2 MSTORE POP PUSH2 0x5FE JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x572 JUMPI POP PUSH1 0x0 PUSH2 0x51B JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x57F JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x518 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x6FB PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x518 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x695 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x68D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x652 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x63A JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x67F JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x6E4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x652 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x63A JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x6F0 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP INVALID MSTORE8 PUSH2 0x6665 0x4D PUSH2 0x7468 GASPRICE KECCAK256 PUSH14 0x756C7469706C69636174696F6E20 PUSH16 0x766572666C6F776F6E6C792074686520 PUSH16 0x776E6572206D61792063616C6C207468 PUSH10 0x732066756E6374696F6E 0x2E LOG2 PUSH6 0x627A7A723158 KECCAK256 0xA8 0xF 0xCB PUSH31 0x9B888F12890A712F833EE50D658FF8EB415AA18AB0F240047786CE4D64736F PUSH13 0x63430005110032000000000000 ","sourceMap":"228:790:28:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;228:790:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;629:162;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;629:162:28;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2679:315:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;2679:315:0;;;;;;;;;;;;;;;;;:::i;:::-;;224:47:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;3375:290:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3375:290:0;;;;;;;;;;;;:::i;905:30::-;;;:::i;568:20::-;;;:::i;:::-;;;;-1:-1:-1;;;;;568:20:0;;;;;;;;;;;;;;711:44;;;:::i;4986:433::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;4986:433:0;;;;;;;;;;;;;;;;;:::i;1181:34::-;;;:::i;1048:28::-;;;:::i;1315:16::-;;;:::i;629:162:28:-;715:4;738:46;760:4;766:7;775:8;738:21;:46::i;:::-;731:53;;629:162;;;;;;:::o;2679:315:0:-;2835:5;;-1:-1:-1;;;;;2835:5:0;2821:10;:19;2813:70;;;;-1:-1:-1;;;2813:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2894:93;2922:15;2939:17;2958:21;2981:5;2894:27;:93::i;:::-;2679:315;;;;:::o;224:47:26:-;267:4;224:47;:::o;3375:290:0:-;3461:4;3540:12;3536:51;;-1:-1:-1;3575:1:0;3568:8;;3536:51;3604:54;3626:31;3648:8;3626:17;:4;3635:7;3626:17;:8;:17;:::i;:::-;:21;:31;:21;:31;:::i;:::-;3604:17;:7;3616:4;3604:17;:11;:17;:::i;:::-;:21;:54;:21;:54;:::i;905:30::-;;;;:::o;568:20::-;;;-1:-1:-1;;;;;568:20:0;;:::o;711:44::-;748:7;711:44;:::o;4986:433::-;5098:4;;5143:37;5148:4;5158:21;5143:37;:14;:37;:::i;:::-;5114:66;;5190:15;5208:46;5230:4;5236:7;5245:8;5208:21;:46::i;:::-;5190:64;-1:-1:-1;5264:15:0;5282:47;5324:4;5282:37;5190:64;5297:21;5282:37;:14;:37;:::i;:47::-;5264:65;;5346:66;5407:4;5346:56;5391:10;5346:40;5362:4;5368:7;5377:8;5346:15;:40::i;:::-;:44;:56;:44;:56;:::i;:66::-;5339:73;4986:433;-1:-1:-1;;;;;;;;4986:433:0:o;1181:34::-;;;;:::o;1048:28::-;;;;:::o;1315:16::-;;;;:::o;4044:529::-;4138:4;4154:9;4166:40;4182:4;4188:7;4197:8;4166:15;:40::i;:::-;4154:52;;4229:4;;4221;:12;4217:350;;4256:60;4299:16;;4256:38;4289:4;4256:28;4265:18;;4256:4;:8;;:28;;;;:::i;:38::-;:42;:60;:42;:60;:::i;:::-;4249:67;;;;;4217:350;4347:15;4365:60;4408:16;;4365:38;4398:4;4365:28;4374:18;;4365:4;;:8;;:28;;;;:::i;:60::-;4347:78;;4439:15;4457:14;4466:4;;4457;:8;;:14;;;;:::i;:::-;4439:32;;4492:64;4545:10;4492:48;4535:4;4492:38;4507:22;;4492:10;:14;;:38;;;;:::i;:64::-;4485:71;;;;;;;5908:490;6069:34;:15;748:7;6069:34;:19;:34;:::i;:::-;6050:16;:53;6134:59;6168:24;748:7;6186:5;6168:24;:17;:24;:::i;6134:59::-;6113:18;:80;6228:40;:21;748:7;6228:40;:25;:40;:::i;:::-;6203:22;:65;;;6278:4;:12;;;6324:16;;6342:18;;6306:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5908:490;;;;:::o;958:176:37:-;1016:7;1047:5;;;1070:6;;;;1062:46;;;;;-1:-1:-1;;;1062:46:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;1126:1;-1:-1:-1;958:176:37;;;;;:::o;1821:135::-;1879:7;1905:44;1909:1;1912;1905:44;;;;;;;;;;;;;;;;;:3;:44::i;2655:459::-;2713:7;2954:6;2950:45;;-1:-1:-1;2983:1:37;2976:8;;2950:45;3017:5;;;3021:1;3017;:5;:1;3040:5;;;;;:10;3032:56;;;;-1:-1:-1;;;3032:56:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4266:130;4324:7;4350:39;4354:1;4357;4350:39;;;;;;;;;;;;;;;;;:3;:39::i;2235:187::-;2321:7;2356:12;2348:6;;;;2340:29;;;;-1:-1:-1;;;2340:29:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2340:29:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2391:5:37;;;2235:187::o;4871:338::-;4957:7;5057:12;5050:5;5042:28;;;;-1:-1:-1;;;5042:28:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;5042:28:37;;5080:9;5096:1;5092;:5;;;;;;;4871:338;-1:-1:-1;;;;;4871:338:37:o"},"methodIdentifiers":{"baseRatePerBlock()":"f14039de","blocksPerYear()":"a385fb96","getBorrowRate(uint256,uint256,uint256)":"15f24053","getSupplyRate(uint256,uint256,uint256,uint256)":"b8168816","isInterestRateModel()":"2191f92a","jumpMultiplierPerBlock()":"b9f9850a","kink()":"fd2da339","multiplierPerBlock()":"8726bb89","owner()":"8da5cb5b","updateJumpRateModel(uint256,uint256,uint256,uint256)":"2037f3e7","utilizationRate(uint256,uint256,uint256)":"6e71e2d8"}},"metadata":"{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"baseRatePerYear\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"multiplierPerYear\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"jumpMultiplierPerYear\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"kink_\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner_\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"baseRatePerBlock\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"multiplierPerBlock\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"jumpMultiplierPerBlock\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"kink\",\"type\":\"uint256\"}],\"name\":\"NewInterestParams\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"baseRatePerBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"blocksPerYear\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"cash\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"borrows\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserves\",\"type\":\"uint256\"}],\"name\":\"getBorrowRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"cash\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"borrows\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserves\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveFactorMantissa\",\"type\":\"uint256\"}],\"name\":\"getSupplyRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isInterestRateModel\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"jumpMultiplierPerBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"kink\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"multiplierPerBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"baseRatePerYear\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"multiplierPerYear\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"jumpMultiplierPerYear\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"kink_\",\"type\":\"uint256\"}],\"name\":\"updateJumpRateModel\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"cash\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"borrows\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserves\",\"type\":\"uint256\"}],\"name\":\"utilizationRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Arr00\",\"methods\":{\"getBorrowRate(uint256,uint256,uint256)\":{\"params\":{\"borrows\":\"The amount of borrows in the market\",\"cash\":\"The amount of cash in the market\",\"reserves\":\"The amount of reserves in the market\"},\"return\":\"The borrow rate percentage per block as a mantissa (scaled by 1e18)\"},\"getSupplyRate(uint256,uint256,uint256,uint256)\":{\"params\":{\"borrows\":\"The amount of borrows in the market\",\"cash\":\"The amount of cash in the market\",\"reserveFactorMantissa\":\"The current reserve factor for the market\",\"reserves\":\"The amount of reserves in the market\"},\"return\":\"The supply rate percentage per block as a mantissa (scaled by 1e18)\"},\"updateJumpRateModel(uint256,uint256,uint256,uint256)\":{\"params\":{\"baseRatePerYear\":\"The approximate target base APR, as a mantissa (scaled by 1e18)\",\"jumpMultiplierPerYear\":\"The multiplierPerBlock after hitting a specified utilization point\",\"kink_\":\"The utilization point at which the jump multiplier is applied\",\"multiplierPerYear\":\"The rate of increase in interest rate wrt utilization (scaled by 1e18)\"}},\"utilizationRate(uint256,uint256,uint256)\":{\"params\":{\"borrows\":\"The amount of borrows in the market\",\"cash\":\"The amount of cash in the market\",\"reserves\":\"The amount of reserves in the market (currently unused)\"},\"return\":\"The utilization rate as a mantissa between [0, 1e18]\"}},\"title\":\"Compound's JumpRateModel Contract V2 for V2 cTokens\"},\"userdoc\":{\"methods\":{\"getBorrowRate(uint256,uint256,uint256)\":{\"notice\":\"Calculates the current borrow rate per block\"},\"getSupplyRate(uint256,uint256,uint256,uint256)\":{\"notice\":\"Calculates the current supply rate per block\"},\"updateJumpRateModel(uint256,uint256,uint256,uint256)\":{\"notice\":\"Update the parameters of the interest rate model (only callable by owner, i.e. Timelock)\"},\"utilizationRate(uint256,uint256,uint256)\":{\"notice\":\"Calculates the utilization rate of the market: `borrows / (cash + borrows - reserves)`\"}},\"notice\":\"Supports only for V2 cTokens\"}},\"settings\":{\"compilationTarget\":{\"contracts/JumpRateModelV2.sol\":\"JumpRateModelV2\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/BaseJumpRateModelV2.sol\":{\"keccak256\":\"0xe7c1422988672e4dce8e015e5830c7fe28dc19063a520ecd9b4a50502f65d3d8\",\"urls\":[\"bzz-raw://96d9b19e0b2f3539af60ef24c37f3422b9d10526a76331663846572b430422bb\",\"dweb:/ipfs/Qmdan3L59NXjMpyxhQLtAxCEGKUVb9u95Yuqs4HdGyx7YA\"]},\"contracts/InterestRateModel.sol\":{\"keccak256\":\"0x0cc0dbd1991e5dcdcff58b0c82a9471a0fb9df26763e5e7415e1d081b7332409\",\"urls\":[\"bzz-raw://f4d7936aefc43ea2724f0e472b8f1517f1ca40170258ab9d5bbd0862dd0c4f13\",\"dweb:/ipfs/QmfYjG1Sm3kNwbhomHCWhMqw9LvaJVWVzBe4Te5BHRbTQS\"]},\"contracts/JumpRateModelV2.sol\":{\"keccak256\":\"0x8831e3520ef63fc8ade976c5333509f61d1655b31c76d3ac2bb3fd0aad4146fe\",\"urls\":[\"bzz-raw://3649ccca2bc85145ae90d08421200b0e1a29823b3f719845c25b8f7036e832d1\",\"dweb:/ipfs/QmWvzgmSFCMcQ9SdiH7bPu7MSpDn2KAGC9u67Ayft5DKAL\"]},\"contracts/SafeMath.sol\":{\"keccak256\":\"0x675b1178c34633ecc37124c254349c1d3fe239c7bd74a649eb55f54adafd2dee\",\"urls\":[\"bzz-raw://c55f6f93d24b0976189d8fcf4df706b04439041d43a1e4d289db440251f9bc2a\",\"dweb:/ipfs/QmUAsuvRZMJ4hvsxKF3ud5g93DBEbnaXnt7waJzziurC2S\"]}},\"version\":1}"}},"contracts/Lens/CompoundLens.sol":{"CompoundLens":{"abi":[{"constant":false,"inputs":[{"internalType":"contract CToken","name":"cToken","type":"address"},{"internalType":"address payable","name":"account","type":"address"}],"name":"cTokenBalances","outputs":[{"components":[{"internalType":"address","name":"cToken","type":"address"},{"internalType":"uint256","name":"balanceOf","type":"uint256"},{"internalType":"uint256","name":"borrowBalanceCurrent","type":"uint256"},{"internalType":"uint256","name":"balanceOfUnderlying","type":"uint256"},{"internalType":"uint256","name":"tokenBalance","type":"uint256"},{"internalType":"uint256","name":"tokenAllowance","type":"uint256"}],"internalType":"struct CompoundLens.CTokenBalances","name":"","type":"tuple"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"contract CToken[]","name":"cTokens","type":"address[]"},{"internalType":"address payable","name":"account","type":"address"}],"name":"cTokenBalancesAll","outputs":[{"components":[{"internalType":"address","name":"cToken","type":"address"},{"internalType":"uint256","name":"balanceOf","type":"uint256"},{"internalType":"uint256","name":"borrowBalanceCurrent","type":"uint256"},{"internalType":"uint256","name":"balanceOfUnderlying","type":"uint256"},{"internalType":"uint256","name":"tokenBalance","type":"uint256"},{"internalType":"uint256","name":"tokenAllowance","type":"uint256"}],"internalType":"struct CompoundLens.CTokenBalances[]","name":"","type":"tuple[]"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"contract CToken","name":"cToken","type":"address"}],"name":"cTokenMetadata","outputs":[{"components":[{"internalType":"address","name":"cToken","type":"address"},{"internalType":"uint256","name":"exchangeRateCurrent","type":"uint256"},{"internalType":"uint256","name":"supplyRatePerBlock","type":"uint256"},{"internalType":"uint256","name":"borrowRatePerBlock","type":"uint256"},{"internalType":"uint256","name":"reserveFactorMantissa","type":"uint256"},{"internalType":"uint256","name":"totalBorrows","type":"uint256"},{"internalType":"uint256","name":"totalReserves","type":"uint256"},{"internalType":"uint256","name":"totalSupply","type":"uint256"},{"internalType":"uint256","name":"totalCash","type":"uint256"},{"internalType":"bool","name":"isListed","type":"bool"},{"internalType":"uint256","name":"collateralFactorMantissa","type":"uint256"},{"internalType":"address","name":"underlyingAssetAddress","type":"address"},{"internalType":"uint256","name":"cTokenDecimals","type":"uint256"},{"internalType":"uint256","name":"underlyingDecimals","type":"uint256"}],"internalType":"struct CompoundLens.CTokenMetadata","name":"","type":"tuple"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"contract CToken[]","name":"cTokens","type":"address[]"}],"name":"cTokenMetadataAll","outputs":[{"components":[{"internalType":"address","name":"cToken","type":"address"},{"internalType":"uint256","name":"exchangeRateCurrent","type":"uint256"},{"internalType":"uint256","name":"supplyRatePerBlock","type":"uint256"},{"internalType":"uint256","name":"borrowRatePerBlock","type":"uint256"},{"internalType":"uint256","name":"reserveFactorMantissa","type":"uint256"},{"internalType":"uint256","name":"totalBorrows","type":"uint256"},{"internalType":"uint256","name":"totalReserves","type":"uint256"},{"internalType":"uint256","name":"totalSupply","type":"uint256"},{"internalType":"uint256","name":"totalCash","type":"uint256"},{"internalType":"bool","name":"isListed","type":"bool"},{"internalType":"uint256","name":"collateralFactorMantissa","type":"uint256"},{"internalType":"address","name":"underlyingAssetAddress","type":"address"},{"internalType":"uint256","name":"cTokenDecimals","type":"uint256"},{"internalType":"uint256","name":"underlyingDecimals","type":"uint256"}],"internalType":"struct CompoundLens.CTokenMetadata[]","name":"","type":"tuple[]"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"contract CToken","name":"cToken","type":"address"}],"name":"cTokenUnderlyingPrice","outputs":[{"components":[{"internalType":"address","name":"cToken","type":"address"},{"internalType":"uint256","name":"underlyingPrice","type":"uint256"}],"internalType":"struct CompoundLens.CTokenUnderlyingPrice","name":"","type":"tuple"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"contract CToken[]","name":"cTokens","type":"address[]"}],"name":"cTokenUnderlyingPriceAll","outputs":[{"components":[{"internalType":"address","name":"cToken","type":"address"},{"internalType":"uint256","name":"underlyingPrice","type":"uint256"}],"internalType":"struct CompoundLens.CTokenUnderlyingPrice[]","name":"","type":"tuple[]"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"contract Comptroller","name":"comptroller","type":"address"},{"internalType":"address","name":"account","type":"address"}],"name":"getAccountLimits","outputs":[{"components":[{"internalType":"contract CToken[]","name":"markets","type":"address[]"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"shortfall","type":"uint256"}],"internalType":"struct CompoundLens.AccountLimits","name":"","type":"tuple"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"contract Comp","name":"comp","type":"address"},{"internalType":"address","name":"account","type":"address"}],"name":"getCompBalanceMetadata","outputs":[{"components":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"votes","type":"uint256"},{"internalType":"address","name":"delegate","type":"address"}],"internalType":"struct CompoundLens.CompBalanceMetadata","name":"","type":"tuple"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"contract Comp","name":"comp","type":"address"},{"internalType":"address","name":"account","type":"address"},{"internalType":"uint32[]","name":"blockNumbers","type":"uint32[]"}],"name":"getCompVotes","outputs":[{"components":[{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"uint256","name":"votes","type":"uint256"}],"internalType":"struct CompoundLens.CompVotes[]","name":"","type":"tuple[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"contract GovernorAlpha","name":"governor","type":"address"},{"internalType":"uint256[]","name":"proposalIds","type":"uint256[]"}],"name":"getGovProposals","outputs":[{"components":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"address","name":"proposer","type":"address"},{"internalType":"uint256","name":"eta","type":"uint256"},{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"string[]","name":"signatures","type":"string[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"uint256","name":"startBlock","type":"uint256"},{"internalType":"uint256","name":"endBlock","type":"uint256"},{"internalType":"uint256","name":"forVotes","type":"uint256"},{"internalType":"uint256","name":"againstVotes","type":"uint256"},{"internalType":"bool","name":"canceled","type":"bool"},{"internalType":"bool","name":"executed","type":"bool"}],"internalType":"struct CompoundLens.GovProposal[]","name":"","type":"tuple[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"contract GovernorAlpha","name":"governor","type":"address"},{"internalType":"address","name":"voter","type":"address"},{"internalType":"uint256[]","name":"proposalIds","type":"uint256[]"}],"name":"getGovReceipts","outputs":[{"components":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"bool","name":"hasVoted","type":"bool"},{"internalType":"bool","name":"support","type":"bool"},{"internalType":"uint96","name":"votes","type":"uint96"}],"internalType":"struct CompoundLens.GovReceipt[]","name":"","type":"tuple[]"}],"payable":false,"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b50613008806100206000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063595642191161007157806359564219146101575780637dd8f6d9146101775780639699486914610197578063995ed99f146101b7578063bdf950c9146101d7578063c5ae5934146101f7576100a9565b80630972bf8b146100ae578063158eca8b146100d75780632b2d5ed6146100f7578063416405d7146101175780634b70d84b14610137575b600080fd5b6100c16100bc366004612075565b610217565b6040516100ce9190612d88565b60405180910390f35b6100ea6100e5366004612137565b6102ba565b6040516100ce9190612e1b565b61010a610105366004612034565b610a3e565b6040516100ce9190612daa565b61012a610125366004612155565b610ada565b6040516100ce9190612e38565b61014a610145366004612034565b610c83565b6040516100ce9190612d99565b61016a610165366004612185565b610d14565b6040516100ce9190612dbb565b61018a610185366004612155565b610e6c565b6040516100ce9190612dfc565b6101aa6101a5366004612264565b610fa8565b6040516100ce9190612dcc565b6101ca6101c536600461220a565b611164565b6040516100ce9190612ddd565b6101ea6101e5366004612155565b6112be565b6040516100ce9190612e0d565b61020a610205366004612137565b61165e565b6040516100ce9190612e2a565b6040805183815260208085028201019091526060908390829082801561025757816020015b61024461196f565b81526020019060019003908161023c5790505b50905060005b828110156102ae5761028f87878381811061027457fe5b90506020020160206102899190810190612137565b866112be565b82828151811061029b57fe5b602090810291909101015260010161025d565b509150505b9392505050565b6102c26119ae565b6000826001600160a01b031663bd6d894d6040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156102ff57600080fd5b505af1158015610313573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610337919081019061230b565b90506000836001600160a01b0316635fe3b5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561037457600080fd5b505afa158015610388573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506103ac91908101906121ec565b9050600080826001600160a01b0316638e8f294b876040518263ffffffff1660e01b81526004016103dd9190612d36565b604080518083038186803b1580156103f457600080fd5b505afa158015610408573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061042c91908101906120fd565b915091506000806104cd886001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b15801561046f57600080fd5b505afa158015610483573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104ab91908101906122b9565b604051806040016040528060048152602001630c68aa8960e31b8152506117f0565b156104de575060009050601261063e565b6000889050806001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561051c57600080fd5b505afa158015610530573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506105549190810190611f52565b9250806001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561058f57600080fd5b505afa1580156105a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506105c79190810190611f52565b6001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156105ff57600080fd5b505afa158015610613573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610637919081019061244e565b60ff169150505b604051806101c00160405280896001600160a01b03168152602001878152602001896001600160a01b031663ae9d70b06040518163ffffffff1660e01b815260040160206040518083038186803b15801561069857600080fd5b505afa1580156106ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506106d0919081019061230b565b8152602001896001600160a01b031663f8f9da286040518163ffffffff1660e01b815260040160206040518083038186803b15801561070e57600080fd5b505afa158015610722573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610746919081019061230b565b8152602001896001600160a01b031663173b99046040518163ffffffff1660e01b815260040160206040518083038186803b15801561078457600080fd5b505afa158015610798573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506107bc919081019061230b565b8152602001896001600160a01b03166347bd37186040518163ffffffff1660e01b815260040160206040518083038186803b1580156107fa57600080fd5b505afa15801561080e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610832919081019061230b565b8152602001896001600160a01b0316638f840ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561087057600080fd5b505afa158015610884573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108a8919081019061230b565b8152602001896001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156108e657600080fd5b505afa1580156108fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061091e919081019061230b565b8152602001896001600160a01b0316633b1d21a26040518163ffffffff1660e01b815260040160206040518083038186803b15801561095c57600080fd5b505afa158015610970573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610994919081019061230b565b81526020018515158152602001848152602001836001600160a01b03168152602001896001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156109ef57600080fd5b505afa158015610a03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a27919081019061244e565b60ff16815260200191909152979650505050505050565b60408051828152602080840282010190915260609082908290828015610a7e57816020015b610a6b611a31565b815260200190600190039081610a635790505b50905060005b82811015610acf57610ab0868683818110610a9b57fe5b90506020020160206102059190810190612137565b828281518110610abc57fe5b6020908102919091010152600101610a84565b509150505b92915050565b610ae2611a48565b6040805160608101918290526370a0823160e01b909152806001600160a01b0385166370a08231610b168660648501612d36565b60206040518083038186803b158015610b2e57600080fd5b505afa158015610b42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b66919081019061230b565b8152602001846001600160a01b031663b4b5ea57856040518263ffffffff1660e01b8152600401610b979190612d36565b60206040518083038186803b158015610baf57600080fd5b505afa158015610bc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610be7919081019061246c565b6001600160601b03168152602001846001600160a01b031663587cde1e856040518263ffffffff1660e01b8152600401610c219190612d36565b60206040518083038186803b158015610c3957600080fd5b505afa158015610c4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c719190810190611f52565b6001600160a01b031690529392505050565b60408051828152602080840282010190915260609082908290828015610cc357816020015b610cb06119ae565b815260200190600190039081610ca85790505b50905060005b82811015610acf57610cf5868683818110610ce057fe5b90506020020160206100e59190810190612137565b828281518110610d0157fe5b6020908102919091010152600101610cc9565b60608083839050604051908082528060200260200182016040528015610d5457816020015b610d41611a72565b815260200190600190039081610d395790505b50905060005b83811015610e62576040518060400160405280868684818110610d7957fe5b9050602002016020610d8e9190810190612430565b63ffffffff168152602001886001600160a01b031663782d6fe189898987818110610db557fe5b9050602002016020610dca9190810190612430565b6040518363ffffffff1660e01b8152600401610de7929190612d6d565b60206040518083038186803b158015610dff57600080fd5b505afa158015610e13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e37919081019061246c565b6001600160601b0316815250828281518110610e4f57fe5b6020908102919091010152600101610d5a565b5095945050505050565b610e74611a8c565b6000806000856001600160a01b0316635ec88c79866040518263ffffffff1660e01b8152600401610ea59190612d36565b60606040518083038186803b158015610ebd57600080fd5b505afa158015610ed1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ef591908101906123ed565b92509250925082600014610f0857600080fd5b604080516060810191829052632aff3bff60e21b909152806001600160a01b03881663abfceffc610f3c8960648501612d36565b60006040518083038186803b158015610f5457600080fd5b505afa158015610f68573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f9091908101906120c9565b81526020810193909352604090920152949350505050565b60608083839050604051908082528060200260200182016040528015610fe857816020015b610fd5611aad565b815260200190600190039081610fcd5790505b50905060005b8381101561115b57606080606080896001600160a01b031663328dd9828a8a8881811061101757fe5b905060200201356040518263ffffffff1660e01b815260040161103a9190612e46565b60006040518083038186803b15801561105257600080fd5b505afa158015611066573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261108e9190810190611f78565b9350935093509350604051806101a001604052806000815260200160006001600160a01b0316815260200160008152602001858152602001848152602001838152602001828152602001600081526020016000815260200160008152602001600081526020016000151581526020016000151581525086868151811061111057fe5b602002602001018190525061114b86868151811061112a57fe5b60200260200101518b8b8b8981811061113f57fe5b90506020020135611849565b505060019092019150610fee9050565b50949350505050565b60606000825190506060816040519080825280602002602001820160405280156111a857816020015b611195611b22565b81526020019060019003908161118d5790505b50905060005b828110156102ae576111be611b49565b876001600160a01b031663e23a9a528784815181106111d957fe5b6020026020010151896040518363ffffffff1660e01b81526004016111ff929190612e54565b60606040518083038186803b15801561121757600080fd5b505afa15801561122b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061124f91908101906122ed565b9050604051806080016040528087848151811061126857fe5b6020026020010151815260200182600001511515815260200182602001511515815260200182604001516001600160601b03168152508383815181106112aa57fe5b6020908102919091010152506001016111ae565b6112c661196f565b6040516370a0823160e01b81526000906001600160a01b038516906370a08231906112f5908690600401612d44565b60206040518083038186803b15801561130d57600080fd5b505afa158015611321573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611345919081019061230b565b90506000846001600160a01b03166317bfdfbc856040518263ffffffff1660e01b81526004016113759190612d44565b602060405180830381600087803b15801561138f57600080fd5b505af11580156113a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506113c7919081019061230b565b90506000856001600160a01b0316633af9e669866040518263ffffffff1660e01b81526004016113f79190612d44565b602060405180830381600087803b15801561141157600080fd5b505af1158015611425573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611449919081019061230b565b905060008061148a886001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b15801561046f57600080fd5b156114a45750506001600160a01b03851680319031611621565b60008890506000816001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b1580156114e457600080fd5b505afa1580156114f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061151c9190810190611f52565b6040516370a0823160e01b81529091506001600160a01b038216906370a082319061154b908c90600401612d44565b60206040518083038186803b15801561156357600080fd5b505afa158015611577573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061159b919081019061230b565b604051636eb1769f60e11b81529094506001600160a01b0382169063dd62ed3e906115cc908c908e90600401612d52565b60206040518083038186803b1580156115e457600080fd5b505afa1580156115f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061161c919081019061230b565b925050505b6040805160c0810182526001600160a01b039990991689526020890195909552938701929092526060860152608085015260a08401525090919050565b611666611a31565b6000826001600160a01b0316635fe3b5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156116a157600080fd5b505afa1580156116b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506116d991908101906121ec565b90506000816001600160a01b0316637dc0d1d06040518163ffffffff1660e01b815260040160206040518083038186803b15801561171657600080fd5b505afa15801561172a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061174e91908101906121ec565b90506040518060400160405280856001600160a01b03168152602001826001600160a01b031663fc57d4df876040518263ffffffff1660e01b81526004016117969190612dee565b60206040518083038186803b1580156117ae57600080fd5b505afa1580156117c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506117e6919081019061230b565b9052949350505050565b6000816040516020016118039190612d2a565b604051602081830303815290604052805190602001208360405160200161182a9190612d2a565b6040516020818303038152906040528051906020012014905092915050565b600080600080600080600080896001600160a01b031663013cf08b8a6040518263ffffffff1660e01b81526004016118819190612e46565b6101206040518083038186803b15801561189a57600080fd5b505afa1580156118ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506118d29190810190612329565b9850985098509850985098509850985050888b6000018181525050878b602001906001600160a01b031690816001600160a01b031681525050868b6040018181525050858b60e0018181525050848b610100018181525050838b610120018181525050828b610140018181525050818b610160019015159081151581525050808b6101800190151590811515815250505050505050505050505050565b6040518060c0016040528060006001600160a01b0316815260200160008152602001600081526020016000815260200160008152602001600081525090565b604051806101c0016040528060006001600160a01b0316815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581526020016000815260200160006001600160a01b0316815260200160008152602001600081525090565b604080518082019091526000808252602082015290565b6040518060600160405280600081526020016000815260200160006001600160a01b031681525090565b604051806040016040528060008152602001600081525090565b60405180606001604052806060815260200160008152602001600081525090565b604051806101a001604052806000815260200160006001600160a01b031681526020016000815260200160608152602001606081526020016060815260200160608152602001600081526020016000815260200160008152602001600081526020016000151581526020016000151581525090565b60408051608081018252600080825260208201819052918101829052606081019190915290565b604080516060810182526000808252602082018190529181019190915290565b8035610ad481612f78565b8051610ad481612f78565b600082601f830112611b9057600080fd5b8151611ba3611b9e82612e88565b612e62565b91508181835260208401935060208101905083856020840282011115611bc857600080fd5b60005b83811015611bf45781611bde8882611b74565b8452506020928301929190910190600101611bcb565b5050505092915050565b600082601f830112611c0f57600080fd5b8151611c1d611b9e82612e88565b81815260209384019390925082018360005b83811015611bf45781518601611c458882611e5b565b8452506020928301929190910190600101611c2f565b60008083601f840112611c6d57600080fd5b5081356001600160401b03811115611c8457600080fd5b602083019150836020820283011115611c9c57600080fd5b9250929050565b600082601f830112611cb457600080fd5b8151611cc2611b9e82612e88565b91508181835260208401935060208101905083856020840282011115611ce757600080fd5b60005b83811015611bf45781611cfd8882611eb5565b8452506020928301929190910190600101611cea565b600082601f830112611d2457600080fd5b8151611d32611b9e82612e88565b81815260209384019390925082018360005b83811015611bf45781518601611d5a8882611e5b565b8452506020928301929190910190600101611d44565b600082601f830112611d8157600080fd5b8135611d8f611b9e82612e88565b91508181835260208401935060208101905083856020840282011115611db457600080fd5b60005b83811015611bf45781611dca8882611f1b565b8452506020928301929190910190600101611db7565b600082601f830112611df157600080fd5b8151611dff611b9e82612e88565b91508181835260208401935060208101905083856020840282011115611e2457600080fd5b60005b83811015611bf45781611e3a8882611f26565b8452506020928301929190910190600101611e27565b8051610ad481612f8f565b600082601f830112611e6c57600080fd5b8151611e7a611b9e82612ea8565b91508082526020830160208301858383011115611e9657600080fd5b611ea1838284612f42565b50505092915050565b8035610ad481612f98565b8051610ad481612f98565b600060608284031215611ed257600080fd5b611edc6060612e62565b90506000611eea8484611e50565b8252506020611efb84848301611e50565b6020830152506040611f0f84828501611f47565b60408301525092915050565b8035610ad481612fa1565b8051610ad481612fa1565b8035610ad481612faa565b8051610ad481612fb3565b8051610ad481612fbc565b600060208284031215611f6457600080fd5b6000611f708484611b74565b949350505050565b60008060008060808587031215611f8e57600080fd5b84516001600160401b03811115611fa457600080fd5b611fb087828801611b7f565b94505060208501516001600160401b03811115611fcc57600080fd5b611fd887828801611de0565b93505060408501516001600160401b03811115611ff457600080fd5b61200087828801611d13565b92505060608501516001600160401b0381111561201c57600080fd5b61202887828801611bfe565b91505092959194509250565b6000806020838503121561204757600080fd5b82356001600160401b0381111561205d57600080fd5b61206985828601611c5b565b92509250509250929050565b60008060006040848603121561208a57600080fd5b83356001600160401b038111156120a057600080fd5b6120ac86828701611c5b565b935093505060206120bf86828701611b69565b9150509250925092565b6000602082840312156120db57600080fd5b81516001600160401b038111156120f157600080fd5b611f7084828501611ca3565b6000806040838503121561211057600080fd5b600061211c8585611e50565b925050602061212d85828601611f26565b9150509250929050565b60006020828403121561214957600080fd5b6000611f708484611eaa565b6000806040838503121561216857600080fd5b60006121748585611eaa565b925050602061212d85828601611b69565b6000806000806060858703121561219b57600080fd5b60006121a78787611eaa565b94505060206121b887828801611b69565b93505060408501356001600160401b038111156121d457600080fd5b6121e087828801611c5b565b95989497509550505050565b6000602082840312156121fe57600080fd5b6000611f708484611eb5565b60008060006060848603121561221f57600080fd5b600061222b8686611eaa565b935050602061223c86828701611b69565b92505060408401356001600160401b0381111561225857600080fd5b6120bf86828701611d70565b60008060006040848603121561227957600080fd5b60006122858686611eaa565b93505060208401356001600160401b038111156122a157600080fd5b6122ad86828701611c5b565b92509250509250925092565b6000602082840312156122cb57600080fd5b81516001600160401b038111156122e157600080fd5b611f7084828501611e5b565b6000606082840312156122ff57600080fd5b6000611f708484611ec0565b60006020828403121561231d57600080fd5b6000611f708484611f26565b60008060008060008060008060006101208a8c03121561234857600080fd5b60006123548c8c611f26565b99505060206123658c828d01611b74565b98505060406123768c828d01611f26565b97505060606123878c828d01611f26565b96505060806123988c828d01611f26565b95505060a06123a98c828d01611f26565b94505060c06123ba8c828d01611f26565b93505060e06123cb8c828d01611e50565b9250506101006123dd8c828d01611e50565b9150509295985092959850929598565b60008060006060848603121561240257600080fd5b600061240e8686611f26565b935050602061241f86828701611f26565b92505060406120bf86828701611f26565b60006020828403121561244257600080fd5b6000611f708484611f31565b60006020828403121561246057600080fd5b6000611f708484611f3c565b60006020828403121561247e57600080fd5b6000611f708484611f47565b6000612496838361253a565b505060200190565b60006102b383836128f7565b6000612496838361292f565b60006124c283836129af565b505060c00190565b60006124d68383612a25565b50506101c00190565b60006124eb8383612b3a565b505060400190565b60006124eb8383612b95565b60006102b38383612ba6565b60006125178383612cc5565b505060800190565b60006124968383612d0f565b61253481612f2c565b82525050565b61253481612ee7565b600061254e82612ed5565b6125588185612ed9565b935061256383612ecf565b8060005b8381101561259157815161257b888261248a565b975061258683612ecf565b925050600101612567565b509495945050505050565b60006125a782612ed5565b6125b18185612ed9565b9350836020820285016125c385612ecf565b8060005b858110156125fd57848403895281516125e0858261249e565b94506125eb83612ecf565b60209a909a01999250506001016125c7565b5091979650505050505050565b600061261582612ed5565b61261f8185612ed9565b935061262a83612ecf565b8060005b8381101561259157815161264288826124aa565b975061264d83612ecf565b92505060010161262e565b600061266382612ed5565b61266d8185612ed9565b93508360208202850161267f85612ecf565b8060005b858110156125fd578484038952815161269c858261249e565b94506126a783612ecf565b60209a909a0199925050600101612683565b60006126c482612ed5565b6126ce8185612ed9565b93506126d983612ecf565b8060005b838110156125915781516126f188826124b6565b97506126fc83612ecf565b9250506001016126dd565b600061271282612ed5565b61271c8185612ed9565b935061272783612ecf565b8060005b8381101561259157815161273f88826124ca565b975061274a83612ecf565b92505060010161272b565b600061276082612ed5565b61276a8185612ed9565b935061277583612ecf565b8060005b8381101561259157815161278d88826124df565b975061279883612ecf565b925050600101612779565b60006127ae82612ed5565b6127b88185612ed9565b93506127c383612ecf565b8060005b838110156125915781516127db88826124f3565b97506127e683612ecf565b9250506001016127c7565b60006127fc82612ed5565b6128068185612ed9565b93508360208202850161281885612ecf565b8060005b858110156125fd578484038952815161283585826124ff565b945061284083612ecf565b60209a909a019992505060010161281c565b600061285d82612ed5565b6128678185612ed9565b935061287283612ecf565b8060005b8381101561259157815161288a888261250b565b975061289583612ecf565b925050600101612876565b60006128ab82612ed5565b6128b58185612ed9565b93506128c083612ecf565b8060005b838110156125915781516128d8888261251f565b97506128e383612ecf565b9250506001016128c4565b61253481612ef2565b600061290282612ed5565b61290c8185612ed9565b935061291c818560208601612f42565b61292581612f6e565b9093019392505050565b61253481612ef7565b600061294382612ed5565b61294d8185612ee2565b935061295d818560208601612f42565b9290920192915050565b805160608084526000919084019061297f828261260a565b91505060208301516129946020860182612d0f565b5060408301516129a76040860182612d0f565b509392505050565b805160c08301906129c0848261253a565b5060208201516129d36020850182612d0f565b5060408201516129e66040850182612d0f565b5060608201516129f96060850182612d0f565b506080820151612a0c6080850182612d0f565b5060a0820151612a1f60a0850182612d0f565b50505050565b80516101c0830190612a37848261253a565b506020820151612a4a6020850182612d0f565b506040820151612a5d6040850182612d0f565b506060820151612a706060850182612d0f565b506080820151612a836080850182612d0f565b5060a0820151612a9660a0850182612d0f565b5060c0820151612aa960c0850182612d0f565b5060e0820151612abc60e0850182612d0f565b50610100820151612ad1610100850182612d0f565b50610120820151612ae66101208501826128ee565b50610140820151612afb610140850182612d0f565b50610160820151612b1061016085018261253a565b50610180820151612b25610180850182612d0f565b506101a0820151612a1f6101a0850182612d0f565b80516040830190612b4b848261253a565b506020820151612a1f6020850182612d0f565b80516060830190612b6f8482612d0f565b506020820151612b826020850182612d0f565b506040820151612a1f604085018261253a565b80516040830190612b4b8482612d0f565b80516000906101a0840190612bbb8582612d0f565b506020830151612bce602086018261253a565b506040830151612be16040860182612d0f565b5060608301518482036060860152612bf98282612543565b91505060808301518482036080860152612c1382826128a0565b91505060a083015184820360a0860152612c2d8282612658565b91505060c083015184820360c0860152612c47828261259c565b91505060e0830151612c5c60e0860182612d0f565b50610100830151612c71610100860182612d0f565b50610120830151612c86610120860182612d0f565b50610140830151612c9b610140860182612d0f565b50610160830151612cb06101608601826128ee565b506101808301516129a76101808601826128ee565b80516080830190612cd68482612d0f565b506020820151612ce960208501826128ee565b506040820151612cfc60408501826128ee565b506060820151612a1f6060850182612d21565b61253481612f0e565b61253481612f37565b61253481612f20565b60006102b38284612938565b60208101610ad4828461253a565b60208101610ad4828461252b565b60408101612d60828561252b565b6102b3602083018461253a565b60408101612d7b828561253a565b6102b36020830184612d18565b602080825281016102b381846126b9565b602080825281016102b38184612707565b602080825281016102b38184612755565b602080825281016102b381846127a3565b602080825281016102b381846127f1565b602080825281016102b38184612852565b60208101610ad4828461292f565b602080825281016102b38184612967565b60c08101610ad482846129af565b6101c08101610ad48284612a25565b60408101610ad48284612b3a565b60608101610ad48284612b5e565b60208101610ad48284612d0f565b60408101612d608285612d0f565b6040518181016001600160401b0381118282101715612e8057600080fd5b604052919050565b60006001600160401b03821115612e9e57600080fd5b5060209081020190565b60006001600160401b03821115612ebe57600080fd5b506020601f91909101601f19160190565b60200190565b5190565b90815260200190565b919050565b6000610ad482612f02565b151590565b6000610ad482612ee7565b6001600160a01b031690565b90565b63ffffffff1690565b60ff1690565b6001600160601b031690565b6000610ad482612ef7565b6000610ad482612f11565b60005b83811015612f5d578181015183820152602001612f45565b83811115612a1f5750506000910152565b601f01601f191690565b612f8181612ee7565b8114612f8c57600080fd5b50565b612f8181612ef2565b612f8181612ef7565b612f8181612f0e565b612f8181612f11565b612f8181612f1a565b612f8181612f2056fea365627a7a72315820ecadd62a3fa2a2e9677594d61cd9c428414f9abd296dc8a9f3192ee0407215296c6578706572696d656e74616cf564736f6c63430005110040","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3008 DUP1 PUSH2 0x20 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 0xA9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x59564219 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x59564219 EQ PUSH2 0x157 JUMPI DUP1 PUSH4 0x7DD8F6D9 EQ PUSH2 0x177 JUMPI DUP1 PUSH4 0x96994869 EQ PUSH2 0x197 JUMPI DUP1 PUSH4 0x995ED99F EQ PUSH2 0x1B7 JUMPI DUP1 PUSH4 0xBDF950C9 EQ PUSH2 0x1D7 JUMPI DUP1 PUSH4 0xC5AE5934 EQ PUSH2 0x1F7 JUMPI PUSH2 0xA9 JUMP JUMPDEST DUP1 PUSH4 0x972BF8B EQ PUSH2 0xAE JUMPI DUP1 PUSH4 0x158ECA8B EQ PUSH2 0xD7 JUMPI DUP1 PUSH4 0x2B2D5ED6 EQ PUSH2 0xF7 JUMPI DUP1 PUSH4 0x416405D7 EQ PUSH2 0x117 JUMPI DUP1 PUSH4 0x4B70D84B EQ PUSH2 0x137 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC1 PUSH2 0xBC CALLDATASIZE PUSH1 0x4 PUSH2 0x2075 JUMP JUMPDEST PUSH2 0x217 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xCE SWAP2 SWAP1 PUSH2 0x2D88 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xEA PUSH2 0xE5 CALLDATASIZE PUSH1 0x4 PUSH2 0x2137 JUMP JUMPDEST PUSH2 0x2BA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xCE SWAP2 SWAP1 PUSH2 0x2E1B JUMP JUMPDEST PUSH2 0x10A PUSH2 0x105 CALLDATASIZE PUSH1 0x4 PUSH2 0x2034 JUMP JUMPDEST PUSH2 0xA3E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xCE SWAP2 SWAP1 PUSH2 0x2DAA JUMP JUMPDEST PUSH2 0x12A PUSH2 0x125 CALLDATASIZE PUSH1 0x4 PUSH2 0x2155 JUMP JUMPDEST PUSH2 0xADA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xCE SWAP2 SWAP1 PUSH2 0x2E38 JUMP JUMPDEST PUSH2 0x14A PUSH2 0x145 CALLDATASIZE PUSH1 0x4 PUSH2 0x2034 JUMP JUMPDEST PUSH2 0xC83 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xCE SWAP2 SWAP1 PUSH2 0x2D99 JUMP JUMPDEST PUSH2 0x16A PUSH2 0x165 CALLDATASIZE PUSH1 0x4 PUSH2 0x2185 JUMP JUMPDEST PUSH2 0xD14 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xCE SWAP2 SWAP1 PUSH2 0x2DBB JUMP JUMPDEST PUSH2 0x18A PUSH2 0x185 CALLDATASIZE PUSH1 0x4 PUSH2 0x2155 JUMP JUMPDEST PUSH2 0xE6C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xCE SWAP2 SWAP1 PUSH2 0x2DFC JUMP JUMPDEST PUSH2 0x1AA PUSH2 0x1A5 CALLDATASIZE PUSH1 0x4 PUSH2 0x2264 JUMP JUMPDEST PUSH2 0xFA8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xCE SWAP2 SWAP1 PUSH2 0x2DCC JUMP JUMPDEST PUSH2 0x1CA PUSH2 0x1C5 CALLDATASIZE PUSH1 0x4 PUSH2 0x220A JUMP JUMPDEST PUSH2 0x1164 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xCE SWAP2 SWAP1 PUSH2 0x2DDD JUMP JUMPDEST PUSH2 0x1EA PUSH2 0x1E5 CALLDATASIZE PUSH1 0x4 PUSH2 0x2155 JUMP JUMPDEST PUSH2 0x12BE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xCE SWAP2 SWAP1 PUSH2 0x2E0D JUMP JUMPDEST PUSH2 0x20A PUSH2 0x205 CALLDATASIZE PUSH1 0x4 PUSH2 0x2137 JUMP JUMPDEST PUSH2 0x165E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xCE SWAP2 SWAP1 PUSH2 0x2E2A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x20 DUP1 DUP6 MUL DUP3 ADD ADD SWAP1 SWAP2 MSTORE PUSH1 0x60 SWAP1 DUP4 SWAP1 DUP3 SWAP1 DUP3 DUP1 ISZERO PUSH2 0x257 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x244 PUSH2 0x196F JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x23C JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2AE JUMPI PUSH2 0x28F DUP8 DUP8 DUP4 DUP2 DUP2 LT PUSH2 0x274 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x289 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2137 JUMP JUMPDEST DUP7 PUSH2 0x12BE JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x29B JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x25D JUMP JUMPDEST POP SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x2C2 PUSH2 0x19AE JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xBD6D894D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x313 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 PUSH2 0x337 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x230B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5FE3B567 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 0x374 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x388 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 PUSH2 0x3AC SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x21EC JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8E8F294B DUP8 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP2 SWAP1 PUSH2 0x2D36 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x408 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 PUSH2 0x42C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x20FD JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH2 0x4CD DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x95D89B41 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x46F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x483 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x4AB SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x22B9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4 DUP2 MSTORE PUSH1 0x20 ADD PUSH4 0xC68AA89 PUSH1 0xE3 SHL DUP2 MSTORE POP PUSH2 0x17F0 JUMP JUMPDEST ISZERO PUSH2 0x4DE JUMPI POP PUSH1 0x0 SWAP1 POP PUSH1 0x12 PUSH2 0x63E JUMP JUMPDEST PUSH1 0x0 DUP9 SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6F307DC3 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 0x51C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x530 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 PUSH2 0x554 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1F52 JUMP JUMPDEST SWAP3 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6F307DC3 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 0x58F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5A3 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 PUSH2 0x5C7 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1F52 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x313CE567 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 0x5FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x613 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 PUSH2 0x637 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x244E JUMP JUMPDEST PUSH1 0xFF AND SWAP2 POP POP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x1C0 ADD PUSH1 0x40 MSTORE DUP1 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xAE9D70B0 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 0x698 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x6AC 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 PUSH2 0x6D0 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x230B JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xF8F9DA28 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 0x70E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x722 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 PUSH2 0x746 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x230B JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x173B9904 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 0x784 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x798 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 PUSH2 0x7BC SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x230B JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x47BD3718 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 0x7FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x80E 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 PUSH2 0x832 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x230B JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8F840DDD 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 0x870 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x884 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 PUSH2 0x8A8 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x230B JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP10 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 0x8E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x8FA 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 PUSH2 0x91E SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x230B JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x3B1D21A2 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 0x95C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x970 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 PUSH2 0x994 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x230B JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP6 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x313CE567 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 0x9EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA03 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 PUSH2 0xA27 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x244E JUMP JUMPDEST PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP5 MUL DUP3 ADD ADD SWAP1 SWAP2 MSTORE PUSH1 0x60 SWAP1 DUP3 SWAP1 DUP3 SWAP1 DUP3 DUP1 ISZERO PUSH2 0xA7E JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0xA6B PUSH2 0x1A31 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xA63 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0xACF JUMPI PUSH2 0xAB0 DUP7 DUP7 DUP4 DUP2 DUP2 LT PUSH2 0xA9B JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x205 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2137 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xABC JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0xA84 JUMP JUMPDEST POP SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xAE2 PUSH2 0x1A48 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD SWAP2 DUP3 SWAP1 MSTORE PUSH4 0x70A08231 PUSH1 0xE0 SHL SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH4 0x70A08231 PUSH2 0xB16 DUP7 PUSH1 0x64 DUP6 ADD PUSH2 0x2D36 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB2E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xB42 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 PUSH2 0xB66 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x230B JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xB4B5EA57 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB97 SWAP2 SWAP1 PUSH2 0x2D36 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xBC3 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 PUSH2 0xBE7 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x246C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x587CDE1E DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC21 SWAP2 SWAP1 PUSH2 0x2D36 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC39 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC4D 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 PUSH2 0xC71 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1F52 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP5 MUL DUP3 ADD ADD SWAP1 SWAP2 MSTORE PUSH1 0x60 SWAP1 DUP3 SWAP1 DUP3 SWAP1 DUP3 DUP1 ISZERO PUSH2 0xCC3 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0xCB0 PUSH2 0x19AE JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xCA8 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0xACF JUMPI PUSH2 0xCF5 DUP7 DUP7 DUP4 DUP2 DUP2 LT PUSH2 0xCE0 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0xE5 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2137 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xD01 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0xCC9 JUMP JUMPDEST PUSH1 0x60 DUP1 DUP4 DUP4 SWAP1 POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xD54 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0xD41 PUSH2 0x1A72 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xD39 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xE62 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP7 DUP7 DUP5 DUP2 DUP2 LT PUSH2 0xD79 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0xD8E SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2430 JUMP JUMPDEST PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x782D6FE1 DUP10 DUP10 DUP10 DUP8 DUP2 DUP2 LT PUSH2 0xDB5 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0xDCA SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2430 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xDE7 SWAP3 SWAP2 SWAP1 PUSH2 0x2D6D JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE13 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 PUSH2 0xE37 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x246C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 MSTORE POP DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xE4F JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0xD5A JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0xE74 PUSH2 0x1A8C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5EC88C79 DUP7 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xEA5 SWAP2 SWAP1 PUSH2 0x2D36 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEBD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xED1 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 PUSH2 0xEF5 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x23ED JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP DUP3 PUSH1 0x0 EQ PUSH2 0xF08 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD SWAP2 DUP3 SWAP1 MSTORE PUSH4 0x2AFF3BFF PUSH1 0xE2 SHL SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH4 0xABFCEFFC PUSH2 0xF3C DUP10 PUSH1 0x64 DUP6 ADD PUSH2 0x2D36 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF54 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF68 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0xF90 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x20C9 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 SWAP3 ADD MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 DUP4 DUP4 SWAP1 POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xFE8 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0xFD5 PUSH2 0x1AAD JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xFCD JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x115B JUMPI PUSH1 0x60 DUP1 PUSH1 0x60 DUP1 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x328DD982 DUP11 DUP11 DUP9 DUP2 DUP2 LT PUSH2 0x1017 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x103A SWAP2 SWAP1 PUSH2 0x2E46 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1052 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1066 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x108E SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1F78 JUMP JUMPDEST SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP PUSH1 0x40 MLOAD DUP1 PUSH2 0x1A0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE POP DUP7 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0x1110 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP PUSH2 0x114B DUP7 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0x112A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP12 DUP12 DUP12 DUP10 DUP2 DUP2 LT PUSH2 0x113F JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH2 0x1849 JUMP JUMPDEST POP POP PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 POP PUSH2 0xFEE SWAP1 POP JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP3 MLOAD SWAP1 POP PUSH1 0x60 DUP2 PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x11A8 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x1195 PUSH2 0x1B22 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x118D JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2AE JUMPI PUSH2 0x11BE PUSH2 0x1B49 JUMP JUMPDEST DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE23A9A52 DUP8 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x11D9 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP10 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x11FF SWAP3 SWAP2 SWAP1 PUSH2 0x2E54 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1217 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x122B 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 PUSH2 0x124F SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x22ED JUMP JUMPDEST SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 DUP8 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1268 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x0 ADD MLOAD ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x20 ADD MLOAD ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x40 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 MSTORE POP DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x12AA JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP PUSH1 0x1 ADD PUSH2 0x11AE JUMP JUMPDEST PUSH2 0x12C6 PUSH2 0x196F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x12F5 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x2D44 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x130D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1321 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 PUSH2 0x1345 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x230B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x17BFDFBC DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1375 SWAP2 SWAP1 PUSH2 0x2D44 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x138F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x13A3 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 PUSH2 0x13C7 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x230B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x3AF9E669 DUP7 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x13F7 SWAP2 SWAP1 PUSH2 0x2D44 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1411 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1425 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 PUSH2 0x1449 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x230B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x148A DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x95D89B41 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x46F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST ISZERO PUSH2 0x14A4 JUMPI POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP1 BALANCE SWAP1 BALANCE PUSH2 0x1621 JUMP JUMPDEST PUSH1 0x0 DUP9 SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6F307DC3 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 0x14E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x14F8 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 PUSH2 0x151C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1F52 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x154B SWAP1 DUP13 SWAP1 PUSH1 0x4 ADD PUSH2 0x2D44 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1563 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1577 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 PUSH2 0x159B SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x230B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x6EB1769F PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 SWAP5 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0xDD62ED3E SWAP1 PUSH2 0x15CC SWAP1 DUP13 SWAP1 DUP15 SWAP1 PUSH1 0x4 ADD PUSH2 0x2D52 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x15E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x15F8 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 PUSH2 0x161C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x230B JUMP JUMPDEST SWAP3 POP POP POP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xC0 DUP2 ADD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP10 SWAP1 SWAP10 AND DUP10 MSTORE PUSH1 0x20 DUP10 ADD SWAP6 SWAP1 SWAP6 MSTORE SWAP4 DUP8 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x80 DUP6 ADD MSTORE PUSH1 0xA0 DUP5 ADD MSTORE POP SWAP1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1666 PUSH2 0x1A31 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5FE3B567 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 0x16A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x16B5 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 PUSH2 0x16D9 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x21EC JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x7DC0D1D0 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 0x1716 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x172A 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 PUSH2 0x174E SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x21EC JUMP JUMPDEST SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFC57D4DF DUP8 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1796 SWAP2 SWAP1 PUSH2 0x2DEE JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x17AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x17C2 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 PUSH2 0x17E6 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x230B JUMP JUMPDEST SWAP1 MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1803 SWAP2 SWAP1 PUSH2 0x2D2A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x182A SWAP2 SWAP1 PUSH2 0x2D2A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 EQ SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x13CF08B DUP11 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1881 SWAP2 SWAP1 PUSH2 0x2E46 JUMP JUMPDEST PUSH2 0x120 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x189A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x18AE 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 PUSH2 0x18D2 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2329 JUMP JUMPDEST SWAP9 POP SWAP9 POP SWAP9 POP SWAP9 POP SWAP9 POP SWAP9 POP SWAP9 POP SWAP9 POP POP DUP9 DUP12 PUSH1 0x0 ADD DUP2 DUP2 MSTORE POP POP DUP8 DUP12 PUSH1 0x20 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP7 DUP12 PUSH1 0x40 ADD DUP2 DUP2 MSTORE POP POP DUP6 DUP12 PUSH1 0xE0 ADD DUP2 DUP2 MSTORE POP POP DUP5 DUP12 PUSH2 0x100 ADD DUP2 DUP2 MSTORE POP POP DUP4 DUP12 PUSH2 0x120 ADD DUP2 DUP2 MSTORE POP POP DUP3 DUP12 PUSH2 0x140 ADD DUP2 DUP2 MSTORE POP POP DUP2 DUP12 PUSH2 0x160 ADD SWAP1 ISZERO ISZERO SWAP1 DUP2 ISZERO ISZERO DUP2 MSTORE POP POP DUP1 DUP12 PUSH2 0x180 ADD SWAP1 ISZERO ISZERO SWAP1 DUP2 ISZERO ISZERO DUP2 MSTORE POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xC0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x1C0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x1A0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xAD4 DUP2 PUSH2 0x2F78 JUMP JUMPDEST DUP1 MLOAD PUSH2 0xAD4 DUP2 PUSH2 0x2F78 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1B90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1BA3 PUSH2 0x1B9E DUP3 PUSH2 0x2E88 JUMP JUMPDEST PUSH2 0x2E62 JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH1 0x20 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0x1BC8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1BF4 JUMPI DUP2 PUSH2 0x1BDE DUP9 DUP3 PUSH2 0x1B74 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1BCB JUMP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1C0F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1C1D PUSH2 0x1B9E DUP3 PUSH2 0x2E88 JUMP JUMPDEST DUP2 DUP2 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 POP DUP3 ADD DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1BF4 JUMPI DUP2 MLOAD DUP7 ADD PUSH2 0x1C45 DUP9 DUP3 PUSH2 0x1E5B JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1C2F JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x1C6D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x1C84 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x1C9C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1CB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1CC2 PUSH2 0x1B9E DUP3 PUSH2 0x2E88 JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH1 0x20 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0x1CE7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1BF4 JUMPI DUP2 PUSH2 0x1CFD DUP9 DUP3 PUSH2 0x1EB5 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1CEA JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1D24 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1D32 PUSH2 0x1B9E DUP3 PUSH2 0x2E88 JUMP JUMPDEST DUP2 DUP2 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 POP DUP3 ADD DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1BF4 JUMPI DUP2 MLOAD DUP7 ADD PUSH2 0x1D5A DUP9 DUP3 PUSH2 0x1E5B JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1D44 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1D81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1D8F PUSH2 0x1B9E DUP3 PUSH2 0x2E88 JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH1 0x20 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0x1DB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1BF4 JUMPI DUP2 PUSH2 0x1DCA DUP9 DUP3 PUSH2 0x1F1B JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1DB7 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1DF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1DFF PUSH2 0x1B9E DUP3 PUSH2 0x2E88 JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH1 0x20 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0x1E24 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1BF4 JUMPI DUP2 PUSH2 0x1E3A DUP9 DUP3 PUSH2 0x1F26 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1E27 JUMP JUMPDEST DUP1 MLOAD PUSH2 0xAD4 DUP2 PUSH2 0x2F8F JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1E6C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1E7A PUSH2 0x1B9E DUP3 PUSH2 0x2EA8 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x1E96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1EA1 DUP4 DUP3 DUP5 PUSH2 0x2F42 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xAD4 DUP2 PUSH2 0x2F98 JUMP JUMPDEST DUP1 MLOAD PUSH2 0xAD4 DUP2 PUSH2 0x2F98 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1ED2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1EDC PUSH1 0x60 PUSH2 0x2E62 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1EEA DUP5 DUP5 PUSH2 0x1E50 JUMP JUMPDEST DUP3 MSTORE POP PUSH1 0x20 PUSH2 0x1EFB DUP5 DUP5 DUP4 ADD PUSH2 0x1E50 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 PUSH2 0x1F0F DUP5 DUP3 DUP6 ADD PUSH2 0x1F47 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xAD4 DUP2 PUSH2 0x2FA1 JUMP JUMPDEST DUP1 MLOAD PUSH2 0xAD4 DUP2 PUSH2 0x2FA1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xAD4 DUP2 PUSH2 0x2FAA JUMP JUMPDEST DUP1 MLOAD PUSH2 0xAD4 DUP2 PUSH2 0x2FB3 JUMP JUMPDEST DUP1 MLOAD PUSH2 0xAD4 DUP2 PUSH2 0x2FBC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1F64 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1F70 DUP5 DUP5 PUSH2 0x1B74 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1F8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x1FA4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1FB0 DUP8 DUP3 DUP9 ADD PUSH2 0x1B7F JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x1FCC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1FD8 DUP8 DUP3 DUP9 ADD PUSH2 0x1DE0 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 DUP6 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x1FF4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2000 DUP8 DUP3 DUP9 ADD PUSH2 0x1D13 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x201C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2028 DUP8 DUP3 DUP9 ADD PUSH2 0x1BFE JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2047 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x205D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2069 DUP6 DUP3 DUP7 ADD PUSH2 0x1C5B JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x208A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x20A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x20AC DUP7 DUP3 DUP8 ADD PUSH2 0x1C5B JUMP JUMPDEST SWAP4 POP SWAP4 POP POP PUSH1 0x20 PUSH2 0x20BF DUP7 DUP3 DUP8 ADD PUSH2 0x1B69 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x20DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x20F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1F70 DUP5 DUP3 DUP6 ADD PUSH2 0x1CA3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2110 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x211C DUP6 DUP6 PUSH2 0x1E50 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x212D DUP6 DUP3 DUP7 ADD PUSH2 0x1F26 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2149 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1F70 DUP5 DUP5 PUSH2 0x1EAA JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2168 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2174 DUP6 DUP6 PUSH2 0x1EAA JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x212D DUP6 DUP3 DUP7 ADD PUSH2 0x1B69 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x219B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x21A7 DUP8 DUP8 PUSH2 0x1EAA JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x21B8 DUP8 DUP3 DUP9 ADD PUSH2 0x1B69 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x21D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x21E0 DUP8 DUP3 DUP9 ADD PUSH2 0x1C5B JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x21FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1F70 DUP5 DUP5 PUSH2 0x1EB5 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x221F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x222B DUP7 DUP7 PUSH2 0x1EAA JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x223C DUP7 DUP3 DUP8 ADD PUSH2 0x1B69 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2258 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x20BF DUP7 DUP3 DUP8 ADD PUSH2 0x1D70 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2279 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2285 DUP7 DUP7 PUSH2 0x1EAA JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x22A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x22AD DUP7 DUP3 DUP8 ADD PUSH2 0x1C5B JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x22CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x22E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1F70 DUP5 DUP3 DUP6 ADD PUSH2 0x1E5B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x22FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1F70 DUP5 DUP5 PUSH2 0x1EC0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x231D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1F70 DUP5 DUP5 PUSH2 0x1F26 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x120 DUP11 DUP13 SUB SLT ISZERO PUSH2 0x2348 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2354 DUP13 DUP13 PUSH2 0x1F26 JUMP JUMPDEST SWAP10 POP POP PUSH1 0x20 PUSH2 0x2365 DUP13 DUP3 DUP14 ADD PUSH2 0x1B74 JUMP JUMPDEST SWAP9 POP POP PUSH1 0x40 PUSH2 0x2376 DUP13 DUP3 DUP14 ADD PUSH2 0x1F26 JUMP JUMPDEST SWAP8 POP POP PUSH1 0x60 PUSH2 0x2387 DUP13 DUP3 DUP14 ADD PUSH2 0x1F26 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x80 PUSH2 0x2398 DUP13 DUP3 DUP14 ADD PUSH2 0x1F26 JUMP JUMPDEST SWAP6 POP POP PUSH1 0xA0 PUSH2 0x23A9 DUP13 DUP3 DUP14 ADD PUSH2 0x1F26 JUMP JUMPDEST SWAP5 POP POP PUSH1 0xC0 PUSH2 0x23BA DUP13 DUP3 DUP14 ADD PUSH2 0x1F26 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xE0 PUSH2 0x23CB DUP13 DUP3 DUP14 ADD PUSH2 0x1E50 JUMP JUMPDEST SWAP3 POP POP PUSH2 0x100 PUSH2 0x23DD DUP13 DUP3 DUP14 ADD PUSH2 0x1E50 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2402 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x240E DUP7 DUP7 PUSH2 0x1F26 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x241F DUP7 DUP3 DUP8 ADD PUSH2 0x1F26 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x20BF DUP7 DUP3 DUP8 ADD PUSH2 0x1F26 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2442 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1F70 DUP5 DUP5 PUSH2 0x1F31 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2460 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1F70 DUP5 DUP5 PUSH2 0x1F3C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x247E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1F70 DUP5 DUP5 PUSH2 0x1F47 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2496 DUP4 DUP4 PUSH2 0x253A JUMP JUMPDEST POP POP PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2B3 DUP4 DUP4 PUSH2 0x28F7 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2496 DUP4 DUP4 PUSH2 0x292F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x24C2 DUP4 DUP4 PUSH2 0x29AF JUMP JUMPDEST POP POP PUSH1 0xC0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x24D6 DUP4 DUP4 PUSH2 0x2A25 JUMP JUMPDEST POP POP PUSH2 0x1C0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x24EB DUP4 DUP4 PUSH2 0x2B3A JUMP JUMPDEST POP POP PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x24EB DUP4 DUP4 PUSH2 0x2B95 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2B3 DUP4 DUP4 PUSH2 0x2BA6 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2517 DUP4 DUP4 PUSH2 0x2CC5 JUMP JUMPDEST POP POP PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2496 DUP4 DUP4 PUSH2 0x2D0F JUMP JUMPDEST PUSH2 0x2534 DUP2 PUSH2 0x2F2C JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x2534 DUP2 PUSH2 0x2EE7 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x254E DUP3 PUSH2 0x2ED5 JUMP JUMPDEST PUSH2 0x2558 DUP2 DUP6 PUSH2 0x2ED9 JUMP JUMPDEST SWAP4 POP PUSH2 0x2563 DUP4 PUSH2 0x2ECF JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2591 JUMPI DUP2 MLOAD PUSH2 0x257B DUP9 DUP3 PUSH2 0x248A JUMP JUMPDEST SWAP8 POP PUSH2 0x2586 DUP4 PUSH2 0x2ECF JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x2567 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x25A7 DUP3 PUSH2 0x2ED5 JUMP JUMPDEST PUSH2 0x25B1 DUP2 DUP6 PUSH2 0x2ED9 JUMP JUMPDEST SWAP4 POP DUP4 PUSH1 0x20 DUP3 MUL DUP6 ADD PUSH2 0x25C3 DUP6 PUSH2 0x2ECF JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x25FD JUMPI DUP5 DUP5 SUB DUP10 MSTORE DUP2 MLOAD PUSH2 0x25E0 DUP6 DUP3 PUSH2 0x249E JUMP JUMPDEST SWAP5 POP PUSH2 0x25EB DUP4 PUSH2 0x2ECF JUMP JUMPDEST PUSH1 0x20 SWAP11 SWAP1 SWAP11 ADD SWAP10 SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x25C7 JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2615 DUP3 PUSH2 0x2ED5 JUMP JUMPDEST PUSH2 0x261F DUP2 DUP6 PUSH2 0x2ED9 JUMP JUMPDEST SWAP4 POP PUSH2 0x262A DUP4 PUSH2 0x2ECF JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2591 JUMPI DUP2 MLOAD PUSH2 0x2642 DUP9 DUP3 PUSH2 0x24AA JUMP JUMPDEST SWAP8 POP PUSH2 0x264D DUP4 PUSH2 0x2ECF JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x262E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2663 DUP3 PUSH2 0x2ED5 JUMP JUMPDEST PUSH2 0x266D DUP2 DUP6 PUSH2 0x2ED9 JUMP JUMPDEST SWAP4 POP DUP4 PUSH1 0x20 DUP3 MUL DUP6 ADD PUSH2 0x267F DUP6 PUSH2 0x2ECF JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x25FD JUMPI DUP5 DUP5 SUB DUP10 MSTORE DUP2 MLOAD PUSH2 0x269C DUP6 DUP3 PUSH2 0x249E JUMP JUMPDEST SWAP5 POP PUSH2 0x26A7 DUP4 PUSH2 0x2ECF JUMP JUMPDEST PUSH1 0x20 SWAP11 SWAP1 SWAP11 ADD SWAP10 SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x2683 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x26C4 DUP3 PUSH2 0x2ED5 JUMP JUMPDEST PUSH2 0x26CE DUP2 DUP6 PUSH2 0x2ED9 JUMP JUMPDEST SWAP4 POP PUSH2 0x26D9 DUP4 PUSH2 0x2ECF JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2591 JUMPI DUP2 MLOAD PUSH2 0x26F1 DUP9 DUP3 PUSH2 0x24B6 JUMP JUMPDEST SWAP8 POP PUSH2 0x26FC DUP4 PUSH2 0x2ECF JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x26DD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2712 DUP3 PUSH2 0x2ED5 JUMP JUMPDEST PUSH2 0x271C DUP2 DUP6 PUSH2 0x2ED9 JUMP JUMPDEST SWAP4 POP PUSH2 0x2727 DUP4 PUSH2 0x2ECF JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2591 JUMPI DUP2 MLOAD PUSH2 0x273F DUP9 DUP3 PUSH2 0x24CA JUMP JUMPDEST SWAP8 POP PUSH2 0x274A DUP4 PUSH2 0x2ECF JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x272B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2760 DUP3 PUSH2 0x2ED5 JUMP JUMPDEST PUSH2 0x276A DUP2 DUP6 PUSH2 0x2ED9 JUMP JUMPDEST SWAP4 POP PUSH2 0x2775 DUP4 PUSH2 0x2ECF JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2591 JUMPI DUP2 MLOAD PUSH2 0x278D DUP9 DUP3 PUSH2 0x24DF JUMP JUMPDEST SWAP8 POP PUSH2 0x2798 DUP4 PUSH2 0x2ECF JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x2779 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27AE DUP3 PUSH2 0x2ED5 JUMP JUMPDEST PUSH2 0x27B8 DUP2 DUP6 PUSH2 0x2ED9 JUMP JUMPDEST SWAP4 POP PUSH2 0x27C3 DUP4 PUSH2 0x2ECF JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2591 JUMPI DUP2 MLOAD PUSH2 0x27DB DUP9 DUP3 PUSH2 0x24F3 JUMP JUMPDEST SWAP8 POP PUSH2 0x27E6 DUP4 PUSH2 0x2ECF JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x27C7 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27FC DUP3 PUSH2 0x2ED5 JUMP JUMPDEST PUSH2 0x2806 DUP2 DUP6 PUSH2 0x2ED9 JUMP JUMPDEST SWAP4 POP DUP4 PUSH1 0x20 DUP3 MUL DUP6 ADD PUSH2 0x2818 DUP6 PUSH2 0x2ECF JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x25FD JUMPI DUP5 DUP5 SUB DUP10 MSTORE DUP2 MLOAD PUSH2 0x2835 DUP6 DUP3 PUSH2 0x24FF JUMP JUMPDEST SWAP5 POP PUSH2 0x2840 DUP4 PUSH2 0x2ECF JUMP JUMPDEST PUSH1 0x20 SWAP11 SWAP1 SWAP11 ADD SWAP10 SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x281C JUMP JUMPDEST PUSH1 0x0 PUSH2 0x285D DUP3 PUSH2 0x2ED5 JUMP JUMPDEST PUSH2 0x2867 DUP2 DUP6 PUSH2 0x2ED9 JUMP JUMPDEST SWAP4 POP PUSH2 0x2872 DUP4 PUSH2 0x2ECF JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2591 JUMPI DUP2 MLOAD PUSH2 0x288A DUP9 DUP3 PUSH2 0x250B JUMP JUMPDEST SWAP8 POP PUSH2 0x2895 DUP4 PUSH2 0x2ECF JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x2876 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x28AB DUP3 PUSH2 0x2ED5 JUMP JUMPDEST PUSH2 0x28B5 DUP2 DUP6 PUSH2 0x2ED9 JUMP JUMPDEST SWAP4 POP PUSH2 0x28C0 DUP4 PUSH2 0x2ECF JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2591 JUMPI DUP2 MLOAD PUSH2 0x28D8 DUP9 DUP3 PUSH2 0x251F JUMP JUMPDEST SWAP8 POP PUSH2 0x28E3 DUP4 PUSH2 0x2ECF JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x28C4 JUMP JUMPDEST PUSH2 0x2534 DUP2 PUSH2 0x2EF2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2902 DUP3 PUSH2 0x2ED5 JUMP JUMPDEST PUSH2 0x290C DUP2 DUP6 PUSH2 0x2ED9 JUMP JUMPDEST SWAP4 POP PUSH2 0x291C DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x2F42 JUMP JUMPDEST PUSH2 0x2925 DUP2 PUSH2 0x2F6E JUMP JUMPDEST SWAP1 SWAP4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x2534 DUP2 PUSH2 0x2EF7 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2943 DUP3 PUSH2 0x2ED5 JUMP JUMPDEST PUSH2 0x294D DUP2 DUP6 PUSH2 0x2EE2 JUMP JUMPDEST SWAP4 POP PUSH2 0x295D DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x2F42 JUMP JUMPDEST SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x60 DUP1 DUP5 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 ADD SWAP1 PUSH2 0x297F DUP3 DUP3 PUSH2 0x260A JUMP JUMPDEST SWAP2 POP POP PUSH1 0x20 DUP4 ADD MLOAD PUSH2 0x2994 PUSH1 0x20 DUP7 ADD DUP3 PUSH2 0x2D0F JUMP JUMPDEST POP PUSH1 0x40 DUP4 ADD MLOAD PUSH2 0x29A7 PUSH1 0x40 DUP7 ADD DUP3 PUSH2 0x2D0F JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0xC0 DUP4 ADD SWAP1 PUSH2 0x29C0 DUP5 DUP3 PUSH2 0x253A JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x29D3 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x2D0F JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x29E6 PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x2D0F JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x29F9 PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x2D0F JUMP JUMPDEST POP PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x2A0C PUSH1 0x80 DUP6 ADD DUP3 PUSH2 0x2D0F JUMP JUMPDEST POP PUSH1 0xA0 DUP3 ADD MLOAD PUSH2 0x2A1F PUSH1 0xA0 DUP6 ADD DUP3 PUSH2 0x2D0F JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0x1C0 DUP4 ADD SWAP1 PUSH2 0x2A37 DUP5 DUP3 PUSH2 0x253A JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x2A4A PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x2D0F JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x2A5D PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x2D0F JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x2A70 PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x2D0F JUMP JUMPDEST POP PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x2A83 PUSH1 0x80 DUP6 ADD DUP3 PUSH2 0x2D0F JUMP JUMPDEST POP PUSH1 0xA0 DUP3 ADD MLOAD PUSH2 0x2A96 PUSH1 0xA0 DUP6 ADD DUP3 PUSH2 0x2D0F JUMP JUMPDEST POP PUSH1 0xC0 DUP3 ADD MLOAD PUSH2 0x2AA9 PUSH1 0xC0 DUP6 ADD DUP3 PUSH2 0x2D0F JUMP JUMPDEST POP PUSH1 0xE0 DUP3 ADD MLOAD PUSH2 0x2ABC PUSH1 0xE0 DUP6 ADD DUP3 PUSH2 0x2D0F JUMP JUMPDEST POP PUSH2 0x100 DUP3 ADD MLOAD PUSH2 0x2AD1 PUSH2 0x100 DUP6 ADD DUP3 PUSH2 0x2D0F JUMP JUMPDEST POP PUSH2 0x120 DUP3 ADD MLOAD PUSH2 0x2AE6 PUSH2 0x120 DUP6 ADD DUP3 PUSH2 0x28EE JUMP JUMPDEST POP PUSH2 0x140 DUP3 ADD MLOAD PUSH2 0x2AFB PUSH2 0x140 DUP6 ADD DUP3 PUSH2 0x2D0F JUMP JUMPDEST POP PUSH2 0x160 DUP3 ADD MLOAD PUSH2 0x2B10 PUSH2 0x160 DUP6 ADD DUP3 PUSH2 0x253A JUMP JUMPDEST POP PUSH2 0x180 DUP3 ADD MLOAD PUSH2 0x2B25 PUSH2 0x180 DUP6 ADD DUP3 PUSH2 0x2D0F JUMP JUMPDEST POP PUSH2 0x1A0 DUP3 ADD MLOAD PUSH2 0x2A1F PUSH2 0x1A0 DUP6 ADD DUP3 PUSH2 0x2D0F JUMP JUMPDEST DUP1 MLOAD PUSH1 0x40 DUP4 ADD SWAP1 PUSH2 0x2B4B DUP5 DUP3 PUSH2 0x253A JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x2A1F PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x2D0F JUMP JUMPDEST DUP1 MLOAD PUSH1 0x60 DUP4 ADD SWAP1 PUSH2 0x2B6F DUP5 DUP3 PUSH2 0x2D0F JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x2B82 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x2D0F JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x2A1F PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x253A JUMP JUMPDEST DUP1 MLOAD PUSH1 0x40 DUP4 ADD SWAP1 PUSH2 0x2B4B DUP5 DUP3 PUSH2 0x2D0F JUMP JUMPDEST DUP1 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x1A0 DUP5 ADD SWAP1 PUSH2 0x2BBB DUP6 DUP3 PUSH2 0x2D0F JUMP JUMPDEST POP PUSH1 0x20 DUP4 ADD MLOAD PUSH2 0x2BCE PUSH1 0x20 DUP7 ADD DUP3 PUSH2 0x253A JUMP JUMPDEST POP PUSH1 0x40 DUP4 ADD MLOAD PUSH2 0x2BE1 PUSH1 0x40 DUP7 ADD DUP3 PUSH2 0x2D0F JUMP JUMPDEST POP PUSH1 0x60 DUP4 ADD MLOAD DUP5 DUP3 SUB PUSH1 0x60 DUP7 ADD MSTORE PUSH2 0x2BF9 DUP3 DUP3 PUSH2 0x2543 JUMP JUMPDEST SWAP2 POP POP PUSH1 0x80 DUP4 ADD MLOAD DUP5 DUP3 SUB PUSH1 0x80 DUP7 ADD MSTORE PUSH2 0x2C13 DUP3 DUP3 PUSH2 0x28A0 JUMP JUMPDEST SWAP2 POP POP PUSH1 0xA0 DUP4 ADD MLOAD DUP5 DUP3 SUB PUSH1 0xA0 DUP7 ADD MSTORE PUSH2 0x2C2D DUP3 DUP3 PUSH2 0x2658 JUMP JUMPDEST SWAP2 POP POP PUSH1 0xC0 DUP4 ADD MLOAD DUP5 DUP3 SUB PUSH1 0xC0 DUP7 ADD MSTORE PUSH2 0x2C47 DUP3 DUP3 PUSH2 0x259C JUMP JUMPDEST SWAP2 POP POP PUSH1 0xE0 DUP4 ADD MLOAD PUSH2 0x2C5C PUSH1 0xE0 DUP7 ADD DUP3 PUSH2 0x2D0F JUMP JUMPDEST POP PUSH2 0x100 DUP4 ADD MLOAD PUSH2 0x2C71 PUSH2 0x100 DUP7 ADD DUP3 PUSH2 0x2D0F JUMP JUMPDEST POP PUSH2 0x120 DUP4 ADD MLOAD PUSH2 0x2C86 PUSH2 0x120 DUP7 ADD DUP3 PUSH2 0x2D0F JUMP JUMPDEST POP PUSH2 0x140 DUP4 ADD MLOAD PUSH2 0x2C9B PUSH2 0x140 DUP7 ADD DUP3 PUSH2 0x2D0F JUMP JUMPDEST POP PUSH2 0x160 DUP4 ADD MLOAD PUSH2 0x2CB0 PUSH2 0x160 DUP7 ADD DUP3 PUSH2 0x28EE JUMP JUMPDEST POP PUSH2 0x180 DUP4 ADD MLOAD PUSH2 0x29A7 PUSH2 0x180 DUP7 ADD DUP3 PUSH2 0x28EE JUMP JUMPDEST DUP1 MLOAD PUSH1 0x80 DUP4 ADD SWAP1 PUSH2 0x2CD6 DUP5 DUP3 PUSH2 0x2D0F JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x2CE9 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x28EE JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x2CFC PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x28EE JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x2A1F PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x2D21 JUMP JUMPDEST PUSH2 0x2534 DUP2 PUSH2 0x2F0E JUMP JUMPDEST PUSH2 0x2534 DUP2 PUSH2 0x2F37 JUMP JUMPDEST PUSH2 0x2534 DUP2 PUSH2 0x2F20 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2B3 DUP3 DUP5 PUSH2 0x2938 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xAD4 DUP3 DUP5 PUSH2 0x253A JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xAD4 DUP3 DUP5 PUSH2 0x252B JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x2D60 DUP3 DUP6 PUSH2 0x252B JUMP JUMPDEST PUSH2 0x2B3 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x253A JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x2D7B DUP3 DUP6 PUSH2 0x253A JUMP JUMPDEST PUSH2 0x2B3 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2D18 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2B3 DUP2 DUP5 PUSH2 0x26B9 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2B3 DUP2 DUP5 PUSH2 0x2707 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2B3 DUP2 DUP5 PUSH2 0x2755 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2B3 DUP2 DUP5 PUSH2 0x27A3 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2B3 DUP2 DUP5 PUSH2 0x27F1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2B3 DUP2 DUP5 PUSH2 0x2852 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xAD4 DUP3 DUP5 PUSH2 0x292F JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2B3 DUP2 DUP5 PUSH2 0x2967 JUMP JUMPDEST PUSH1 0xC0 DUP2 ADD PUSH2 0xAD4 DUP3 DUP5 PUSH2 0x29AF JUMP JUMPDEST PUSH2 0x1C0 DUP2 ADD PUSH2 0xAD4 DUP3 DUP5 PUSH2 0x2A25 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0xAD4 DUP3 DUP5 PUSH2 0x2B3A JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0xAD4 DUP3 DUP5 PUSH2 0x2B5E JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xAD4 DUP3 DUP5 PUSH2 0x2D0F JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x2D60 DUP3 DUP6 PUSH2 0x2D0F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x2E80 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x2E9E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x2EBE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 PUSH1 0x1F SWAP2 SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAD4 DUP3 PUSH2 0x2F02 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAD4 DUP3 PUSH2 0x2EE7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAD4 DUP3 PUSH2 0x2EF7 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAD4 DUP3 PUSH2 0x2F11 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2F5D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2F45 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x2A1F JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 JUMP JUMPDEST PUSH2 0x2F81 DUP2 PUSH2 0x2EE7 JUMP JUMPDEST DUP2 EQ PUSH2 0x2F8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x2F81 DUP2 PUSH2 0x2EF2 JUMP JUMPDEST PUSH2 0x2F81 DUP2 PUSH2 0x2EF7 JUMP JUMPDEST PUSH2 0x2F81 DUP2 PUSH2 0x2F0E JUMP JUMPDEST PUSH2 0x2F81 DUP2 PUSH2 0x2F11 JUMP JUMPDEST PUSH2 0x2F81 DUP2 PUSH2 0x2F1A JUMP JUMPDEST PUSH2 0x2F81 DUP2 PUSH2 0x2F20 JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 0xEC 0xAD 0xD6 0x2A EXTCODEHASH LOG2 LOG2 0xE9 PUSH8 0x7594D61CD9C42841 0x4F SWAP11 0xBD 0x29 PUSH14 0xC8A9F3192EE0407215296C657870 PUSH6 0x72696D656E74 PUSH2 0x6CF5 PUSH5 0x736F6C6343 STOP SDIV GT STOP BLOCKHASH ","sourceMap":"244:9558:29:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;244:9558:29;;;;;;;"},"deployedBytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100a95760003560e01c8063595642191161007157806359564219146101575780637dd8f6d9146101775780639699486914610197578063995ed99f146101b7578063bdf950c9146101d7578063c5ae5934146101f7576100a9565b80630972bf8b146100ae578063158eca8b146100d75780632b2d5ed6146100f7578063416405d7146101175780634b70d84b14610137575b600080fd5b6100c16100bc366004612075565b610217565b6040516100ce9190612d88565b60405180910390f35b6100ea6100e5366004612137565b6102ba565b6040516100ce9190612e1b565b61010a610105366004612034565b610a3e565b6040516100ce9190612daa565b61012a610125366004612155565b610ada565b6040516100ce9190612e38565b61014a610145366004612034565b610c83565b6040516100ce9190612d99565b61016a610165366004612185565b610d14565b6040516100ce9190612dbb565b61018a610185366004612155565b610e6c565b6040516100ce9190612dfc565b6101aa6101a5366004612264565b610fa8565b6040516100ce9190612dcc565b6101ca6101c536600461220a565b611164565b6040516100ce9190612ddd565b6101ea6101e5366004612155565b6112be565b6040516100ce9190612e0d565b61020a610205366004612137565b61165e565b6040516100ce9190612e2a565b6040805183815260208085028201019091526060908390829082801561025757816020015b61024461196f565b81526020019060019003908161023c5790505b50905060005b828110156102ae5761028f87878381811061027457fe5b90506020020160206102899190810190612137565b866112be565b82828151811061029b57fe5b602090810291909101015260010161025d565b509150505b9392505050565b6102c26119ae565b6000826001600160a01b031663bd6d894d6040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156102ff57600080fd5b505af1158015610313573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610337919081019061230b565b90506000836001600160a01b0316635fe3b5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561037457600080fd5b505afa158015610388573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506103ac91908101906121ec565b9050600080826001600160a01b0316638e8f294b876040518263ffffffff1660e01b81526004016103dd9190612d36565b604080518083038186803b1580156103f457600080fd5b505afa158015610408573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061042c91908101906120fd565b915091506000806104cd886001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b15801561046f57600080fd5b505afa158015610483573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104ab91908101906122b9565b604051806040016040528060048152602001630c68aa8960e31b8152506117f0565b156104de575060009050601261063e565b6000889050806001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561051c57600080fd5b505afa158015610530573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506105549190810190611f52565b9250806001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561058f57600080fd5b505afa1580156105a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506105c79190810190611f52565b6001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156105ff57600080fd5b505afa158015610613573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610637919081019061244e565b60ff169150505b604051806101c00160405280896001600160a01b03168152602001878152602001896001600160a01b031663ae9d70b06040518163ffffffff1660e01b815260040160206040518083038186803b15801561069857600080fd5b505afa1580156106ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506106d0919081019061230b565b8152602001896001600160a01b031663f8f9da286040518163ffffffff1660e01b815260040160206040518083038186803b15801561070e57600080fd5b505afa158015610722573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610746919081019061230b565b8152602001896001600160a01b031663173b99046040518163ffffffff1660e01b815260040160206040518083038186803b15801561078457600080fd5b505afa158015610798573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506107bc919081019061230b565b8152602001896001600160a01b03166347bd37186040518163ffffffff1660e01b815260040160206040518083038186803b1580156107fa57600080fd5b505afa15801561080e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610832919081019061230b565b8152602001896001600160a01b0316638f840ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561087057600080fd5b505afa158015610884573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108a8919081019061230b565b8152602001896001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156108e657600080fd5b505afa1580156108fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061091e919081019061230b565b8152602001896001600160a01b0316633b1d21a26040518163ffffffff1660e01b815260040160206040518083038186803b15801561095c57600080fd5b505afa158015610970573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610994919081019061230b565b81526020018515158152602001848152602001836001600160a01b03168152602001896001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156109ef57600080fd5b505afa158015610a03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a27919081019061244e565b60ff16815260200191909152979650505050505050565b60408051828152602080840282010190915260609082908290828015610a7e57816020015b610a6b611a31565b815260200190600190039081610a635790505b50905060005b82811015610acf57610ab0868683818110610a9b57fe5b90506020020160206102059190810190612137565b828281518110610abc57fe5b6020908102919091010152600101610a84565b509150505b92915050565b610ae2611a48565b6040805160608101918290526370a0823160e01b909152806001600160a01b0385166370a08231610b168660648501612d36565b60206040518083038186803b158015610b2e57600080fd5b505afa158015610b42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b66919081019061230b565b8152602001846001600160a01b031663b4b5ea57856040518263ffffffff1660e01b8152600401610b979190612d36565b60206040518083038186803b158015610baf57600080fd5b505afa158015610bc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610be7919081019061246c565b6001600160601b03168152602001846001600160a01b031663587cde1e856040518263ffffffff1660e01b8152600401610c219190612d36565b60206040518083038186803b158015610c3957600080fd5b505afa158015610c4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c719190810190611f52565b6001600160a01b031690529392505050565b60408051828152602080840282010190915260609082908290828015610cc357816020015b610cb06119ae565b815260200190600190039081610ca85790505b50905060005b82811015610acf57610cf5868683818110610ce057fe5b90506020020160206100e59190810190612137565b828281518110610d0157fe5b6020908102919091010152600101610cc9565b60608083839050604051908082528060200260200182016040528015610d5457816020015b610d41611a72565b815260200190600190039081610d395790505b50905060005b83811015610e62576040518060400160405280868684818110610d7957fe5b9050602002016020610d8e9190810190612430565b63ffffffff168152602001886001600160a01b031663782d6fe189898987818110610db557fe5b9050602002016020610dca9190810190612430565b6040518363ffffffff1660e01b8152600401610de7929190612d6d565b60206040518083038186803b158015610dff57600080fd5b505afa158015610e13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e37919081019061246c565b6001600160601b0316815250828281518110610e4f57fe5b6020908102919091010152600101610d5a565b5095945050505050565b610e74611a8c565b6000806000856001600160a01b0316635ec88c79866040518263ffffffff1660e01b8152600401610ea59190612d36565b60606040518083038186803b158015610ebd57600080fd5b505afa158015610ed1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ef591908101906123ed565b92509250925082600014610f0857600080fd5b604080516060810191829052632aff3bff60e21b909152806001600160a01b03881663abfceffc610f3c8960648501612d36565b60006040518083038186803b158015610f5457600080fd5b505afa158015610f68573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f9091908101906120c9565b81526020810193909352604090920152949350505050565b60608083839050604051908082528060200260200182016040528015610fe857816020015b610fd5611aad565b815260200190600190039081610fcd5790505b50905060005b8381101561115b57606080606080896001600160a01b031663328dd9828a8a8881811061101757fe5b905060200201356040518263ffffffff1660e01b815260040161103a9190612e46565b60006040518083038186803b15801561105257600080fd5b505afa158015611066573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261108e9190810190611f78565b9350935093509350604051806101a001604052806000815260200160006001600160a01b0316815260200160008152602001858152602001848152602001838152602001828152602001600081526020016000815260200160008152602001600081526020016000151581526020016000151581525086868151811061111057fe5b602002602001018190525061114b86868151811061112a57fe5b60200260200101518b8b8b8981811061113f57fe5b90506020020135611849565b505060019092019150610fee9050565b50949350505050565b60606000825190506060816040519080825280602002602001820160405280156111a857816020015b611195611b22565b81526020019060019003908161118d5790505b50905060005b828110156102ae576111be611b49565b876001600160a01b031663e23a9a528784815181106111d957fe5b6020026020010151896040518363ffffffff1660e01b81526004016111ff929190612e54565b60606040518083038186803b15801561121757600080fd5b505afa15801561122b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061124f91908101906122ed565b9050604051806080016040528087848151811061126857fe5b6020026020010151815260200182600001511515815260200182602001511515815260200182604001516001600160601b03168152508383815181106112aa57fe5b6020908102919091010152506001016111ae565b6112c661196f565b6040516370a0823160e01b81526000906001600160a01b038516906370a08231906112f5908690600401612d44565b60206040518083038186803b15801561130d57600080fd5b505afa158015611321573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611345919081019061230b565b90506000846001600160a01b03166317bfdfbc856040518263ffffffff1660e01b81526004016113759190612d44565b602060405180830381600087803b15801561138f57600080fd5b505af11580156113a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506113c7919081019061230b565b90506000856001600160a01b0316633af9e669866040518263ffffffff1660e01b81526004016113f79190612d44565b602060405180830381600087803b15801561141157600080fd5b505af1158015611425573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611449919081019061230b565b905060008061148a886001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b15801561046f57600080fd5b156114a45750506001600160a01b03851680319031611621565b60008890506000816001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b1580156114e457600080fd5b505afa1580156114f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061151c9190810190611f52565b6040516370a0823160e01b81529091506001600160a01b038216906370a082319061154b908c90600401612d44565b60206040518083038186803b15801561156357600080fd5b505afa158015611577573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061159b919081019061230b565b604051636eb1769f60e11b81529094506001600160a01b0382169063dd62ed3e906115cc908c908e90600401612d52565b60206040518083038186803b1580156115e457600080fd5b505afa1580156115f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061161c919081019061230b565b925050505b6040805160c0810182526001600160a01b039990991689526020890195909552938701929092526060860152608085015260a08401525090919050565b611666611a31565b6000826001600160a01b0316635fe3b5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156116a157600080fd5b505afa1580156116b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506116d991908101906121ec565b90506000816001600160a01b0316637dc0d1d06040518163ffffffff1660e01b815260040160206040518083038186803b15801561171657600080fd5b505afa15801561172a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061174e91908101906121ec565b90506040518060400160405280856001600160a01b03168152602001826001600160a01b031663fc57d4df876040518263ffffffff1660e01b81526004016117969190612dee565b60206040518083038186803b1580156117ae57600080fd5b505afa1580156117c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506117e6919081019061230b565b9052949350505050565b6000816040516020016118039190612d2a565b604051602081830303815290604052805190602001208360405160200161182a9190612d2a565b6040516020818303038152906040528051906020012014905092915050565b600080600080600080600080896001600160a01b031663013cf08b8a6040518263ffffffff1660e01b81526004016118819190612e46565b6101206040518083038186803b15801561189a57600080fd5b505afa1580156118ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506118d29190810190612329565b9850985098509850985098509850985050888b6000018181525050878b602001906001600160a01b031690816001600160a01b031681525050868b6040018181525050858b60e0018181525050848b610100018181525050838b610120018181525050828b610140018181525050818b610160019015159081151581525050808b6101800190151590811515815250505050505050505050505050565b6040518060c0016040528060006001600160a01b0316815260200160008152602001600081526020016000815260200160008152602001600081525090565b604051806101c0016040528060006001600160a01b0316815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581526020016000815260200160006001600160a01b0316815260200160008152602001600081525090565b604080518082019091526000808252602082015290565b6040518060600160405280600081526020016000815260200160006001600160a01b031681525090565b604051806040016040528060008152602001600081525090565b60405180606001604052806060815260200160008152602001600081525090565b604051806101a001604052806000815260200160006001600160a01b031681526020016000815260200160608152602001606081526020016060815260200160608152602001600081526020016000815260200160008152602001600081526020016000151581526020016000151581525090565b60408051608081018252600080825260208201819052918101829052606081019190915290565b604080516060810182526000808252602082018190529181019190915290565b8035610ad481612f78565b8051610ad481612f78565b600082601f830112611b9057600080fd5b8151611ba3611b9e82612e88565b612e62565b91508181835260208401935060208101905083856020840282011115611bc857600080fd5b60005b83811015611bf45781611bde8882611b74565b8452506020928301929190910190600101611bcb565b5050505092915050565b600082601f830112611c0f57600080fd5b8151611c1d611b9e82612e88565b81815260209384019390925082018360005b83811015611bf45781518601611c458882611e5b565b8452506020928301929190910190600101611c2f565b60008083601f840112611c6d57600080fd5b5081356001600160401b03811115611c8457600080fd5b602083019150836020820283011115611c9c57600080fd5b9250929050565b600082601f830112611cb457600080fd5b8151611cc2611b9e82612e88565b91508181835260208401935060208101905083856020840282011115611ce757600080fd5b60005b83811015611bf45781611cfd8882611eb5565b8452506020928301929190910190600101611cea565b600082601f830112611d2457600080fd5b8151611d32611b9e82612e88565b81815260209384019390925082018360005b83811015611bf45781518601611d5a8882611e5b565b8452506020928301929190910190600101611d44565b600082601f830112611d8157600080fd5b8135611d8f611b9e82612e88565b91508181835260208401935060208101905083856020840282011115611db457600080fd5b60005b83811015611bf45781611dca8882611f1b565b8452506020928301929190910190600101611db7565b600082601f830112611df157600080fd5b8151611dff611b9e82612e88565b91508181835260208401935060208101905083856020840282011115611e2457600080fd5b60005b83811015611bf45781611e3a8882611f26565b8452506020928301929190910190600101611e27565b8051610ad481612f8f565b600082601f830112611e6c57600080fd5b8151611e7a611b9e82612ea8565b91508082526020830160208301858383011115611e9657600080fd5b611ea1838284612f42565b50505092915050565b8035610ad481612f98565b8051610ad481612f98565b600060608284031215611ed257600080fd5b611edc6060612e62565b90506000611eea8484611e50565b8252506020611efb84848301611e50565b6020830152506040611f0f84828501611f47565b60408301525092915050565b8035610ad481612fa1565b8051610ad481612fa1565b8035610ad481612faa565b8051610ad481612fb3565b8051610ad481612fbc565b600060208284031215611f6457600080fd5b6000611f708484611b74565b949350505050565b60008060008060808587031215611f8e57600080fd5b84516001600160401b03811115611fa457600080fd5b611fb087828801611b7f565b94505060208501516001600160401b03811115611fcc57600080fd5b611fd887828801611de0565b93505060408501516001600160401b03811115611ff457600080fd5b61200087828801611d13565b92505060608501516001600160401b0381111561201c57600080fd5b61202887828801611bfe565b91505092959194509250565b6000806020838503121561204757600080fd5b82356001600160401b0381111561205d57600080fd5b61206985828601611c5b565b92509250509250929050565b60008060006040848603121561208a57600080fd5b83356001600160401b038111156120a057600080fd5b6120ac86828701611c5b565b935093505060206120bf86828701611b69565b9150509250925092565b6000602082840312156120db57600080fd5b81516001600160401b038111156120f157600080fd5b611f7084828501611ca3565b6000806040838503121561211057600080fd5b600061211c8585611e50565b925050602061212d85828601611f26565b9150509250929050565b60006020828403121561214957600080fd5b6000611f708484611eaa565b6000806040838503121561216857600080fd5b60006121748585611eaa565b925050602061212d85828601611b69565b6000806000806060858703121561219b57600080fd5b60006121a78787611eaa565b94505060206121b887828801611b69565b93505060408501356001600160401b038111156121d457600080fd5b6121e087828801611c5b565b95989497509550505050565b6000602082840312156121fe57600080fd5b6000611f708484611eb5565b60008060006060848603121561221f57600080fd5b600061222b8686611eaa565b935050602061223c86828701611b69565b92505060408401356001600160401b0381111561225857600080fd5b6120bf86828701611d70565b60008060006040848603121561227957600080fd5b60006122858686611eaa565b93505060208401356001600160401b038111156122a157600080fd5b6122ad86828701611c5b565b92509250509250925092565b6000602082840312156122cb57600080fd5b81516001600160401b038111156122e157600080fd5b611f7084828501611e5b565b6000606082840312156122ff57600080fd5b6000611f708484611ec0565b60006020828403121561231d57600080fd5b6000611f708484611f26565b60008060008060008060008060006101208a8c03121561234857600080fd5b60006123548c8c611f26565b99505060206123658c828d01611b74565b98505060406123768c828d01611f26565b97505060606123878c828d01611f26565b96505060806123988c828d01611f26565b95505060a06123a98c828d01611f26565b94505060c06123ba8c828d01611f26565b93505060e06123cb8c828d01611e50565b9250506101006123dd8c828d01611e50565b9150509295985092959850929598565b60008060006060848603121561240257600080fd5b600061240e8686611f26565b935050602061241f86828701611f26565b92505060406120bf86828701611f26565b60006020828403121561244257600080fd5b6000611f708484611f31565b60006020828403121561246057600080fd5b6000611f708484611f3c565b60006020828403121561247e57600080fd5b6000611f708484611f47565b6000612496838361253a565b505060200190565b60006102b383836128f7565b6000612496838361292f565b60006124c283836129af565b505060c00190565b60006124d68383612a25565b50506101c00190565b60006124eb8383612b3a565b505060400190565b60006124eb8383612b95565b60006102b38383612ba6565b60006125178383612cc5565b505060800190565b60006124968383612d0f565b61253481612f2c565b82525050565b61253481612ee7565b600061254e82612ed5565b6125588185612ed9565b935061256383612ecf565b8060005b8381101561259157815161257b888261248a565b975061258683612ecf565b925050600101612567565b509495945050505050565b60006125a782612ed5565b6125b18185612ed9565b9350836020820285016125c385612ecf565b8060005b858110156125fd57848403895281516125e0858261249e565b94506125eb83612ecf565b60209a909a01999250506001016125c7565b5091979650505050505050565b600061261582612ed5565b61261f8185612ed9565b935061262a83612ecf565b8060005b8381101561259157815161264288826124aa565b975061264d83612ecf565b92505060010161262e565b600061266382612ed5565b61266d8185612ed9565b93508360208202850161267f85612ecf565b8060005b858110156125fd578484038952815161269c858261249e565b94506126a783612ecf565b60209a909a0199925050600101612683565b60006126c482612ed5565b6126ce8185612ed9565b93506126d983612ecf565b8060005b838110156125915781516126f188826124b6565b97506126fc83612ecf565b9250506001016126dd565b600061271282612ed5565b61271c8185612ed9565b935061272783612ecf565b8060005b8381101561259157815161273f88826124ca565b975061274a83612ecf565b92505060010161272b565b600061276082612ed5565b61276a8185612ed9565b935061277583612ecf565b8060005b8381101561259157815161278d88826124df565b975061279883612ecf565b925050600101612779565b60006127ae82612ed5565b6127b88185612ed9565b93506127c383612ecf565b8060005b838110156125915781516127db88826124f3565b97506127e683612ecf565b9250506001016127c7565b60006127fc82612ed5565b6128068185612ed9565b93508360208202850161281885612ecf565b8060005b858110156125fd578484038952815161283585826124ff565b945061284083612ecf565b60209a909a019992505060010161281c565b600061285d82612ed5565b6128678185612ed9565b935061287283612ecf565b8060005b8381101561259157815161288a888261250b565b975061289583612ecf565b925050600101612876565b60006128ab82612ed5565b6128b58185612ed9565b93506128c083612ecf565b8060005b838110156125915781516128d8888261251f565b97506128e383612ecf565b9250506001016128c4565b61253481612ef2565b600061290282612ed5565b61290c8185612ed9565b935061291c818560208601612f42565b61292581612f6e565b9093019392505050565b61253481612ef7565b600061294382612ed5565b61294d8185612ee2565b935061295d818560208601612f42565b9290920192915050565b805160608084526000919084019061297f828261260a565b91505060208301516129946020860182612d0f565b5060408301516129a76040860182612d0f565b509392505050565b805160c08301906129c0848261253a565b5060208201516129d36020850182612d0f565b5060408201516129e66040850182612d0f565b5060608201516129f96060850182612d0f565b506080820151612a0c6080850182612d0f565b5060a0820151612a1f60a0850182612d0f565b50505050565b80516101c0830190612a37848261253a565b506020820151612a4a6020850182612d0f565b506040820151612a5d6040850182612d0f565b506060820151612a706060850182612d0f565b506080820151612a836080850182612d0f565b5060a0820151612a9660a0850182612d0f565b5060c0820151612aa960c0850182612d0f565b5060e0820151612abc60e0850182612d0f565b50610100820151612ad1610100850182612d0f565b50610120820151612ae66101208501826128ee565b50610140820151612afb610140850182612d0f565b50610160820151612b1061016085018261253a565b50610180820151612b25610180850182612d0f565b506101a0820151612a1f6101a0850182612d0f565b80516040830190612b4b848261253a565b506020820151612a1f6020850182612d0f565b80516060830190612b6f8482612d0f565b506020820151612b826020850182612d0f565b506040820151612a1f604085018261253a565b80516040830190612b4b8482612d0f565b80516000906101a0840190612bbb8582612d0f565b506020830151612bce602086018261253a565b506040830151612be16040860182612d0f565b5060608301518482036060860152612bf98282612543565b91505060808301518482036080860152612c1382826128a0565b91505060a083015184820360a0860152612c2d8282612658565b91505060c083015184820360c0860152612c47828261259c565b91505060e0830151612c5c60e0860182612d0f565b50610100830151612c71610100860182612d0f565b50610120830151612c86610120860182612d0f565b50610140830151612c9b610140860182612d0f565b50610160830151612cb06101608601826128ee565b506101808301516129a76101808601826128ee565b80516080830190612cd68482612d0f565b506020820151612ce960208501826128ee565b506040820151612cfc60408501826128ee565b506060820151612a1f6060850182612d21565b61253481612f0e565b61253481612f37565b61253481612f20565b60006102b38284612938565b60208101610ad4828461253a565b60208101610ad4828461252b565b60408101612d60828561252b565b6102b3602083018461253a565b60408101612d7b828561253a565b6102b36020830184612d18565b602080825281016102b381846126b9565b602080825281016102b38184612707565b602080825281016102b38184612755565b602080825281016102b381846127a3565b602080825281016102b381846127f1565b602080825281016102b38184612852565b60208101610ad4828461292f565b602080825281016102b38184612967565b60c08101610ad482846129af565b6101c08101610ad48284612a25565b60408101610ad48284612b3a565b60608101610ad48284612b5e565b60208101610ad48284612d0f565b60408101612d608285612d0f565b6040518181016001600160401b0381118282101715612e8057600080fd5b604052919050565b60006001600160401b03821115612e9e57600080fd5b5060209081020190565b60006001600160401b03821115612ebe57600080fd5b506020601f91909101601f19160190565b60200190565b5190565b90815260200190565b919050565b6000610ad482612f02565b151590565b6000610ad482612ee7565b6001600160a01b031690565b90565b63ffffffff1690565b60ff1690565b6001600160601b031690565b6000610ad482612ef7565b6000610ad482612f11565b60005b83811015612f5d578181015183820152602001612f45565b83811115612a1f5750506000910152565b601f01601f191690565b612f8181612ee7565b8114612f8c57600080fd5b50565b612f8181612ef2565b612f8181612ef7565b612f8181612f0e565b612f8181612f11565b612f8181612f1a565b612f8181612f2056fea365627a7a72315820ecadd62a3fa2a2e9677594d61cd9c428414f9abd296dc8a9f3192ee0407215296c6578706572696d656e74616cf564736f6c63430005110040","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x59564219 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x59564219 EQ PUSH2 0x157 JUMPI DUP1 PUSH4 0x7DD8F6D9 EQ PUSH2 0x177 JUMPI DUP1 PUSH4 0x96994869 EQ PUSH2 0x197 JUMPI DUP1 PUSH4 0x995ED99F EQ PUSH2 0x1B7 JUMPI DUP1 PUSH4 0xBDF950C9 EQ PUSH2 0x1D7 JUMPI DUP1 PUSH4 0xC5AE5934 EQ PUSH2 0x1F7 JUMPI PUSH2 0xA9 JUMP JUMPDEST DUP1 PUSH4 0x972BF8B EQ PUSH2 0xAE JUMPI DUP1 PUSH4 0x158ECA8B EQ PUSH2 0xD7 JUMPI DUP1 PUSH4 0x2B2D5ED6 EQ PUSH2 0xF7 JUMPI DUP1 PUSH4 0x416405D7 EQ PUSH2 0x117 JUMPI DUP1 PUSH4 0x4B70D84B EQ PUSH2 0x137 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC1 PUSH2 0xBC CALLDATASIZE PUSH1 0x4 PUSH2 0x2075 JUMP JUMPDEST PUSH2 0x217 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xCE SWAP2 SWAP1 PUSH2 0x2D88 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xEA PUSH2 0xE5 CALLDATASIZE PUSH1 0x4 PUSH2 0x2137 JUMP JUMPDEST PUSH2 0x2BA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xCE SWAP2 SWAP1 PUSH2 0x2E1B JUMP JUMPDEST PUSH2 0x10A PUSH2 0x105 CALLDATASIZE PUSH1 0x4 PUSH2 0x2034 JUMP JUMPDEST PUSH2 0xA3E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xCE SWAP2 SWAP1 PUSH2 0x2DAA JUMP JUMPDEST PUSH2 0x12A PUSH2 0x125 CALLDATASIZE PUSH1 0x4 PUSH2 0x2155 JUMP JUMPDEST PUSH2 0xADA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xCE SWAP2 SWAP1 PUSH2 0x2E38 JUMP JUMPDEST PUSH2 0x14A PUSH2 0x145 CALLDATASIZE PUSH1 0x4 PUSH2 0x2034 JUMP JUMPDEST PUSH2 0xC83 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xCE SWAP2 SWAP1 PUSH2 0x2D99 JUMP JUMPDEST PUSH2 0x16A PUSH2 0x165 CALLDATASIZE PUSH1 0x4 PUSH2 0x2185 JUMP JUMPDEST PUSH2 0xD14 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xCE SWAP2 SWAP1 PUSH2 0x2DBB JUMP JUMPDEST PUSH2 0x18A PUSH2 0x185 CALLDATASIZE PUSH1 0x4 PUSH2 0x2155 JUMP JUMPDEST PUSH2 0xE6C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xCE SWAP2 SWAP1 PUSH2 0x2DFC JUMP JUMPDEST PUSH2 0x1AA PUSH2 0x1A5 CALLDATASIZE PUSH1 0x4 PUSH2 0x2264 JUMP JUMPDEST PUSH2 0xFA8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xCE SWAP2 SWAP1 PUSH2 0x2DCC JUMP JUMPDEST PUSH2 0x1CA PUSH2 0x1C5 CALLDATASIZE PUSH1 0x4 PUSH2 0x220A JUMP JUMPDEST PUSH2 0x1164 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xCE SWAP2 SWAP1 PUSH2 0x2DDD JUMP JUMPDEST PUSH2 0x1EA PUSH2 0x1E5 CALLDATASIZE PUSH1 0x4 PUSH2 0x2155 JUMP JUMPDEST PUSH2 0x12BE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xCE SWAP2 SWAP1 PUSH2 0x2E0D JUMP JUMPDEST PUSH2 0x20A PUSH2 0x205 CALLDATASIZE PUSH1 0x4 PUSH2 0x2137 JUMP JUMPDEST PUSH2 0x165E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xCE SWAP2 SWAP1 PUSH2 0x2E2A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x20 DUP1 DUP6 MUL DUP3 ADD ADD SWAP1 SWAP2 MSTORE PUSH1 0x60 SWAP1 DUP4 SWAP1 DUP3 SWAP1 DUP3 DUP1 ISZERO PUSH2 0x257 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x244 PUSH2 0x196F JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x23C JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2AE JUMPI PUSH2 0x28F DUP8 DUP8 DUP4 DUP2 DUP2 LT PUSH2 0x274 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x289 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2137 JUMP JUMPDEST DUP7 PUSH2 0x12BE JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x29B JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x25D JUMP JUMPDEST POP SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x2C2 PUSH2 0x19AE JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xBD6D894D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x313 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 PUSH2 0x337 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x230B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5FE3B567 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 0x374 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x388 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 PUSH2 0x3AC SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x21EC JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8E8F294B DUP8 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP2 SWAP1 PUSH2 0x2D36 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x408 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 PUSH2 0x42C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x20FD JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH2 0x4CD DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x95D89B41 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x46F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x483 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x4AB SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x22B9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4 DUP2 MSTORE PUSH1 0x20 ADD PUSH4 0xC68AA89 PUSH1 0xE3 SHL DUP2 MSTORE POP PUSH2 0x17F0 JUMP JUMPDEST ISZERO PUSH2 0x4DE JUMPI POP PUSH1 0x0 SWAP1 POP PUSH1 0x12 PUSH2 0x63E JUMP JUMPDEST PUSH1 0x0 DUP9 SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6F307DC3 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 0x51C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x530 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 PUSH2 0x554 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1F52 JUMP JUMPDEST SWAP3 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6F307DC3 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 0x58F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5A3 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 PUSH2 0x5C7 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1F52 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x313CE567 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 0x5FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x613 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 PUSH2 0x637 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x244E JUMP JUMPDEST PUSH1 0xFF AND SWAP2 POP POP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x1C0 ADD PUSH1 0x40 MSTORE DUP1 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xAE9D70B0 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 0x698 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x6AC 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 PUSH2 0x6D0 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x230B JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xF8F9DA28 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 0x70E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x722 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 PUSH2 0x746 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x230B JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x173B9904 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 0x784 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x798 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 PUSH2 0x7BC SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x230B JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x47BD3718 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 0x7FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x80E 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 PUSH2 0x832 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x230B JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8F840DDD 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 0x870 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x884 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 PUSH2 0x8A8 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x230B JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP10 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 0x8E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x8FA 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 PUSH2 0x91E SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x230B JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x3B1D21A2 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 0x95C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x970 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 PUSH2 0x994 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x230B JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP6 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x313CE567 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 0x9EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA03 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 PUSH2 0xA27 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x244E JUMP JUMPDEST PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP5 MUL DUP3 ADD ADD SWAP1 SWAP2 MSTORE PUSH1 0x60 SWAP1 DUP3 SWAP1 DUP3 SWAP1 DUP3 DUP1 ISZERO PUSH2 0xA7E JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0xA6B PUSH2 0x1A31 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xA63 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0xACF JUMPI PUSH2 0xAB0 DUP7 DUP7 DUP4 DUP2 DUP2 LT PUSH2 0xA9B JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x205 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2137 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xABC JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0xA84 JUMP JUMPDEST POP SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xAE2 PUSH2 0x1A48 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD SWAP2 DUP3 SWAP1 MSTORE PUSH4 0x70A08231 PUSH1 0xE0 SHL SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH4 0x70A08231 PUSH2 0xB16 DUP7 PUSH1 0x64 DUP6 ADD PUSH2 0x2D36 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB2E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xB42 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 PUSH2 0xB66 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x230B JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xB4B5EA57 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB97 SWAP2 SWAP1 PUSH2 0x2D36 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xBC3 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 PUSH2 0xBE7 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x246C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x587CDE1E DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC21 SWAP2 SWAP1 PUSH2 0x2D36 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC39 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC4D 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 PUSH2 0xC71 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1F52 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP5 MUL DUP3 ADD ADD SWAP1 SWAP2 MSTORE PUSH1 0x60 SWAP1 DUP3 SWAP1 DUP3 SWAP1 DUP3 DUP1 ISZERO PUSH2 0xCC3 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0xCB0 PUSH2 0x19AE JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xCA8 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0xACF JUMPI PUSH2 0xCF5 DUP7 DUP7 DUP4 DUP2 DUP2 LT PUSH2 0xCE0 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0xE5 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2137 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xD01 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0xCC9 JUMP JUMPDEST PUSH1 0x60 DUP1 DUP4 DUP4 SWAP1 POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xD54 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0xD41 PUSH2 0x1A72 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xD39 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xE62 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP7 DUP7 DUP5 DUP2 DUP2 LT PUSH2 0xD79 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0xD8E SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2430 JUMP JUMPDEST PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x782D6FE1 DUP10 DUP10 DUP10 DUP8 DUP2 DUP2 LT PUSH2 0xDB5 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0xDCA SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2430 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xDE7 SWAP3 SWAP2 SWAP1 PUSH2 0x2D6D JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE13 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 PUSH2 0xE37 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x246C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 MSTORE POP DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xE4F JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0xD5A JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0xE74 PUSH2 0x1A8C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5EC88C79 DUP7 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xEA5 SWAP2 SWAP1 PUSH2 0x2D36 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEBD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xED1 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 PUSH2 0xEF5 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x23ED JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP DUP3 PUSH1 0x0 EQ PUSH2 0xF08 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD SWAP2 DUP3 SWAP1 MSTORE PUSH4 0x2AFF3BFF PUSH1 0xE2 SHL SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH4 0xABFCEFFC PUSH2 0xF3C DUP10 PUSH1 0x64 DUP6 ADD PUSH2 0x2D36 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF54 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF68 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0xF90 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x20C9 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 SWAP3 ADD MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 DUP4 DUP4 SWAP1 POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xFE8 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0xFD5 PUSH2 0x1AAD JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xFCD JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x115B JUMPI PUSH1 0x60 DUP1 PUSH1 0x60 DUP1 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x328DD982 DUP11 DUP11 DUP9 DUP2 DUP2 LT PUSH2 0x1017 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x103A SWAP2 SWAP1 PUSH2 0x2E46 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1052 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1066 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x108E SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1F78 JUMP JUMPDEST SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP PUSH1 0x40 MLOAD DUP1 PUSH2 0x1A0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE POP DUP7 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0x1110 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP PUSH2 0x114B DUP7 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0x112A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP12 DUP12 DUP12 DUP10 DUP2 DUP2 LT PUSH2 0x113F JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH2 0x1849 JUMP JUMPDEST POP POP PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 POP PUSH2 0xFEE SWAP1 POP JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP3 MLOAD SWAP1 POP PUSH1 0x60 DUP2 PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x11A8 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x1195 PUSH2 0x1B22 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x118D JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2AE JUMPI PUSH2 0x11BE PUSH2 0x1B49 JUMP JUMPDEST DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE23A9A52 DUP8 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x11D9 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP10 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x11FF SWAP3 SWAP2 SWAP1 PUSH2 0x2E54 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1217 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x122B 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 PUSH2 0x124F SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x22ED JUMP JUMPDEST SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 DUP8 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1268 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x0 ADD MLOAD ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x20 ADD MLOAD ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x40 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 MSTORE POP DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x12AA JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP PUSH1 0x1 ADD PUSH2 0x11AE JUMP JUMPDEST PUSH2 0x12C6 PUSH2 0x196F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x12F5 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x2D44 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x130D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1321 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 PUSH2 0x1345 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x230B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x17BFDFBC DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1375 SWAP2 SWAP1 PUSH2 0x2D44 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x138F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x13A3 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 PUSH2 0x13C7 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x230B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x3AF9E669 DUP7 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x13F7 SWAP2 SWAP1 PUSH2 0x2D44 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1411 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1425 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 PUSH2 0x1449 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x230B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x148A DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x95D89B41 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x46F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST ISZERO PUSH2 0x14A4 JUMPI POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP1 BALANCE SWAP1 BALANCE PUSH2 0x1621 JUMP JUMPDEST PUSH1 0x0 DUP9 SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6F307DC3 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 0x14E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x14F8 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 PUSH2 0x151C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1F52 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x154B SWAP1 DUP13 SWAP1 PUSH1 0x4 ADD PUSH2 0x2D44 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1563 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1577 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 PUSH2 0x159B SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x230B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x6EB1769F PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 SWAP5 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0xDD62ED3E SWAP1 PUSH2 0x15CC SWAP1 DUP13 SWAP1 DUP15 SWAP1 PUSH1 0x4 ADD PUSH2 0x2D52 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x15E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x15F8 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 PUSH2 0x161C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x230B JUMP JUMPDEST SWAP3 POP POP POP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xC0 DUP2 ADD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP10 SWAP1 SWAP10 AND DUP10 MSTORE PUSH1 0x20 DUP10 ADD SWAP6 SWAP1 SWAP6 MSTORE SWAP4 DUP8 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x80 DUP6 ADD MSTORE PUSH1 0xA0 DUP5 ADD MSTORE POP SWAP1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1666 PUSH2 0x1A31 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5FE3B567 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 0x16A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x16B5 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 PUSH2 0x16D9 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x21EC JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x7DC0D1D0 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 0x1716 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x172A 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 PUSH2 0x174E SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x21EC JUMP JUMPDEST SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFC57D4DF DUP8 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1796 SWAP2 SWAP1 PUSH2 0x2DEE JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x17AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x17C2 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 PUSH2 0x17E6 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x230B JUMP JUMPDEST SWAP1 MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1803 SWAP2 SWAP1 PUSH2 0x2D2A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x182A SWAP2 SWAP1 PUSH2 0x2D2A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 EQ SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x13CF08B DUP11 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1881 SWAP2 SWAP1 PUSH2 0x2E46 JUMP JUMPDEST PUSH2 0x120 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x189A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x18AE 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 PUSH2 0x18D2 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2329 JUMP JUMPDEST SWAP9 POP SWAP9 POP SWAP9 POP SWAP9 POP SWAP9 POP SWAP9 POP SWAP9 POP SWAP9 POP POP DUP9 DUP12 PUSH1 0x0 ADD DUP2 DUP2 MSTORE POP POP DUP8 DUP12 PUSH1 0x20 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP7 DUP12 PUSH1 0x40 ADD DUP2 DUP2 MSTORE POP POP DUP6 DUP12 PUSH1 0xE0 ADD DUP2 DUP2 MSTORE POP POP DUP5 DUP12 PUSH2 0x100 ADD DUP2 DUP2 MSTORE POP POP DUP4 DUP12 PUSH2 0x120 ADD DUP2 DUP2 MSTORE POP POP DUP3 DUP12 PUSH2 0x140 ADD DUP2 DUP2 MSTORE POP POP DUP2 DUP12 PUSH2 0x160 ADD SWAP1 ISZERO ISZERO SWAP1 DUP2 ISZERO ISZERO DUP2 MSTORE POP POP DUP1 DUP12 PUSH2 0x180 ADD SWAP1 ISZERO ISZERO SWAP1 DUP2 ISZERO ISZERO DUP2 MSTORE POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xC0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x1C0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x1A0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xAD4 DUP2 PUSH2 0x2F78 JUMP JUMPDEST DUP1 MLOAD PUSH2 0xAD4 DUP2 PUSH2 0x2F78 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1B90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1BA3 PUSH2 0x1B9E DUP3 PUSH2 0x2E88 JUMP JUMPDEST PUSH2 0x2E62 JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH1 0x20 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0x1BC8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1BF4 JUMPI DUP2 PUSH2 0x1BDE DUP9 DUP3 PUSH2 0x1B74 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1BCB JUMP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1C0F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1C1D PUSH2 0x1B9E DUP3 PUSH2 0x2E88 JUMP JUMPDEST DUP2 DUP2 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 POP DUP3 ADD DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1BF4 JUMPI DUP2 MLOAD DUP7 ADD PUSH2 0x1C45 DUP9 DUP3 PUSH2 0x1E5B JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1C2F JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x1C6D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x1C84 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x1C9C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1CB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1CC2 PUSH2 0x1B9E DUP3 PUSH2 0x2E88 JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH1 0x20 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0x1CE7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1BF4 JUMPI DUP2 PUSH2 0x1CFD DUP9 DUP3 PUSH2 0x1EB5 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1CEA JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1D24 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1D32 PUSH2 0x1B9E DUP3 PUSH2 0x2E88 JUMP JUMPDEST DUP2 DUP2 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 POP DUP3 ADD DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1BF4 JUMPI DUP2 MLOAD DUP7 ADD PUSH2 0x1D5A DUP9 DUP3 PUSH2 0x1E5B JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1D44 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1D81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1D8F PUSH2 0x1B9E DUP3 PUSH2 0x2E88 JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH1 0x20 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0x1DB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1BF4 JUMPI DUP2 PUSH2 0x1DCA DUP9 DUP3 PUSH2 0x1F1B JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1DB7 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1DF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1DFF PUSH2 0x1B9E DUP3 PUSH2 0x2E88 JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH1 0x20 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0x1E24 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1BF4 JUMPI DUP2 PUSH2 0x1E3A DUP9 DUP3 PUSH2 0x1F26 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1E27 JUMP JUMPDEST DUP1 MLOAD PUSH2 0xAD4 DUP2 PUSH2 0x2F8F JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1E6C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1E7A PUSH2 0x1B9E DUP3 PUSH2 0x2EA8 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x1E96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1EA1 DUP4 DUP3 DUP5 PUSH2 0x2F42 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xAD4 DUP2 PUSH2 0x2F98 JUMP JUMPDEST DUP1 MLOAD PUSH2 0xAD4 DUP2 PUSH2 0x2F98 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1ED2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1EDC PUSH1 0x60 PUSH2 0x2E62 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1EEA DUP5 DUP5 PUSH2 0x1E50 JUMP JUMPDEST DUP3 MSTORE POP PUSH1 0x20 PUSH2 0x1EFB DUP5 DUP5 DUP4 ADD PUSH2 0x1E50 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 PUSH2 0x1F0F DUP5 DUP3 DUP6 ADD PUSH2 0x1F47 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xAD4 DUP2 PUSH2 0x2FA1 JUMP JUMPDEST DUP1 MLOAD PUSH2 0xAD4 DUP2 PUSH2 0x2FA1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xAD4 DUP2 PUSH2 0x2FAA JUMP JUMPDEST DUP1 MLOAD PUSH2 0xAD4 DUP2 PUSH2 0x2FB3 JUMP JUMPDEST DUP1 MLOAD PUSH2 0xAD4 DUP2 PUSH2 0x2FBC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1F64 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1F70 DUP5 DUP5 PUSH2 0x1B74 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1F8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x1FA4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1FB0 DUP8 DUP3 DUP9 ADD PUSH2 0x1B7F JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x1FCC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1FD8 DUP8 DUP3 DUP9 ADD PUSH2 0x1DE0 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 DUP6 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x1FF4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2000 DUP8 DUP3 DUP9 ADD PUSH2 0x1D13 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x201C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2028 DUP8 DUP3 DUP9 ADD PUSH2 0x1BFE JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2047 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x205D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2069 DUP6 DUP3 DUP7 ADD PUSH2 0x1C5B JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x208A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x20A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x20AC DUP7 DUP3 DUP8 ADD PUSH2 0x1C5B JUMP JUMPDEST SWAP4 POP SWAP4 POP POP PUSH1 0x20 PUSH2 0x20BF DUP7 DUP3 DUP8 ADD PUSH2 0x1B69 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x20DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x20F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1F70 DUP5 DUP3 DUP6 ADD PUSH2 0x1CA3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2110 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x211C DUP6 DUP6 PUSH2 0x1E50 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x212D DUP6 DUP3 DUP7 ADD PUSH2 0x1F26 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2149 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1F70 DUP5 DUP5 PUSH2 0x1EAA JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2168 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2174 DUP6 DUP6 PUSH2 0x1EAA JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x212D DUP6 DUP3 DUP7 ADD PUSH2 0x1B69 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x219B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x21A7 DUP8 DUP8 PUSH2 0x1EAA JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x21B8 DUP8 DUP3 DUP9 ADD PUSH2 0x1B69 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x21D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x21E0 DUP8 DUP3 DUP9 ADD PUSH2 0x1C5B JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x21FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1F70 DUP5 DUP5 PUSH2 0x1EB5 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x221F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x222B DUP7 DUP7 PUSH2 0x1EAA JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x223C DUP7 DUP3 DUP8 ADD PUSH2 0x1B69 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2258 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x20BF DUP7 DUP3 DUP8 ADD PUSH2 0x1D70 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2279 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2285 DUP7 DUP7 PUSH2 0x1EAA JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x22A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x22AD DUP7 DUP3 DUP8 ADD PUSH2 0x1C5B JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x22CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x22E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1F70 DUP5 DUP3 DUP6 ADD PUSH2 0x1E5B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x22FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1F70 DUP5 DUP5 PUSH2 0x1EC0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x231D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1F70 DUP5 DUP5 PUSH2 0x1F26 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x120 DUP11 DUP13 SUB SLT ISZERO PUSH2 0x2348 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2354 DUP13 DUP13 PUSH2 0x1F26 JUMP JUMPDEST SWAP10 POP POP PUSH1 0x20 PUSH2 0x2365 DUP13 DUP3 DUP14 ADD PUSH2 0x1B74 JUMP JUMPDEST SWAP9 POP POP PUSH1 0x40 PUSH2 0x2376 DUP13 DUP3 DUP14 ADD PUSH2 0x1F26 JUMP JUMPDEST SWAP8 POP POP PUSH1 0x60 PUSH2 0x2387 DUP13 DUP3 DUP14 ADD PUSH2 0x1F26 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x80 PUSH2 0x2398 DUP13 DUP3 DUP14 ADD PUSH2 0x1F26 JUMP JUMPDEST SWAP6 POP POP PUSH1 0xA0 PUSH2 0x23A9 DUP13 DUP3 DUP14 ADD PUSH2 0x1F26 JUMP JUMPDEST SWAP5 POP POP PUSH1 0xC0 PUSH2 0x23BA DUP13 DUP3 DUP14 ADD PUSH2 0x1F26 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xE0 PUSH2 0x23CB DUP13 DUP3 DUP14 ADD PUSH2 0x1E50 JUMP JUMPDEST SWAP3 POP POP PUSH2 0x100 PUSH2 0x23DD DUP13 DUP3 DUP14 ADD PUSH2 0x1E50 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2402 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x240E DUP7 DUP7 PUSH2 0x1F26 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x241F DUP7 DUP3 DUP8 ADD PUSH2 0x1F26 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x20BF DUP7 DUP3 DUP8 ADD PUSH2 0x1F26 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2442 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1F70 DUP5 DUP5 PUSH2 0x1F31 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2460 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1F70 DUP5 DUP5 PUSH2 0x1F3C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x247E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1F70 DUP5 DUP5 PUSH2 0x1F47 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2496 DUP4 DUP4 PUSH2 0x253A JUMP JUMPDEST POP POP PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2B3 DUP4 DUP4 PUSH2 0x28F7 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2496 DUP4 DUP4 PUSH2 0x292F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x24C2 DUP4 DUP4 PUSH2 0x29AF JUMP JUMPDEST POP POP PUSH1 0xC0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x24D6 DUP4 DUP4 PUSH2 0x2A25 JUMP JUMPDEST POP POP PUSH2 0x1C0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x24EB DUP4 DUP4 PUSH2 0x2B3A JUMP JUMPDEST POP POP PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x24EB DUP4 DUP4 PUSH2 0x2B95 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2B3 DUP4 DUP4 PUSH2 0x2BA6 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2517 DUP4 DUP4 PUSH2 0x2CC5 JUMP JUMPDEST POP POP PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2496 DUP4 DUP4 PUSH2 0x2D0F JUMP JUMPDEST PUSH2 0x2534 DUP2 PUSH2 0x2F2C JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x2534 DUP2 PUSH2 0x2EE7 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x254E DUP3 PUSH2 0x2ED5 JUMP JUMPDEST PUSH2 0x2558 DUP2 DUP6 PUSH2 0x2ED9 JUMP JUMPDEST SWAP4 POP PUSH2 0x2563 DUP4 PUSH2 0x2ECF JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2591 JUMPI DUP2 MLOAD PUSH2 0x257B DUP9 DUP3 PUSH2 0x248A JUMP JUMPDEST SWAP8 POP PUSH2 0x2586 DUP4 PUSH2 0x2ECF JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x2567 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x25A7 DUP3 PUSH2 0x2ED5 JUMP JUMPDEST PUSH2 0x25B1 DUP2 DUP6 PUSH2 0x2ED9 JUMP JUMPDEST SWAP4 POP DUP4 PUSH1 0x20 DUP3 MUL DUP6 ADD PUSH2 0x25C3 DUP6 PUSH2 0x2ECF JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x25FD JUMPI DUP5 DUP5 SUB DUP10 MSTORE DUP2 MLOAD PUSH2 0x25E0 DUP6 DUP3 PUSH2 0x249E JUMP JUMPDEST SWAP5 POP PUSH2 0x25EB DUP4 PUSH2 0x2ECF JUMP JUMPDEST PUSH1 0x20 SWAP11 SWAP1 SWAP11 ADD SWAP10 SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x25C7 JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2615 DUP3 PUSH2 0x2ED5 JUMP JUMPDEST PUSH2 0x261F DUP2 DUP6 PUSH2 0x2ED9 JUMP JUMPDEST SWAP4 POP PUSH2 0x262A DUP4 PUSH2 0x2ECF JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2591 JUMPI DUP2 MLOAD PUSH2 0x2642 DUP9 DUP3 PUSH2 0x24AA JUMP JUMPDEST SWAP8 POP PUSH2 0x264D DUP4 PUSH2 0x2ECF JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x262E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2663 DUP3 PUSH2 0x2ED5 JUMP JUMPDEST PUSH2 0x266D DUP2 DUP6 PUSH2 0x2ED9 JUMP JUMPDEST SWAP4 POP DUP4 PUSH1 0x20 DUP3 MUL DUP6 ADD PUSH2 0x267F DUP6 PUSH2 0x2ECF JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x25FD JUMPI DUP5 DUP5 SUB DUP10 MSTORE DUP2 MLOAD PUSH2 0x269C DUP6 DUP3 PUSH2 0x249E JUMP JUMPDEST SWAP5 POP PUSH2 0x26A7 DUP4 PUSH2 0x2ECF JUMP JUMPDEST PUSH1 0x20 SWAP11 SWAP1 SWAP11 ADD SWAP10 SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x2683 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x26C4 DUP3 PUSH2 0x2ED5 JUMP JUMPDEST PUSH2 0x26CE DUP2 DUP6 PUSH2 0x2ED9 JUMP JUMPDEST SWAP4 POP PUSH2 0x26D9 DUP4 PUSH2 0x2ECF JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2591 JUMPI DUP2 MLOAD PUSH2 0x26F1 DUP9 DUP3 PUSH2 0x24B6 JUMP JUMPDEST SWAP8 POP PUSH2 0x26FC DUP4 PUSH2 0x2ECF JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x26DD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2712 DUP3 PUSH2 0x2ED5 JUMP JUMPDEST PUSH2 0x271C DUP2 DUP6 PUSH2 0x2ED9 JUMP JUMPDEST SWAP4 POP PUSH2 0x2727 DUP4 PUSH2 0x2ECF JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2591 JUMPI DUP2 MLOAD PUSH2 0x273F DUP9 DUP3 PUSH2 0x24CA JUMP JUMPDEST SWAP8 POP PUSH2 0x274A DUP4 PUSH2 0x2ECF JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x272B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2760 DUP3 PUSH2 0x2ED5 JUMP JUMPDEST PUSH2 0x276A DUP2 DUP6 PUSH2 0x2ED9 JUMP JUMPDEST SWAP4 POP PUSH2 0x2775 DUP4 PUSH2 0x2ECF JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2591 JUMPI DUP2 MLOAD PUSH2 0x278D DUP9 DUP3 PUSH2 0x24DF JUMP JUMPDEST SWAP8 POP PUSH2 0x2798 DUP4 PUSH2 0x2ECF JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x2779 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27AE DUP3 PUSH2 0x2ED5 JUMP JUMPDEST PUSH2 0x27B8 DUP2 DUP6 PUSH2 0x2ED9 JUMP JUMPDEST SWAP4 POP PUSH2 0x27C3 DUP4 PUSH2 0x2ECF JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2591 JUMPI DUP2 MLOAD PUSH2 0x27DB DUP9 DUP3 PUSH2 0x24F3 JUMP JUMPDEST SWAP8 POP PUSH2 0x27E6 DUP4 PUSH2 0x2ECF JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x27C7 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27FC DUP3 PUSH2 0x2ED5 JUMP JUMPDEST PUSH2 0x2806 DUP2 DUP6 PUSH2 0x2ED9 JUMP JUMPDEST SWAP4 POP DUP4 PUSH1 0x20 DUP3 MUL DUP6 ADD PUSH2 0x2818 DUP6 PUSH2 0x2ECF JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x25FD JUMPI DUP5 DUP5 SUB DUP10 MSTORE DUP2 MLOAD PUSH2 0x2835 DUP6 DUP3 PUSH2 0x24FF JUMP JUMPDEST SWAP5 POP PUSH2 0x2840 DUP4 PUSH2 0x2ECF JUMP JUMPDEST PUSH1 0x20 SWAP11 SWAP1 SWAP11 ADD SWAP10 SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x281C JUMP JUMPDEST PUSH1 0x0 PUSH2 0x285D DUP3 PUSH2 0x2ED5 JUMP JUMPDEST PUSH2 0x2867 DUP2 DUP6 PUSH2 0x2ED9 JUMP JUMPDEST SWAP4 POP PUSH2 0x2872 DUP4 PUSH2 0x2ECF JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2591 JUMPI DUP2 MLOAD PUSH2 0x288A DUP9 DUP3 PUSH2 0x250B JUMP JUMPDEST SWAP8 POP PUSH2 0x2895 DUP4 PUSH2 0x2ECF JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x2876 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x28AB DUP3 PUSH2 0x2ED5 JUMP JUMPDEST PUSH2 0x28B5 DUP2 DUP6 PUSH2 0x2ED9 JUMP JUMPDEST SWAP4 POP PUSH2 0x28C0 DUP4 PUSH2 0x2ECF JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2591 JUMPI DUP2 MLOAD PUSH2 0x28D8 DUP9 DUP3 PUSH2 0x251F JUMP JUMPDEST SWAP8 POP PUSH2 0x28E3 DUP4 PUSH2 0x2ECF JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x28C4 JUMP JUMPDEST PUSH2 0x2534 DUP2 PUSH2 0x2EF2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2902 DUP3 PUSH2 0x2ED5 JUMP JUMPDEST PUSH2 0x290C DUP2 DUP6 PUSH2 0x2ED9 JUMP JUMPDEST SWAP4 POP PUSH2 0x291C DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x2F42 JUMP JUMPDEST PUSH2 0x2925 DUP2 PUSH2 0x2F6E JUMP JUMPDEST SWAP1 SWAP4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x2534 DUP2 PUSH2 0x2EF7 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2943 DUP3 PUSH2 0x2ED5 JUMP JUMPDEST PUSH2 0x294D DUP2 DUP6 PUSH2 0x2EE2 JUMP JUMPDEST SWAP4 POP PUSH2 0x295D DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x2F42 JUMP JUMPDEST SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x60 DUP1 DUP5 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 ADD SWAP1 PUSH2 0x297F DUP3 DUP3 PUSH2 0x260A JUMP JUMPDEST SWAP2 POP POP PUSH1 0x20 DUP4 ADD MLOAD PUSH2 0x2994 PUSH1 0x20 DUP7 ADD DUP3 PUSH2 0x2D0F JUMP JUMPDEST POP PUSH1 0x40 DUP4 ADD MLOAD PUSH2 0x29A7 PUSH1 0x40 DUP7 ADD DUP3 PUSH2 0x2D0F JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0xC0 DUP4 ADD SWAP1 PUSH2 0x29C0 DUP5 DUP3 PUSH2 0x253A JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x29D3 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x2D0F JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x29E6 PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x2D0F JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x29F9 PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x2D0F JUMP JUMPDEST POP PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x2A0C PUSH1 0x80 DUP6 ADD DUP3 PUSH2 0x2D0F JUMP JUMPDEST POP PUSH1 0xA0 DUP3 ADD MLOAD PUSH2 0x2A1F PUSH1 0xA0 DUP6 ADD DUP3 PUSH2 0x2D0F JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0x1C0 DUP4 ADD SWAP1 PUSH2 0x2A37 DUP5 DUP3 PUSH2 0x253A JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x2A4A PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x2D0F JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x2A5D PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x2D0F JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x2A70 PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x2D0F JUMP JUMPDEST POP PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x2A83 PUSH1 0x80 DUP6 ADD DUP3 PUSH2 0x2D0F JUMP JUMPDEST POP PUSH1 0xA0 DUP3 ADD MLOAD PUSH2 0x2A96 PUSH1 0xA0 DUP6 ADD DUP3 PUSH2 0x2D0F JUMP JUMPDEST POP PUSH1 0xC0 DUP3 ADD MLOAD PUSH2 0x2AA9 PUSH1 0xC0 DUP6 ADD DUP3 PUSH2 0x2D0F JUMP JUMPDEST POP PUSH1 0xE0 DUP3 ADD MLOAD PUSH2 0x2ABC PUSH1 0xE0 DUP6 ADD DUP3 PUSH2 0x2D0F JUMP JUMPDEST POP PUSH2 0x100 DUP3 ADD MLOAD PUSH2 0x2AD1 PUSH2 0x100 DUP6 ADD DUP3 PUSH2 0x2D0F JUMP JUMPDEST POP PUSH2 0x120 DUP3 ADD MLOAD PUSH2 0x2AE6 PUSH2 0x120 DUP6 ADD DUP3 PUSH2 0x28EE JUMP JUMPDEST POP PUSH2 0x140 DUP3 ADD MLOAD PUSH2 0x2AFB PUSH2 0x140 DUP6 ADD DUP3 PUSH2 0x2D0F JUMP JUMPDEST POP PUSH2 0x160 DUP3 ADD MLOAD PUSH2 0x2B10 PUSH2 0x160 DUP6 ADD DUP3 PUSH2 0x253A JUMP JUMPDEST POP PUSH2 0x180 DUP3 ADD MLOAD PUSH2 0x2B25 PUSH2 0x180 DUP6 ADD DUP3 PUSH2 0x2D0F JUMP JUMPDEST POP PUSH2 0x1A0 DUP3 ADD MLOAD PUSH2 0x2A1F PUSH2 0x1A0 DUP6 ADD DUP3 PUSH2 0x2D0F JUMP JUMPDEST DUP1 MLOAD PUSH1 0x40 DUP4 ADD SWAP1 PUSH2 0x2B4B DUP5 DUP3 PUSH2 0x253A JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x2A1F PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x2D0F JUMP JUMPDEST DUP1 MLOAD PUSH1 0x60 DUP4 ADD SWAP1 PUSH2 0x2B6F DUP5 DUP3 PUSH2 0x2D0F JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x2B82 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x2D0F JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x2A1F PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x253A JUMP JUMPDEST DUP1 MLOAD PUSH1 0x40 DUP4 ADD SWAP1 PUSH2 0x2B4B DUP5 DUP3 PUSH2 0x2D0F JUMP JUMPDEST DUP1 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x1A0 DUP5 ADD SWAP1 PUSH2 0x2BBB DUP6 DUP3 PUSH2 0x2D0F JUMP JUMPDEST POP PUSH1 0x20 DUP4 ADD MLOAD PUSH2 0x2BCE PUSH1 0x20 DUP7 ADD DUP3 PUSH2 0x253A JUMP JUMPDEST POP PUSH1 0x40 DUP4 ADD MLOAD PUSH2 0x2BE1 PUSH1 0x40 DUP7 ADD DUP3 PUSH2 0x2D0F JUMP JUMPDEST POP PUSH1 0x60 DUP4 ADD MLOAD DUP5 DUP3 SUB PUSH1 0x60 DUP7 ADD MSTORE PUSH2 0x2BF9 DUP3 DUP3 PUSH2 0x2543 JUMP JUMPDEST SWAP2 POP POP PUSH1 0x80 DUP4 ADD MLOAD DUP5 DUP3 SUB PUSH1 0x80 DUP7 ADD MSTORE PUSH2 0x2C13 DUP3 DUP3 PUSH2 0x28A0 JUMP JUMPDEST SWAP2 POP POP PUSH1 0xA0 DUP4 ADD MLOAD DUP5 DUP3 SUB PUSH1 0xA0 DUP7 ADD MSTORE PUSH2 0x2C2D DUP3 DUP3 PUSH2 0x2658 JUMP JUMPDEST SWAP2 POP POP PUSH1 0xC0 DUP4 ADD MLOAD DUP5 DUP3 SUB PUSH1 0xC0 DUP7 ADD MSTORE PUSH2 0x2C47 DUP3 DUP3 PUSH2 0x259C JUMP JUMPDEST SWAP2 POP POP PUSH1 0xE0 DUP4 ADD MLOAD PUSH2 0x2C5C PUSH1 0xE0 DUP7 ADD DUP3 PUSH2 0x2D0F JUMP JUMPDEST POP PUSH2 0x100 DUP4 ADD MLOAD PUSH2 0x2C71 PUSH2 0x100 DUP7 ADD DUP3 PUSH2 0x2D0F JUMP JUMPDEST POP PUSH2 0x120 DUP4 ADD MLOAD PUSH2 0x2C86 PUSH2 0x120 DUP7 ADD DUP3 PUSH2 0x2D0F JUMP JUMPDEST POP PUSH2 0x140 DUP4 ADD MLOAD PUSH2 0x2C9B PUSH2 0x140 DUP7 ADD DUP3 PUSH2 0x2D0F JUMP JUMPDEST POP PUSH2 0x160 DUP4 ADD MLOAD PUSH2 0x2CB0 PUSH2 0x160 DUP7 ADD DUP3 PUSH2 0x28EE JUMP JUMPDEST POP PUSH2 0x180 DUP4 ADD MLOAD PUSH2 0x29A7 PUSH2 0x180 DUP7 ADD DUP3 PUSH2 0x28EE JUMP JUMPDEST DUP1 MLOAD PUSH1 0x80 DUP4 ADD SWAP1 PUSH2 0x2CD6 DUP5 DUP3 PUSH2 0x2D0F JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x2CE9 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x28EE JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x2CFC PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x28EE JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x2A1F PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x2D21 JUMP JUMPDEST PUSH2 0x2534 DUP2 PUSH2 0x2F0E JUMP JUMPDEST PUSH2 0x2534 DUP2 PUSH2 0x2F37 JUMP JUMPDEST PUSH2 0x2534 DUP2 PUSH2 0x2F20 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2B3 DUP3 DUP5 PUSH2 0x2938 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xAD4 DUP3 DUP5 PUSH2 0x253A JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xAD4 DUP3 DUP5 PUSH2 0x252B JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x2D60 DUP3 DUP6 PUSH2 0x252B JUMP JUMPDEST PUSH2 0x2B3 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x253A JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x2D7B DUP3 DUP6 PUSH2 0x253A JUMP JUMPDEST PUSH2 0x2B3 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2D18 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2B3 DUP2 DUP5 PUSH2 0x26B9 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2B3 DUP2 DUP5 PUSH2 0x2707 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2B3 DUP2 DUP5 PUSH2 0x2755 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2B3 DUP2 DUP5 PUSH2 0x27A3 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2B3 DUP2 DUP5 PUSH2 0x27F1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2B3 DUP2 DUP5 PUSH2 0x2852 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xAD4 DUP3 DUP5 PUSH2 0x292F JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2B3 DUP2 DUP5 PUSH2 0x2967 JUMP JUMPDEST PUSH1 0xC0 DUP2 ADD PUSH2 0xAD4 DUP3 DUP5 PUSH2 0x29AF JUMP JUMPDEST PUSH2 0x1C0 DUP2 ADD PUSH2 0xAD4 DUP3 DUP5 PUSH2 0x2A25 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0xAD4 DUP3 DUP5 PUSH2 0x2B3A JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0xAD4 DUP3 DUP5 PUSH2 0x2B5E JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xAD4 DUP3 DUP5 PUSH2 0x2D0F JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x2D60 DUP3 DUP6 PUSH2 0x2D0F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x2E80 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x2E9E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x2EBE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 PUSH1 0x1F SWAP2 SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAD4 DUP3 PUSH2 0x2F02 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAD4 DUP3 PUSH2 0x2EE7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAD4 DUP3 PUSH2 0x2EF7 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAD4 DUP3 PUSH2 0x2F11 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2F5D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2F45 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x2A1F JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 JUMP JUMPDEST PUSH2 0x2F81 DUP2 PUSH2 0x2EE7 JUMP JUMPDEST DUP2 EQ PUSH2 0x2F8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x2F81 DUP2 PUSH2 0x2EF2 JUMP JUMPDEST PUSH2 0x2F81 DUP2 PUSH2 0x2EF7 JUMP JUMPDEST PUSH2 0x2F81 DUP2 PUSH2 0x2F0E JUMP JUMPDEST PUSH2 0x2F81 DUP2 PUSH2 0x2F11 JUMP JUMPDEST PUSH2 0x2F81 DUP2 PUSH2 0x2F1A JUMP JUMPDEST PUSH2 0x2F81 DUP2 PUSH2 0x2F20 JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 0xEC 0xAD 0xD6 0x2A EXTCODEHASH LOG2 LOG2 0xE9 PUSH8 0x7594D61CD9C42841 0x4F SWAP11 0xBD 0x29 PUSH14 0xC8A9F3192EE0407215296C657870 PUSH6 0x72696D656E74 PUSH2 0x6CF5 PUSH5 0x736F6C6343 STOP SDIV GT STOP BLOCKHASH ","sourceMap":"244:9558:29:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;244:9558:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3945:382;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;736:1524;;;;;;;;;:::i;:::-;;;;;;;;4825:383;;;;;;;;;:::i;:::-;;;;;;;;8742:318;;;;;;;;;:::i;:::-;;;;;;;;2266:348;;;;;;;;;:::i;:::-;;;;;;;;9142:471;;;;;;;;;:::i;:::-;;;;;;;;5322:413;;;;;;;;;:::i;:::-;;;;;;;;7572:1056;;;;;;;;;:::i;:::-;;;;;;;;5864:648;;;;;;;;;:::i;:::-;;;;;;;;2828:1111;;;;;;;;;:::i;:::-;;;;;;;;4429:390;;;;;;;;;:::i;:::-;;;;;;;;3945:382;4150:33;;;;;;;;;;;;;;;;4042:23;;4096:7;;4042:23;;4096:7;4150:33;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;4120:63:29;-1:-1:-1;4198:6:29;4193:108;4214:11;4210:1;:15;4193:108;;;4255:35;4270:7;;4278:1;4270:10;;;;;;;;;;;;;;;;;;;;;;4282:7;4255:14;:35::i;:::-;4246:3;4250:1;4246:6;;;;;;;;;;;;;;;;;:44;4227:3;;4193:108;;;-1:-1:-1;4317:3:29;-1:-1:-1;;3945:382:29;;;;;;:::o;736:1524::-;791:21;;:::i;:::-;824:24;851:6;-1:-1:-1;;;;;851:26:29;;:28;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;851:28:29;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;851:28:29;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;851:28:29;;;;;;;;;824:55;;889:23;935:6;-1:-1:-1;;;;;935:18:29;;:20;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;935:20:29;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;935:20:29;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;935:20:29;;;;;;;;;889:68;;968:13;983:29;1016:11;-1:-1:-1;;;;;1016:19:29;;1044:6;1016:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1016:36:29;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1016:36:29;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1016:36:29;;;;;;;;;967:85;;;;1062:30;1102:23;1140:39;1155:6;-1:-1:-1;;;;;1155:13:29;;:15;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1155:15:29;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1155:15:29;;;;;;39:16:-1;36:1;17:17;2:54;101:4;1155:15:29;80::-1;;;-1:-1;;76:31;65:43;;120:4;113:20;1155:15:29;;;;;;;;;1140:39;;;;;;;;;;;;;-1:-1:-1;;;1140:39:29;;;:14;:39::i;:::-;1136:351;;;-1:-1:-1;1228:1:29;;-1:-1:-1;1265:2:29;1136:351;;;1298:13;1329:6;1298:39;;1376:6;-1:-1:-1;;;;;1376:17:29;;:19;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1376:19:29;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1376:19:29;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1376:19:29;;;;;;;;;1351:44;;1445:6;-1:-1:-1;;;;;1445:17:29;;:19;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1445:19:29;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1445:19:29;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1445:19:29;;;;;;;;;-1:-1:-1;;;;;1430:44:29;;:46;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1430:46:29;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1430:46:29;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1430:46:29;;;;;;;;;1409:67;;;;1136:351;;1504:749;;;;;;;;1549:6;-1:-1:-1;;;;;1504:749:29;;;;;1591:19;1504:749;;;;1644:6;-1:-1:-1;;;;;1644:25:29;;:27;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1644:27:29;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1644:27:29;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1644:27:29;;;;;;;;;1504:749;;;;1705:6;-1:-1:-1;;;;;1705:25:29;;:27;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1705:27:29;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1705:27:29;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1705:27:29;;;;;;;;;1504:749;;;;1769:6;-1:-1:-1;;;;;1769:28:29;;:30;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1769:30:29;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1769:30:29;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1769:30:29;;;;;;;;;1504:749;;;;1827:6;-1:-1:-1;;;;;1827:19:29;;:21;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1827:21:29;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1827:21:29;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1827:21:29;;;;;;;;;1504:749;;;;1877:6;-1:-1:-1;;;;;1877:20:29;;:22;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1877:22:29;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1877:22:29;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1877:22:29;;;;;;;;;1504:749;;;;1926:6;-1:-1:-1;;;;;1926:18:29;;:20;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1926:20:29;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1926:20:29;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1926:20:29;;;;;;;;;1504:749;;;;1971:6;-1:-1:-1;;;;;1971:14:29;;:16;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1971:16:29;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1971:16:29;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1971:16:29;;;;;;;;;1504:749;;;;2011:8;1504:749;;;;;;2059:24;1504:749;;;;2121:22;-1:-1:-1;;;;;1504:749:29;;;;;2173:6;-1:-1:-1;;;;;2173:15:29;;:17;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2173:17:29;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2173:17:29;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2173:17:29;;;;;;;;;1504:749;;;;;;;;;;;736:1524;-1:-1:-1;;;;;;;736:1524:29:o;4825:383::-;5026:40;;;;;;;;;;;;;;;;4904:30;;4965:7;;4904:30;;4965:7;5026:40;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;4989:77:29;-1:-1:-1;5081:6:29;5076:106;5097:11;5093:1;:15;5076:106;;;5138:33;5160:7;;5168:1;5160:10;;;;;;;;;;;;;;;;;;;;;5138:33;5129:3;5133:1;5129:6;;;;;;;;;;;;;;;;;:42;5110:3;;5076:106;;;-1:-1:-1;5198:3:29;-1:-1:-1;;4825:383:29;;;;;:::o;8742:318::-;8825:26;;:::i;:::-;8870:183;;;;;;;;;;-1:-1:-1;;;8913:23:29;;;8870:183;-1:-1:-1;;;;;8913:14:29;;;:23;8928:7;8913:23;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8913:23:29;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8913:23:29;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;8913:23:29;;;;;;;;;8870:183;;;;8965:4;-1:-1:-1;;;;;8965:20:29;;8986:7;8965:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8965:29:29;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8965:29:29;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;8965:29:29;;;;;;;;;-1:-1:-1;;;;;8957:38:29;8870:183;;;;9019:4;-1:-1:-1;;;;;9019:14:29;;9034:7;9019:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9019:23:29;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9019:23:29;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;9019:23:29;;;;;;;;;-1:-1:-1;;;;;8870:183:29;;;8863:190;8742:318;-1:-1:-1;;;8742:318:29:o;2266:348::-;2446:33;;;;;;;;;;;;;;;;2338:23;;2392:7;;2338:23;;2392:7;2446:33;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;2416:63:29;-1:-1:-1;2494:6:29;2489:99;2510:11;2506:1;:15;2489:99;;;2551:26;2566:7;;2574:1;2566:10;;;;;;;;;;;;;;;;;;;;;2551:26;2542:3;2546:1;2542:6;;;;;;;;;;;;;;;;;:35;2523:3;;2489:99;;9142:471;9247:18;9277:22;9318:12;;:19;;9302:36;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;9277:61:29;-1:-1:-1;9353:6:29;9348:239;9365:23;;;9348:239;;;9418:158;;;;;;;;9467:12;;9480:1;9467:15;;;;;;;;;;;;;;;;;;;;;;9459:24;;9418:158;;;;9516:4;-1:-1:-1;;;;;9516:18:29;;9535:7;9544:12;;9557:1;9544:15;;;;;;;;;;;;;;;;;;;;;;9516:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9516:44:29;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9516:44:29;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;9516:44:29;;;;;;;;;-1:-1:-1;;;;;9508:53:29;9418:158;;;9409:3;9413:1;9409:6;;;;;;;;;;;;;;;;;:167;9390:3;;9348:239;;;-1:-1:-1;9603:3:29;9142:471;-1:-1:-1;;;;;9142:471:29:o;5322:413::-;5406:20;;:::i;:::-;5439:14;5455;5471;5489:11;-1:-1:-1;;;;;5489:31:29;;5521:7;5489:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5489:40:29;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5489:40:29;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;5489:40:29;;;;;;;;;5438:91;;;;;;5547:9;5560:1;5547:14;5539:23;;;;;;5580:148;;;;;;;;;;-1:-1:-1;;;5617:32:29;;;5580:148;-1:-1:-1;;;;;5617:23:29;;;:32;5641:7;5617:32;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5617:32:29;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5617:32:29;;;;;;39:16:-1;36:1;17:17;2:54;101:4;5617:32:29;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;5617:32:29;;;;;;;;;5580:148;;;;;;;;;;;;;;;5322:413;-1:-1:-1;;;;5322:413:29:o;7572:1056::-;7673:20;7705:24;7750:11;;:18;;7732:37;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;7705:64:29;-1:-1:-1;7784:6:29;7779:823;7796:22;;;7779:823;;;7857:24;7899:20;7937:26;7981:24;8022:8;-1:-1:-1;;;;;8022:19:29;;8042:11;;8054:1;8042:14;;;;;;;;;;;;;8022:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8022:35:29;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8022:35:29;;;;;;39:16:-1;36:1;17:17;2:54;101:4;8022:35:29;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;8022:35:29;;;;;;;;;7839:218;;;;;;;;8080:452;;;;;;;;8122:1;8080:452;;;;8159:1;-1:-1:-1;;;;;8080:452:29;;;;;8184:1;8080:452;;;;8212:7;8080:452;;;;8245:6;8080:452;;;;8281:10;8080:452;;;;8320:9;8080:452;;;;8359:1;8080:452;;;;8388:1;8080:452;;;;8417:1;8080:452;;;;8450:1;8080:452;;;;8479:5;8080:452;;;;;;8512:5;8080:452;;;;;8071:3;8075:1;8071:6;;;;;;;;;;;;;:461;;;;8546:45;8558:3;8562:1;8558:6;;;;;;;;;;;;;;8566:8;8576:11;;8588:1;8576:14;;;;;;;;;;;;;8546:11;:45::i;:::-;-1:-1:-1;;7820:3:29;;;;;-1:-1:-1;7779:823:29;;-1:-1:-1;7779:823:29;;-1:-1:-1;8618:3:29;7572:1056;-1:-1:-1;;;;7572:1056:29:o;5864:648::-;5975:19;6006:18;6027:11;:18;6006:39;;6055:23;6098:13;6081:31;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;6055:57:29;-1:-1:-1;6127:6:29;6122:364;6143:13;6139:1;:17;6122:364;;;6177:36;;:::i;:::-;6216:8;-1:-1:-1;;;;;6216:19:29;;6236:11;6248:1;6236:14;;;;;;;;;;;;;;6252:5;6216:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6216:42:29;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6216:42:29;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;6216:42:29;;;;;;;;;6177:81;;6281:194;;;;;;;;6322:11;6334:1;6322:14;;;;;;;;;;;;;;6281:194;;;;6364:7;:16;;;6281:194;;;;;;6407:7;:15;;;6281:194;;;;;;6447:7;:13;;;-1:-1:-1;;;;;6281:194:29;;;;6272:3;6276:1;6272:6;;;;;;;;;;;;;;;;;:203;-1:-1:-1;6158:3:29;;6122:364;;2828:1111;2908:21;;:::i;:::-;2958:25;;-1:-1:-1;;;2958:25:29;;2941:14;;-1:-1:-1;;;;;2958:16:29;;;;;:25;;2975:7;;2958:25;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2958:25:29;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2958:25:29;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2958:25:29;;;;;;;;;2941:42;;2993:25;3021:6;-1:-1:-1;;;;;3021:27:29;;3049:7;3021:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3021:36:29;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3021:36:29;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3021:36:29;;;;;;;;;2993:64;;3067:24;3094:6;-1:-1:-1;;;;;3094:26:29;;3121:7;3094:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3094:35:29;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3094:35:29;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3094:35:29;;;;;;;;;3067:62;;3139:17;3166:19;3200:39;3215:6;-1:-1:-1;;;;;3215:13:29;;:15;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;3200:39:29;3196:428;;;-1:-1:-1;;;;;;;3270:15:29;;;;;3316;3196:428;;;3362:13;3393:6;3362:39;;3415:25;3458:6;-1:-1:-1;;;;;3458:17:29;;:19;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3458:19:29;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3458:19:29;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3458:19:29;;;;;;;;;3507:29;;-1:-1:-1;;;3507:29:29;;3415:63;;-1:-1:-1;;;;;;3507:20:29;;;;;:29;;3528:7;;3507:29;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3507:29:29;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3507:29:29;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3507:29:29;;;;;;;;;3567:46;;-1:-1:-1;;;3567:46:29;;3492:44;;-1:-1:-1;;;;;;3567:20:29;;;;;:46;;3588:7;;3605:6;;3567:46;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3567:46:29;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3567:46:29;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3567:46:29;;;;;;;;;3550:63;;3196:428;;;3641:291;;;;;;;;-1:-1:-1;;;;;3641:291:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3641:291:29;;2828:1111;-1:-1:-1;2828:1111:29:o;4429:390::-;4491:28;;:::i;:::-;4531:23;4577:6;-1:-1:-1;;;;;4577:18:29;;:20;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4577:20:29;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4577:20:29;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4577:20:29;;;;;;;;;4531:68;;4609:23;4635:11;-1:-1:-1;;;;;4635:18:29;;:20;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4635:20:29;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4635:20:29;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4635:20:29;;;;;;;;;4609:46;;4673:139;;;;;;;;4725:6;-1:-1:-1;;;;;4673:139:29;;;;;4763:11;-1:-1:-1;;;;;4763:30:29;;4794:6;4763:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4763:38:29;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4763:38:29;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4763:38:29;;;;;;;;;4673:139;;4666:146;4429:390;-1:-1:-1;;;;4429:390:29:o;9619:181::-;9700:4;9788:1;9770:21;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;9770:21:29;;;9760:32;;;;;;9752:1;9734:21;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;9734:21:29;;;9724:32;;;;;;:68;9716:77;;9619:181;;;;:::o;6869:697::-;7007:16;7037:8;7059:15;7088:13;7115;7142:17;7173:13;7200;7226:8;-1:-1:-1;;;;;7226:18:29;;7245:10;7226:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7226:30:29;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7226:30:29;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;7226:30:29;;;;;;;;;6979:277;;;;;;;;;;;;;;;;;7283:10;7266:3;:14;;:27;;;;;7318:8;7303:3;:12;;:23;-1:-1:-1;;;;;7303:23:29;;;-1:-1:-1;;;;;7303:23:29;;;;;7346:3;7336;:7;;:13;;;;;7376:10;7359:3;:14;;:27;;;;;7411:8;7396:3;:12;;:23;;;;;7444:8;7429:3;:12;;:23;;;;;7481:12;7462:3;:16;;:31;;;;;7518:8;7503:3;:12;;:23;;;;;;;;;;;7551:8;7536:3;:12;;:23;;;;;;;;;;;6869:697;;;;;;;;;;;:::o;244:9558::-;;;;;;;;;;-1:-1:-1;;;;;244:9558:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;;;;;244:9558:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;244:9558:29;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;244:9558:29;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;244:9558:29;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;-1:-1:-1;;;;;244:9558:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;-1:-1:-1;244:9558:29;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;-1:-1:-1;244:9558:29;;;;;;;;;;;;;;;;;:::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;142:134;220:13;;238:33;220:13;238:33;;454:722;;582:3;575:4;567:6;563:17;559:27;549:2;;600:1;597;590:12;549:2;630:6;624:13;652:80;667:64;724:6;667:64;;;652:80;;;643:89;;749:5;774:6;767:5;760:21;804:4;796:6;792:17;782:27;;826:4;821:3;817:14;810:21;;879:6;926:3;918:4;910:6;906:17;901:3;897:27;894:36;891:2;;;943:1;940;933:12;891:2;968:1;953:217;978:6;975:1;972:13;953:217;;;1036:3;1058:48;1102:3;1090:10;1058:48;;;1046:61;;-1:-1;1130:4;1121:14;;;;1149;;;;;1000:1;993:9;953:217;;;957:14;542:634;;;;;;;;1200:701;;1333:3;1326:4;1318:6;1314:17;1310:27;1300:2;;1351:1;1348;1341:12;1300:2;1381:6;1375:13;1403:85;1418:69;1480:6;1418:69;;1403:85;1516:21;;;1560:4;1548:17;;;;1394:94;;-1:-1;1573:14;;1548:17;1668:1;1653:242;1678:6;1675:1;1672:13;1653:242;;;1754:3;1748:10;1740:6;1736:23;1778:53;1827:3;1815:10;1778:53;;;1766:66;;-1:-1;1855:4;1846:14;;;;1874;;;;;1700:1;1693:9;1653:242;;1935:367;;;2080:3;2073:4;2065:6;2061:17;2057:27;2047:2;;2098:1;2095;2088:12;2047:2;-1:-1;2118:20;;-1:-1;;;;;2147:30;;2144:2;;;2190:1;2187;2180:12;2144:2;2224:4;2216:6;2212:17;2200:29;;2275:3;2267:4;2259:6;2255:17;2245:8;2241:32;2238:41;2235:2;;;2292:1;2289;2282:12;2235:2;2040:262;;;;;;2336:767;;2479:3;2472:4;2464:6;2460:17;2456:27;2446:2;;2497:1;2494;2487:12;2446:2;2527:6;2521:13;2549:95;2564:79;2636:6;2564:79;;2549:95;2540:104;;2661:5;2686:6;2679:5;2672:21;2716:4;2708:6;2704:17;2694:27;;2738:4;2733:3;2729:14;2722:21;;2791:6;2838:3;2830:4;2822:6;2818:17;2813:3;2809:27;2806:36;2803:2;;;2855:1;2852;2845:12;2803:2;2880:1;2865:232;2890:6;2887:1;2884:13;2865:232;;;2948:3;2970:63;3029:3;3017:10;2970:63;;;2958:76;;-1:-1;3057:4;3048:14;;;;3076;;;;;2912:1;2905:9;2865:232;;3128:704;;3262:3;3255:4;3247:6;3243:17;3239:27;3229:2;;3280:1;3277;3270:12;3229:2;3310:6;3304:13;3332:86;3347:70;3410:6;3347:70;;3332:86;3446:21;;;3490:4;3478:17;;;;3323:95;;-1:-1;3503:14;;3478:17;3598:1;3583:243;3608:6;3605:1;3602:13;3583:243;;;3684:3;3678:10;3670:6;3666:23;3708:54;3758:3;3746:10;3708:54;;;3696:67;;-1:-1;3786:4;3777:14;;;;3805;;;;;3630:1;3623:9;3583:243;;4236:707;;4353:3;4346:4;4338:6;4334:17;4330:27;4320:2;;4371:1;4368;4361:12;4320:2;4408:6;4395:20;4430:80;4445:64;4502:6;4445:64;;4430:80;4421:89;;4527:5;4552:6;4545:5;4538:21;4582:4;4574:6;4570:17;4560:27;;4604:4;4599:3;4595:14;4588:21;;4657:6;4704:3;4696:4;4688:6;4684:17;4679:3;4675:27;4672:36;4669:2;;;4721:1;4718;4711:12;4669:2;4746:1;4731:206;4756:6;4753:1;4750:13;4731:206;;;4814:3;4836:37;4869:3;4857:10;4836:37;;;4824:50;;-1:-1;4897:4;4888:14;;;;4916;;;;;4778:1;4771:9;4731:206;;4969:722;;5097:3;5090:4;5082:6;5078:17;5074:27;5064:2;;5115:1;5112;5105:12;5064:2;5145:6;5139:13;5167:80;5182:64;5239:6;5182:64;;5167:80;5158:89;;5264:5;5289:6;5282:5;5275:21;5319:4;5311:6;5307:17;5297:27;;5341:4;5336:3;5332:14;5325:21;;5394:6;5441:3;5433:4;5425:6;5421:17;5416:3;5412:27;5409:36;5406:2;;;5458:1;5455;5448:12;5406:2;5483:1;5468:217;5493:6;5490:1;5487:13;5468:217;;;5551:3;5573:48;5617:3;5605:10;5573:48;;;5561:61;;-1:-1;5645:4;5636:14;;;;5664;;;;;5515:1;5508:9;5468:217;;6075:128;6150:13;;6168:30;6150:13;6168:30;;6211:434;;6319:3;6312:4;6304:6;6300:17;6296:27;6286:2;;6337:1;6334;6327:12;6286:2;6367:6;6361:13;6389:60;6404:44;6441:6;6404:44;;6389:60;6380:69;;6469:6;6462:5;6455:21;6505:4;6497:6;6493:17;6538:4;6531:5;6527:16;6573:3;6564:6;6559:3;6555:16;6552:25;6549:2;;;6590:1;6587;6580:12;6549:2;6600:39;6632:6;6627:3;6622;6600:39;;;6279:366;;;;;;;;6653:160;6735:20;;6760:48;6735:20;6760:48;;6820:164;6913:13;;6931:48;6913:13;6931:48;;8382:657;;8508:4;8496:9;8491:3;8487:19;8483:30;8480:2;;;8526:1;8523;8516:12;8480:2;8544:20;8559:4;8544:20;;;8535:29;-1:-1;8618:1;8650:57;8703:3;8683:9;8650:57;;;8625:83;;-1:-1;8772:2;8805:57;8858:3;8834:22;;;8805:57;;;8798:4;8791:5;8787:16;8780:83;8729:145;8925:2;8958:59;9013:3;9004:6;8993:9;8989:22;8958:59;;;8951:4;8944:5;8940:16;8933:85;8884:145;8474:565;;;;;9046:130;9113:20;;9138:33;9113:20;9138:33;;9183:134;9261:13;;9279:33;9261:13;9279:33;;9324:128;9390:20;;9415:32;9390:20;9415:32;;9459:130;9535:13;;9553:31;9535:13;9553:31;;9596:132;9673:13;;9691:32;9673:13;9691:32;;9735:263;;9850:2;9838:9;9829:7;9825:23;9821:32;9818:2;;;9866:1;9863;9856:12;9818:2;9901:1;9918:64;9974:7;9954:9;9918:64;;;9908:74;9812:186;-1:-1;;;;9812:186;10005:1210;;;;;10282:3;10270:9;10261:7;10257:23;10253:33;10250:2;;;10299:1;10296;10289:12;10250:2;10334:24;;-1:-1;;;;;10367:30;;10364:2;;;10410:1;10407;10400:12;10364:2;10430:89;10511:7;10502:6;10491:9;10487:22;10430:89;;;10420:99;;10313:212;10577:2;10566:9;10562:18;10556:25;-1:-1;;;;;10593:6;10590:30;10587:2;;;10633:1;10630;10623:12;10587:2;10653:89;10734:7;10725:6;10714:9;10710:22;10653:89;;;10643:99;;10535:213;10800:2;10789:9;10785:18;10779:25;-1:-1;;;;;10816:6;10813:30;10810:2;;;10856:1;10853;10846:12;10810:2;10876:95;10963:7;10954:6;10943:9;10939:22;10876:95;;;10866:105;;10758:219;11029:2;11018:9;11014:18;11008:25;-1:-1;;;;;11045:6;11042:30;11039:2;;;11085:1;11082;11075:12;11039:2;11105:94;11191:7;11182:6;11171:9;11167:22;11105:94;;;11095:104;;10987:218;10244:971;;;;;;;;11222:427;;;11376:2;11364:9;11355:7;11351:23;11347:32;11344:2;;;11392:1;11389;11382:12;11344:2;11427:31;;-1:-1;;;;;11467:30;;11464:2;;;11510:1;11507;11500:12;11464:2;11538:95;11625:7;11616:6;11605:9;11601:22;11538:95;;;11528:105;;;;11406:233;11338:311;;;;;;11656:568;;;;11835:2;11823:9;11814:7;11810:23;11806:32;11803:2;;;11851:1;11848;11841:12;11803:2;11886:31;;-1:-1;;;;;11926:30;;11923:2;;;11969:1;11966;11959:12;11923:2;11997:95;12084:7;12075:6;12064:9;12060:22;11997:95;;;11987:105;;;;11865:233;12129:2;12147:61;12200:7;12191:6;12180:9;12176:22;12147:61;;;12137:71;;12108:106;11797:427;;;;;;12231:422;;12386:2;12374:9;12365:7;12361:23;12357:32;12354:2;;;12402:1;12399;12392:12;12354:2;12437:24;;-1:-1;;;;;12470:30;;12467:2;;;12513:1;12510;12503:12;12467:2;12533:104;12629:7;12620:6;12609:9;12605:22;12533:104;;12660:393;;;12789:2;12777:9;12768:7;12764:23;12760:32;12757:2;;;12805:1;12802;12795:12;12757:2;12840:1;12857:61;12910:7;12890:9;12857:61;;;12847:71;;12819:105;12955:2;12973:64;13029:7;13020:6;13009:9;13005:22;12973:64;;;12963:74;;12934:109;12751:302;;;;;;13060:271;;13179:2;13167:9;13158:7;13154:23;13150:32;13147:2;;;13195:1;13192;13185:12;13147:2;13230:1;13247:68;13307:7;13287:9;13247:68;;13338:412;;;13482:2;13470:9;13461:7;13457:23;13453:32;13450:2;;;13498:1;13495;13488:12;13450:2;13533:1;13550:68;13610:7;13590:9;13550:68;;;13540:78;;13512:112;13655:2;13673:61;13726:7;13717:6;13706:9;13702:22;13673:61;;14158:673;;;;;14344:2;14332:9;14323:7;14319:23;14315:32;14312:2;;;14360:1;14357;14350:12;14312:2;14395:1;14412:67;14471:7;14451:9;14412:67;;;14402:77;;14374:111;14516:2;14534:53;14579:7;14570:6;14559:9;14555:22;14534:53;;;14524:63;;14495:98;14652:2;14641:9;14637:18;14624:32;-1:-1;;;;;14668:6;14665:30;14662:2;;;14708:1;14705;14698:12;14662:2;14736:79;14807:7;14798:6;14787:9;14783:22;14736:79;;;14306:525;;;;-1:-1;14726:89;-1:-1;;;;14306:525;14838:323;;14983:2;14971:9;14962:7;14958:23;14954:32;14951:2;;;14999:1;14996;14989:12;14951:2;15034:1;15051:94;15137:7;15117:9;15051:94;;15583:673;;;;15769:2;15757:9;15748:7;15744:23;15740:32;15737:2;;;15785:1;15782;15775:12;15737:2;15820:1;15837:76;15905:7;15885:9;15837:76;;;15827:86;;15799:120;15950:2;15968:53;16013:7;16004:6;15993:9;15989:22;15968:53;;;15958:63;;15929:98;16086:2;16075:9;16071:18;16058:32;-1:-1;;;;;16102:6;16099:30;16096:2;;;16142:1;16139;16132:12;16096:2;16162:78;16232:7;16223:6;16212:9;16208:22;16162:78;;16263:568;;;;16442:2;16430:9;16421:7;16417:23;16413:32;16410:2;;;16458:1;16455;16448:12;16410:2;16493:1;16510:76;16578:7;16558:9;16510:76;;;16500:86;;16472:120;16651:2;16640:9;16636:18;16623:32;-1:-1;;;;;16667:6;16664:30;16661:2;;;16707:1;16704;16697:12;16661:2;16735:80;16807:7;16798:6;16787:9;16783:22;16735:80;;;16725:90;;;;16602:219;16404:427;;;;;;17150:354;;17271:2;17259:9;17250:7;17246:23;17242:32;17239:2;;;17287:1;17284;17277:12;17239:2;17322:24;;-1:-1;;;;;17355:30;;17352:2;;;17398:1;17395;17388:12;17352:2;17418:70;17480:7;17471:6;17460:9;17456:22;17418:70;;17511:315;;17652:2;17640:9;17631:7;17627:23;17623:32;17620:2;;;17668:1;17665;17658:12;17620:2;17703:1;17720:90;17802:7;17782:9;17720:90;;17833:263;;17948:2;17936:9;17927:7;17923:23;17919:32;17916:2;;;17964:1;17961;17954:12;17916:2;17999:1;18016:64;18072:7;18052:9;18016:64;;18103:1345;;;;;;;;;;18348:3;18336:9;18327:7;18323:23;18319:33;18316:2;;;18365:1;18362;18355:12;18316:2;18400:1;18417:64;18473:7;18453:9;18417:64;;;18407:74;;18379:108;18518:2;18536:64;18592:7;18583:6;18572:9;18568:22;18536:64;;;18526:74;;18497:109;18637:2;18655:64;18711:7;18702:6;18691:9;18687:22;18655:64;;;18645:74;;18616:109;18756:2;18774:64;18830:7;18821:6;18810:9;18806:22;18774:64;;;18764:74;;18735:109;18875:3;18894:64;18950:7;18941:6;18930:9;18926:22;18894:64;;;18884:74;;18854:110;18995:3;19014:64;19070:7;19061:6;19050:9;19046:22;19014:64;;;19004:74;;18974:110;19115:3;19134:64;19190:7;19181:6;19170:9;19166:22;19134:64;;;19124:74;;19094:110;19235:3;19254:61;19307:7;19298:6;19287:9;19283:22;19254:61;;;19244:71;;19214:107;19352:3;19371:61;19424:7;19415:6;19404:9;19400:22;19371:61;;;19361:71;;19331:107;18310:1138;;;;;;;;;;;;19455:535;;;;19604:2;19592:9;19583:7;19579:23;19575:32;19572:2;;;19620:1;19617;19610:12;19572:2;19655:1;19672:64;19728:7;19708:9;19672:64;;;19662:74;;19634:108;19773:2;19791:64;19847:7;19838:6;19827:9;19823:22;19791:64;;;19781:74;;19752:109;19892:2;19910:64;19966:7;19957:6;19946:9;19942:22;19910:64;;19997:239;;20100:2;20088:9;20079:7;20075:23;20071:32;20068:2;;;20116:1;20113;20106:12;20068:2;20151:1;20168:52;20212:7;20192:9;20168:52;;20243:259;;20356:2;20344:9;20335:7;20331:23;20327:32;20324:2;;;20372:1;20369;20362:12;20324:2;20407:1;20424:62;20478:7;20458:9;20424:62;;20509:261;;20623:2;20611:9;20602:7;20598:23;20594:32;20591:2;;;20639:1;20636;20629:12;20591:2;20674:1;20691:63;20746:7;20726:9;20691:63;;20778:173;;20865:46;20907:3;20899:6;20865:46;;;-1:-1;;20940:4;20931:14;;20858:93;20960:177;;21071:60;21127:3;21119:6;21071:60;;21146:203;;21248:61;21305:3;21297:6;21248:61;;21548:293;;21693:108;21797:3;21789:6;21693:108;;;-1:-1;;21830:4;21821:14;;21686:155;21850:295;;21995:108;22099:3;22091:6;21995:108;;;-1:-1;;22132:6;22123:16;;21988:157;22154:321;;22313:122;22431:3;22423:6;22313:122;;;-1:-1;;22464:4;22455:14;;22306:169;22484:273;;22619:98;22713:3;22705:6;22619:98;;22766:261;;22919:102;23017:3;23009:6;22919:102;;23036:277;;23173:100;23269:3;23261:6;23173:100;;;-1:-1;;23302:4;23293:14;;23166:147;23322:173;;23409:46;23451:3;23443:6;23409:46;;23503:142;23594:45;23633:5;23594:45;;;23589:3;23582:58;23576:69;;;23652:103;23725:24;23743:5;23725:24;;23913:654;;24044:50;24088:5;24044:50;;;24107:76;24176:6;24171:3;24107:76;;;24100:83;;24204:52;24250:5;24204:52;;;24276:7;24304:1;24289:256;24314:6;24311:1;24308:13;24289:256;;;24381:6;24375:13;24402:63;24461:3;24446:13;24402:63;;;24395:70;;24482:56;24531:6;24482:56;;;24472:66;-1:-1;;24336:1;24329:9;24289:256;;;-1:-1;24558:3;;24023:544;-1:-1;;;;;24023:544;24602:852;;24743:55;24792:5;24743:55;;;24811:81;24885:6;24880:3;24811:81;;;24804:88;;24915:3;24957:4;24949:6;24945:17;24940:3;24936:27;24984:57;25035:5;24984:57;;;25061:7;25089:1;25074:341;25099:6;25096:1;25093:13;25074:341;;;25161:9;25155:4;25151:20;25146:3;25139:33;25206:6;25200:13;25228:74;25297:4;25282:13;25228:74;;;25220:82;;25319:61;25373:6;25319:61;;;25403:4;25394:14;;;;;25309:71;-1:-1;;25121:1;25114:9;25074:341;;;-1:-1;25428:4;;24722:732;-1:-1;;;;;;;24722:732;25501:729;;25647:65;25706:5;25647:65;;;25725:76;25794:6;25789:3;25725:76;;;25718:83;;25822:67;25883:5;25822:67;;;25909:7;25937:1;25922:286;25947:6;25944:1;25941:13;25922:286;;;26014:6;26008:13;26035:78;26109:3;26094:13;26035:78;;;26028:85;;26130:71;26194:6;26130:71;;;26120:81;-1:-1;;25969:1;25962:9;25922:286;;26267:860;;26410:56;26460:5;26410:56;;;26479:82;26554:6;26549:3;26479:82;;;26472:89;;26584:3;26626:4;26618:6;26614:17;26609:3;26605:27;26653:58;26705:5;26653:58;;;26731:7;26759:1;26744:344;26769:6;26766:1;26763:13;26744:344;;;26831:9;26825:4;26821:20;26816:3;26809:33;26876:6;26870:13;26898:76;26969:4;26954:13;26898:76;;;26890:84;;26991:62;27046:6;26991:62;;;27076:4;27067:14;;;;;26981:72;-1:-1;;26791:1;26784:9;26744:344;;27220:922;;27423:83;27500:5;27423:83;;;27519:115;27627:6;27622:3;27519:115;;;27512:122;;27655:85;27734:5;27655:85;;;27760:7;27788:1;27773:347;27798:6;27795:1;27792:13;27773:347;;;27865:6;27859:13;27886:121;28003:3;27988:13;27886:121;;;27879:128;;28024:89;28106:6;28024:89;;;28014:99;-1:-1;;27820:1;27813:9;27773:347;;28235:922;;28438:83;28515:5;28438:83;;;28534:115;28642:6;28637:3;28534:115;;;28527:122;;28670:85;28749:5;28670:85;;;28775:7;28803:1;28788:347;28813:6;28810:1;28807:13;28788:347;;;28880:6;28874:13;28901:121;29018:3;29003:13;28901:121;;;28894:128;;29039:89;29121:6;29039:89;;;29029:99;-1:-1;;28835:1;28828:9;28788:347;;29264:978;;29481:90;29565:5;29481:90;;;29584:122;29699:6;29694:3;29584:122;;;29577:129;;29727:92;29813:5;29727:92;;;29839:7;29867:1;29852:368;29877:6;29874:1;29871:13;29852:368;;;29944:6;29938:13;29965:135;30096:3;30081:13;29965:135;;;29958:142;;30117:96;30206:6;30117:96;;;30107:106;-1:-1;;29899:1;29892:9;29852:368;;30325:882;;30518:78;30590:5;30518:78;;;30609:110;30712:6;30707:3;30609:110;;;30602:117;;30740:80;30814:5;30740:80;;;30840:7;30868:1;30853:332;30878:6;30875:1;30872:13;30853:332;;;30945:6;30939:13;30966:111;31073:3;31058:13;30966:111;;;30959:118;;31094:84;31171:6;31094:84;;;31084:94;-1:-1;;30900:1;30893:9;30853:332;;31294:1056;;31491:80;31565:5;31491:80;;;31584:112;31689:6;31684:3;31584:112;;;31577:119;;31719:3;31761:4;31753:6;31749:17;31744:3;31740:27;31788:82;31864:5;31788:82;;;31890:7;31918:1;31903:408;31928:6;31925:1;31922:13;31903:408;;;31990:9;31984:4;31980:20;31975:3;31968:33;32035:6;32029:13;32057:116;32168:4;32153:13;32057:116;;;32049:124;;32190:86;32269:6;32190:86;;;32299:4;32290:14;;;;;32180:96;-1:-1;;31950:1;31943:9;31903:408;;32435:890;;32630:79;32703:5;32630:79;;;32722:111;32826:6;32821:3;32722:111;;;32715:118;;32854:81;32929:5;32854:81;;;32955:7;32983:1;32968:335;32993:6;32990:1;32987:13;32968:335;;;33060:6;33054:13;33081:113;33190:3;33175:13;33081:113;;;33074:120;;33211:85;33289:6;33211:85;;;33201:95;-1:-1;;33015:1;33008:9;32968:335;;33364:654;;33495:50;33539:5;33495:50;;;33558:76;33627:6;33622:3;33558:76;;;33551:83;;33655:52;33701:5;33655:52;;;33727:7;33755:1;33740:256;33765:6;33762:1;33759:13;33740:256;;;33832:6;33826:13;33853:63;33912:3;33897:13;33853:63;;;33846:70;;33933:56;33982:6;33933:56;;;33923:66;-1:-1;;33787:1;33780:9;33740:256;;34026:94;34093:21;34108:5;34093:21;;34127:315;;34223:34;34251:5;34223:34;;;34269:60;34322:6;34317:3;34269:60;;;34262:67;;34334:52;34379:6;34374:3;34367:4;34360:5;34356:16;34334:52;;;34407:29;34429:6;34407:29;;;34398:39;;;;34203:239;-1:-1;;;34203:239;34449:146;34537:52;34583:5;34537:52;;34765:360;;34895:39;34928:5;34895:39;;;34946:89;35028:6;35023:3;34946:89;;;34939:96;;35040:52;35085:6;35080:3;35073:4;35066:5;35062:16;35040:52;;;35104:16;;;;;34875:250;-1:-1;;34875:250;35535:793;35769:23;;35700:4;35805:38;;;35535:793;;35691:14;;;;35858:114;35691:14;35769:23;35858:114;;;35850:122;;35720:264;36062:4;36055:5;36051:16;36045:23;36074:63;36131:4;36126:3;36122:14;36108:12;36074:63;;;35994:149;36221:4;36214:5;36210:16;36204:23;36233:63;36290:4;36285:3;36281:14;36267:12;36233:63;;;-1:-1;36319:4;35673:655;-1:-1;;;35673:655;36414:1164;36641:23;;36573:4;36564:14;;;36670:63;36568:3;36641:23;36670:63;;;36593:146;36817:4;36810:5;36806:16;36800:23;36829:63;36886:4;36881:3;36877:14;36863:12;36829:63;;;36749:149;36987:4;36980:5;36976:16;36970:23;36999:63;37056:4;37051:3;37047:14;37033:12;36999:63;;;36908:160;37156:4;37149:5;37145:16;37139:23;37168:63;37225:4;37220:3;37216:14;37202:12;37168:63;;;37078:159;37318:4;37311:5;37307:16;37301:23;37330:63;37387:4;37382:3;37378:14;37364:12;37330:63;;;37247:152;37482:4;37475:5;37471:16;37465:23;37494:63;37551:4;37546:3;37542:14;37528:12;37494:63;;;37409:154;36546:1032;;;;38900:2517;39129:23;;39059:6;39050:16;;;39158:63;39054:3;39129:23;39158:63;;;39081:146;39315:4;39308:5;39304:16;39298:23;39327:63;39384:4;39379:3;39375:14;39361:12;39327:63;;;39237:159;39483:4;39476:5;39472:16;39466:23;39495:63;39552:4;39547:3;39543:14;39529:12;39495:63;;;39406:158;39651:4;39644:5;39640:16;39634:23;39663:63;39720:4;39715:3;39711:14;39697:12;39663:63;;;39574:158;39822:4;39815:5;39811:16;39805:23;39834:63;39891:4;39886:3;39882:14;39868:12;39834:63;;;39742:161;39984:4;39977:5;39973:16;39967:23;39996:63;40053:4;40048:3;40044:14;40030:12;39996:63;;;39913:152;40147:4;40140:5;40136:16;40130:23;40159:63;40216:4;40211:3;40207:14;40193:12;40159:63;;;40075:153;40308:4;40301:5;40297:16;40291:23;40320:63;40377:4;40372:3;40368:14;40354:12;40320:63;;;40238:151;40467:6;40460:5;40456:18;40450:25;40481:65;40538:6;40533:3;40529:16;40515:12;40481:65;;;40399:153;40629:6;40622:5;40618:18;40612:25;40643:59;40694:6;40689:3;40685:16;40671:12;40643:59;;;40562:146;40801:6;40794:5;40790:18;40784:25;40815:65;40872:6;40867:3;40863:16;40849:12;40815:65;;;40718:168;40977:6;40970:5;40966:18;40960:25;40991:65;41048:6;41043:3;41039:16;41025:12;40991:65;;;40896:166;41145:6;41138:5;41134:18;41128:25;41159:65;41216:6;41211:3;41207:16;41193:12;41159:65;;;41072:158;41317:6;41310:5;41306:18;41300:25;41331:65;41388:6;41383:3;41379:16;41365:12;41331:65;;44106:519;44347:23;;44279:4;44270:14;;;44376:63;44274:3;44347:23;44376:63;;;44299:146;44529:4;44522:5;44518:16;44512:23;44541:63;44598:4;44593:3;44589:14;44575:12;44541:63;;45326:664;45564:23;;45495:4;45486:14;;;45593:63;45490:3;45564:23;45593:63;;;45515:147;45736:4;45729:5;45725:16;45719:23;45748:63;45805:4;45800:3;45796:14;45782:12;45748:63;;;45672:145;45894:4;45887:5;45883:16;45877:23;45906:63;45963:4;45958:3;45954:14;45940:12;45906:63;;46066:476;46274:23;;46201:4;46192:14;;;46303:63;46196:3;46274:23;46303:63;;46622:2680;46843:23;;46622:2680;;46769:6;46760:16;;;46872:63;46764:3;46843:23;46872:63;;;46791:150;47018:4;47011:5;47007:16;47001:23;47030:63;47087:4;47082:3;47078:14;47064:12;47030:63;;;46951:148;47171:4;47164:5;47160:16;47154:23;47183:63;47240:4;47235:3;47231:14;47217:12;47183:63;;;47109:143;47328:4;47321:5;47317:16;47311:23;47380:3;47374:4;47370:14;47363:4;47358:3;47354:14;47347:38;47400:99;47494:4;47480:12;47400:99;;;47392:107;;47262:249;47586:4;47579:5;47575:16;47569:23;47638:3;47632:4;47628:14;47621:4;47616:3;47612:14;47605:38;47658:99;47752:4;47738:12;47658:99;;;47650:107;;47521:248;47848:4;47841:5;47837:16;47831:23;47900:3;47894:4;47890:14;47883:4;47878:3;47874:14;47867:38;47920:111;48026:4;48012:12;47920:111;;;47912:119;;47779:264;48121:4;48114:5;48110:16;48104:23;48173:3;48167:4;48163:14;48156:4;48151:3;48147:14;48140:38;48193:109;48297:4;48283:12;48193:109;;;48185:117;;48053:261;48393:4;48386:5;48382:16;48376:23;48405:63;48462:4;48457:3;48453:14;48439:12;48405:63;;;48324:150;48551:6;48544:5;48540:18;48534:25;48565:65;48622:6;48617:3;48613:16;48599:12;48565:65;;;48484:152;48713:6;48706:5;48702:18;48696:25;48727:65;48784:6;48779:3;48775:16;48761:12;48727:65;;;48646:152;48879:6;48872:5;48868:18;48862:25;48893:65;48950:6;48945:3;48941:16;48927:12;48893:65;;;48808:156;49041:6;49034:5;49030:18;49024:25;49055:59;49106:6;49101:3;49097:16;49083:12;49055:59;;;48974:146;49197:6;49190:5;49186:18;49180:25;49211:59;49262:6;49257:3;49253:16;49239:12;49211:59;;49380:778;49589:23;;49517:4;49508:14;;;49618:63;49512:3;49589:23;49618:63;;;49537:150;49764:4;49757:5;49753:16;49747:23;49776:57;49827:4;49822:3;49818:14;49804:12;49776:57;;;49697:142;49915:4;49908:5;49904:16;49898:23;49927:57;49978:4;49973:3;49969:14;49955:12;49927:57;;;49849:141;50064:4;50057:5;50053:16;50047:23;50076:61;50131:4;50126:3;50122:14;50108:12;50076:61;;50165:103;50238:24;50256:5;50238:24;;50395:124;50477:36;50507:5;50477:36;;50526:100;50597:23;50614:5;50597:23;;50633:266;;50779:95;50870:3;50861:6;50779:95;;50906:213;51024:2;51009:18;;51038:71;51013:9;51082:6;51038:71;;51126:229;51252:2;51237:18;;51266:79;51241:9;51318:6;51266:79;;51362:340;51516:2;51501:18;;51530:79;51505:9;51582:6;51530:79;;;51620:72;51688:2;51677:9;51673:18;51664:6;51620:72;;51709:322;51854:2;51839:18;;51868:71;51843:9;51912:6;51868:71;;;51950;52017:2;52006:9;52002:18;51993:6;51950:71;;52038:477;52264:2;52278:47;;;52249:18;;52339:166;52249:18;52491:6;52339:166;;52522:477;52748:2;52762:47;;;52733:18;;52823:166;52733:18;52975:6;52823:166;;53006:505;53246:2;53260:47;;;53231:18;;53321:180;53231:18;53487:6;53321:180;;53518:457;53734:2;53748:47;;;53719:18;;53809:156;53719:18;53951:6;53809:156;;53982:465;54202:2;54216:47;;;54187:18;;54277:160;54187:18;54423:6;54277:160;;54454:461;54672:2;54686:47;;;54657:18;;54747:158;54657:18;54891:6;54747:158;;54922:243;55055:2;55040:18;;55069:86;55044:9;55128:6;55069:86;;55172:389;55354:2;55368:47;;;55339:18;;55429:122;55339:18;55537:6;55429:122;;55568:346;55752:3;55737:19;;55767:137;55741:9;55877:6;55767:137;;55921:346;56105:3;56090:19;;56120:137;56094:9;56230:6;56120:137;;56274:373;56472:2;56457:18;;56486:151;56461:9;56610:6;56486:151;;56654:365;56848:2;56833:18;;56862:147;56837:9;56982:6;56862:147;;57026:213;57144:2;57129:18;;57158:71;57133:9;57202:6;57158:71;;57246:324;57392:2;57377:18;;57406:71;57381:9;57450:6;57406:71;;57577:256;57639:2;57633:9;57665:17;;;-1:-1;;;;;57725:34;;57761:22;;;57722:62;57719:2;;;57797:1;57794;57787:12;57719:2;57813;57806:22;57617:216;;-1:-1;57617:216;57840:304;;-1:-1;;;;;57991:6;57988:30;57985:2;;;58031:1;58028;58021:12;57985:2;-1:-1;58066:4;58054:17;;;58119:15;;57922:222;59421:317;;-1:-1;;;;;59552:6;59549:30;59546:2;;;59592:1;59589;59582:12;59546:2;-1:-1;59723:4;59659;59636:17;;;;-1:-1;;59632:33;59713:15;;59483:255;60070:147;60190:4;60181:14;;60138:79;61983:133;62082:12;;62053:63;65561:168;65669:19;;;65718:4;65709:14;;65662:67;67894:145;68030:3;68008:31;-1:-1;68008:31;68047:91;;68109:24;68127:5;68109:24;;68251:85;68317:13;68310:21;;68293:43;68343:106;;68420:24;68438:5;68420:24;;69055:121;-1:-1;;;;;69117:54;;69100:76;69183:72;69245:5;69228:27;69262:88;69334:10;69323:22;;69306:44;69357:81;69428:4;69417:16;;69400:38;69445:104;-1:-1;;;;;69506:38;;69489:60;69556:129;;69643:37;69674:5;69643:37;;70223:106;;70301:23;70318:5;70301:23;;70337:268;70402:1;70409:101;70423:6;70420:1;70417:13;70409:101;;;70490:11;;;70484:18;70471:11;;;70464:39;70445:2;70438:10;70409:101;;;70525:6;70522:1;70519:13;70516:2;;;-1:-1;;70590:1;70572:16;;70565:27;70386:219;70613:97;70701:2;70681:14;-1:-1;;70677:28;;70661:49;70718:117;70787:24;70805:5;70787:24;;;70780:5;70777:35;70767:2;;70826:1;70823;70816:12;70767:2;70761:74;;70982:111;71048:21;71063:5;71048:21;;71100:147;71184:39;71217:5;71184:39;;72092:117;72161:24;72179:5;72161:24;;72216:115;72284:23;72301:5;72284:23;;72338:113;72405:22;72421:5;72405:22;;72458:115;72526:23;72543:5;72526:23;"},"methodIdentifiers":{"cTokenBalances(address,address)":"bdf950c9","cTokenBalancesAll(address[],address)":"0972bf8b","cTokenMetadata(address)":"158eca8b","cTokenMetadataAll(address[])":"4b70d84b","cTokenUnderlyingPrice(address)":"c5ae5934","cTokenUnderlyingPriceAll(address[])":"2b2d5ed6","getAccountLimits(address,address)":"7dd8f6d9","getCompBalanceMetadata(address,address)":"416405d7","getCompVotes(address,address,uint32[])":"59564219","getGovProposals(address,uint256[])":"96994869","getGovReceipts(address,address,uint256[])":"995ed99f"}},"metadata":"{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[{\"internalType\":\"contract CToken\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"cTokenBalances\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balanceOf\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"borrowBalanceCurrent\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"balanceOfUnderlying\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenAllowance\",\"type\":\"uint256\"}],\"internalType\":\"struct CompoundLens.CTokenBalances\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contract CToken[]\",\"name\":\"cTokens\",\"type\":\"address[]\"},{\"internalType\":\"address payable\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"cTokenBalancesAll\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balanceOf\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"borrowBalanceCurrent\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"balanceOfUnderlying\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenAllowance\",\"type\":\"uint256\"}],\"internalType\":\"struct CompoundLens.CTokenBalances[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contract CToken\",\"name\":\"cToken\",\"type\":\"address\"}],\"name\":\"cTokenMetadata\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exchangeRateCurrent\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"supplyRatePerBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"borrowRatePerBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveFactorMantissa\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalBorrows\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalReserves\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalCash\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isListed\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"collateralFactorMantissa\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"underlyingAssetAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cTokenDecimals\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"underlyingDecimals\",\"type\":\"uint256\"}],\"internalType\":\"struct CompoundLens.CTokenMetadata\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contract CToken[]\",\"name\":\"cTokens\",\"type\":\"address[]\"}],\"name\":\"cTokenMetadataAll\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exchangeRateCurrent\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"supplyRatePerBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"borrowRatePerBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveFactorMantissa\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalBorrows\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalReserves\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalCash\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isListed\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"collateralFactorMantissa\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"underlyingAssetAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cTokenDecimals\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"underlyingDecimals\",\"type\":\"uint256\"}],\"internalType\":\"struct CompoundLens.CTokenMetadata[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contract CToken\",\"name\":\"cToken\",\"type\":\"address\"}],\"name\":\"cTokenUnderlyingPrice\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"underlyingPrice\",\"type\":\"uint256\"}],\"internalType\":\"struct CompoundLens.CTokenUnderlyingPrice\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contract CToken[]\",\"name\":\"cTokens\",\"type\":\"address[]\"}],\"name\":\"cTokenUnderlyingPriceAll\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"underlyingPrice\",\"type\":\"uint256\"}],\"internalType\":\"struct CompoundLens.CTokenUnderlyingPrice[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contract Comptroller\",\"name\":\"comptroller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getAccountLimits\",\"outputs\":[{\"components\":[{\"internalType\":\"contract CToken[]\",\"name\":\"markets\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"shortfall\",\"type\":\"uint256\"}],\"internalType\":\"struct CompoundLens.AccountLimits\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"contract Comp\",\"name\":\"comp\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getCompBalanceMetadata\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"votes\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"delegate\",\"type\":\"address\"}],\"internalType\":\"struct CompoundLens.CompBalanceMetadata\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"contract Comp\",\"name\":\"comp\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint32[]\",\"name\":\"blockNumbers\",\"type\":\"uint32[]\"}],\"name\":\"getCompVotes\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"votes\",\"type\":\"uint256\"}],\"internalType\":\"struct CompoundLens.CompVotes[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"contract GovernorAlpha\",\"name\":\"governor\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"proposalIds\",\"type\":\"uint256[]\"}],\"name\":\"getGovProposals\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"eta\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"targets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"},{\"internalType\":\"string[]\",\"name\":\"signatures\",\"type\":\"string[]\"},{\"internalType\":\"bytes[]\",\"name\":\"calldatas\",\"type\":\"bytes[]\"},{\"internalType\":\"uint256\",\"name\":\"startBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"forVotes\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"againstVotes\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"canceled\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"executed\",\"type\":\"bool\"}],\"internalType\":\"struct CompoundLens.GovProposal[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"contract GovernorAlpha\",\"name\":\"governor\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"voter\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"proposalIds\",\"type\":\"uint256[]\"}],\"name\":\"getGovReceipts\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"hasVoted\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"support\",\"type\":\"bool\"},{\"internalType\":\"uint96\",\"name\":\"votes\",\"type\":\"uint96\"}],\"internalType\":\"struct CompoundLens.GovReceipt[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/Lens/CompoundLens.sol\":\"CompoundLens\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/CErc20.sol\":{\"keccak256\":\"0x37e284e3ca9a2821c3ad1001d110ca529820646f65dd441f5907070408b20bc2\",\"urls\":[\"bzz-raw://cb025aa0f581e05f023e5aef44cfcd47cdece7ec4cf53973d89834f5037666d2\",\"dweb:/ipfs/QmaY78mEyhUCuvbMVdGzpKmkw9yKoHz5noSg5REZgipupY\"]},\"contracts/CToken.sol\":{\"keccak256\":\"0xc3a5a827241528049e20a24cc446558c8a9272909f75ce5d1cf14ae3ab5feba3\",\"urls\":[\"bzz-raw://a403db2bf1a8e5e9384df19600bd18d4251056818b094afcdab418e683bb5cb8\",\"dweb:/ipfs/QmdkRbFGtKP67tNNqyH7BraDRGerwRNA7ktscbFV9LioM2\"]},\"contracts/CTokenInterfaces.sol\":{\"keccak256\":\"0xc8a056c724ef4f0215ece6011e7ac1007c9dc7611ce5160d470ec858bbb06bd3\",\"urls\":[\"bzz-raw://58951693d1b53d2722e55b068bab2b570f4b044d89c28ed6b53bac6e95aeb662\",\"dweb:/ipfs/QmQiNTw5jZR74WjKfX2bPiuTT4tuFuq8rx7QxEVyVvdGLn\"]},\"contracts/CarefulMath.sol\":{\"keccak256\":\"0x1487237dbbbb73ad43c8eff16e78311753719a94a5065f574de5c91b672c56f8\",\"urls\":[\"bzz-raw://349966a236f313b2cb42e1942832e6bd7e134f65f6654e6c4d46788e65cc4a9b\",\"dweb:/ipfs/Qmebpv8i5jLR4fLgpZHQZRLu6aefVAbLC2yUk9ABEekquz\"]},\"contracts/Comptroller.sol\":{\"keccak256\":\"0x1a11340e552facccbe4950166a87a2cabee6f41f0b09062314172f51b12102c4\",\"urls\":[\"bzz-raw://23d8b3dbe4e31d51cf78090a784420aa6b46d0c37f57d093fe78671677895863\",\"dweb:/ipfs/QmcLUe2GNaJQHuhBPdYgBdudDYNqaLjNJc7c914y878gJp\"]},\"contracts/ComptrollerInterface.sol\":{\"keccak256\":\"0xecfb84fabc9792d0b1c912886249c67bc42c39eb065d962d0b9a5f3736af5892\",\"urls\":[\"bzz-raw://711547ebc1a7f18b271118dd98276771953a9d7b3674716f67d247be9b907372\",\"dweb:/ipfs/QmbVZNvkBp8miByATrL6y5j8MePdcQ8uTAUZMpKrhpLgoa\"]},\"contracts/ComptrollerStorage.sol\":{\"keccak256\":\"0x83961d3c12984fe4afc72717fc44b2d868563d053a0eceda0cbf17ec6b255913\",\"urls\":[\"bzz-raw://ea667c2de43881f9be19f4f75dec348632273178965fc9b3655705d853b032bb\",\"dweb:/ipfs/QmZP6sbNFSgFZrAEvfRjhp1NtGj6U6Sea3JGiKG96AHyeP\"]},\"contracts/EIP20Interface.sol\":{\"keccak256\":\"0xee33b8b333743308a9153a59f22da2cadb22cedef4403fe039bf9e057c9c729a\",\"urls\":[\"bzz-raw://5427fdb941300d36a424da0a0a5800e3b2ca51c9c922831dbfce2f6637402b43\",\"dweb:/ipfs/QmTrvmLynqSUPjsGW2dpiQ91dSmn4xzccQiwr8qaBtyvjH\"]},\"contracts/EIP20NonStandardInterface.sol\":{\"keccak256\":\"0x469899442dd9640bfc2c670d404ad3027e48df5df8e5aeab0e25cc6b6aae05f5\",\"urls\":[\"bzz-raw://d8c4498abaf539eb413a2f1a916d75945adc8bd4ef437f8450cb67e07be3f38d\",\"dweb:/ipfs/QmaFpWfnhAMYW21rbT5PEszn4TGHdGU58Eq5AfZsCuapZ3\"]},\"contracts/ErrorReporter.sol\":{\"keccak256\":\"0xe9587478bc9efad203cab02b8aecae32828cfc9a271b13ae3c018e38e44aab32\",\"urls\":[\"bzz-raw://2eb34bdbbbc410fb401d50ddca44a7421a1d8191711c569ed5bcec1c1b07a05c\",\"dweb:/ipfs/QmYKNCYppyx3NGiwtjdLEmxUMgfnFBqT4pnvnhnBrPgrxS\"]},\"contracts/Exponential.sol\":{\"keccak256\":\"0xfda0e2b610541cf1cf316a0000c89a1069ccc21f1566affc0a058810e2b835d3\",\"urls\":[\"bzz-raw://fe319f184f1b5f27019d3d890124cd24e466d27153ac38eb9ff6b16efbad48b9\",\"dweb:/ipfs/Qmcev6jCmtdCviJxUQvUCmesPDShRDSvdfUEfvsqd4GEJA\"]},\"contracts/ExponentialNoError.sol\":{\"keccak256\":\"0x713a089f4bbcaec1d3924fc7d9a2154904a39f46cb6f25b713167dbe5f21623e\",\"urls\":[\"bzz-raw://d7108d68af7c5effd4272615ceba54e79e585f6b8be5aabc7602245c84c7b9e0\",\"dweb:/ipfs/QmQZo2XpxW7w5viVEg71mi9eKaAYD7HUqfCMB5yCCPVnc5\"]},\"contracts/Governance/Comp.sol\":{\"keccak256\":\"0x2309c20909360c500299d47fc351167265f8b2862dd7848828c928e32d8f7107\",\"urls\":[\"bzz-raw://14f6f4d15ab2f0cfabec2f381463c0cd78fa861deeca0a1fca103eb3ac9a1709\",\"dweb:/ipfs/QmWJWWVmNjDXBQPMZcfz1VGBHk2P7SuU3tCw8N1qtTyhAn\"]},\"contracts/Governance/GovernorAlpha.sol\":{\"keccak256\":\"0xc91c70583f8edc55495b739b53bc9f0e95b2291cde29e0923ebf4435a7b5a269\",\"urls\":[\"bzz-raw://b74d9e0709ace54fa457a17da0e647ca5c60499bf74c0162479c14792f452f4c\",\"dweb:/ipfs/QmZ9eGjrXsxXTc3JKF7GrygMn49jRXFQjKzyg7hLPu7JuN\"]},\"contracts/IFuseFeeDistributor.sol\":{\"keccak256\":\"0xb5d287b8e05574d38bd5d0b413f44b4c5d312f28188573ac60abe78123fbd92c\",\"urls\":[\"bzz-raw://84c2bbf746a82aaa100bee90c7dd40411c723bded124bb1775bf72bf7fda8a2c\",\"dweb:/ipfs/QmToQzDtz9BV2tvU71YsfWjdaZu5qpP1xKFZ1TkQgubhDb\"]},\"contracts/InterestRateModel.sol\":{\"keccak256\":\"0x0cc0dbd1991e5dcdcff58b0c82a9471a0fb9df26763e5e7415e1d081b7332409\",\"urls\":[\"bzz-raw://f4d7936aefc43ea2724f0e472b8f1517f1ca40170258ab9d5bbd0862dd0c4f13\",\"dweb:/ipfs/QmfYjG1Sm3kNwbhomHCWhMqw9LvaJVWVzBe4Te5BHRbTQS\"]},\"contracts/Lens/CompoundLens.sol\":{\"keccak256\":\"0xb3c6c99cdc04bc3680b08a7fd991203688b80a85ac9f5bba683b30194e6fd457\",\"urls\":[\"bzz-raw://d59ff95c369101002b93480cb764b840f3b82fe57aab24ea1ff5e3e5d93790bb\",\"dweb:/ipfs/QmR75aobAULCikyh4xW4cePpixktLFuFzgTwDcSfRuTGgL\"]},\"contracts/PriceOracle.sol\":{\"keccak256\":\"0x62ba3a5ec8f06d456ab089d6ca7f9d14d3a6ce6814923271ca60a6990918fb41\",\"urls\":[\"bzz-raw://aa6d2f20efdd5389161eb15bdab98b5628dc8cd5354394bbed35bb14d3612506\",\"dweb:/ipfs/QmVfo4eCDuk8LMSywpBjZBxCv7zLCNsG6u3nyD1d4CYwsD\"]},\"contracts/RewardsDistributorDelegate.sol\":{\"keccak256\":\"0xe44b7f3b3cc91d387205e2ac37fef6bbac051104a8c654e157dca25aa4efb236\",\"urls\":[\"bzz-raw://7f86f8e3162d8d5deaee2b06e81aa033e91c8f3e523bd45dbbfc1acadbae8732\",\"dweb:/ipfs/QmRGG9FMP24q4D1Xi525LnZHN6iwWddqxYQrTpRnpSPri3\"]},\"contracts/RewardsDistributorStorage.sol\":{\"keccak256\":\"0x3ce7a399413ff2e33fc2d77bb0a124be668c919899e0042ce867232b53f06786\",\"urls\":[\"bzz-raw://6044a7f8506f190e2eb4d300eb55f4bbeb56b30e0690a9f5e430c289d94f5f19\",\"dweb:/ipfs/QmZ5c629f93tQErFZdAwGYD5SegHbMrNGHRFhnc2k6vBVh\"]},\"contracts/Unitroller.sol\":{\"keccak256\":\"0x36bf7b6c12ddf5053da8b8b4c0c23da46df6c62eec0e31230c57f9aedf9b9d2d\",\"urls\":[\"bzz-raw://866cf0d98da484f9ed07fb98b3e1ef2db0ef33f3f0be5c02becdf07da448ce4a\",\"dweb:/ipfs/Qma8qNfmcfjReH5LT7Aaujqu3qdsBkdwExgS5yPgSbzYMF\"]}},\"version\":1}"}},"contracts/Maximillion.sol":{"Maximillion":{"abi":[{"inputs":[{"internalType":"contract CEther","name":"cEther_","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"constant":true,"inputs":[],"name":"cEther","outputs":[{"internalType":"contract CEther","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"borrower","type":"address"}],"name":"repayBehalf","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"borrower","type":"address"},{"internalType":"contract CEther","name":"cEther_","type":"address"}],"name":"repayBehalfExplicit","outputs":[],"payable":true,"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b506040516103363803806103368339818101604052602081101561003357600080fd5b5051600080546001600160a01b039092166001600160a01b03199092169190911790556102d1806100656000396000f3fe6080604052600436106100345760003560e01c806319b68c0014610039578063367b7f051461006a5780639f35c3d51461009a575b600080fd5b34801561004557600080fd5b5061004e6100c0565b604080516001600160a01b039092168252519081900360200190f35b6100986004803603604081101561008057600080fd5b506001600160a01b03813581169160200135166100cf565b005b610098600480360360208110156100b057600080fd5b50356001600160a01b0316610282565b6000546001600160a01b031681565b60003490506000826001600160a01b03166317bfdfbc856040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050602060405180830381600087803b15801561012e57600080fd5b505af1158015610142573d6000803e3d6000fd5b505050506040513d602081101561015857600080fd5b505190508082111561020a57826001600160a01b031663e597461982866040518363ffffffff1660e01b815260040180826001600160a01b03166001600160a01b031681526020019150506000604051808303818588803b1580156101bc57600080fd5b505af11580156101d0573d6000803e3d6000fd5b505060405133935084860380156108fc02935091506000818181858888f19350505050158015610204573d6000803e3d6000fd5b5061027c565b826001600160a01b031663e597461983866040518363ffffffff1660e01b815260040180826001600160a01b03166001600160a01b031681526020019150506000604051808303818588803b15801561026257600080fd5b505af1158015610276573d6000803e3d6000fd5b50505050505b50505050565b6000546102999082906001600160a01b03166100cf565b5056fea265627a7a72315820c45e694d3c02d8e5bc95c755bf40e8fab3f8159a1cd2ce76f4b8199b127a3a8f64736f6c63430005110032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x336 CODESIZE SUB DUP1 PUSH2 0x336 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x2D1 DUP1 PUSH2 0x65 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x34 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x19B68C00 EQ PUSH2 0x39 JUMPI DUP1 PUSH4 0x367B7F05 EQ PUSH2 0x6A JUMPI DUP1 PUSH4 0x9F35C3D5 EQ PUSH2 0x9A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x45 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4E PUSH2 0xC0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x98 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x80 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xCF JUMP JUMPDEST STOP JUMPDEST PUSH2 0x98 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x282 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 CALLVALUE SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x17BFDFBC DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x142 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x158 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x20A JUMPI DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE5974619 DUP3 DUP7 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1D0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD CALLER SWAP4 POP DUP5 DUP7 SUB DUP1 ISZERO PUSH2 0x8FC MUL SWAP4 POP SWAP2 POP PUSH1 0x0 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x204 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH2 0x27C JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE5974619 DUP4 DUP7 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x262 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x276 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x299 SWAP1 DUP3 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xCF JUMP JUMPDEST POP JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xC4 0x5E PUSH10 0x4D3C02D8E5BC95C755BF BLOCKHASH 0xE8 STATICCALL 0xB3 0xF8 ISZERO SWAP11 SHR 0xD2 0xCE PUSH23 0xF4B8199B127A3A8F64736F6C6343000511003200000000 ","sourceMap":"119:1449:30:-;;;329:68;8:9:-1;5:2;;;30:1;27;20:12;5:2;329:68:30;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;329:68:30;374:6;:16;;-1:-1:-1;;;;;374:16:30;;;-1:-1:-1;;;;;;374:16:30;;;;;;;;;119:1449;;;;;;"},"deployedBytecode":{"linkReferences":{},"object":"6080604052600436106100345760003560e01c806319b68c0014610039578063367b7f051461006a5780639f35c3d51461009a575b600080fd5b34801561004557600080fd5b5061004e6100c0565b604080516001600160a01b039092168252519081900360200190f35b6100986004803603604081101561008057600080fd5b506001600160a01b03813581169160200135166100cf565b005b610098600480360360208110156100b057600080fd5b50356001600160a01b0316610282565b6000546001600160a01b031681565b60003490506000826001600160a01b03166317bfdfbc856040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050602060405180830381600087803b15801561012e57600080fd5b505af1158015610142573d6000803e3d6000fd5b505050506040513d602081101561015857600080fd5b505190508082111561020a57826001600160a01b031663e597461982866040518363ffffffff1660e01b815260040180826001600160a01b03166001600160a01b031681526020019150506000604051808303818588803b1580156101bc57600080fd5b505af11580156101d0573d6000803e3d6000fd5b505060405133935084860380156108fc02935091506000818181858888f19350505050158015610204573d6000803e3d6000fd5b5061027c565b826001600160a01b031663e597461983866040518363ffffffff1660e01b815260040180826001600160a01b03166001600160a01b031681526020019150506000604051808303818588803b15801561026257600080fd5b505af1158015610276573d6000803e3d6000fd5b50505050505b50505050565b6000546102999082906001600160a01b03166100cf565b5056fea265627a7a72315820c45e694d3c02d8e5bc95c755bf40e8fab3f8159a1cd2ce76f4b8199b127a3a8f64736f6c63430005110032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x34 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x19B68C00 EQ PUSH2 0x39 JUMPI DUP1 PUSH4 0x367B7F05 EQ PUSH2 0x6A JUMPI DUP1 PUSH4 0x9F35C3D5 EQ PUSH2 0x9A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x45 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4E PUSH2 0xC0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x98 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x80 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xCF JUMP JUMPDEST STOP JUMPDEST PUSH2 0x98 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x282 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 CALLVALUE SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x17BFDFBC DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x142 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x158 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x20A JUMPI DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE5974619 DUP3 DUP7 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1D0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD CALLER SWAP4 POP DUP5 DUP7 SUB DUP1 ISZERO PUSH2 0x8FC MUL SWAP4 POP SWAP2 POP PUSH1 0x0 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x204 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH2 0x27C JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE5974619 DUP4 DUP7 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x262 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x276 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x299 SWAP1 DUP3 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xCF JUMP JUMPDEST POP JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xC4 0x5E PUSH10 0x4D3C02D8E5BC95C755BF BLOCKHASH 0xE8 STATICCALL 0xB3 0xF8 ISZERO SWAP11 SHR 0xD2 0xCE PUSH23 0xF4B8199B127A3A8F64736F6C6343000511003200000000 ","sourceMap":"119:1449:30:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;215:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;215:20:30;;;:::i;:::-;;;;-1:-1:-1;;;;;215:20:30;;;;;;;;;;;;;;1140:426;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1140:426:30;;;;;;;;;;:::i;:::-;;681:108;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;681:108:30;-1:-1:-1;;;;;681:108:30;;:::i;215:20::-;;;-1:-1:-1;;;;;215:20:30;;:::o;1140:426::-;1228:13;1244:9;1228:25;;1263:12;1278:7;-1:-1:-1;;;;;1278:28:30;;1307:8;1278:38;;;;;;;;;;;;;-1:-1:-1;;;;;1278:38:30;-1:-1:-1;;;;;1278:38:30;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1278:38:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1278:38:30;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1278:38:30;;-1:-1:-1;1330:18:30;;;1326:234;;;1364:7;-1:-1:-1;;;;;1364:25:30;;1396:7;1405:8;1364:50;;;;;;;;;;;;;-1:-1:-1;;;;;1364:50:30;-1:-1:-1;;;;;1364:50:30;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1364:50:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;1428:39:30;;:10;;-1:-1:-1;1448:18:30;;;1428:39;;;;;-1:-1:-1;1448:18:30;-1:-1:-1;1428:39:30;;;;1448:18;1428:10;:39;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1428:39:30;1326:234;;;1498:7;-1:-1:-1;;;;;1498:25:30;;1530:8;1540;1498:51;;;;;;;;;;;;;-1:-1:-1;;;;;1498:51:30;-1:-1:-1;;;;;1498:51:30;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1498:51:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1498:51:30;;;;;1326:234;1140:426;;;;:::o;681:108::-;775:6;;745:37;;765:8;;-1:-1:-1;;;;;775:6:30;745:19;:37::i;:::-;681:108;:::o"},"methodIdentifiers":{"cEther()":"19b68c00","repayBehalf(address)":"9f35c3d5","repayBehalfExplicit(address,address)":"367b7f05"}},"metadata":"{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract CEther\",\"name\":\"cEther_\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"constant\":true,\"inputs\":[],\"name\":\"cEther\",\"outputs\":[{\"internalType\":\"contract CEther\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"}],\"name\":\"repayBehalf\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"contract CEther\",\"name\":\"cEther_\",\"type\":\"address\"}],\"name\":\"repayBehalfExplicit\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Compound\",\"methods\":{\"repayBehalf(address)\":{\"details\":\"The provided Ether is applied towards the borrow balance, any excess is refunded\",\"params\":{\"borrower\":\"The address of the borrower account to repay on behalf of\"}},\"repayBehalfExplicit(address,address)\":{\"details\":\"The provided Ether is applied towards the borrow balance, any excess is refunded\",\"params\":{\"borrower\":\"The address of the borrower account to repay on behalf of\",\"cEther_\":\"The address of the cEther contract to repay in\"}}},\"title\":\"Compound's Maximillion Contract\"},\"userdoc\":{\"methods\":{\"constructor\":\"Construct a Maximillion to repay max in a CEther market\",\"repayBehalf(address)\":{\"notice\":\"msg.sender sends Ether to repay an account's borrow in the cEther market\"},\"repayBehalfExplicit(address,address)\":{\"notice\":\"msg.sender sends Ether to repay an account's borrow in a cEther market\"}}}},\"settings\":{\"compilationTarget\":{\"contracts/Maximillion.sol\":\"Maximillion\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/CEther.sol\":{\"keccak256\":\"0x582241553bc00e4ca35535fd0adef37f352a72be794260c74ff0cdd8877421fb\",\"urls\":[\"bzz-raw://f38ad51666cc1aa9bb2788771196a3f59fbd79f2aee1891815cdbcf959f19b7a\",\"dweb:/ipfs/QmdX5fSj5QWLgpDDHDwjQp1sB3esZz6VJ8d3NVYCqnojgd\"]},\"contracts/CToken.sol\":{\"keccak256\":\"0xc3a5a827241528049e20a24cc446558c8a9272909f75ce5d1cf14ae3ab5feba3\",\"urls\":[\"bzz-raw://a403db2bf1a8e5e9384df19600bd18d4251056818b094afcdab418e683bb5cb8\",\"dweb:/ipfs/QmdkRbFGtKP67tNNqyH7BraDRGerwRNA7ktscbFV9LioM2\"]},\"contracts/CTokenInterfaces.sol\":{\"keccak256\":\"0xc8a056c724ef4f0215ece6011e7ac1007c9dc7611ce5160d470ec858bbb06bd3\",\"urls\":[\"bzz-raw://58951693d1b53d2722e55b068bab2b570f4b044d89c28ed6b53bac6e95aeb662\",\"dweb:/ipfs/QmQiNTw5jZR74WjKfX2bPiuTT4tuFuq8rx7QxEVyVvdGLn\"]},\"contracts/CarefulMath.sol\":{\"keccak256\":\"0x1487237dbbbb73ad43c8eff16e78311753719a94a5065f574de5c91b672c56f8\",\"urls\":[\"bzz-raw://349966a236f313b2cb42e1942832e6bd7e134f65f6654e6c4d46788e65cc4a9b\",\"dweb:/ipfs/Qmebpv8i5jLR4fLgpZHQZRLu6aefVAbLC2yUk9ABEekquz\"]},\"contracts/ComptrollerInterface.sol\":{\"keccak256\":\"0xecfb84fabc9792d0b1c912886249c67bc42c39eb065d962d0b9a5f3736af5892\",\"urls\":[\"bzz-raw://711547ebc1a7f18b271118dd98276771953a9d7b3674716f67d247be9b907372\",\"dweb:/ipfs/QmbVZNvkBp8miByATrL6y5j8MePdcQ8uTAUZMpKrhpLgoa\"]},\"contracts/ComptrollerStorage.sol\":{\"keccak256\":\"0x83961d3c12984fe4afc72717fc44b2d868563d053a0eceda0cbf17ec6b255913\",\"urls\":[\"bzz-raw://ea667c2de43881f9be19f4f75dec348632273178965fc9b3655705d853b032bb\",\"dweb:/ipfs/QmZP6sbNFSgFZrAEvfRjhp1NtGj6U6Sea3JGiKG96AHyeP\"]},\"contracts/EIP20Interface.sol\":{\"keccak256\":\"0xee33b8b333743308a9153a59f22da2cadb22cedef4403fe039bf9e057c9c729a\",\"urls\":[\"bzz-raw://5427fdb941300d36a424da0a0a5800e3b2ca51c9c922831dbfce2f6637402b43\",\"dweb:/ipfs/QmTrvmLynqSUPjsGW2dpiQ91dSmn4xzccQiwr8qaBtyvjH\"]},\"contracts/EIP20NonStandardInterface.sol\":{\"keccak256\":\"0x469899442dd9640bfc2c670d404ad3027e48df5df8e5aeab0e25cc6b6aae05f5\",\"urls\":[\"bzz-raw://d8c4498abaf539eb413a2f1a916d75945adc8bd4ef437f8450cb67e07be3f38d\",\"dweb:/ipfs/QmaFpWfnhAMYW21rbT5PEszn4TGHdGU58Eq5AfZsCuapZ3\"]},\"contracts/ErrorReporter.sol\":{\"keccak256\":\"0xe9587478bc9efad203cab02b8aecae32828cfc9a271b13ae3c018e38e44aab32\",\"urls\":[\"bzz-raw://2eb34bdbbbc410fb401d50ddca44a7421a1d8191711c569ed5bcec1c1b07a05c\",\"dweb:/ipfs/QmYKNCYppyx3NGiwtjdLEmxUMgfnFBqT4pnvnhnBrPgrxS\"]},\"contracts/Exponential.sol\":{\"keccak256\":\"0xfda0e2b610541cf1cf316a0000c89a1069ccc21f1566affc0a058810e2b835d3\",\"urls\":[\"bzz-raw://fe319f184f1b5f27019d3d890124cd24e466d27153ac38eb9ff6b16efbad48b9\",\"dweb:/ipfs/Qmcev6jCmtdCviJxUQvUCmesPDShRDSvdfUEfvsqd4GEJA\"]},\"contracts/ExponentialNoError.sol\":{\"keccak256\":\"0x713a089f4bbcaec1d3924fc7d9a2154904a39f46cb6f25b713167dbe5f21623e\",\"urls\":[\"bzz-raw://d7108d68af7c5effd4272615ceba54e79e585f6b8be5aabc7602245c84c7b9e0\",\"dweb:/ipfs/QmQZo2XpxW7w5viVEg71mi9eKaAYD7HUqfCMB5yCCPVnc5\"]},\"contracts/IFuseFeeDistributor.sol\":{\"keccak256\":\"0xb5d287b8e05574d38bd5d0b413f44b4c5d312f28188573ac60abe78123fbd92c\",\"urls\":[\"bzz-raw://84c2bbf746a82aaa100bee90c7dd40411c723bded124bb1775bf72bf7fda8a2c\",\"dweb:/ipfs/QmToQzDtz9BV2tvU71YsfWjdaZu5qpP1xKFZ1TkQgubhDb\"]},\"contracts/InterestRateModel.sol\":{\"keccak256\":\"0x0cc0dbd1991e5dcdcff58b0c82a9471a0fb9df26763e5e7415e1d081b7332409\",\"urls\":[\"bzz-raw://f4d7936aefc43ea2724f0e472b8f1517f1ca40170258ab9d5bbd0862dd0c4f13\",\"dweb:/ipfs/QmfYjG1Sm3kNwbhomHCWhMqw9LvaJVWVzBe4Te5BHRbTQS\"]},\"contracts/Maximillion.sol\":{\"keccak256\":\"0xccc7fa9068273bec5e930864771032af00d5c20369a4eb941e9ee1fa625f31eb\",\"urls\":[\"bzz-raw://0651c22661327cc769022b0fa12e4ac6d3afe7ce9db03264501337a2eedf7257\",\"dweb:/ipfs/QmbmAV55tusv6BmLRs1Nwn3raLSsETuD5VwictRqP9k8FQ\"]},\"contracts/PriceOracle.sol\":{\"keccak256\":\"0x62ba3a5ec8f06d456ab089d6ca7f9d14d3a6ce6814923271ca60a6990918fb41\",\"urls\":[\"bzz-raw://aa6d2f20efdd5389161eb15bdab98b5628dc8cd5354394bbed35bb14d3612506\",\"dweb:/ipfs/QmVfo4eCDuk8LMSywpBjZBxCv7zLCNsG6u3nyD1d4CYwsD\"]}},\"version\":1}"}},"contracts/PriceOracle.sol":{"PriceOracle":{"abi":[{"constant":true,"inputs":[{"internalType":"contract CToken","name":"cToken","type":"address"}],"name":"getUnderlyingPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isPriceOracle","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getUnderlyingPrice(address)":"fc57d4df","isPriceOracle()":"66331bba"}},"metadata":"{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[{\"internalType\":\"contract CToken\",\"name\":\"cToken\",\"type\":\"address\"}],\"name\":\"getUnderlyingPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isPriceOracle\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"getUnderlyingPrice(address)\":{\"params\":{\"cToken\":\"The cToken to get the underlying price of\"},\"return\":\"The underlying asset price mantissa (scaled by 1e18). Zero means the price is unavailable.\"}}},\"userdoc\":{\"methods\":{\"getUnderlyingPrice(address)\":{\"notice\":\"Get the underlying price of a cToken asset\"}}}},\"settings\":{\"compilationTarget\":{\"contracts/PriceOracle.sol\":\"PriceOracle\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/CToken.sol\":{\"keccak256\":\"0xc3a5a827241528049e20a24cc446558c8a9272909f75ce5d1cf14ae3ab5feba3\",\"urls\":[\"bzz-raw://a403db2bf1a8e5e9384df19600bd18d4251056818b094afcdab418e683bb5cb8\",\"dweb:/ipfs/QmdkRbFGtKP67tNNqyH7BraDRGerwRNA7ktscbFV9LioM2\"]},\"contracts/CTokenInterfaces.sol\":{\"keccak256\":\"0xc8a056c724ef4f0215ece6011e7ac1007c9dc7611ce5160d470ec858bbb06bd3\",\"urls\":[\"bzz-raw://58951693d1b53d2722e55b068bab2b570f4b044d89c28ed6b53bac6e95aeb662\",\"dweb:/ipfs/QmQiNTw5jZR74WjKfX2bPiuTT4tuFuq8rx7QxEVyVvdGLn\"]},\"contracts/CarefulMath.sol\":{\"keccak256\":\"0x1487237dbbbb73ad43c8eff16e78311753719a94a5065f574de5c91b672c56f8\",\"urls\":[\"bzz-raw://349966a236f313b2cb42e1942832e6bd7e134f65f6654e6c4d46788e65cc4a9b\",\"dweb:/ipfs/Qmebpv8i5jLR4fLgpZHQZRLu6aefVAbLC2yUk9ABEekquz\"]},\"contracts/ComptrollerInterface.sol\":{\"keccak256\":\"0xecfb84fabc9792d0b1c912886249c67bc42c39eb065d962d0b9a5f3736af5892\",\"urls\":[\"bzz-raw://711547ebc1a7f18b271118dd98276771953a9d7b3674716f67d247be9b907372\",\"dweb:/ipfs/QmbVZNvkBp8miByATrL6y5j8MePdcQ8uTAUZMpKrhpLgoa\"]},\"contracts/ComptrollerStorage.sol\":{\"keccak256\":\"0x83961d3c12984fe4afc72717fc44b2d868563d053a0eceda0cbf17ec6b255913\",\"urls\":[\"bzz-raw://ea667c2de43881f9be19f4f75dec348632273178965fc9b3655705d853b032bb\",\"dweb:/ipfs/QmZP6sbNFSgFZrAEvfRjhp1NtGj6U6Sea3JGiKG96AHyeP\"]},\"contracts/EIP20Interface.sol\":{\"keccak256\":\"0xee33b8b333743308a9153a59f22da2cadb22cedef4403fe039bf9e057c9c729a\",\"urls\":[\"bzz-raw://5427fdb941300d36a424da0a0a5800e3b2ca51c9c922831dbfce2f6637402b43\",\"dweb:/ipfs/QmTrvmLynqSUPjsGW2dpiQ91dSmn4xzccQiwr8qaBtyvjH\"]},\"contracts/EIP20NonStandardInterface.sol\":{\"keccak256\":\"0x469899442dd9640bfc2c670d404ad3027e48df5df8e5aeab0e25cc6b6aae05f5\",\"urls\":[\"bzz-raw://d8c4498abaf539eb413a2f1a916d75945adc8bd4ef437f8450cb67e07be3f38d\",\"dweb:/ipfs/QmaFpWfnhAMYW21rbT5PEszn4TGHdGU58Eq5AfZsCuapZ3\"]},\"contracts/ErrorReporter.sol\":{\"keccak256\":\"0xe9587478bc9efad203cab02b8aecae32828cfc9a271b13ae3c018e38e44aab32\",\"urls\":[\"bzz-raw://2eb34bdbbbc410fb401d50ddca44a7421a1d8191711c569ed5bcec1c1b07a05c\",\"dweb:/ipfs/QmYKNCYppyx3NGiwtjdLEmxUMgfnFBqT4pnvnhnBrPgrxS\"]},\"contracts/Exponential.sol\":{\"keccak256\":\"0xfda0e2b610541cf1cf316a0000c89a1069ccc21f1566affc0a058810e2b835d3\",\"urls\":[\"bzz-raw://fe319f184f1b5f27019d3d890124cd24e466d27153ac38eb9ff6b16efbad48b9\",\"dweb:/ipfs/Qmcev6jCmtdCviJxUQvUCmesPDShRDSvdfUEfvsqd4GEJA\"]},\"contracts/ExponentialNoError.sol\":{\"keccak256\":\"0x713a089f4bbcaec1d3924fc7d9a2154904a39f46cb6f25b713167dbe5f21623e\",\"urls\":[\"bzz-raw://d7108d68af7c5effd4272615ceba54e79e585f6b8be5aabc7602245c84c7b9e0\",\"dweb:/ipfs/QmQZo2XpxW7w5viVEg71mi9eKaAYD7HUqfCMB5yCCPVnc5\"]},\"contracts/IFuseFeeDistributor.sol\":{\"keccak256\":\"0xb5d287b8e05574d38bd5d0b413f44b4c5d312f28188573ac60abe78123fbd92c\",\"urls\":[\"bzz-raw://84c2bbf746a82aaa100bee90c7dd40411c723bded124bb1775bf72bf7fda8a2c\",\"dweb:/ipfs/QmToQzDtz9BV2tvU71YsfWjdaZu5qpP1xKFZ1TkQgubhDb\"]},\"contracts/InterestRateModel.sol\":{\"keccak256\":\"0x0cc0dbd1991e5dcdcff58b0c82a9471a0fb9df26763e5e7415e1d081b7332409\",\"urls\":[\"bzz-raw://f4d7936aefc43ea2724f0e472b8f1517f1ca40170258ab9d5bbd0862dd0c4f13\",\"dweb:/ipfs/QmfYjG1Sm3kNwbhomHCWhMqw9LvaJVWVzBe4Te5BHRbTQS\"]},\"contracts/PriceOracle.sol\":{\"keccak256\":\"0x62ba3a5ec8f06d456ab089d6ca7f9d14d3a6ce6814923271ca60a6990918fb41\",\"urls\":[\"bzz-raw://aa6d2f20efdd5389161eb15bdab98b5628dc8cd5354394bbed35bb14d3612506\",\"dweb:/ipfs/QmVfo4eCDuk8LMSywpBjZBxCv7zLCNsG6u3nyD1d4CYwsD\"]}},\"version\":1}"}},"contracts/ReactiveJumpRateModelV2.sol":{"ReactiveJumpRateModelV2":{"abi":[{"inputs":[{"internalType":"uint256","name":"baseRatePerYear","type":"uint256"},{"internalType":"uint256","name":"multiplierPerYear","type":"uint256"},{"internalType":"uint256","name":"jumpMultiplierPerYear","type":"uint256"},{"internalType":"uint256","name":"kink_","type":"uint256"},{"internalType":"address","name":"owner_","type":"address"},{"internalType":"address","name":"cToken_","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"baseRatePerBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"multiplierPerBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"jumpMultiplierPerBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"kink","type":"uint256"}],"name":"NewInterestParams","type":"event"},{"constant":true,"inputs":[],"name":"baseRatePerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"blocksPerYear","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"cToken","outputs":[{"internalType":"contract CToken","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"borrowRateMantissa","type":"uint256"}],"name":"checkpointInterest","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"checkpointInterest","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"cash","type":"uint256"},{"internalType":"uint256","name":"borrows","type":"uint256"},{"internalType":"uint256","name":"reserves","type":"uint256"}],"name":"getBorrowRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"cash","type":"uint256"},{"internalType":"uint256","name":"borrows","type":"uint256"},{"internalType":"uint256","name":"reserves","type":"uint256"},{"internalType":"uint256","name":"reserveFactorMantissa","type":"uint256"}],"name":"getSupplyRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isInterestRateModel","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"jumpMultiplierPerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"kink","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"multiplierPerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"resetInterestCheckpoints","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"baseRatePerYear","type":"uint256"},{"internalType":"uint256","name":"multiplierPerYear","type":"uint256"},{"internalType":"uint256","name":"jumpMultiplierPerYear","type":"uint256"},{"internalType":"uint256","name":"kink_","type":"uint256"}],"name":"updateJumpRateModel","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"cash","type":"uint256"},{"internalType":"uint256","name":"borrows","type":"uint256"},{"internalType":"uint256","name":"reserves","type":"uint256"}],"name":"utilizationRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60806040523480156200001157600080fd5b50604051620011a3380380620011a3833981810160405260c08110156200003757600080fd5b508051602082015160408301516060840151608085015160a090950151600080546001600160a01b0319166001600160a01b038816179055939492939192909185858585856200008a85858585620000bc565b5050600580546001600160a01b0319166001600160a01b03959095169490941790935550620003069650505050505050565b620000d96224339485620001ae60201b62000c911790919060201c565b60025562000131620000fb622433948362000201602090811b62000c3817901c565b6200011d670de0b6b3a7640000866200020160201b62000c381790919060201c565b620001ae60201b62000c911790919060201c565b6001556200014f8262243394620001ae602090811b62000c9117901c565b60038190556004829055600254600154604080519283526020830191909152818101929092526060810183905290517f6960ab234c7ef4b0c9197100f5393cfcde7c453ac910a27bd2000aa1dd4c068d9181900360800190a150505050565b6000620001f883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200025f60201b60201c565b90505b92915050565b6000826200021257506000620001fb565b828202828482816200022057fe5b0414620001f85760405162461bcd60e51b8152600401808060200182810382526021815260200180620011826021913960400191505060405180910390fd5b60008183620002ef5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620002b357818101518382015260200162000299565b50505050905090810190601f168015620002e15780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581620002fc57fe5b0495945050505050565b610e6c80620003166000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c8063a385fb9611610097578063d982281611610066578063d98228161461023b578063e85426f614610243578063f14039de1461024b578063fd2da33914610253576100f5565b8063a385fb96146101df578063b8168816146101e7578063b9f9850a14610216578063bdfa04661461021e576100f5565b806369e527da116100d357806369e527da146101825780636e71e2d8146101a65780638726bb89146101cf5780638da5cb5b146101d7576100f5565b806315f24053146100fa5780632037f3e7146101355780632191f92a14610166575b600080fd5b6101236004803603606081101561011057600080fd5b508035906020810135906040013561025b565b60408051918252519081900360200190f35b6101646004803603608081101561014b57600080fd5b5080359060208101359060408101359060600135610272565b005b61016e6102cd565b604080519115158252519081900360200190f35b61018a6102d2565b604080516001600160a01b039092168252519081900360200190f35b610123600480360360608110156101bc57600080fd5b50803590602081013590604001356102e1565b610123610337565b61018a61033d565b61012361034c565b610123600480360360808110156101fd57600080fd5b5080359060208101359060408101359060600135610353565b6101236103d2565b6101646004803603602081101561023457600080fd5b50356103d8565b610164610986565b6101646109a4565b610123610a1d565b610123610a23565b6000610268848484610a29565b90505b9392505050565b6000546001600160a01b031633146102bb5760405162461bcd60e51b8152600401808060200182810382526026815260200180610e126026913960400191505060405180910390fd5b6102c784848484610af2565b50505050565b600181565b6005546001600160a01b031681565b6000826102f05750600061026b565b61026861031383610307878763ffffffff610b9316565b9063ffffffff610bf616565b61032b85670de0b6b3a764000063ffffffff610c3816565b9063ffffffff610c9116565b60015481565b6000546001600160a01b031681565b6224339481565b60008061036e670de0b6b3a76400008463ffffffff610bf616565b9050600061037d878787610a29565b9050600061039d670de0b6b3a764000061032b848663ffffffff610c3816565b90506103c6670de0b6b3a764000061032b836103ba8c8c8c6102e1565b9063ffffffff610c3816565b98975050505050505050565b60035481565b6005546001600160a01b031633146103ef57600080fd5b60055460408051636c540baf60e01b815290516000926001600160a01b031691636c540baf916004808301926020929190829003018186803b15801561043457600080fd5b505afa158015610448573d6000803e3d6000fd5b505050506040513d602081101561045e57600080fd5b50516005546040805163aa5af0fd60e01b815290519293506000926001600160a01b039092169163aa5af0fd91600480820192602092909190829003018186803b1580156104ab57600080fd5b505afa1580156104bf573d6000803e3d6000fd5b505050506040513d60208110156104d557600080fd5b505190506104e1610dcf565b604051806060016040528084815260200183815260200185815250905060026006541015801561054f575061051e8361196463ffffffff610bf616565b600760106002600654038161052f57fe5b068154811061053a57fe5b90600052602060002090600302016000015410155b156105a55780600760106001600654038161056657fe5b068154811061057157fe5b90600052602060002090600302016000820151816000015560208201518160010155604082015181600201559050506102c7565b8060076010600654816105b457fe5b06815481106105bf57fe5b600091825260208083208451600390930201918255830151600180830191909155604090930151600290910155600680549092019091556106088461985863ffffffff610bf616565b905080600760106006541161061e57600061062c565b60106006548161062a57fe5b065b8154811061063657fe5b90600052602060002090600302016000015411156106575750505050610983565b61065f610dcf565b6000809050600060106006541161067757600061067e565b6010600654035b90505b60065481101561071e576007601082068154811061069b57fe5b9060005260206000209060030201604051806060016040529081600082015481526020016001820154815260200160028201548152505092506106e961cb2088610bf690919063ffffffff16565b8351108015906106fa575082518410155b15610708576001915061071e565b82518410156107165761071e565b600101610681565b8161081057600760106000198301068154811061073757fe5b906000526020600020906003020160405180606001604052908160008201548152602001600182015481526020016002820154815250509250600061078761b1bc89610bf690919063ffffffff16565b84519091506000906107a090839063ffffffff610bf616565b905060006107bb828760400151610c3890919063ffffffff16565b905060405180606001604052808481526020016107fd6107f0670de0b6b3a764000061032b868f610c3890919063ffffffff16565b8c9063ffffffff610b9316565b8152602001876040015181525095505050505b6000610841670de0b6b3a7640000610307866020015161032b670de0b6b3a76400008c610c3890919063ffffffff16565b9050600061086c61085f86600001518b610bf690919063ffffffff16565b839063ffffffff610c9116565b9050600060025482106108bd576004546108b8906108979066b1a2bc2ec5000063ffffffff610bf616565b61032b670de0b6b3a76400006103ba60025487610bf690919063ffffffff16565b6108c0565b60005b905060006108e560015461032b670de0b6b3a764000085610c3890919063ffffffff16565b9050670d2f13f7789f0000811115806109065750670e92596fd62900008110155b156109775760025461097790610925906224339463ffffffff610c3816565b610959670de0b6b3a764000061032b61094c60045462243394610c3890919063ffffffff16565b879063ffffffff610c3816565b60035461096f906224339463ffffffff610c3816565b600454610af2565b50505050505050505050505b50565b6005546001600160a01b0316331461099d57600080fd5b6000600655565b60055460408051631f1f3b4560e31b81529051610a1b926001600160a01b03169163f8f9da28916004808301926020929190829003018186803b1580156109ea57600080fd5b505afa1580156109fe573d6000803e3d6000fd5b505050506040513d6020811015610a1457600080fd5b50516103d8565b565b60025481565b60045481565b600080610a378585856102e1565b90506004548111610a7d57610a75600254610a69670de0b6b3a764000061032b60015486610c3890919063ffffffff16565b9063ffffffff610b9316565b91505061026b565b6000610aa8600254610a69670de0b6b3a764000061032b600154600454610c3890919063ffffffff16565b90506000610ac160045484610bf690919063ffffffff16565b9050610ae882610a69670de0b6b3a764000061032b60035486610c3890919063ffffffff16565b935050505061026b565b610b05846224339463ffffffff610c9116565b600255610b1e610313622433948363ffffffff610c3816565b600155610b34826224339463ffffffff610c9116565b60038190556004829055600254600154604080519283526020830191909152818101929092526060810183905290517f6960ab234c7ef4b0c9197100f5393cfcde7c453ac910a27bd2000aa1dd4c068d9181900360800190a150505050565b600082820183811015610bed576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b90505b92915050565b6000610bed83836040518060400160405280601f81526020017f536166654d6174683a207375627472616374696f6e20756e646572666c6f7700815250610cd3565b600082610c4757506000610bf0565b82820282848281610c5457fe5b0414610bed5760405162461bcd60e51b8152600401808060200182810382526021815260200180610df16021913960400191505060405180910390fd5b6000610bed83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610d6a565b60008184841115610d625760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610d27578181015183820152602001610d0f565b50505050905090810190601f168015610d545780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008183610db95760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610d27578181015183820152602001610d0f565b506000838581610dc557fe5b0495945050505050565b6040518060600160405280600081526020016000815260200160008152509056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f776f6e6c7920746865206f776e6572206d61792063616c6c20746869732066756e6374696f6e2ea265627a7a7231582030596c53932141adddf5e0a6b2c41e979b84617217242d1fda5345e276f7f8a464736f6c63430005110032536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x11A3 CODESIZE SUB DUP1 PUSH3 0x11A3 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0xC0 DUP2 LT ISZERO PUSH3 0x37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x60 DUP5 ADD MLOAD PUSH1 0x80 DUP6 ADD MLOAD PUSH1 0xA0 SWAP1 SWAP6 ADD MLOAD PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND OR SWAP1 SSTORE SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH3 0x8A DUP6 DUP6 DUP6 DUP6 PUSH3 0xBC JUMP JUMPDEST POP POP PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR SWAP1 SWAP4 SSTORE POP PUSH3 0x306 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH3 0xD9 PUSH3 0x243394 DUP6 PUSH3 0x1AE PUSH1 0x20 SHL PUSH3 0xC91 OR SWAP1 SWAP2 SWAP1 PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x2 SSTORE PUSH3 0x131 PUSH3 0xFB PUSH3 0x243394 DUP4 PUSH3 0x201 PUSH1 0x20 SWAP1 DUP2 SHL PUSH3 0xC38 OR SWAP1 SHR JUMP JUMPDEST PUSH3 0x11D PUSH8 0xDE0B6B3A7640000 DUP7 PUSH3 0x201 PUSH1 0x20 SHL PUSH3 0xC38 OR SWAP1 SWAP2 SWAP1 PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x1AE PUSH1 0x20 SHL PUSH3 0xC91 OR SWAP1 SWAP2 SWAP1 PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x1 SSTORE PUSH3 0x14F DUP3 PUSH3 0x243394 PUSH3 0x1AE PUSH1 0x20 SWAP1 DUP2 SHL PUSH3 0xC91 OR SWAP1 SHR JUMP JUMPDEST PUSH1 0x3 DUP2 SWAP1 SSTORE PUSH1 0x4 DUP3 SWAP1 SSTORE PUSH1 0x2 SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD PUSH32 0x6960AB234C7EF4B0C9197100F5393CFCDE7C453AC910A27BD2000AA1DD4C068D SWAP2 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1F8 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH3 0x25F PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH3 0x212 JUMPI POP PUSH1 0x0 PUSH3 0x1FB JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH3 0x220 JUMPI INVALID JUMPDEST DIV EQ PUSH3 0x1F8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH3 0x1182 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH3 0x2EF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x2B3 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x299 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0x2E1 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH3 0x2FC JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0xE6C DUP1 PUSH3 0x316 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 0xF5 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA385FB96 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xD9822816 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xD9822816 EQ PUSH2 0x23B JUMPI DUP1 PUSH4 0xE85426F6 EQ PUSH2 0x243 JUMPI DUP1 PUSH4 0xF14039DE EQ PUSH2 0x24B JUMPI DUP1 PUSH4 0xFD2DA339 EQ PUSH2 0x253 JUMPI PUSH2 0xF5 JUMP JUMPDEST DUP1 PUSH4 0xA385FB96 EQ PUSH2 0x1DF JUMPI DUP1 PUSH4 0xB8168816 EQ PUSH2 0x1E7 JUMPI DUP1 PUSH4 0xB9F9850A EQ PUSH2 0x216 JUMPI DUP1 PUSH4 0xBDFA0466 EQ PUSH2 0x21E JUMPI PUSH2 0xF5 JUMP JUMPDEST DUP1 PUSH4 0x69E527DA GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x69E527DA EQ PUSH2 0x182 JUMPI DUP1 PUSH4 0x6E71E2D8 EQ PUSH2 0x1A6 JUMPI DUP1 PUSH4 0x8726BB89 EQ PUSH2 0x1CF JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x1D7 JUMPI PUSH2 0xF5 JUMP JUMPDEST DUP1 PUSH4 0x15F24053 EQ PUSH2 0xFA JUMPI DUP1 PUSH4 0x2037F3E7 EQ PUSH2 0x135 JUMPI DUP1 PUSH4 0x2191F92A EQ PUSH2 0x166 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x123 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x110 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x25B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x164 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x14B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x272 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x16E PUSH2 0x2CD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x18A PUSH2 0x2D2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x123 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x2E1 JUMP JUMPDEST PUSH2 0x123 PUSH2 0x337 JUMP JUMPDEST PUSH2 0x18A PUSH2 0x33D JUMP JUMPDEST PUSH2 0x123 PUSH2 0x34C JUMP JUMPDEST PUSH2 0x123 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x1FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x353 JUMP JUMPDEST PUSH2 0x123 PUSH2 0x3D2 JUMP JUMPDEST PUSH2 0x164 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x234 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x3D8 JUMP JUMPDEST PUSH2 0x164 PUSH2 0x986 JUMP JUMPDEST PUSH2 0x164 PUSH2 0x9A4 JUMP JUMPDEST PUSH2 0x123 PUSH2 0xA1D JUMP JUMPDEST PUSH2 0x123 PUSH2 0xA23 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x268 DUP5 DUP5 DUP5 PUSH2 0xA29 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x2BB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xE12 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2C7 DUP5 DUP5 DUP5 DUP5 PUSH2 0xAF2 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x2F0 JUMPI POP PUSH1 0x0 PUSH2 0x26B JUMP JUMPDEST PUSH2 0x268 PUSH2 0x313 DUP4 PUSH2 0x307 DUP8 DUP8 PUSH4 0xFFFFFFFF PUSH2 0xB93 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xBF6 AND JUMP JUMPDEST PUSH2 0x32B DUP6 PUSH8 0xDE0B6B3A7640000 PUSH4 0xFFFFFFFF PUSH2 0xC38 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xC91 AND JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH3 0x243394 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x36E PUSH8 0xDE0B6B3A7640000 DUP5 PUSH4 0xFFFFFFFF PUSH2 0xBF6 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x37D DUP8 DUP8 DUP8 PUSH2 0xA29 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x39D PUSH8 0xDE0B6B3A7640000 PUSH2 0x32B DUP5 DUP7 PUSH4 0xFFFFFFFF PUSH2 0xC38 AND JUMP JUMPDEST SWAP1 POP PUSH2 0x3C6 PUSH8 0xDE0B6B3A7640000 PUSH2 0x32B DUP4 PUSH2 0x3BA DUP13 DUP13 DUP13 PUSH2 0x2E1 JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xC38 AND JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x3EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x6C540BAF PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x6C540BAF SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x434 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x448 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x45E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xAA5AF0FD PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP4 POP PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0xAA5AF0FD SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4BF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH2 0x4E1 PUSH2 0xDCF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE POP SWAP1 POP PUSH1 0x2 PUSH1 0x6 SLOAD LT ISZERO DUP1 ISZERO PUSH2 0x54F JUMPI POP PUSH2 0x51E DUP4 PUSH2 0x1964 PUSH4 0xFFFFFFFF PUSH2 0xBF6 AND JUMP JUMPDEST PUSH1 0x7 PUSH1 0x10 PUSH1 0x2 PUSH1 0x6 SLOAD SUB DUP2 PUSH2 0x52F JUMPI INVALID JUMPDEST MOD DUP2 SLOAD DUP2 LT PUSH2 0x53A JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x0 ADD SLOAD LT ISZERO JUMPDEST ISZERO PUSH2 0x5A5 JUMPI DUP1 PUSH1 0x7 PUSH1 0x10 PUSH1 0x1 PUSH1 0x6 SLOAD SUB DUP2 PUSH2 0x566 JUMPI INVALID JUMPDEST MOD DUP2 SLOAD DUP2 LT PUSH2 0x571 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD SSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD SSTORE SWAP1 POP POP PUSH2 0x2C7 JUMP JUMPDEST DUP1 PUSH1 0x7 PUSH1 0x10 PUSH1 0x6 SLOAD DUP2 PUSH2 0x5B4 JUMPI INVALID JUMPDEST MOD DUP2 SLOAD DUP2 LT PUSH2 0x5BF JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 DUP5 MLOAD PUSH1 0x3 SWAP1 SWAP4 MUL ADD SWAP2 DUP3 SSTORE DUP4 ADD MLOAD PUSH1 0x1 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0x40 SWAP1 SWAP4 ADD MLOAD PUSH1 0x2 SWAP1 SWAP2 ADD SSTORE PUSH1 0x6 DUP1 SLOAD SWAP1 SWAP3 ADD SWAP1 SWAP2 SSTORE PUSH2 0x608 DUP5 PUSH2 0x9858 PUSH4 0xFFFFFFFF PUSH2 0xBF6 AND JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x7 PUSH1 0x10 PUSH1 0x6 SLOAD GT PUSH2 0x61E JUMPI PUSH1 0x0 PUSH2 0x62C JUMP JUMPDEST PUSH1 0x10 PUSH1 0x6 SLOAD DUP2 PUSH2 0x62A JUMPI INVALID JUMPDEST MOD JUMPDEST DUP2 SLOAD DUP2 LT PUSH2 0x636 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x0 ADD SLOAD GT ISZERO PUSH2 0x657 JUMPI POP POP POP POP PUSH2 0x983 JUMP JUMPDEST PUSH2 0x65F PUSH2 0xDCF JUMP JUMPDEST PUSH1 0x0 DUP1 SWAP1 POP PUSH1 0x0 PUSH1 0x10 PUSH1 0x6 SLOAD GT PUSH2 0x677 JUMPI PUSH1 0x0 PUSH2 0x67E JUMP JUMPDEST PUSH1 0x10 PUSH1 0x6 SLOAD SUB JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x6 SLOAD DUP2 LT ISZERO PUSH2 0x71E JUMPI PUSH1 0x7 PUSH1 0x10 DUP3 MOD DUP2 SLOAD DUP2 LT PUSH2 0x69B JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD SLOAD DUP2 MSTORE POP POP SWAP3 POP PUSH2 0x6E9 PUSH2 0xCB20 DUP9 PUSH2 0xBF6 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP4 MLOAD LT DUP1 ISZERO SWAP1 PUSH2 0x6FA JUMPI POP DUP3 MLOAD DUP5 LT ISZERO JUMPDEST ISZERO PUSH2 0x708 JUMPI PUSH1 0x1 SWAP2 POP PUSH2 0x71E JUMP JUMPDEST DUP3 MLOAD DUP5 LT ISZERO PUSH2 0x716 JUMPI PUSH2 0x71E JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x681 JUMP JUMPDEST DUP2 PUSH2 0x810 JUMPI PUSH1 0x7 PUSH1 0x10 PUSH1 0x0 NOT DUP4 ADD MOD DUP2 SLOAD DUP2 LT PUSH2 0x737 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD SLOAD DUP2 MSTORE POP POP SWAP3 POP PUSH1 0x0 PUSH2 0x787 PUSH2 0xB1BC DUP10 PUSH2 0xBF6 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP5 MLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x7A0 SWAP1 DUP4 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xBF6 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x7BB DUP3 DUP8 PUSH1 0x40 ADD MLOAD PUSH2 0xC38 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x7FD PUSH2 0x7F0 PUSH8 0xDE0B6B3A7640000 PUSH2 0x32B DUP7 DUP16 PUSH2 0xC38 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP13 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xB93 AND JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH1 0x40 ADD MLOAD DUP2 MSTORE POP SWAP6 POP POP POP POP JUMPDEST PUSH1 0x0 PUSH2 0x841 PUSH8 0xDE0B6B3A7640000 PUSH2 0x307 DUP7 PUSH1 0x20 ADD MLOAD PUSH2 0x32B PUSH8 0xDE0B6B3A7640000 DUP13 PUSH2 0xC38 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x86C PUSH2 0x85F DUP7 PUSH1 0x0 ADD MLOAD DUP12 PUSH2 0xBF6 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP4 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xC91 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x2 SLOAD DUP3 LT PUSH2 0x8BD JUMPI PUSH1 0x4 SLOAD PUSH2 0x8B8 SWAP1 PUSH2 0x897 SWAP1 PUSH7 0xB1A2BC2EC50000 PUSH4 0xFFFFFFFF PUSH2 0xBF6 AND JUMP JUMPDEST PUSH2 0x32B PUSH8 0xDE0B6B3A7640000 PUSH2 0x3BA PUSH1 0x2 SLOAD DUP8 PUSH2 0xBF6 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x8C0 JUMP JUMPDEST PUSH1 0x0 JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x8E5 PUSH1 0x1 SLOAD PUSH2 0x32B PUSH8 0xDE0B6B3A7640000 DUP6 PUSH2 0xC38 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH8 0xD2F13F7789F0000 DUP2 GT ISZERO DUP1 PUSH2 0x906 JUMPI POP PUSH8 0xE92596FD6290000 DUP2 LT ISZERO JUMPDEST ISZERO PUSH2 0x977 JUMPI PUSH1 0x2 SLOAD PUSH2 0x977 SWAP1 PUSH2 0x925 SWAP1 PUSH3 0x243394 PUSH4 0xFFFFFFFF PUSH2 0xC38 AND JUMP JUMPDEST PUSH2 0x959 PUSH8 0xDE0B6B3A7640000 PUSH2 0x32B PUSH2 0x94C PUSH1 0x4 SLOAD PUSH3 0x243394 PUSH2 0xC38 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP8 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xC38 AND JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH2 0x96F SWAP1 PUSH3 0x243394 PUSH4 0xFFFFFFFF PUSH2 0xC38 AND JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH2 0xAF2 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP JUMPDEST POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x99D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x6 SSTORE JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x1F1F3B45 PUSH1 0xE3 SHL DUP2 MSTORE SWAP1 MLOAD PUSH2 0xA1B SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0xF8F9DA28 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9FE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x3D8 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xA37 DUP6 DUP6 DUP6 PUSH2 0x2E1 JUMP JUMPDEST SWAP1 POP PUSH1 0x4 SLOAD DUP2 GT PUSH2 0xA7D JUMPI PUSH2 0xA75 PUSH1 0x2 SLOAD PUSH2 0xA69 PUSH8 0xDE0B6B3A7640000 PUSH2 0x32B PUSH1 0x1 SLOAD DUP7 PUSH2 0xC38 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xB93 AND JUMP JUMPDEST SWAP2 POP POP PUSH2 0x26B JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAA8 PUSH1 0x2 SLOAD PUSH2 0xA69 PUSH8 0xDE0B6B3A7640000 PUSH2 0x32B PUSH1 0x1 SLOAD PUSH1 0x4 SLOAD PUSH2 0xC38 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xAC1 PUSH1 0x4 SLOAD DUP5 PUSH2 0xBF6 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0xAE8 DUP3 PUSH2 0xA69 PUSH8 0xDE0B6B3A7640000 PUSH2 0x32B PUSH1 0x3 SLOAD DUP7 PUSH2 0xC38 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP4 POP POP POP POP PUSH2 0x26B JUMP JUMPDEST PUSH2 0xB05 DUP5 PUSH3 0x243394 PUSH4 0xFFFFFFFF PUSH2 0xC91 AND JUMP JUMPDEST PUSH1 0x2 SSTORE PUSH2 0xB1E PUSH2 0x313 PUSH3 0x243394 DUP4 PUSH4 0xFFFFFFFF PUSH2 0xC38 AND JUMP JUMPDEST PUSH1 0x1 SSTORE PUSH2 0xB34 DUP3 PUSH3 0x243394 PUSH4 0xFFFFFFFF PUSH2 0xC91 AND JUMP JUMPDEST PUSH1 0x3 DUP2 SWAP1 SSTORE PUSH1 0x4 DUP3 SWAP1 SSTORE PUSH1 0x2 SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD PUSH32 0x6960AB234C7EF4B0C9197100F5393CFCDE7C453AC910A27BD2000AA1DD4C068D SWAP2 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0xBED JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBED DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1F DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E20756E646572666C6F7700 DUP2 MSTORE POP PUSH2 0xCD3 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0xC47 JUMPI POP PUSH1 0x0 PUSH2 0xBF0 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0xC54 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0xBED JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xDF1 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xBED DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0xD6A JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0xD62 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xD27 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xD0F JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xD54 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0xDB9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xD27 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xD0F JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0xDC5 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP INVALID MSTORE8 PUSH2 0x6665 0x4D PUSH2 0x7468 GASPRICE KECCAK256 PUSH14 0x756C7469706C69636174696F6E20 PUSH16 0x766572666C6F776F6E6C792074686520 PUSH16 0x776E6572206D61792063616C6C207468 PUSH10 0x732066756E6374696F6E 0x2E LOG2 PUSH6 0x627A7A723158 KECCAK256 ADDRESS MSIZE PUSH13 0x53932141ADDDF5E0A6B2C41E97 SWAP12 DUP5 PUSH2 0x7217 0x24 0x2D 0x1F 0xDA MSTORE8 GASLIMIT 0xE2 PUSH23 0xF7F8A464736F6C63430005110032536166654D6174683A KECCAK256 PUSH14 0x756C7469706C69636174696F6E20 PUSH16 0x766572666C6F77000000000000000000 ","sourceMap":"251:6886:32:-;;;1448:283;8:9:-1;5:2;;;30:1;27;20:12;5:2;1448:283:32;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;1448:283:32;;;;;;;;;;;;;;;;;;;;;;;2045:5:0;:14;;-1:-1:-1;;;;;;2045:14:0;-1:-1:-1;;;;;2045:14:0;;;;;1448:283:32;;;;;;;;;;;;;2070:94:0;1448:283:32;;;;2070:27:0;:94::i;:::-;-1:-1:-1;;1700:6:32;:24;;-1:-1:-1;;;;;;1700:24:32;-1:-1:-1;;;;;1700:24:32;;;;;;;;;;;-1:-1:-1;251:6886:32;;-1:-1:-1;;;;;;;251:6886:32;5908:490:0;6069:34;748:7;6069:15;:19;;;;;;:34;;;;:::i;:::-;6050:16;:53;6134:59;6168:24;748:7;6186:5;6168:17;;;;;;;:24;;:::i;:::-;6135:27;6157:4;6135:17;:21;;;;;;:27;;;;:::i;:::-;6134:33;;;;;;:59;;;;:::i;:::-;6113:18;:80;6228:40;:21;748:7;6228:25;;;;;;;:40;;:::i;:::-;6203:22;:65;;;6278:4;:12;;;6324:16;;6342:18;;6306:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5908:490;;;;:::o;4266:130:37:-;4324:7;4350:39;4354:1;4357;4350:39;;;;;;;;;;;;;;;;;:3;;;:39;;:::i;:::-;4343:46;;4266:130;;;;;:::o;2655:459::-;2713:7;2954:6;2950:45;;-1:-1:-1;2983:1:37;2976:8;;2950:45;3017:5;;;3021:1;3017;:5;:1;3040:5;;;;;:10;3032:56;;;;-1:-1:-1;;;3032:56:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4871:338;4957:7;5057:12;5050:5;5042:28;;;;-1:-1:-1;;;5042:28:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;5042:28:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5080:9;5096:1;5092;:5;;;;;;;4871:338;-1:-1:-1;;;;;4871:338:37:o;251:6886:32:-;;;;;;;"},"deployedBytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100f55760003560e01c8063a385fb9611610097578063d982281611610066578063d98228161461023b578063e85426f614610243578063f14039de1461024b578063fd2da33914610253576100f5565b8063a385fb96146101df578063b8168816146101e7578063b9f9850a14610216578063bdfa04661461021e576100f5565b806369e527da116100d357806369e527da146101825780636e71e2d8146101a65780638726bb89146101cf5780638da5cb5b146101d7576100f5565b806315f24053146100fa5780632037f3e7146101355780632191f92a14610166575b600080fd5b6101236004803603606081101561011057600080fd5b508035906020810135906040013561025b565b60408051918252519081900360200190f35b6101646004803603608081101561014b57600080fd5b5080359060208101359060408101359060600135610272565b005b61016e6102cd565b604080519115158252519081900360200190f35b61018a6102d2565b604080516001600160a01b039092168252519081900360200190f35b610123600480360360608110156101bc57600080fd5b50803590602081013590604001356102e1565b610123610337565b61018a61033d565b61012361034c565b610123600480360360808110156101fd57600080fd5b5080359060208101359060408101359060600135610353565b6101236103d2565b6101646004803603602081101561023457600080fd5b50356103d8565b610164610986565b6101646109a4565b610123610a1d565b610123610a23565b6000610268848484610a29565b90505b9392505050565b6000546001600160a01b031633146102bb5760405162461bcd60e51b8152600401808060200182810382526026815260200180610e126026913960400191505060405180910390fd5b6102c784848484610af2565b50505050565b600181565b6005546001600160a01b031681565b6000826102f05750600061026b565b61026861031383610307878763ffffffff610b9316565b9063ffffffff610bf616565b61032b85670de0b6b3a764000063ffffffff610c3816565b9063ffffffff610c9116565b60015481565b6000546001600160a01b031681565b6224339481565b60008061036e670de0b6b3a76400008463ffffffff610bf616565b9050600061037d878787610a29565b9050600061039d670de0b6b3a764000061032b848663ffffffff610c3816565b90506103c6670de0b6b3a764000061032b836103ba8c8c8c6102e1565b9063ffffffff610c3816565b98975050505050505050565b60035481565b6005546001600160a01b031633146103ef57600080fd5b60055460408051636c540baf60e01b815290516000926001600160a01b031691636c540baf916004808301926020929190829003018186803b15801561043457600080fd5b505afa158015610448573d6000803e3d6000fd5b505050506040513d602081101561045e57600080fd5b50516005546040805163aa5af0fd60e01b815290519293506000926001600160a01b039092169163aa5af0fd91600480820192602092909190829003018186803b1580156104ab57600080fd5b505afa1580156104bf573d6000803e3d6000fd5b505050506040513d60208110156104d557600080fd5b505190506104e1610dcf565b604051806060016040528084815260200183815260200185815250905060026006541015801561054f575061051e8361196463ffffffff610bf616565b600760106002600654038161052f57fe5b068154811061053a57fe5b90600052602060002090600302016000015410155b156105a55780600760106001600654038161056657fe5b068154811061057157fe5b90600052602060002090600302016000820151816000015560208201518160010155604082015181600201559050506102c7565b8060076010600654816105b457fe5b06815481106105bf57fe5b600091825260208083208451600390930201918255830151600180830191909155604090930151600290910155600680549092019091556106088461985863ffffffff610bf616565b905080600760106006541161061e57600061062c565b60106006548161062a57fe5b065b8154811061063657fe5b90600052602060002090600302016000015411156106575750505050610983565b61065f610dcf565b6000809050600060106006541161067757600061067e565b6010600654035b90505b60065481101561071e576007601082068154811061069b57fe5b9060005260206000209060030201604051806060016040529081600082015481526020016001820154815260200160028201548152505092506106e961cb2088610bf690919063ffffffff16565b8351108015906106fa575082518410155b15610708576001915061071e565b82518410156107165761071e565b600101610681565b8161081057600760106000198301068154811061073757fe5b906000526020600020906003020160405180606001604052908160008201548152602001600182015481526020016002820154815250509250600061078761b1bc89610bf690919063ffffffff16565b84519091506000906107a090839063ffffffff610bf616565b905060006107bb828760400151610c3890919063ffffffff16565b905060405180606001604052808481526020016107fd6107f0670de0b6b3a764000061032b868f610c3890919063ffffffff16565b8c9063ffffffff610b9316565b8152602001876040015181525095505050505b6000610841670de0b6b3a7640000610307866020015161032b670de0b6b3a76400008c610c3890919063ffffffff16565b9050600061086c61085f86600001518b610bf690919063ffffffff16565b839063ffffffff610c9116565b9050600060025482106108bd576004546108b8906108979066b1a2bc2ec5000063ffffffff610bf616565b61032b670de0b6b3a76400006103ba60025487610bf690919063ffffffff16565b6108c0565b60005b905060006108e560015461032b670de0b6b3a764000085610c3890919063ffffffff16565b9050670d2f13f7789f0000811115806109065750670e92596fd62900008110155b156109775760025461097790610925906224339463ffffffff610c3816565b610959670de0b6b3a764000061032b61094c60045462243394610c3890919063ffffffff16565b879063ffffffff610c3816565b60035461096f906224339463ffffffff610c3816565b600454610af2565b50505050505050505050505b50565b6005546001600160a01b0316331461099d57600080fd5b6000600655565b60055460408051631f1f3b4560e31b81529051610a1b926001600160a01b03169163f8f9da28916004808301926020929190829003018186803b1580156109ea57600080fd5b505afa1580156109fe573d6000803e3d6000fd5b505050506040513d6020811015610a1457600080fd5b50516103d8565b565b60025481565b60045481565b600080610a378585856102e1565b90506004548111610a7d57610a75600254610a69670de0b6b3a764000061032b60015486610c3890919063ffffffff16565b9063ffffffff610b9316565b91505061026b565b6000610aa8600254610a69670de0b6b3a764000061032b600154600454610c3890919063ffffffff16565b90506000610ac160045484610bf690919063ffffffff16565b9050610ae882610a69670de0b6b3a764000061032b60035486610c3890919063ffffffff16565b935050505061026b565b610b05846224339463ffffffff610c9116565b600255610b1e610313622433948363ffffffff610c3816565b600155610b34826224339463ffffffff610c9116565b60038190556004829055600254600154604080519283526020830191909152818101929092526060810183905290517f6960ab234c7ef4b0c9197100f5393cfcde7c453ac910a27bd2000aa1dd4c068d9181900360800190a150505050565b600082820183811015610bed576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b90505b92915050565b6000610bed83836040518060400160405280601f81526020017f536166654d6174683a207375627472616374696f6e20756e646572666c6f7700815250610cd3565b600082610c4757506000610bf0565b82820282848281610c5457fe5b0414610bed5760405162461bcd60e51b8152600401808060200182810382526021815260200180610df16021913960400191505060405180910390fd5b6000610bed83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610d6a565b60008184841115610d625760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610d27578181015183820152602001610d0f565b50505050905090810190601f168015610d545780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008183610db95760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610d27578181015183820152602001610d0f565b506000838581610dc557fe5b0495945050505050565b6040518060600160405280600081526020016000815260200160008152509056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f776f6e6c7920746865206f776e6572206d61792063616c6c20746869732066756e6374696f6e2ea265627a7a7231582030596c53932141adddf5e0a6b2c41e979b84617217242d1fda5345e276f7f8a464736f6c63430005110032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xF5 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA385FB96 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xD9822816 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xD9822816 EQ PUSH2 0x23B JUMPI DUP1 PUSH4 0xE85426F6 EQ PUSH2 0x243 JUMPI DUP1 PUSH4 0xF14039DE EQ PUSH2 0x24B JUMPI DUP1 PUSH4 0xFD2DA339 EQ PUSH2 0x253 JUMPI PUSH2 0xF5 JUMP JUMPDEST DUP1 PUSH4 0xA385FB96 EQ PUSH2 0x1DF JUMPI DUP1 PUSH4 0xB8168816 EQ PUSH2 0x1E7 JUMPI DUP1 PUSH4 0xB9F9850A EQ PUSH2 0x216 JUMPI DUP1 PUSH4 0xBDFA0466 EQ PUSH2 0x21E JUMPI PUSH2 0xF5 JUMP JUMPDEST DUP1 PUSH4 0x69E527DA GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x69E527DA EQ PUSH2 0x182 JUMPI DUP1 PUSH4 0x6E71E2D8 EQ PUSH2 0x1A6 JUMPI DUP1 PUSH4 0x8726BB89 EQ PUSH2 0x1CF JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x1D7 JUMPI PUSH2 0xF5 JUMP JUMPDEST DUP1 PUSH4 0x15F24053 EQ PUSH2 0xFA JUMPI DUP1 PUSH4 0x2037F3E7 EQ PUSH2 0x135 JUMPI DUP1 PUSH4 0x2191F92A EQ PUSH2 0x166 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x123 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x110 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x25B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x164 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x14B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x272 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x16E PUSH2 0x2CD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x18A PUSH2 0x2D2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x123 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x2E1 JUMP JUMPDEST PUSH2 0x123 PUSH2 0x337 JUMP JUMPDEST PUSH2 0x18A PUSH2 0x33D JUMP JUMPDEST PUSH2 0x123 PUSH2 0x34C JUMP JUMPDEST PUSH2 0x123 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x1FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x353 JUMP JUMPDEST PUSH2 0x123 PUSH2 0x3D2 JUMP JUMPDEST PUSH2 0x164 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x234 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x3D8 JUMP JUMPDEST PUSH2 0x164 PUSH2 0x986 JUMP JUMPDEST PUSH2 0x164 PUSH2 0x9A4 JUMP JUMPDEST PUSH2 0x123 PUSH2 0xA1D JUMP JUMPDEST PUSH2 0x123 PUSH2 0xA23 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x268 DUP5 DUP5 DUP5 PUSH2 0xA29 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x2BB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xE12 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2C7 DUP5 DUP5 DUP5 DUP5 PUSH2 0xAF2 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x2F0 JUMPI POP PUSH1 0x0 PUSH2 0x26B JUMP JUMPDEST PUSH2 0x268 PUSH2 0x313 DUP4 PUSH2 0x307 DUP8 DUP8 PUSH4 0xFFFFFFFF PUSH2 0xB93 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xBF6 AND JUMP JUMPDEST PUSH2 0x32B DUP6 PUSH8 0xDE0B6B3A7640000 PUSH4 0xFFFFFFFF PUSH2 0xC38 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xC91 AND JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH3 0x243394 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x36E PUSH8 0xDE0B6B3A7640000 DUP5 PUSH4 0xFFFFFFFF PUSH2 0xBF6 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x37D DUP8 DUP8 DUP8 PUSH2 0xA29 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x39D PUSH8 0xDE0B6B3A7640000 PUSH2 0x32B DUP5 DUP7 PUSH4 0xFFFFFFFF PUSH2 0xC38 AND JUMP JUMPDEST SWAP1 POP PUSH2 0x3C6 PUSH8 0xDE0B6B3A7640000 PUSH2 0x32B DUP4 PUSH2 0x3BA DUP13 DUP13 DUP13 PUSH2 0x2E1 JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xC38 AND JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x3EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x6C540BAF PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x6C540BAF SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x434 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x448 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x45E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xAA5AF0FD PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP4 POP PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0xAA5AF0FD SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4BF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH2 0x4E1 PUSH2 0xDCF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE POP SWAP1 POP PUSH1 0x2 PUSH1 0x6 SLOAD LT ISZERO DUP1 ISZERO PUSH2 0x54F JUMPI POP PUSH2 0x51E DUP4 PUSH2 0x1964 PUSH4 0xFFFFFFFF PUSH2 0xBF6 AND JUMP JUMPDEST PUSH1 0x7 PUSH1 0x10 PUSH1 0x2 PUSH1 0x6 SLOAD SUB DUP2 PUSH2 0x52F JUMPI INVALID JUMPDEST MOD DUP2 SLOAD DUP2 LT PUSH2 0x53A JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x0 ADD SLOAD LT ISZERO JUMPDEST ISZERO PUSH2 0x5A5 JUMPI DUP1 PUSH1 0x7 PUSH1 0x10 PUSH1 0x1 PUSH1 0x6 SLOAD SUB DUP2 PUSH2 0x566 JUMPI INVALID JUMPDEST MOD DUP2 SLOAD DUP2 LT PUSH2 0x571 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD SSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD SSTORE SWAP1 POP POP PUSH2 0x2C7 JUMP JUMPDEST DUP1 PUSH1 0x7 PUSH1 0x10 PUSH1 0x6 SLOAD DUP2 PUSH2 0x5B4 JUMPI INVALID JUMPDEST MOD DUP2 SLOAD DUP2 LT PUSH2 0x5BF JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 DUP5 MLOAD PUSH1 0x3 SWAP1 SWAP4 MUL ADD SWAP2 DUP3 SSTORE DUP4 ADD MLOAD PUSH1 0x1 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0x40 SWAP1 SWAP4 ADD MLOAD PUSH1 0x2 SWAP1 SWAP2 ADD SSTORE PUSH1 0x6 DUP1 SLOAD SWAP1 SWAP3 ADD SWAP1 SWAP2 SSTORE PUSH2 0x608 DUP5 PUSH2 0x9858 PUSH4 0xFFFFFFFF PUSH2 0xBF6 AND JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x7 PUSH1 0x10 PUSH1 0x6 SLOAD GT PUSH2 0x61E JUMPI PUSH1 0x0 PUSH2 0x62C JUMP JUMPDEST PUSH1 0x10 PUSH1 0x6 SLOAD DUP2 PUSH2 0x62A JUMPI INVALID JUMPDEST MOD JUMPDEST DUP2 SLOAD DUP2 LT PUSH2 0x636 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x0 ADD SLOAD GT ISZERO PUSH2 0x657 JUMPI POP POP POP POP PUSH2 0x983 JUMP JUMPDEST PUSH2 0x65F PUSH2 0xDCF JUMP JUMPDEST PUSH1 0x0 DUP1 SWAP1 POP PUSH1 0x0 PUSH1 0x10 PUSH1 0x6 SLOAD GT PUSH2 0x677 JUMPI PUSH1 0x0 PUSH2 0x67E JUMP JUMPDEST PUSH1 0x10 PUSH1 0x6 SLOAD SUB JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x6 SLOAD DUP2 LT ISZERO PUSH2 0x71E JUMPI PUSH1 0x7 PUSH1 0x10 DUP3 MOD DUP2 SLOAD DUP2 LT PUSH2 0x69B JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD SLOAD DUP2 MSTORE POP POP SWAP3 POP PUSH2 0x6E9 PUSH2 0xCB20 DUP9 PUSH2 0xBF6 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP4 MLOAD LT DUP1 ISZERO SWAP1 PUSH2 0x6FA JUMPI POP DUP3 MLOAD DUP5 LT ISZERO JUMPDEST ISZERO PUSH2 0x708 JUMPI PUSH1 0x1 SWAP2 POP PUSH2 0x71E JUMP JUMPDEST DUP3 MLOAD DUP5 LT ISZERO PUSH2 0x716 JUMPI PUSH2 0x71E JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x681 JUMP JUMPDEST DUP2 PUSH2 0x810 JUMPI PUSH1 0x7 PUSH1 0x10 PUSH1 0x0 NOT DUP4 ADD MOD DUP2 SLOAD DUP2 LT PUSH2 0x737 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD SLOAD DUP2 MSTORE POP POP SWAP3 POP PUSH1 0x0 PUSH2 0x787 PUSH2 0xB1BC DUP10 PUSH2 0xBF6 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP5 MLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x7A0 SWAP1 DUP4 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xBF6 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x7BB DUP3 DUP8 PUSH1 0x40 ADD MLOAD PUSH2 0xC38 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x7FD PUSH2 0x7F0 PUSH8 0xDE0B6B3A7640000 PUSH2 0x32B DUP7 DUP16 PUSH2 0xC38 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP13 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xB93 AND JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH1 0x40 ADD MLOAD DUP2 MSTORE POP SWAP6 POP POP POP POP JUMPDEST PUSH1 0x0 PUSH2 0x841 PUSH8 0xDE0B6B3A7640000 PUSH2 0x307 DUP7 PUSH1 0x20 ADD MLOAD PUSH2 0x32B PUSH8 0xDE0B6B3A7640000 DUP13 PUSH2 0xC38 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x86C PUSH2 0x85F DUP7 PUSH1 0x0 ADD MLOAD DUP12 PUSH2 0xBF6 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP4 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xC91 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x2 SLOAD DUP3 LT PUSH2 0x8BD JUMPI PUSH1 0x4 SLOAD PUSH2 0x8B8 SWAP1 PUSH2 0x897 SWAP1 PUSH7 0xB1A2BC2EC50000 PUSH4 0xFFFFFFFF PUSH2 0xBF6 AND JUMP JUMPDEST PUSH2 0x32B PUSH8 0xDE0B6B3A7640000 PUSH2 0x3BA PUSH1 0x2 SLOAD DUP8 PUSH2 0xBF6 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x8C0 JUMP JUMPDEST PUSH1 0x0 JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x8E5 PUSH1 0x1 SLOAD PUSH2 0x32B PUSH8 0xDE0B6B3A7640000 DUP6 PUSH2 0xC38 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH8 0xD2F13F7789F0000 DUP2 GT ISZERO DUP1 PUSH2 0x906 JUMPI POP PUSH8 0xE92596FD6290000 DUP2 LT ISZERO JUMPDEST ISZERO PUSH2 0x977 JUMPI PUSH1 0x2 SLOAD PUSH2 0x977 SWAP1 PUSH2 0x925 SWAP1 PUSH3 0x243394 PUSH4 0xFFFFFFFF PUSH2 0xC38 AND JUMP JUMPDEST PUSH2 0x959 PUSH8 0xDE0B6B3A7640000 PUSH2 0x32B PUSH2 0x94C PUSH1 0x4 SLOAD PUSH3 0x243394 PUSH2 0xC38 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP8 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xC38 AND JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH2 0x96F SWAP1 PUSH3 0x243394 PUSH4 0xFFFFFFFF PUSH2 0xC38 AND JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH2 0xAF2 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP JUMPDEST POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x99D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x6 SSTORE JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x1F1F3B45 PUSH1 0xE3 SHL DUP2 MSTORE SWAP1 MLOAD PUSH2 0xA1B SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0xF8F9DA28 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9FE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x3D8 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xA37 DUP6 DUP6 DUP6 PUSH2 0x2E1 JUMP JUMPDEST SWAP1 POP PUSH1 0x4 SLOAD DUP2 GT PUSH2 0xA7D JUMPI PUSH2 0xA75 PUSH1 0x2 SLOAD PUSH2 0xA69 PUSH8 0xDE0B6B3A7640000 PUSH2 0x32B PUSH1 0x1 SLOAD DUP7 PUSH2 0xC38 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xB93 AND JUMP JUMPDEST SWAP2 POP POP PUSH2 0x26B JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAA8 PUSH1 0x2 SLOAD PUSH2 0xA69 PUSH8 0xDE0B6B3A7640000 PUSH2 0x32B PUSH1 0x1 SLOAD PUSH1 0x4 SLOAD PUSH2 0xC38 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xAC1 PUSH1 0x4 SLOAD DUP5 PUSH2 0xBF6 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0xAE8 DUP3 PUSH2 0xA69 PUSH8 0xDE0B6B3A7640000 PUSH2 0x32B PUSH1 0x3 SLOAD DUP7 PUSH2 0xC38 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP4 POP POP POP POP PUSH2 0x26B JUMP JUMPDEST PUSH2 0xB05 DUP5 PUSH3 0x243394 PUSH4 0xFFFFFFFF PUSH2 0xC91 AND JUMP JUMPDEST PUSH1 0x2 SSTORE PUSH2 0xB1E PUSH2 0x313 PUSH3 0x243394 DUP4 PUSH4 0xFFFFFFFF PUSH2 0xC38 AND JUMP JUMPDEST PUSH1 0x1 SSTORE PUSH2 0xB34 DUP3 PUSH3 0x243394 PUSH4 0xFFFFFFFF PUSH2 0xC91 AND JUMP JUMPDEST PUSH1 0x3 DUP2 SWAP1 SSTORE PUSH1 0x4 DUP3 SWAP1 SSTORE PUSH1 0x2 SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD PUSH32 0x6960AB234C7EF4B0C9197100F5393CFCDE7C453AC910A27BD2000AA1DD4C068D SWAP2 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0xBED JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBED DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1F DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E20756E646572666C6F7700 DUP2 MSTORE POP PUSH2 0xCD3 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0xC47 JUMPI POP PUSH1 0x0 PUSH2 0xBF0 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0xC54 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0xBED JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xDF1 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xBED DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0xD6A JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0xD62 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xD27 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xD0F JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xD54 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0xDB9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xD27 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xD0F JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0xDC5 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP INVALID MSTORE8 PUSH2 0x6665 0x4D PUSH2 0x7468 GASPRICE KECCAK256 PUSH14 0x756C7469706C69636174696F6E20 PUSH16 0x766572666C6F776F6E6C792074686520 PUSH16 0x776E6572206D61792063616C6C207468 PUSH10 0x732066756E6374696F6E 0x2E LOG2 PUSH6 0x627A7A723158 KECCAK256 ADDRESS MSIZE PUSH13 0x53932141ADDDF5E0A6B2C41E97 SWAP12 DUP5 PUSH2 0x7217 0x24 0x2D 0x1F 0xDA MSTORE8 GASLIMIT 0xE2 PUSH23 0xF7F8A464736F6C63430005110032000000000000000000 ","sourceMap":"251:6886:32:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;251:6886:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1280:162;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1280:162:32;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2679:315:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;2679:315:0;;;;;;;;;;;;;;;;;:::i;:::-;;224:47:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;382:20:32;;;:::i;:::-;;;;-1:-1:-1;;;;;382:20:32;;;;;;;;;;;;;;3375:290:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3375:290:0;;;;;;;;;;;;:::i;905:30::-;;;:::i;568:20::-;;;:::i;711:44::-;;;:::i;4986:433::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;4986:433:0;;;;;;;;;;;;;;;;;:::i;1181:34::-;;;:::i;2156:4679:32:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2156:4679:32;;:::i;6912:223::-;;;:::i;1892:103::-;;;:::i;1048:28:0:-;;;:::i;1315:16::-;;;:::i;1280:162:32:-;1366:4;1389:46;1411:4;1417:7;1426:8;1389:21;:46::i;:::-;1382:53;;1280:162;;;;;;:::o;2679:315:0:-;2835:5;;-1:-1:-1;;;;;2835:5:0;2821:10;:19;2813:70;;;;-1:-1:-1;;;2813:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2894:93;2922:15;2939:17;2958:21;2981:5;2894:27;:93::i;:::-;2679:315;;;;:::o;224:47:26:-;267:4;224:47;:::o;382:20:32:-;;;-1:-1:-1;;;;;382:20:32;;:::o;3375:290:0:-;3461:4;3540:12;3536:51;;-1:-1:-1;3575:1:0;3568:8;;3536:51;3604:54;3626:31;3648:8;3626:17;:4;3635:7;3626:17;:8;:17;:::i;:::-;:21;:31;:21;:31;:::i;:::-;3604:17;:7;3616:4;3604:17;:11;:17;:::i;:::-;:21;:54;:21;:54;:::i;905:30::-;;;;:::o;568:20::-;;;-1:-1:-1;;;;;568:20:0;;:::o;711:44::-;748:7;711:44;:::o;4986:433::-;5098:4;;5143:37;5148:4;5158:21;5143:37;:14;:37;:::i;:::-;5114:66;;5190:15;5208:46;5230:4;5236:7;5245:8;5208:21;:46::i;:::-;5190:64;-1:-1:-1;5264:15:0;5282:47;5324:4;5282:37;5190:64;5297:21;5282:37;:14;:37;:::i;:47::-;5264:65;;5346:66;5407:4;5346:56;5391:10;5346:40;5362:4;5368:7;5377:8;5346:15;:40::i;:::-;:44;:56;:44;:56;:::i;:66::-;5339:73;4986:433;-1:-1:-1;;;;;;;;4986:433:0:o;1181:34::-;;;;:::o;2156:4679:32:-;2302:6;;-1:-1:-1;;;;;2302:6:32;2280:10;:29;2272:38;;;;;;2379:6;;:27;;;-1:-1:-1;;;2379:27:32;;;;2353:23;;-1:-1:-1;;;;;2379:6:32;;:25;;:27;;;;;;;;;;;;;;:6;:27;;;5:2:-1;;;;30:1;27;20:12;5:2;2379:27:32;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2379:27:32;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2379:27:32;2435:6;;:20;;;-1:-1:-1;;;2435:20:32;;;;2379:27;;-1:-1:-1;2416:16:32;;-1:-1:-1;;;;;2435:6:32;;;;:18;;:20;;;;;2379:27;;2435:20;;;;;;;;:6;:20;;;5:2:-1;;;;30:1;27;20:12;5:2;2435:20:32;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2435:20:32;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2435:20:32;;-1:-1:-1;2508:39:32;;:::i;:::-;2550:71;;;;;;;;2569:18;2550:71;;;;2589:11;2550:71;;;;2602:18;2550:71;;;2508:113;;2735:1;2708:23;;:28;;:155;;;;-1:-1:-1;2835:28:32;:18;2858:4;2835:28;:22;:28;:::i;:::-;2740:19;528:2;2787:1;2761:23;;:27;2760:58;;;;;;2740:79;;;;;;;;;;;;;;;;;;:91;;;:123;;2708:155;2704:4125;;;3014:13;2932:19;528:2;2979:1;2953:23;;:27;2952:58;;;;;;2932:79;;;;;;;;;;;;;;;;;;:95;;;;;;;;;;;;;;;;;;;;;;;;;;;2704:4125;;;3180:13;3104:19;528:2;3124:23;;:52;;;;;;3104:73;;;;;;;;;;;;;;;;:89;;:73;;;;;:89;;;;;;;;;;;;;;;;;;;;;;;;3207:23;:25;;;;;;;;3347:32;:18;3370:8;3347:32;:22;:32;:::i;:::-;3315:64;;3544:21;3397:19;528:2;3417:23;;:52;:111;;3527:1;3417:111;;;528:2;3472:23;;:52;;;;;;3417:111;3397:132;;;;;;;;;;;;;;;;;;:144;;;:168;3393:181;;;3567:7;;;;;;3393:181;3684:44;;:::i;:::-;3742:21;3766:5;3742:29;;3785:9;528:2;3874:23;;:52;:111;;3984:1;3874:111;;;528:2;3929:23;;:52;3874:111;3870:115;;3865:807;3991:23;;3987:1;:27;3865:807;;;4060:19;528:2;4080:1;:30;4060:51;;;;;;;;;;;;;;;;;;4039:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4274:32;4297:8;4274:18;:22;;:32;;;;:::i;:::-;4240:30;;:66;;;;:125;;-1:-1:-1;4310:30:32;;:55;-1:-1:-1;4310:55:32;4240:125;4236:222;;;4408:4;4389:23;;4434:5;;4236:222;4596:30;;:54;-1:-1:-1;4592:65:32;;;4652:5;;4592:65;4016:3;;3865:807;;;4917:16;4912:590;;4974:19;528:2;-1:-1:-1;;4995:5:32;;4994:36;4974:57;;;;;;;;;;;;;;;;;;4953:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5049:26;5078:32;5101:8;5078:18;:22;;:32;;;;:::i;:::-;5172:30;;5049:61;;-1:-1:-1;5128:15:32;;5146:57;;5049:61;;5146:57;:25;:57;:::i;:::-;5128:75;;5221:25;5249:53;5291:10;5249:18;:37;;;:41;;:53;;;;:::i;:::-;5221:81;;5341:146;;;;;;;;5360:21;5341:146;;;;5383:64;5399:47;5441:4;5399:37;5415:20;5399:11;:15;;:37;;;;:::i;:47::-;5383:11;;:64;:15;:64;:::i;:::-;5341:146;;;;5449:18;:37;;;5341:146;;;5320:167;;4912:590;;;;5598:26;5627:67;5689:4;5627:57;5653:18;:30;;;5627:21;5643:4;5627:11;:15;;:21;;;;:::i;:67::-;5598:96;;5708:26;5737:81;5763:54;5786:18;:30;;;5763:18;:22;;:54;;;;:::i;:::-;5737:21;;:81;:25;:81;:::i;:::-;5708:110;;5897:28;5952:16;;5928:21;:40;:123;;6033:4;;5975:76;;6033:17;;6042:7;6033:17;:8;:17;:::i;:::-;5975:53;6023:4;5975:43;6001:16;;5975:21;:25;;:43;;;;:::i;:76::-;5928:123;;;5971:1;5928:123;5897:154;;6174:13;6190:57;6228:18;;6190:33;6218:4;6190:23;:27;;:33;;;;:::i;:57::-;6174:73;;6275:7;6266:5;:16;;:36;;;;6295:7;6286:5;:16;;6266:36;6262:557;;;6460:16;;6411:393;;6460:35;;748:7:0;6460:35:32;:20;:35;:::i;:::-;6517:62;6574:4;6517:52;6545:23;6563:4;;748:7:0;6545:17:32;;:23;;;;:::i;:::-;6517;;:52;:27;:52;:::i;:62::-;6719:22;;:41;;748:7:0;6719:41:32;:26;:41;:::i;:::-;6782:4;;6411:27;:393::i;:::-;2704:4125;;;;;;;;2156:4679;;;;;:::o;6912:223::-;7043:6;;-1:-1:-1;;;;;7043:6:32;7021:10;:29;7013:38;;;;;;7127:1;7101:23;:27;6912:223::o;1892:103::-;1960:6;;:27;;;-1:-1:-1;;;1960:27:32;;;;1941:47;;-1:-1:-1;;;;;1960:6:32;;:25;;:27;;;;;;;;;;;;;;:6;:27;;;5:2:-1;;;;30:1;27;20:12;5:2;1960:27:32;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1960:27:32;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1960:27:32;1941:18;:47::i;:::-;1892:103::o;1048:28:0:-;;;;:::o;1315:16::-;;;;:::o;4044:529::-;4138:4;4154:9;4166:40;4182:4;4188:7;4197:8;4166:15;:40::i;:::-;4154:52;;4229:4;;4221;:12;4217:350;;4256:60;4299:16;;4256:38;4289:4;4256:28;4265:18;;4256:4;:8;;:28;;;;:::i;:38::-;:42;:60;:42;:60;:::i;:::-;4249:67;;;;;4217:350;4347:15;4365:60;4408:16;;4365:38;4398:4;4365:28;4374:18;;4365:4;;:8;;:28;;;;:::i;:60::-;4347:78;;4439:15;4457:14;4466:4;;4457;:8;;:14;;;;:::i;:::-;4439:32;;4492:64;4545:10;4492:48;4535:4;4492:38;4507:22;;4492:10;:14;;:38;;;;:::i;:64::-;4485:71;;;;;;;5908:490;6069:34;:15;748:7;6069:34;:19;:34;:::i;:::-;6050:16;:53;6134:59;6168:24;748:7;6186:5;6168:24;:17;:24;:::i;6134:59::-;6113:18;:80;6228:40;:21;748:7;6228:40;:25;:40;:::i;:::-;6203:22;:65;;;6278:4;:12;;;6324:16;;6342:18;;6306:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5908:490;;;;:::o;958:176:37:-;1016:7;1047:5;;;1070:6;;;;1062:46;;;;;-1:-1:-1;;;1062:46:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;1126:1;-1:-1:-1;958:176:37;;;;;:::o;1821:135::-;1879:7;1905:44;1909:1;1912;1905:44;;;;;;;;;;;;;;;;;:3;:44::i;2655:459::-;2713:7;2954:6;2950:45;;-1:-1:-1;2983:1:37;2976:8;;2950:45;3017:5;;;3021:1;3017;:5;:1;3040:5;;;;;:10;3032:56;;;;-1:-1:-1;;;3032:56:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4266:130;4324:7;4350:39;4354:1;4357;4350:39;;;;;;;;;;;;;;;;;:3;:39::i;2235:187::-;2321:7;2356:12;2348:6;;;;2340:29;;;;-1:-1:-1;;;2340:29:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2340:29:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2391:5:37;;;2235:187::o;4871:338::-;4957:7;5057:12;5050:5;5042:28;;;;-1:-1:-1;;;5042:28:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;5042:28:37;;5080:9;5096:1;5092;:5;;;;;;;4871:338;-1:-1:-1;;;;;4871:338:37:o;251:6886:32:-;;;;;;;;;;;;;;;;;;;;;;;;:::o"},"methodIdentifiers":{"baseRatePerBlock()":"f14039de","blocksPerYear()":"a385fb96","cToken()":"69e527da","checkpointInterest()":"e85426f6","checkpointInterest(uint256)":"bdfa0466","getBorrowRate(uint256,uint256,uint256)":"15f24053","getSupplyRate(uint256,uint256,uint256,uint256)":"b8168816","isInterestRateModel()":"2191f92a","jumpMultiplierPerBlock()":"b9f9850a","kink()":"fd2da339","multiplierPerBlock()":"8726bb89","owner()":"8da5cb5b","resetInterestCheckpoints()":"d9822816","updateJumpRateModel(uint256,uint256,uint256,uint256)":"2037f3e7","utilizationRate(uint256,uint256,uint256)":"6e71e2d8"}},"metadata":"{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"baseRatePerYear\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"multiplierPerYear\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"jumpMultiplierPerYear\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"kink_\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"cToken_\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"baseRatePerBlock\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"multiplierPerBlock\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"jumpMultiplierPerBlock\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"kink\",\"type\":\"uint256\"}],\"name\":\"NewInterestParams\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"baseRatePerBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"blocksPerYear\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"cToken\",\"outputs\":[{\"internalType\":\"contract CToken\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"borrowRateMantissa\",\"type\":\"uint256\"}],\"name\":\"checkpointInterest\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"checkpointInterest\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"cash\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"borrows\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserves\",\"type\":\"uint256\"}],\"name\":\"getBorrowRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"cash\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"borrows\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserves\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveFactorMantissa\",\"type\":\"uint256\"}],\"name\":\"getSupplyRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isInterestRateModel\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"jumpMultiplierPerBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"kink\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"multiplierPerBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"resetInterestCheckpoints\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"baseRatePerYear\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"multiplierPerYear\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"jumpMultiplierPerYear\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"kink_\",\"type\":\"uint256\"}],\"name\":\"updateJumpRateModel\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"cash\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"borrows\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserves\",\"type\":\"uint256\"}],\"name\":\"utilizationRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Arr00\",\"methods\":{\"checkpointInterest()\":{\"details\":\"Checkpoints the current borrow index and adjusts parameters based on the average borrow rate calculated from past checkpoints.\"},\"checkpointInterest(uint256)\":{\"details\":\"Checkpoints the current borrow index and adjusts parameters based on the average borrow rate calculated from past checkpoints.\"},\"getBorrowRate(uint256,uint256,uint256)\":{\"params\":{\"borrows\":\"The amount of borrows in the market\",\"cash\":\"The amount of cash in the market\",\"reserves\":\"The amount of reserves in the market\"},\"return\":\"The borrow rate percentage per block as a mantissa (scaled by 1e18)\"},\"getSupplyRate(uint256,uint256,uint256,uint256)\":{\"params\":{\"borrows\":\"The amount of borrows in the market\",\"cash\":\"The amount of cash in the market\",\"reserveFactorMantissa\":\"The current reserve factor for the market\",\"reserves\":\"The amount of reserves in the market\"},\"return\":\"The supply rate percentage per block as a mantissa (scaled by 1e18)\"},\"resetInterestCheckpoints()\":{\"details\":\"Resets the interest checkpoint count to 0.\"},\"updateJumpRateModel(uint256,uint256,uint256,uint256)\":{\"params\":{\"baseRatePerYear\":\"The approximate target base APR, as a mantissa (scaled by 1e18)\",\"jumpMultiplierPerYear\":\"The multiplierPerBlock after hitting a specified utilization point\",\"kink_\":\"The utilization point at which the jump multiplier is applied\",\"multiplierPerYear\":\"The rate of increase in interest rate wrt utilization (scaled by 1e18)\"}},\"utilizationRate(uint256,uint256,uint256)\":{\"params\":{\"borrows\":\"The amount of borrows in the market\",\"cash\":\"The amount of cash in the market\",\"reserves\":\"The amount of reserves in the market (currently unused)\"},\"return\":\"The utilization rate as a mantissa between [0, 1e18]\"}},\"title\":\"Compound's JumpRateModel Contract V2 for V2 cTokens\"},\"userdoc\":{\"methods\":{\"getBorrowRate(uint256,uint256,uint256)\":{\"notice\":\"Calculates the current borrow rate per block\"},\"getSupplyRate(uint256,uint256,uint256,uint256)\":{\"notice\":\"Calculates the current supply rate per block\"},\"updateJumpRateModel(uint256,uint256,uint256,uint256)\":{\"notice\":\"Update the parameters of the interest rate model (only callable by owner, i.e. Timelock)\"},\"utilizationRate(uint256,uint256,uint256)\":{\"notice\":\"Calculates the utilization rate of the market: `borrows / (cash + borrows - reserves)`\"}},\"notice\":\"Supports only for V2 cTokens\"}},\"settings\":{\"compilationTarget\":{\"contracts/ReactiveJumpRateModelV2.sol\":\"ReactiveJumpRateModelV2\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/BaseJumpRateModelV2.sol\":{\"keccak256\":\"0xe7c1422988672e4dce8e015e5830c7fe28dc19063a520ecd9b4a50502f65d3d8\",\"urls\":[\"bzz-raw://96d9b19e0b2f3539af60ef24c37f3422b9d10526a76331663846572b430422bb\",\"dweb:/ipfs/Qmdan3L59NXjMpyxhQLtAxCEGKUVb9u95Yuqs4HdGyx7YA\"]},\"contracts/CToken.sol\":{\"keccak256\":\"0xc3a5a827241528049e20a24cc446558c8a9272909f75ce5d1cf14ae3ab5feba3\",\"urls\":[\"bzz-raw://a403db2bf1a8e5e9384df19600bd18d4251056818b094afcdab418e683bb5cb8\",\"dweb:/ipfs/QmdkRbFGtKP67tNNqyH7BraDRGerwRNA7ktscbFV9LioM2\"]},\"contracts/CTokenInterfaces.sol\":{\"keccak256\":\"0xc8a056c724ef4f0215ece6011e7ac1007c9dc7611ce5160d470ec858bbb06bd3\",\"urls\":[\"bzz-raw://58951693d1b53d2722e55b068bab2b570f4b044d89c28ed6b53bac6e95aeb662\",\"dweb:/ipfs/QmQiNTw5jZR74WjKfX2bPiuTT4tuFuq8rx7QxEVyVvdGLn\"]},\"contracts/CarefulMath.sol\":{\"keccak256\":\"0x1487237dbbbb73ad43c8eff16e78311753719a94a5065f574de5c91b672c56f8\",\"urls\":[\"bzz-raw://349966a236f313b2cb42e1942832e6bd7e134f65f6654e6c4d46788e65cc4a9b\",\"dweb:/ipfs/Qmebpv8i5jLR4fLgpZHQZRLu6aefVAbLC2yUk9ABEekquz\"]},\"contracts/ComptrollerInterface.sol\":{\"keccak256\":\"0xecfb84fabc9792d0b1c912886249c67bc42c39eb065d962d0b9a5f3736af5892\",\"urls\":[\"bzz-raw://711547ebc1a7f18b271118dd98276771953a9d7b3674716f67d247be9b907372\",\"dweb:/ipfs/QmbVZNvkBp8miByATrL6y5j8MePdcQ8uTAUZMpKrhpLgoa\"]},\"contracts/ComptrollerStorage.sol\":{\"keccak256\":\"0x83961d3c12984fe4afc72717fc44b2d868563d053a0eceda0cbf17ec6b255913\",\"urls\":[\"bzz-raw://ea667c2de43881f9be19f4f75dec348632273178965fc9b3655705d853b032bb\",\"dweb:/ipfs/QmZP6sbNFSgFZrAEvfRjhp1NtGj6U6Sea3JGiKG96AHyeP\"]},\"contracts/EIP20Interface.sol\":{\"keccak256\":\"0xee33b8b333743308a9153a59f22da2cadb22cedef4403fe039bf9e057c9c729a\",\"urls\":[\"bzz-raw://5427fdb941300d36a424da0a0a5800e3b2ca51c9c922831dbfce2f6637402b43\",\"dweb:/ipfs/QmTrvmLynqSUPjsGW2dpiQ91dSmn4xzccQiwr8qaBtyvjH\"]},\"contracts/EIP20NonStandardInterface.sol\":{\"keccak256\":\"0x469899442dd9640bfc2c670d404ad3027e48df5df8e5aeab0e25cc6b6aae05f5\",\"urls\":[\"bzz-raw://d8c4498abaf539eb413a2f1a916d75945adc8bd4ef437f8450cb67e07be3f38d\",\"dweb:/ipfs/QmaFpWfnhAMYW21rbT5PEszn4TGHdGU58Eq5AfZsCuapZ3\"]},\"contracts/ErrorReporter.sol\":{\"keccak256\":\"0xe9587478bc9efad203cab02b8aecae32828cfc9a271b13ae3c018e38e44aab32\",\"urls\":[\"bzz-raw://2eb34bdbbbc410fb401d50ddca44a7421a1d8191711c569ed5bcec1c1b07a05c\",\"dweb:/ipfs/QmYKNCYppyx3NGiwtjdLEmxUMgfnFBqT4pnvnhnBrPgrxS\"]},\"contracts/Exponential.sol\":{\"keccak256\":\"0xfda0e2b610541cf1cf316a0000c89a1069ccc21f1566affc0a058810e2b835d3\",\"urls\":[\"bzz-raw://fe319f184f1b5f27019d3d890124cd24e466d27153ac38eb9ff6b16efbad48b9\",\"dweb:/ipfs/Qmcev6jCmtdCviJxUQvUCmesPDShRDSvdfUEfvsqd4GEJA\"]},\"contracts/ExponentialNoError.sol\":{\"keccak256\":\"0x713a089f4bbcaec1d3924fc7d9a2154904a39f46cb6f25b713167dbe5f21623e\",\"urls\":[\"bzz-raw://d7108d68af7c5effd4272615ceba54e79e585f6b8be5aabc7602245c84c7b9e0\",\"dweb:/ipfs/QmQZo2XpxW7w5viVEg71mi9eKaAYD7HUqfCMB5yCCPVnc5\"]},\"contracts/IFuseFeeDistributor.sol\":{\"keccak256\":\"0xb5d287b8e05574d38bd5d0b413f44b4c5d312f28188573ac60abe78123fbd92c\",\"urls\":[\"bzz-raw://84c2bbf746a82aaa100bee90c7dd40411c723bded124bb1775bf72bf7fda8a2c\",\"dweb:/ipfs/QmToQzDtz9BV2tvU71YsfWjdaZu5qpP1xKFZ1TkQgubhDb\"]},\"contracts/InterestRateModel.sol\":{\"keccak256\":\"0x0cc0dbd1991e5dcdcff58b0c82a9471a0fb9df26763e5e7415e1d081b7332409\",\"urls\":[\"bzz-raw://f4d7936aefc43ea2724f0e472b8f1517f1ca40170258ab9d5bbd0862dd0c4f13\",\"dweb:/ipfs/QmfYjG1Sm3kNwbhomHCWhMqw9LvaJVWVzBe4Te5BHRbTQS\"]},\"contracts/PriceOracle.sol\":{\"keccak256\":\"0x62ba3a5ec8f06d456ab089d6ca7f9d14d3a6ce6814923271ca60a6990918fb41\",\"urls\":[\"bzz-raw://aa6d2f20efdd5389161eb15bdab98b5628dc8cd5354394bbed35bb14d3612506\",\"dweb:/ipfs/QmVfo4eCDuk8LMSywpBjZBxCv7zLCNsG6u3nyD1d4CYwsD\"]},\"contracts/ReactiveJumpRateModelV2.sol\":{\"keccak256\":\"0xf6c447c2de3c467ff5941a194518fc99ac42d69ffe31e5b016be3e28018c4042\",\"urls\":[\"bzz-raw://296c1b50e510fb77f86562c52163319f8225e9c7bc66fb55d87df07441e28e93\",\"dweb:/ipfs/QmebMB2YpWGfETPgBQumZ8WT1y7FpfM9kFSt2cFsbqiJZw\"]},\"contracts/SafeMath.sol\":{\"keccak256\":\"0x675b1178c34633ecc37124c254349c1d3fe239c7bd74a649eb55f54adafd2dee\",\"urls\":[\"bzz-raw://c55f6f93d24b0976189d8fcf4df706b04439041d43a1e4d289db440251f9bc2a\",\"dweb:/ipfs/QmUAsuvRZMJ4hvsxKF3ud5g93DBEbnaXnt7waJzziurC2S\"]}},\"version\":1}"}},"contracts/Reservoir.sol":{"Reservoir":{"abi":[{"inputs":[{"internalType":"uint256","name":"dripRate_","type":"uint256"},{"internalType":"contract EIP20Interface","name":"token_","type":"address"},{"internalType":"address","name":"target_","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"constant":false,"inputs":[],"name":"drip","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"dripRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"dripStart","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"dripped","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"target","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"internalType":"contract EIP20Interface","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b506040516106403803806106408339818101604052606081101561003357600080fd5b5080516020820151604090920151909190826100805760405162461bcd60e51b815260040180806020018281038252602381526020018061061d6023913960400191505060405180910390fd5b6001600160a01b0382166100db576040805162461bcd60e51b815260206004820152601760248201527f4472697020746f6b656e206e6f7420646566696e65642e000000000000000000604482015290519081900360640190fd5b6001600160a01b038116610136576040805162461bcd60e51b815260206004820152601860248201527f4472697020746172676574206e6f7420646566696e65642e0000000000000000604482015290519081900360640190fd5b436000908155600193909355600280546001600160a01b039384166001600160a01b0319918216179091556003805492909316911617905560045561049d806101806000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806388a91a8a1461006757806395f632b3146100815780639f678cca14610089578063d326159214610091578063d4b8399214610099578063fc0c546a146100bd575b600080fd5b61006f6100c5565b60408051918252519081900360200190f35b61006f6100cb565b61006f6100d1565b61006f6102c9565b6100a16102cf565b604080516001600160a01b039092168252519081900360200190f35b6100a16102de565b60005481565b60045481565b600254604080516370a0823160e01b815230600482015290516000926001600160a01b031691839183916370a08231916024808301926020929190829003018186803b15801561012057600080fd5b505afa158015610134573d6000803e3d6000fd5b505050506040513d602081101561014a57600080fd5b50516001546000805460045460035460408051808201909152601281527164726970546f74616c206f766572666c6f7760701b60208201529596509394919390926001600160a01b03909116914391906101a9908790878503906102ed565b905060006101e382866040518060400160405280601381526020017264656c74614472697020756e646572666c6f7760681b8152506103a0565b905060006101f189836103fa565b9050600061022487836040518060400160405280600c81526020016b1d185d5d1bdb1bd9da58d85b60a21b815250610413565b9050806004819055508a6001600160a01b031663a9059cbb87846040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561028d57600080fd5b505af11580156102a1573d6000803e3d6000fd5b505050506040513d60208110156102b757600080fd5b50919b50505050505050505050505090565b60015481565b6003546001600160a01b031681565b6002546001600160a01b031681565b6000836102fc57506000610399565b8383028385828161030957fe5b041483906103955760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561035a578181015183820152602001610342565b50505050905090810190601f1680156103875780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5090505b9392505050565b600081848411156103f25760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561035a578181015183820152602001610342565b505050900390565b600081831161040a57508161040d565b50805b92915050565b600083830182858210156103955760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561035a57818101518382015260200161034256fea265627a7a72315820e44d883be599768e354f5413c3d3bfcda4b02ef3c799434591eb52cfe1433c5264736f6c634300051100324472697020726174652073686f756c642062652067726561746572207468616e20302e","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x640 CODESIZE SUB DUP1 PUSH2 0x640 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 SWAP1 SWAP3 ADD MLOAD SWAP1 SWAP2 SWAP1 DUP3 PUSH2 0x80 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x61D PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xDB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4472697020746F6B656E206E6F7420646566696E65642E000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x136 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4472697020746172676574206E6F7420646566696E65642E0000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST NUMBER PUSH1 0x0 SWAP1 DUP2 SSTORE PUSH1 0x1 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0x2 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 0x3 DUP1 SLOAD SWAP3 SWAP1 SWAP4 AND SWAP2 AND OR SWAP1 SSTORE PUSH1 0x4 SSTORE PUSH2 0x49D DUP1 PUSH2 0x180 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 0x62 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x88A91A8A EQ PUSH2 0x67 JUMPI DUP1 PUSH4 0x95F632B3 EQ PUSH2 0x81 JUMPI DUP1 PUSH4 0x9F678CCA EQ PUSH2 0x89 JUMPI DUP1 PUSH4 0xD3261592 EQ PUSH2 0x91 JUMPI DUP1 PUSH4 0xD4B83992 EQ PUSH2 0x99 JUMPI DUP1 PUSH4 0xFC0C546A EQ PUSH2 0xBD JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6F PUSH2 0xC5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x6F PUSH2 0xCB JUMP JUMPDEST PUSH2 0x6F PUSH2 0xD1 JUMP JUMPDEST PUSH2 0x6F PUSH2 0x2C9 JUMP JUMPDEST PUSH2 0xA1 PUSH2 0x2CF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xA1 PUSH2 0x2DE JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 DUP4 SWAP2 DUP4 SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x120 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x134 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x14A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 SLOAD PUSH1 0x0 DUP1 SLOAD PUSH1 0x4 SLOAD PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x12 DUP2 MSTORE PUSH18 0x64726970546F74616C206F766572666C6F77 PUSH1 0x70 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP6 SWAP7 POP SWAP4 SWAP5 SWAP2 SWAP4 SWAP1 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 NUMBER SWAP2 SWAP1 PUSH2 0x1A9 SWAP1 DUP8 SWAP1 DUP8 DUP6 SUB SWAP1 PUSH2 0x2ED JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1E3 DUP3 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x13 DUP2 MSTORE PUSH1 0x20 ADD PUSH19 0x64656C74614472697020756E646572666C6F77 PUSH1 0x68 SHL DUP2 MSTORE POP PUSH2 0x3A0 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1F1 DUP10 DUP4 PUSH2 0x3FA JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x224 DUP8 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xC DUP2 MSTORE PUSH1 0x20 ADD PUSH12 0x1D185D5D1BDB1BD9DA58D85B PUSH1 0xA2 SHL DUP2 MSTORE POP PUSH2 0x413 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x4 DUP2 SWAP1 SSTORE POP DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA9059CBB DUP8 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x28D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2A1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP2 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3 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 0x0 DUP4 PUSH2 0x2FC JUMPI POP PUSH1 0x0 PUSH2 0x399 JUMP JUMPDEST DUP4 DUP4 MUL DUP4 DUP6 DUP3 DUP2 PUSH2 0x309 JUMPI INVALID JUMPDEST DIV EQ DUP4 SWAP1 PUSH2 0x395 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x35A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x342 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x387 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x3F2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x35A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x342 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 GT PUSH2 0x40A JUMPI POP DUP2 PUSH2 0x40D JUMP JUMPDEST POP DUP1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 ADD DUP3 DUP6 DUP3 LT ISZERO PUSH2 0x395 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x35A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x342 JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xE4 0x4D DUP9 EXTCODESIZE 0xE5 SWAP10 PUSH23 0x8E354F5413C3D3BFCDA4B02EF3C799434591EB52CFE143 EXTCODECOPY MSTORE PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN DIFFICULTY PUSH19 0x697020726174652073686F756C642062652067 PUSH19 0x6561746572207468616E20302E000000000000 ","sourceMap":"232:2871:33:-;;;886:397;8:9:-1;5:2;;;30:1;27;20:12;5:2;886:397:33;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;886:397:33;;;;;;;;;;;;;;975:13;967:61;;;;-1:-1:-1;;;967:61:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1042:29:33;;1034:65;;;;;-1:-1:-1;;;1034:65:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1113:21:33;;1105:58;;;;;-1:-1:-1;;;1105:58:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;1181:12;1169:9;:24;;;1199:8;:20;;;;1225:5;:14;;-1:-1:-1;;;;;1225:14:33;;;-1:-1:-1;;;;;;1225:14:33;;;;;;;1245:6;:16;;;;;;;;;;;1267:7;:11;232:2871;;;;;;"},"deployedBytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100625760003560e01c806388a91a8a1461006757806395f632b3146100815780639f678cca14610089578063d326159214610091578063d4b8399214610099578063fc0c546a146100bd575b600080fd5b61006f6100c5565b60408051918252519081900360200190f35b61006f6100cb565b61006f6100d1565b61006f6102c9565b6100a16102cf565b604080516001600160a01b039092168252519081900360200190f35b6100a16102de565b60005481565b60045481565b600254604080516370a0823160e01b815230600482015290516000926001600160a01b031691839183916370a08231916024808301926020929190829003018186803b15801561012057600080fd5b505afa158015610134573d6000803e3d6000fd5b505050506040513d602081101561014a57600080fd5b50516001546000805460045460035460408051808201909152601281527164726970546f74616c206f766572666c6f7760701b60208201529596509394919390926001600160a01b03909116914391906101a9908790878503906102ed565b905060006101e382866040518060400160405280601381526020017264656c74614472697020756e646572666c6f7760681b8152506103a0565b905060006101f189836103fa565b9050600061022487836040518060400160405280600c81526020016b1d185d5d1bdb1bd9da58d85b60a21b815250610413565b9050806004819055508a6001600160a01b031663a9059cbb87846040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561028d57600080fd5b505af11580156102a1573d6000803e3d6000fd5b505050506040513d60208110156102b757600080fd5b50919b50505050505050505050505090565b60015481565b6003546001600160a01b031681565b6002546001600160a01b031681565b6000836102fc57506000610399565b8383028385828161030957fe5b041483906103955760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561035a578181015183820152602001610342565b50505050905090810190601f1680156103875780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5090505b9392505050565b600081848411156103f25760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561035a578181015183820152602001610342565b505050900390565b600081831161040a57508161040d565b50805b92915050565b600083830182858210156103955760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561035a57818101518382015260200161034256fea265627a7a72315820e44d883be599768e354f5413c3d3bfcda4b02ef3c799434591eb52cfe1433c5264736f6c63430005110032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x62 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x88A91A8A EQ PUSH2 0x67 JUMPI DUP1 PUSH4 0x95F632B3 EQ PUSH2 0x81 JUMPI DUP1 PUSH4 0x9F678CCA EQ PUSH2 0x89 JUMPI DUP1 PUSH4 0xD3261592 EQ PUSH2 0x91 JUMPI DUP1 PUSH4 0xD4B83992 EQ PUSH2 0x99 JUMPI DUP1 PUSH4 0xFC0C546A EQ PUSH2 0xBD JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6F PUSH2 0xC5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x6F PUSH2 0xCB JUMP JUMPDEST PUSH2 0x6F PUSH2 0xD1 JUMP JUMPDEST PUSH2 0x6F PUSH2 0x2C9 JUMP JUMPDEST PUSH2 0xA1 PUSH2 0x2CF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xA1 PUSH2 0x2DE JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 DUP4 SWAP2 DUP4 SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x120 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x134 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x14A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 SLOAD PUSH1 0x0 DUP1 SLOAD PUSH1 0x4 SLOAD PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x12 DUP2 MSTORE PUSH18 0x64726970546F74616C206F766572666C6F77 PUSH1 0x70 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP6 SWAP7 POP SWAP4 SWAP5 SWAP2 SWAP4 SWAP1 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 NUMBER SWAP2 SWAP1 PUSH2 0x1A9 SWAP1 DUP8 SWAP1 DUP8 DUP6 SUB SWAP1 PUSH2 0x2ED JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1E3 DUP3 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x13 DUP2 MSTORE PUSH1 0x20 ADD PUSH19 0x64656C74614472697020756E646572666C6F77 PUSH1 0x68 SHL DUP2 MSTORE POP PUSH2 0x3A0 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1F1 DUP10 DUP4 PUSH2 0x3FA JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x224 DUP8 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xC DUP2 MSTORE PUSH1 0x20 ADD PUSH12 0x1D185D5D1BDB1BD9DA58D85B PUSH1 0xA2 SHL DUP2 MSTORE POP PUSH2 0x413 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x4 DUP2 SWAP1 SSTORE POP DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA9059CBB DUP8 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x28D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2A1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP2 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3 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 0x0 DUP4 PUSH2 0x2FC JUMPI POP PUSH1 0x0 PUSH2 0x399 JUMP JUMPDEST DUP4 DUP4 MUL DUP4 DUP6 DUP3 DUP2 PUSH2 0x309 JUMPI INVALID JUMPDEST DIV EQ DUP4 SWAP1 PUSH2 0x395 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x35A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x342 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x387 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x3F2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x35A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x342 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 GT PUSH2 0x40A JUMPI POP DUP2 PUSH2 0x40D JUMP JUMPDEST POP DUP1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 ADD DUP3 DUP6 DUP3 LT ISZERO PUSH2 0x395 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x35A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x342 JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xE4 0x4D DUP9 EXTCODESIZE 0xE5 SWAP10 PUSH23 0x8E354F5413C3D3BFCDA4B02EF3C799434591EB52CFE143 EXTCODECOPY MSTORE PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ","sourceMap":"232:2871:33:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;232:2871:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;326:21;;;:::i;:::-;;;;;;;;;;;;;;;;664:19;;;:::i;1519:861::-;;;:::i;418:20::-;;;:::i;587:21::-;;;:::i;:::-;;;;-1:-1:-1;;;;;587:21:33;;;;;;;;;;;;;;496:27;;;:::i;326:21::-;;;;:::o;664:19::-;;;;:::o;1519:861::-;1626:5;;1662:31;;;-1:-1:-1;;;1662:31:33;;1687:4;1662:31;;;;;;1551:4;;-1:-1:-1;;;;;1626:5:33;;1551:4;;1626:5;;1662:16;;:31;;;;;;;;;;;;;;1626:5;1662:31;;;5:2:-1;;;;30:1;27;20:12;5:2;1662:31:33;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1662:31:33;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1662:31:33;1754:8;;1737:14;1786:9;;1817:7;;1848:6;;1960:63;;;;;;;;;;;;-1:-1:-1;;;1662:31:33;1960:63;;;1662:31;;-1:-1:-1;1754:8:33;;1786:9;;1817:7;;-1:-1:-1;;;;;1848:6:33;;;;1880:12;;1737:14;1960:63;;1754:8;;1975:25;;;;1960:3;:63::i;:::-;1942:81;;2029:15;2047:48;2051:10;2063:8;2047:48;;;;;;;;;;;;;-1:-1:-1;;;2047:48:33;;;:3;:48::i;:::-;2029:66;;2101:12;2116:34;2120:17;2139:10;2116:3;:34::i;:::-;2101:49;;2156:17;2176:38;2180:8;2190:7;2176:38;;;;;;;;;;;;;-1:-1:-1;;;2176:38:33;;;:3;:38::i;:::-;2156:58;;2303:12;2293:7;:22;;;;2321:6;-1:-1:-1;;;;;2321:15:33;;2337:7;2346;2321:33;;;;;;;;;;;;;-1:-1:-1;;;;;2321:33:33;-1:-1:-1;;;;;2321:33:33;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2321:33:33;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2321:33:33;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2368:7:33;;-1:-1:-1;;;;;;;;;;;;1519:861:33;:::o;418:20::-;;;;:::o;587:21::-;;;-1:-1:-1;;;;;587:21:33;;:::o;496:27::-;;;-1:-1:-1;;;;;496:27:33;;:::o;2761:204::-;2841:4;2857:6;2853:35;;-1:-1:-1;2880:1:33;2873:8;;2853:35;2902:5;;;2906:1;2902;:5;:1;2921:5;;;;;:10;2933:12;2913:33;;;;;-1:-1:-1;;;2913:33:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2913:33:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2959:1:33;-1:-1:-1;2761:204:33;;;;;;:::o;2597:160::-;2677:4;2705:12;2697:6;;;;2689:29;;;;-1:-1:-1;;;2689:29:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;2689:29:33;-1:-1:-1;;;2733:5:33;;;2597:160::o;2969:132::-;3021:4;3042:1;3037;:6;3033:64;;-1:-1:-1;3060:1:33;3053:8;;3033:64;-1:-1:-1;3089:1:33;3033:64;2969:132;;;;:::o;2433:160::-;2513:4;2534:5;;;2561:12;2553:6;;;;2545:29;;;;-1:-1:-1;;;2545:29:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;"},"methodIdentifiers":{"drip()":"9f678cca","dripRate()":"d3261592","dripStart()":"88a91a8a","dripped()":"95f632b3","target()":"d4b83992","token()":"fc0c546a"}},"metadata":"{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"dripRate_\",\"type\":\"uint256\"},{\"internalType\":\"contract EIP20Interface\",\"name\":\"token_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"target_\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"constant\":false,\"inputs\":[],\"name\":\"drip\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"dripRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"dripStart\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"dripped\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"target\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"contract EIP20Interface\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Compound\",\"details\":\"This contract must be poked via the `drip()` function every so often.\",\"methods\":{\"constructor\":{\"params\":{\"dripRate_\":\"Numer of tokens per block to drip\",\"target_\":\"The recipient of dripped tokens\",\"token_\":\"The token to drip\"}},\"drip()\":{\"details\":\"Note: this will only drip up to the amount of tokens available.\",\"return\":\"The amount of tokens dripped in this call\"}},\"title\":\"Reservoir Contract\"},\"userdoc\":{\"methods\":{\"constructor\":\"Constructs a Reservoir\",\"drip()\":{\"notice\":\"Drips the maximum amount of tokens to match the drip rate since inception\"}},\"notice\":\"Distributes a token to a different contract at a fixed rate.\"}},\"settings\":{\"compilationTarget\":{\"contracts/Reservoir.sol\":\"Reservoir\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/EIP20Interface.sol\":{\"keccak256\":\"0xee33b8b333743308a9153a59f22da2cadb22cedef4403fe039bf9e057c9c729a\",\"urls\":[\"bzz-raw://5427fdb941300d36a424da0a0a5800e3b2ca51c9c922831dbfce2f6637402b43\",\"dweb:/ipfs/QmTrvmLynqSUPjsGW2dpiQ91dSmn4xzccQiwr8qaBtyvjH\"]},\"contracts/Reservoir.sol\":{\"keccak256\":\"0xa2ada9618a5f75a68a297904a8a20f5c845d0078185744aa1a021696c1025630\",\"urls\":[\"bzz-raw://cfb3a42b1e2726e1cd82476cac807c4bb6fe233e456bf8596114c62f4c75e06f\",\"dweb:/ipfs/QmTx61UYLYwmurP5jK9Dz8qaL6Mjpeqt9ESZgn4QEunHEH\"]}},\"version\":1}"}},"contracts/RewardsDistributorDelegate.sol":{"RewardsDistributorDelegate":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract CToken","name":"cToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"newSpeed","type":"uint256"}],"name":"CompBorrowSpeedUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"CompGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract CToken","name":"cToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"newSpeed","type":"uint256"}],"name":"CompSupplySpeedUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"contributor","type":"address"},{"indexed":false,"internalType":"uint256","name":"newSpeed","type":"uint256"}],"name":"ContributorCompSpeedUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract CToken","name":"cToken","type":"address"},{"indexed":true,"internalType":"address","name":"borrower","type":"address"},{"indexed":false,"internalType":"uint256","name":"compDelta","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"compBorrowIndex","type":"uint256"}],"name":"DistributedBorrowerComp","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract CToken","name":"cToken","type":"address"},{"indexed":true,"internalType":"address","name":"supplier","type":"address"},{"indexed":false,"internalType":"uint256","name":"compDelta","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"compSupplyIndex","type":"uint256"}],"name":"DistributedSupplierComp","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"NewAdmin","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldPendingAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newPendingAdmin","type":"address"}],"name":"NewPendingAdmin","type":"event"},{"constant":false,"inputs":[],"name":"_acceptAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"_grantComp","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"contract CToken","name":"cToken","type":"address"},{"internalType":"uint256","name":"compSpeed","type":"uint256"}],"name":"_setCompBorrowSpeed","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"contract CToken[]","name":"cTokens","type":"address[]"},{"internalType":"uint256[]","name":"supplySpeeds","type":"uint256[]"},{"internalType":"uint256[]","name":"borrowSpeeds","type":"uint256[]"}],"name":"_setCompSpeeds","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"contract CToken","name":"cToken","type":"address"},{"internalType":"uint256","name":"compSpeed","type":"uint256"}],"name":"_setCompSupplySpeed","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"contributor","type":"address"},{"internalType":"uint256","name":"compSpeed","type":"uint256"}],"name":"_setContributorCompSpeed","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newPendingAdmin","type":"address"}],"name":"_setPendingAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"allMarkets","outputs":[{"internalType":"contract CToken","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"contract CToken[]","name":"cTokens","type":"address[]"}],"name":"claimRewards","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address[]","name":"holders","type":"address[]"},{"internalType":"contract CToken[]","name":"cTokens","type":"address[]"},{"internalType":"bool","name":"borrowers","type":"bool"},{"internalType":"bool","name":"suppliers","type":"bool"}],"name":"claimRewards","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"claimRewards","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"compAccrued","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"compBorrowSpeeds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"compBorrowState","outputs":[{"internalType":"uint224","name":"index","type":"uint224"},{"internalType":"uint32","name":"block","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"compBorrowerIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"compContributorSpeeds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"compInitialIndex","outputs":[{"internalType":"uint224","name":"","type":"uint224"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"compSupplierIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"compSupplySpeeds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"compSupplyState","outputs":[{"internalType":"uint224","name":"index","type":"uint224"},{"internalType":"uint32","name":"block","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"cToken","type":"address"},{"internalType":"address","name":"borrower","type":"address"}],"name":"flywheelPreBorrowerAction","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"cToken","type":"address"},{"internalType":"address","name":"supplier","type":"address"}],"name":"flywheelPreSupplierAction","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"cToken","type":"address"},{"internalType":"address","name":"src","type":"address"},{"internalType":"address","name":"dst","type":"address"}],"name":"flywheelPreTransferAction","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getAllMarkets","outputs":[{"internalType":"contract CToken[]","name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getBlockNumber","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_rewardToken","type":"address"}],"name":"initialize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isRewardsDistributor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastContributorBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pendingAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rewardToken","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"contributor","type":"address"}],"name":"updateContributorRewards","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b50612e1c806100206000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c8063a7f0e2311161011a578063ca0af043116100ad578063e9c714f21161007c578063e9c714f21461099d578063ef5cfb8c146109a5578063f4a433c0146109cb578063f7c618c1146109f1578063f851a440146109f9576101fb565b8063ca0af043146108ef578063cc7ebdc41461091d578063e3af317b14610943578063e6e162e81461096f576101fb565b8063b21be7fd116100e9578063b21be7fd1461084f578063b71d1a0c1461087d578063bea6b8b8146108a3578063c4d66de8146108c9576101fb565b8063a7f0e23114610612578063a8b4394814610636578063abc6d72d146107db578063b0772d0b146107f7576101fb565b8063598ee1cb116101925780636b79c38d116101615780636b79c38d14610552578063741b2525146105a05780638c57804e146105c6578063986ab838146105ec576101fb565b8063598ee1cb146104cc5780635c60da1b146104f857806365999470146105005780636aa875b51461052c576101fb565b806342cbb15c116101ce57806342cbb15c146103315780634e081c951461034b57806352d84d1e1461038357806354eb76fa146103a0576101fb565b80631c9161e0146102005780632026ffa31461023057806326782247146102e157806327efe3cb14610305575b600080fd5b61022e6004803603604081101561021657600080fd5b506001600160a01b0381358116916020013516610a01565b005b61022e6004803603604081101561024657600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561027057600080fd5b82018360208201111561028257600080fd5b803590602001918460208302840111600160201b831117156102a357600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610a3f945050505050565b6102e9610aa1565b604080516001600160a01b039092168252519081900360200190f35b61022e6004803603604081101561031b57600080fd5b506001600160a01b038135169060200135610ab0565b610339610bb9565b60408051918252519081900360200190f35b61022e6004803603606081101561036157600080fd5b506001600160a01b038135811691602081013582169160409091013516610bbd565b6102e96004803603602081101561039957600080fd5b5035610c01565b61022e600480360360808110156103b657600080fd5b810190602081018135600160201b8111156103d057600080fd5b8201836020820111156103e257600080fd5b803590602001918460208302840111600160201b8311171561040357600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561045257600080fd5b82018360208201111561046457600080fd5b803590602001918460208302840111600160201b8311171561048557600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550505050803515159150602001351515610c28565b61022e600480360360408110156104e257600080fd5b506001600160a01b038135169060200135610e61565b6102e9610f50565b61022e6004803603604081101561051657600080fd5b506001600160a01b038135169060200135610f5f565b6103396004803603602081101561054257600080fd5b50356001600160a01b0316610fb6565b6105786004803603602081101561056857600080fd5b50356001600160a01b0316610fc8565b604080516001600160e01b03909316835263ffffffff90911660208301528051918290030190f35b61022e600480360360208110156105b657600080fd5b50356001600160a01b0316610ff2565b610578600480360360208110156105dc57600080fd5b50356001600160a01b03166110b6565b6103396004803603602081101561060257600080fd5b50356001600160a01b03166110e0565b61061a6110f2565b604080516001600160e01b039092168252519081900360200190f35b61022e6004803603606081101561064c57600080fd5b810190602081018135600160201b81111561066657600080fd5b82018360208201111561067857600080fd5b803590602001918460208302840111600160201b8311171561069957600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156106e857600080fd5b8201836020820111156106fa57600080fd5b803590602001918460208302840111600160201b8311171561071b57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561076a57600080fd5b82018360208201111561077c57600080fd5b803590602001918460208302840111600160201b8311171561079d57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611104945050505050565b6107e3611211565b604080519115158252519081900360200190f35b6107ff611216565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561083b578181015183820152602001610823565b505050509050019250505060405180910390f35b6103396004803603604081101561086557600080fd5b506001600160a01b0381358116916020013516611278565b61022e6004803603602081101561089357600080fd5b50356001600160a01b0316611295565b610339600480360360208110156108b957600080fd5b50356001600160a01b0316611341565b61022e600480360360208110156108df57600080fd5b50356001600160a01b0316611353565b6103396004803603604081101561090557600080fd5b506001600160a01b038135811691602001351661146e565b6103396004803603602081101561093357600080fd5b50356001600160a01b031661148b565b61022e6004803603604081101561095957600080fd5b506001600160a01b03813516906020013561149d565b61022e6004803603604081101561098557600080fd5b506001600160a01b03813581169160200135166114f4565b61022e6115ac565b61022e600480360360208110156109bb57600080fd5b50356001600160a01b03166116b7565b610339600480360360208110156109e157600080fd5b50356001600160a01b031661171e565b6102e9611730565b6102e961173f565b6001600160a01b0382166000908152600760205260409020546001600160e01b031615610a3b57610a318261174e565b610a3b82826119e4565b5050565b604080516001808252818301909252606091602080830190803883390190505090508281600081518110610a6f57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050610a9c8183600180610c28565b505050565b6001546001600160a01b031681565b6000546001600160a01b03163314610b0f576040805162461bcd60e51b815260206004820152601960248201527f6f6e6c792061646d696e2063616e206772616e7420636f6d7000000000000000604482015290519081900360640190fd5b6000610b1b8383611bc2565b90508015610b70576040805162461bcd60e51b815260206004820152601b60248201527f696e73756666696369656e7420636f6d7020666f72206772616e740000000000604482015290519081900360640190fd5b604080516001600160a01b03851681526020810184905281517f98b2f82a3a07f223a0be64b3d0f47711c64dccd1feafb94aa28156b38cd9695c929181900390910190a1505050565b4390565b6001600160a01b0383166000908152600760205260409020546001600160e01b031615610a9c57610bed8361174e565b610bf783836119e4565b610a9c83826119e4565b60048181548110610c0e57fe5b6000918252602090912001546001600160a01b0316905081565b60005b8351811015610dbc576000848281518110610c4257fe5b6020026020010151905083151560011515148015610c8057506001600160a01b0381166000908152600860205260409020546001600160e01b031615155b15610d4057610c8d612ccf565b6040518060200160405280836001600160a01b031663aa5af0fd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610cd157600080fd5b505afa158015610ce5573d6000803e3d6000fd5b505050506040513d6020811015610cfb57600080fd5b505190529050610d0b8282611ce2565b60005b8751811015610d3d57610d3583898381518110610d2757fe5b602002602001015184611f83565b600101610d0e565b50505b6001831515148015610d7257506001600160a01b0381166000908152600760205260409020546001600160e01b031615155b15610db357610d808161174e565b60005b8651811015610db157610da982888381518110610d9c57fe5b60200260200101516119e4565b600101610d83565b505b50600101610c2b565b5060005b8451811015610e5a57610e1e858281518110610dd857fe5b6020026020010151600b6000888581518110610df057fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054611bc2565b600b6000878481518110610e2e57fe5b6020908102919091018101516001600160a01b0316825281019190915260400160002055600101610dc0565b5050505050565b6000546001600160a01b03163314610eae576040805162461bcd60e51b815260206004820152601d6024820152600080516020612d78833981519152604482015290519081900360640190fd5b610eb782610ff2565b80610eda576001600160a01b0382166000908152600d6020526040812055610efc565b610ee2610bb9565b6001600160a01b0383166000908152600d60205260409020555b6001600160a01b0382166000818152600c6020908152604091829020849055815184815291517f386537fa92edc3319af95f1f904dcf1900021e4f3f4e08169a577a09076e66b39281900390910190a25050565b6002546001600160a01b031681565b6000546001600160a01b03163314610fac576040805162461bcd60e51b815260206004820152601d6024820152600080516020612d78833981519152604482015290519081900360640190fd5b610a3b8282612139565b60056020526000908152604090205481565b6007602052600090815260409020546001600160e01b03811690600160e01b900463ffffffff1682565b6001600160a01b0381166000908152600c602052604081205490611014610bb9565b6001600160a01b0384166000908152600d60205260408120549192509061103c9083906123cf565b905060008111801561104e5750600083115b156110b057600061105f8285612410565b6001600160a01b0386166000908152600b6020526040812054919250906110869083612452565b6001600160a01b0387166000908152600b6020908152604080832093909355600d90522084905550505b50505050565b6008602052600090815260409020546001600160e01b03811690600160e01b900463ffffffff1682565b600c6020526000908152604090205481565b6a0c097ce7bc90715b34b9f160241b81565b6000546001600160a01b03163314611151576040805162461bcd60e51b815260206004820152601d6024820152600080516020612d78833981519152604482015290519081900360640190fd5b82518251811480156111635750815181145b61119e5760405162461bcd60e51b8152600401808060200182810382526030815260200180612d986030913960400191505060405180910390fd5b60005b81811015610e5a576111d98582815181106111b857fe5b60200260200101518583815181106111cc57fe5b6020026020010151612488565b6112098582815181106111e857fe5b60200260200101518483815181106111fc57fe5b6020026020010151612139565b6001016111a1565b600181565b6060600480548060200260200160405190810160405280929190818152602001828054801561126e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611250575b5050505050905090565b600960209081526000928352604080842090915290825290205481565b6000546001600160a01b031633146112de5760405162461bcd60e51b815260040180806020018281038252602f815260200180612ce3602f913960400191505060405180910390fd5b600180546001600160a01b038381166001600160a01b0319831681179093556040805191909216808252602082019390935281517fca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9929181900390910190a15050565b600d6020526000908152604090205481565b6000546001600160a01b031633146113b2576040805162461bcd60e51b815260206004820152601a60248201527f4f6e6c792061646d696e2063616e20696e697469616c697a652e000000000000604482015290519081900360640190fd5b6003546001600160a01b031615611407576040805162461bcd60e51b815260206004820152601460248201527320b63932b0b23c9034b734ba34b0b634bd32b21760611b604482015290519081900360640190fd5b6001600160a01b03811661144c5760405162461bcd60e51b8152600401808060200182810382526033815260200180612d456033913960400191505060405180910390fd5b600380546001600160a01b0319166001600160a01b0392909216919091179055565b600a60209081526000928352604080842090915290825290205481565b600b6020526000908152604090205481565b6000546001600160a01b031633146114ea576040805162461bcd60e51b815260206004820152601d6024820152600080516020612d78833981519152604482015290519081900360640190fd5b610a3b8282612488565b6001600160a01b0382166000908152600860205260409020546001600160e01b031615610a3b57611523612ccf565b6040518060200160405280846001600160a01b031663aa5af0fd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561156757600080fd5b505afa15801561157b573d6000803e3d6000fd5b505050506040513d602081101561159157600080fd5b5051905290506115a18382611ce2565b610a9c838383611f83565b6001546001600160a01b0316331480156115c557503315155b6116005760405162461bcd60e51b8152600401808060200182810382526033815260200180612d126033913960400191505060405180910390fd5b60008054600180546001600160a01b038082166001600160a01b031980861682179687905590921690925560408051938316808552949092166020840152815190927ff9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc92908290030190a1600154604080516001600160a01b038085168252909216602083015280517fca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a99281900390910190a15050565b61171b81600480548060200260200160405190810160405280929190818152602001828054801561171157602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116116f3575b5050505050610a3f565b50565b60066020526000908152604090205481565b6003546001600160a01b031681565b6000546001600160a01b031681565b6001600160a01b03811660009081526007602090815260408083206005909252822054909161177b610bb9565b835490915060009061179b908390600160e01b900463ffffffff166123cf565b90506000811180156117ad5750600083115b15611973576000856001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156117ed57600080fd5b505afa158015611801573d6000803e3d6000fd5b505050506040513d602081101561181757600080fd5b5051905060006118278386612410565b9050611831612ccf565b6000831161184e5760405180602001604052806000815250611858565b6118588284612676565b9050611862612ccf565b604080516020810190915288546001600160e01b0316815261188490836126b3565b905060405180604001604052806118d483600001516040518060400160405280601a81526020017f6e657720696e64657820657863656564732032323420626974730000000000008152506126d8565b6001600160e01b0316815260200161190f886040518060400160405280601c8152602001600080516020612dc8833981519152815250612772565b63ffffffff9081169091526001600160a01b038b166000908152600760209081526040909120835181549490920151909216600160e01b026001600160e01b039182166001600160e01b0319909416939093171691909117905550610e5a92505050565b60008111801561198c575083546001600160e01b031615155b15610e5a576119be826040518060400160405280601c8152602001600080516020612dc8833981519152815250612772565b845463ffffffff91909116600160e01b026001600160e01b039091161784555050505050565b6001600160a01b0382166000908152600760205260409020611a04612ccf565b50604080516020810190915281546001600160e01b03168152611a25612ccf565b5060408051602080820183526001600160a01b03808816600090815260098352848120918816808252828452948120805485528651959091529152919091558051158015611a735750815115155b15611a8a576a0c097ce7bc90715b34b9f160241b81525b611a92612ccf565b611a9c83836127c7565b90506000866001600160a01b03166370a08231876040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015611af657600080fd5b505afa158015611b0a573d6000803e3d6000fd5b505050506040513d6020811015611b2057600080fd5b505190506000611b3082846127ec565b6001600160a01b0388166000908152600b602052604081205491925090611b579083612452565b6001600160a01b03808a166000818152600b60209081526040918290208590558a5182518881529182015281519495509193928d16927f2caecd17d02f56fa897705dcc740da2d237c373f70686f4e0d9bd3bf0400ea7a9281900390910190a3505050505050505050565b600354604080516370a0823160e01b815230600482015290516000926001600160a01b031691839183916370a08231916024808301926020929190829003018186803b158015611c1157600080fd5b505afa158015611c25573d6000803e3d6000fd5b505050506040513d6020811015611c3b57600080fd5b505190508315801590611c4e5750808411155b15611cd657816001600160a01b031663a9059cbb86866040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015611cb357600080fd5b505af1158015611cc7573d6000803e3d6000fd5b50505050600092505050611cdc565b83925050505b92915050565b6001600160a01b038216600090815260086020908152604080832060069092528220549091611d0f610bb9565b8354909150600090611d2f908390600160e01b900463ffffffff166123cf565b9050600081118015611d415750600083115b15611f10576000611db6876001600160a01b03166347bd37186040518163ffffffff1660e01b815260040160206040518083038186803b158015611d8457600080fd5b505afa158015611d98573d6000803e3d6000fd5b505050506040513d6020811015611dae57600080fd5b50518761281a565b90506000611dc48386612410565b9050611dce612ccf565b60008311611deb5760405180602001604052806000815250611df5565b611df58284612676565b9050611dff612ccf565b604080516020810190915288546001600160e01b03168152611e2190836126b3565b90506040518060400160405280611e7183600001516040518060400160405280601a81526020017f6e657720696e64657820657863656564732032323420626974730000000000008152506126d8565b6001600160e01b03168152602001611eac886040518060400160405280601c8152602001600080516020612dc8833981519152815250612772565b63ffffffff9081169091526001600160a01b038c166000908152600860209081526040909120835181549490920151909216600160e01b026001600160e01b039182166001600160e01b0319909416939093171691909117905550611f7b92505050565b600081118015611f29575083546001600160e01b031615155b15611f7b57611f5b826040518060400160405280601c8152602001600080516020612dc8833981519152815250612772565b845463ffffffff91909116600160e01b026001600160e01b039091161784555b505050505050565b6001600160a01b0383166000908152600860205260409020611fa3612ccf565b50604080516020810190915281546001600160e01b03168152611fc4612ccf565b5060408051602080820183526001600160a01b038089166000908152600a83528481209189168082528284529481208054855286519590915291529190915580511580156120125750815115155b15612029576a0c097ce7bc90715b34b9f160241b81525b612031612ccf565b61203b83836127c7565b90506000612098886001600160a01b03166395dd9193896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015611d8457600080fd5b905060006120a682846127ec565b6001600160a01b0389166000908152600b6020526040812054919250906120cd9083612452565b6001600160a01b03808b166000818152600b60209081526040918290208590558a5182518881529182015281519495509193928e16927f1fc3ecc087d8d2d15e23d0032af5a47059c3892d003d8e139fdcb6bb327c99a69281900390910190a350505050505050505050565b6001600160a01b03821660009081526006602052604090205480156121e457612160612ccf565b6040518060200160405280856001600160a01b031663aa5af0fd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156121a457600080fd5b505afa1580156121b8573d6000803e3d6000fd5b505050506040513d60208110156121ce57600080fd5b5051905290506121de8482611ce2565b50612373565b8115612373576121f383612838565b6001600160a01b0383166000908152600860205260409020546001600160e01b031661232d5760405180604001604052806a0c097ce7bc90715b34b9f160241b6001600160e01b0316815260200161227561224c610bb9565b6040518060400160405280601c8152602001600080516020612dc8833981519152815250612772565b63ffffffff9081169091526001600160a01b038516600090815260086020908152604080832085518154968401516001600160e01b03199097166001600160e01b03918216178116600160e01b9790961696909602949094179093556007905220541661232857600480546001810182556000919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b0319166001600160a01b0385161790555b612373565b61233861224c610bb9565b6001600160a01b0384166000908152600860205260409020805463ffffffff92909216600160e01b026001600160e01b039092169190911790555b818114610a9c576001600160a01b038316600081815260066020908152604091829020859055815185815291517f20af8e791cc98f74b2d7a391c80980ca8e5aebf3d4060bf581997b6acae2e5379281900390910190a2505050565b60006124098383604051806040016040528060158152602001747375627472616374696f6e20756e646572666c6f7760581b815250612b11565b9392505050565b600061240983836040518060400160405280601781526020017f6d756c7469706c69636174696f6e206f766572666c6f77000000000000000000815250612b6b565b60006124098383604051806040016040528060118152602001706164646974696f6e206f766572666c6f7760781b815250612bea565b6001600160a01b03821660009081526005602052604090205480156124b5576124b08361174e565b61261a565b811561261a576124c483612838565b6001600160a01b0383166000908152600760205260409020546001600160e01b03166125d45760405180604001604052806a0c097ce7bc90715b34b9f160241b6001600160e01b0316815260200161251d61224c610bb9565b63ffffffff9081169091526001600160a01b038516600090815260076020908152604080832085518154968401516001600160e01b03199097166001600160e01b03918216178116600160e01b979096169690960294909417909355600890522054166124b057600480546001810182556000919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b0319166001600160a01b03851617905561261a565b6125df61224c610bb9565b6001600160a01b0384166000908152600760205260409020805463ffffffff92909216600160e01b026001600160e01b039092169190911790555b818114610a9c576001600160a01b038316600081815260056020908152604091829020859055815185815291517fdeafccd0c0b768b2529f7dcbbe58e155d6023059150b7490ed4535cc3744b92d9281900390910190a2505050565b61267e612ccf565b60405180602001604052806126aa6126a4866a0c097ce7bc90715b34b9f160241b612410565b85612c3f565b90529392505050565b6126bb612ccf565b60405180602001604052806126aa85600001518560000151612452565b600081600160e01b841061276a5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561272f578181015183820152602001612717565b50505050905090810190601f16801561275c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b509192915050565b600081600160201b841061276a5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561272f578181015183820152602001612717565b6127cf612ccf565b60405180602001604052806126aa856000015185600001516123cf565b60006a0c097ce7bc90715b34b9f160241b61280b848460000151612410565b8161281257fe5b049392505050565b600061240961283184670de0b6b3a7640000612410565b8351612c3f565b6000816001600160a01b0316635fe3b5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561287357600080fd5b505afa158015612887573d6000803e3d6000fd5b505050506040513d602081101561289d57600080fd5b505160408051638e8f294b60e01b81526001600160a01b038581166004830152825193945060009390851692638e8f294b9260248082019391829003018186803b1580156128ea57600080fd5b505afa1580156128fe573d6000803e3d6000fd5b505050506040513d604081101561291457600080fd5b5051905060018115151461296f576040805162461bcd60e51b815260206004820152601960248201527f636f6d70206d61726b6574206973206e6f74206c697374656400000000000000604482015290519081900360640190fd5b60008090506060836001600160a01b0316633605b51b6040518163ffffffff1660e01b815260040160006040518083038186803b1580156129af57600080fd5b505afa1580156129c3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156129ec57600080fd5b8101908080516040519392919084600160201b821115612a0b57600080fd5b908301906020820185811115612a2057600080fd5b82518660208202830111600160201b82111715612a3c57600080fd5b82525081516020918201928201910280838360005b83811015612a69578181015183820152602001612a51565b50505050905001604052505050905060008090505b8151811015612ac157306001600160a01b0316828281518110612a9d57fe5b60200260200101516001600160a01b03161415612ab957600192505b600101612a7e565b50600182151514610e5a576040805162461bcd60e51b8152602060048201526015602482015274191a5cdd1c9a589d5d1bdc881b9bdd081859191959605a1b604482015290519081900360640190fd5b60008184841115612b635760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561272f578181015183820152602001612717565b505050900390565b6000831580612b78575082155b15612b8557506000612409565b83830283858281612b9257fe5b04148390612be15760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561272f578181015183820152602001612717565b50949350505050565b60008383018285821015612be15760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561272f578181015183820152602001612717565b600061240983836040518060400160405280600e81526020016d646976696465206279207a65726f60901b81525060008183612cbc5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561272f578181015183820152602001612717565b50828481612cc657fe5b04949350505050565b604051806020016040528060008152509056fe526577617264734469737472696275746f723a5f73657450656e64696e6741646d696e3a2061646d696e206f6e6c79526577617264734469737472696275746f723a5f61636365707441646d696e3a2070656e64696e672061646d696e206f6e6c7943616e6e6f7420696e697469616c697a652072657761726420746f6b656e20746f20746865207a65726f20616464726573732e6f6e6c792061646d696e2063616e2073657420636f6d70207370656564000000526577617264734469737472696275746f723a3a5f736574436f6d7053706565647320696e76616c696420696e707574626c6f636b206e756d6265722065786365656473203332206269747300000000a265627a7a723158204d57546973860639294b5cb943b21a8deebcc776fa3ab4a85ee71bfc417c3ce964736f6c63430005110032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2E1C DUP1 PUSH2 0x20 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 0x1FB JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA7F0E231 GT PUSH2 0x11A JUMPI DUP1 PUSH4 0xCA0AF043 GT PUSH2 0xAD JUMPI DUP1 PUSH4 0xE9C714F2 GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xE9C714F2 EQ PUSH2 0x99D JUMPI DUP1 PUSH4 0xEF5CFB8C EQ PUSH2 0x9A5 JUMPI DUP1 PUSH4 0xF4A433C0 EQ PUSH2 0x9CB JUMPI DUP1 PUSH4 0xF7C618C1 EQ PUSH2 0x9F1 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x9F9 JUMPI PUSH2 0x1FB JUMP JUMPDEST DUP1 PUSH4 0xCA0AF043 EQ PUSH2 0x8EF JUMPI DUP1 PUSH4 0xCC7EBDC4 EQ PUSH2 0x91D JUMPI DUP1 PUSH4 0xE3AF317B EQ PUSH2 0x943 JUMPI DUP1 PUSH4 0xE6E162E8 EQ PUSH2 0x96F JUMPI PUSH2 0x1FB JUMP JUMPDEST DUP1 PUSH4 0xB21BE7FD GT PUSH2 0xE9 JUMPI DUP1 PUSH4 0xB21BE7FD EQ PUSH2 0x84F JUMPI DUP1 PUSH4 0xB71D1A0C EQ PUSH2 0x87D JUMPI DUP1 PUSH4 0xBEA6B8B8 EQ PUSH2 0x8A3 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x8C9 JUMPI PUSH2 0x1FB JUMP JUMPDEST DUP1 PUSH4 0xA7F0E231 EQ PUSH2 0x612 JUMPI DUP1 PUSH4 0xA8B43948 EQ PUSH2 0x636 JUMPI DUP1 PUSH4 0xABC6D72D EQ PUSH2 0x7DB JUMPI DUP1 PUSH4 0xB0772D0B EQ PUSH2 0x7F7 JUMPI PUSH2 0x1FB JUMP JUMPDEST DUP1 PUSH4 0x598EE1CB GT PUSH2 0x192 JUMPI DUP1 PUSH4 0x6B79C38D GT PUSH2 0x161 JUMPI DUP1 PUSH4 0x6B79C38D EQ PUSH2 0x552 JUMPI DUP1 PUSH4 0x741B2525 EQ PUSH2 0x5A0 JUMPI DUP1 PUSH4 0x8C57804E EQ PUSH2 0x5C6 JUMPI DUP1 PUSH4 0x986AB838 EQ PUSH2 0x5EC JUMPI PUSH2 0x1FB JUMP JUMPDEST DUP1 PUSH4 0x598EE1CB EQ PUSH2 0x4CC JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x4F8 JUMPI DUP1 PUSH4 0x65999470 EQ PUSH2 0x500 JUMPI DUP1 PUSH4 0x6AA875B5 EQ PUSH2 0x52C JUMPI PUSH2 0x1FB JUMP JUMPDEST DUP1 PUSH4 0x42CBB15C GT PUSH2 0x1CE JUMPI DUP1 PUSH4 0x42CBB15C EQ PUSH2 0x331 JUMPI DUP1 PUSH4 0x4E081C95 EQ PUSH2 0x34B JUMPI DUP1 PUSH4 0x52D84D1E EQ PUSH2 0x383 JUMPI DUP1 PUSH4 0x54EB76FA EQ PUSH2 0x3A0 JUMPI PUSH2 0x1FB JUMP JUMPDEST DUP1 PUSH4 0x1C9161E0 EQ PUSH2 0x200 JUMPI DUP1 PUSH4 0x2026FFA3 EQ PUSH2 0x230 JUMPI DUP1 PUSH4 0x26782247 EQ PUSH2 0x2E1 JUMPI DUP1 PUSH4 0x27EFE3CB EQ PUSH2 0x305 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x22E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x216 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xA01 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x22E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x246 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x270 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x282 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x2A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0xA3F SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x2E9 PUSH2 0xAA1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x22E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x31B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xAB0 JUMP JUMPDEST PUSH2 0x339 PUSH2 0xBB9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x22E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x361 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 SWAP1 SWAP2 ADD CALLDATALOAD AND PUSH2 0xBBD JUMP JUMPDEST PUSH2 0x2E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x399 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xC01 JUMP JUMPDEST PUSH2 0x22E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x3B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x3D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x403 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x452 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x464 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x485 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP POP POP POP DUP1 CALLDATALOAD ISZERO ISZERO SWAP2 POP PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0xC28 JUMP JUMPDEST PUSH2 0x22E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xE61 JUMP JUMPDEST PUSH2 0x2E9 PUSH2 0xF50 JUMP JUMPDEST PUSH2 0x22E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x516 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xF5F JUMP JUMPDEST PUSH2 0x339 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x542 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xFB6 JUMP JUMPDEST PUSH2 0x578 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x568 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xFC8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB SWAP1 SWAP4 AND DUP4 MSTORE PUSH4 0xFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x22E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xFF2 JUMP JUMPDEST PUSH2 0x578 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x10B6 JUMP JUMPDEST PUSH2 0x339 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x602 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x10E0 JUMP JUMPDEST PUSH2 0x61A PUSH2 0x10F2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x22E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x64C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x666 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x678 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x699 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x6E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x6FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x71B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x76A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x77C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x79D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x1104 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x7E3 PUSH2 0x1211 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x7FF PUSH2 0x1216 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 DUP2 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x83B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x823 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x339 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x865 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x1278 JUMP JUMPDEST PUSH2 0x22E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x893 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1295 JUMP JUMPDEST PUSH2 0x339 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1341 JUMP JUMPDEST PUSH2 0x22E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1353 JUMP JUMPDEST PUSH2 0x339 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x905 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x146E JUMP JUMPDEST PUSH2 0x339 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x933 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x148B JUMP JUMPDEST PUSH2 0x22E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x959 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x149D JUMP JUMPDEST PUSH2 0x22E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x985 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x14F4 JUMP JUMPDEST PUSH2 0x22E PUSH2 0x15AC JUMP JUMPDEST PUSH2 0x22E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x16B7 JUMP JUMPDEST PUSH2 0x339 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x171E JUMP JUMPDEST PUSH2 0x2E9 PUSH2 0x1730 JUMP JUMPDEST PUSH2 0x2E9 PUSH2 0x173F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND ISZERO PUSH2 0xA3B JUMPI PUSH2 0xA31 DUP3 PUSH2 0x174E JUMP JUMPDEST PUSH2 0xA3B DUP3 DUP3 PUSH2 0x19E4 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xA6F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP PUSH2 0xA9C DUP2 DUP4 PUSH1 0x1 DUP1 PUSH2 0xC28 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xB0F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6F6E6C792061646D696E2063616E206772616E7420636F6D7000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xB1B DUP4 DUP4 PUSH2 0x1BC2 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0xB70 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x696E73756666696369656E7420636F6D7020666F72206772616E740000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP2 MLOAD PUSH32 0x98B2F82A3A07F223A0BE64B3D0F47711C64DCCD1FEAFB94AA28156B38CD9695C SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP POP POP JUMP JUMPDEST NUMBER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND ISZERO PUSH2 0xA9C JUMPI PUSH2 0xBED DUP4 PUSH2 0x174E JUMP JUMPDEST PUSH2 0xBF7 DUP4 DUP4 PUSH2 0x19E4 JUMP JUMPDEST PUSH2 0xA9C DUP4 DUP3 PUSH2 0x19E4 JUMP JUMPDEST PUSH1 0x4 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0xC0E JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP2 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0xDBC JUMPI PUSH1 0x0 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xC42 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP DUP4 ISZERO ISZERO PUSH1 0x1 ISZERO ISZERO EQ DUP1 ISZERO PUSH2 0xC80 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0xD40 JUMPI PUSH2 0xC8D PUSH2 0x2CCF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xAA5AF0FD 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 0xCD1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCE5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xCFB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 MSTORE SWAP1 POP PUSH2 0xD0B DUP3 DUP3 PUSH2 0x1CE2 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP8 MLOAD DUP2 LT ISZERO PUSH2 0xD3D JUMPI PUSH2 0xD35 DUP4 DUP10 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xD27 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP5 PUSH2 0x1F83 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0xD0E JUMP JUMPDEST POP POP JUMPDEST PUSH1 0x1 DUP4 ISZERO ISZERO EQ DUP1 ISZERO PUSH2 0xD72 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0xDB3 JUMPI PUSH2 0xD80 DUP2 PUSH2 0x174E JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP7 MLOAD DUP2 LT ISZERO PUSH2 0xDB1 JUMPI PUSH2 0xDA9 DUP3 DUP9 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xD9C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x19E4 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0xD83 JUMP JUMPDEST POP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0xC2B JUMP JUMPDEST POP PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0xE5A JUMPI PUSH2 0xE1E DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xDD8 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xB PUSH1 0x0 DUP9 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0xDF0 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x1BC2 JUMP JUMPDEST PUSH1 0xB PUSH1 0x0 DUP8 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xE2E JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 MSTORE DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SSTORE PUSH1 0x1 ADD PUSH2 0xDC0 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xEAE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2D78 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xEB7 DUP3 PUSH2 0xFF2 JUMP JUMPDEST DUP1 PUSH2 0xEDA JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE PUSH2 0xEFC JUMP JUMPDEST PUSH2 0xEE2 PUSH2 0xBB9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP5 SWAP1 SSTORE DUP2 MLOAD DUP5 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x386537FA92EDC3319AF95F1F904DCF1900021E4F3F4E08169A577A09076E66B3 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xFAC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2D78 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xA3B DUP3 DUP3 PUSH2 0x2139 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP2 AND SWAP1 PUSH1 0x1 PUSH1 0xE0 SHL SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP1 PUSH2 0x1014 PUSH2 0xBB9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP SWAP1 PUSH2 0x103C SWAP1 DUP4 SWAP1 PUSH2 0x23CF JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 GT DUP1 ISZERO PUSH2 0x104E JUMPI POP PUSH1 0x0 DUP4 GT JUMPDEST ISZERO PUSH2 0x10B0 JUMPI PUSH1 0x0 PUSH2 0x105F DUP3 DUP6 PUSH2 0x2410 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP SWAP1 PUSH2 0x1086 SWAP1 DUP4 PUSH2 0x2452 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0xD SWAP1 MSTORE KECCAK256 DUP5 SWAP1 SSTORE POP POP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP2 AND SWAP1 PUSH1 0x1 PUSH1 0xE0 SHL SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP3 JUMP JUMPDEST PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH11 0xC097CE7BC90715B34B9F1 PUSH1 0x24 SHL DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1151 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2D78 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 MLOAD DUP3 MLOAD DUP2 EQ DUP1 ISZERO PUSH2 0x1163 JUMPI POP DUP2 MLOAD DUP2 EQ JUMPDEST PUSH2 0x119E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x30 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2D98 PUSH1 0x30 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xE5A JUMPI PUSH2 0x11D9 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x11B8 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x11CC JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x2488 JUMP JUMPDEST PUSH2 0x1209 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x11E8 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x11FC JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x2139 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x11A1 JUMP JUMPDEST PUSH1 0x1 DUP2 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x126E JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1250 JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x12DE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2F DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2CE3 PUSH1 0x2F SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 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 SWAP1 SWAP4 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP2 SWAP1 SWAP3 AND DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP2 MLOAD PUSH32 0xCA4F2F25D0898EDD99413412FB94012F9E54EC8142F9B093E7720646A95B16A9 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x13B2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F6E6C792061646D696E2063616E20696E697469616C697A652E000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x1407 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x20B63932B0B23C9034B734BA34B0B634BD32B217 PUSH1 0x61 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x144C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x33 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2D45 PUSH1 0x33 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x14EA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2D78 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xA3B DUP3 DUP3 PUSH2 0x2488 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND ISZERO PUSH2 0xA3B JUMPI PUSH2 0x1523 PUSH2 0x2CCF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xAA5AF0FD 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 0x1567 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x157B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1591 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 MSTORE SWAP1 POP PUSH2 0x15A1 DUP4 DUP3 PUSH2 0x1CE2 JUMP JUMPDEST PUSH2 0xA9C DUP4 DUP4 DUP4 PUSH2 0x1F83 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ DUP1 ISZERO PUSH2 0x15C5 JUMPI POP CALLER ISZERO ISZERO JUMPDEST PUSH2 0x1600 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x33 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2D12 PUSH1 0x33 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP1 DUP7 AND DUP3 OR SWAP7 DUP8 SWAP1 SSTORE SWAP1 SWAP3 AND SWAP1 SWAP3 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP4 DUP4 AND DUP1 DUP6 MSTORE SWAP5 SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE DUP2 MLOAD SWAP1 SWAP3 PUSH32 0xF9FFABCA9C8276E99321725BCB43FB076A6C66A54B7F21C4E8146D8519B417DC SWAP3 SWAP1 DUP3 SWAP1 SUB ADD SWAP1 LOG1 PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND DUP3 MSTORE SWAP1 SWAP3 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD PUSH32 0xCA4F2F25D0898EDD99413412FB94012F9E54EC8142F9B093E7720646A95B16A9 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH2 0x171B DUP2 PUSH1 0x4 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x1711 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x16F3 JUMPI JUMPDEST POP POP POP POP POP PUSH2 0xA3F JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x5 SWAP1 SWAP3 MSTORE DUP3 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x177B PUSH2 0xBB9 JUMP JUMPDEST DUP4 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x179B SWAP1 DUP4 SWAP1 PUSH1 0x1 PUSH1 0xE0 SHL SWAP1 DIV PUSH4 0xFFFFFFFF AND PUSH2 0x23CF JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 GT DUP1 ISZERO PUSH2 0x17AD JUMPI POP PUSH1 0x0 DUP4 GT JUMPDEST ISZERO PUSH2 0x1973 JUMPI PUSH1 0x0 DUP6 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 0x17ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1801 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1817 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x1827 DUP4 DUP7 PUSH2 0x2410 JUMP JUMPDEST SWAP1 POP PUSH2 0x1831 PUSH2 0x2CCF JUMP JUMPDEST PUSH1 0x0 DUP4 GT PUSH2 0x184E JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x1858 JUMP JUMPDEST PUSH2 0x1858 DUP3 DUP5 PUSH2 0x2676 JUMP JUMPDEST SWAP1 POP PUSH2 0x1862 PUSH2 0x2CCF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE DUP9 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND DUP2 MSTORE PUSH2 0x1884 SWAP1 DUP4 PUSH2 0x26B3 JUMP JUMPDEST SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x18D4 DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x6E657720696E6465782065786365656473203232342062697473000000000000 DUP2 MSTORE POP PUSH2 0x26D8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x190F DUP9 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1C DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2DC8 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 MSTORE POP PUSH2 0x2772 JUMP JUMPDEST PUSH4 0xFFFFFFFF SWAP1 DUP2 AND SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP4 MLOAD DUP2 SLOAD SWAP5 SWAP1 SWAP3 ADD MLOAD SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0xE0 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB SWAP2 DUP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP PUSH2 0xE5A SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 GT DUP1 ISZERO PUSH2 0x198C JUMPI POP DUP4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0xE5A JUMPI PUSH2 0x19BE DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1C DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2DC8 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 MSTORE POP PUSH2 0x2772 JUMP JUMPDEST DUP5 SLOAD PUSH4 0xFFFFFFFF SWAP2 SWAP1 SWAP2 AND PUSH1 0x1 PUSH1 0xE0 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB SWAP1 SWAP2 AND OR DUP5 SSTORE POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x1A04 PUSH2 0x2CCF JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND DUP2 MSTORE PUSH2 0x1A25 PUSH2 0x2CCF JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 DUP4 MSTORE DUP5 DUP2 KECCAK256 SWAP2 DUP9 AND DUP1 DUP3 MSTORE DUP3 DUP5 MSTORE SWAP5 DUP2 KECCAK256 DUP1 SLOAD DUP6 MSTORE DUP7 MLOAD SWAP6 SWAP1 SWAP2 MSTORE SWAP2 MSTORE SWAP2 SWAP1 SWAP2 SSTORE DUP1 MLOAD ISZERO DUP1 ISZERO PUSH2 0x1A73 JUMPI POP DUP2 MLOAD ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x1A8A JUMPI PUSH11 0xC097CE7BC90715B34B9F1 PUSH1 0x24 SHL DUP2 MSTORE JUMPDEST PUSH2 0x1A92 PUSH2 0x2CCF JUMP JUMPDEST PUSH2 0x1A9C DUP4 DUP4 PUSH2 0x27C7 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP8 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1AF6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1B0A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1B20 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x1B30 DUP3 DUP5 PUSH2 0x27EC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP SWAP1 PUSH2 0x1B57 SWAP1 DUP4 PUSH2 0x2452 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP11 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP11 MLOAD DUP3 MLOAD DUP9 DUP2 MSTORE SWAP2 DUP3 ADD MSTORE DUP2 MLOAD SWAP5 SWAP6 POP SWAP2 SWAP4 SWAP3 DUP14 AND SWAP3 PUSH32 0x2CAECD17D02F56FA897705DCC740DA2D237C373F70686F4E0D9BD3BF0400EA7A SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 DUP4 SWAP2 DUP4 SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1C11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1C25 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1C3B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP4 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1C4E JUMPI POP DUP1 DUP5 GT ISZERO JUMPDEST ISZERO PUSH2 0x1CD6 JUMPI DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA9059CBB DUP7 DUP7 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1CB3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1CC7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 SWAP3 POP POP POP PUSH2 0x1CDC JUMP JUMPDEST DUP4 SWAP3 POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x6 SWAP1 SWAP3 MSTORE DUP3 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x1D0F PUSH2 0xBB9 JUMP JUMPDEST DUP4 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x1D2F SWAP1 DUP4 SWAP1 PUSH1 0x1 PUSH1 0xE0 SHL SWAP1 DIV PUSH4 0xFFFFFFFF AND PUSH2 0x23CF JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 GT DUP1 ISZERO PUSH2 0x1D41 JUMPI POP PUSH1 0x0 DUP4 GT JUMPDEST ISZERO PUSH2 0x1F10 JUMPI PUSH1 0x0 PUSH2 0x1DB6 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x47BD3718 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 0x1D84 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1D98 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1DAE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP8 PUSH2 0x281A JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1DC4 DUP4 DUP7 PUSH2 0x2410 JUMP JUMPDEST SWAP1 POP PUSH2 0x1DCE PUSH2 0x2CCF JUMP JUMPDEST PUSH1 0x0 DUP4 GT PUSH2 0x1DEB JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x1DF5 JUMP JUMPDEST PUSH2 0x1DF5 DUP3 DUP5 PUSH2 0x2676 JUMP JUMPDEST SWAP1 POP PUSH2 0x1DFF PUSH2 0x2CCF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE DUP9 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND DUP2 MSTORE PUSH2 0x1E21 SWAP1 DUP4 PUSH2 0x26B3 JUMP JUMPDEST SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x1E71 DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x6E657720696E6465782065786365656473203232342062697473000000000000 DUP2 MSTORE POP PUSH2 0x26D8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1EAC DUP9 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1C DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2DC8 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 MSTORE POP PUSH2 0x2772 JUMP JUMPDEST PUSH4 0xFFFFFFFF SWAP1 DUP2 AND SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP4 MLOAD DUP2 SLOAD SWAP5 SWAP1 SWAP3 ADD MLOAD SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0xE0 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB SWAP2 DUP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP PUSH2 0x1F7B SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 GT DUP1 ISZERO PUSH2 0x1F29 JUMPI POP DUP4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x1F7B JUMPI PUSH2 0x1F5B DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1C DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2DC8 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 MSTORE POP PUSH2 0x2772 JUMP JUMPDEST DUP5 SLOAD PUSH4 0xFFFFFFFF SWAP2 SWAP1 SWAP2 AND PUSH1 0x1 PUSH1 0xE0 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB SWAP1 SWAP2 AND OR DUP5 SSTORE JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x1FA3 PUSH2 0x2CCF JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND DUP2 MSTORE PUSH2 0x1FC4 PUSH2 0x2CCF JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA DUP4 MSTORE DUP5 DUP2 KECCAK256 SWAP2 DUP10 AND DUP1 DUP3 MSTORE DUP3 DUP5 MSTORE SWAP5 DUP2 KECCAK256 DUP1 SLOAD DUP6 MSTORE DUP7 MLOAD SWAP6 SWAP1 SWAP2 MSTORE SWAP2 MSTORE SWAP2 SWAP1 SWAP2 SSTORE DUP1 MLOAD ISZERO DUP1 ISZERO PUSH2 0x2012 JUMPI POP DUP2 MLOAD ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x2029 JUMPI PUSH11 0xC097CE7BC90715B34B9F1 PUSH1 0x24 SHL DUP2 MSTORE JUMPDEST PUSH2 0x2031 PUSH2 0x2CCF JUMP JUMPDEST PUSH2 0x203B DUP4 DUP4 PUSH2 0x27C7 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2098 DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x95DD9193 DUP10 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1D84 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x20A6 DUP3 DUP5 PUSH2 0x27EC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP SWAP1 PUSH2 0x20CD SWAP1 DUP4 PUSH2 0x2452 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP11 MLOAD DUP3 MLOAD DUP9 DUP2 MSTORE SWAP2 DUP3 ADD MSTORE DUP2 MLOAD SWAP5 SWAP6 POP SWAP2 SWAP4 SWAP3 DUP15 AND SWAP3 PUSH32 0x1FC3ECC087D8D2D15E23D0032AF5A47059C3892D003D8E139FDCB6BB327C99A6 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x21E4 JUMPI PUSH2 0x2160 PUSH2 0x2CCF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xAA5AF0FD 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 0x21A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x21B8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x21CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 MSTORE SWAP1 POP PUSH2 0x21DE DUP5 DUP3 PUSH2 0x1CE2 JUMP JUMPDEST POP PUSH2 0x2373 JUMP JUMPDEST DUP2 ISZERO PUSH2 0x2373 JUMPI PUSH2 0x21F3 DUP4 PUSH2 0x2838 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH2 0x232D JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH11 0xC097CE7BC90715B34B9F1 PUSH1 0x24 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2275 PUSH2 0x224C PUSH2 0xBB9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1C DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2DC8 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 MSTORE POP PUSH2 0x2772 JUMP JUMPDEST PUSH4 0xFFFFFFFF SWAP1 DUP2 AND SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 MLOAD DUP2 SLOAD SWAP7 DUP5 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP8 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB SWAP2 DUP3 AND OR DUP2 AND PUSH1 0x1 PUSH1 0xE0 SHL SWAP8 SWAP1 SWAP7 AND SWAP7 SWAP1 SWAP7 MUL SWAP5 SWAP1 SWAP5 OR SWAP1 SWAP4 SSTORE PUSH1 0x7 SWAP1 MSTORE KECCAK256 SLOAD AND PUSH2 0x2328 JUMPI PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE PUSH1 0x0 SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x8A35ACFBC15FF81A39AE7D344FD709F28E8600B4AA8C65C6B64BFE7FE36BD19B ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND OR SWAP1 SSTORE JUMPDEST PUSH2 0x2373 JUMP JUMPDEST PUSH2 0x2338 PUSH2 0x224C PUSH2 0xBB9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH4 0xFFFFFFFF SWAP3 SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0xE0 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST DUP2 DUP2 EQ PUSH2 0xA9C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x20AF8E791CC98F74B2D7A391C80980CA8E5AEBF3D4060BF581997B6ACAE2E537 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2409 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x15 DUP2 MSTORE PUSH1 0x20 ADD PUSH21 0x7375627472616374696F6E20756E646572666C6F77 PUSH1 0x58 SHL DUP2 MSTORE POP PUSH2 0x2B11 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2409 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x17 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x6D756C7469706C69636174696F6E206F766572666C6F77000000000000000000 DUP2 MSTORE POP PUSH2 0x2B6B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2409 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x11 DUP2 MSTORE PUSH1 0x20 ADD PUSH17 0x6164646974696F6E206F766572666C6F77 PUSH1 0x78 SHL DUP2 MSTORE POP PUSH2 0x2BEA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x24B5 JUMPI PUSH2 0x24B0 DUP4 PUSH2 0x174E JUMP JUMPDEST PUSH2 0x261A JUMP JUMPDEST DUP2 ISZERO PUSH2 0x261A JUMPI PUSH2 0x24C4 DUP4 PUSH2 0x2838 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH2 0x25D4 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH11 0xC097CE7BC90715B34B9F1 PUSH1 0x24 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x251D PUSH2 0x224C PUSH2 0xBB9 JUMP JUMPDEST PUSH4 0xFFFFFFFF SWAP1 DUP2 AND SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 MLOAD DUP2 SLOAD SWAP7 DUP5 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP8 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB SWAP2 DUP3 AND OR DUP2 AND PUSH1 0x1 PUSH1 0xE0 SHL SWAP8 SWAP1 SWAP7 AND SWAP7 SWAP1 SWAP7 MUL SWAP5 SWAP1 SWAP5 OR SWAP1 SWAP4 SSTORE PUSH1 0x8 SWAP1 MSTORE KECCAK256 SLOAD AND PUSH2 0x24B0 JUMPI PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE PUSH1 0x0 SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x8A35ACFBC15FF81A39AE7D344FD709F28E8600B4AA8C65C6B64BFE7FE36BD19B ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND OR SWAP1 SSTORE PUSH2 0x261A JUMP JUMPDEST PUSH2 0x25DF PUSH2 0x224C PUSH2 0xBB9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH4 0xFFFFFFFF SWAP3 SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0xE0 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST DUP2 DUP2 EQ PUSH2 0xA9C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0xDEAFCCD0C0B768B2529F7DCBBE58E155D6023059150B7490ED4535CC3744B92D SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH2 0x267E PUSH2 0x2CCF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x26AA PUSH2 0x26A4 DUP7 PUSH11 0xC097CE7BC90715B34B9F1 PUSH1 0x24 SHL PUSH2 0x2410 JUMP JUMPDEST DUP6 PUSH2 0x2C3F JUMP JUMPDEST SWAP1 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x26BB PUSH2 0x2CCF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x26AA DUP6 PUSH1 0x0 ADD MLOAD DUP6 PUSH1 0x0 ADD MLOAD PUSH2 0x2452 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0xE0 SHL DUP5 LT PUSH2 0x276A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x272F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2717 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x275C JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x20 SHL DUP5 LT PUSH2 0x276A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x272F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2717 JUMP JUMPDEST PUSH2 0x27CF PUSH2 0x2CCF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x26AA DUP6 PUSH1 0x0 ADD MLOAD DUP6 PUSH1 0x0 ADD MLOAD PUSH2 0x23CF JUMP JUMPDEST PUSH1 0x0 PUSH11 0xC097CE7BC90715B34B9F1 PUSH1 0x24 SHL PUSH2 0x280B DUP5 DUP5 PUSH1 0x0 ADD MLOAD PUSH2 0x2410 JUMP JUMPDEST DUP2 PUSH2 0x2812 JUMPI INVALID JUMPDEST DIV SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2409 PUSH2 0x2831 DUP5 PUSH8 0xDE0B6B3A7640000 PUSH2 0x2410 JUMP JUMPDEST DUP4 MLOAD PUSH2 0x2C3F JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5FE3B567 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 0x2873 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2887 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x289D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x8E8F294B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP3 MLOAD SWAP4 SWAP5 POP PUSH1 0x0 SWAP4 SWAP1 DUP6 AND SWAP3 PUSH4 0x8E8F294B SWAP3 PUSH1 0x24 DUP1 DUP3 ADD SWAP4 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x28EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x28FE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2914 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x1 DUP2 ISZERO ISZERO EQ PUSH2 0x296F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x636F6D70206D61726B6574206973206E6F74206C697374656400000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SWAP1 POP PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x3605B51B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x29AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x29C3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x29EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH1 0x1 PUSH1 0x20 SHL DUP3 GT ISZERO PUSH2 0x2A0B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x2A20 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x20 DUP3 MUL DUP4 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP3 GT OR ISZERO PUSH2 0x2A3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 DUP3 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2A69 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2A51 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD PUSH1 0x40 MSTORE POP POP POP SWAP1 POP PUSH1 0x0 DUP1 SWAP1 POP JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x2AC1 JUMPI ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2A9D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x2AB9 JUMPI PUSH1 0x1 SWAP3 POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x2A7E JUMP JUMPDEST POP PUSH1 0x1 DUP3 ISZERO ISZERO EQ PUSH2 0xE5A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x191A5CDD1C9A589D5D1BDC881B9BDD081859191959 PUSH1 0x5A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x2B63 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x272F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2717 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP4 ISZERO DUP1 PUSH2 0x2B78 JUMPI POP DUP3 ISZERO JUMPDEST ISZERO PUSH2 0x2B85 JUMPI POP PUSH1 0x0 PUSH2 0x2409 JUMP JUMPDEST DUP4 DUP4 MUL DUP4 DUP6 DUP3 DUP2 PUSH2 0x2B92 JUMPI INVALID JUMPDEST DIV EQ DUP4 SWAP1 PUSH2 0x2BE1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x272F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2717 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 ADD DUP3 DUP6 DUP3 LT ISZERO PUSH2 0x2BE1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x272F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2717 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2409 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xE DUP2 MSTORE PUSH1 0x20 ADD PUSH14 0x646976696465206279207A65726F PUSH1 0x90 SHL DUP2 MSTORE POP PUSH1 0x0 DUP2 DUP4 PUSH2 0x2CBC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x272F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2717 JUMP JUMPDEST POP DUP3 DUP5 DUP2 PUSH2 0x2CC6 JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP INVALID MSTORE PUSH6 0x776172647344 PUSH10 0x737472696275746F723A 0x5F PUSH20 0x657450656E64696E6741646D696E3A2061646D69 PUSH15 0x206F6E6C7952657761726473446973 PUSH21 0x72696275746F723A5F61636365707441646D696E3A KECCAK256 PUSH17 0x656E64696E672061646D696E206F6E6C79 NUMBER PUSH2 0x6E6E PUSH16 0x7420696E697469616C697A6520726577 PUSH2 0x7264 KECCAK256 PUSH21 0x6F6B656E20746F20746865207A65726F2061646472 PUSH6 0x73732E6F6E6C PUSH26 0x2061646D696E2063616E2073657420636F6D7020737065656400 STOP STOP MSTORE PUSH6 0x776172647344 PUSH10 0x737472696275746F723A GASPRICE 0x5F PUSH20 0x6574436F6D7053706565647320696E76616C6964 KECCAK256 PUSH10 0x6E707574626C6F636B20 PUSH15 0x756D62657220657863656564732033 ORIGIN KECCAK256 PUSH3 0x697473 STOP STOP STOP STOP LOG2 PUSH6 0x627A7A723158 KECCAK256 0x4D JUMPI SLOAD PUSH10 0x73860639294B5CB943B2 BYTE DUP14 0xEE 0xBC 0xC7 PUSH23 0xFA3AB4A85EE71BFC417C3CE964736F6C63430005110032 ","sourceMap":"274:21997:34:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;274:21997:34;;;;;;;"},"deployedBytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106101fb5760003560e01c8063a7f0e2311161011a578063ca0af043116100ad578063e9c714f21161007c578063e9c714f21461099d578063ef5cfb8c146109a5578063f4a433c0146109cb578063f7c618c1146109f1578063f851a440146109f9576101fb565b8063ca0af043146108ef578063cc7ebdc41461091d578063e3af317b14610943578063e6e162e81461096f576101fb565b8063b21be7fd116100e9578063b21be7fd1461084f578063b71d1a0c1461087d578063bea6b8b8146108a3578063c4d66de8146108c9576101fb565b8063a7f0e23114610612578063a8b4394814610636578063abc6d72d146107db578063b0772d0b146107f7576101fb565b8063598ee1cb116101925780636b79c38d116101615780636b79c38d14610552578063741b2525146105a05780638c57804e146105c6578063986ab838146105ec576101fb565b8063598ee1cb146104cc5780635c60da1b146104f857806365999470146105005780636aa875b51461052c576101fb565b806342cbb15c116101ce57806342cbb15c146103315780634e081c951461034b57806352d84d1e1461038357806354eb76fa146103a0576101fb565b80631c9161e0146102005780632026ffa31461023057806326782247146102e157806327efe3cb14610305575b600080fd5b61022e6004803603604081101561021657600080fd5b506001600160a01b0381358116916020013516610a01565b005b61022e6004803603604081101561024657600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561027057600080fd5b82018360208201111561028257600080fd5b803590602001918460208302840111600160201b831117156102a357600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610a3f945050505050565b6102e9610aa1565b604080516001600160a01b039092168252519081900360200190f35b61022e6004803603604081101561031b57600080fd5b506001600160a01b038135169060200135610ab0565b610339610bb9565b60408051918252519081900360200190f35b61022e6004803603606081101561036157600080fd5b506001600160a01b038135811691602081013582169160409091013516610bbd565b6102e96004803603602081101561039957600080fd5b5035610c01565b61022e600480360360808110156103b657600080fd5b810190602081018135600160201b8111156103d057600080fd5b8201836020820111156103e257600080fd5b803590602001918460208302840111600160201b8311171561040357600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561045257600080fd5b82018360208201111561046457600080fd5b803590602001918460208302840111600160201b8311171561048557600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550505050803515159150602001351515610c28565b61022e600480360360408110156104e257600080fd5b506001600160a01b038135169060200135610e61565b6102e9610f50565b61022e6004803603604081101561051657600080fd5b506001600160a01b038135169060200135610f5f565b6103396004803603602081101561054257600080fd5b50356001600160a01b0316610fb6565b6105786004803603602081101561056857600080fd5b50356001600160a01b0316610fc8565b604080516001600160e01b03909316835263ffffffff90911660208301528051918290030190f35b61022e600480360360208110156105b657600080fd5b50356001600160a01b0316610ff2565b610578600480360360208110156105dc57600080fd5b50356001600160a01b03166110b6565b6103396004803603602081101561060257600080fd5b50356001600160a01b03166110e0565b61061a6110f2565b604080516001600160e01b039092168252519081900360200190f35b61022e6004803603606081101561064c57600080fd5b810190602081018135600160201b81111561066657600080fd5b82018360208201111561067857600080fd5b803590602001918460208302840111600160201b8311171561069957600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156106e857600080fd5b8201836020820111156106fa57600080fd5b803590602001918460208302840111600160201b8311171561071b57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561076a57600080fd5b82018360208201111561077c57600080fd5b803590602001918460208302840111600160201b8311171561079d57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611104945050505050565b6107e3611211565b604080519115158252519081900360200190f35b6107ff611216565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561083b578181015183820152602001610823565b505050509050019250505060405180910390f35b6103396004803603604081101561086557600080fd5b506001600160a01b0381358116916020013516611278565b61022e6004803603602081101561089357600080fd5b50356001600160a01b0316611295565b610339600480360360208110156108b957600080fd5b50356001600160a01b0316611341565b61022e600480360360208110156108df57600080fd5b50356001600160a01b0316611353565b6103396004803603604081101561090557600080fd5b506001600160a01b038135811691602001351661146e565b6103396004803603602081101561093357600080fd5b50356001600160a01b031661148b565b61022e6004803603604081101561095957600080fd5b506001600160a01b03813516906020013561149d565b61022e6004803603604081101561098557600080fd5b506001600160a01b03813581169160200135166114f4565b61022e6115ac565b61022e600480360360208110156109bb57600080fd5b50356001600160a01b03166116b7565b610339600480360360208110156109e157600080fd5b50356001600160a01b031661171e565b6102e9611730565b6102e961173f565b6001600160a01b0382166000908152600760205260409020546001600160e01b031615610a3b57610a318261174e565b610a3b82826119e4565b5050565b604080516001808252818301909252606091602080830190803883390190505090508281600081518110610a6f57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050610a9c8183600180610c28565b505050565b6001546001600160a01b031681565b6000546001600160a01b03163314610b0f576040805162461bcd60e51b815260206004820152601960248201527f6f6e6c792061646d696e2063616e206772616e7420636f6d7000000000000000604482015290519081900360640190fd5b6000610b1b8383611bc2565b90508015610b70576040805162461bcd60e51b815260206004820152601b60248201527f696e73756666696369656e7420636f6d7020666f72206772616e740000000000604482015290519081900360640190fd5b604080516001600160a01b03851681526020810184905281517f98b2f82a3a07f223a0be64b3d0f47711c64dccd1feafb94aa28156b38cd9695c929181900390910190a1505050565b4390565b6001600160a01b0383166000908152600760205260409020546001600160e01b031615610a9c57610bed8361174e565b610bf783836119e4565b610a9c83826119e4565b60048181548110610c0e57fe5b6000918252602090912001546001600160a01b0316905081565b60005b8351811015610dbc576000848281518110610c4257fe5b6020026020010151905083151560011515148015610c8057506001600160a01b0381166000908152600860205260409020546001600160e01b031615155b15610d4057610c8d612ccf565b6040518060200160405280836001600160a01b031663aa5af0fd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610cd157600080fd5b505afa158015610ce5573d6000803e3d6000fd5b505050506040513d6020811015610cfb57600080fd5b505190529050610d0b8282611ce2565b60005b8751811015610d3d57610d3583898381518110610d2757fe5b602002602001015184611f83565b600101610d0e565b50505b6001831515148015610d7257506001600160a01b0381166000908152600760205260409020546001600160e01b031615155b15610db357610d808161174e565b60005b8651811015610db157610da982888381518110610d9c57fe5b60200260200101516119e4565b600101610d83565b505b50600101610c2b565b5060005b8451811015610e5a57610e1e858281518110610dd857fe5b6020026020010151600b6000888581518110610df057fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054611bc2565b600b6000878481518110610e2e57fe5b6020908102919091018101516001600160a01b0316825281019190915260400160002055600101610dc0565b5050505050565b6000546001600160a01b03163314610eae576040805162461bcd60e51b815260206004820152601d6024820152600080516020612d78833981519152604482015290519081900360640190fd5b610eb782610ff2565b80610eda576001600160a01b0382166000908152600d6020526040812055610efc565b610ee2610bb9565b6001600160a01b0383166000908152600d60205260409020555b6001600160a01b0382166000818152600c6020908152604091829020849055815184815291517f386537fa92edc3319af95f1f904dcf1900021e4f3f4e08169a577a09076e66b39281900390910190a25050565b6002546001600160a01b031681565b6000546001600160a01b03163314610fac576040805162461bcd60e51b815260206004820152601d6024820152600080516020612d78833981519152604482015290519081900360640190fd5b610a3b8282612139565b60056020526000908152604090205481565b6007602052600090815260409020546001600160e01b03811690600160e01b900463ffffffff1682565b6001600160a01b0381166000908152600c602052604081205490611014610bb9565b6001600160a01b0384166000908152600d60205260408120549192509061103c9083906123cf565b905060008111801561104e5750600083115b156110b057600061105f8285612410565b6001600160a01b0386166000908152600b6020526040812054919250906110869083612452565b6001600160a01b0387166000908152600b6020908152604080832093909355600d90522084905550505b50505050565b6008602052600090815260409020546001600160e01b03811690600160e01b900463ffffffff1682565b600c6020526000908152604090205481565b6a0c097ce7bc90715b34b9f160241b81565b6000546001600160a01b03163314611151576040805162461bcd60e51b815260206004820152601d6024820152600080516020612d78833981519152604482015290519081900360640190fd5b82518251811480156111635750815181145b61119e5760405162461bcd60e51b8152600401808060200182810382526030815260200180612d986030913960400191505060405180910390fd5b60005b81811015610e5a576111d98582815181106111b857fe5b60200260200101518583815181106111cc57fe5b6020026020010151612488565b6112098582815181106111e857fe5b60200260200101518483815181106111fc57fe5b6020026020010151612139565b6001016111a1565b600181565b6060600480548060200260200160405190810160405280929190818152602001828054801561126e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611250575b5050505050905090565b600960209081526000928352604080842090915290825290205481565b6000546001600160a01b031633146112de5760405162461bcd60e51b815260040180806020018281038252602f815260200180612ce3602f913960400191505060405180910390fd5b600180546001600160a01b038381166001600160a01b0319831681179093556040805191909216808252602082019390935281517fca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9929181900390910190a15050565b600d6020526000908152604090205481565b6000546001600160a01b031633146113b2576040805162461bcd60e51b815260206004820152601a60248201527f4f6e6c792061646d696e2063616e20696e697469616c697a652e000000000000604482015290519081900360640190fd5b6003546001600160a01b031615611407576040805162461bcd60e51b815260206004820152601460248201527320b63932b0b23c9034b734ba34b0b634bd32b21760611b604482015290519081900360640190fd5b6001600160a01b03811661144c5760405162461bcd60e51b8152600401808060200182810382526033815260200180612d456033913960400191505060405180910390fd5b600380546001600160a01b0319166001600160a01b0392909216919091179055565b600a60209081526000928352604080842090915290825290205481565b600b6020526000908152604090205481565b6000546001600160a01b031633146114ea576040805162461bcd60e51b815260206004820152601d6024820152600080516020612d78833981519152604482015290519081900360640190fd5b610a3b8282612488565b6001600160a01b0382166000908152600860205260409020546001600160e01b031615610a3b57611523612ccf565b6040518060200160405280846001600160a01b031663aa5af0fd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561156757600080fd5b505afa15801561157b573d6000803e3d6000fd5b505050506040513d602081101561159157600080fd5b5051905290506115a18382611ce2565b610a9c838383611f83565b6001546001600160a01b0316331480156115c557503315155b6116005760405162461bcd60e51b8152600401808060200182810382526033815260200180612d126033913960400191505060405180910390fd5b60008054600180546001600160a01b038082166001600160a01b031980861682179687905590921690925560408051938316808552949092166020840152815190927ff9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc92908290030190a1600154604080516001600160a01b038085168252909216602083015280517fca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a99281900390910190a15050565b61171b81600480548060200260200160405190810160405280929190818152602001828054801561171157602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116116f3575b5050505050610a3f565b50565b60066020526000908152604090205481565b6003546001600160a01b031681565b6000546001600160a01b031681565b6001600160a01b03811660009081526007602090815260408083206005909252822054909161177b610bb9565b835490915060009061179b908390600160e01b900463ffffffff166123cf565b90506000811180156117ad5750600083115b15611973576000856001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156117ed57600080fd5b505afa158015611801573d6000803e3d6000fd5b505050506040513d602081101561181757600080fd5b5051905060006118278386612410565b9050611831612ccf565b6000831161184e5760405180602001604052806000815250611858565b6118588284612676565b9050611862612ccf565b604080516020810190915288546001600160e01b0316815261188490836126b3565b905060405180604001604052806118d483600001516040518060400160405280601a81526020017f6e657720696e64657820657863656564732032323420626974730000000000008152506126d8565b6001600160e01b0316815260200161190f886040518060400160405280601c8152602001600080516020612dc8833981519152815250612772565b63ffffffff9081169091526001600160a01b038b166000908152600760209081526040909120835181549490920151909216600160e01b026001600160e01b039182166001600160e01b0319909416939093171691909117905550610e5a92505050565b60008111801561198c575083546001600160e01b031615155b15610e5a576119be826040518060400160405280601c8152602001600080516020612dc8833981519152815250612772565b845463ffffffff91909116600160e01b026001600160e01b039091161784555050505050565b6001600160a01b0382166000908152600760205260409020611a04612ccf565b50604080516020810190915281546001600160e01b03168152611a25612ccf565b5060408051602080820183526001600160a01b03808816600090815260098352848120918816808252828452948120805485528651959091529152919091558051158015611a735750815115155b15611a8a576a0c097ce7bc90715b34b9f160241b81525b611a92612ccf565b611a9c83836127c7565b90506000866001600160a01b03166370a08231876040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015611af657600080fd5b505afa158015611b0a573d6000803e3d6000fd5b505050506040513d6020811015611b2057600080fd5b505190506000611b3082846127ec565b6001600160a01b0388166000908152600b602052604081205491925090611b579083612452565b6001600160a01b03808a166000818152600b60209081526040918290208590558a5182518881529182015281519495509193928d16927f2caecd17d02f56fa897705dcc740da2d237c373f70686f4e0d9bd3bf0400ea7a9281900390910190a3505050505050505050565b600354604080516370a0823160e01b815230600482015290516000926001600160a01b031691839183916370a08231916024808301926020929190829003018186803b158015611c1157600080fd5b505afa158015611c25573d6000803e3d6000fd5b505050506040513d6020811015611c3b57600080fd5b505190508315801590611c4e5750808411155b15611cd657816001600160a01b031663a9059cbb86866040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015611cb357600080fd5b505af1158015611cc7573d6000803e3d6000fd5b50505050600092505050611cdc565b83925050505b92915050565b6001600160a01b038216600090815260086020908152604080832060069092528220549091611d0f610bb9565b8354909150600090611d2f908390600160e01b900463ffffffff166123cf565b9050600081118015611d415750600083115b15611f10576000611db6876001600160a01b03166347bd37186040518163ffffffff1660e01b815260040160206040518083038186803b158015611d8457600080fd5b505afa158015611d98573d6000803e3d6000fd5b505050506040513d6020811015611dae57600080fd5b50518761281a565b90506000611dc48386612410565b9050611dce612ccf565b60008311611deb5760405180602001604052806000815250611df5565b611df58284612676565b9050611dff612ccf565b604080516020810190915288546001600160e01b03168152611e2190836126b3565b90506040518060400160405280611e7183600001516040518060400160405280601a81526020017f6e657720696e64657820657863656564732032323420626974730000000000008152506126d8565b6001600160e01b03168152602001611eac886040518060400160405280601c8152602001600080516020612dc8833981519152815250612772565b63ffffffff9081169091526001600160a01b038c166000908152600860209081526040909120835181549490920151909216600160e01b026001600160e01b039182166001600160e01b0319909416939093171691909117905550611f7b92505050565b600081118015611f29575083546001600160e01b031615155b15611f7b57611f5b826040518060400160405280601c8152602001600080516020612dc8833981519152815250612772565b845463ffffffff91909116600160e01b026001600160e01b039091161784555b505050505050565b6001600160a01b0383166000908152600860205260409020611fa3612ccf565b50604080516020810190915281546001600160e01b03168152611fc4612ccf565b5060408051602080820183526001600160a01b038089166000908152600a83528481209189168082528284529481208054855286519590915291529190915580511580156120125750815115155b15612029576a0c097ce7bc90715b34b9f160241b81525b612031612ccf565b61203b83836127c7565b90506000612098886001600160a01b03166395dd9193896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015611d8457600080fd5b905060006120a682846127ec565b6001600160a01b0389166000908152600b6020526040812054919250906120cd9083612452565b6001600160a01b03808b166000818152600b60209081526040918290208590558a5182518881529182015281519495509193928e16927f1fc3ecc087d8d2d15e23d0032af5a47059c3892d003d8e139fdcb6bb327c99a69281900390910190a350505050505050505050565b6001600160a01b03821660009081526006602052604090205480156121e457612160612ccf565b6040518060200160405280856001600160a01b031663aa5af0fd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156121a457600080fd5b505afa1580156121b8573d6000803e3d6000fd5b505050506040513d60208110156121ce57600080fd5b5051905290506121de8482611ce2565b50612373565b8115612373576121f383612838565b6001600160a01b0383166000908152600860205260409020546001600160e01b031661232d5760405180604001604052806a0c097ce7bc90715b34b9f160241b6001600160e01b0316815260200161227561224c610bb9565b6040518060400160405280601c8152602001600080516020612dc8833981519152815250612772565b63ffffffff9081169091526001600160a01b038516600090815260086020908152604080832085518154968401516001600160e01b03199097166001600160e01b03918216178116600160e01b9790961696909602949094179093556007905220541661232857600480546001810182556000919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b0319166001600160a01b0385161790555b612373565b61233861224c610bb9565b6001600160a01b0384166000908152600860205260409020805463ffffffff92909216600160e01b026001600160e01b039092169190911790555b818114610a9c576001600160a01b038316600081815260066020908152604091829020859055815185815291517f20af8e791cc98f74b2d7a391c80980ca8e5aebf3d4060bf581997b6acae2e5379281900390910190a2505050565b60006124098383604051806040016040528060158152602001747375627472616374696f6e20756e646572666c6f7760581b815250612b11565b9392505050565b600061240983836040518060400160405280601781526020017f6d756c7469706c69636174696f6e206f766572666c6f77000000000000000000815250612b6b565b60006124098383604051806040016040528060118152602001706164646974696f6e206f766572666c6f7760781b815250612bea565b6001600160a01b03821660009081526005602052604090205480156124b5576124b08361174e565b61261a565b811561261a576124c483612838565b6001600160a01b0383166000908152600760205260409020546001600160e01b03166125d45760405180604001604052806a0c097ce7bc90715b34b9f160241b6001600160e01b0316815260200161251d61224c610bb9565b63ffffffff9081169091526001600160a01b038516600090815260076020908152604080832085518154968401516001600160e01b03199097166001600160e01b03918216178116600160e01b979096169690960294909417909355600890522054166124b057600480546001810182556000919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b0319166001600160a01b03851617905561261a565b6125df61224c610bb9565b6001600160a01b0384166000908152600760205260409020805463ffffffff92909216600160e01b026001600160e01b039092169190911790555b818114610a9c576001600160a01b038316600081815260056020908152604091829020859055815185815291517fdeafccd0c0b768b2529f7dcbbe58e155d6023059150b7490ed4535cc3744b92d9281900390910190a2505050565b61267e612ccf565b60405180602001604052806126aa6126a4866a0c097ce7bc90715b34b9f160241b612410565b85612c3f565b90529392505050565b6126bb612ccf565b60405180602001604052806126aa85600001518560000151612452565b600081600160e01b841061276a5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561272f578181015183820152602001612717565b50505050905090810190601f16801561275c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b509192915050565b600081600160201b841061276a5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561272f578181015183820152602001612717565b6127cf612ccf565b60405180602001604052806126aa856000015185600001516123cf565b60006a0c097ce7bc90715b34b9f160241b61280b848460000151612410565b8161281257fe5b049392505050565b600061240961283184670de0b6b3a7640000612410565b8351612c3f565b6000816001600160a01b0316635fe3b5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561287357600080fd5b505afa158015612887573d6000803e3d6000fd5b505050506040513d602081101561289d57600080fd5b505160408051638e8f294b60e01b81526001600160a01b038581166004830152825193945060009390851692638e8f294b9260248082019391829003018186803b1580156128ea57600080fd5b505afa1580156128fe573d6000803e3d6000fd5b505050506040513d604081101561291457600080fd5b5051905060018115151461296f576040805162461bcd60e51b815260206004820152601960248201527f636f6d70206d61726b6574206973206e6f74206c697374656400000000000000604482015290519081900360640190fd5b60008090506060836001600160a01b0316633605b51b6040518163ffffffff1660e01b815260040160006040518083038186803b1580156129af57600080fd5b505afa1580156129c3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156129ec57600080fd5b8101908080516040519392919084600160201b821115612a0b57600080fd5b908301906020820185811115612a2057600080fd5b82518660208202830111600160201b82111715612a3c57600080fd5b82525081516020918201928201910280838360005b83811015612a69578181015183820152602001612a51565b50505050905001604052505050905060008090505b8151811015612ac157306001600160a01b0316828281518110612a9d57fe5b60200260200101516001600160a01b03161415612ab957600192505b600101612a7e565b50600182151514610e5a576040805162461bcd60e51b8152602060048201526015602482015274191a5cdd1c9a589d5d1bdc881b9bdd081859191959605a1b604482015290519081900360640190fd5b60008184841115612b635760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561272f578181015183820152602001612717565b505050900390565b6000831580612b78575082155b15612b8557506000612409565b83830283858281612b9257fe5b04148390612be15760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561272f578181015183820152602001612717565b50949350505050565b60008383018285821015612be15760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561272f578181015183820152602001612717565b600061240983836040518060400160405280600e81526020016d646976696465206279207a65726f60901b81525060008183612cbc5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561272f578181015183820152602001612717565b50828481612cc657fe5b04949350505050565b604051806020016040528060008152509056fe526577617264734469737472696275746f723a5f73657450656e64696e6741646d696e3a2061646d696e206f6e6c79526577617264734469737472696275746f723a5f61636365707441646d696e3a2070656e64696e672061646d696e206f6e6c7943616e6e6f7420696e697469616c697a652072657761726420746f6b656e20746f20746865207a65726f20616464726573732e6f6e6c792061646d696e2063616e2073657420636f6d70207370656564000000526577617264734469737472696275746f723a3a5f736574436f6d7053706565647320696e76616c696420696e707574626c6f636b206e756d6265722065786365656473203332206269747300000000a265627a7a723158204d57546973860639294b5cb943b21a8deebcc776fa3ab4a85ee71bfc417c3ce964736f6c63430005110032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1FB JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA7F0E231 GT PUSH2 0x11A JUMPI DUP1 PUSH4 0xCA0AF043 GT PUSH2 0xAD JUMPI DUP1 PUSH4 0xE9C714F2 GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xE9C714F2 EQ PUSH2 0x99D JUMPI DUP1 PUSH4 0xEF5CFB8C EQ PUSH2 0x9A5 JUMPI DUP1 PUSH4 0xF4A433C0 EQ PUSH2 0x9CB JUMPI DUP1 PUSH4 0xF7C618C1 EQ PUSH2 0x9F1 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x9F9 JUMPI PUSH2 0x1FB JUMP JUMPDEST DUP1 PUSH4 0xCA0AF043 EQ PUSH2 0x8EF JUMPI DUP1 PUSH4 0xCC7EBDC4 EQ PUSH2 0x91D JUMPI DUP1 PUSH4 0xE3AF317B EQ PUSH2 0x943 JUMPI DUP1 PUSH4 0xE6E162E8 EQ PUSH2 0x96F JUMPI PUSH2 0x1FB JUMP JUMPDEST DUP1 PUSH4 0xB21BE7FD GT PUSH2 0xE9 JUMPI DUP1 PUSH4 0xB21BE7FD EQ PUSH2 0x84F JUMPI DUP1 PUSH4 0xB71D1A0C EQ PUSH2 0x87D JUMPI DUP1 PUSH4 0xBEA6B8B8 EQ PUSH2 0x8A3 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x8C9 JUMPI PUSH2 0x1FB JUMP JUMPDEST DUP1 PUSH4 0xA7F0E231 EQ PUSH2 0x612 JUMPI DUP1 PUSH4 0xA8B43948 EQ PUSH2 0x636 JUMPI DUP1 PUSH4 0xABC6D72D EQ PUSH2 0x7DB JUMPI DUP1 PUSH4 0xB0772D0B EQ PUSH2 0x7F7 JUMPI PUSH2 0x1FB JUMP JUMPDEST DUP1 PUSH4 0x598EE1CB GT PUSH2 0x192 JUMPI DUP1 PUSH4 0x6B79C38D GT PUSH2 0x161 JUMPI DUP1 PUSH4 0x6B79C38D EQ PUSH2 0x552 JUMPI DUP1 PUSH4 0x741B2525 EQ PUSH2 0x5A0 JUMPI DUP1 PUSH4 0x8C57804E EQ PUSH2 0x5C6 JUMPI DUP1 PUSH4 0x986AB838 EQ PUSH2 0x5EC JUMPI PUSH2 0x1FB JUMP JUMPDEST DUP1 PUSH4 0x598EE1CB EQ PUSH2 0x4CC JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x4F8 JUMPI DUP1 PUSH4 0x65999470 EQ PUSH2 0x500 JUMPI DUP1 PUSH4 0x6AA875B5 EQ PUSH2 0x52C JUMPI PUSH2 0x1FB JUMP JUMPDEST DUP1 PUSH4 0x42CBB15C GT PUSH2 0x1CE JUMPI DUP1 PUSH4 0x42CBB15C EQ PUSH2 0x331 JUMPI DUP1 PUSH4 0x4E081C95 EQ PUSH2 0x34B JUMPI DUP1 PUSH4 0x52D84D1E EQ PUSH2 0x383 JUMPI DUP1 PUSH4 0x54EB76FA EQ PUSH2 0x3A0 JUMPI PUSH2 0x1FB JUMP JUMPDEST DUP1 PUSH4 0x1C9161E0 EQ PUSH2 0x200 JUMPI DUP1 PUSH4 0x2026FFA3 EQ PUSH2 0x230 JUMPI DUP1 PUSH4 0x26782247 EQ PUSH2 0x2E1 JUMPI DUP1 PUSH4 0x27EFE3CB EQ PUSH2 0x305 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x22E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x216 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xA01 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x22E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x246 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x270 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x282 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x2A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0xA3F SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x2E9 PUSH2 0xAA1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x22E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x31B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xAB0 JUMP JUMPDEST PUSH2 0x339 PUSH2 0xBB9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x22E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x361 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 SWAP1 SWAP2 ADD CALLDATALOAD AND PUSH2 0xBBD JUMP JUMPDEST PUSH2 0x2E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x399 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xC01 JUMP JUMPDEST PUSH2 0x22E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x3B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x3D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x403 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x452 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x464 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x485 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP POP POP POP DUP1 CALLDATALOAD ISZERO ISZERO SWAP2 POP PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0xC28 JUMP JUMPDEST PUSH2 0x22E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xE61 JUMP JUMPDEST PUSH2 0x2E9 PUSH2 0xF50 JUMP JUMPDEST PUSH2 0x22E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x516 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xF5F JUMP JUMPDEST PUSH2 0x339 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x542 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xFB6 JUMP JUMPDEST PUSH2 0x578 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x568 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xFC8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB SWAP1 SWAP4 AND DUP4 MSTORE PUSH4 0xFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x22E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xFF2 JUMP JUMPDEST PUSH2 0x578 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x10B6 JUMP JUMPDEST PUSH2 0x339 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x602 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x10E0 JUMP JUMPDEST PUSH2 0x61A PUSH2 0x10F2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x22E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x64C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x666 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x678 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x699 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x6E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x6FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x71B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x76A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x77C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x79D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x1104 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x7E3 PUSH2 0x1211 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x7FF PUSH2 0x1216 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 DUP2 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x83B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x823 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x339 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x865 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x1278 JUMP JUMPDEST PUSH2 0x22E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x893 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1295 JUMP JUMPDEST PUSH2 0x339 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1341 JUMP JUMPDEST PUSH2 0x22E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1353 JUMP JUMPDEST PUSH2 0x339 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x905 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x146E JUMP JUMPDEST PUSH2 0x339 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x933 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x148B JUMP JUMPDEST PUSH2 0x22E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x959 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x149D JUMP JUMPDEST PUSH2 0x22E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x985 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x14F4 JUMP JUMPDEST PUSH2 0x22E PUSH2 0x15AC JUMP JUMPDEST PUSH2 0x22E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x16B7 JUMP JUMPDEST PUSH2 0x339 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x171E JUMP JUMPDEST PUSH2 0x2E9 PUSH2 0x1730 JUMP JUMPDEST PUSH2 0x2E9 PUSH2 0x173F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND ISZERO PUSH2 0xA3B JUMPI PUSH2 0xA31 DUP3 PUSH2 0x174E JUMP JUMPDEST PUSH2 0xA3B DUP3 DUP3 PUSH2 0x19E4 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xA6F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP PUSH2 0xA9C DUP2 DUP4 PUSH1 0x1 DUP1 PUSH2 0xC28 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xB0F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6F6E6C792061646D696E2063616E206772616E7420636F6D7000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xB1B DUP4 DUP4 PUSH2 0x1BC2 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0xB70 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x696E73756666696369656E7420636F6D7020666F72206772616E740000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP2 MLOAD PUSH32 0x98B2F82A3A07F223A0BE64B3D0F47711C64DCCD1FEAFB94AA28156B38CD9695C SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP POP POP JUMP JUMPDEST NUMBER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND ISZERO PUSH2 0xA9C JUMPI PUSH2 0xBED DUP4 PUSH2 0x174E JUMP JUMPDEST PUSH2 0xBF7 DUP4 DUP4 PUSH2 0x19E4 JUMP JUMPDEST PUSH2 0xA9C DUP4 DUP3 PUSH2 0x19E4 JUMP JUMPDEST PUSH1 0x4 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0xC0E JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP2 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0xDBC JUMPI PUSH1 0x0 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xC42 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP DUP4 ISZERO ISZERO PUSH1 0x1 ISZERO ISZERO EQ DUP1 ISZERO PUSH2 0xC80 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0xD40 JUMPI PUSH2 0xC8D PUSH2 0x2CCF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xAA5AF0FD 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 0xCD1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCE5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xCFB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 MSTORE SWAP1 POP PUSH2 0xD0B DUP3 DUP3 PUSH2 0x1CE2 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP8 MLOAD DUP2 LT ISZERO PUSH2 0xD3D JUMPI PUSH2 0xD35 DUP4 DUP10 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xD27 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP5 PUSH2 0x1F83 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0xD0E JUMP JUMPDEST POP POP JUMPDEST PUSH1 0x1 DUP4 ISZERO ISZERO EQ DUP1 ISZERO PUSH2 0xD72 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0xDB3 JUMPI PUSH2 0xD80 DUP2 PUSH2 0x174E JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP7 MLOAD DUP2 LT ISZERO PUSH2 0xDB1 JUMPI PUSH2 0xDA9 DUP3 DUP9 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xD9C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x19E4 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0xD83 JUMP JUMPDEST POP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0xC2B JUMP JUMPDEST POP PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0xE5A JUMPI PUSH2 0xE1E DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xDD8 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xB PUSH1 0x0 DUP9 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0xDF0 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x1BC2 JUMP JUMPDEST PUSH1 0xB PUSH1 0x0 DUP8 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xE2E JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 MSTORE DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SSTORE PUSH1 0x1 ADD PUSH2 0xDC0 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xEAE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2D78 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xEB7 DUP3 PUSH2 0xFF2 JUMP JUMPDEST DUP1 PUSH2 0xEDA JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE PUSH2 0xEFC JUMP JUMPDEST PUSH2 0xEE2 PUSH2 0xBB9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP5 SWAP1 SSTORE DUP2 MLOAD DUP5 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x386537FA92EDC3319AF95F1F904DCF1900021E4F3F4E08169A577A09076E66B3 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xFAC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2D78 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xA3B DUP3 DUP3 PUSH2 0x2139 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP2 AND SWAP1 PUSH1 0x1 PUSH1 0xE0 SHL SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP1 PUSH2 0x1014 PUSH2 0xBB9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP SWAP1 PUSH2 0x103C SWAP1 DUP4 SWAP1 PUSH2 0x23CF JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 GT DUP1 ISZERO PUSH2 0x104E JUMPI POP PUSH1 0x0 DUP4 GT JUMPDEST ISZERO PUSH2 0x10B0 JUMPI PUSH1 0x0 PUSH2 0x105F DUP3 DUP6 PUSH2 0x2410 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP SWAP1 PUSH2 0x1086 SWAP1 DUP4 PUSH2 0x2452 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0xD SWAP1 MSTORE KECCAK256 DUP5 SWAP1 SSTORE POP POP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP2 AND SWAP1 PUSH1 0x1 PUSH1 0xE0 SHL SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP3 JUMP JUMPDEST PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH11 0xC097CE7BC90715B34B9F1 PUSH1 0x24 SHL DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1151 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2D78 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 MLOAD DUP3 MLOAD DUP2 EQ DUP1 ISZERO PUSH2 0x1163 JUMPI POP DUP2 MLOAD DUP2 EQ JUMPDEST PUSH2 0x119E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x30 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2D98 PUSH1 0x30 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xE5A JUMPI PUSH2 0x11D9 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x11B8 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x11CC JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x2488 JUMP JUMPDEST PUSH2 0x1209 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x11E8 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x11FC JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x2139 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x11A1 JUMP JUMPDEST PUSH1 0x1 DUP2 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x126E JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1250 JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x12DE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2F DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2CE3 PUSH1 0x2F SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 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 SWAP1 SWAP4 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP2 SWAP1 SWAP3 AND DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP2 MLOAD PUSH32 0xCA4F2F25D0898EDD99413412FB94012F9E54EC8142F9B093E7720646A95B16A9 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x13B2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F6E6C792061646D696E2063616E20696E697469616C697A652E000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x1407 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x20B63932B0B23C9034B734BA34B0B634BD32B217 PUSH1 0x61 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x144C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x33 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2D45 PUSH1 0x33 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x14EA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2D78 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xA3B DUP3 DUP3 PUSH2 0x2488 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND ISZERO PUSH2 0xA3B JUMPI PUSH2 0x1523 PUSH2 0x2CCF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xAA5AF0FD 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 0x1567 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x157B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1591 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 MSTORE SWAP1 POP PUSH2 0x15A1 DUP4 DUP3 PUSH2 0x1CE2 JUMP JUMPDEST PUSH2 0xA9C DUP4 DUP4 DUP4 PUSH2 0x1F83 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ DUP1 ISZERO PUSH2 0x15C5 JUMPI POP CALLER ISZERO ISZERO JUMPDEST PUSH2 0x1600 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x33 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2D12 PUSH1 0x33 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP1 DUP7 AND DUP3 OR SWAP7 DUP8 SWAP1 SSTORE SWAP1 SWAP3 AND SWAP1 SWAP3 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP4 DUP4 AND DUP1 DUP6 MSTORE SWAP5 SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE DUP2 MLOAD SWAP1 SWAP3 PUSH32 0xF9FFABCA9C8276E99321725BCB43FB076A6C66A54B7F21C4E8146D8519B417DC SWAP3 SWAP1 DUP3 SWAP1 SUB ADD SWAP1 LOG1 PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND DUP3 MSTORE SWAP1 SWAP3 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD PUSH32 0xCA4F2F25D0898EDD99413412FB94012F9E54EC8142F9B093E7720646A95B16A9 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH2 0x171B DUP2 PUSH1 0x4 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x1711 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x16F3 JUMPI JUMPDEST POP POP POP POP POP PUSH2 0xA3F JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x5 SWAP1 SWAP3 MSTORE DUP3 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x177B PUSH2 0xBB9 JUMP JUMPDEST DUP4 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x179B SWAP1 DUP4 SWAP1 PUSH1 0x1 PUSH1 0xE0 SHL SWAP1 DIV PUSH4 0xFFFFFFFF AND PUSH2 0x23CF JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 GT DUP1 ISZERO PUSH2 0x17AD JUMPI POP PUSH1 0x0 DUP4 GT JUMPDEST ISZERO PUSH2 0x1973 JUMPI PUSH1 0x0 DUP6 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 0x17ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1801 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1817 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x1827 DUP4 DUP7 PUSH2 0x2410 JUMP JUMPDEST SWAP1 POP PUSH2 0x1831 PUSH2 0x2CCF JUMP JUMPDEST PUSH1 0x0 DUP4 GT PUSH2 0x184E JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x1858 JUMP JUMPDEST PUSH2 0x1858 DUP3 DUP5 PUSH2 0x2676 JUMP JUMPDEST SWAP1 POP PUSH2 0x1862 PUSH2 0x2CCF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE DUP9 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND DUP2 MSTORE PUSH2 0x1884 SWAP1 DUP4 PUSH2 0x26B3 JUMP JUMPDEST SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x18D4 DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x6E657720696E6465782065786365656473203232342062697473000000000000 DUP2 MSTORE POP PUSH2 0x26D8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x190F DUP9 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1C DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2DC8 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 MSTORE POP PUSH2 0x2772 JUMP JUMPDEST PUSH4 0xFFFFFFFF SWAP1 DUP2 AND SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP4 MLOAD DUP2 SLOAD SWAP5 SWAP1 SWAP3 ADD MLOAD SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0xE0 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB SWAP2 DUP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP PUSH2 0xE5A SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 GT DUP1 ISZERO PUSH2 0x198C JUMPI POP DUP4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0xE5A JUMPI PUSH2 0x19BE DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1C DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2DC8 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 MSTORE POP PUSH2 0x2772 JUMP JUMPDEST DUP5 SLOAD PUSH4 0xFFFFFFFF SWAP2 SWAP1 SWAP2 AND PUSH1 0x1 PUSH1 0xE0 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB SWAP1 SWAP2 AND OR DUP5 SSTORE POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x1A04 PUSH2 0x2CCF JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND DUP2 MSTORE PUSH2 0x1A25 PUSH2 0x2CCF JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 DUP4 MSTORE DUP5 DUP2 KECCAK256 SWAP2 DUP9 AND DUP1 DUP3 MSTORE DUP3 DUP5 MSTORE SWAP5 DUP2 KECCAK256 DUP1 SLOAD DUP6 MSTORE DUP7 MLOAD SWAP6 SWAP1 SWAP2 MSTORE SWAP2 MSTORE SWAP2 SWAP1 SWAP2 SSTORE DUP1 MLOAD ISZERO DUP1 ISZERO PUSH2 0x1A73 JUMPI POP DUP2 MLOAD ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x1A8A JUMPI PUSH11 0xC097CE7BC90715B34B9F1 PUSH1 0x24 SHL DUP2 MSTORE JUMPDEST PUSH2 0x1A92 PUSH2 0x2CCF JUMP JUMPDEST PUSH2 0x1A9C DUP4 DUP4 PUSH2 0x27C7 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP8 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1AF6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1B0A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1B20 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x1B30 DUP3 DUP5 PUSH2 0x27EC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP SWAP1 PUSH2 0x1B57 SWAP1 DUP4 PUSH2 0x2452 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP11 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP11 MLOAD DUP3 MLOAD DUP9 DUP2 MSTORE SWAP2 DUP3 ADD MSTORE DUP2 MLOAD SWAP5 SWAP6 POP SWAP2 SWAP4 SWAP3 DUP14 AND SWAP3 PUSH32 0x2CAECD17D02F56FA897705DCC740DA2D237C373F70686F4E0D9BD3BF0400EA7A SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 DUP4 SWAP2 DUP4 SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1C11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1C25 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1C3B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP4 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1C4E JUMPI POP DUP1 DUP5 GT ISZERO JUMPDEST ISZERO PUSH2 0x1CD6 JUMPI DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA9059CBB DUP7 DUP7 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1CB3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1CC7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 SWAP3 POP POP POP PUSH2 0x1CDC JUMP JUMPDEST DUP4 SWAP3 POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x6 SWAP1 SWAP3 MSTORE DUP3 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x1D0F PUSH2 0xBB9 JUMP JUMPDEST DUP4 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x1D2F SWAP1 DUP4 SWAP1 PUSH1 0x1 PUSH1 0xE0 SHL SWAP1 DIV PUSH4 0xFFFFFFFF AND PUSH2 0x23CF JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 GT DUP1 ISZERO PUSH2 0x1D41 JUMPI POP PUSH1 0x0 DUP4 GT JUMPDEST ISZERO PUSH2 0x1F10 JUMPI PUSH1 0x0 PUSH2 0x1DB6 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x47BD3718 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 0x1D84 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1D98 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1DAE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP8 PUSH2 0x281A JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1DC4 DUP4 DUP7 PUSH2 0x2410 JUMP JUMPDEST SWAP1 POP PUSH2 0x1DCE PUSH2 0x2CCF JUMP JUMPDEST PUSH1 0x0 DUP4 GT PUSH2 0x1DEB JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x1DF5 JUMP JUMPDEST PUSH2 0x1DF5 DUP3 DUP5 PUSH2 0x2676 JUMP JUMPDEST SWAP1 POP PUSH2 0x1DFF PUSH2 0x2CCF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE DUP9 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND DUP2 MSTORE PUSH2 0x1E21 SWAP1 DUP4 PUSH2 0x26B3 JUMP JUMPDEST SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x1E71 DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x6E657720696E6465782065786365656473203232342062697473000000000000 DUP2 MSTORE POP PUSH2 0x26D8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1EAC DUP9 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1C DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2DC8 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 MSTORE POP PUSH2 0x2772 JUMP JUMPDEST PUSH4 0xFFFFFFFF SWAP1 DUP2 AND SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP4 MLOAD DUP2 SLOAD SWAP5 SWAP1 SWAP3 ADD MLOAD SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0xE0 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB SWAP2 DUP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP PUSH2 0x1F7B SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 GT DUP1 ISZERO PUSH2 0x1F29 JUMPI POP DUP4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x1F7B JUMPI PUSH2 0x1F5B DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1C DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2DC8 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 MSTORE POP PUSH2 0x2772 JUMP JUMPDEST DUP5 SLOAD PUSH4 0xFFFFFFFF SWAP2 SWAP1 SWAP2 AND PUSH1 0x1 PUSH1 0xE0 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB SWAP1 SWAP2 AND OR DUP5 SSTORE JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x1FA3 PUSH2 0x2CCF JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND DUP2 MSTORE PUSH2 0x1FC4 PUSH2 0x2CCF JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA DUP4 MSTORE DUP5 DUP2 KECCAK256 SWAP2 DUP10 AND DUP1 DUP3 MSTORE DUP3 DUP5 MSTORE SWAP5 DUP2 KECCAK256 DUP1 SLOAD DUP6 MSTORE DUP7 MLOAD SWAP6 SWAP1 SWAP2 MSTORE SWAP2 MSTORE SWAP2 SWAP1 SWAP2 SSTORE DUP1 MLOAD ISZERO DUP1 ISZERO PUSH2 0x2012 JUMPI POP DUP2 MLOAD ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x2029 JUMPI PUSH11 0xC097CE7BC90715B34B9F1 PUSH1 0x24 SHL DUP2 MSTORE JUMPDEST PUSH2 0x2031 PUSH2 0x2CCF JUMP JUMPDEST PUSH2 0x203B DUP4 DUP4 PUSH2 0x27C7 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2098 DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x95DD9193 DUP10 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1D84 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x20A6 DUP3 DUP5 PUSH2 0x27EC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP SWAP1 PUSH2 0x20CD SWAP1 DUP4 PUSH2 0x2452 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP11 MLOAD DUP3 MLOAD DUP9 DUP2 MSTORE SWAP2 DUP3 ADD MSTORE DUP2 MLOAD SWAP5 SWAP6 POP SWAP2 SWAP4 SWAP3 DUP15 AND SWAP3 PUSH32 0x1FC3ECC087D8D2D15E23D0032AF5A47059C3892D003D8E139FDCB6BB327C99A6 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x21E4 JUMPI PUSH2 0x2160 PUSH2 0x2CCF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xAA5AF0FD 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 0x21A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x21B8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x21CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 MSTORE SWAP1 POP PUSH2 0x21DE DUP5 DUP3 PUSH2 0x1CE2 JUMP JUMPDEST POP PUSH2 0x2373 JUMP JUMPDEST DUP2 ISZERO PUSH2 0x2373 JUMPI PUSH2 0x21F3 DUP4 PUSH2 0x2838 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH2 0x232D JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH11 0xC097CE7BC90715B34B9F1 PUSH1 0x24 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2275 PUSH2 0x224C PUSH2 0xBB9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1C DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2DC8 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 MSTORE POP PUSH2 0x2772 JUMP JUMPDEST PUSH4 0xFFFFFFFF SWAP1 DUP2 AND SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 MLOAD DUP2 SLOAD SWAP7 DUP5 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP8 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB SWAP2 DUP3 AND OR DUP2 AND PUSH1 0x1 PUSH1 0xE0 SHL SWAP8 SWAP1 SWAP7 AND SWAP7 SWAP1 SWAP7 MUL SWAP5 SWAP1 SWAP5 OR SWAP1 SWAP4 SSTORE PUSH1 0x7 SWAP1 MSTORE KECCAK256 SLOAD AND PUSH2 0x2328 JUMPI PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE PUSH1 0x0 SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x8A35ACFBC15FF81A39AE7D344FD709F28E8600B4AA8C65C6B64BFE7FE36BD19B ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND OR SWAP1 SSTORE JUMPDEST PUSH2 0x2373 JUMP JUMPDEST PUSH2 0x2338 PUSH2 0x224C PUSH2 0xBB9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH4 0xFFFFFFFF SWAP3 SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0xE0 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST DUP2 DUP2 EQ PUSH2 0xA9C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x20AF8E791CC98F74B2D7A391C80980CA8E5AEBF3D4060BF581997B6ACAE2E537 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2409 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x15 DUP2 MSTORE PUSH1 0x20 ADD PUSH21 0x7375627472616374696F6E20756E646572666C6F77 PUSH1 0x58 SHL DUP2 MSTORE POP PUSH2 0x2B11 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2409 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x17 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x6D756C7469706C69636174696F6E206F766572666C6F77000000000000000000 DUP2 MSTORE POP PUSH2 0x2B6B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2409 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x11 DUP2 MSTORE PUSH1 0x20 ADD PUSH17 0x6164646974696F6E206F766572666C6F77 PUSH1 0x78 SHL DUP2 MSTORE POP PUSH2 0x2BEA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x24B5 JUMPI PUSH2 0x24B0 DUP4 PUSH2 0x174E JUMP JUMPDEST PUSH2 0x261A JUMP JUMPDEST DUP2 ISZERO PUSH2 0x261A JUMPI PUSH2 0x24C4 DUP4 PUSH2 0x2838 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH2 0x25D4 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH11 0xC097CE7BC90715B34B9F1 PUSH1 0x24 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x251D PUSH2 0x224C PUSH2 0xBB9 JUMP JUMPDEST PUSH4 0xFFFFFFFF SWAP1 DUP2 AND SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 MLOAD DUP2 SLOAD SWAP7 DUP5 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP8 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB SWAP2 DUP3 AND OR DUP2 AND PUSH1 0x1 PUSH1 0xE0 SHL SWAP8 SWAP1 SWAP7 AND SWAP7 SWAP1 SWAP7 MUL SWAP5 SWAP1 SWAP5 OR SWAP1 SWAP4 SSTORE PUSH1 0x8 SWAP1 MSTORE KECCAK256 SLOAD AND PUSH2 0x24B0 JUMPI PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE PUSH1 0x0 SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x8A35ACFBC15FF81A39AE7D344FD709F28E8600B4AA8C65C6B64BFE7FE36BD19B ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND OR SWAP1 SSTORE PUSH2 0x261A JUMP JUMPDEST PUSH2 0x25DF PUSH2 0x224C PUSH2 0xBB9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH4 0xFFFFFFFF SWAP3 SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0xE0 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST DUP2 DUP2 EQ PUSH2 0xA9C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0xDEAFCCD0C0B768B2529F7DCBBE58E155D6023059150B7490ED4535CC3744B92D SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH2 0x267E PUSH2 0x2CCF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x26AA PUSH2 0x26A4 DUP7 PUSH11 0xC097CE7BC90715B34B9F1 PUSH1 0x24 SHL PUSH2 0x2410 JUMP JUMPDEST DUP6 PUSH2 0x2C3F JUMP JUMPDEST SWAP1 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x26BB PUSH2 0x2CCF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x26AA DUP6 PUSH1 0x0 ADD MLOAD DUP6 PUSH1 0x0 ADD MLOAD PUSH2 0x2452 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0xE0 SHL DUP5 LT PUSH2 0x276A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x272F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2717 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x275C JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x20 SHL DUP5 LT PUSH2 0x276A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x272F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2717 JUMP JUMPDEST PUSH2 0x27CF PUSH2 0x2CCF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x26AA DUP6 PUSH1 0x0 ADD MLOAD DUP6 PUSH1 0x0 ADD MLOAD PUSH2 0x23CF JUMP JUMPDEST PUSH1 0x0 PUSH11 0xC097CE7BC90715B34B9F1 PUSH1 0x24 SHL PUSH2 0x280B DUP5 DUP5 PUSH1 0x0 ADD MLOAD PUSH2 0x2410 JUMP JUMPDEST DUP2 PUSH2 0x2812 JUMPI INVALID JUMPDEST DIV SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2409 PUSH2 0x2831 DUP5 PUSH8 0xDE0B6B3A7640000 PUSH2 0x2410 JUMP JUMPDEST DUP4 MLOAD PUSH2 0x2C3F JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5FE3B567 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 0x2873 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2887 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x289D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x8E8F294B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP3 MLOAD SWAP4 SWAP5 POP PUSH1 0x0 SWAP4 SWAP1 DUP6 AND SWAP3 PUSH4 0x8E8F294B SWAP3 PUSH1 0x24 DUP1 DUP3 ADD SWAP4 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x28EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x28FE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2914 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x1 DUP2 ISZERO ISZERO EQ PUSH2 0x296F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x636F6D70206D61726B6574206973206E6F74206C697374656400000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SWAP1 POP PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x3605B51B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x29AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x29C3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x29EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH1 0x1 PUSH1 0x20 SHL DUP3 GT ISZERO PUSH2 0x2A0B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x2A20 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x20 DUP3 MUL DUP4 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP3 GT OR ISZERO PUSH2 0x2A3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 DUP3 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2A69 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2A51 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD PUSH1 0x40 MSTORE POP POP POP SWAP1 POP PUSH1 0x0 DUP1 SWAP1 POP JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x2AC1 JUMPI ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2A9D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x2AB9 JUMPI PUSH1 0x1 SWAP3 POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x2A7E JUMP JUMPDEST POP PUSH1 0x1 DUP3 ISZERO ISZERO EQ PUSH2 0xE5A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x191A5CDD1C9A589D5D1BDC881B9BDD081859191959 PUSH1 0x5A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x2B63 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x272F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2717 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP4 ISZERO DUP1 PUSH2 0x2B78 JUMPI POP DUP3 ISZERO JUMPDEST ISZERO PUSH2 0x2B85 JUMPI POP PUSH1 0x0 PUSH2 0x2409 JUMP JUMPDEST DUP4 DUP4 MUL DUP4 DUP6 DUP3 DUP2 PUSH2 0x2B92 JUMPI INVALID JUMPDEST DIV EQ DUP4 SWAP1 PUSH2 0x2BE1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x272F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2717 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 ADD DUP3 DUP6 DUP3 LT ISZERO PUSH2 0x2BE1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x272F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2717 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2409 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xE DUP2 MSTORE PUSH1 0x20 ADD PUSH14 0x646976696465206279207A65726F PUSH1 0x90 SHL DUP2 MSTORE POP PUSH1 0x0 DUP2 DUP4 PUSH2 0x2CBC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x272F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2717 JUMP JUMPDEST POP DUP3 DUP5 DUP2 PUSH2 0x2CC6 JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP INVALID MSTORE PUSH6 0x776172647344 PUSH10 0x737472696275746F723A 0x5F PUSH20 0x657450656E64696E6741646D696E3A2061646D69 PUSH15 0x206F6E6C7952657761726473446973 PUSH21 0x72696275746F723A5F61636365707441646D696E3A KECCAK256 PUSH17 0x656E64696E672061646D696E206F6E6C79 NUMBER PUSH2 0x6E6E PUSH16 0x7420696E697469616C697A6520726577 PUSH2 0x7264 KECCAK256 PUSH21 0x6F6B656E20746F20746865207A65726F2061646472 PUSH6 0x73732E6F6E6C PUSH26 0x2061646D696E2063616E2073657420636F6D7020737065656400 STOP STOP MSTORE PUSH6 0x776172647344 PUSH10 0x737472696275746F723A GASPRICE 0x5F PUSH20 0x6574436F6D7053706565647320696E76616C6964 KECCAK256 PUSH10 0x6E707574626C6F636B20 PUSH15 0x756D62657220657863656564732033 ORIGIN KECCAK256 PUSH3 0x697473 STOP STOP STOP STOP LOG2 PUSH6 0x627A7A723158 KECCAK256 0x4D JUMPI SLOAD PUSH10 0x73860639294B5CB943B2 BYTE DUP14 0xEE 0xBC 0xC7 PUSH23 0xFA3AB4A85EE71BFC417C3CE964736F6C63430005110032 ","sourceMap":"274:21997:34:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;274:21997:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13922:241;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;13922:241:34;;;;;;;;;;:::i;:::-;;16500:211;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;16500:211:34;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;16500:211:34;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;16500:211:34;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;16500:211:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;16500:211:34;;-1:-1:-1;16500:211:34;;-1:-1:-1;;;;;16500:211:34:i;230:27:36:-;;;:::i;:::-;;;;-1:-1:-1;;;;;230:27:36;;;;;;;;;;;;;;19181:307:34;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;19181:307:34;;;;;;;;:::i;22011:89::-;;;:::i;:::-;;;;;;;;;;;;;;;;14997:293;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;14997:293:34;;;;;;;;;;;;;;;;;;;:::i;1080:26:36:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1080:26:36;;:::i;17045:1091:34:-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;17045:1091:34;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;17045:1091:34;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;17045:1091:34;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;17045:1091:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;17045:1091:34;;;;;;;;-1:-1:-1;17045:1091:34;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;17045:1091:34;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;17045:1091:34;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;17045:1091:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;17045:1091:34;;-1:-1:-1;;;;17045:1091:34;;;;;-1:-1:-1;17045:1091:34;;;;;;:::i;21346:629::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;21346:629:34;;;;;;;;:::i;316:29:36:-;;;:::i;20050:200:34:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;20050:200:34;;;;;;;;:::i;1183:48:36:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1183:48:36;-1:-1:-1;;;;;1183:48:36;;:::i;1424:58::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1424:58:36;-1:-1:-1;;;;;1424:58:36;;:::i;:::-;;;;-1:-1:-1;;;;;1424:58:36;;;;;;;;;;;;;;;;;;;;;;15473:577:34;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15473:577:34;-1:-1:-1;;;;;15473:577:34;;:::i;1550:58:36:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1550:58:36;-1:-1:-1;;;;;1550:58:36;;:::i;2184:53::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2184:53:36;-1:-1:-1;;;;;2184:53:36;;:::i;1746:47:34:-;;;:::i;:::-;;;;-1:-1:-1;;;;;1746:47:34;;;;;;;;;;;;;;20578:567;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20578:567:34;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;20578:567:34;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;20578:567:34;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;20578:567:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;20578:567:34;;;;;;;;-1:-1:-1;20578:567:34;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;20578:567:34;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;20578:567:34;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;20578:567:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;20578:567:34;;;;;;;;-1:-1:-1;20578:567:34;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;20578:567:34;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;20578:567:34;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;20578:567:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;20578:567:34;;-1:-1:-1;20578:567:34;;-1:-1:-1;;;;;20578:567:34:i;438:48::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;22170:99;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;22170:99:34;;;;;;;;;;;;;;;;;1725:69:36;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1725:69:36;;;;;;;;;;:::i;2543:526:34:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2543:526:34;-1:-1:-1;;;;;2543:526:34;;:::i;2329:52:36:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2329:52:36;-1:-1:-1;;;;;2329:52:36;;:::i;1870:330:34:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1870:330:34;-1:-1:-1;;;;;1870:330:34;;:::i;1911:69:36:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1911:69:36;;;;;;;;;;:::i;2057:43::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2057:43:36;-1:-1:-1;;;;;2057:43:36;;:::i;19669:200:34:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;19669:200:34;;;;;;;;:::i;14366:351::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;14366:351:34;;;;;;;;;;:::i;3252:626::-;;;:::i;16190:101::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16190:101:34;-1:-1:-1;;;;;16190:101:34;;:::i;1308:48:36:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1308:48:36;-1:-1:-1;;;;;1308:48:36;;:::i;779:26::-;;;:::i;147:20::-;;;:::i;13922:241:34:-;-1:-1:-1;;;;;14014:23:34;;14046:1;14014:23;;;:15;:23;;;;;:29;-1:-1:-1;;;;;14014:29:34;:33;14010:147;;14063:29;14085:6;14063:21;:29::i;:::-;14106:40;14129:6;14137:8;14106:22;:40::i;:::-;13922:241;;:::o;16500:211::-;16607:16;;;16621:1;16607:16;;;;;;;;;16580:24;;16607:16;;;;;;105:10:-1;16607:16:34;88:34:-1;136:17;;-1:-1;16607:16:34;16580:43;;16646:6;16633:7;16641:1;16633:10;;;;;;;;;;;;;:19;-1:-1:-1;;;;;16633:19:34;;;-1:-1:-1;;;;;16633:19:34;;;;;16662:42;16675:7;16684;16693:4;16699;16662:12;:42::i;:::-;16500:211;;;:::o;230:27:36:-;;;-1:-1:-1;;;;;230:27:36;;:::o;19181:307:34:-;19272:5;;-1:-1:-1;;;;;19272:5:34;19258:10;:19;19250:57;;;;;-1:-1:-1;;;19250:57:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;19317:15;19335:36;19353:9;19364:6;19335:17;:36::i;:::-;19317:54;-1:-1:-1;19389:15:34;;19381:55;;;;;-1:-1:-1;;;19381:55:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;19451:30;;;-1:-1:-1;;;;;19451:30:34;;;;;;;;;;;;;;;;;;;;;;;19181:307;;;:::o;22011:89::-;22081:12;22011:89;:::o;14997:293::-;-1:-1:-1;;;;;15097:23:34;;15129:1;15097:23;;;:15;:23;;;;;:29;-1:-1:-1;;;;;15097:29:34;:33;15093:191;;15146:29;15168:6;15146:21;:29::i;:::-;15189:35;15212:6;15220:3;15189:22;:35::i;:::-;15238;15261:6;15269:3;15238:22;:35::i;1080:26:36:-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1080:26:36;;-1:-1:-1;1080:26:36;:::o;17045:1091:34:-;17172:6;17167:807;17188:7;:14;17184:1;:18;17167:807;;;17223:13;17239:7;17247:1;17239:10;;;;;;;;;;;;;;17223:26;;17267:9;:17;;17280:4;17267:17;;;:63;;;;-1:-1:-1;;;;;;17288:32:34;;17329:1;17288:32;;;:15;:32;;;;;:38;-1:-1:-1;;;;;17288:38:34;:42;;17267:63;17263:397;;;17350:22;;:::i;:::-;17375:37;;;;;;;;17390:6;-1:-1:-1;;;;;17390:18:34;;:20;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17390:20:34;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17390:20:34;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17390:20:34;17375:37;;17350:62;-1:-1:-1;17430:51:34;17460:6;17350:62;17430:21;:51::i;:::-;17504:6;17499:147;17520:7;:14;17516:1;:18;17499:147;;;17563:64;17594:6;17603:7;17611:1;17603:10;;;;;;;;;;;;;;17615:11;17563:22;:64::i;:::-;17536:3;;17499:147;;;;17263:397;;17690:4;17677:17;;;;:63;;;;-1:-1:-1;;;;;;17698:32:34;;17739:1;17698:32;;;:15;:32;;;;;:38;-1:-1:-1;;;;;17698:38:34;:42;;17677:63;17673:291;;;17760:38;17790:6;17760:21;:38::i;:::-;17821:6;17816:134;17837:7;:14;17833:1;:18;17816:134;;;17880:51;17911:6;17920:7;17928:1;17920:10;;;;;;;;;;;;;;17880:22;:51::i;:::-;17853:3;;17816:134;;;;17673:291;-1:-1:-1;17204:3:34;;17167:807;;;-1:-1:-1;17988:6:34;17983:147;18004:7;:14;18000:1;:18;17983:147;;;18065:54;18083:7;18091:1;18083:10;;;;;;;;;;;;;;18095:11;:23;18107:7;18115:1;18107:10;;;;;;;;;;;;;;-1:-1:-1;;;;;18095:23:34;-1:-1:-1;;;;;18095:23:34;;;;;;;;;;;;;18065:17;:54::i;:::-;18039:11;:23;18051:7;18059:1;18051:10;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18039:23:34;;;;;;;;;;;-1:-1:-1;18039:23:34;:80;18020:3;;17983:147;;;;17045:1091;;;;:::o;21346:629::-;21456:5;;-1:-1:-1;;;;;21456:5:34;21442:10;:19;21434:61;;;;;-1:-1:-1;;;21434:61:34;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;21434:61:34;;;;;;;;;;;;;;;21600:37;21625:11;21600:24;:37::i;:::-;21651:14;21647:199;;-1:-1:-1;;;;;21719:33:34;;;;;;:20;:33;;;;;21712:40;21647:199;;;21819:16;:14;:16::i;:::-;-1:-1:-1;;;;;21783:33:34;;;;;;:20;:33;;;;;:52;21647:199;-1:-1:-1;;;;;21855:34:34;;;;;;:21;:34;;;;;;;;;:46;;;21917:51;;;;;;;;;;;;;;;;;21346:629;;:::o;316:29:36:-;;;-1:-1:-1;;;;;316:29:36;;:::o;20050:200:34:-;20149:5;;-1:-1:-1;;;;;20149:5:34;20135:10;:19;20127:61;;;;;-1:-1:-1;;;20127:61:34;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;20127:61:34;;;;;;;;;;;;;;;20198:45;20225:6;20233:9;20198:26;:45::i;1183:48:36:-;;;;;;;;;;;;;:::o;1424:58::-;;;;;;;;;;;;-1:-1:-1;;;;;1424:58:36;;;-1:-1:-1;;;1424:58:36;;;;;:::o;15473:577:34:-;-1:-1:-1;;;;;15562:34:34;;15545:14;15562:34;;;:21;:34;;;;;;;15625:16;:14;:16::i;:::-;-1:-1:-1;;;;;15688:33:34;;15651:16;15688:33;;;:20;:33;;;;;;15606:35;;-1:-1:-1;15651:16:34;15670:52;;15606:35;;15670:4;:52::i;:::-;15651:71;;15750:1;15736:11;:15;:32;;;;;15767:1;15755:9;:13;15736:32;15732:312;;;15784:15;15802:28;15807:11;15820:9;15802:4;:28::i;:::-;-1:-1:-1;;;;;15875:24:34;;15844:23;15875:24;;;:11;:24;;;;;;15784:46;;-1:-1:-1;15844:23:34;15870:42;;15784:46;15870:4;:42::i;:::-;-1:-1:-1;;;;;15927:24:34;;;;;;:11;:24;;;;;;;;:45;;;;15986:20;:33;;;:47;;;-1:-1:-1;;15732:312:34;15473:577;;;;:::o;1550:58:36:-;;;;;;;;;;;;-1:-1:-1;;;;;1550:58:36;;;-1:-1:-1;;;1550:58:36;;;;;:::o;2184:53::-;;;;;;;;;;;;;:::o;1746:47:34:-;-1:-1:-1;;;1746:47:34;:::o;20578:567::-;20722:5;;-1:-1:-1;;;;;20722:5:34;20708:10;:19;20700:61;;;;;-1:-1:-1;;;20700:61:34;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;20700:61:34;;;;;;;;;;;;;;;20789:14;;20834:19;;20821:32;;:68;;;;;20870:12;:19;20857:9;:32;20821:68;20813:129;;;;-1:-1:-1;;;20813:129:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20958:6;20953:186;20974:9;20970:1;:13;20953:186;;;21004:55;21031:7;21039:1;21031:10;;;;;;;;;;;;;;21043:12;21056:1;21043:15;;;;;;;;;;;;;;21004:26;:55::i;:::-;21073;21100:7;21108:1;21100:10;;;;;;;;;;;;;;21112:12;21125:1;21112:15;;;;;;;;;;;;;;21073:26;:55::i;:::-;20985:3;;20953:186;;438:48;482:4;438:48;:::o;22170:99::-;22218:15;22252:10;22245:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22245:17:34;;;;;;;;;;;;;;;;;;;;;;;22170:99;:::o;1725:69:36:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;2543:526:34:-;2667:5;;-1:-1:-1;;;;;2667:5:34;2653:10;:19;2645:79;;;;-1:-1:-1;;;2645:79:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2821:12;;;-1:-1:-1;;;;;2901:30:34;;;-1:-1:-1;;;;;;2901:30:34;;;;;;;3013:49;;;2821:12;;;;3013:49;;;;;;;;;;;;;;;;;;;;;;;2543:526;;:::o;2329:52:36:-;;;;;;;;;;;;;:::o;1870:330:34:-;1953:5;;-1:-1:-1;;;;;1953:5:34;1939:10;:19;1931:58;;;;;-1:-1:-1;;;1931:58:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;2007:11;;-1:-1:-1;;;;;2007:11:34;:25;1999:58;;;;;-1:-1:-1;;;1999:58:34;;;;;;;;;;;;-1:-1:-1;;;1999:58:34;;;;;;;;;;;;;;;-1:-1:-1;;;;;2075:26:34;;2067:90;;;;-1:-1:-1;;;2067:90:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2167:11;:26;;-1:-1:-1;;;;;;2167:26:34;-1:-1:-1;;;;;2167:26:34;;;;;;;;;;1870:330::o;1911:69:36:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;2057:43::-;;;;;;;;;;;;;:::o;19669:200:34:-;19768:5;;-1:-1:-1;;;;;19768:5:34;19754:10;:19;19746:61;;;;;-1:-1:-1;;;19746:61:34;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;19746:61:34;;;;;;;;;;;;;;;19817:45;19844:6;19852:9;19817:26;:45::i;14366:351::-;-1:-1:-1;;;;;14458:23:34;;14490:1;14458:23;;;:15;:23;;;;;:29;-1:-1:-1;;;;;14458:29:34;:33;14454:257;;14507:22;;:::i;:::-;14532:45;;;;;;;;14554:6;-1:-1:-1;;;;;14547:26:34;;:28;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14547:28:34;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14547:28:34;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14547:28:34;14532:45;;14507:70;-1:-1:-1;14591:42:34;14613:6;14507:70;14591:21;:42::i;:::-;14647:53;14670:6;14678:8;14688:11;14647:22;:53::i;3252:626::-;3389:12;;-1:-1:-1;;;;;3389:12:34;3375:10;:26;:54;;;;-1:-1:-1;3405:10:34;:24;;3375:54;3367:118;;;;-1:-1:-1;;;3367:118:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3548:16;3567:5;;;3608:12;;-1:-1:-1;;;;;3608:12:34;;;-1:-1:-1;;;;;;3678:20:34;;;;;;;;;3744:25;;;;;;3785;;;3567:5;;;3785:25;;;3804:5;;;;3785:25;;;;;;3608:12;;3785:25;;;;;;;;;3858:12;;3825:46;;;-1:-1:-1;;;;;3825:46:34;;;;;3858:12;;;3825:46;;;;;;;;;;;;;;;;3252:626;;:::o;16190:101::-;16252:32;16265:6;16273:10;16252:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16252:32:34;;;;;;;;;;;;;;;;;;;;;:12;:32::i;:::-;16190:101;:::o;1308:48:36:-;;;;;;;;;;;;;:::o;779:26::-;;;-1:-1:-1;;;;;779:26:36;;:::o;147:20::-;;;-1:-1:-1;;;;;147:20:36;;:::o;8113:1063:34:-;-1:-1:-1;;;;;8217:23:34;;8179:35;8217:23;;;:15;:23;;;;;;;;8269:16;:24;;;;;;8217:23;;8322:16;:14;:16::i;:::-;8390:17;;8303:35;;-1:-1:-1;8348:16:34;;8367:42;;8303:35;;-1:-1:-1;;;8390:17:34;;;;8367:4;:42::i;:::-;8348:61;;8437:1;8423:11;:15;:34;;;;;8456:1;8442:11;:15;8423:34;8419:751;;;8473:17;8500:6;-1:-1:-1;;;;;8493:26:34;;:28;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8493:28:34;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8493:28:34;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8493:28:34;;-1:-1:-1;8535:17:34;8555:30;8560:11;8573;8555:4;:30::i;:::-;8535:50;;8599:19;;:::i;:::-;8636:1;8621:12;:16;:79;;8679:21;;;;;;;;8697:1;8679:21;;;8621:79;;;8640:36;8649:12;8663;8640:8;:36::i;:::-;8599:101;;8714:19;;:::i;:::-;8741:37;;;;;;;;;8759:17;;-1:-1:-1;;;;;8759:17:34;8741:37;;8736:50;;8780:5;8736:4;:50::i;:::-;8714:72;;8826:185;;;;;;;;8867:53;8875:5;:14;;;8867:53;;;;;;;;;;;;;;;;;:7;:53::i;:::-;-1:-1:-1;;;;;8826:185:34;;;;;8945:51;8952:11;8945:51;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;8945:51:34;;;:6;:51::i;:::-;8826:185;;;;;;;-1:-1:-1;;;;;8800:23:34;;;;;;:15;:23;;;;;;;;:211;;;;;;;;;;;;-1:-1:-1;;;8800:211:34;-1:-1:-1;;;;;8800:211:34;;;-1:-1:-1;;;;;;8800:211:34;;;;;;;;;;;;;;-1:-1:-1;8419:751:34;;-1:-1:-1;;;8419:751:34;;9046:1;9032:11;:15;:40;;;;-1:-1:-1;9051:17:34;;-1:-1:-1;;;;;9051:17:34;:21;;9032:40;9028:142;;;9108:51;9115:11;9108:51;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;9108:51:34;;;:6;:51::i;:::-;9088:71;;;;;;;-1:-1:-1;;;9088:71:34;-1:-1:-1;;;;;9088:71:34;;;;;;8113:1063;;;;;:::o;10697:1275::-;-1:-1:-1;;;;;10820:23:34;;10782:35;10820:23;;;:15;:23;;;;;10853:25;;:::i;:::-;-1:-1:-1;10881:37:34;;;;;;;;;10899:17;;-1:-1:-1;;;;;10899:17:34;10881:37;;10928:27;;:::i;:::-;-1:-1:-1;10958:55:34;;;;;;;;;-1:-1:-1;;;;;10976:25:34;;;-1:-1:-1;10976:25:34;;;:17;:25;;;;;:35;;;;;;;;;;;;;;10958:55;;11061:20;;11023:35;;;;;;:58;;;;11096:22;;:27;:55;;;;-1:-1:-1;11127:20:34;;:24;;11096:55;11092:450;;;-1:-1:-1;;;11490:41:34;;11092:450;11552:24;;:::i;:::-;11579:32;11584:11;11597:13;11579:4;:32::i;:::-;11552:59;;11621:19;11650:6;-1:-1:-1;;;;;11643:24:34;;11668:8;11643:34;;;;;;;;;;;;;-1:-1:-1;;;;;11643:34:34;-1:-1:-1;;;;;11643:34:34;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11643:34:34;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11643:34:34;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11643:34:34;;-1:-1:-1;11687:18:34;11708:32;11643:34;11729:10;11708:4;:32::i;:::-;-1:-1:-1;;;;;11778:21:34;;11750:20;11778:21;;;:11;:21;;;;;;11687:53;;-1:-1:-1;11750:20:34;11773:42;;11687:53;11773:4;:42::i;:::-;-1:-1:-1;;;;;11825:21:34;;;;;;;:11;:21;;;;;;;;;:39;;;11944:20;;11879:86;;;;;;;;;;;11750:65;;-1:-1:-1;11825:21:34;;11879:86;;;;;;;;;;;;;;10697:1275;;;;;;;;;:::o;18480:375::-;18627:11;;18670:29;;;-1:-1:-1;;;18670:29:34;;18693:4;18670:29;;;;;;18552:4;;-1:-1:-1;;;;;18627:11:34;;18552:4;;18627:11;;18670:14;;:29;;;;;;;;;;;;;;18627:11;18670:29;;;5:2:-1;;;;30:1;27;20:12;5:2;18670:29:34;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18670:29:34;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18670:29:34;;-1:-1:-1;18713:10:34;;;;;:37;;;18737:13;18727:6;:23;;18713:37;18709:117;;;18766:4;-1:-1:-1;;;;;18766:13:34;;18780:4;18786:6;18766:27;;;;;;;;;;;;;-1:-1:-1;;;;;18766:27:34;-1:-1:-1;;;;;18766:27:34;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18766:27:34;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18766:27:34;;;;18814:1;18807:8;;;;;;18709:117;18842:6;18835:13;;;;18480:375;;;;;:::o;9329:1119::-;-1:-1:-1;;;;;9463:23:34;;9425:35;9463:23;;;:15;:23;;;;;;;;9515:16;:24;;;;;;9463:23;;9568:16;:14;:16::i;:::-;9636:17;;9549:35;;-1:-1:-1;9594:16:34;;9613:42;;9549:35;;-1:-1:-1;;;9636:17:34;;;;9613:4;:42::i;:::-;9594:61;;9683:1;9669:11;:15;:34;;;;;9702:1;9688:11;:15;9669:34;9665:777;;;9719:17;9739:54;9751:6;-1:-1:-1;;;;;9744:27:34;;:29;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9744:29:34;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9744:29:34;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9744:29:34;9775:17;9739:4;:54::i;:::-;9719:74;;9807:17;9827:30;9832:11;9845;9827:4;:30::i;:::-;9807:50;;9871:19;;:::i;:::-;9908:1;9893:12;:16;:79;;9951:21;;;;;;;;9969:1;9951:21;;;9893:79;;;9912:36;9921:12;9935;9912:8;:36::i;:::-;9871:101;;9986:19;;:::i;:::-;10013:37;;;;;;;;;10031:17;;-1:-1:-1;;;;;10031:17:34;10013:37;;10008:50;;10052:5;10008:4;:50::i;:::-;9986:72;;10098:185;;;;;;;;10139:53;10147:5;:14;;;10139:53;;;;;;;;;;;;;;;;;:7;:53::i;:::-;-1:-1:-1;;;;;10098:185:34;;;;;10217:51;10224:11;10217:51;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;10217:51:34;;;:6;:51::i;:::-;10098:185;;;;;;;-1:-1:-1;;;;;10072:23:34;;;;;;:15;:23;;;;;;;;:211;;;;;;;;;;;;-1:-1:-1;;;10072:211:34;-1:-1:-1;;;;;10072:211:34;;;-1:-1:-1;;;;;;10072:211:34;;;;;;;;;;;;;;-1:-1:-1;9665:777:34;;-1:-1:-1;;;9665:777:34;;10318:1;10304:11;:15;:40;;;;-1:-1:-1;10323:17:34;;-1:-1:-1;;;;;10323:17:34;:21;;10304:40;10300:142;;;10380:51;10387:11;10380:51;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;10380:51:34;;;:6;:51::i;:::-;10360:71;;;;;;;-1:-1:-1;;;10360:71:34;-1:-1:-1;;;;;10360:71:34;;;;;;10300:142;9329:1119;;;;;;:::o;12221:1492::-;-1:-1:-1;;;;;12374:23:34;;12336:35;12374:23;;;:15;:23;;;;;12407:25;;:::i;:::-;-1:-1:-1;12435:37:34;;;;;;;;;12453:17;;-1:-1:-1;;;;;12453:17:34;12435:37;;12482:27;;:::i;:::-;-1:-1:-1;12512:55:34;;;;;;;;;-1:-1:-1;;;;;12530:25:34;;;-1:-1:-1;12530:25:34;;;:17;:25;;;;;:35;;;;;;;;;;;;;;12512:55;;12615:20;;12577:35;;;;;;:58;;;;12650:22;;:27;:55;;;;-1:-1:-1;12681:20:34;;:24;;12650:55;12646:602;;;-1:-1:-1;;;13196:41:34;;12646:602;13258:24;;:::i;:::-;13285:32;13290:11;13303:13;13285:4;:32::i;:::-;13258:59;;13327:19;13349:69;13361:6;-1:-1:-1;;;;;13354:34:34;;13389:8;13354:44;;;;;;;;;;;;;-1:-1:-1;;;;;13354:44:34;-1:-1:-1;;;;;13354:44:34;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;13349:69:34;13327:91;;13428:18;13449:32;13454:14;13470:10;13449:4;:32::i;:::-;-1:-1:-1;;;;;13519:21:34;;13491:20;13519:21;;;:11;:21;;;;;;13428:53;;-1:-1:-1;13491:20:34;13514:42;;13428:53;13514:4;:42::i;:::-;-1:-1:-1;;;;;13566:21:34;;;;;;;:11;:21;;;;;;;;;:39;;;13685:20;;13620:86;;;;;;;;;;;13491:65;;-1:-1:-1;13566:21:34;;13620:86;;;;;;;;;;;;;;12221:1492;;;;;;;;;;:::o;6452:1508::-;-1:-1:-1;;;;;6562:33:34;;6538:21;6562:33;;;:16;:33;;;;;;6609:21;;6605:1174;;6739:22;;:::i;:::-;6764:37;;;;;;;;6779:6;-1:-1:-1;;;;;6779:18:34;;:20;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6779:20:34;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6779:20:34;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6779:20:34;6764:37;;6739:62;-1:-1:-1;6815:51:34;6845:6;6739:62;6815:21;:51::i;:::-;6605:1174;;;;6887:14;;6883:896;;6984:19;6996:6;6984:11;:19::i;:::-;-1:-1:-1;;;;;7057:32:34;;;;;;:15;:32;;;;;:38;-1:-1:-1;;;;;7057:38:34;7053:716;;7155:165;;;;;;;;-1:-1:-1;;;;;;;;7155:165:34;;;;;7245:56;7252:16;:14;:16::i;:::-;7245:56;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;7245:56:34;;;:6;:56::i;:::-;7155:165;;;;;;;-1:-1:-1;;;;;7120:32:34;;;;;;:15;:32;;;;;;;;:200;;;;;;;;-1:-1:-1;;;;;;7120:200:34;;;-1:-1:-1;;;;;7120:200:34;;;;;;-1:-1:-1;;;7120:200:34;;;;;;;;;;;;;;;7407:15;:32;;;:38;;7403:113;;7474:10;27::-1;;39:1;23:18;;45:23;;-1:-1;7474:23:34;;;;;;;;-1:-1:-1;;;;;;7474:23:34;-1:-1:-1;;;;;7474:23:34;;;;;7403:113;7053:716;;;7698:56;7705:16;:14;:16::i;7698:56::-;-1:-1:-1;;;;;7657:32:34;;;;;;:15;:32;;;;;:97;;;;;;;-1:-1:-1;;;7657:97:34;-1:-1:-1;;;;;7657:97:34;;;;;;;;;7053:716;7813:9;7793:16;:29;7789:165;;-1:-1:-1;;;;;7838:33:34;;;;;;:16;:33;;;;;;;;;:45;;;7902:41;;;;;;;;;;;;;;;;;6452:1508;;;:::o;3712:118:22:-;3765:4;3788:35;3793:1;3796;3788:35;;;;;;;;;;;;;-1:-1:-1;;;3788:35:22;;;:4;:35::i;:::-;3781:42;3712:118;-1:-1:-1;;;3712:118:22:o;4877:120::-;4930:4;4953:37;4958:1;4961;4953:37;;;;;;;;;;;;;;;;;:4;:37::i;3095:114::-;3148:4;3171:31;3176:1;3179;3171:31;;;;;;;;;;;;;-1:-1:-1;;;3171:31:22;;;:4;:31::i;4852:1419:34:-;-1:-1:-1;;;;;4962:33:34;;4938:21;4962:33;;;:16;:33;;;;;;5009:21;;5005:1085;;5139:38;5169:6;5139:21;:38::i;:::-;5005:1085;;;5198:14;;5194:896;;5295:19;5307:6;5295:11;:19::i;:::-;-1:-1:-1;;;;;5368:32:34;;;;;;:15;:32;;;;;:38;-1:-1:-1;;;;;5368:38:34;5364:716;;5466:165;;;;;;;;-1:-1:-1;;;;;;;;5466:165:34;;;;;5556:56;5563:16;:14;:16::i;5556:56::-;5466:165;;;;;;;-1:-1:-1;;;;;5431:32:34;;;;;;:15;:32;;;;;;;;:200;;;;;;;;-1:-1:-1;;;;;;5431:200:34;;;-1:-1:-1;;;;;5431:200:34;;;;;;-1:-1:-1;;;5431:200:34;;;;;;;;;;;;;;;5718:15;:32;;;:38;;5714:113;;5785:10;27::-1;;39:1;23:18;;45:23;;-1:-1;5785:23:34;;;;;;;;-1:-1:-1;;;;;;5785:23:34;-1:-1:-1;;;;;5785:23:34;;;;;5364:716;;;6009:56;6016:16;:14;:16::i;6009:56::-;-1:-1:-1;;;;;5968:32:34;;;;;;:15;:32;;;;;:97;;;;;;;-1:-1:-1;;;5968:97:34;-1:-1:-1;;;;;5968:97:34;;;;;;;;;5364:716;6124:9;6104:16;:29;6100:165;;-1:-1:-1;;;;;6149:33:34;;;;;;:16;:33;;;;;;;;;:45;;;6213:41;;;;;;;;;;;;;;;;;4852:1419;;;:::o;6429:145:22:-;6486:13;;:::i;:::-;6518:49;;;;;;;;6536:29;6541:20;6546:1;-1:-1:-1;;;6541:4:22;:20::i;:::-;6563:1;6536:4;:29::i;:::-;6518:49;;6511:56;6429:145;-1:-1:-1;;;6429:145:22:o;2931:158::-;3002:13;;:::i;:::-;3034:48;;;;;;;;3052:28;3057:1;:10;;;3069:1;:10;;;3052:4;:28::i;2447:162::-;2523:7;2562:12;-1:-1:-1;;;2550:10:22;;2542:33;;;;-1:-1:-1;;;2542:33:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2542:33:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2600:1:22;;2447:162;-1:-1:-1;;2447:162:22:o;2615:158::-;2690:6;2727:12;-1:-1:-1;;;2716:9:22;;2708:32;;;;-1:-1:-1;;;2708:32:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;3548:158:22;3619:13;;:::i;:::-;3651:48;;;;;;;;3669:28;3674:1;:10;;;3686:1;:10;;;3669:4;:28::i;4746:125::-;4808:4;-1:-1:-1;;;4831:19:22;4836:1;4839;:10;;;4831:4;:19::i;:::-;:33;;;;;;;4746:125;-1:-1:-1;;;4746:125:22:o;5557:124::-;5616:4;5639:35;5644:17;5649:1;409:4;5644;:17::i;:::-;5663:10;;5639:4;:35::i;4018:653:34:-;4116:23;4162:6;-1:-1:-1;;;;;4162:18:34;;:20;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4162:20:34;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4162:20:34;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4162:20:34;4214:36;;;-1:-1:-1;;;4214:36:34;;-1:-1:-1;;;;;4214:36:34;;;;;;;;;4162:20;;-1:-1:-1;4195:13:34;;4214:19;;;;;;:36;;;;;;;;;;;:19;:36;;;5:2:-1;;;;30:1;27;20:12;5:2;4214:36:34;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4214:36:34;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4214:36:34;;-1:-1:-1;4280:4:34;4268:16;;;;4260:54;;;;;-1:-1:-1;;;4260:54:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;4367:21;4391:5;4367:29;;4406;4438:11;-1:-1:-1;;;;;4438:34:34;;:36;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4438:36:34;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4438:36:34;;;;;;39:16:-1;36:1;17:17;2:54;101:4;4438:36:34;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;4438:36:34;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;-1:-1;;;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;4438:36:34;;421:4:-1;412:14;;;;4438:36:34;;;;;412:14:-1;4438:36:34;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4438:36:34;;;;;;;;;;;4406:68;;4489:9;4501:1;4489:13;;4484:111;4508:12;:19;4504:1;:23;4484:111;;;4565:4;-1:-1:-1;;;;;4538:32:34;:12;4551:1;4538:15;;;;;;;;;;;;;;-1:-1:-1;;;;;4538:32:34;;4534:61;;;4591:4;4572:23;;4534:61;4529:3;;4484:111;;;-1:-1:-1;4634:4:34;4614:24;;;;4606:58;;;;;-1:-1:-1;;;4606:58:34;;;;;;;;;;;;-1:-1:-1;;;4606:58:34;;;;;;;;;;;;;;3836:155:22;3917:4;3949:12;3941:6;;;;3933:29;;;;-1:-1:-1;;;3933:29:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;3933:29:22;-1:-1:-1;;;3979:5:22;;;3836:155::o;5003:243::-;5084:4;5104:6;;;:16;;-1:-1:-1;5114:6:22;;5104:16;5100:55;;;-1:-1:-1;5143:1:22;5136:8;;5100:55;5173:5;;;5177:1;5173;:5;:1;5196:5;;;;;:10;5208:12;5188:33;;;;;-1:-1:-1;;;5188:33:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;5188:33:22;-1:-1:-1;5238:1:22;5003:243;-1:-1:-1;;;;5003:243:22:o;3215:175::-;3296:4;3321:5;;;3352:12;3344:6;;;;3336:29;;;;-1:-1:-1;;;3336:29:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;6152:111:22;6205:4;6228:28;6233:1;6236;6228:28;;;;;;;;;;;;;-1:-1:-1;;;6228:28:22;;;6350:4;6381:12;6374:5;6366:28;;;;-1:-1:-1;;;6366:28:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;6366:28:22;;6415:1;6411;:5;;;;;;;6269:154;-1:-1:-1;;;;6269:154:22:o;274:21997:34:-;;;;;;;;;;;;;;:::o"},"methodIdentifiers":{"_acceptAdmin()":"e9c714f2","_grantComp(address,uint256)":"27efe3cb","_setCompBorrowSpeed(address,uint256)":"65999470","_setCompSpeeds(address[],uint256[],uint256[])":"a8b43948","_setCompSupplySpeed(address,uint256)":"e3af317b","_setContributorCompSpeed(address,uint256)":"598ee1cb","_setPendingAdmin(address)":"b71d1a0c","admin()":"f851a440","allMarkets(uint256)":"52d84d1e","claimRewards(address)":"ef5cfb8c","claimRewards(address,address[])":"2026ffa3","claimRewards(address[],address[],bool,bool)":"54eb76fa","compAccrued(address)":"cc7ebdc4","compBorrowSpeeds(address)":"f4a433c0","compBorrowState(address)":"8c57804e","compBorrowerIndex(address,address)":"ca0af043","compContributorSpeeds(address)":"986ab838","compInitialIndex()":"a7f0e231","compSupplierIndex(address,address)":"b21be7fd","compSupplySpeeds(address)":"6aa875b5","compSupplyState(address)":"6b79c38d","flywheelPreBorrowerAction(address,address)":"e6e162e8","flywheelPreSupplierAction(address,address)":"1c9161e0","flywheelPreTransferAction(address,address,address)":"4e081c95","getAllMarkets()":"b0772d0b","getBlockNumber()":"42cbb15c","implementation()":"5c60da1b","initialize(address)":"c4d66de8","isRewardsDistributor()":"abc6d72d","lastContributorBlock(address)":"bea6b8b8","pendingAdmin()":"26782247","rewardToken()":"f7c618c1","updateContributorRewards(address)":"741b2525"}},"metadata":"{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract CToken\",\"name\":\"cToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newSpeed\",\"type\":\"uint256\"}],\"name\":\"CompBorrowSpeedUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"CompGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract CToken\",\"name\":\"cToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newSpeed\",\"type\":\"uint256\"}],\"name\":\"CompSupplySpeedUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contributor\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newSpeed\",\"type\":\"uint256\"}],\"name\":\"ContributorCompSpeedUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract CToken\",\"name\":\"cToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"compDelta\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"compBorrowIndex\",\"type\":\"uint256\"}],\"name\":\"DistributedBorrowerComp\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract CToken\",\"name\":\"cToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"supplier\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"compDelta\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"compSupplyIndex\",\"type\":\"uint256\"}],\"name\":\"DistributedSupplierComp\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"NewAdmin\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldPendingAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newPendingAdmin\",\"type\":\"address\"}],\"name\":\"NewPendingAdmin\",\"type\":\"event\"},{\"constant\":false,\"inputs\":[],\"name\":\"_acceptAdmin\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"_grantComp\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contract CToken\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"compSpeed\",\"type\":\"uint256\"}],\"name\":\"_setCompBorrowSpeed\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contract CToken[]\",\"name\":\"cTokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"supplySpeeds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"borrowSpeeds\",\"type\":\"uint256[]\"}],\"name\":\"_setCompSpeeds\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contract CToken\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"compSpeed\",\"type\":\"uint256\"}],\"name\":\"_setCompSupplySpeed\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"contributor\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"compSpeed\",\"type\":\"uint256\"}],\"name\":\"_setContributorCompSpeed\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"newPendingAdmin\",\"type\":\"address\"}],\"name\":\"_setPendingAdmin\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"allMarkets\",\"outputs\":[{\"internalType\":\"contract CToken\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"contract CToken[]\",\"name\":\"cTokens\",\"type\":\"address[]\"}],\"name\":\"claimRewards\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"holders\",\"type\":\"address[]\"},{\"internalType\":\"contract CToken[]\",\"name\":\"cTokens\",\"type\":\"address[]\"},{\"internalType\":\"bool\",\"name\":\"borrowers\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"suppliers\",\"type\":\"bool\"}],\"name\":\"claimRewards\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"}],\"name\":\"claimRewards\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"compAccrued\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"compBorrowSpeeds\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"compBorrowState\",\"outputs\":[{\"internalType\":\"uint224\",\"name\":\"index\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"block\",\"type\":\"uint32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"compBorrowerIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"compContributorSpeeds\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"compInitialIndex\",\"outputs\":[{\"internalType\":\"uint224\",\"name\":\"\",\"type\":\"uint224\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"compSupplierIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"compSupplySpeeds\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"compSupplyState\",\"outputs\":[{\"internalType\":\"uint224\",\"name\":\"index\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"block\",\"type\":\"uint32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"}],\"name\":\"flywheelPreBorrowerAction\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"supplier\",\"type\":\"address\"}],\"name\":\"flywheelPreSupplierAction\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"}],\"name\":\"flywheelPreTransferAction\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getAllMarkets\",\"outputs\":[{\"internalType\":\"contract CToken[]\",\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getBlockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_rewardToken\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isRewardsDistributor\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"lastContributorBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"pendingAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"rewardToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"contributor\",\"type\":\"address\"}],\"name\":\"updateContributorRewards\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Compound\",\"methods\":{\"_acceptAdmin()\":{\"details\":\"Admin function for pending admin to accept role and update admin\"},\"_grantComp(address,uint256)\":{\"details\":\"Note: If there is not enough COMP, we do not perform the transfer all.\",\"params\":{\"amount\":\"The amount of COMP to (possibly) transfer\",\"recipient\":\"The address of the recipient to transfer COMP to\"}},\"_setCompBorrowSpeed(address,uint256)\":{\"params\":{\"cToken\":\"The market whose COMP speed to update\",\"compSpeed\":\"New COMP speed for market\"}},\"_setCompSpeeds(address[],uint256[],uint256[])\":{\"params\":{\"borrowSpeeds\":\"New borrow-side COMP speed for the corresponding market.\",\"cTokens\":\"The markets whose COMP speed to update.\",\"supplySpeeds\":\"New supply-side COMP speed for the corresponding market.\"}},\"_setCompSupplySpeed(address,uint256)\":{\"params\":{\"cToken\":\"The market whose COMP speed to update\",\"compSpeed\":\"New COMP speed for market\"}},\"_setContributorCompSpeed(address,uint256)\":{\"params\":{\"compSpeed\":\"New COMP speed for contributor\",\"contributor\":\"The contributor whose COMP speed to update\"}},\"_setPendingAdmin(address)\":{\"details\":\"Admin function to begin change of admin. The newPendingAdmin must call `_acceptAdmin` to finalize the transfer.\",\"params\":{\"newPendingAdmin\":\"New pending admin.\"}},\"claimRewards(address)\":{\"params\":{\"holder\":\"The address to claim COMP for\"}},\"claimRewards(address,address[])\":{\"params\":{\"cTokens\":\"The list of markets to claim COMP in\",\"holder\":\"The address to claim COMP for\"}},\"claimRewards(address[],address[],bool,bool)\":{\"params\":{\"borrowers\":\"Whether or not to claim COMP earned by borrowing\",\"cTokens\":\"The list of markets to claim COMP in\",\"holders\":\"The addresses to claim COMP for\",\"suppliers\":\"Whether or not to claim COMP earned by supplying\"}},\"flywheelPreBorrowerAction(address,address)\":{\"details\":\"Called by the Comptroller\",\"params\":{\"borrower\":\"The borrower\",\"cToken\":\"The relevant market\"}},\"flywheelPreSupplierAction(address,address)\":{\"details\":\"Called by the Comptroller\",\"params\":{\"cToken\":\"The relevant market\",\"supplier\":\"The minter/redeemer\"}},\"flywheelPreTransferAction(address,address,address)\":{\"details\":\"Called by the Comptroller\",\"params\":{\"cToken\":\"The relevant market\",\"dst\":\"The account which receives the tokens\",\"src\":\"The account which sources the tokens\"}},\"initialize(address)\":{\"details\":\"Intitializer to set admin to caller and set reward token\"},\"updateContributorRewards(address)\":{\"params\":{\"contributor\":\"The address to calculate contributor rewards for\"}}},\"title\":\"RewardsDistributorDelegate (COMP distribution logic extracted from `Comptroller`)\"},\"userdoc\":{\"methods\":{\"_acceptAdmin()\":{\"notice\":\"Accepts transfer of admin rights. msg.sender must be pendingAdmin\"},\"_grantComp(address,uint256)\":{\"notice\":\"Transfer COMP to the recipient\"},\"_setCompBorrowSpeed(address,uint256)\":{\"notice\":\"Set COMP speed for a single market\"},\"_setCompSpeeds(address[],uint256[],uint256[])\":{\"notice\":\"Set COMP borrow and supply speeds for the specified markets.\"},\"_setCompSupplySpeed(address,uint256)\":{\"notice\":\"Set COMP speed for a single market\"},\"_setContributorCompSpeed(address,uint256)\":{\"notice\":\"Set COMP speed for a single contributor\"},\"_setPendingAdmin(address)\":{\"notice\":\"Begins transfer of admin rights. The newPendingAdmin must call `_acceptAdmin` to finalize the transfer.\"},\"claimRewards(address)\":{\"notice\":\"Claim all the comp accrued by holder in all markets\"},\"claimRewards(address,address[])\":{\"notice\":\"Claim all the comp accrued by holder in the specified markets\"},\"claimRewards(address[],address[],bool,bool)\":{\"notice\":\"Claim all comp accrued by the holders\"},\"flywheelPreBorrowerAction(address,address)\":{\"notice\":\"Keeps the flywheel moving pre-borrow and pre-repay\"},\"flywheelPreSupplierAction(address,address)\":{\"notice\":\"Keeps the flywheel moving pre-mint and pre-redeem\"},\"flywheelPreTransferAction(address,address,address)\":{\"notice\":\"Keeps the flywheel moving pre-transfer and pre-seize\"},\"getAllMarkets()\":{\"notice\":\"Returns an array of all markets.\"},\"getBlockNumber()\":{\"notice\":\"* Helper Functions \"},\"updateContributorRewards(address)\":{\"notice\":\"Calculate additional accrued COMP for a contributor since last accrual\"}}}},\"settings\":{\"compilationTarget\":{\"contracts/RewardsDistributorDelegate.sol\":\"RewardsDistributorDelegate\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/CErc20.sol\":{\"keccak256\":\"0x37e284e3ca9a2821c3ad1001d110ca529820646f65dd441f5907070408b20bc2\",\"urls\":[\"bzz-raw://cb025aa0f581e05f023e5aef44cfcd47cdece7ec4cf53973d89834f5037666d2\",\"dweb:/ipfs/QmaY78mEyhUCuvbMVdGzpKmkw9yKoHz5noSg5REZgipupY\"]},\"contracts/CToken.sol\":{\"keccak256\":\"0xc3a5a827241528049e20a24cc446558c8a9272909f75ce5d1cf14ae3ab5feba3\",\"urls\":[\"bzz-raw://a403db2bf1a8e5e9384df19600bd18d4251056818b094afcdab418e683bb5cb8\",\"dweb:/ipfs/QmdkRbFGtKP67tNNqyH7BraDRGerwRNA7ktscbFV9LioM2\"]},\"contracts/CTokenInterfaces.sol\":{\"keccak256\":\"0xc8a056c724ef4f0215ece6011e7ac1007c9dc7611ce5160d470ec858bbb06bd3\",\"urls\":[\"bzz-raw://58951693d1b53d2722e55b068bab2b570f4b044d89c28ed6b53bac6e95aeb662\",\"dweb:/ipfs/QmQiNTw5jZR74WjKfX2bPiuTT4tuFuq8rx7QxEVyVvdGLn\"]},\"contracts/CarefulMath.sol\":{\"keccak256\":\"0x1487237dbbbb73ad43c8eff16e78311753719a94a5065f574de5c91b672c56f8\",\"urls\":[\"bzz-raw://349966a236f313b2cb42e1942832e6bd7e134f65f6654e6c4d46788e65cc4a9b\",\"dweb:/ipfs/Qmebpv8i5jLR4fLgpZHQZRLu6aefVAbLC2yUk9ABEekquz\"]},\"contracts/Comptroller.sol\":{\"keccak256\":\"0x1a11340e552facccbe4950166a87a2cabee6f41f0b09062314172f51b12102c4\",\"urls\":[\"bzz-raw://23d8b3dbe4e31d51cf78090a784420aa6b46d0c37f57d093fe78671677895863\",\"dweb:/ipfs/QmcLUe2GNaJQHuhBPdYgBdudDYNqaLjNJc7c914y878gJp\"]},\"contracts/ComptrollerInterface.sol\":{\"keccak256\":\"0xecfb84fabc9792d0b1c912886249c67bc42c39eb065d962d0b9a5f3736af5892\",\"urls\":[\"bzz-raw://711547ebc1a7f18b271118dd98276771953a9d7b3674716f67d247be9b907372\",\"dweb:/ipfs/QmbVZNvkBp8miByATrL6y5j8MePdcQ8uTAUZMpKrhpLgoa\"]},\"contracts/ComptrollerStorage.sol\":{\"keccak256\":\"0x83961d3c12984fe4afc72717fc44b2d868563d053a0eceda0cbf17ec6b255913\",\"urls\":[\"bzz-raw://ea667c2de43881f9be19f4f75dec348632273178965fc9b3655705d853b032bb\",\"dweb:/ipfs/QmZP6sbNFSgFZrAEvfRjhp1NtGj6U6Sea3JGiKG96AHyeP\"]},\"contracts/EIP20Interface.sol\":{\"keccak256\":\"0xee33b8b333743308a9153a59f22da2cadb22cedef4403fe039bf9e057c9c729a\",\"urls\":[\"bzz-raw://5427fdb941300d36a424da0a0a5800e3b2ca51c9c922831dbfce2f6637402b43\",\"dweb:/ipfs/QmTrvmLynqSUPjsGW2dpiQ91dSmn4xzccQiwr8qaBtyvjH\"]},\"contracts/EIP20NonStandardInterface.sol\":{\"keccak256\":\"0x469899442dd9640bfc2c670d404ad3027e48df5df8e5aeab0e25cc6b6aae05f5\",\"urls\":[\"bzz-raw://d8c4498abaf539eb413a2f1a916d75945adc8bd4ef437f8450cb67e07be3f38d\",\"dweb:/ipfs/QmaFpWfnhAMYW21rbT5PEszn4TGHdGU58Eq5AfZsCuapZ3\"]},\"contracts/ErrorReporter.sol\":{\"keccak256\":\"0xe9587478bc9efad203cab02b8aecae32828cfc9a271b13ae3c018e38e44aab32\",\"urls\":[\"bzz-raw://2eb34bdbbbc410fb401d50ddca44a7421a1d8191711c569ed5bcec1c1b07a05c\",\"dweb:/ipfs/QmYKNCYppyx3NGiwtjdLEmxUMgfnFBqT4pnvnhnBrPgrxS\"]},\"contracts/Exponential.sol\":{\"keccak256\":\"0xfda0e2b610541cf1cf316a0000c89a1069ccc21f1566affc0a058810e2b835d3\",\"urls\":[\"bzz-raw://fe319f184f1b5f27019d3d890124cd24e466d27153ac38eb9ff6b16efbad48b9\",\"dweb:/ipfs/Qmcev6jCmtdCviJxUQvUCmesPDShRDSvdfUEfvsqd4GEJA\"]},\"contracts/ExponentialNoError.sol\":{\"keccak256\":\"0x713a089f4bbcaec1d3924fc7d9a2154904a39f46cb6f25b713167dbe5f21623e\",\"urls\":[\"bzz-raw://d7108d68af7c5effd4272615ceba54e79e585f6b8be5aabc7602245c84c7b9e0\",\"dweb:/ipfs/QmQZo2XpxW7w5viVEg71mi9eKaAYD7HUqfCMB5yCCPVnc5\"]},\"contracts/IFuseFeeDistributor.sol\":{\"keccak256\":\"0xb5d287b8e05574d38bd5d0b413f44b4c5d312f28188573ac60abe78123fbd92c\",\"urls\":[\"bzz-raw://84c2bbf746a82aaa100bee90c7dd40411c723bded124bb1775bf72bf7fda8a2c\",\"dweb:/ipfs/QmToQzDtz9BV2tvU71YsfWjdaZu5qpP1xKFZ1TkQgubhDb\"]},\"contracts/InterestRateModel.sol\":{\"keccak256\":\"0x0cc0dbd1991e5dcdcff58b0c82a9471a0fb9df26763e5e7415e1d081b7332409\",\"urls\":[\"bzz-raw://f4d7936aefc43ea2724f0e472b8f1517f1ca40170258ab9d5bbd0862dd0c4f13\",\"dweb:/ipfs/QmfYjG1Sm3kNwbhomHCWhMqw9LvaJVWVzBe4Te5BHRbTQS\"]},\"contracts/PriceOracle.sol\":{\"keccak256\":\"0x62ba3a5ec8f06d456ab089d6ca7f9d14d3a6ce6814923271ca60a6990918fb41\",\"urls\":[\"bzz-raw://aa6d2f20efdd5389161eb15bdab98b5628dc8cd5354394bbed35bb14d3612506\",\"dweb:/ipfs/QmVfo4eCDuk8LMSywpBjZBxCv7zLCNsG6u3nyD1d4CYwsD\"]},\"contracts/RewardsDistributorDelegate.sol\":{\"keccak256\":\"0xe44b7f3b3cc91d387205e2ac37fef6bbac051104a8c654e157dca25aa4efb236\",\"urls\":[\"bzz-raw://7f86f8e3162d8d5deaee2b06e81aa033e91c8f3e523bd45dbbfc1acadbae8732\",\"dweb:/ipfs/QmRGG9FMP24q4D1Xi525LnZHN6iwWddqxYQrTpRnpSPri3\"]},\"contracts/RewardsDistributorStorage.sol\":{\"keccak256\":\"0x3ce7a399413ff2e33fc2d77bb0a124be668c919899e0042ce867232b53f06786\",\"urls\":[\"bzz-raw://6044a7f8506f190e2eb4d300eb55f4bbeb56b30e0690a9f5e430c289d94f5f19\",\"dweb:/ipfs/QmZ5c629f93tQErFZdAwGYD5SegHbMrNGHRFhnc2k6vBVh\"]},\"contracts/Unitroller.sol\":{\"keccak256\":\"0x36bf7b6c12ddf5053da8b8b4c0c23da46df6c62eec0e31230c57f9aedf9b9d2d\",\"urls\":[\"bzz-raw://866cf0d98da484f9ed07fb98b3e1ef2db0ef33f3f0be5c02becdf07da448ce4a\",\"dweb:/ipfs/Qma8qNfmcfjReH5LT7Aaujqu3qdsBkdwExgS5yPgSbzYMF\"]}},\"version\":1}"}},"contracts/RewardsDistributorDelegator.sol":{"RewardsDistributorDelegator":{"abi":[{"inputs":[{"internalType":"address","name":"admin_","type":"address"},{"internalType":"address","name":"rewardToken_","type":"address"},{"internalType":"address","name":"implementation_","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldImplementation","type":"address"},{"indexed":false,"internalType":"address","name":"newImplementation","type":"address"}],"name":"NewImplementation","type":"event"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":false,"inputs":[{"internalType":"address","name":"implementation_","type":"address"}],"name":"_setImplementation","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pendingAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b506040516106553803806106558339818101604052606081101561003357600080fd5b508051602080830151604093840151600080546001600160a01b0319163317905584516001600160a01b03831660248083019190915286518083039091018152604490910190955291840180516001600160e01b0390811663189acdbd60e31b17909152929390926100a79183916100e016565b6100b9816001600160e01b0361019e16565b5050600080546001600160a01b0319166001600160a01b039290921691909117905561028e565b60006060836001600160a01b0316836040518082805190602001908083835b6020831061011e5780518252601f1990920191602091820191016100ff565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d806000811461017e576040519150601f19603f3d011682016040523d82523d6000602084013e610183565b606091505b50915091506000821415610198573d60208201fd5b50505050565b6000546001600160a01b031633146101e75760405162461bcd60e51b815260040180806020018281038252603b8152602001806105cb603b913960400191505060405180910390fd5b6001600160a01b03811661022c5760405162461bcd60e51b815260040180806020018281038252604f815260200180610606604f913960600191505060405180910390fd5b600280546001600160a01b038381166001600160a01b0319831617928390556040805192821680845293909116602083015280517fd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a9281900390910190a15050565b61032e8061029d6000396000f3fe60806040526004361061003f5760003560e01c806326782247146100c25780635c60da1b146100f3578063bb913f4114610108578063f851a4401461013d575b6002546040516000916001600160a01b031690829036908083838082843760405192019450600093509091505080830381855af49150503d80600081146100a2576040519150601f19603f3d011682016040523d82523d6000602084013e6100a7565b606091505b505090506040513d6000823e8180156100be573d82f35b3d82fd5b3480156100ce57600080fd5b506100d7610152565b604080516001600160a01b039092168252519081900360200190f35b3480156100ff57600080fd5b506100d7610161565b34801561011457600080fd5b5061013b6004803603602081101561012b57600080fd5b50356001600160a01b0316610170565b005b34801561014957600080fd5b506100d7610260565b6001546001600160a01b031681565b6002546001600160a01b031681565b6000546001600160a01b031633146101b95760405162461bcd60e51b815260040180806020018281038252603b815260200180610270603b913960400191505060405180910390fd5b6001600160a01b0381166101fe5760405162461bcd60e51b815260040180806020018281038252604f8152602001806102ab604f913960600191505060405180910390fd5b600280546001600160a01b038381166001600160a01b0319831617928390556040805192821680845293909116602083015280517fd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a9281900390910190a15050565b6000546001600160a01b03168156fe526577617264734469737472696275746f7244656c656761746f723a3a5f736574496d706c656d656e746174696f6e3a2061646d696e206f6e6c79526577617264734469737472696275746f7244656c656761746f723a3a5f736574496d706c656d656e746174696f6e3a20696e76616c696420696d706c656d656e746174696f6e2061646472657373a265627a7a723158203af7d63e0c131ab0ff162729d89449be2ba98a9052d95fdf91ab15a6d56b6cbb64736f6c63430005110032526577617264734469737472696275746f7244656c656761746f723a3a5f736574496d706c656d656e746174696f6e3a2061646d696e206f6e6c79526577617264734469737472696275746f7244656c656761746f723a3a5f736574496d706c656d656e746174696f6e3a20696e76616c696420696d706c656d656e746174696f6e2061646472657373","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x655 CODESIZE SUB DUP1 PUSH2 0x655 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x40 SWAP4 DUP5 ADD MLOAD PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER OR SWAP1 SSTORE DUP5 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x24 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP7 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP2 ADD SWAP1 SWAP6 MSTORE SWAP2 DUP5 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB SWAP1 DUP2 AND PUSH4 0x189ACDBD PUSH1 0xE3 SHL OR SWAP1 SWAP2 MSTORE SWAP3 SWAP4 SWAP1 SWAP3 PUSH2 0xA7 SWAP2 DUP4 SWAP2 PUSH2 0xE0 AND JUMP JUMPDEST PUSH2 0xB9 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH2 0x19E AND JUMP JUMPDEST POP POP PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x28E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x11E JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xFF JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x17E 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 0x183 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x198 JUMPI RETURNDATASIZE PUSH1 0x20 DUP3 ADD REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1E7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5CB PUSH1 0x3B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x22C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x4F DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x606 PUSH1 0x4F SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND OR SWAP3 DUP4 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP3 DUP3 AND DUP1 DUP5 MSTORE SWAP4 SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD PUSH32 0xD604DE94D45953F9138079EC1B82D533CB2160C906D1076D1F7ED54BEFBCA97A SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH2 0x32E DUP1 PUSH2 0x29D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x3F JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x26782247 EQ PUSH2 0xC2 JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0xF3 JUMPI DUP1 PUSH4 0xBB913F41 EQ PUSH2 0x108 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x13D JUMPI JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP3 SWAP1 CALLDATASIZE SWAP1 DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x40 MLOAD SWAP3 ADD SWAP5 POP PUSH1 0x0 SWAP4 POP SWAP1 SWAP2 POP POP DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xA2 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 0xA7 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY DUP2 DUP1 ISZERO PUSH2 0xBE JUMPI RETURNDATASIZE DUP3 RETURN JUMPDEST RETURNDATASIZE DUP3 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD7 PUSH2 0x152 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD7 PUSH2 0x161 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x114 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x13B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x12B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x170 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x149 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD7 PUSH2 0x260 JUMP JUMPDEST PUSH1 0x1 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 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1B9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x270 PUSH1 0x3B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1FE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x4F DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2AB PUSH1 0x4F SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND OR SWAP3 DUP4 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP3 DUP3 AND DUP1 DUP5 MSTORE SWAP4 SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD PUSH32 0xD604DE94D45953F9138079EC1B82D533CB2160C906D1076D1F7ED54BEFBCA97A SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP INVALID MSTORE PUSH6 0x776172647344 PUSH10 0x737472696275746F7244 PUSH6 0x6C656761746F PUSH19 0x3A3A5F736574496D706C656D656E746174696F PUSH15 0x3A2061646D696E206F6E6C79526577 PUSH2 0x7264 PUSH20 0x4469737472696275746F7244656C656761746F72 GASPRICE GASPRICE 0x5F PUSH20 0x6574496D706C656D656E746174696F6E3A20696E PUSH23 0x616C696420696D706C656D656E746174696F6E20616464 PUSH19 0x657373A265627A7A723158203AF7D63E0C131A 0xB0 SELFDESTRUCT AND 0x27 0x29 0xD8 SWAP5 0x49 0xBE 0x2B 0xA9 DUP11 SWAP1 MSTORE 0xD9 0x5F 0xDF SWAP2 0xAB ISZERO 0xA6 0xD5 PUSH12 0x6CBB64736F6C634300051100 ORIGIN MSTORE PUSH6 0x776172647344 PUSH10 0x737472696275746F7244 PUSH6 0x6C656761746F PUSH19 0x3A3A5F736574496D706C656D656E746174696F PUSH15 0x3A2061646D696E206F6E6C79526577 PUSH2 0x7264 PUSH20 0x4469737472696275746F7244656C656761746F72 GASPRICE GASPRICE 0x5F PUSH20 0x6574496D706C656D656E746174696F6E3A20696E PUSH23 0x616C696420696D706C656D656E746174696F6E20616464 PUSH19 0x65737300000000000000000000000000000000 ","sourceMap":"68:2449:35:-;;;285:356;8:9:-1;5:2;;;30:1;27;20:12;5:2;285:356:35;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;285:356:35;;;;;;;;;;;;448:5;:18;;-1:-1:-1;;;;;;448:18:35;456:10;448:18;;;505:60;;-1:-1:-1;;;;;505:60:35;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;505:60:35;;;;;;;25:18:-1;;;61:17;;-1:-1;;;;;182:15;;;-1:-1;;;179:29;160:49;;;285:356:35;;;;477:89;;285:356;;477:10;:89;:::i;:::-;577:35;596:15;-1:-1:-1;;;;;577:18:35;:35;:::i;:::-;-1:-1:-1;;623:5:35;:14;;-1:-1:-1;;;;;;623:14:35;-1:-1:-1;;;;;623:14:35;;;;;;;;;;68:2449;;1582:285;1657:12;1671:23;1698:6;-1:-1:-1;;;;;1698:19:35;1718:4;1698:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;1698:25:35;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;1656:67:35;;;;1771:1;1762:7;1759:14;1756:2;;;1822:14;1815:4;1803:10;1799:21;1792:45;1756:2;1742:119;;;;:::o;825:462::-;917:5;;-1:-1:-1;;;;;917:5:35;903:10;:19;895:91;;;;-1:-1:-1;;;895:91:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1004:29:35;;996:121;;;;-1:-1:-1;;;996:121:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1156:14;;;-1:-1:-1;;;;;1180:32:35;;;-1:-1:-1;;;;;;1180:32:35;;;;;;;1228:52;;;1156:14;;;1228:52;;;1265:14;;;;1228:52;;;;;;;;;;;;;;;;825:462;;:::o;68:2449::-;;;;;;;"},"deployedBytecode":{"linkReferences":{},"object":"60806040526004361061003f5760003560e01c806326782247146100c25780635c60da1b146100f3578063bb913f4114610108578063f851a4401461013d575b6002546040516000916001600160a01b031690829036908083838082843760405192019450600093509091505080830381855af49150503d80600081146100a2576040519150601f19603f3d011682016040523d82523d6000602084013e6100a7565b606091505b505090506040513d6000823e8180156100be573d82f35b3d82fd5b3480156100ce57600080fd5b506100d7610152565b604080516001600160a01b039092168252519081900360200190f35b3480156100ff57600080fd5b506100d7610161565b34801561011457600080fd5b5061013b6004803603602081101561012b57600080fd5b50356001600160a01b0316610170565b005b34801561014957600080fd5b506100d7610260565b6001546001600160a01b031681565b6002546001600160a01b031681565b6000546001600160a01b031633146101b95760405162461bcd60e51b815260040180806020018281038252603b815260200180610270603b913960400191505060405180910390fd5b6001600160a01b0381166101fe5760405162461bcd60e51b815260040180806020018281038252604f8152602001806102ab604f913960600191505060405180910390fd5b600280546001600160a01b038381166001600160a01b0319831617928390556040805192821680845293909116602083015280517fd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a9281900390910190a15050565b6000546001600160a01b03168156fe526577617264734469737472696275746f7244656c656761746f723a3a5f736574496d706c656d656e746174696f6e3a2061646d696e206f6e6c79526577617264734469737472696275746f7244656c656761746f723a3a5f736574496d706c656d656e746174696f6e3a20696e76616c696420696d706c656d656e746174696f6e2061646472657373a265627a7a723158203af7d63e0c131ab0ff162729d89449be2ba98a9052d95fdf91ab15a6d56b6cbb64736f6c63430005110032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x3F JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x26782247 EQ PUSH2 0xC2 JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0xF3 JUMPI DUP1 PUSH4 0xBB913F41 EQ PUSH2 0x108 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x13D JUMPI JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP3 SWAP1 CALLDATASIZE SWAP1 DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x40 MLOAD SWAP3 ADD SWAP5 POP PUSH1 0x0 SWAP4 POP SWAP1 SWAP2 POP POP DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xA2 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 0xA7 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY DUP2 DUP1 ISZERO PUSH2 0xBE JUMPI RETURNDATASIZE DUP3 RETURN JUMPDEST RETURNDATASIZE DUP3 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD7 PUSH2 0x152 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD7 PUSH2 0x161 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x114 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x13B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x12B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x170 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x149 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD7 PUSH2 0x260 JUMP JUMPDEST PUSH1 0x1 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 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1B9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x270 PUSH1 0x3B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1FE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x4F DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2AB PUSH1 0x4F SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND OR SWAP3 DUP4 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP3 DUP3 AND DUP1 DUP5 MSTORE SWAP4 SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD PUSH32 0xD604DE94D45953F9138079EC1B82D533CB2160C906D1076D1F7ED54BEFBCA97A SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP INVALID MSTORE PUSH6 0x776172647344 PUSH10 0x737472696275746F7244 PUSH6 0x6C656761746F PUSH19 0x3A3A5F736574496D706C656D656E746174696F PUSH15 0x3A2061646D696E206F6E6C79526577 PUSH2 0x7264 PUSH20 0x4469737472696275746F7244656C656761746F72 GASPRICE GASPRICE 0x5F PUSH20 0x6574496D706C656D656E746174696F6E3A20696E PUSH23 0x616C696420696D706C656D656E746174696F6E20616464 PUSH19 0x657373A265627A7A723158203AF7D63E0C131A 0xB0 SELFDESTRUCT AND 0x27 0x29 0xD8 SWAP5 0x49 0xBE 0x2B 0xA9 DUP11 SWAP1 MSTORE 0xD9 0x5F 0xDF SWAP2 0xAB ISZERO 0xA6 0xD5 PUSH12 0x6CBB64736F6C634300051100 ORIGIN ","sourceMap":"68:2449:35:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2178:14;;:37;;2160:12;;-1:-1:-1;;;;;2178:14:35;;2160:12;;2206:8;;2178:37;2160:12;2206:8;;2160:12;2178:37;1:33:-1;2178:37:35;;45:16:-1;;;-1:-1;2178:37:35;;-1:-1:-1;2178:37:35;;-1:-1:-1;;2178:37:35;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;2159:56:35;;;2277:4;2271:11;2329:14;2326:1;2312:12;2297:47;2367:7;2389:47;;;;2482:14;2468:12;2461:36;2389:47;2419:14;2405:12;2398:36;230:27:36;;8:9:-1;5:2;;;30:1;27;20:12;5:2;230:27:36;;;:::i;:::-;;;;-1:-1:-1;;;;;230:27:36;;;;;;;;;;;;;;316:29;;8:9:-1;5:2;;;30:1;27;20:12;5:2;316:29:36;;;:::i;825:462:35:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;825:462:35;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;825:462:35;-1:-1:-1;;;;;825:462:35;;:::i;:::-;;147:20:36;;8:9:-1;5:2;;;30:1;27;20:12;5:2;147:20:36;;;:::i;230:27::-;;;-1:-1:-1;;;;;230:27:36;;:::o;316:29::-;;;-1:-1:-1;;;;;316:29:36;;:::o;825:462:35:-;917:5;;-1:-1:-1;;;;;917:5:35;903:10;:19;895:91;;;;-1:-1:-1;;;895:91:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1004:29:35;;996:121;;;;-1:-1:-1;;;996:121:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1156:14;;;-1:-1:-1;;;;;1180:32:35;;;-1:-1:-1;;;;;;1180:32:35;;;;;;;1228:52;;;1156:14;;;1228:52;;;1265:14;;;;1228:52;;;;;;;;;;;;;;;;825:462;;:::o;147:20:36:-;;;-1:-1:-1;;;;;147:20:36;;:::o"},"methodIdentifiers":{"_setImplementation(address)":"bb913f41","admin()":"f851a440","implementation()":"5c60da1b","pendingAdmin()":"26782247"}},"metadata":"{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"rewardToken_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"implementation_\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldImplementation\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"NewImplementation\",\"type\":\"event\"},{\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation_\",\"type\":\"address\"}],\"name\":\"_setImplementation\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"pendingAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"_setImplementation(address)\":{\"params\":{\"implementation_\":\"The address of the new implementation for delegation\"}}}},\"userdoc\":{\"methods\":{\"_setImplementation(address)\":{\"notice\":\"Called by the admin to update the implementation of the delegator\"}}}},\"settings\":{\"compilationTarget\":{\"contracts/RewardsDistributorDelegator.sol\":\"RewardsDistributorDelegator\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/CToken.sol\":{\"keccak256\":\"0xc3a5a827241528049e20a24cc446558c8a9272909f75ce5d1cf14ae3ab5feba3\",\"urls\":[\"bzz-raw://a403db2bf1a8e5e9384df19600bd18d4251056818b094afcdab418e683bb5cb8\",\"dweb:/ipfs/QmdkRbFGtKP67tNNqyH7BraDRGerwRNA7ktscbFV9LioM2\"]},\"contracts/CTokenInterfaces.sol\":{\"keccak256\":\"0xc8a056c724ef4f0215ece6011e7ac1007c9dc7611ce5160d470ec858bbb06bd3\",\"urls\":[\"bzz-raw://58951693d1b53d2722e55b068bab2b570f4b044d89c28ed6b53bac6e95aeb662\",\"dweb:/ipfs/QmQiNTw5jZR74WjKfX2bPiuTT4tuFuq8rx7QxEVyVvdGLn\"]},\"contracts/CarefulMath.sol\":{\"keccak256\":\"0x1487237dbbbb73ad43c8eff16e78311753719a94a5065f574de5c91b672c56f8\",\"urls\":[\"bzz-raw://349966a236f313b2cb42e1942832e6bd7e134f65f6654e6c4d46788e65cc4a9b\",\"dweb:/ipfs/Qmebpv8i5jLR4fLgpZHQZRLu6aefVAbLC2yUk9ABEekquz\"]},\"contracts/ComptrollerInterface.sol\":{\"keccak256\":\"0xecfb84fabc9792d0b1c912886249c67bc42c39eb065d962d0b9a5f3736af5892\",\"urls\":[\"bzz-raw://711547ebc1a7f18b271118dd98276771953a9d7b3674716f67d247be9b907372\",\"dweb:/ipfs/QmbVZNvkBp8miByATrL6y5j8MePdcQ8uTAUZMpKrhpLgoa\"]},\"contracts/ComptrollerStorage.sol\":{\"keccak256\":\"0x83961d3c12984fe4afc72717fc44b2d868563d053a0eceda0cbf17ec6b255913\",\"urls\":[\"bzz-raw://ea667c2de43881f9be19f4f75dec348632273178965fc9b3655705d853b032bb\",\"dweb:/ipfs/QmZP6sbNFSgFZrAEvfRjhp1NtGj6U6Sea3JGiKG96AHyeP\"]},\"contracts/EIP20Interface.sol\":{\"keccak256\":\"0xee33b8b333743308a9153a59f22da2cadb22cedef4403fe039bf9e057c9c729a\",\"urls\":[\"bzz-raw://5427fdb941300d36a424da0a0a5800e3b2ca51c9c922831dbfce2f6637402b43\",\"dweb:/ipfs/QmTrvmLynqSUPjsGW2dpiQ91dSmn4xzccQiwr8qaBtyvjH\"]},\"contracts/EIP20NonStandardInterface.sol\":{\"keccak256\":\"0x469899442dd9640bfc2c670d404ad3027e48df5df8e5aeab0e25cc6b6aae05f5\",\"urls\":[\"bzz-raw://d8c4498abaf539eb413a2f1a916d75945adc8bd4ef437f8450cb67e07be3f38d\",\"dweb:/ipfs/QmaFpWfnhAMYW21rbT5PEszn4TGHdGU58Eq5AfZsCuapZ3\"]},\"contracts/ErrorReporter.sol\":{\"keccak256\":\"0xe9587478bc9efad203cab02b8aecae32828cfc9a271b13ae3c018e38e44aab32\",\"urls\":[\"bzz-raw://2eb34bdbbbc410fb401d50ddca44a7421a1d8191711c569ed5bcec1c1b07a05c\",\"dweb:/ipfs/QmYKNCYppyx3NGiwtjdLEmxUMgfnFBqT4pnvnhnBrPgrxS\"]},\"contracts/Exponential.sol\":{\"keccak256\":\"0xfda0e2b610541cf1cf316a0000c89a1069ccc21f1566affc0a058810e2b835d3\",\"urls\":[\"bzz-raw://fe319f184f1b5f27019d3d890124cd24e466d27153ac38eb9ff6b16efbad48b9\",\"dweb:/ipfs/Qmcev6jCmtdCviJxUQvUCmesPDShRDSvdfUEfvsqd4GEJA\"]},\"contracts/ExponentialNoError.sol\":{\"keccak256\":\"0x713a089f4bbcaec1d3924fc7d9a2154904a39f46cb6f25b713167dbe5f21623e\",\"urls\":[\"bzz-raw://d7108d68af7c5effd4272615ceba54e79e585f6b8be5aabc7602245c84c7b9e0\",\"dweb:/ipfs/QmQZo2XpxW7w5viVEg71mi9eKaAYD7HUqfCMB5yCCPVnc5\"]},\"contracts/IFuseFeeDistributor.sol\":{\"keccak256\":\"0xb5d287b8e05574d38bd5d0b413f44b4c5d312f28188573ac60abe78123fbd92c\",\"urls\":[\"bzz-raw://84c2bbf746a82aaa100bee90c7dd40411c723bded124bb1775bf72bf7fda8a2c\",\"dweb:/ipfs/QmToQzDtz9BV2tvU71YsfWjdaZu5qpP1xKFZ1TkQgubhDb\"]},\"contracts/InterestRateModel.sol\":{\"keccak256\":\"0x0cc0dbd1991e5dcdcff58b0c82a9471a0fb9df26763e5e7415e1d081b7332409\",\"urls\":[\"bzz-raw://f4d7936aefc43ea2724f0e472b8f1517f1ca40170258ab9d5bbd0862dd0c4f13\",\"dweb:/ipfs/QmfYjG1Sm3kNwbhomHCWhMqw9LvaJVWVzBe4Te5BHRbTQS\"]},\"contracts/PriceOracle.sol\":{\"keccak256\":\"0x62ba3a5ec8f06d456ab089d6ca7f9d14d3a6ce6814923271ca60a6990918fb41\",\"urls\":[\"bzz-raw://aa6d2f20efdd5389161eb15bdab98b5628dc8cd5354394bbed35bb14d3612506\",\"dweb:/ipfs/QmVfo4eCDuk8LMSywpBjZBxCv7zLCNsG6u3nyD1d4CYwsD\"]},\"contracts/RewardsDistributorDelegator.sol\":{\"keccak256\":\"0x0242ea3e2888e82659c473df25e8ca0f0c35804d65b531dabcbea1b4648a7d20\",\"urls\":[\"bzz-raw://6b071396c89c05b112b8a9a862eb07710e3df854ef1ae79b6d953ef1a9704bbe\",\"dweb:/ipfs/QmYR4q1deqEY6pDG89B5xm1RyUnQQKMUvhqGkad2aemBe4\"]},\"contracts/RewardsDistributorStorage.sol\":{\"keccak256\":\"0x3ce7a399413ff2e33fc2d77bb0a124be668c919899e0042ce867232b53f06786\",\"urls\":[\"bzz-raw://6044a7f8506f190e2eb4d300eb55f4bbeb56b30e0690a9f5e430c289d94f5f19\",\"dweb:/ipfs/QmZ5c629f93tQErFZdAwGYD5SegHbMrNGHRFhnc2k6vBVh\"]}},\"version\":1}"}},"contracts/RewardsDistributorStorage.sol":{"RewardsDistributorDelegateStorageV1":{"abi":[{"constant":true,"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"allMarkets","outputs":[{"internalType":"contract CToken","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"compAccrued","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"compBorrowSpeeds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"compBorrowState","outputs":[{"internalType":"uint224","name":"index","type":"uint224"},{"internalType":"uint32","name":"block","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"compBorrowerIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"compContributorSpeeds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"compSupplierIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"compSupplySpeeds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"compSupplyState","outputs":[{"internalType":"uint224","name":"index","type":"uint224"},{"internalType":"uint32","name":"block","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastContributorBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pendingAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rewardToken","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b50610468806100206000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063b21be7fd1161008c578063cc7ebdc411610066578063cc7ebdc41461028c578063f4a433c0146102b2578063f7c618c1146102d8578063f851a440146102e0576100ea565b8063b21be7fd1461020a578063bea6b8b814610238578063ca0af0431461025e576100ea565b80636aa875b5116100c85780636aa875b5146101385780636b79c38d146101705780638c57804e146101be578063986ab838146101e4576100ea565b806326782247146100ef57806352d84d1e146101135780635c60da1b14610130575b600080fd5b6100f76102e8565b604080516001600160a01b039092168252519081900360200190f35b6100f76004803603602081101561012957600080fd5b50356102f7565b6100f761031e565b61015e6004803603602081101561014e57600080fd5b50356001600160a01b031661032d565b60408051918252519081900360200190f35b6101966004803603602081101561018657600080fd5b50356001600160a01b031661033f565b604080516001600160e01b03909316835263ffffffff90911660208301528051918290030190f35b610196600480360360208110156101d457600080fd5b50356001600160a01b0316610369565b61015e600480360360208110156101fa57600080fd5b50356001600160a01b0316610393565b61015e6004803603604081101561022057600080fd5b506001600160a01b03813581169160200135166103a5565b61015e6004803603602081101561024e57600080fd5b50356001600160a01b03166103c2565b61015e6004803603604081101561027457600080fd5b506001600160a01b03813581169160200135166103d4565b61015e600480360360208110156102a257600080fd5b50356001600160a01b03166103f1565b61015e600480360360208110156102c857600080fd5b50356001600160a01b0316610403565b6100f7610415565b6100f7610424565b6001546001600160a01b031681565b6004818154811061030457fe5b6000918252602090912001546001600160a01b0316905081565b6002546001600160a01b031681565b60056020526000908152604090205481565b6007602052600090815260409020546001600160e01b03811690600160e01b900463ffffffff1682565b6008602052600090815260409020546001600160e01b03811690600160e01b900463ffffffff1682565b600c6020526000908152604090205481565b600960209081526000928352604080842090915290825290205481565b600d6020526000908152604090205481565b600a60209081526000928352604080842090915290825290205481565b600b6020526000908152604090205481565b60066020526000908152604090205481565b6003546001600160a01b031681565b6000546001600160a01b03168156fea265627a7a72315820e86a73b5151730e29ca888752004aebd0c7cc5e918a0b4f2f3c748b4eb0eefab64736f6c63430005110032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x468 DUP1 PUSH2 0x20 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 0xB21BE7FD GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xCC7EBDC4 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xCC7EBDC4 EQ PUSH2 0x28C JUMPI DUP1 PUSH4 0xF4A433C0 EQ PUSH2 0x2B2 JUMPI DUP1 PUSH4 0xF7C618C1 EQ PUSH2 0x2D8 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x2E0 JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0xB21BE7FD EQ PUSH2 0x20A JUMPI DUP1 PUSH4 0xBEA6B8B8 EQ PUSH2 0x238 JUMPI DUP1 PUSH4 0xCA0AF043 EQ PUSH2 0x25E JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x6AA875B5 GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0x6AA875B5 EQ PUSH2 0x138 JUMPI DUP1 PUSH4 0x6B79C38D EQ PUSH2 0x170 JUMPI DUP1 PUSH4 0x8C57804E EQ PUSH2 0x1BE JUMPI DUP1 PUSH4 0x986AB838 EQ PUSH2 0x1E4 JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x26782247 EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0x52D84D1E EQ PUSH2 0x113 JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x130 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF7 PUSH2 0x2E8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xF7 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x129 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x2F7 JUMP JUMPDEST PUSH2 0xF7 PUSH2 0x31E JUMP JUMPDEST PUSH2 0x15E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x14E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x32D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x196 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x186 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x33F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB SWAP1 SWAP4 AND DUP4 MSTORE PUSH4 0xFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x196 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x369 JUMP JUMPDEST PUSH2 0x15E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x393 JUMP JUMPDEST PUSH2 0x15E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x220 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x3A5 JUMP JUMPDEST PUSH2 0x15E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x24E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3C2 JUMP JUMPDEST PUSH2 0x15E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x274 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x3D4 JUMP JUMPDEST PUSH2 0x15E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3F1 JUMP JUMPDEST PUSH2 0x15E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x403 JUMP JUMPDEST PUSH2 0xF7 PUSH2 0x415 JUMP JUMPDEST PUSH2 0xF7 PUSH2 0x424 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x304 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP2 AND SWAP1 PUSH1 0x1 PUSH1 0xE0 SHL SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP3 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP2 AND SWAP1 PUSH1 0x1 PUSH1 0xE0 SHL SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP3 JUMP JUMPDEST PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xE8 PUSH11 0x73B5151730E29CA8887520 DIV 0xAE 0xBD 0xC PUSH29 0xC5E918A0B4F2F3C748B4EB0EEFAB64736F6C6343000511003200000000 ","sourceMap":"644:1740:36:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;644:1740:36;;;;;;;"},"deployedBytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063b21be7fd1161008c578063cc7ebdc411610066578063cc7ebdc41461028c578063f4a433c0146102b2578063f7c618c1146102d8578063f851a440146102e0576100ea565b8063b21be7fd1461020a578063bea6b8b814610238578063ca0af0431461025e576100ea565b80636aa875b5116100c85780636aa875b5146101385780636b79c38d146101705780638c57804e146101be578063986ab838146101e4576100ea565b806326782247146100ef57806352d84d1e146101135780635c60da1b14610130575b600080fd5b6100f76102e8565b604080516001600160a01b039092168252519081900360200190f35b6100f76004803603602081101561012957600080fd5b50356102f7565b6100f761031e565b61015e6004803603602081101561014e57600080fd5b50356001600160a01b031661032d565b60408051918252519081900360200190f35b6101966004803603602081101561018657600080fd5b50356001600160a01b031661033f565b604080516001600160e01b03909316835263ffffffff90911660208301528051918290030190f35b610196600480360360208110156101d457600080fd5b50356001600160a01b0316610369565b61015e600480360360208110156101fa57600080fd5b50356001600160a01b0316610393565b61015e6004803603604081101561022057600080fd5b506001600160a01b03813581169160200135166103a5565b61015e6004803603602081101561024e57600080fd5b50356001600160a01b03166103c2565b61015e6004803603604081101561027457600080fd5b506001600160a01b03813581169160200135166103d4565b61015e600480360360208110156102a257600080fd5b50356001600160a01b03166103f1565b61015e600480360360208110156102c857600080fd5b50356001600160a01b0316610403565b6100f7610415565b6100f7610424565b6001546001600160a01b031681565b6004818154811061030457fe5b6000918252602090912001546001600160a01b0316905081565b6002546001600160a01b031681565b60056020526000908152604090205481565b6007602052600090815260409020546001600160e01b03811690600160e01b900463ffffffff1682565b6008602052600090815260409020546001600160e01b03811690600160e01b900463ffffffff1682565b600c6020526000908152604090205481565b600960209081526000928352604080842090915290825290205481565b600d6020526000908152604090205481565b600a60209081526000928352604080842090915290825290205481565b600b6020526000908152604090205481565b60066020526000908152604090205481565b6003546001600160a01b031681565b6000546001600160a01b03168156fea265627a7a72315820e86a73b5151730e29ca888752004aebd0c7cc5e918a0b4f2f3c748b4eb0eefab64736f6c63430005110032","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 0xB21BE7FD GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xCC7EBDC4 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xCC7EBDC4 EQ PUSH2 0x28C JUMPI DUP1 PUSH4 0xF4A433C0 EQ PUSH2 0x2B2 JUMPI DUP1 PUSH4 0xF7C618C1 EQ PUSH2 0x2D8 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x2E0 JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0xB21BE7FD EQ PUSH2 0x20A JUMPI DUP1 PUSH4 0xBEA6B8B8 EQ PUSH2 0x238 JUMPI DUP1 PUSH4 0xCA0AF043 EQ PUSH2 0x25E JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x6AA875B5 GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0x6AA875B5 EQ PUSH2 0x138 JUMPI DUP1 PUSH4 0x6B79C38D EQ PUSH2 0x170 JUMPI DUP1 PUSH4 0x8C57804E EQ PUSH2 0x1BE JUMPI DUP1 PUSH4 0x986AB838 EQ PUSH2 0x1E4 JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x26782247 EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0x52D84D1E EQ PUSH2 0x113 JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x130 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF7 PUSH2 0x2E8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xF7 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x129 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x2F7 JUMP JUMPDEST PUSH2 0xF7 PUSH2 0x31E JUMP JUMPDEST PUSH2 0x15E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x14E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x32D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x196 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x186 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x33F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB SWAP1 SWAP4 AND DUP4 MSTORE PUSH4 0xFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x196 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x369 JUMP JUMPDEST PUSH2 0x15E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x393 JUMP JUMPDEST PUSH2 0x15E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x220 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x3A5 JUMP JUMPDEST PUSH2 0x15E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x24E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3C2 JUMP JUMPDEST PUSH2 0x15E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x274 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x3D4 JUMP JUMPDEST PUSH2 0x15E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3F1 JUMP JUMPDEST PUSH2 0x15E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x403 JUMP JUMPDEST PUSH2 0xF7 PUSH2 0x415 JUMP JUMPDEST PUSH2 0xF7 PUSH2 0x424 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x304 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP2 AND SWAP1 PUSH1 0x1 PUSH1 0xE0 SHL SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP3 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP2 AND SWAP1 PUSH1 0x1 PUSH1 0xE0 SHL SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP3 JUMP JUMPDEST PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xE8 PUSH11 0x73B5151730E29CA8887520 DIV 0xAE 0xBD 0xC PUSH29 0xC5E918A0B4F2F3C748B4EB0EEFAB64736F6C6343000511003200000000 ","sourceMap":"644:1740:36:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;644:1740:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;230:27;;;:::i;:::-;;;;-1:-1:-1;;;;;230:27:36;;;;;;;;;;;;;;1080:26;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1080:26:36;;:::i;316:29::-;;;:::i;1183:48::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1183:48:36;-1:-1:-1;;;;;1183:48:36;;:::i;:::-;;;;;;;;;;;;;;;;1424:58;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1424:58:36;-1:-1:-1;;;;;1424:58:36;;:::i;:::-;;;;-1:-1:-1;;;;;1424:58:36;;;;;;;;;;;;;;;;;;;;;;1550;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1550:58:36;-1:-1:-1;;;;;1550:58:36;;:::i;2184:53::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2184:53:36;-1:-1:-1;;;;;2184:53:36;;:::i;1725:69::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1725:69:36;;;;;;;;;;:::i;2329:52::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2329:52:36;-1:-1:-1;;;;;2329:52:36;;:::i;1911:69::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1911:69:36;;;;;;;;;;:::i;2057:43::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2057:43:36;-1:-1:-1;;;;;2057:43:36;;:::i;1308:48::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1308:48:36;-1:-1:-1;;;;;1308:48:36;;:::i;779:26::-;;;:::i;147:20::-;;;:::i;230:27::-;;;-1:-1:-1;;;;;230:27:36;;:::o;1080:26::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1080:26:36;;-1:-1:-1;1080:26:36;:::o;316:29::-;;;-1:-1:-1;;;;;316:29:36;;:::o;1183:48::-;;;;;;;;;;;;;:::o;1424:58::-;;;;;;;;;;;;-1:-1:-1;;;;;1424:58:36;;;-1:-1:-1;;;1424:58:36;;;;;:::o;1550:::-;;;;;;;;;;;;-1:-1:-1;;;;;1550:58:36;;;-1:-1:-1;;;1550:58:36;;;;;:::o;2184:53::-;;;;;;;;;;;;;:::o;1725:69::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;2329:52::-;;;;;;;;;;;;;:::o;1911:69::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;2057:43::-;;;;;;;;;;;;;:::o;1308:48::-;;;;;;;;;;;;;:::o;779:26::-;;;-1:-1:-1;;;;;779:26:36;;:::o;147:20::-;;;-1:-1:-1;;;;;147:20:36;;:::o"},"methodIdentifiers":{"admin()":"f851a440","allMarkets(uint256)":"52d84d1e","compAccrued(address)":"cc7ebdc4","compBorrowSpeeds(address)":"f4a433c0","compBorrowState(address)":"8c57804e","compBorrowerIndex(address,address)":"ca0af043","compContributorSpeeds(address)":"986ab838","compSupplierIndex(address,address)":"b21be7fd","compSupplySpeeds(address)":"6aa875b5","compSupplyState(address)":"6b79c38d","implementation()":"5c60da1b","lastContributorBlock(address)":"bea6b8b8","pendingAdmin()":"26782247","rewardToken()":"f7c618c1"}},"metadata":"{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"allMarkets\",\"outputs\":[{\"internalType\":\"contract CToken\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"compAccrued\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"compBorrowSpeeds\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"compBorrowState\",\"outputs\":[{\"internalType\":\"uint224\",\"name\":\"index\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"block\",\"type\":\"uint32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"compBorrowerIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"compContributorSpeeds\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"compSupplierIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"compSupplySpeeds\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"compSupplyState\",\"outputs\":[{\"internalType\":\"uint224\",\"name\":\"index\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"block\",\"type\":\"uint32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"lastContributorBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"pendingAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"rewardToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{},\"title\":\"Storage for RewardsDistributorDelegate\"},\"userdoc\":{\"methods\":{},\"notice\":\"For future upgrades, do not change RewardsDistributorDelegateStorageV1. Create a new contract which implements RewardsDistributorDelegateStorageV1 and following the naming convention RewardsDistributorDelegateStorageVX.\"}},\"settings\":{\"compilationTarget\":{\"contracts/RewardsDistributorStorage.sol\":\"RewardsDistributorDelegateStorageV1\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/CToken.sol\":{\"keccak256\":\"0xc3a5a827241528049e20a24cc446558c8a9272909f75ce5d1cf14ae3ab5feba3\",\"urls\":[\"bzz-raw://a403db2bf1a8e5e9384df19600bd18d4251056818b094afcdab418e683bb5cb8\",\"dweb:/ipfs/QmdkRbFGtKP67tNNqyH7BraDRGerwRNA7ktscbFV9LioM2\"]},\"contracts/CTokenInterfaces.sol\":{\"keccak256\":\"0xc8a056c724ef4f0215ece6011e7ac1007c9dc7611ce5160d470ec858bbb06bd3\",\"urls\":[\"bzz-raw://58951693d1b53d2722e55b068bab2b570f4b044d89c28ed6b53bac6e95aeb662\",\"dweb:/ipfs/QmQiNTw5jZR74WjKfX2bPiuTT4tuFuq8rx7QxEVyVvdGLn\"]},\"contracts/CarefulMath.sol\":{\"keccak256\":\"0x1487237dbbbb73ad43c8eff16e78311753719a94a5065f574de5c91b672c56f8\",\"urls\":[\"bzz-raw://349966a236f313b2cb42e1942832e6bd7e134f65f6654e6c4d46788e65cc4a9b\",\"dweb:/ipfs/Qmebpv8i5jLR4fLgpZHQZRLu6aefVAbLC2yUk9ABEekquz\"]},\"contracts/ComptrollerInterface.sol\":{\"keccak256\":\"0xecfb84fabc9792d0b1c912886249c67bc42c39eb065d962d0b9a5f3736af5892\",\"urls\":[\"bzz-raw://711547ebc1a7f18b271118dd98276771953a9d7b3674716f67d247be9b907372\",\"dweb:/ipfs/QmbVZNvkBp8miByATrL6y5j8MePdcQ8uTAUZMpKrhpLgoa\"]},\"contracts/ComptrollerStorage.sol\":{\"keccak256\":\"0x83961d3c12984fe4afc72717fc44b2d868563d053a0eceda0cbf17ec6b255913\",\"urls\":[\"bzz-raw://ea667c2de43881f9be19f4f75dec348632273178965fc9b3655705d853b032bb\",\"dweb:/ipfs/QmZP6sbNFSgFZrAEvfRjhp1NtGj6U6Sea3JGiKG96AHyeP\"]},\"contracts/EIP20Interface.sol\":{\"keccak256\":\"0xee33b8b333743308a9153a59f22da2cadb22cedef4403fe039bf9e057c9c729a\",\"urls\":[\"bzz-raw://5427fdb941300d36a424da0a0a5800e3b2ca51c9c922831dbfce2f6637402b43\",\"dweb:/ipfs/QmTrvmLynqSUPjsGW2dpiQ91dSmn4xzccQiwr8qaBtyvjH\"]},\"contracts/EIP20NonStandardInterface.sol\":{\"keccak256\":\"0x469899442dd9640bfc2c670d404ad3027e48df5df8e5aeab0e25cc6b6aae05f5\",\"urls\":[\"bzz-raw://d8c4498abaf539eb413a2f1a916d75945adc8bd4ef437f8450cb67e07be3f38d\",\"dweb:/ipfs/QmaFpWfnhAMYW21rbT5PEszn4TGHdGU58Eq5AfZsCuapZ3\"]},\"contracts/ErrorReporter.sol\":{\"keccak256\":\"0xe9587478bc9efad203cab02b8aecae32828cfc9a271b13ae3c018e38e44aab32\",\"urls\":[\"bzz-raw://2eb34bdbbbc410fb401d50ddca44a7421a1d8191711c569ed5bcec1c1b07a05c\",\"dweb:/ipfs/QmYKNCYppyx3NGiwtjdLEmxUMgfnFBqT4pnvnhnBrPgrxS\"]},\"contracts/Exponential.sol\":{\"keccak256\":\"0xfda0e2b610541cf1cf316a0000c89a1069ccc21f1566affc0a058810e2b835d3\",\"urls\":[\"bzz-raw://fe319f184f1b5f27019d3d890124cd24e466d27153ac38eb9ff6b16efbad48b9\",\"dweb:/ipfs/Qmcev6jCmtdCviJxUQvUCmesPDShRDSvdfUEfvsqd4GEJA\"]},\"contracts/ExponentialNoError.sol\":{\"keccak256\":\"0x713a089f4bbcaec1d3924fc7d9a2154904a39f46cb6f25b713167dbe5f21623e\",\"urls\":[\"bzz-raw://d7108d68af7c5effd4272615ceba54e79e585f6b8be5aabc7602245c84c7b9e0\",\"dweb:/ipfs/QmQZo2XpxW7w5viVEg71mi9eKaAYD7HUqfCMB5yCCPVnc5\"]},\"contracts/IFuseFeeDistributor.sol\":{\"keccak256\":\"0xb5d287b8e05574d38bd5d0b413f44b4c5d312f28188573ac60abe78123fbd92c\",\"urls\":[\"bzz-raw://84c2bbf746a82aaa100bee90c7dd40411c723bded124bb1775bf72bf7fda8a2c\",\"dweb:/ipfs/QmToQzDtz9BV2tvU71YsfWjdaZu5qpP1xKFZ1TkQgubhDb\"]},\"contracts/InterestRateModel.sol\":{\"keccak256\":\"0x0cc0dbd1991e5dcdcff58b0c82a9471a0fb9df26763e5e7415e1d081b7332409\",\"urls\":[\"bzz-raw://f4d7936aefc43ea2724f0e472b8f1517f1ca40170258ab9d5bbd0862dd0c4f13\",\"dweb:/ipfs/QmfYjG1Sm3kNwbhomHCWhMqw9LvaJVWVzBe4Te5BHRbTQS\"]},\"contracts/PriceOracle.sol\":{\"keccak256\":\"0x62ba3a5ec8f06d456ab089d6ca7f9d14d3a6ce6814923271ca60a6990918fb41\",\"urls\":[\"bzz-raw://aa6d2f20efdd5389161eb15bdab98b5628dc8cd5354394bbed35bb14d3612506\",\"dweb:/ipfs/QmVfo4eCDuk8LMSywpBjZBxCv7zLCNsG6u3nyD1d4CYwsD\"]},\"contracts/RewardsDistributorStorage.sol\":{\"keccak256\":\"0x3ce7a399413ff2e33fc2d77bb0a124be668c919899e0042ce867232b53f06786\",\"urls\":[\"bzz-raw://6044a7f8506f190e2eb4d300eb55f4bbeb56b30e0690a9f5e430c289d94f5f19\",\"dweb:/ipfs/QmZ5c629f93tQErFZdAwGYD5SegHbMrNGHRFhnc2k6vBVh\"]}},\"version\":1}"},"RewardsDistributorDelegatorStorage":{"abi":[{"constant":true,"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pendingAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b5060d18061001f6000396000f3fe6080604052348015600f57600080fd5b5060043610603c5760003560e01c8063267822471460415780635c60da1b146063578063f851a440146069575b600080fd5b6047606f565b604080516001600160a01b039092168252519081900360200190f35b6047607e565b6047608d565b6001546001600160a01b031681565b6002546001600160a01b031681565b6000546001600160a01b03168156fea265627a7a72315820fb2c30d6509332334c7b15467cf92d19c761c2d0c68e7d2601b9d32b20ab231264736f6c63430005110032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xD1 DUP1 PUSH2 0x1F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x3C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x26782247 EQ PUSH1 0x41 JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH1 0x63 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH1 0x69 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x47 PUSH1 0x6F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x47 PUSH1 0x7E JUMP JUMPDEST PUSH1 0x47 PUSH1 0x8D JUMP JUMPDEST PUSH1 0x1 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 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xFB 0x2C ADDRESS 0xD6 POP SWAP4 ORIGIN CALLER 0x4C PUSH28 0x15467CF92D19C761C2D0C68E7D2601B9D32B20AB231264736F6C6343 STOP SDIV GT STOP ORIGIN ","sourceMap":"49:299:36:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;49:299:36;;;;;;;"},"deployedBytecode":{"linkReferences":{},"object":"6080604052348015600f57600080fd5b5060043610603c5760003560e01c8063267822471460415780635c60da1b146063578063f851a440146069575b600080fd5b6047606f565b604080516001600160a01b039092168252519081900360200190f35b6047607e565b6047608d565b6001546001600160a01b031681565b6002546001600160a01b031681565b6000546001600160a01b03168156fea265627a7a72315820fb2c30d6509332334c7b15467cf92d19c761c2d0c68e7d2601b9d32b20ab231264736f6c63430005110032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x3C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x26782247 EQ PUSH1 0x41 JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH1 0x63 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH1 0x69 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x47 PUSH1 0x6F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x47 PUSH1 0x7E JUMP JUMPDEST PUSH1 0x47 PUSH1 0x8D JUMP JUMPDEST PUSH1 0x1 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 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xFB 0x2C ADDRESS 0xD6 POP SWAP4 ORIGIN CALLER 0x4C PUSH28 0x15467CF92D19C761C2D0C68E7D2601B9D32B20AB231264736F6C6343 STOP SDIV GT STOP ORIGIN ","sourceMap":"49:299:36:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;49:299:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;230:27;;;:::i;:::-;;;;-1:-1:-1;;;;;230:27:36;;;;;;;;;;;;;;316:29;;;:::i;147:20::-;;;:::i;230:27::-;;;-1:-1:-1;;;;;230:27:36;;:::o;316:29::-;;;-1:-1:-1;;;;;316:29:36;;:::o;147:20::-;;;-1:-1:-1;;;;;147:20:36;;:::o"},"methodIdentifiers":{"admin()":"f851a440","implementation()":"5c60da1b","pendingAdmin()":"26782247"}},"metadata":"{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"pendingAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/RewardsDistributorStorage.sol\":\"RewardsDistributorDelegatorStorage\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/CToken.sol\":{\"keccak256\":\"0xc3a5a827241528049e20a24cc446558c8a9272909f75ce5d1cf14ae3ab5feba3\",\"urls\":[\"bzz-raw://a403db2bf1a8e5e9384df19600bd18d4251056818b094afcdab418e683bb5cb8\",\"dweb:/ipfs/QmdkRbFGtKP67tNNqyH7BraDRGerwRNA7ktscbFV9LioM2\"]},\"contracts/CTokenInterfaces.sol\":{\"keccak256\":\"0xc8a056c724ef4f0215ece6011e7ac1007c9dc7611ce5160d470ec858bbb06bd3\",\"urls\":[\"bzz-raw://58951693d1b53d2722e55b068bab2b570f4b044d89c28ed6b53bac6e95aeb662\",\"dweb:/ipfs/QmQiNTw5jZR74WjKfX2bPiuTT4tuFuq8rx7QxEVyVvdGLn\"]},\"contracts/CarefulMath.sol\":{\"keccak256\":\"0x1487237dbbbb73ad43c8eff16e78311753719a94a5065f574de5c91b672c56f8\",\"urls\":[\"bzz-raw://349966a236f313b2cb42e1942832e6bd7e134f65f6654e6c4d46788e65cc4a9b\",\"dweb:/ipfs/Qmebpv8i5jLR4fLgpZHQZRLu6aefVAbLC2yUk9ABEekquz\"]},\"contracts/ComptrollerInterface.sol\":{\"keccak256\":\"0xecfb84fabc9792d0b1c912886249c67bc42c39eb065d962d0b9a5f3736af5892\",\"urls\":[\"bzz-raw://711547ebc1a7f18b271118dd98276771953a9d7b3674716f67d247be9b907372\",\"dweb:/ipfs/QmbVZNvkBp8miByATrL6y5j8MePdcQ8uTAUZMpKrhpLgoa\"]},\"contracts/ComptrollerStorage.sol\":{\"keccak256\":\"0x83961d3c12984fe4afc72717fc44b2d868563d053a0eceda0cbf17ec6b255913\",\"urls\":[\"bzz-raw://ea667c2de43881f9be19f4f75dec348632273178965fc9b3655705d853b032bb\",\"dweb:/ipfs/QmZP6sbNFSgFZrAEvfRjhp1NtGj6U6Sea3JGiKG96AHyeP\"]},\"contracts/EIP20Interface.sol\":{\"keccak256\":\"0xee33b8b333743308a9153a59f22da2cadb22cedef4403fe039bf9e057c9c729a\",\"urls\":[\"bzz-raw://5427fdb941300d36a424da0a0a5800e3b2ca51c9c922831dbfce2f6637402b43\",\"dweb:/ipfs/QmTrvmLynqSUPjsGW2dpiQ91dSmn4xzccQiwr8qaBtyvjH\"]},\"contracts/EIP20NonStandardInterface.sol\":{\"keccak256\":\"0x469899442dd9640bfc2c670d404ad3027e48df5df8e5aeab0e25cc6b6aae05f5\",\"urls\":[\"bzz-raw://d8c4498abaf539eb413a2f1a916d75945adc8bd4ef437f8450cb67e07be3f38d\",\"dweb:/ipfs/QmaFpWfnhAMYW21rbT5PEszn4TGHdGU58Eq5AfZsCuapZ3\"]},\"contracts/ErrorReporter.sol\":{\"keccak256\":\"0xe9587478bc9efad203cab02b8aecae32828cfc9a271b13ae3c018e38e44aab32\",\"urls\":[\"bzz-raw://2eb34bdbbbc410fb401d50ddca44a7421a1d8191711c569ed5bcec1c1b07a05c\",\"dweb:/ipfs/QmYKNCYppyx3NGiwtjdLEmxUMgfnFBqT4pnvnhnBrPgrxS\"]},\"contracts/Exponential.sol\":{\"keccak256\":\"0xfda0e2b610541cf1cf316a0000c89a1069ccc21f1566affc0a058810e2b835d3\",\"urls\":[\"bzz-raw://fe319f184f1b5f27019d3d890124cd24e466d27153ac38eb9ff6b16efbad48b9\",\"dweb:/ipfs/Qmcev6jCmtdCviJxUQvUCmesPDShRDSvdfUEfvsqd4GEJA\"]},\"contracts/ExponentialNoError.sol\":{\"keccak256\":\"0x713a089f4bbcaec1d3924fc7d9a2154904a39f46cb6f25b713167dbe5f21623e\",\"urls\":[\"bzz-raw://d7108d68af7c5effd4272615ceba54e79e585f6b8be5aabc7602245c84c7b9e0\",\"dweb:/ipfs/QmQZo2XpxW7w5viVEg71mi9eKaAYD7HUqfCMB5yCCPVnc5\"]},\"contracts/IFuseFeeDistributor.sol\":{\"keccak256\":\"0xb5d287b8e05574d38bd5d0b413f44b4c5d312f28188573ac60abe78123fbd92c\",\"urls\":[\"bzz-raw://84c2bbf746a82aaa100bee90c7dd40411c723bded124bb1775bf72bf7fda8a2c\",\"dweb:/ipfs/QmToQzDtz9BV2tvU71YsfWjdaZu5qpP1xKFZ1TkQgubhDb\"]},\"contracts/InterestRateModel.sol\":{\"keccak256\":\"0x0cc0dbd1991e5dcdcff58b0c82a9471a0fb9df26763e5e7415e1d081b7332409\",\"urls\":[\"bzz-raw://f4d7936aefc43ea2724f0e472b8f1517f1ca40170258ab9d5bbd0862dd0c4f13\",\"dweb:/ipfs/QmfYjG1Sm3kNwbhomHCWhMqw9LvaJVWVzBe4Te5BHRbTQS\"]},\"contracts/PriceOracle.sol\":{\"keccak256\":\"0x62ba3a5ec8f06d456ab089d6ca7f9d14d3a6ce6814923271ca60a6990918fb41\",\"urls\":[\"bzz-raw://aa6d2f20efdd5389161eb15bdab98b5628dc8cd5354394bbed35bb14d3612506\",\"dweb:/ipfs/QmVfo4eCDuk8LMSywpBjZBxCv7zLCNsG6u3nyD1d4CYwsD\"]},\"contracts/RewardsDistributorStorage.sol\":{\"keccak256\":\"0x3ce7a399413ff2e33fc2d77bb0a124be668c919899e0042ce867232b53f06786\",\"urls\":[\"bzz-raw://6044a7f8506f190e2eb4d300eb55f4bbeb56b30e0690a9f5e430c289d94f5f19\",\"dweb:/ipfs/QmZ5c629f93tQErFZdAwGYD5SegHbMrNGHRFhnc2k6vBVh\"]}},\"version\":1}"}},"contracts/SafeMath.sol":{"SafeMath":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582061952d4d167faa3e076654c00e4fb077d7ec2dca910c719ea06d5cf79aa8c1bd64736f6c63430005110032","opcodes":"PUSH1 0x55 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID 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 PUSH6 0x627A7A723158 KECCAK256 PUSH2 0x952D 0x4D AND PUSH32 0xAA3E076654C00E4FB077D7EC2DCA910C719EA06D5CF79AA8C1BD64736F6C6343 STOP SDIV GT STOP ORIGIN ","sourceMap":"720:5690:37:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24"},"deployedBytecode":{"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582061952d4d167faa3e076654c00e4fb077d7ec2dca910c719ea06d5cf79aa8c1bd64736f6c63430005110032","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 PUSH2 0x952D 0x4D AND PUSH32 0xAA3E076654C00E4FB077D7EC2DCA910C719EA06D5CF79AA8C1BD64736F6C6343 STOP SDIV GT STOP ORIGIN ","sourceMap":"720:5690:37:-;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Wrappers over Solidity's arithmetic operations with added overflow checks. * Arithmetic operations in Solidity wrap on overflow. This can easily result in bugs, because programmers usually assume that an overflow raises an error, which is the standard behavior in high level programming languages. `SafeMath` restores this intuition by reverting the transaction when an operation overflows. * Using this library instead of the unchecked operations eliminates an entire class of bugs, so it's recommended to use it always.\",\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/SafeMath.sol\":\"SafeMath\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/SafeMath.sol\":{\"keccak256\":\"0x675b1178c34633ecc37124c254349c1d3fe239c7bd74a649eb55f54adafd2dee\",\"urls\":[\"bzz-raw://c55f6f93d24b0976189d8fcf4df706b04439041d43a1e4d289db440251f9bc2a\",\"dweb:/ipfs/QmUAsuvRZMJ4hvsxKF3ud5g93DBEbnaXnt7waJzziurC2S\"]}},\"version\":1}"}},"contracts/SimplePriceOracle.sol":{"SimplePriceOracle":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"asset","type":"address"},{"indexed":false,"internalType":"uint256","name":"previousPriceMantissa","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"requestedPriceMantissa","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newPriceMantissa","type":"uint256"}],"name":"PricePosted","type":"event"},{"constant":true,"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"assetPrices","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"contract CToken","name":"cToken","type":"address"}],"name":"getUnderlyingPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isPriceOracle","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"}],"name":"setDirectPrice","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"contract CToken","name":"cToken","type":"address"},{"internalType":"uint256","name":"underlyingPriceMantissa","type":"uint256"}],"name":"setUnderlyingPrice","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b506105ae806100206000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c806309a8acb01461005c578063127ffda01461008a5780635e9a523c146100b657806366331bba146100ee578063fc57d4df1461010a575b600080fd5b6100886004803603604081101561007257600080fd5b506001600160a01b038135169060200135610130565b005b610088600480360360408110156100a057600080fd5b506001600160a01b0381351690602001356101a8565b6100dc600480360360208110156100cc57600080fd5b50356001600160a01b031661028a565b60408051918252519081900360200190f35b6100f66102a9565b604080519115158252519081900360200190f35b6100dc6004803603602081101561012057600080fd5b50356001600160a01b03166102ae565b6001600160a01b038216600081815260208181526040918290205482519384529083015281810183905260608201839052517fdd71a1d19fcba687442a1d5c58578f1e409af71a79d10fd95a4d66efd8fa9ae79181900360800190a16001600160a01b03909116600090815260208190526040902055565b6000826001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b1580156101e357600080fd5b505afa1580156101f7573d6000803e3d6000fd5b505050506040513d602081101561020d57600080fd5b50516001600160a01b038116600081815260208181526040918290205482519384529083015281810185905260608201859052519192507fdd71a1d19fcba687442a1d5c58578f1e409af71a79d10fd95a4d66efd8fa9ae7919081900360800190a16001600160a01b031660009081526020819052604090205550565b6001600160a01b0381166000908152602081905260409020545b919050565b600181565b60006103f5826001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b1580156102ec57600080fd5b505afa158015610300573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561032957600080fd5b810190808051604051939291908464010000000082111561034957600080fd5b90830190602082018581111561035e57600080fd5b825164010000000081118282018810171561037857600080fd5b82525081516020918201929091019080838360005b838110156103a557818101518382015260200161038d565b50505050905090810190601f1680156103d25780820380516001836020036101000a031916815260200191505b506040818101905260048152630c68aa8960e31b60208201529250610492915050565b156104095750670de0b6b3a76400006102a4565b600080836001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561044557600080fd5b505afa158015610459573d6000803e3d6000fd5b505050506040513d602081101561046f57600080fd5b50516001600160a01b0316815260208101919091526040016000205490506102a4565b6000816040516020018082805190602001908083835b602083106104c75780518252601f1990920191602091820191016104a8565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120836040516020018082805190602001908083835b602083106105355780518252601f199092019160209182019101610516565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051602081830303815290604052805190602001201490509291505056fea265627a7a723158201509f4430c9a5cd4e95727b86b9680c984c2c564d8ae5684da099f08a5a10ace64736f6c63430005110032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5AE DUP1 PUSH2 0x20 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 0x57 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9A8ACB0 EQ PUSH2 0x5C JUMPI DUP1 PUSH4 0x127FFDA0 EQ PUSH2 0x8A JUMPI DUP1 PUSH4 0x5E9A523C EQ PUSH2 0xB6 JUMPI DUP1 PUSH4 0x66331BBA EQ PUSH2 0xEE JUMPI DUP1 PUSH4 0xFC57D4DF EQ PUSH2 0x10A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x88 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x72 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x130 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x88 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1A8 JUMP JUMPDEST PUSH2 0xDC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xCC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x28A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xF6 PUSH2 0x2A9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xDC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x120 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2AE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD DUP3 MLOAD SWAP4 DUP5 MSTORE SWAP1 DUP4 ADD MSTORE DUP2 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP4 SWAP1 MSTORE MLOAD PUSH32 0xDD71A1D19FCBA687442A1D5C58578F1E409AF71A79D10FD95A4D66EFD8FA9AE7 SWAP2 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6F307DC3 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 0x1E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1F7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x20D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD DUP3 MLOAD SWAP4 DUP5 MSTORE SWAP1 DUP4 ADD MSTORE DUP2 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP6 SWAP1 MSTORE MLOAD SWAP2 SWAP3 POP PUSH32 0xDD71A1D19FCBA687442A1D5C58578F1E409AF71A79D10FD95A4D66EFD8FA9AE7 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F5 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x95D89B41 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x300 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x329 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0x349 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x35E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH2 0x378 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3A5 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x38D JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x3D2 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 DUP2 DUP2 ADD SWAP1 MSTORE PUSH1 0x4 DUP2 MSTORE PUSH4 0xC68AA89 PUSH1 0xE3 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP3 POP PUSH2 0x492 SWAP2 POP POP JUMP JUMPDEST ISZERO PUSH2 0x409 JUMPI POP PUSH8 0xDE0B6B3A7640000 PUSH2 0x2A4 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6F307DC3 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 0x445 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x459 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x46F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP PUSH2 0x2A4 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x4C7 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x4A8 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x535 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x516 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 EQ SWAP1 POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 ISZERO MULMOD DELEGATECALL NUMBER 0xC SWAP11 0x5C 0xD4 0xE9 JUMPI 0x27 0xB8 PUSH12 0x9680C984C2C564D8AE5684DA MULMOD SWAP16 ADDMOD 0xA5 LOG1 EXP 0xCE PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ","sourceMap":"77:1295:38:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;77:1295:38;;;;;;;"},"deployedBytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100575760003560e01c806309a8acb01461005c578063127ffda01461008a5780635e9a523c146100b657806366331bba146100ee578063fc57d4df1461010a575b600080fd5b6100886004803603604081101561007257600080fd5b506001600160a01b038135169060200135610130565b005b610088600480360360408110156100a057600080fd5b506001600160a01b0381351690602001356101a8565b6100dc600480360360208110156100cc57600080fd5b50356001600160a01b031661028a565b60408051918252519081900360200190f35b6100f66102a9565b604080519115158252519081900360200190f35b6100dc6004803603602081101561012057600080fd5b50356001600160a01b03166102ae565b6001600160a01b038216600081815260208181526040918290205482519384529083015281810183905260608201839052517fdd71a1d19fcba687442a1d5c58578f1e409af71a79d10fd95a4d66efd8fa9ae79181900360800190a16001600160a01b03909116600090815260208190526040902055565b6000826001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b1580156101e357600080fd5b505afa1580156101f7573d6000803e3d6000fd5b505050506040513d602081101561020d57600080fd5b50516001600160a01b038116600081815260208181526040918290205482519384529083015281810185905260608201859052519192507fdd71a1d19fcba687442a1d5c58578f1e409af71a79d10fd95a4d66efd8fa9ae7919081900360800190a16001600160a01b031660009081526020819052604090205550565b6001600160a01b0381166000908152602081905260409020545b919050565b600181565b60006103f5826001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b1580156102ec57600080fd5b505afa158015610300573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561032957600080fd5b810190808051604051939291908464010000000082111561034957600080fd5b90830190602082018581111561035e57600080fd5b825164010000000081118282018810171561037857600080fd5b82525081516020918201929091019080838360005b838110156103a557818101518382015260200161038d565b50505050905090810190601f1680156103d25780820380516001836020036101000a031916815260200191505b506040818101905260048152630c68aa8960e31b60208201529250610492915050565b156104095750670de0b6b3a76400006102a4565b600080836001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561044557600080fd5b505afa158015610459573d6000803e3d6000fd5b505050506040513d602081101561046f57600080fd5b50516001600160a01b0316815260208101919091526040016000205490506102a4565b6000816040516020018082805190602001908083835b602083106104c75780518252601f1990920191602091820191016104a8565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120836040516020018082805190602001908083835b602083106105355780518252601f199092019160209182019101610516565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051602081830303815290604052805190602001201490509291505056fea265627a7a723158201509f4430c9a5cd4e95727b86b9680c984c2c564d8ae5684da099f08a5a10ace64736f6c63430005110032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x57 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9A8ACB0 EQ PUSH2 0x5C JUMPI DUP1 PUSH4 0x127FFDA0 EQ PUSH2 0x8A JUMPI DUP1 PUSH4 0x5E9A523C EQ PUSH2 0xB6 JUMPI DUP1 PUSH4 0x66331BBA EQ PUSH2 0xEE JUMPI DUP1 PUSH4 0xFC57D4DF EQ PUSH2 0x10A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x88 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x72 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x130 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x88 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1A8 JUMP JUMPDEST PUSH2 0xDC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xCC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x28A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xF6 PUSH2 0x2A9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xDC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x120 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2AE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD DUP3 MLOAD SWAP4 DUP5 MSTORE SWAP1 DUP4 ADD MSTORE DUP2 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP4 SWAP1 MSTORE MLOAD PUSH32 0xDD71A1D19FCBA687442A1D5C58578F1E409AF71A79D10FD95A4D66EFD8FA9AE7 SWAP2 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6F307DC3 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 0x1E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1F7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x20D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD DUP3 MLOAD SWAP4 DUP5 MSTORE SWAP1 DUP4 ADD MSTORE DUP2 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP6 SWAP1 MSTORE MLOAD SWAP2 SWAP3 POP PUSH32 0xDD71A1D19FCBA687442A1D5C58578F1E409AF71A79D10FD95A4D66EFD8FA9AE7 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F5 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x95D89B41 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x300 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x329 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0x349 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x35E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH2 0x378 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3A5 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x38D JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x3D2 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 DUP2 DUP2 ADD SWAP1 MSTORE PUSH1 0x4 DUP2 MSTORE PUSH4 0xC68AA89 PUSH1 0xE3 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP3 POP PUSH2 0x492 SWAP2 POP POP JUMP JUMPDEST ISZERO PUSH2 0x409 JUMPI POP PUSH8 0xDE0B6B3A7640000 PUSH2 0x2A4 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6F307DC3 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 0x445 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x459 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x46F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP PUSH2 0x2A4 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x4C7 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x4A8 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x535 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x516 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 EQ SWAP1 POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 ISZERO MULMOD DELEGATECALL NUMBER 0xC SWAP11 0x5C 0xD4 0xE9 JUMPI 0x27 0xB8 PUSH12 0x9680C984C2C564D8AE5684DA MULMOD SWAP16 ADDMOD 0xA5 LOG1 EXP 0xCE PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ","sourceMap":"77:1295:38:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;77:1295:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;856:158;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;856:158:38;;;;;;;;:::i;:::-;;545:305;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;545:305:38;;;;;;;;:::i;1081:102::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1081:102:38;-1:-1:-1;;;;;1081:102:38;;:::i;:::-;;;;;;;;;;;;;;;;155:41:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;281:258:38;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;281:258:38;-1:-1:-1;;;;;281:258:38;;:::i;856:158::-;-1:-1:-1;;;;;948:13:38;;:6;:13;;;;;;;;;;;;;929:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;986:13:38;;;:6;:13;;;;;;;;;;:21;856:158::o;545:305::-;635:13;674:6;-1:-1:-1;;;;;659:34:38;;:36;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;659:36:38;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;659:36:38;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;659:36:38;-1:-1:-1;;;;;730:13:38;;:6;:13;;;659:36;730:13;;;;;;;;;711:83;;;;;;;;;;;;;;;;;;;;;;659:36;;-1:-1:-1;711:83:38;;;;;;;;;;-1:-1:-1;;;;;804:13:38;:6;:13;;;;;;;;;;:39;-1:-1:-1;545:305:38:o;1081:102::-;-1:-1:-1;;;;;1163:13:38;;1140:4;1163:13;;;;;;;;;;;1081:102;;;;:::o;155:41:31:-;192:4;155:41;:::o;281:258:38:-;345:4;365:39;380:6;-1:-1:-1;;;;;380:13:38;;:15;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;380:15:38;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;380:15:38;;;;;;39:16:-1;36:1;17:17;2:54;101:4;380:15:38;80::-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;380:15:38;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;261:11;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;380:15:38;;420:4:-1;411:14;;;;380:15:38;;;;;411:14:-1;380:15:38;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;380:15:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;380:15:38;365:39;;;;;;;;-1:-1:-1;;;365:39:38;;;;380:15;-1:-1:-1;365:14:38;;-1:-1:-1;;365:39:38:i;:::-;361:172;;;-1:-1:-1;427:4:38;420:11;;361:172;469:6;:53;499:6;-1:-1:-1;;;;;484:34:38;;:36;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;484:36:38;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;484:36:38;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;484:36:38;-1:-1:-1;;;;;469:53:38;;;484:36;469:53;;;;;;;;-1:-1:-1;469:53:38;;;-1:-1:-1;462:60:38;;1189:181;1270:4;1358:1;1340:21;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;1340:21:38;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1340:21:38;;;1330:32;;;;;;1322:1;1304:21;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;1304:21:38;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1304:21:38;;;1294:32;;;;;;:68;1286:77;;1189:181;;;;:::o"},"methodIdentifiers":{"assetPrices(address)":"5e9a523c","getUnderlyingPrice(address)":"fc57d4df","isPriceOracle()":"66331bba","setDirectPrice(address,uint256)":"09a8acb0","setUnderlyingPrice(address,uint256)":"127ffda0"}},"metadata":"{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"previousPriceMantissa\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requestedPriceMantissa\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newPriceMantissa\",\"type\":\"uint256\"}],\"name\":\"PricePosted\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"assetPrices\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"contract CToken\",\"name\":\"cToken\",\"type\":\"address\"}],\"name\":\"getUnderlyingPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isPriceOracle\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"setDirectPrice\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contract CToken\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"underlyingPriceMantissa\",\"type\":\"uint256\"}],\"name\":\"setUnderlyingPrice\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/SimplePriceOracle.sol\":\"SimplePriceOracle\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/CErc20.sol\":{\"keccak256\":\"0x37e284e3ca9a2821c3ad1001d110ca529820646f65dd441f5907070408b20bc2\",\"urls\":[\"bzz-raw://cb025aa0f581e05f023e5aef44cfcd47cdece7ec4cf53973d89834f5037666d2\",\"dweb:/ipfs/QmaY78mEyhUCuvbMVdGzpKmkw9yKoHz5noSg5REZgipupY\"]},\"contracts/CToken.sol\":{\"keccak256\":\"0xc3a5a827241528049e20a24cc446558c8a9272909f75ce5d1cf14ae3ab5feba3\",\"urls\":[\"bzz-raw://a403db2bf1a8e5e9384df19600bd18d4251056818b094afcdab418e683bb5cb8\",\"dweb:/ipfs/QmdkRbFGtKP67tNNqyH7BraDRGerwRNA7ktscbFV9LioM2\"]},\"contracts/CTokenInterfaces.sol\":{\"keccak256\":\"0xc8a056c724ef4f0215ece6011e7ac1007c9dc7611ce5160d470ec858bbb06bd3\",\"urls\":[\"bzz-raw://58951693d1b53d2722e55b068bab2b570f4b044d89c28ed6b53bac6e95aeb662\",\"dweb:/ipfs/QmQiNTw5jZR74WjKfX2bPiuTT4tuFuq8rx7QxEVyVvdGLn\"]},\"contracts/CarefulMath.sol\":{\"keccak256\":\"0x1487237dbbbb73ad43c8eff16e78311753719a94a5065f574de5c91b672c56f8\",\"urls\":[\"bzz-raw://349966a236f313b2cb42e1942832e6bd7e134f65f6654e6c4d46788e65cc4a9b\",\"dweb:/ipfs/Qmebpv8i5jLR4fLgpZHQZRLu6aefVAbLC2yUk9ABEekquz\"]},\"contracts/ComptrollerInterface.sol\":{\"keccak256\":\"0xecfb84fabc9792d0b1c912886249c67bc42c39eb065d962d0b9a5f3736af5892\",\"urls\":[\"bzz-raw://711547ebc1a7f18b271118dd98276771953a9d7b3674716f67d247be9b907372\",\"dweb:/ipfs/QmbVZNvkBp8miByATrL6y5j8MePdcQ8uTAUZMpKrhpLgoa\"]},\"contracts/ComptrollerStorage.sol\":{\"keccak256\":\"0x83961d3c12984fe4afc72717fc44b2d868563d053a0eceda0cbf17ec6b255913\",\"urls\":[\"bzz-raw://ea667c2de43881f9be19f4f75dec348632273178965fc9b3655705d853b032bb\",\"dweb:/ipfs/QmZP6sbNFSgFZrAEvfRjhp1NtGj6U6Sea3JGiKG96AHyeP\"]},\"contracts/EIP20Interface.sol\":{\"keccak256\":\"0xee33b8b333743308a9153a59f22da2cadb22cedef4403fe039bf9e057c9c729a\",\"urls\":[\"bzz-raw://5427fdb941300d36a424da0a0a5800e3b2ca51c9c922831dbfce2f6637402b43\",\"dweb:/ipfs/QmTrvmLynqSUPjsGW2dpiQ91dSmn4xzccQiwr8qaBtyvjH\"]},\"contracts/EIP20NonStandardInterface.sol\":{\"keccak256\":\"0x469899442dd9640bfc2c670d404ad3027e48df5df8e5aeab0e25cc6b6aae05f5\",\"urls\":[\"bzz-raw://d8c4498abaf539eb413a2f1a916d75945adc8bd4ef437f8450cb67e07be3f38d\",\"dweb:/ipfs/QmaFpWfnhAMYW21rbT5PEszn4TGHdGU58Eq5AfZsCuapZ3\"]},\"contracts/ErrorReporter.sol\":{\"keccak256\":\"0xe9587478bc9efad203cab02b8aecae32828cfc9a271b13ae3c018e38e44aab32\",\"urls\":[\"bzz-raw://2eb34bdbbbc410fb401d50ddca44a7421a1d8191711c569ed5bcec1c1b07a05c\",\"dweb:/ipfs/QmYKNCYppyx3NGiwtjdLEmxUMgfnFBqT4pnvnhnBrPgrxS\"]},\"contracts/Exponential.sol\":{\"keccak256\":\"0xfda0e2b610541cf1cf316a0000c89a1069ccc21f1566affc0a058810e2b835d3\",\"urls\":[\"bzz-raw://fe319f184f1b5f27019d3d890124cd24e466d27153ac38eb9ff6b16efbad48b9\",\"dweb:/ipfs/Qmcev6jCmtdCviJxUQvUCmesPDShRDSvdfUEfvsqd4GEJA\"]},\"contracts/ExponentialNoError.sol\":{\"keccak256\":\"0x713a089f4bbcaec1d3924fc7d9a2154904a39f46cb6f25b713167dbe5f21623e\",\"urls\":[\"bzz-raw://d7108d68af7c5effd4272615ceba54e79e585f6b8be5aabc7602245c84c7b9e0\",\"dweb:/ipfs/QmQZo2XpxW7w5viVEg71mi9eKaAYD7HUqfCMB5yCCPVnc5\"]},\"contracts/IFuseFeeDistributor.sol\":{\"keccak256\":\"0xb5d287b8e05574d38bd5d0b413f44b4c5d312f28188573ac60abe78123fbd92c\",\"urls\":[\"bzz-raw://84c2bbf746a82aaa100bee90c7dd40411c723bded124bb1775bf72bf7fda8a2c\",\"dweb:/ipfs/QmToQzDtz9BV2tvU71YsfWjdaZu5qpP1xKFZ1TkQgubhDb\"]},\"contracts/InterestRateModel.sol\":{\"keccak256\":\"0x0cc0dbd1991e5dcdcff58b0c82a9471a0fb9df26763e5e7415e1d081b7332409\",\"urls\":[\"bzz-raw://f4d7936aefc43ea2724f0e472b8f1517f1ca40170258ab9d5bbd0862dd0c4f13\",\"dweb:/ipfs/QmfYjG1Sm3kNwbhomHCWhMqw9LvaJVWVzBe4Te5BHRbTQS\"]},\"contracts/PriceOracle.sol\":{\"keccak256\":\"0x62ba3a5ec8f06d456ab089d6ca7f9d14d3a6ce6814923271ca60a6990918fb41\",\"urls\":[\"bzz-raw://aa6d2f20efdd5389161eb15bdab98b5628dc8cd5354394bbed35bb14d3612506\",\"dweb:/ipfs/QmVfo4eCDuk8LMSywpBjZBxCv7zLCNsG6u3nyD1d4CYwsD\"]},\"contracts/SimplePriceOracle.sol\":{\"keccak256\":\"0x154c041cee52f074526df497a4a70d462fd81d083f6b3c10fd747c9d1193076f\",\"urls\":[\"bzz-raw://2ba6a0e8a6947e76fa8b9a2648c891ca863e1a7b6cbfe317051aeaa29ce64314\",\"dweb:/ipfs/QmajCWHjyVbGmMCGm9DK8ipTHjsek9hTmvtFbcrGiZuaJ3\"]}},\"version\":1}"}},"contracts/Timelock.sol":{"Timelock":{"abi":[{"inputs":[{"internalType":"address","name":"admin_","type":"address"},{"internalType":"uint256","name":"delay_","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"txHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"string","name":"signature","type":"string"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"uint256","name":"eta","type":"uint256"}],"name":"CancelTransaction","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"txHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"string","name":"signature","type":"string"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"uint256","name":"eta","type":"uint256"}],"name":"ExecuteTransaction","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAdmin","type":"address"}],"name":"NewAdmin","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newDelay","type":"uint256"}],"name":"NewDelay","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newPendingAdmin","type":"address"}],"name":"NewPendingAdmin","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"txHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"string","name":"signature","type":"string"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"uint256","name":"eta","type":"uint256"}],"name":"QueueTransaction","type":"event"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":true,"inputs":[],"name":"GRACE_PERIOD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MAXIMUM_DELAY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MINIMUM_DELAY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"acceptAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"string","name":"signature","type":"string"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint256","name":"eta","type":"uint256"}],"name":"cancelTransaction","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"delay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"string","name":"signature","type":"string"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint256","name":"eta","type":"uint256"}],"name":"executeTransaction","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"pendingAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"string","name":"signature","type":"string"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint256","name":"eta","type":"uint256"}],"name":"queueTransaction","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"queuedTransactions","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"delay_","type":"uint256"}],"name":"setDelay","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"pendingAdmin_","type":"address"}],"name":"setPendingAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b506040516118a63803806118a68339818101604052604081101561003357600080fd5b5080516020909101516202a30081101561007e5760405162461bcd60e51b81526004018080602001828103825260378152602001806118376037913960400191505060405180910390fd5b62278d008111156100c05760405162461bcd60e51b815260040180806020018281038252603881526020018061186e6038913960400191505060405180910390fd5b600080546001600160a01b039093166001600160a01b031990931692909217909155600255611743806100f46000396000f3fe6080604052600436106100c25760003560e01c80636a42b8f81161007f578063c1a287e211610059578063c1a287e2146105dd578063e177246e146105f2578063f2b065371461061c578063f851a4401461065a576100c2565b80636a42b8f81461059e5780637d645fab146105b3578063b1b43ae5146105c8576100c2565b80630825f38f146100c45780630e18b68114610279578063267822471461028e5780633a66f901146102bf5780634dd18bf51461041e578063591fcdfe14610451575b005b610204600480360360a08110156100da57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561010957600080fd5b82018360208201111561011b57600080fd5b803590602001918460018302840111600160201b8311171561013c57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561018e57600080fd5b8201836020820111156101a057600080fd5b803590602001918460018302840111600160201b831117156101c157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550509135925061066f915050565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561023e578181015183820152602001610226565b50505050905090810190601f16801561026b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561028557600080fd5b506100c2610b88565b34801561029a57600080fd5b506102a3610c24565b604080516001600160a01b039092168252519081900360200190f35b3480156102cb57600080fd5b5061040c600480360360a08110156102e257600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561031157600080fd5b82018360208201111561032357600080fd5b803590602001918460018302840111600160201b8311171561034457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561039657600080fd5b8201836020820111156103a857600080fd5b803590602001918460018302840111600160201b831117156103c957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250610c33915050565b60408051918252519081900360200190f35b34801561042a57600080fd5b506100c26004803603602081101561044157600080fd5b50356001600160a01b0316610f44565b34801561045d57600080fd5b506100c2600480360360a081101561047457600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b8111156104a357600080fd5b8201836020820111156104b557600080fd5b803590602001918460018302840111600160201b831117156104d657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561052857600080fd5b82018360208201111561053a57600080fd5b803590602001918460018302840111600160201b8311171561055b57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250610fd2915050565b3480156105aa57600080fd5b5061040c611288565b3480156105bf57600080fd5b5061040c61128e565b3480156105d457600080fd5b5061040c611295565b3480156105e957600080fd5b5061040c61129c565b3480156105fe57600080fd5b506100c26004803603602081101561061557600080fd5b50356112a3565b34801561062857600080fd5b506106466004803603602081101561063f57600080fd5b5035611398565b604080519115158252519081900360200190f35b34801561066657600080fd5b506102a36113ad565b6000546060906001600160a01b031633146106bb5760405162461bcd60e51b81526004018080602001828103825260388152602001806114226038913960400191505060405180910390fd5b6000868686868660405160200180866001600160a01b03166001600160a01b031681526020018581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b8381101561072a578181015183820152602001610712565b50505050905090810190601f1680156107575780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b8381101561078a578181015183820152602001610772565b50505050905090810190601f1680156107b75780820380516001836020036101000a031916815260200191505b5060408051601f1981840301815291815281516020928301206000818152600390935291205490995060ff16975061082896505050505050505760405162461bcd60e51b815260040180806020018281038252603d815260200180611575603d913960400191505060405180910390fd5b826108316113bc565b101561086e5760405162461bcd60e51b81526004018080602001828103825260458152602001806114c46045913960600191505060405180910390fd5b610881836212750063ffffffff6113c016565b6108896113bc565b11156108c65760405162461bcd60e51b81526004018080602001828103825260338152602001806114916033913960400191505060405180910390fd5b6000818152600360205260409020805460ff1916905584516060906108ec575083610979565b85805190602001208560405160200180836001600160e01b0319166001600160e01b031916815260040182805190602001908083835b602083106109415780518252601f199092019160209182019101610922565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405290505b60006060896001600160a01b031689846040518082805190602001908083835b602083106109b85780518252601f199092019160209182019101610999565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114610a1a576040519150601f19603f3d011682016040523d82523d6000602084013e610a1f565b606091505b509150915081610a605760405162461bcd60e51b815260040180806020018281038252603d815260200180611658603d913960400191505060405180910390fd5b896001600160a01b0316847fa560e3198060a2f10670c1ec5b403077ea6ae93ca8de1c32b451dc1a943cd6e78b8b8b8b604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b83811015610add578181015183820152602001610ac5565b50505050905090810190601f168015610b0a5780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015610b3d578181015183820152602001610b25565b50505050905090810190601f168015610b6a5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a39998505050505050505050565b6001546001600160a01b03163314610bd15760405162461bcd60e51b81526004018080602001828103825260388152602001806115b26038913960400191505060405180910390fd5b60008054336001600160a01b031991821617808355600180549092169091556040516001600160a01b03909116917f71614071b88dee5e0b2ae578a9dd7b2ebbe9ae832ba419dc0242cd065a290b6c91a2565b6001546001600160a01b031681565b600080546001600160a01b03163314610c7d5760405162461bcd60e51b81526004018080602001828103825260368152602001806116226036913960400191505060405180910390fd5b610c97600254610c8b6113bc565b9063ffffffff6113c016565b821015610cd55760405162461bcd60e51b81526004018080602001828103825260498152602001806116956049913960600191505060405180910390fd5b6000868686868660405160200180866001600160a01b03166001600160a01b031681526020018581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b83811015610d44578181015183820152602001610d2c565b50505050905090810190601f168015610d715780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015610da4578181015183820152602001610d8c565b50505050905090810190601f168015610dd15780820380516001836020036101000a031916815260200191505b5097505050505050505060405160208183030381529060405280519060200120905060016003600083815260200190815260200160002060006101000a81548160ff021916908315150217905550866001600160a01b0316817f76e2796dc3a81d57b0e8504b647febcbeeb5f4af818e164f11eef8131a6a763f88888888604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b83811015610e9c578181015183820152602001610e84565b50505050905090810190601f168015610ec95780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015610efc578181015183820152602001610ee4565b50505050905090810190601f168015610f295780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a39695505050505050565b333014610f825760405162461bcd60e51b81526004018080602001828103825260388152602001806115ea6038913960400191505060405180910390fd5b600180546001600160a01b0319166001600160a01b0383811691909117918290556040519116907f69d78e38a01985fbb1462961809b4b2d65531bc93b2b94037f3334b82ca4a75690600090a250565b6000546001600160a01b0316331461101b5760405162461bcd60e51b815260040180806020018281038252603781526020018061145a6037913960400191505060405180910390fd5b6000858585858560405160200180866001600160a01b03166001600160a01b031681526020018581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b8381101561108a578181015183820152602001611072565b50505050905090810190601f1680156110b75780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b838110156110ea5781810151838201526020016110d2565b50505050905090810190601f1680156111175780820380516001836020036101000a031916815260200191505b5097505050505050505060405160208183030381529060405280519060200120905060006003600083815260200190815260200160002060006101000a81548160ff021916908315150217905550856001600160a01b0316817f2fffc091a501fd91bfbff27141450d3acb40fb8e6d8382b243ec7a812a3aaf8787878787604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b838110156111e25781810151838201526020016111ca565b50505050905090810190601f16801561120f5780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b8381101561124257818101518382015260200161122a565b50505050905090810190601f16801561126f5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a3505050505050565b60025481565b62278d0081565b6202a30081565b6212750081565b3330146112e15760405162461bcd60e51b81526004018080602001828103825260318152602001806116de6031913960400191505060405180910390fd5b6202a3008110156113235760405162461bcd60e51b81526004018080602001828103825260348152602001806115096034913960400191505060405180910390fd5b62278d008111156113655760405162461bcd60e51b815260040180806020018281038252603881526020018061153d6038913960400191505060405180910390fd5b600281905560405181907f948b1f6a42ee138b7e34058ba85a37f716d55ff25ff05a763f15bed6a04c8d2c90600090a250565b60036020526000908152604090205460ff1681565b6000546001600160a01b031681565b4290565b60008282018381101561141a576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b939250505056fe54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e54696d656c6f636b3a3a63616e63656c5472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206973207374616c652e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206861736e2774207375727061737365642074696d65206c6f636b2e54696d656c6f636b3a3a73657444656c61793a2044656c6179206d75737420657863656564206d696e696d756d2064656c61792e54696d656c6f636b3a3a73657444656c61793a2044656c6179206d757374206e6f7420657863656564206d6178696d756d2064656c61792e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206861736e2774206265656e207175657565642e54696d656c6f636b3a3a61636365707441646d696e3a2043616c6c206d75737420636f6d652066726f6d2070656e64696e6741646d696e2e54696d656c6f636b3a3a73657450656e64696e6741646d696e3a2043616c6c206d75737420636f6d652066726f6d2054696d656c6f636b2e54696d656c6f636b3a3a71756575655472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e20657865637574696f6e2072657665727465642e54696d656c6f636b3a3a71756575655472616e73616374696f6e3a20457374696d6174656420657865637574696f6e20626c6f636b206d75737420736174697366792064656c61792e54696d656c6f636b3a3a73657444656c61793a2043616c6c206d75737420636f6d652066726f6d2054696d656c6f636b2ea265627a7a72315820449e0f1ec0aa5c9ae932baf84e6568613c98474b5d4281cb22e1ca84b3671a2464736f6c6343000511003254696d656c6f636b3a3a636f6e7374727563746f723a2044656c6179206d75737420657863656564206d696e696d756d2064656c61792e54696d656c6f636b3a3a73657444656c61793a2044656c6179206d757374206e6f7420657863656564206d6178696d756d2064656c61792e","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x18A6 CODESIZE SUB DUP1 PUSH2 0x18A6 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH3 0x2A300 DUP2 LT ISZERO PUSH2 0x7E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x37 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1837 PUSH1 0x37 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x278D00 DUP2 GT ISZERO PUSH2 0xC0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x186E PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE PUSH1 0x2 SSTORE PUSH2 0x1743 DUP1 PUSH2 0xF4 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xC2 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6A42B8F8 GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xC1A287E2 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xC1A287E2 EQ PUSH2 0x5DD JUMPI DUP1 PUSH4 0xE177246E EQ PUSH2 0x5F2 JUMPI DUP1 PUSH4 0xF2B06537 EQ PUSH2 0x61C JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x65A JUMPI PUSH2 0xC2 JUMP JUMPDEST DUP1 PUSH4 0x6A42B8F8 EQ PUSH2 0x59E JUMPI DUP1 PUSH4 0x7D645FAB EQ PUSH2 0x5B3 JUMPI DUP1 PUSH4 0xB1B43AE5 EQ PUSH2 0x5C8 JUMPI PUSH2 0xC2 JUMP JUMPDEST DUP1 PUSH4 0x825F38F EQ PUSH2 0xC4 JUMPI DUP1 PUSH4 0xE18B681 EQ PUSH2 0x279 JUMPI DUP1 PUSH4 0x26782247 EQ PUSH2 0x28E JUMPI DUP1 PUSH4 0x3A66F901 EQ PUSH2 0x2BF JUMPI DUP1 PUSH4 0x4DD18BF5 EQ PUSH2 0x41E JUMPI DUP1 PUSH4 0x591FCDFE EQ PUSH2 0x451 JUMPI JUMPDEST STOP JUMPDEST PUSH2 0x204 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0xDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x109 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x11B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x13C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x18E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x1C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP POP SWAP2 CALLDATALOAD SWAP3 POP PUSH2 0x66F SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x23E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x226 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x26B JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x285 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC2 PUSH2 0xB88 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x29A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2A3 PUSH2 0xC24 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x40C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x2E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x311 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x323 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x344 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x396 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x3C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP POP SWAP2 CALLDATALOAD SWAP3 POP PUSH2 0xC33 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x42A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x441 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xF44 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x45D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x474 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x4A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x4B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x4D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x528 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x53A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x55B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP POP SWAP2 CALLDATALOAD SWAP3 POP PUSH2 0xFD2 SWAP2 POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x40C PUSH2 0x1288 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x40C PUSH2 0x128E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x40C PUSH2 0x1295 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x40C PUSH2 0x129C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x615 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x12A3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x628 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x646 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x63F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1398 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x666 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2A3 PUSH2 0x13AD JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x60 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x6BB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1422 PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x72A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x712 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x757 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP6 MLOAD DUP2 MSTORE DUP6 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x78A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x772 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x7B7 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 SWAP1 SWAP4 MSTORE SWAP2 KECCAK256 SLOAD SWAP1 SWAP10 POP PUSH1 0xFF AND SWAP8 POP PUSH2 0x828 SWAP7 POP POP POP POP POP POP POP JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1575 PUSH1 0x3D SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH2 0x831 PUSH2 0x13BC JUMP JUMPDEST LT ISZERO PUSH2 0x86E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x45 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x14C4 PUSH1 0x45 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x881 DUP4 PUSH3 0x127500 PUSH4 0xFFFFFFFF PUSH2 0x13C0 AND JUMP JUMPDEST PUSH2 0x889 PUSH2 0x13BC JUMP JUMPDEST GT ISZERO PUSH2 0x8C6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x33 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1491 PUSH1 0x33 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE DUP5 MLOAD PUSH1 0x60 SWAP1 PUSH2 0x8EC JUMPI POP DUP4 PUSH2 0x979 JUMP JUMPDEST DUP6 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP6 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND DUP2 MSTORE PUSH1 0x4 ADD DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x941 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x922 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x9B8 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x999 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xA1A 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 0xA1F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0xA60 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1658 PUSH1 0x3D SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH32 0xA560E3198060A2F10670C1EC5B403077EA6AE93CA8DE1C32B451DC1A943CD6E7 DUP12 DUP12 DUP12 DUP12 PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xADD JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAC5 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xB0A JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP6 MLOAD DUP2 MSTORE DUP6 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xB3D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xB25 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xB6A JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xBD1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x15B2 PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR DUP1 DUP4 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP3 AND SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 PUSH32 0x71614071B88DEE5E0B2AE578A9DD7B2EBBE9AE832BA419DC0242CD065A290B6C SWAP2 LOG2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xC7D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x36 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1622 PUSH1 0x36 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xC97 PUSH1 0x2 SLOAD PUSH2 0xC8B PUSH2 0x13BC JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x13C0 AND JUMP JUMPDEST DUP3 LT ISZERO PUSH2 0xCD5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x49 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1695 PUSH1 0x49 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xD44 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xD2C JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xD71 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP6 MLOAD DUP2 MSTORE DUP6 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xDA4 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xD8C JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xDD1 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x1 PUSH1 0x3 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH32 0x76E2796DC3A81D57B0E8504B647FEBCBEEB5F4AF818E164F11EEF8131A6A763F DUP9 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xE9C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xE84 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xEC9 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP6 MLOAD DUP2 MSTORE DUP6 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xEFC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xEE4 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xF29 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST CALLER ADDRESS EQ PUSH2 0xF82 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x15EA PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP2 DUP3 SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP1 PUSH32 0x69D78E38A01985FBB1462961809B4B2D65531BC93B2B94037F3334B82CA4A756 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x101B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x37 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x145A PUSH1 0x37 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x108A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1072 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x10B7 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP6 MLOAD DUP2 MSTORE DUP6 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x10EA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x10D2 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1117 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH32 0x2FFFC091A501FD91BFBFF27141450D3ACB40FB8E6D8382B243EC7A812A3AAF87 DUP8 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x11E2 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x11CA JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x120F JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP6 MLOAD DUP2 MSTORE DUP6 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1242 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x122A JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x126F JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH3 0x278D00 DUP2 JUMP JUMPDEST PUSH3 0x2A300 DUP2 JUMP JUMPDEST PUSH3 0x127500 DUP2 JUMP JUMPDEST CALLER ADDRESS EQ PUSH2 0x12E1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x16DE PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x2A300 DUP2 LT ISZERO PUSH2 0x1323 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1509 PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x278D00 DUP2 GT ISZERO PUSH2 0x1365 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x153D PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD DUP2 SWAP1 PUSH32 0x948B1F6A42EE138B7E34058BA85A37F716D55FF25FF05A763F15BED6A04C8D2C SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST TIMESTAMP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x141A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP INVALID SLOAD PUSH10 0x6D656C6F636B3A3A6578 PUSH6 0x637574655472 PUSH2 0x6E73 PUSH2 0x6374 PUSH10 0x6F6E3A2043616C6C206D PUSH22 0x737420636F6D652066726F6D2061646D696E2E54696D PUSH6 0x6C6F636B3A3A PUSH4 0x616E6365 PUSH13 0x5472616E73616374696F6E3A20 NUMBER PUSH2 0x6C6C KECCAK256 PUSH14 0x75737420636F6D652066726F6D20 PUSH2 0x646D PUSH10 0x6E2E54696D656C6F636B GASPRICE GASPRICE PUSH6 0x786563757465 SLOAD PUSH19 0x616E73616374696F6E3A205472616E73616374 PUSH10 0x6F6E206973207374616C PUSH6 0x2E54696D656C PUSH16 0x636B3A3A657865637574655472616E73 PUSH2 0x6374 PUSH10 0x6F6E3A205472616E7361 PUSH4 0x74696F6E KECCAK256 PUSH9 0x61736E277420737572 PUSH17 0x61737365642074696D65206C6F636B2E54 PUSH10 0x6D656C6F636B3A3A7365 PUSH21 0x44656C61793A2044656C6179206D75737420657863 PUSH6 0x6564206D696E PUSH10 0x6D756D2064656C61792E SLOAD PUSH10 0x6D656C6F636B3A3A7365 PUSH21 0x44656C61793A2044656C6179206D757374206E6F74 KECCAK256 PUSH6 0x786365656420 PUSH14 0x6178696D756D2064656C61792E54 PUSH10 0x6D656C6F636B3A3A6578 PUSH6 0x637574655472 PUSH2 0x6E73 PUSH2 0x6374 PUSH10 0x6F6E3A205472616E7361 PUSH4 0x74696F6E KECCAK256 PUSH9 0x61736E277420626565 PUSH15 0x207175657565642E54696D656C6F63 PUSH12 0x3A3A61636365707441646D69 PUSH15 0x3A2043616C6C206D75737420636F6D PUSH6 0x2066726F6D20 PUSH17 0x656E64696E6741646D696E2E54696D656C PUSH16 0x636B3A3A73657450656E64696E674164 PUSH14 0x696E3A2043616C6C206D75737420 PUSH4 0x6F6D6520 PUSH7 0x726F6D2054696D PUSH6 0x6C6F636B2E54 PUSH10 0x6D656C6F636B3A3A7175 PUSH6 0x75655472616E PUSH20 0x616374696F6E3A2043616C6C206D75737420636F PUSH14 0x652066726F6D2061646D696E2E54 PUSH10 0x6D656C6F636B3A3A6578 PUSH6 0x637574655472 PUSH2 0x6E73 PUSH2 0x6374 PUSH10 0x6F6E3A205472616E7361 PUSH4 0x74696F6E KECCAK256 PUSH6 0x786563757469 PUSH16 0x6E2072657665727465642E54696D656C PUSH16 0x636B3A3A71756575655472616E736163 PUSH21 0x696F6E3A20457374696D6174656420657865637574 PUSH10 0x6F6E20626C6F636B206D PUSH22 0x737420736174697366792064656C61792E54696D656C PUSH16 0x636B3A3A73657444656C61793A204361 PUSH13 0x6C206D75737420636F6D652066 PUSH19 0x6F6D2054696D656C6F636B2EA265627A7A7231 PC KECCAK256 DIFFICULTY SWAP15 0xF 0x1E 0xC0 0xAA 0x5C SWAP11 0xE9 ORIGIN 0xBA 0xF8 0x4E PUSH6 0x68613C98474B 0x5D TIMESTAMP DUP2 0xCB 0x22 0xE1 0xCA DUP5 0xB3 PUSH8 0x1A2464736F6C6343 STOP SDIV GT STOP ORIGIN SLOAD PUSH10 0x6D656C6F636B3A3A636F PUSH15 0x7374727563746F723A2044656C6179 KECCAK256 PUSH14 0x75737420657863656564206D696E PUSH10 0x6D756D2064656C61792E SLOAD PUSH10 0x6D656C6F636B3A3A7365 PUSH21 0x44656C61793A2044656C6179206D757374206E6F74 KECCAK256 PUSH6 0x786365656420 PUSH14 0x6178696D756D2064656C61792E00 ","sourceMap":"51:4634:39:-;;;935:307;8:9:-1;5:2;;;30:1;27;20:12;5:2;935:307:39;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;935:307:39;;;;;;;730:6;1001:23;;;993:91;;;;-1:-1:-1;;;993:91:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;779:7;1102:6;:23;;1094:92;;;;-1:-1:-1;;;1094:92:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1197:5;:14;;-1:-1:-1;;;;;1197:14:39;;;-1:-1:-1;;;;;;1197:14:39;;;;;;;;;;1221:5;:14;51:4634;;;;;;"},"deployedBytecode":{"linkReferences":{},"object":"6080604052600436106100c25760003560e01c80636a42b8f81161007f578063c1a287e211610059578063c1a287e2146105dd578063e177246e146105f2578063f2b065371461061c578063f851a4401461065a576100c2565b80636a42b8f81461059e5780637d645fab146105b3578063b1b43ae5146105c8576100c2565b80630825f38f146100c45780630e18b68114610279578063267822471461028e5780633a66f901146102bf5780634dd18bf51461041e578063591fcdfe14610451575b005b610204600480360360a08110156100da57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561010957600080fd5b82018360208201111561011b57600080fd5b803590602001918460018302840111600160201b8311171561013c57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561018e57600080fd5b8201836020820111156101a057600080fd5b803590602001918460018302840111600160201b831117156101c157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550509135925061066f915050565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561023e578181015183820152602001610226565b50505050905090810190601f16801561026b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561028557600080fd5b506100c2610b88565b34801561029a57600080fd5b506102a3610c24565b604080516001600160a01b039092168252519081900360200190f35b3480156102cb57600080fd5b5061040c600480360360a08110156102e257600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561031157600080fd5b82018360208201111561032357600080fd5b803590602001918460018302840111600160201b8311171561034457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561039657600080fd5b8201836020820111156103a857600080fd5b803590602001918460018302840111600160201b831117156103c957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250610c33915050565b60408051918252519081900360200190f35b34801561042a57600080fd5b506100c26004803603602081101561044157600080fd5b50356001600160a01b0316610f44565b34801561045d57600080fd5b506100c2600480360360a081101561047457600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b8111156104a357600080fd5b8201836020820111156104b557600080fd5b803590602001918460018302840111600160201b831117156104d657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561052857600080fd5b82018360208201111561053a57600080fd5b803590602001918460018302840111600160201b8311171561055b57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250610fd2915050565b3480156105aa57600080fd5b5061040c611288565b3480156105bf57600080fd5b5061040c61128e565b3480156105d457600080fd5b5061040c611295565b3480156105e957600080fd5b5061040c61129c565b3480156105fe57600080fd5b506100c26004803603602081101561061557600080fd5b50356112a3565b34801561062857600080fd5b506106466004803603602081101561063f57600080fd5b5035611398565b604080519115158252519081900360200190f35b34801561066657600080fd5b506102a36113ad565b6000546060906001600160a01b031633146106bb5760405162461bcd60e51b81526004018080602001828103825260388152602001806114226038913960400191505060405180910390fd5b6000868686868660405160200180866001600160a01b03166001600160a01b031681526020018581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b8381101561072a578181015183820152602001610712565b50505050905090810190601f1680156107575780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b8381101561078a578181015183820152602001610772565b50505050905090810190601f1680156107b75780820380516001836020036101000a031916815260200191505b5060408051601f1981840301815291815281516020928301206000818152600390935291205490995060ff16975061082896505050505050505760405162461bcd60e51b815260040180806020018281038252603d815260200180611575603d913960400191505060405180910390fd5b826108316113bc565b101561086e5760405162461bcd60e51b81526004018080602001828103825260458152602001806114c46045913960600191505060405180910390fd5b610881836212750063ffffffff6113c016565b6108896113bc565b11156108c65760405162461bcd60e51b81526004018080602001828103825260338152602001806114916033913960400191505060405180910390fd5b6000818152600360205260409020805460ff1916905584516060906108ec575083610979565b85805190602001208560405160200180836001600160e01b0319166001600160e01b031916815260040182805190602001908083835b602083106109415780518252601f199092019160209182019101610922565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405290505b60006060896001600160a01b031689846040518082805190602001908083835b602083106109b85780518252601f199092019160209182019101610999565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114610a1a576040519150601f19603f3d011682016040523d82523d6000602084013e610a1f565b606091505b509150915081610a605760405162461bcd60e51b815260040180806020018281038252603d815260200180611658603d913960400191505060405180910390fd5b896001600160a01b0316847fa560e3198060a2f10670c1ec5b403077ea6ae93ca8de1c32b451dc1a943cd6e78b8b8b8b604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b83811015610add578181015183820152602001610ac5565b50505050905090810190601f168015610b0a5780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015610b3d578181015183820152602001610b25565b50505050905090810190601f168015610b6a5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a39998505050505050505050565b6001546001600160a01b03163314610bd15760405162461bcd60e51b81526004018080602001828103825260388152602001806115b26038913960400191505060405180910390fd5b60008054336001600160a01b031991821617808355600180549092169091556040516001600160a01b03909116917f71614071b88dee5e0b2ae578a9dd7b2ebbe9ae832ba419dc0242cd065a290b6c91a2565b6001546001600160a01b031681565b600080546001600160a01b03163314610c7d5760405162461bcd60e51b81526004018080602001828103825260368152602001806116226036913960400191505060405180910390fd5b610c97600254610c8b6113bc565b9063ffffffff6113c016565b821015610cd55760405162461bcd60e51b81526004018080602001828103825260498152602001806116956049913960600191505060405180910390fd5b6000868686868660405160200180866001600160a01b03166001600160a01b031681526020018581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b83811015610d44578181015183820152602001610d2c565b50505050905090810190601f168015610d715780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015610da4578181015183820152602001610d8c565b50505050905090810190601f168015610dd15780820380516001836020036101000a031916815260200191505b5097505050505050505060405160208183030381529060405280519060200120905060016003600083815260200190815260200160002060006101000a81548160ff021916908315150217905550866001600160a01b0316817f76e2796dc3a81d57b0e8504b647febcbeeb5f4af818e164f11eef8131a6a763f88888888604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b83811015610e9c578181015183820152602001610e84565b50505050905090810190601f168015610ec95780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015610efc578181015183820152602001610ee4565b50505050905090810190601f168015610f295780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a39695505050505050565b333014610f825760405162461bcd60e51b81526004018080602001828103825260388152602001806115ea6038913960400191505060405180910390fd5b600180546001600160a01b0319166001600160a01b0383811691909117918290556040519116907f69d78e38a01985fbb1462961809b4b2d65531bc93b2b94037f3334b82ca4a75690600090a250565b6000546001600160a01b0316331461101b5760405162461bcd60e51b815260040180806020018281038252603781526020018061145a6037913960400191505060405180910390fd5b6000858585858560405160200180866001600160a01b03166001600160a01b031681526020018581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b8381101561108a578181015183820152602001611072565b50505050905090810190601f1680156110b75780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b838110156110ea5781810151838201526020016110d2565b50505050905090810190601f1680156111175780820380516001836020036101000a031916815260200191505b5097505050505050505060405160208183030381529060405280519060200120905060006003600083815260200190815260200160002060006101000a81548160ff021916908315150217905550856001600160a01b0316817f2fffc091a501fd91bfbff27141450d3acb40fb8e6d8382b243ec7a812a3aaf8787878787604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b838110156111e25781810151838201526020016111ca565b50505050905090810190601f16801561120f5780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b8381101561124257818101518382015260200161122a565b50505050905090810190601f16801561126f5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a3505050505050565b60025481565b62278d0081565b6202a30081565b6212750081565b3330146112e15760405162461bcd60e51b81526004018080602001828103825260318152602001806116de6031913960400191505060405180910390fd5b6202a3008110156113235760405162461bcd60e51b81526004018080602001828103825260348152602001806115096034913960400191505060405180910390fd5b62278d008111156113655760405162461bcd60e51b815260040180806020018281038252603881526020018061153d6038913960400191505060405180910390fd5b600281905560405181907f948b1f6a42ee138b7e34058ba85a37f716d55ff25ff05a763f15bed6a04c8d2c90600090a250565b60036020526000908152604090205460ff1681565b6000546001600160a01b031681565b4290565b60008282018381101561141a576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b939250505056fe54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e54696d656c6f636b3a3a63616e63656c5472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206973207374616c652e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206861736e2774207375727061737365642074696d65206c6f636b2e54696d656c6f636b3a3a73657444656c61793a2044656c6179206d75737420657863656564206d696e696d756d2064656c61792e54696d656c6f636b3a3a73657444656c61793a2044656c6179206d757374206e6f7420657863656564206d6178696d756d2064656c61792e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206861736e2774206265656e207175657565642e54696d656c6f636b3a3a61636365707441646d696e3a2043616c6c206d75737420636f6d652066726f6d2070656e64696e6741646d696e2e54696d656c6f636b3a3a73657450656e64696e6741646d696e3a2043616c6c206d75737420636f6d652066726f6d2054696d656c6f636b2e54696d656c6f636b3a3a71756575655472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e20657865637574696f6e2072657665727465642e54696d656c6f636b3a3a71756575655472616e73616374696f6e3a20457374696d6174656420657865637574696f6e20626c6f636b206d75737420736174697366792064656c61792e54696d656c6f636b3a3a73657444656c61793a2043616c6c206d75737420636f6d652066726f6d2054696d656c6f636b2ea265627a7a72315820449e0f1ec0aa5c9ae932baf84e6568613c98474b5d4281cb22e1ca84b3671a2464736f6c63430005110032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xC2 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6A42B8F8 GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xC1A287E2 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xC1A287E2 EQ PUSH2 0x5DD JUMPI DUP1 PUSH4 0xE177246E EQ PUSH2 0x5F2 JUMPI DUP1 PUSH4 0xF2B06537 EQ PUSH2 0x61C JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x65A JUMPI PUSH2 0xC2 JUMP JUMPDEST DUP1 PUSH4 0x6A42B8F8 EQ PUSH2 0x59E JUMPI DUP1 PUSH4 0x7D645FAB EQ PUSH2 0x5B3 JUMPI DUP1 PUSH4 0xB1B43AE5 EQ PUSH2 0x5C8 JUMPI PUSH2 0xC2 JUMP JUMPDEST DUP1 PUSH4 0x825F38F EQ PUSH2 0xC4 JUMPI DUP1 PUSH4 0xE18B681 EQ PUSH2 0x279 JUMPI DUP1 PUSH4 0x26782247 EQ PUSH2 0x28E JUMPI DUP1 PUSH4 0x3A66F901 EQ PUSH2 0x2BF JUMPI DUP1 PUSH4 0x4DD18BF5 EQ PUSH2 0x41E JUMPI DUP1 PUSH4 0x591FCDFE EQ PUSH2 0x451 JUMPI JUMPDEST STOP JUMPDEST PUSH2 0x204 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0xDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x109 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x11B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x13C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x18E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x1C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP POP SWAP2 CALLDATALOAD SWAP3 POP PUSH2 0x66F SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x23E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x226 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x26B JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x285 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC2 PUSH2 0xB88 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x29A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2A3 PUSH2 0xC24 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x40C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x2E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x311 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x323 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x344 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x396 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x3C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP POP SWAP2 CALLDATALOAD SWAP3 POP PUSH2 0xC33 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x42A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x441 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xF44 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x45D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x474 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x4A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x4B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x4D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x528 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x53A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x55B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP POP SWAP2 CALLDATALOAD SWAP3 POP PUSH2 0xFD2 SWAP2 POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x40C PUSH2 0x1288 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x40C PUSH2 0x128E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x40C PUSH2 0x1295 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x40C PUSH2 0x129C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x615 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x12A3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x628 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x646 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x63F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1398 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x666 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2A3 PUSH2 0x13AD JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x60 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x6BB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1422 PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x72A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x712 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x757 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP6 MLOAD DUP2 MSTORE DUP6 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x78A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x772 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x7B7 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 SWAP1 SWAP4 MSTORE SWAP2 KECCAK256 SLOAD SWAP1 SWAP10 POP PUSH1 0xFF AND SWAP8 POP PUSH2 0x828 SWAP7 POP POP POP POP POP POP POP JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1575 PUSH1 0x3D SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH2 0x831 PUSH2 0x13BC JUMP JUMPDEST LT ISZERO PUSH2 0x86E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x45 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x14C4 PUSH1 0x45 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x881 DUP4 PUSH3 0x127500 PUSH4 0xFFFFFFFF PUSH2 0x13C0 AND JUMP JUMPDEST PUSH2 0x889 PUSH2 0x13BC JUMP JUMPDEST GT ISZERO PUSH2 0x8C6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x33 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1491 PUSH1 0x33 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE DUP5 MLOAD PUSH1 0x60 SWAP1 PUSH2 0x8EC JUMPI POP DUP4 PUSH2 0x979 JUMP JUMPDEST DUP6 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP6 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND DUP2 MSTORE PUSH1 0x4 ADD DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x941 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x922 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x9B8 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x999 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xA1A 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 0xA1F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0xA60 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1658 PUSH1 0x3D SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH32 0xA560E3198060A2F10670C1EC5B403077EA6AE93CA8DE1C32B451DC1A943CD6E7 DUP12 DUP12 DUP12 DUP12 PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xADD JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAC5 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xB0A JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP6 MLOAD DUP2 MSTORE DUP6 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xB3D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xB25 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xB6A JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xBD1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x15B2 PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR DUP1 DUP4 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP3 AND SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 PUSH32 0x71614071B88DEE5E0B2AE578A9DD7B2EBBE9AE832BA419DC0242CD065A290B6C SWAP2 LOG2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xC7D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x36 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1622 PUSH1 0x36 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xC97 PUSH1 0x2 SLOAD PUSH2 0xC8B PUSH2 0x13BC JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x13C0 AND JUMP JUMPDEST DUP3 LT ISZERO PUSH2 0xCD5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x49 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1695 PUSH1 0x49 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xD44 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xD2C JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xD71 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP6 MLOAD DUP2 MSTORE DUP6 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xDA4 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xD8C JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xDD1 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x1 PUSH1 0x3 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH32 0x76E2796DC3A81D57B0E8504B647FEBCBEEB5F4AF818E164F11EEF8131A6A763F DUP9 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xE9C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xE84 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xEC9 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP6 MLOAD DUP2 MSTORE DUP6 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xEFC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xEE4 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xF29 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST CALLER ADDRESS EQ PUSH2 0xF82 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x15EA PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP2 DUP3 SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP1 PUSH32 0x69D78E38A01985FBB1462961809B4B2D65531BC93B2B94037F3334B82CA4A756 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x101B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x37 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x145A PUSH1 0x37 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x108A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1072 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x10B7 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP6 MLOAD DUP2 MSTORE DUP6 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x10EA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x10D2 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1117 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH32 0x2FFFC091A501FD91BFBFF27141450D3ACB40FB8E6D8382B243EC7A812A3AAF87 DUP8 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x11E2 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x11CA JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x120F JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP6 MLOAD DUP2 MSTORE DUP6 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1242 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x122A JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x126F JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH3 0x278D00 DUP2 JUMP JUMPDEST PUSH3 0x2A300 DUP2 JUMP JUMPDEST PUSH3 0x127500 DUP2 JUMP JUMPDEST CALLER ADDRESS EQ PUSH2 0x12E1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x16DE PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x2A300 DUP2 LT ISZERO PUSH2 0x1323 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1509 PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x278D00 DUP2 GT ISZERO PUSH2 0x1365 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x153D PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD DUP2 SWAP1 PUSH32 0x948B1F6A42EE138B7E34058BA85A37F716D55FF25FF05A763F15BED6A04C8D2C SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST TIMESTAMP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x141A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP INVALID SLOAD PUSH10 0x6D656C6F636B3A3A6578 PUSH6 0x637574655472 PUSH2 0x6E73 PUSH2 0x6374 PUSH10 0x6F6E3A2043616C6C206D PUSH22 0x737420636F6D652066726F6D2061646D696E2E54696D PUSH6 0x6C6F636B3A3A PUSH4 0x616E6365 PUSH13 0x5472616E73616374696F6E3A20 NUMBER PUSH2 0x6C6C KECCAK256 PUSH14 0x75737420636F6D652066726F6D20 PUSH2 0x646D PUSH10 0x6E2E54696D656C6F636B GASPRICE GASPRICE PUSH6 0x786563757465 SLOAD PUSH19 0x616E73616374696F6E3A205472616E73616374 PUSH10 0x6F6E206973207374616C PUSH6 0x2E54696D656C PUSH16 0x636B3A3A657865637574655472616E73 PUSH2 0x6374 PUSH10 0x6F6E3A205472616E7361 PUSH4 0x74696F6E KECCAK256 PUSH9 0x61736E277420737572 PUSH17 0x61737365642074696D65206C6F636B2E54 PUSH10 0x6D656C6F636B3A3A7365 PUSH21 0x44656C61793A2044656C6179206D75737420657863 PUSH6 0x6564206D696E PUSH10 0x6D756D2064656C61792E SLOAD PUSH10 0x6D656C6F636B3A3A7365 PUSH21 0x44656C61793A2044656C6179206D757374206E6F74 KECCAK256 PUSH6 0x786365656420 PUSH14 0x6178696D756D2064656C61792E54 PUSH10 0x6D656C6F636B3A3A6578 PUSH6 0x637574655472 PUSH2 0x6E73 PUSH2 0x6374 PUSH10 0x6F6E3A205472616E7361 PUSH4 0x74696F6E KECCAK256 PUSH9 0x61736E277420626565 PUSH15 0x207175657565642E54696D656C6F63 PUSH12 0x3A3A61636365707441646D69 PUSH15 0x3A2043616C6C206D75737420636F6D PUSH6 0x2066726F6D20 PUSH17 0x656E64696E6741646D696E2E54696D656C PUSH16 0x636B3A3A73657450656E64696E674164 PUSH14 0x696E3A2043616C6C206D75737420 PUSH4 0x6F6D6520 PUSH7 0x726F6D2054696D PUSH6 0x6C6F636B2E54 PUSH10 0x6D656C6F636B3A3A7175 PUSH6 0x75655472616E PUSH20 0x616374696F6E3A2043616C6C206D75737420636F PUSH14 0x652066726F6D2061646D696E2E54 PUSH10 0x6D656C6F636B3A3A6578 PUSH6 0x637574655472 PUSH2 0x6E73 PUSH2 0x6374 PUSH10 0x6F6E3A205472616E7361 PUSH4 0x74696F6E KECCAK256 PUSH6 0x786563757469 PUSH16 0x6E2072657665727465642E54696D656C PUSH16 0x636B3A3A71756575655472616E736163 PUSH21 0x696F6E3A20457374696D6174656420657865637574 PUSH10 0x6F6E20626C6F636B206D PUSH22 0x737420736174697366792064656C61792E54696D656C PUSH16 0x636B3A3A73657444656C61793A204361 PUSH13 0x6C206D75737420636F6D652066 PUSH19 0x6F6D2054696D656C6F636B2EA265627A7A7231 PC KECCAK256 DIFFICULTY SWAP15 0xF 0x1E 0xC0 0xAA 0x5C SWAP11 0xE9 ORIGIN 0xBA 0xF8 0x4E PUSH6 0x68613C98474B 0x5D TIMESTAMP DUP2 0xCB 0x22 0xE1 0xCA DUP5 0xB3 PUSH8 0x1A2464736F6C6343 STOP SDIV GT STOP ORIGIN ","sourceMap":"51:4634:39:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3227:1291;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;3227:1291:39;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;3227:1291:39;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3227:1291:39;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;3227:1291:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;3227:1291:39;;;;;;;;-1:-1:-1;3227:1291:39;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;3227:1291:39;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3227:1291:39;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;3227:1291:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;3227:1291:39;;-1:-1:-1;;3227:1291:39;;;-1:-1:-1;3227:1291:39;;-1:-1:-1;;3227:1291:39:i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3227:1291:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1690:236;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1690:236:39;;;:::i;819:27::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;819:27:39;;;:::i;:::-;;;;-1:-1:-1;;;;;819:27:39;;;;;;;;;;;;;;2189:598;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2189:598:39;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;2189:598:39;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;2189:598:39;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2189:598:39;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2189:598:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;2189:598:39;;;;;;;;-1:-1:-1;2189:598:39;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;2189:598:39;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2189:598:39;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2189:598:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;2189:598:39;;-1:-1:-1;;2189:598:39;;;-1:-1:-1;2189:598:39;;-1:-1:-1;;2189:598:39:i;:::-;;;;;;;;;;;;;;;;1932:251;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1932:251:39;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1932:251:39;-1:-1:-1;;;;;1932:251:39;;:::i;2793:428::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2793:428:39;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;2793:428:39;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;2793:428:39;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2793:428:39;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2793:428:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;2793:428:39;;;;;;;;-1:-1:-1;2793:428:39;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;2793:428:39;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2793:428:39;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2793:428:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;2793:428:39;;-1:-1:-1;;2793:428:39;;;-1:-1:-1;2793:428:39;;-1:-1:-1;;2793:428:39:i;852:17::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;852:17:39;;;:::i;742:44::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;742:44:39;;;:::i;693:43::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;693:43:39;;;:::i;644:::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;644:43:39;;;:::i;1285:399::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1285:399:39;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1285:399:39;;:::i;876:51::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;876:51:39;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;876:51:39;;:::i;:::-;;;;;;;;;;;;;;;;;;793:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;793:20:39;;;:::i;3227:1291::-;3407:5;;3361:12;;-1:-1:-1;;;;;3407:5:39;3393:10;:19;3385:88;;;;-1:-1:-1;;;3385:88:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3484:14;3522:6;3530:5;3537:9;3548:4;3554:3;3511:47;;;;;;-1:-1:-1;;;;;3511:47:39;-1:-1:-1;;;;;3511:47:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3511:47:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3511:47:39;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3511:47:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3511:47:39;;;-1:-1:-1;;26:21;;;22:32;6:49;;3511:47:39;;;3501:58;;49:4:-1;3501:58:39;;;;3577:26;;;;:18;:26;;;;;;3501:58;;-1:-1:-1;3577:26:39;;;-1:-1:-1;3569:100:39;;-1:-1:-1;;;;;;;3569:100:39;;;-1:-1:-1;;;3569:100:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3710:3;3687:19;:17;:19::i;:::-;:26;;3679:108;;;;-1:-1:-1;;;3679:108:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3828:21;:3;680:7;3828:21;:7;:21;:::i;:::-;3805:19;:17;:19::i;:::-;:44;;3797:108;;;;-1:-1:-1;;;3797:108:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3945:5;3916:26;;;:18;:26;;;;;:34;;-1:-1:-1;;3916:34:39;;;3997:23;;3961:21;;3993:175;;-1:-1:-1;4052:4:39;3993:175;;;4138:9;4122:27;;;;;;4152:4;4098:59;;;;;;-1:-1:-1;;;;;4098:59:39;;-1:-1:-1;;;;;4098:59:39;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4098:59:39;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;4098:59:39;;;4087:70;;3993:175;4238:12;4252:23;4279:6;-1:-1:-1;;;;;4279:11:39;4297:5;4304:8;4279:34;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4279:34:39;;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;4237:76:39;;;;4331:7;4323:81;;;;-1:-1:-1;;;4323:81:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4447:6;-1:-1:-1;;;;;4420:63:39;4439:6;4420:63;4455:5;4462:9;4473:4;4479:3;4420:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4420:63:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4420:63:39;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4420:63:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4501:10;3227:1291;-1:-1:-1;;;;;;;;;3227:1291:39:o;1690:236::-;1752:12;;-1:-1:-1;;;;;1752:12:39;1738:10;:26;1730:95;;;;-1:-1:-1;;;1730:95:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1835:5;:18;;1843:10;-1:-1:-1;;;;;;1835:18:39;;;;;;;-1:-1:-1;1863:25:39;;;;;;;;1904:15;;-1:-1:-1;;;;;1913:5:39;;;;1904:15;;;1690:236::o;819:27::-;;;-1:-1:-1;;;;;819:27:39;;:::o;2189:598::-;2313:7;2354:5;;-1:-1:-1;;;;;2354:5:39;2340:10;:19;2332:86;;;;-1:-1:-1;;;2332:86:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2443:30;2467:5;;2443:19;:17;:19::i;:::-;:23;:30;:23;:30;:::i;:::-;2436:3;:37;;2428:123;;;;-1:-1:-1;;;2428:123:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2562:14;2600:6;2608:5;2615:9;2626:4;2632:3;2589:47;;;;;;-1:-1:-1;;;;;2589:47:39;-1:-1:-1;;;;;2589:47:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2589:47:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2589:47:39;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2589:47:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2589:47:39;;;2579:58;;;;;;2562:75;;2676:4;2647:18;:26;2666:6;2647:26;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;2721:6;-1:-1:-1;;;;;2696:61:39;2713:6;2696:61;2729:5;2736:9;2747:4;2753:3;2696:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2696:61:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2696:61:39;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2696:61:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2774:6;2189:598;-1:-1:-1;;;;;;2189:598:39:o;1932:251::-;2005:10;2027:4;2005:27;1997:96;;;;-1:-1:-1;;;1997:96:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2103:12;:28;;-1:-1:-1;;;;;;2103:28:39;-1:-1:-1;;;;;2103:28:39;;;;;;;;;;;2147:29;;2163:12;;;2147:29;;-1:-1:-1;;2147:29:39;1932:251;:::o;2793:428::-;2941:5;;-1:-1:-1;;;;;2941:5:39;2927:10;:19;2919:87;;;;-1:-1:-1;;;2919:87:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3017:14;3055:6;3063:5;3070:9;3081:4;3087:3;3044:47;;;;;;-1:-1:-1;;;;;3044:47:39;-1:-1:-1;;;;;3044:47:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3044:47:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3044:47:39;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3044:47:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3044:47:39;;;3034:58;;;;;;3017:75;;3131:5;3102:18;:26;3121:6;3102:26;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;3178:6;-1:-1:-1;;;;;3152:62:39;3170:6;3152:62;3186:5;3193:9;3204:4;3210:3;3152:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3152:62:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3152:62:39;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3152:62:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2793:428;;;;;;:::o;852:17::-;;;;:::o;742:44::-;779:7;742:44;:::o;693:43::-;730:6;693:43;:::o;644:::-;680:7;644:43;:::o;1285:399::-;1341:10;1363:4;1341:27;1333:89;;;;-1:-1:-1;;;1333:89:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;730:6;1440;:23;;1432:88;;;;-1:-1:-1;;;1432:88:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;779:7;1538:6;:23;;1530:92;;;;-1:-1:-1;;;1530:92:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1632:5;:14;;;1662:15;;1640:6;;1662:15;;;;;1285:399;:::o;876:51::-;;;;;;;;;;;;;;;:::o;793:20::-;;;-1:-1:-1;;;;;793:20:39;;:::o;4524:159::-;4661:15;4524:159;:::o;958:176:37:-;1016:7;1047:5;;;1070:6;;;;1062:46;;;;;-1:-1:-1;;;1062:46:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;1126:1;958:176;-1:-1:-1;;;958:176:37:o"},"methodIdentifiers":{"GRACE_PERIOD()":"c1a287e2","MAXIMUM_DELAY()":"7d645fab","MINIMUM_DELAY()":"b1b43ae5","acceptAdmin()":"0e18b681","admin()":"f851a440","cancelTransaction(address,uint256,string,bytes,uint256)":"591fcdfe","delay()":"6a42b8f8","executeTransaction(address,uint256,string,bytes,uint256)":"0825f38f","pendingAdmin()":"26782247","queueTransaction(address,uint256,string,bytes,uint256)":"3a66f901","queuedTransactions(bytes32)":"f2b06537","setDelay(uint256)":"e177246e","setPendingAdmin(address)":"4dd18bf5"}},"metadata":"{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin_\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"delay_\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"signature\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"eta\",\"type\":\"uint256\"}],\"name\":\"CancelTransaction\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"signature\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"eta\",\"type\":\"uint256\"}],\"name\":\"ExecuteTransaction\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"NewAdmin\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newDelay\",\"type\":\"uint256\"}],\"name\":\"NewDelay\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newPendingAdmin\",\"type\":\"address\"}],\"name\":\"NewPendingAdmin\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"signature\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"eta\",\"type\":\"uint256\"}],\"name\":\"QueueTransaction\",\"type\":\"event\"},{\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"constant\":true,\"inputs\":[],\"name\":\"GRACE_PERIOD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MAXIMUM_DELAY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MINIMUM_DELAY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"acceptAdmin\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"signature\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"eta\",\"type\":\"uint256\"}],\"name\":\"cancelTransaction\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"delay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"signature\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"eta\",\"type\":\"uint256\"}],\"name\":\"executeTransaction\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"pendingAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"signature\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"eta\",\"type\":\"uint256\"}],\"name\":\"queueTransaction\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"queuedTransactions\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"delay_\",\"type\":\"uint256\"}],\"name\":\"setDelay\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"pendingAdmin_\",\"type\":\"address\"}],\"name\":\"setPendingAdmin\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/Timelock.sol\":\"Timelock\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/SafeMath.sol\":{\"keccak256\":\"0x675b1178c34633ecc37124c254349c1d3fe239c7bd74a649eb55f54adafd2dee\",\"urls\":[\"bzz-raw://c55f6f93d24b0976189d8fcf4df706b04439041d43a1e4d289db440251f9bc2a\",\"dweb:/ipfs/QmUAsuvRZMJ4hvsxKF3ud5g93DBEbnaXnt7waJzziurC2S\"]},\"contracts/Timelock.sol\":{\"keccak256\":\"0xad980da5065527d0aab97b8284b3d31a3bf5846e9dde74850cfebe9f6bac6447\",\"urls\":[\"bzz-raw://03d8cfadf102153eb25bbb81236baed9cd540c3d2753a5bb7f8d86da3e4161b8\",\"dweb:/ipfs/QmWXpqho1gVdi49HniTcYMnpxsBNYnHVUrDm9yhi2i282P\"]}},\"version\":1}"}},"contracts/Unitroller.sol":{"Unitroller":{"abi":[{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"hasRights","type":"bool"}],"name":"AdminRightsToggled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"error","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"info","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"detail","type":"uint256"}],"name":"Failure","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"hasRights","type":"bool"}],"name":"FuseAdminRightsToggled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"NewAdmin","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldImplementation","type":"address"},{"indexed":false,"internalType":"address","name":"newImplementation","type":"address"}],"name":"NewImplementation","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldPendingAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newPendingAdmin","type":"address"}],"name":"NewPendingAdmin","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldPendingImplementation","type":"address"},{"indexed":false,"internalType":"address","name":"newPendingImplementation","type":"address"}],"name":"NewPendingImplementation","type":"event"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":false,"inputs":[],"name":"_acceptAdmin","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"_acceptImplementation","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newPendingAdmin","type":"address"}],"name":"_setPendingAdmin","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newPendingImplementation","type":"address"}],"name":"_setPendingImplementation","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bool","name":"hasRights","type":"bool"}],"name":"_toggleAdminRights","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bool","name":"hasRights","type":"bool"}],"name":"_toggleFuseAdminRights","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"adminHasRights","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"comptrollerImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"fuseAdminHasRights","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pendingAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pendingComptrollerImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60806040526001805460ff60a81b1960ff60a01b19909116600160a01b1716600160a81b17905534801561003257600080fd5b50600080546001600160a01b03191633179055610ae1806100546000396000f3fe6080604052600436106100a75760003560e01c8063bb82aa5e11610064578063bb82aa5e14610437578063c1e803341461044c578063dcfbc0c714610461578063e992a04114610476578063e9c714f2146104a9578063f851a440146104be576100a7565b80630225ab9d1461032b5780630a755ec21461036957806326782247146103925780632f1069ba146103c35780636f63af0b146103d8578063b71d1a0c14610404575b3330146102a85760408051600481526024810182526020810180516001600160e01b0316633757348b60e21b1781529151815160009360609330939092909182918083835b6020831061010b5780518252601f1990920191602091820191016100ec565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d806000811461016b576040519150601f19603f3d011682016040523d82523d6000602084013e610170565b606091505b5091509150600082156101975781806020019051602081101561019257600080fd5b505190505b80156102a4576002546040805163bbcdd6d360e01b81526001600160a01b0390921660048301525160009173a731585ab05fc9f83555cf9bff8f58ee94e18f859163bbcdd6d391602480820192602092909190829003018186803b1580156101fe57600080fd5b505afa158015610212573d6000803e3d6000fd5b505050506040513d602081101561022857600080fd5b50516002549091506001600160a01b038083169116146102a257600280546001600160a01b038381166001600160a01b0319831617928390556040805192821680845293909116602083015280517fd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a9281900390910190a1505b505b5050505b6002546040516000916001600160a01b031690829036908083838082843760405192019450600093509091505080830381855af49150503d806000811461030b576040519150601f19603f3d011682016040523d82523d6000602084013e610310565b606091505b505090506040513d6000823e818015610327573d82f35b3d82fd5b34801561033757600080fd5b506103576004803603602081101561034e57600080fd5b503515156104d3565b60408051918252519081900360200190f35b34801561037557600080fd5b5061037e61056f565b604080519115158252519081900360200190f35b34801561039e57600080fd5b506103a761057f565b604080516001600160a01b039092168252519081900360200190f35b3480156103cf57600080fd5b5061037e61058e565b3480156103e457600080fd5b50610357600480360360208110156103fb57600080fd5b5035151561059e565b34801561041057600080fd5b506103576004803603602081101561042757600080fd5b50356001600160a01b031661063a565b34801561044357600080fd5b506103a76106bd565b34801561045857600080fd5b506103576106cc565b34801561046d57600080fd5b506103a76107c7565b34801561048257600080fd5b506103576004803603602081101561049957600080fd5b50356001600160a01b03166107d6565b3480156104b557600080fd5b506103576108f6565b3480156104ca57600080fd5b506103a76109dc565b60006104dd6109eb565b6104f4576104ed60016005610a46565b905061056a565b60015460ff600160a81b90910416151582151514156105145760006104ed565b60018054831515600160a81b810260ff60a81b199092169190911790915560408051918252517f10f9a0a95673b0837d1dce21fd3bffcb6d760435e9b5300b75a271182f75f8229181900360200190a160005b90505b919050565b600154600160a81b900460ff1681565b6001546001600160a01b031681565b600154600160a01b900460ff1681565b60006105a86109eb565b6105b8576104ed60016005610a46565b60015460ff600160a01b90910416151582151514156105d85760006104ed565b60018054831515600160a01b90810260ff60a01b199092169190911791829055604080519190920460ff161515815290517fabb56a15fd39488c914b324690b88f30d7daec63d2131ca0ef47e5739068c86e9181900360200190a16000610567565b60006106446109eb565b610654576104ed60016010610a46565b600180546001600160a01b038481166001600160a01b0319831681179093556040805191909216808252602082019390935281517fca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9929181900390910190a160005b9392505050565b6002546001600160a01b031681565b6003546000906001600160a01b0316331415806106f257506003546001600160a01b0316155b1561070957610702600180610a46565b90506107c4565b60028054600380546001600160a01b038082166001600160a01b031980861682179687905590921690925560408051938316808552949092166020840152815190927fd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a92908290030190a1600354604080516001600160a01b038085168252909216602083015280517fe945ccee5d701fc83f9b8aa8ca94ea4219ec1fcbd4f4cab4f0ea57c5c3e1d8159281900390910190a160005b925050505b90565b6003546001600160a01b031681565b60006107e06109eb565b6107f0576104ed60016012610a46565b60025460408051639d244f9f60e01b81526001600160a01b03928316600482015291841660248301525173a731585ab05fc9f83555cf9bff8f58ee94e18f8591639d244f9f916044808301926020929190829003018186803b15801561085557600080fd5b505afa158015610869573d6000803e3d6000fd5b505050506040513d602081101561087f57600080fd5b5051610891576104ed60016011610a46565b600380546001600160a01b038481166001600160a01b0319831617928390556040805192821680845293909116602083015280517fe945ccee5d701fc83f9b8aa8ca94ea4219ec1fcbd4f4cab4f0ea57c5c3e1d8159281900390910190a160006106b6565b6001546000906001600160a01b031633141580610911575033155b156109225761070260016000610a46565b60008054600180546001600160a01b038082166001600160a01b031980861682179687905590921690925560408051938316808552949092166020840152815190927ff9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc92908290030190a1600154604080516001600160a01b038085168252909216602083015280517fca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a99281900390910190a160006107bf565b6000546001600160a01b031681565b600080546001600160a01b031633148015610a0f5750600154600160a81b900460ff165b80610a4157503373a731585ab05fc9f83555cf9bff8f58ee94e18f85148015610a415750600154600160a01b900460ff165b905090565b60007f45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0836015811115610a7557fe5b83601b811115610a8157fe5b604080519283526020830191909152600082820152519081900360600190a18260158111156106b657fefea265627a7a72315820e797b9662786a72a1d09bd163442b427f05f40879fe1205a68d4ee38d0fe4f1e64736f6c63430005110032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA8 SHL NOT PUSH1 0xFF PUSH1 0xA0 SHL NOT SWAP1 SWAP2 AND PUSH1 0x1 PUSH1 0xA0 SHL OR AND PUSH1 0x1 PUSH1 0xA8 SHL OR SWAP1 SSTORE CALLVALUE DUP1 ISZERO PUSH2 0x32 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER OR SWAP1 SSTORE PUSH2 0xAE1 DUP1 PUSH2 0x54 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA7 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xBB82AA5E GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xBB82AA5E EQ PUSH2 0x437 JUMPI DUP1 PUSH4 0xC1E80334 EQ PUSH2 0x44C JUMPI DUP1 PUSH4 0xDCFBC0C7 EQ PUSH2 0x461 JUMPI DUP1 PUSH4 0xE992A041 EQ PUSH2 0x476 JUMPI DUP1 PUSH4 0xE9C714F2 EQ PUSH2 0x4A9 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x4BE JUMPI PUSH2 0xA7 JUMP JUMPDEST DUP1 PUSH4 0x225AB9D EQ PUSH2 0x32B JUMPI DUP1 PUSH4 0xA755EC2 EQ PUSH2 0x369 JUMPI DUP1 PUSH4 0x26782247 EQ PUSH2 0x392 JUMPI DUP1 PUSH4 0x2F1069BA EQ PUSH2 0x3C3 JUMPI DUP1 PUSH4 0x6F63AF0B EQ PUSH2 0x3D8 JUMPI DUP1 PUSH4 0xB71D1A0C EQ PUSH2 0x404 JUMPI JUMPDEST CALLER ADDRESS EQ PUSH2 0x2A8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x3757348B PUSH1 0xE2 SHL OR DUP2 MSTORE SWAP2 MLOAD DUP2 MLOAD PUSH1 0x0 SWAP4 PUSH1 0x60 SWAP4 ADDRESS SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP3 SWAP2 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x10B JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xEC JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x16B 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 0x170 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 ISZERO PUSH2 0x197 JUMPI DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x192 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP JUMPDEST DUP1 ISZERO PUSH2 0x2A4 JUMPI PUSH1 0x2 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xBBCDD6D3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE MLOAD PUSH1 0x0 SWAP2 PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 SWAP2 PUSH4 0xBBCDD6D3 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x212 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x228 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x2 SLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND SWAP2 AND EQ PUSH2 0x2A2 JUMPI PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND OR SWAP3 DUP4 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP3 DUP3 AND DUP1 DUP5 MSTORE SWAP4 SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD PUSH32 0xD604DE94D45953F9138079EC1B82D533CB2160C906D1076D1F7ED54BEFBCA97A SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMPDEST POP JUMPDEST POP POP POP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP3 SWAP1 CALLDATASIZE SWAP1 DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x40 MLOAD SWAP3 ADD SWAP5 POP PUSH1 0x0 SWAP4 POP SWAP1 SWAP2 POP POP DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x30B 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 0x310 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY DUP2 DUP1 ISZERO PUSH2 0x327 JUMPI RETURNDATASIZE DUP3 RETURN JUMPDEST RETURNDATASIZE DUP3 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x337 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x357 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x34E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD ISZERO ISZERO PUSH2 0x4D3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x375 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x37E PUSH2 0x56F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x39E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3A7 PUSH2 0x57F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x37E PUSH2 0x58E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x357 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD ISZERO ISZERO PUSH2 0x59E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x410 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x357 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x427 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x63A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x443 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3A7 PUSH2 0x6BD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x458 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x357 PUSH2 0x6CC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x46D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3A7 PUSH2 0x7C7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x482 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x357 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x499 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7D6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x357 PUSH2 0x8F6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3A7 PUSH2 0x9DC JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4DD PUSH2 0x9EB JUMP JUMPDEST PUSH2 0x4F4 JUMPI PUSH2 0x4ED PUSH1 0x1 PUSH1 0x5 PUSH2 0xA46 JUMP JUMPDEST SWAP1 POP PUSH2 0x56A JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0xFF PUSH1 0x1 PUSH1 0xA8 SHL SWAP1 SWAP2 DIV AND ISZERO ISZERO DUP3 ISZERO ISZERO EQ ISZERO PUSH2 0x514 JUMPI PUSH1 0x0 PUSH2 0x4ED JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD DUP4 ISZERO ISZERO PUSH1 0x1 PUSH1 0xA8 SHL DUP2 MUL PUSH1 0xFF PUSH1 0xA8 SHL NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD PUSH32 0x10F9A0A95673B0837D1DCE21FD3BFFCB6D760435E9B5300B75A271182F75F822 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 PUSH1 0x0 JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0xA8 SHL SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5A8 PUSH2 0x9EB JUMP JUMPDEST PUSH2 0x5B8 JUMPI PUSH2 0x4ED PUSH1 0x1 PUSH1 0x5 PUSH2 0xA46 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0xFF PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP2 DIV AND ISZERO ISZERO DUP3 ISZERO ISZERO EQ ISZERO PUSH2 0x5D8 JUMPI PUSH1 0x0 PUSH2 0x4ED JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD DUP4 ISZERO ISZERO PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DUP2 MUL PUSH1 0xFF PUSH1 0xA0 SHL NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP2 DUP3 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP2 SWAP1 SWAP3 DIV PUSH1 0xFF AND ISZERO ISZERO DUP2 MSTORE SWAP1 MLOAD PUSH32 0xABB56A15FD39488C914B324690B88F30D7DAEC63D2131CA0EF47E5739068C86E SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 PUSH1 0x0 PUSH2 0x567 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x644 PUSH2 0x9EB JUMP JUMPDEST PUSH2 0x654 JUMPI PUSH2 0x4ED PUSH1 0x1 PUSH1 0x10 PUSH2 0xA46 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP2 SWAP1 SWAP3 AND DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP2 MLOAD PUSH32 0xCA4F2F25D0898EDD99413412FB94012F9E54EC8142F9B093E7720646A95B16A9 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x0 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ ISZERO DUP1 PUSH2 0x6F2 JUMPI POP PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO JUMPDEST ISZERO PUSH2 0x709 JUMPI PUSH2 0x702 PUSH1 0x1 DUP1 PUSH2 0xA46 JUMP JUMPDEST SWAP1 POP PUSH2 0x7C4 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP1 DUP7 AND DUP3 OR SWAP7 DUP8 SWAP1 SSTORE SWAP1 SWAP3 AND SWAP1 SWAP3 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP4 DUP4 AND DUP1 DUP6 MSTORE SWAP5 SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE DUP2 MLOAD SWAP1 SWAP3 PUSH32 0xD604DE94D45953F9138079EC1B82D533CB2160C906D1076D1F7ED54BEFBCA97A SWAP3 SWAP1 DUP3 SWAP1 SUB ADD SWAP1 LOG1 PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND DUP3 MSTORE SWAP1 SWAP3 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD PUSH32 0xE945CCEE5D701FC83F9B8AA8CA94EA4219EC1FCBD4F4CAB4F0EA57C5C3E1D815 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x0 JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7E0 PUSH2 0x9EB JUMP JUMPDEST PUSH2 0x7F0 JUMPI PUSH2 0x4ED PUSH1 0x1 PUSH1 0x12 PUSH2 0xA46 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x9D244F9F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP2 DUP5 AND PUSH1 0x24 DUP4 ADD MSTORE MLOAD PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 SWAP2 PUSH4 0x9D244F9F SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x855 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x869 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x87F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x891 JUMPI PUSH2 0x4ED PUSH1 0x1 PUSH1 0x11 PUSH2 0xA46 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND OR SWAP3 DUP4 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP3 DUP3 AND DUP1 DUP5 MSTORE SWAP4 SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD PUSH32 0xE945CCEE5D701FC83F9B8AA8CA94EA4219EC1FCBD4F4CAB4F0EA57C5C3E1D815 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x0 PUSH2 0x6B6 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ ISZERO DUP1 PUSH2 0x911 JUMPI POP CALLER ISZERO JUMPDEST ISZERO PUSH2 0x922 JUMPI PUSH2 0x702 PUSH1 0x1 PUSH1 0x0 PUSH2 0xA46 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP1 DUP7 AND DUP3 OR SWAP7 DUP8 SWAP1 SSTORE SWAP1 SWAP3 AND SWAP1 SWAP3 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP4 DUP4 AND DUP1 DUP6 MSTORE SWAP5 SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE DUP2 MLOAD SWAP1 SWAP3 PUSH32 0xF9FFABCA9C8276E99321725BCB43FB076A6C66A54B7F21C4E8146D8519B417DC SWAP3 SWAP1 DUP3 SWAP1 SUB ADD SWAP1 LOG1 PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND DUP3 MSTORE SWAP1 SWAP3 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD PUSH32 0xCA4F2F25D0898EDD99413412FB94012F9E54EC8142F9B093E7720646A95B16A9 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x0 PUSH2 0x7BF JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ DUP1 ISZERO PUSH2 0xA0F JUMPI POP PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0xA8 SHL SWAP1 DIV PUSH1 0xFF AND JUMPDEST DUP1 PUSH2 0xA41 JUMPI POP CALLER PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 EQ DUP1 ISZERO PUSH2 0xA41 JUMPI POP PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x45B96FE442630264581B197E84BBADA861235052C5A1AADFFF9EA4E40A969AA0 DUP4 PUSH1 0x15 DUP2 GT ISZERO PUSH2 0xA75 JUMPI INVALID JUMPDEST DUP4 PUSH1 0x1B DUP2 GT ISZERO PUSH2 0xA81 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 DUP3 PUSH1 0x15 DUP2 GT ISZERO PUSH2 0x6B6 JUMPI INVALID INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xE7 SWAP8 0xB9 PUSH7 0x2786A72A1D09BD AND CALLVALUE TIMESTAMP 0xB4 0x27 CREATE 0x5F BLOCKHASH DUP8 SWAP16 0xE1 KECCAK256 GAS PUSH9 0xD4EE38D0FE4F1E6473 PUSH16 0x6C634300051100320000000000000000 ","sourceMap":"305:8383:40:-;;;627:4:16;594:37;;-1:-1:-1;;;;;;;;594:37:16;;;-1:-1:-1;;;594:37:16;711:33;-1:-1:-1;;;711:33:16;;;1375:87:40;5:2:-1;;;;30:1;27;20:12;5:2;-1:-1;1437:5:40;:18;;-1:-1:-1;;;;;;1437:18:40;1445:10;1437:18;;;305:8383;;;;;;"},"deployedBytecode":{"linkReferences":{},"object":"6080604052600436106100a75760003560e01c8063bb82aa5e11610064578063bb82aa5e14610437578063c1e803341461044c578063dcfbc0c714610461578063e992a04114610476578063e9c714f2146104a9578063f851a440146104be576100a7565b80630225ab9d1461032b5780630a755ec21461036957806326782247146103925780632f1069ba146103c35780636f63af0b146103d8578063b71d1a0c14610404575b3330146102a85760408051600481526024810182526020810180516001600160e01b0316633757348b60e21b1781529151815160009360609330939092909182918083835b6020831061010b5780518252601f1990920191602091820191016100ec565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d806000811461016b576040519150601f19603f3d011682016040523d82523d6000602084013e610170565b606091505b5091509150600082156101975781806020019051602081101561019257600080fd5b505190505b80156102a4576002546040805163bbcdd6d360e01b81526001600160a01b0390921660048301525160009173a731585ab05fc9f83555cf9bff8f58ee94e18f859163bbcdd6d391602480820192602092909190829003018186803b1580156101fe57600080fd5b505afa158015610212573d6000803e3d6000fd5b505050506040513d602081101561022857600080fd5b50516002549091506001600160a01b038083169116146102a257600280546001600160a01b038381166001600160a01b0319831617928390556040805192821680845293909116602083015280517fd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a9281900390910190a1505b505b5050505b6002546040516000916001600160a01b031690829036908083838082843760405192019450600093509091505080830381855af49150503d806000811461030b576040519150601f19603f3d011682016040523d82523d6000602084013e610310565b606091505b505090506040513d6000823e818015610327573d82f35b3d82fd5b34801561033757600080fd5b506103576004803603602081101561034e57600080fd5b503515156104d3565b60408051918252519081900360200190f35b34801561037557600080fd5b5061037e61056f565b604080519115158252519081900360200190f35b34801561039e57600080fd5b506103a761057f565b604080516001600160a01b039092168252519081900360200190f35b3480156103cf57600080fd5b5061037e61058e565b3480156103e457600080fd5b50610357600480360360208110156103fb57600080fd5b5035151561059e565b34801561041057600080fd5b506103576004803603602081101561042757600080fd5b50356001600160a01b031661063a565b34801561044357600080fd5b506103a76106bd565b34801561045857600080fd5b506103576106cc565b34801561046d57600080fd5b506103a76107c7565b34801561048257600080fd5b506103576004803603602081101561049957600080fd5b50356001600160a01b03166107d6565b3480156104b557600080fd5b506103576108f6565b3480156104ca57600080fd5b506103a76109dc565b60006104dd6109eb565b6104f4576104ed60016005610a46565b905061056a565b60015460ff600160a81b90910416151582151514156105145760006104ed565b60018054831515600160a81b810260ff60a81b199092169190911790915560408051918252517f10f9a0a95673b0837d1dce21fd3bffcb6d760435e9b5300b75a271182f75f8229181900360200190a160005b90505b919050565b600154600160a81b900460ff1681565b6001546001600160a01b031681565b600154600160a01b900460ff1681565b60006105a86109eb565b6105b8576104ed60016005610a46565b60015460ff600160a01b90910416151582151514156105d85760006104ed565b60018054831515600160a01b90810260ff60a01b199092169190911791829055604080519190920460ff161515815290517fabb56a15fd39488c914b324690b88f30d7daec63d2131ca0ef47e5739068c86e9181900360200190a16000610567565b60006106446109eb565b610654576104ed60016010610a46565b600180546001600160a01b038481166001600160a01b0319831681179093556040805191909216808252602082019390935281517fca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9929181900390910190a160005b9392505050565b6002546001600160a01b031681565b6003546000906001600160a01b0316331415806106f257506003546001600160a01b0316155b1561070957610702600180610a46565b90506107c4565b60028054600380546001600160a01b038082166001600160a01b031980861682179687905590921690925560408051938316808552949092166020840152815190927fd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a92908290030190a1600354604080516001600160a01b038085168252909216602083015280517fe945ccee5d701fc83f9b8aa8ca94ea4219ec1fcbd4f4cab4f0ea57c5c3e1d8159281900390910190a160005b925050505b90565b6003546001600160a01b031681565b60006107e06109eb565b6107f0576104ed60016012610a46565b60025460408051639d244f9f60e01b81526001600160a01b03928316600482015291841660248301525173a731585ab05fc9f83555cf9bff8f58ee94e18f8591639d244f9f916044808301926020929190829003018186803b15801561085557600080fd5b505afa158015610869573d6000803e3d6000fd5b505050506040513d602081101561087f57600080fd5b5051610891576104ed60016011610a46565b600380546001600160a01b038481166001600160a01b0319831617928390556040805192821680845293909116602083015280517fe945ccee5d701fc83f9b8aa8ca94ea4219ec1fcbd4f4cab4f0ea57c5c3e1d8159281900390910190a160006106b6565b6001546000906001600160a01b031633141580610911575033155b156109225761070260016000610a46565b60008054600180546001600160a01b038082166001600160a01b031980861682179687905590921690925560408051938316808552949092166020840152815190927ff9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc92908290030190a1600154604080516001600160a01b038085168252909216602083015280517fca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a99281900390910190a160006107bf565b6000546001600160a01b031681565b600080546001600160a01b031633148015610a0f5750600154600160a81b900460ff165b80610a4157503373a731585ab05fc9f83555cf9bff8f58ee94e18f85148015610a415750600154600160a01b900460ff165b905090565b60007f45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0836015811115610a7557fe5b83601b811115610a8157fe5b604080519283526020830191909152600082820152519081900360600190a18260158111156106b657fefea265627a7a72315820e797b9662786a72a1d09bd163442b427f05f40879fe1205a68d4ee38d0fe4f1e64736f6c63430005110032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA7 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xBB82AA5E GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xBB82AA5E EQ PUSH2 0x437 JUMPI DUP1 PUSH4 0xC1E80334 EQ PUSH2 0x44C JUMPI DUP1 PUSH4 0xDCFBC0C7 EQ PUSH2 0x461 JUMPI DUP1 PUSH4 0xE992A041 EQ PUSH2 0x476 JUMPI DUP1 PUSH4 0xE9C714F2 EQ PUSH2 0x4A9 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x4BE JUMPI PUSH2 0xA7 JUMP JUMPDEST DUP1 PUSH4 0x225AB9D EQ PUSH2 0x32B JUMPI DUP1 PUSH4 0xA755EC2 EQ PUSH2 0x369 JUMPI DUP1 PUSH4 0x26782247 EQ PUSH2 0x392 JUMPI DUP1 PUSH4 0x2F1069BA EQ PUSH2 0x3C3 JUMPI DUP1 PUSH4 0x6F63AF0B EQ PUSH2 0x3D8 JUMPI DUP1 PUSH4 0xB71D1A0C EQ PUSH2 0x404 JUMPI JUMPDEST CALLER ADDRESS EQ PUSH2 0x2A8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x3757348B PUSH1 0xE2 SHL OR DUP2 MSTORE SWAP2 MLOAD DUP2 MLOAD PUSH1 0x0 SWAP4 PUSH1 0x60 SWAP4 ADDRESS SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP3 SWAP2 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x10B JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xEC JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x16B 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 0x170 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 ISZERO PUSH2 0x197 JUMPI DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x192 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP JUMPDEST DUP1 ISZERO PUSH2 0x2A4 JUMPI PUSH1 0x2 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xBBCDD6D3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE MLOAD PUSH1 0x0 SWAP2 PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 SWAP2 PUSH4 0xBBCDD6D3 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x212 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x228 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x2 SLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND SWAP2 AND EQ PUSH2 0x2A2 JUMPI PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND OR SWAP3 DUP4 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP3 DUP3 AND DUP1 DUP5 MSTORE SWAP4 SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD PUSH32 0xD604DE94D45953F9138079EC1B82D533CB2160C906D1076D1F7ED54BEFBCA97A SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMPDEST POP JUMPDEST POP POP POP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP3 SWAP1 CALLDATASIZE SWAP1 DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x40 MLOAD SWAP3 ADD SWAP5 POP PUSH1 0x0 SWAP4 POP SWAP1 SWAP2 POP POP DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x30B 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 0x310 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY DUP2 DUP1 ISZERO PUSH2 0x327 JUMPI RETURNDATASIZE DUP3 RETURN JUMPDEST RETURNDATASIZE DUP3 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x337 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x357 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x34E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD ISZERO ISZERO PUSH2 0x4D3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x375 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x37E PUSH2 0x56F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x39E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3A7 PUSH2 0x57F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x37E PUSH2 0x58E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x357 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD ISZERO ISZERO PUSH2 0x59E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x410 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x357 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x427 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x63A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x443 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3A7 PUSH2 0x6BD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x458 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x357 PUSH2 0x6CC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x46D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3A7 PUSH2 0x7C7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x482 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x357 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x499 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7D6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x357 PUSH2 0x8F6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3A7 PUSH2 0x9DC JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4DD PUSH2 0x9EB JUMP JUMPDEST PUSH2 0x4F4 JUMPI PUSH2 0x4ED PUSH1 0x1 PUSH1 0x5 PUSH2 0xA46 JUMP JUMPDEST SWAP1 POP PUSH2 0x56A JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0xFF PUSH1 0x1 PUSH1 0xA8 SHL SWAP1 SWAP2 DIV AND ISZERO ISZERO DUP3 ISZERO ISZERO EQ ISZERO PUSH2 0x514 JUMPI PUSH1 0x0 PUSH2 0x4ED JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD DUP4 ISZERO ISZERO PUSH1 0x1 PUSH1 0xA8 SHL DUP2 MUL PUSH1 0xFF PUSH1 0xA8 SHL NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD PUSH32 0x10F9A0A95673B0837D1DCE21FD3BFFCB6D760435E9B5300B75A271182F75F822 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 PUSH1 0x0 JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0xA8 SHL SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5A8 PUSH2 0x9EB JUMP JUMPDEST PUSH2 0x5B8 JUMPI PUSH2 0x4ED PUSH1 0x1 PUSH1 0x5 PUSH2 0xA46 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0xFF PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP2 DIV AND ISZERO ISZERO DUP3 ISZERO ISZERO EQ ISZERO PUSH2 0x5D8 JUMPI PUSH1 0x0 PUSH2 0x4ED JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD DUP4 ISZERO ISZERO PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DUP2 MUL PUSH1 0xFF PUSH1 0xA0 SHL NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP2 DUP3 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP2 SWAP1 SWAP3 DIV PUSH1 0xFF AND ISZERO ISZERO DUP2 MSTORE SWAP1 MLOAD PUSH32 0xABB56A15FD39488C914B324690B88F30D7DAEC63D2131CA0EF47E5739068C86E SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 PUSH1 0x0 PUSH2 0x567 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x644 PUSH2 0x9EB JUMP JUMPDEST PUSH2 0x654 JUMPI PUSH2 0x4ED PUSH1 0x1 PUSH1 0x10 PUSH2 0xA46 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP2 SWAP1 SWAP3 AND DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP2 MLOAD PUSH32 0xCA4F2F25D0898EDD99413412FB94012F9E54EC8142F9B093E7720646A95B16A9 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x0 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ ISZERO DUP1 PUSH2 0x6F2 JUMPI POP PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO JUMPDEST ISZERO PUSH2 0x709 JUMPI PUSH2 0x702 PUSH1 0x1 DUP1 PUSH2 0xA46 JUMP JUMPDEST SWAP1 POP PUSH2 0x7C4 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP1 DUP7 AND DUP3 OR SWAP7 DUP8 SWAP1 SSTORE SWAP1 SWAP3 AND SWAP1 SWAP3 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP4 DUP4 AND DUP1 DUP6 MSTORE SWAP5 SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE DUP2 MLOAD SWAP1 SWAP3 PUSH32 0xD604DE94D45953F9138079EC1B82D533CB2160C906D1076D1F7ED54BEFBCA97A SWAP3 SWAP1 DUP3 SWAP1 SUB ADD SWAP1 LOG1 PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND DUP3 MSTORE SWAP1 SWAP3 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD PUSH32 0xE945CCEE5D701FC83F9B8AA8CA94EA4219EC1FCBD4F4CAB4F0EA57C5C3E1D815 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x0 JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7E0 PUSH2 0x9EB JUMP JUMPDEST PUSH2 0x7F0 JUMPI PUSH2 0x4ED PUSH1 0x1 PUSH1 0x12 PUSH2 0xA46 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x9D244F9F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP2 DUP5 AND PUSH1 0x24 DUP4 ADD MSTORE MLOAD PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 SWAP2 PUSH4 0x9D244F9F SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x855 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x869 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x87F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x891 JUMPI PUSH2 0x4ED PUSH1 0x1 PUSH1 0x11 PUSH2 0xA46 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND OR SWAP3 DUP4 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP3 DUP3 AND DUP1 DUP5 MSTORE SWAP4 SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD PUSH32 0xE945CCEE5D701FC83F9B8AA8CA94EA4219EC1FCBD4F4CAB4F0EA57C5C3E1D815 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x0 PUSH2 0x6B6 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ ISZERO DUP1 PUSH2 0x911 JUMPI POP CALLER ISZERO JUMPDEST ISZERO PUSH2 0x922 JUMPI PUSH2 0x702 PUSH1 0x1 PUSH1 0x0 PUSH2 0xA46 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP1 DUP7 AND DUP3 OR SWAP7 DUP8 SWAP1 SSTORE SWAP1 SWAP3 AND SWAP1 SWAP3 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP4 DUP4 AND DUP1 DUP6 MSTORE SWAP5 SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE DUP2 MLOAD SWAP1 SWAP3 PUSH32 0xF9FFABCA9C8276E99321725BCB43FB076A6C66A54B7F21C4E8146D8519B417DC SWAP3 SWAP1 DUP3 SWAP1 SUB ADD SWAP1 LOG1 PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND DUP3 MSTORE SWAP1 SWAP3 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD PUSH32 0xCA4F2F25D0898EDD99413412FB94012F9E54EC8142F9B093E7720646A95B16A9 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x0 PUSH2 0x7BF JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ DUP1 ISZERO PUSH2 0xA0F JUMPI POP PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0xA8 SHL SWAP1 DIV PUSH1 0xFF AND JUMPDEST DUP1 PUSH2 0xA41 JUMPI POP CALLER PUSH20 0xA731585AB05FC9F83555CF9BFF8F58EE94E18F85 EQ DUP1 ISZERO PUSH2 0xA41 JUMPI POP PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x45B96FE442630264581B197E84BBADA861235052C5A1AADFFF9EA4E40A969AA0 DUP4 PUSH1 0x15 DUP2 GT ISZERO PUSH2 0xA75 JUMPI INVALID JUMPDEST DUP4 PUSH1 0x1B DUP2 GT ISZERO PUSH2 0xA81 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 DUP3 PUSH1 0x15 DUP2 GT ISZERO PUSH2 0x6B6 JUMPI INVALID INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xE7 SWAP8 0xB9 PUSH7 0x2786A72A1D09BD AND CALLVALUE TIMESTAMP 0xB4 0x27 CREATE 0x5F BLOCKHASH DUP8 SWAP16 0xE1 KECCAK256 GAS PUSH9 0xD4EE38D0FE4F1E6473 PUSH16 0x6C634300051100320000000000000000 ","sourceMap":"305:8383:40:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7388:10;7410:4;7388:27;7384:859;;7496:47;;;22:32:-1;6:49;;7496:47:40;;;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;7471:73:40;;;;7432:16;;7450:17;;7479:4;;7496:47;;7471:73;;;;;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;7471:73:40;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;7431:113:40;;;;7558:23;7599:11;7595:64;;;7646:4;7635:24;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7635:24:40;;-1:-1:-1;7595:64:40;7678:18;7674:559;;;7800:25;;7758:68;;;-1:-1:-1;;;7758:68:40;;-1:-1:-1;;;;;7800:25:40;;;7758:68;;;;;-1:-1:-1;;275:42:16;;7758:41:40;;:68;;;;;;;;;;;;;;;275:42:16;7758:68:40;;;5:2:-1;;;;30:1;27;20:12;5:2;7758:68:40;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7758:68:40;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7758:68:40;7849:25;;7758:68;;-1:-1:-1;;;;;;7849:60:40;;;:25;;:60;7845:374;;7961:25;;;-1:-1:-1;;;;;8051:59:40;;;-1:-1:-1;;;;;;8051:59:40;;;;;;;8137:63;;;7961:25;;;8137:63;;;8174:25;;;;8137:63;;;;;;;;;;;;;;;;7845:374;;7674:559;;7384:859;;;;8338:25;;:48;;8320:12;;-1:-1:-1;;;;;8338:25:40;;8320:12;;8377:8;;8338:48;8320:12;8377:8;;8320:12;8338:48;1:33:-1;8338:48:40;;45:16:-1;;;-1:-1;8338:48:40;;-1:-1:-1;8338:48:40;;-1:-1:-1;;8338:48:40;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;8319:67:40;;;8448:4;8442:11;8500:14;8497:1;8483:12;8468:47;8538:7;8560:47;;;;8653:14;8639:12;8632:36;8560:47;8590:14;8576:12;8569:36;4519:574;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4519:574:40;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4519:574:40;;;;:::i;:::-;;;;;;;;;;;;;;;;711:33:16;;8:9:-1;5:2;;;30:1;27;20:12;5:2;711:33:16;;;:::i;:::-;;;;;;;;;;;;;;;;;;482:27;;8:9:-1;5:2;;;30:1;27;20:12;5:2;482:27:16;;;:::i;:::-;;;;-1:-1:-1;;;;;482:27:16;;;;;;;;;;;;;;594:37;;8:9:-1;5:2;;;30:1;27;20:12;5:2;594:37:16;;;:::i;3687:607:40:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3687:607:40;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3687:607:40;;;;:::i;5499:619::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5499:619:40;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5499:619:40;-1:-1:-1;;;;;5499:619:40;;:::i;1083:40:16:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1083:40:16;;;:::i;2540:912:40:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2540:912:40;;;:::i;1188:47:16:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1188:47:16;;;:::i;1499:749:40:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1499:749:40;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1499:749:40;-1:-1:-1;;;;;1499:749:40;;:::i;6389:720::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6389:720:40;;;:::i;386:20:16:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;386:20:16;;;:::i;4519:574:40:-;4581:4;4634:16;:14;:16::i;:::-;4629:124;;4673:69;4678:18;4698:43;4673:4;:69::i;:::-;4666:76;;;;4629:124;4843:14;;;-1:-1:-1;;;4843:14:40;;;;:27;;;;;;4839:60;;;4884:14;4879:20;;4839:60;4940:14;:26;;;;;-1:-1:-1;;;4940:26:40;;-1:-1:-1;;;;4940:26:40;;;;;;;;;;5019:29;;;;;;;;;;;;;;;;5071:14;5066:20;5059:27;;4519:574;;;;:::o;711:33:16:-;;;-1:-1:-1;;;711:33:16;;;;;:::o;482:27::-;;;-1:-1:-1;;;;;482:27:16;;:::o;594:37::-;;;-1:-1:-1;;;594:37:16;;;;;:::o;3687:607:40:-;3753:4;3806:16;:14;:16::i;:::-;3801:124;;3845:69;3850:18;3870:43;3845:4;:69::i;3801:124::-;4015:18;;;-1:-1:-1;;;4015:18:40;;;;:31;;;;;;4011:64;;;4060:14;4055:20;;4011:64;4120:18;:30;;;;;-1:-1:-1;;;4120:30:40;;;-1:-1:-1;;;;4120:30:40;;;;;;;;;;;4207:42;;;4230:18;;;;4120:30;4230:18;4207:42;;;;;;;;;;;;;;;4272:14;4267:20;;5499:619;5566:4;5619:16;:14;:16::i;:::-;5614:122;;5658:67;5663:18;5683:41;5658:4;:67::i;5614:122::-;5832:12;;;-1:-1:-1;;;;;5912:30:40;;;-1:-1:-1;;;;;;5912:30:40;;;;;;;6024:49;;;5832:12;;;;6024:49;;;;;;;;;;;;;;;;;;;;;;;6096:14;6091:20;6084:27;5499:619;-1:-1:-1;;;5499:619:40:o;1083:40:16:-;;;-1:-1:-1;;;;;1083:40:16;;:::o;2540:912:40:-;2713:32;;2589:4;;-1:-1:-1;;;;;2713:32:40;2699:10;:46;;;:96;;-1:-1:-1;2749:32:40;;-1:-1:-1;;;;;2749:32:40;:46;2699:96;2695:215;;;2818:81;2823:18;2843:55;2818:4;:81::i;:::-;2811:88;;;;2695:215;3000:25;;;3070:32;;;-1:-1:-1;;;;;3070:32:40;;;-1:-1:-1;;;;;;3113:60:40;;;;;;;;;3184:45;;;;;;3245:63;;;3000:25;;;3245:63;;;3282:25;;;;3245:63;;;;;;3070:32;;3245:63;;;;;;;;;3374:32;;3323:84;;;-1:-1:-1;;;;;3323:84:40;;;;;3374:32;;;3323:84;;;;;;;;;;;;;;;;3430:14;3425:20;3418:27;;;;2540:912;;:::o;1188:47:16:-;;;-1:-1:-1;;;;;1188:47:16;;:::o;1499:749:40:-;1584:4;1605:16;:14;:16::i;:::-;1600:131;;1644:76;1649:18;1669:50;1644:4;:76::i;1600:131::-;1791:25;;1746:97;;;-1:-1:-1;;;1746:97:40;;-1:-1:-1;;;;;1791:25:40;;;1746:97;;;;;;;;;;;;275:42:16;;1746:44:40;;:97;;;;;;;;;;;;;;275:42:16;1746:97:40;;;5:2:-1;;;;30:1;27;20:12;5:2;1746:97:40;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1746:97:40;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1746:97:40;1741:215;;1866:79;1871:18;1891:53;1866:4;:79::i;1741:215::-;2001:32;;;-1:-1:-1;;;;;2044:59:40;;;-1:-1:-1;;;;;;2044:59:40;;;;;;;2119:84;;;2001:32;;;2119:84;;;2170:32;;;;2119:84;;;;;;;;;;;;;;;;2226:14;2221:20;;6389:720;6535:12;;6429:4;;-1:-1:-1;;;;;6535:12:40;6521:10;:26;;;:54;;-1:-1:-1;6551:10:40;:24;6521:54;6517:162;;;6598:70;6603:18;6623:44;6598:4;:70::i;6517:162::-;6741:16;6760:5;;;6801:12;;-1:-1:-1;;;;;6801:12:40;;;-1:-1:-1;;;;;;6871:20:40;;;;;;;;;6937:25;;;;;;6978;;;6760:5;;;6978:25;;;6997:5;;;;6978:25;;;;;;6801:12;;6978:25;;;;;;;;;7051:12;;7018:46;;;-1:-1:-1;;;;;7018:46:40;;;;;7051:12;;;7018:46;;;;;;;;;;;;;;;;7087:14;7082:20;;386::16;;;-1:-1:-1;;;;;386:20:16;;:::o;842:178::-;891:4;929:5;;-1:-1:-1;;;;;929:5:16;915:10;:19;:37;;;;-1:-1:-1;938:14:16;;-1:-1:-1;;;938:14:16;;;;915:37;914:99;;;-1:-1:-1;958:10:16;275:42;958:32;:54;;;;-1:-1:-1;994:18:16;;-1:-1:-1;;;994:18:16;;;;958:54;907:106;;842:178;:::o;2325:149:20:-;2386:4;2407:33;2420:3;2415:9;;;;;;;;2431:4;2426:10;;;;;;;;2407:33;;;;;;;;;;;;;2438:1;2407:33;;;;;;;;;;;;;2463:3;2458:9;;;;;;"},"methodIdentifiers":{"_acceptAdmin()":"e9c714f2","_acceptImplementation()":"c1e80334","_setPendingAdmin(address)":"b71d1a0c","_setPendingImplementation(address)":"e992a041","_toggleAdminRights(bool)":"0225ab9d","_toggleFuseAdminRights(bool)":"6f63af0b","admin()":"f851a440","adminHasRights()":"0a755ec2","comptrollerImplementation()":"bb82aa5e","fuseAdminHasRights()":"2f1069ba","pendingAdmin()":"26782247","pendingComptrollerImplementation()":"dcfbc0c7"}},"metadata":"{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"hasRights\",\"type\":\"bool\"}],\"name\":\"AdminRightsToggled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"error\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"info\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"detail\",\"type\":\"uint256\"}],\"name\":\"Failure\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"hasRights\",\"type\":\"bool\"}],\"name\":\"FuseAdminRightsToggled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"NewAdmin\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldImplementation\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"NewImplementation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldPendingAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newPendingAdmin\",\"type\":\"address\"}],\"name\":\"NewPendingAdmin\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldPendingImplementation\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newPendingImplementation\",\"type\":\"address\"}],\"name\":\"NewPendingImplementation\",\"type\":\"event\"},{\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"constant\":false,\"inputs\":[],\"name\":\"_acceptAdmin\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"_acceptImplementation\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"newPendingAdmin\",\"type\":\"address\"}],\"name\":\"_setPendingAdmin\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"newPendingImplementation\",\"type\":\"address\"}],\"name\":\"_setPendingImplementation\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bool\",\"name\":\"hasRights\",\"type\":\"bool\"}],\"name\":\"_toggleAdminRights\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bool\",\"name\":\"hasRights\",\"type\":\"bool\"}],\"name\":\"_toggleFuseAdminRights\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"adminHasRights\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"comptrollerImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"fuseAdminHasRights\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"pendingAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"pendingComptrollerImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Storage for the comptroller is at this address, while execution is delegated to the `comptrollerImplementation`. CTokens should reference this contract as their comptroller.\",\"methods\":{\"_acceptAdmin()\":{\"details\":\"Admin function for pending admin to accept role and update admin\",\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"_acceptImplementation()\":{\"details\":\"Admin function for new implementation to accept it's role as implementation\",\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"_setPendingAdmin(address)\":{\"details\":\"Admin function to begin change of admin. The newPendingAdmin must call `_acceptAdmin` to finalize the transfer.\",\"params\":{\"newPendingAdmin\":\"New pending admin.\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"_toggleAdminRights(bool)\":{\"params\":{\"hasRights\":\"Boolean indicating if the admin is to have rights.\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"_toggleFuseAdminRights(bool)\":{\"params\":{\"hasRights\":\"Boolean indicating if the Fuse admin is to have rights.\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"}},\"title\":\"Unitroller\"},\"userdoc\":{\"methods\":{\"_acceptAdmin()\":{\"notice\":\"Accepts transfer of admin rights. msg.sender must be pendingAdmin\"},\"_acceptImplementation()\":{\"notice\":\"Accepts new implementation of comptroller. msg.sender must be pendingImplementation\"},\"_setPendingAdmin(address)\":{\"notice\":\"Begins transfer of admin rights. The newPendingAdmin must call `_acceptAdmin` to finalize the transfer.\"},\"_setPendingImplementation(address)\":{\"notice\":\"* Admin Functions **\"},\"_toggleAdminRights(bool)\":{\"notice\":\"Toggles admin rights.\"},\"_toggleFuseAdminRights(bool)\":{\"notice\":\"Toggles Fuse admin rights.\"}}}},\"settings\":{\"compilationTarget\":{\"contracts/Unitroller.sol\":\"Unitroller\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/CToken.sol\":{\"keccak256\":\"0xc3a5a827241528049e20a24cc446558c8a9272909f75ce5d1cf14ae3ab5feba3\",\"urls\":[\"bzz-raw://a403db2bf1a8e5e9384df19600bd18d4251056818b094afcdab418e683bb5cb8\",\"dweb:/ipfs/QmdkRbFGtKP67tNNqyH7BraDRGerwRNA7ktscbFV9LioM2\"]},\"contracts/CTokenInterfaces.sol\":{\"keccak256\":\"0xc8a056c724ef4f0215ece6011e7ac1007c9dc7611ce5160d470ec858bbb06bd3\",\"urls\":[\"bzz-raw://58951693d1b53d2722e55b068bab2b570f4b044d89c28ed6b53bac6e95aeb662\",\"dweb:/ipfs/QmQiNTw5jZR74WjKfX2bPiuTT4tuFuq8rx7QxEVyVvdGLn\"]},\"contracts/CarefulMath.sol\":{\"keccak256\":\"0x1487237dbbbb73ad43c8eff16e78311753719a94a5065f574de5c91b672c56f8\",\"urls\":[\"bzz-raw://349966a236f313b2cb42e1942832e6bd7e134f65f6654e6c4d46788e65cc4a9b\",\"dweb:/ipfs/Qmebpv8i5jLR4fLgpZHQZRLu6aefVAbLC2yUk9ABEekquz\"]},\"contracts/ComptrollerInterface.sol\":{\"keccak256\":\"0xecfb84fabc9792d0b1c912886249c67bc42c39eb065d962d0b9a5f3736af5892\",\"urls\":[\"bzz-raw://711547ebc1a7f18b271118dd98276771953a9d7b3674716f67d247be9b907372\",\"dweb:/ipfs/QmbVZNvkBp8miByATrL6y5j8MePdcQ8uTAUZMpKrhpLgoa\"]},\"contracts/ComptrollerStorage.sol\":{\"keccak256\":\"0x83961d3c12984fe4afc72717fc44b2d868563d053a0eceda0cbf17ec6b255913\",\"urls\":[\"bzz-raw://ea667c2de43881f9be19f4f75dec348632273178965fc9b3655705d853b032bb\",\"dweb:/ipfs/QmZP6sbNFSgFZrAEvfRjhp1NtGj6U6Sea3JGiKG96AHyeP\"]},\"contracts/EIP20Interface.sol\":{\"keccak256\":\"0xee33b8b333743308a9153a59f22da2cadb22cedef4403fe039bf9e057c9c729a\",\"urls\":[\"bzz-raw://5427fdb941300d36a424da0a0a5800e3b2ca51c9c922831dbfce2f6637402b43\",\"dweb:/ipfs/QmTrvmLynqSUPjsGW2dpiQ91dSmn4xzccQiwr8qaBtyvjH\"]},\"contracts/EIP20NonStandardInterface.sol\":{\"keccak256\":\"0x469899442dd9640bfc2c670d404ad3027e48df5df8e5aeab0e25cc6b6aae05f5\",\"urls\":[\"bzz-raw://d8c4498abaf539eb413a2f1a916d75945adc8bd4ef437f8450cb67e07be3f38d\",\"dweb:/ipfs/QmaFpWfnhAMYW21rbT5PEszn4TGHdGU58Eq5AfZsCuapZ3\"]},\"contracts/ErrorReporter.sol\":{\"keccak256\":\"0xe9587478bc9efad203cab02b8aecae32828cfc9a271b13ae3c018e38e44aab32\",\"urls\":[\"bzz-raw://2eb34bdbbbc410fb401d50ddca44a7421a1d8191711c569ed5bcec1c1b07a05c\",\"dweb:/ipfs/QmYKNCYppyx3NGiwtjdLEmxUMgfnFBqT4pnvnhnBrPgrxS\"]},\"contracts/Exponential.sol\":{\"keccak256\":\"0xfda0e2b610541cf1cf316a0000c89a1069ccc21f1566affc0a058810e2b835d3\",\"urls\":[\"bzz-raw://fe319f184f1b5f27019d3d890124cd24e466d27153ac38eb9ff6b16efbad48b9\",\"dweb:/ipfs/Qmcev6jCmtdCviJxUQvUCmesPDShRDSvdfUEfvsqd4GEJA\"]},\"contracts/ExponentialNoError.sol\":{\"keccak256\":\"0x713a089f4bbcaec1d3924fc7d9a2154904a39f46cb6f25b713167dbe5f21623e\",\"urls\":[\"bzz-raw://d7108d68af7c5effd4272615ceba54e79e585f6b8be5aabc7602245c84c7b9e0\",\"dweb:/ipfs/QmQZo2XpxW7w5viVEg71mi9eKaAYD7HUqfCMB5yCCPVnc5\"]},\"contracts/IFuseFeeDistributor.sol\":{\"keccak256\":\"0xb5d287b8e05574d38bd5d0b413f44b4c5d312f28188573ac60abe78123fbd92c\",\"urls\":[\"bzz-raw://84c2bbf746a82aaa100bee90c7dd40411c723bded124bb1775bf72bf7fda8a2c\",\"dweb:/ipfs/QmToQzDtz9BV2tvU71YsfWjdaZu5qpP1xKFZ1TkQgubhDb\"]},\"contracts/InterestRateModel.sol\":{\"keccak256\":\"0x0cc0dbd1991e5dcdcff58b0c82a9471a0fb9df26763e5e7415e1d081b7332409\",\"urls\":[\"bzz-raw://f4d7936aefc43ea2724f0e472b8f1517f1ca40170258ab9d5bbd0862dd0c4f13\",\"dweb:/ipfs/QmfYjG1Sm3kNwbhomHCWhMqw9LvaJVWVzBe4Te5BHRbTQS\"]},\"contracts/PriceOracle.sol\":{\"keccak256\":\"0x62ba3a5ec8f06d456ab089d6ca7f9d14d3a6ce6814923271ca60a6990918fb41\",\"urls\":[\"bzz-raw://aa6d2f20efdd5389161eb15bdab98b5628dc8cd5354394bbed35bb14d3612506\",\"dweb:/ipfs/QmVfo4eCDuk8LMSywpBjZBxCv7zLCNsG6u3nyD1d4CYwsD\"]},\"contracts/Unitroller.sol\":{\"keccak256\":\"0x36bf7b6c12ddf5053da8b8b4c0c23da46df6c62eec0e31230c57f9aedf9b9d2d\",\"urls\":[\"bzz-raw://866cf0d98da484f9ed07fb98b3e1ef2db0ef33f3f0be5c02becdf07da448ce4a\",\"dweb:/ipfs/Qma8qNfmcfjReH5LT7Aaujqu3qdsBkdwExgS5yPgSbzYMF\"]}},\"version\":1}"}},"contracts/WhitePaperInterestRateModel.sol":{"WhitePaperInterestRateModel":{"abi":[{"inputs":[{"internalType":"uint256","name":"baseRatePerYear","type":"uint256"},{"internalType":"uint256","name":"multiplierPerYear","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"baseRatePerBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"multiplierPerBlock","type":"uint256"}],"name":"NewInterestParams","type":"event"},{"constant":true,"inputs":[],"name":"baseRatePerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"blocksPerYear","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"cash","type":"uint256"},{"internalType":"uint256","name":"borrows","type":"uint256"},{"internalType":"uint256","name":"reserves","type":"uint256"}],"name":"getBorrowRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"cash","type":"uint256"},{"internalType":"uint256","name":"borrows","type":"uint256"},{"internalType":"uint256","name":"reserves","type":"uint256"},{"internalType":"uint256","name":"reserveFactorMantissa","type":"uint256"}],"name":"getSupplyRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isInterestRateModel","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"multiplierPerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"cash","type":"uint256"},{"internalType":"uint256","name":"borrows","type":"uint256"},{"internalType":"uint256","name":"reserves","type":"uint256"}],"name":"utilizationRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b506040516106da3803806106da8339818101604052604081101561003357600080fd5b508051602091820151909161005690839062243394906102ee6100bc821b17901c565b60015561007181622433946100bc602090811b6102ee17901c565b600081905560015460408051918252602082019290925281517ff35fa19c15e9ba782633a5df62a98b20217151addc68e3ff2cd623a48d37ec27929181900390910190a150506101ad565b600061010483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061010b60201b60201c565b9392505050565b600081836101975760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561015c578181015183820152602001610144565b50505050905090810190601f1680156101895780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816101a357fe5b0495945050505050565b61051e806101bc6000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80638726bb891161005b5780638726bb8914610102578063a385fb961461010a578063b816881614610112578063f14039de146101415761007d565b806315f24053146100825780632191f92a146100bd5780636e71e2d8146100d9575b600080fd5b6100ab6004803603606081101561009857600080fd5b5080359060208101359060400135610149565b60408051918252519081900360200190f35b6100c56101a3565b604080519115158252519081900360200190f35b6100ab600480360360608110156100ef57600080fd5b50803590602081013590604001356101a8565b6100ab6101fa565b6100ab610200565b6100ab6004803603608081101561012857600080fd5b5080359060208101359060408101359060600135610207565b6100ab610286565b6000806101578585856101a8565b905061019860015461018c670de0b6b3a76400006101806000548661028c90919063ffffffff16565b9063ffffffff6102ee16565b9063ffffffff61033016565b9150505b9392505050565b600181565b6000826101b75750600061019c565b6101f26101da836101ce878763ffffffff61033016565b9063ffffffff61038a16565b61018085670de0b6b3a764000063ffffffff61028c16565b949350505050565b60005481565b6224339481565b600080610222670de0b6b3a76400008463ffffffff61038a16565b90506000610231878787610149565b90506000610251670de0b6b3a7640000610180848663ffffffff61028c16565b905061027a670de0b6b3a76400006101808361026e8c8c8c6101a8565b9063ffffffff61028c16565b98975050505050505050565b60015481565b60008261029b575060006102e8565b828202828482816102a857fe5b04146102e55760405162461bcd60e51b81526004018080602001828103825260218152602001806104c96021913960400191505060405180910390fd5b90505b92915050565b60006102e583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506103cc565b6000828201838110156102e5576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60006102e583836040518060400160405280601f81526020017f536166654d6174683a207375627472616374696f6e20756e646572666c6f770081525061046e565b600081836104585760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561041d578181015183820152602001610405565b50505050905090810190601f16801561044a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161046457fe5b0495945050505050565b600081848411156104c05760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561041d578181015183820152602001610405565b50505090039056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a265627a7a7231582042e2b0705a32969530f12c8f79b71f47dc79abb7270004d52e0f85a113ef9ae564736f6c63430005110032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x6DA CODESIZE SUB DUP1 PUSH2 0x6DA DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD MLOAD SWAP1 SWAP2 PUSH2 0x56 SWAP1 DUP4 SWAP1 PUSH3 0x243394 SWAP1 PUSH2 0x2EE PUSH2 0xBC DUP3 SHL OR SWAP1 SHR JUMP JUMPDEST PUSH1 0x1 SSTORE PUSH2 0x71 DUP2 PUSH3 0x243394 PUSH2 0xBC PUSH1 0x20 SWAP1 DUP2 SHL PUSH2 0x2EE OR SWAP1 SHR JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 SSTORE PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP2 MLOAD PUSH32 0xF35FA19C15E9BA782633A5DF62A98B20217151ADDC68E3FF2CD623A48D37EC27 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP POP PUSH2 0x1AD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x104 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x10B PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x197 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x15C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x144 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x189 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x1A3 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x51E DUP1 PUSH2 0x1BC 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 0x8726BB89 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x8726BB89 EQ PUSH2 0x102 JUMPI DUP1 PUSH4 0xA385FB96 EQ PUSH2 0x10A JUMPI DUP1 PUSH4 0xB8168816 EQ PUSH2 0x112 JUMPI DUP1 PUSH4 0xF14039DE EQ PUSH2 0x141 JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0x15F24053 EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x2191F92A EQ PUSH2 0xBD JUMPI DUP1 PUSH4 0x6E71E2D8 EQ PUSH2 0xD9 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xAB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x98 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x149 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xC5 PUSH2 0x1A3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xAB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xEF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x1A8 JUMP JUMPDEST PUSH2 0xAB PUSH2 0x1FA JUMP JUMPDEST PUSH2 0xAB PUSH2 0x200 JUMP JUMPDEST PUSH2 0xAB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x128 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x207 JUMP JUMPDEST PUSH2 0xAB PUSH2 0x286 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x157 DUP6 DUP6 DUP6 PUSH2 0x1A8 JUMP JUMPDEST SWAP1 POP PUSH2 0x198 PUSH1 0x1 SLOAD PUSH2 0x18C PUSH8 0xDE0B6B3A7640000 PUSH2 0x180 PUSH1 0x0 SLOAD DUP7 PUSH2 0x28C SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x2EE AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x330 AND JUMP JUMPDEST SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1B7 JUMPI POP PUSH1 0x0 PUSH2 0x19C JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0x1DA DUP4 PUSH2 0x1CE DUP8 DUP8 PUSH4 0xFFFFFFFF PUSH2 0x330 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x38A AND JUMP JUMPDEST PUSH2 0x180 DUP6 PUSH8 0xDE0B6B3A7640000 PUSH4 0xFFFFFFFF PUSH2 0x28C AND JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH3 0x243394 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x222 PUSH8 0xDE0B6B3A7640000 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x38A AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x231 DUP8 DUP8 DUP8 PUSH2 0x149 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x251 PUSH8 0xDE0B6B3A7640000 PUSH2 0x180 DUP5 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x28C AND JUMP JUMPDEST SWAP1 POP PUSH2 0x27A PUSH8 0xDE0B6B3A7640000 PUSH2 0x180 DUP4 PUSH2 0x26E DUP13 DUP13 DUP13 PUSH2 0x1A8 JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x28C AND JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x29B JUMPI POP PUSH1 0x0 PUSH2 0x2E8 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x2A8 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x2E5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4C9 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2E5 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x3CC JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x2E5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2E5 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1F DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E20756E646572666C6F7700 DUP2 MSTORE POP PUSH2 0x46E JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x458 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x41D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x405 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x44A JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x464 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x4C0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x41D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x405 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP INVALID MSTORE8 PUSH2 0x6665 0x4D PUSH2 0x7468 GASPRICE KECCAK256 PUSH14 0x756C7469706C69636174696F6E20 PUSH16 0x766572666C6F77A265627A7A72315820 TIMESTAMP 0xE2 0xB0 PUSH17 0x5A32969530F12C8F79B71F47DC79ABB727 STOP DIV 0xD5 0x2E 0xF DUP6 LOG1 SGT 0xEF SWAP11 0xE5 PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ","sourceMap":"280:3316:41:-;;;1201:273;8:9:-1;5:2;;;30:1;27;20:12;5:2;1201:273:41;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1201:273:41;;;;;;;;;1295:34;;1201:273;;605:7;;1295:19;;;;;:34;;:::i;:::-;1276:16;:53;1360:36;:17;605:7;1360:21;;;;;;;:36;;:::i;:::-;1339:18;:57;;;1430:16;;1412:55;;;;;;;;;;;;;;;;;;;;;;;;;;1201:273;;280:3316;;4266:130:37;4324:7;4350:39;4354:1;4357;4350:39;;;;;;;;;;;;;;;;;:3;;;:39;;:::i;:::-;4343:46;4266:130;-1:-1:-1;;;4266:130:37:o;4871:338::-;4957:7;5057:12;5050:5;5042:28;;;;-1:-1:-1;;;5042:28:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;5042:28:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5080:9;5096:1;5092;:5;;;;;;;4871:338;-1:-1:-1;;;;;4871:338:37:o;280:3316:41:-;;;;;;;"},"deployedBytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061007d5760003560e01c80638726bb891161005b5780638726bb8914610102578063a385fb961461010a578063b816881614610112578063f14039de146101415761007d565b806315f24053146100825780632191f92a146100bd5780636e71e2d8146100d9575b600080fd5b6100ab6004803603606081101561009857600080fd5b5080359060208101359060400135610149565b60408051918252519081900360200190f35b6100c56101a3565b604080519115158252519081900360200190f35b6100ab600480360360608110156100ef57600080fd5b50803590602081013590604001356101a8565b6100ab6101fa565b6100ab610200565b6100ab6004803603608081101561012857600080fd5b5080359060208101359060408101359060600135610207565b6100ab610286565b6000806101578585856101a8565b905061019860015461018c670de0b6b3a76400006101806000548661028c90919063ffffffff16565b9063ffffffff6102ee16565b9063ffffffff61033016565b9150505b9392505050565b600181565b6000826101b75750600061019c565b6101f26101da836101ce878763ffffffff61033016565b9063ffffffff61038a16565b61018085670de0b6b3a764000063ffffffff61028c16565b949350505050565b60005481565b6224339481565b600080610222670de0b6b3a76400008463ffffffff61038a16565b90506000610231878787610149565b90506000610251670de0b6b3a7640000610180848663ffffffff61028c16565b905061027a670de0b6b3a76400006101808361026e8c8c8c6101a8565b9063ffffffff61028c16565b98975050505050505050565b60015481565b60008261029b575060006102e8565b828202828482816102a857fe5b04146102e55760405162461bcd60e51b81526004018080602001828103825260218152602001806104c96021913960400191505060405180910390fd5b90505b92915050565b60006102e583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506103cc565b6000828201838110156102e5576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60006102e583836040518060400160405280601f81526020017f536166654d6174683a207375627472616374696f6e20756e646572666c6f770081525061046e565b600081836104585760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561041d578181015183820152602001610405565b50505050905090810190601f16801561044a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161046457fe5b0495945050505050565b600081848411156104c05760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561041d578181015183820152602001610405565b50505090039056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a265627a7a7231582042e2b0705a32969530f12c8f79b71f47dc79abb7270004d52e0f85a113ef9ae564736f6c63430005110032","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 0x8726BB89 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x8726BB89 EQ PUSH2 0x102 JUMPI DUP1 PUSH4 0xA385FB96 EQ PUSH2 0x10A JUMPI DUP1 PUSH4 0xB8168816 EQ PUSH2 0x112 JUMPI DUP1 PUSH4 0xF14039DE EQ PUSH2 0x141 JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0x15F24053 EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x2191F92A EQ PUSH2 0xBD JUMPI DUP1 PUSH4 0x6E71E2D8 EQ PUSH2 0xD9 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xAB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x98 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x149 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xC5 PUSH2 0x1A3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xAB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xEF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x1A8 JUMP JUMPDEST PUSH2 0xAB PUSH2 0x1FA JUMP JUMPDEST PUSH2 0xAB PUSH2 0x200 JUMP JUMPDEST PUSH2 0xAB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x128 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x207 JUMP JUMPDEST PUSH2 0xAB PUSH2 0x286 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x157 DUP6 DUP6 DUP6 PUSH2 0x1A8 JUMP JUMPDEST SWAP1 POP PUSH2 0x198 PUSH1 0x1 SLOAD PUSH2 0x18C PUSH8 0xDE0B6B3A7640000 PUSH2 0x180 PUSH1 0x0 SLOAD DUP7 PUSH2 0x28C SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x2EE AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x330 AND JUMP JUMPDEST SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1B7 JUMPI POP PUSH1 0x0 PUSH2 0x19C JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0x1DA DUP4 PUSH2 0x1CE DUP8 DUP8 PUSH4 0xFFFFFFFF PUSH2 0x330 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x38A AND JUMP JUMPDEST PUSH2 0x180 DUP6 PUSH8 0xDE0B6B3A7640000 PUSH4 0xFFFFFFFF PUSH2 0x28C AND JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH3 0x243394 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x222 PUSH8 0xDE0B6B3A7640000 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x38A AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x231 DUP8 DUP8 DUP8 PUSH2 0x149 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x251 PUSH8 0xDE0B6B3A7640000 PUSH2 0x180 DUP5 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x28C AND JUMP JUMPDEST SWAP1 POP PUSH2 0x27A PUSH8 0xDE0B6B3A7640000 PUSH2 0x180 DUP4 PUSH2 0x26E DUP13 DUP13 DUP13 PUSH2 0x1A8 JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x28C AND JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x29B JUMPI POP PUSH1 0x0 PUSH2 0x2E8 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x2A8 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x2E5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4C9 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2E5 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x3CC JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x2E5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2E5 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1F DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E20756E646572666C6F7700 DUP2 MSTORE POP PUSH2 0x46E JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x458 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x41D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x405 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x44A JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x464 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x4C0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x41D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x405 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP INVALID MSTORE8 PUSH2 0x6665 0x4D PUSH2 0x7468 GASPRICE KECCAK256 PUSH14 0x756C7469706C69636174696F6E20 PUSH16 0x766572666C6F77A265627A7A72315820 TIMESTAMP 0xE2 0xB0 PUSH17 0x5A32969530F12C8F79B71F47DC79ABB727 STOP DIV 0xD5 0x2E 0xF DUP6 LOG1 SGT 0xEF SWAP11 0xE5 PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ","sourceMap":"280:3316:41:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;280:3316:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2524:232;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2524:232:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;224:47:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;1855:290:41;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1855:290:41;;;;;;;;;;;;:::i;762:30::-;;;:::i;568:44::-;;;:::i;3169:425::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;3169:425:41;;;;;;;;;;;;;;;;;:::i;905:28::-;;;:::i;2524:232::-;2608:4;2624:7;2634:40;2650:4;2656:7;2665:8;2634:15;:40::i;:::-;2624:50;;2691:58;2732:16;;2691:36;2722:4;2691:26;2698:18;;2691:2;:6;;:26;;;;:::i;:::-;:30;:36;:30;:36;:::i;:::-;:40;:58;:40;:58;:::i;:::-;2684:65;;;2524:232;;;;;;:::o;224:47:26:-;267:4;224:47;:::o;1855:290:41:-;1941:4;2020:12;2016:51;;-1:-1:-1;2055:1:41;2048:8;;2016:51;2084:54;2106:31;2128:8;2106:17;:4;2115:7;2106:17;:8;:17;:::i;:::-;:21;:31;:21;:31;:::i;:::-;2084:17;:7;2096:4;2084:17;:11;:17;:::i;:54::-;2077:61;1855:290;-1:-1:-1;;;;1855:290:41:o;762:30::-;;;;:::o;568:44::-;605:7;568:44;:::o;3169:425::-;3281:4;;3326:37;3331:4;3341:21;3326:37;:14;:37;:::i;:::-;3297:66;;3373:15;3391:38;3405:4;3411:7;3420:8;3391:13;:38::i;:::-;3373:56;-1:-1:-1;3439:15:41;3457:47;3499:4;3457:37;3373:56;3472:21;3457:37;:14;:37;:::i;:47::-;3439:65;;3521:66;3582:4;3521:56;3566:10;3521:40;3537:4;3543:7;3552:8;3521:15;:40::i;:::-;:44;:56;:44;:56;:::i;:66::-;3514:73;3169:425;-1:-1:-1;;;;;;;;3169:425:41:o;905:28::-;;;;:::o;2655:459:37:-;2713:7;2954:6;2950:45;;-1:-1:-1;2983:1:37;2976:8;;2950:45;3017:5;;;3021:1;3017;:5;:1;3040:5;;;;;:10;3032:56;;;;-1:-1:-1;;;3032:56:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3106:1;-1:-1:-1;2655:459:37;;;;;:::o;4266:130::-;4324:7;4350:39;4354:1;4357;4350:39;;;;;;;;;;;;;;;;;:3;:39::i;958:176::-;1016:7;1047:5;;;1070:6;;;;1062:46;;;;;-1:-1:-1;;;1062:46:37;;;;;;;;;;;;;;;;;;;;;;;;;;;1821:135;1879:7;1905:44;1909:1;1912;1905:44;;;;;;;;;;;;;;;;;:3;:44::i;4871:338::-;4957:7;5057:12;5050:5;5042:28;;;;-1:-1:-1;;;5042:28:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;5042:28:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5080:9;5096:1;5092;:5;;;;;;;4871:338;-1:-1:-1;;;;;4871:338:37:o;2235:187::-;2321:7;2356:12;2348:6;;;;2340:29;;;;-1:-1:-1;;;2340:29:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;2340:29:37;-1:-1:-1;;;2391:5:37;;;2235:187::o"},"methodIdentifiers":{"baseRatePerBlock()":"f14039de","blocksPerYear()":"a385fb96","getBorrowRate(uint256,uint256,uint256)":"15f24053","getSupplyRate(uint256,uint256,uint256,uint256)":"b8168816","isInterestRateModel()":"2191f92a","multiplierPerBlock()":"8726bb89","utilizationRate(uint256,uint256,uint256)":"6e71e2d8"}},"metadata":"{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"baseRatePerYear\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"multiplierPerYear\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"baseRatePerBlock\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"multiplierPerBlock\",\"type\":\"uint256\"}],\"name\":\"NewInterestParams\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"baseRatePerBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"blocksPerYear\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"cash\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"borrows\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserves\",\"type\":\"uint256\"}],\"name\":\"getBorrowRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"cash\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"borrows\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserves\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveFactorMantissa\",\"type\":\"uint256\"}],\"name\":\"getSupplyRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isInterestRateModel\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"multiplierPerBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"cash\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"borrows\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserves\",\"type\":\"uint256\"}],\"name\":\"utilizationRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Compound\",\"methods\":{\"constructor\":{\"params\":{\"baseRatePerYear\":\"The approximate target base APR, as a mantissa (scaled by 1e18)\",\"multiplierPerYear\":\"The rate of increase in interest rate wrt utilization (scaled by 1e18)\"}},\"getBorrowRate(uint256,uint256,uint256)\":{\"params\":{\"borrows\":\"The amount of borrows in the market\",\"cash\":\"The amount of cash in the market\",\"reserves\":\"The amount of reserves in the market\"},\"return\":\"The borrow rate percentage per block as a mantissa (scaled by 1e18)\"},\"getSupplyRate(uint256,uint256,uint256,uint256)\":{\"params\":{\"borrows\":\"The amount of borrows in the market\",\"cash\":\"The amount of cash in the market\",\"reserveFactorMantissa\":\"The current reserve factor for the market\",\"reserves\":\"The amount of reserves in the market\"},\"return\":\"The supply rate percentage per block as a mantissa (scaled by 1e18)\"},\"utilizationRate(uint256,uint256,uint256)\":{\"params\":{\"borrows\":\"The amount of borrows in the market\",\"cash\":\"The amount of cash in the market\",\"reserves\":\"The amount of reserves in the market (currently unused)\"},\"return\":\"The utilization rate as a mantissa between [0, 1e18]\"}},\"title\":\"Compound's WhitePaperInterestRateModel Contract\"},\"userdoc\":{\"methods\":{\"constructor\":\"Construct an interest rate model\",\"getBorrowRate(uint256,uint256,uint256)\":{\"notice\":\"Calculates the current borrow rate per block, with the error code expected by the market\"},\"getSupplyRate(uint256,uint256,uint256,uint256)\":{\"notice\":\"Calculates the current supply rate per block\"},\"utilizationRate(uint256,uint256,uint256)\":{\"notice\":\"Calculates the utilization rate of the market: `borrows / (cash + borrows - reserves)`\"}},\"notice\":\"The parameterized model described in section 2.4 of the original Compound Protocol whitepaper\"}},\"settings\":{\"compilationTarget\":{\"contracts/WhitePaperInterestRateModel.sol\":\"WhitePaperInterestRateModel\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/InterestRateModel.sol\":{\"keccak256\":\"0x0cc0dbd1991e5dcdcff58b0c82a9471a0fb9df26763e5e7415e1d081b7332409\",\"urls\":[\"bzz-raw://f4d7936aefc43ea2724f0e472b8f1517f1ca40170258ab9d5bbd0862dd0c4f13\",\"dweb:/ipfs/QmfYjG1Sm3kNwbhomHCWhMqw9LvaJVWVzBe4Te5BHRbTQS\"]},\"contracts/SafeMath.sol\":{\"keccak256\":\"0x675b1178c34633ecc37124c254349c1d3fe239c7bd74a649eb55f54adafd2dee\",\"urls\":[\"bzz-raw://c55f6f93d24b0976189d8fcf4df706b04439041d43a1e4d289db440251f9bc2a\",\"dweb:/ipfs/QmUAsuvRZMJ4hvsxKF3ud5g93DBEbnaXnt7waJzziurC2S\"]},\"contracts/WhitePaperInterestRateModel.sol\":{\"keccak256\":\"0x4b50fa9369ab9ee5946296feaf480cd933672e5efcc3daa56edbaf08c16e24ce\",\"urls\":[\"bzz-raw://4c841775d149c6ce1d45c0f7035399904a586282e1b70b743ce8606f6e3d274c\",\"dweb:/ipfs/QmXmxUUGc3yGs4igjkB2uZ9wKNTzUTtmkSUgSjWv9tQb9e\"]}},\"version\":1}"}}}}} \ No newline at end of file diff --git a/artifacts/contracts/CErc20DelegateDAIAggregatorFix.sol/CErc20DelegateUSDCAggregatorFix.dbg.json b/artifacts/contracts/CErc20DelegateDAIAggregatorFix.sol/CErc20DelegateUSDCAggregatorFix.dbg.json new file mode 100644 index 000000000..3e43d1aa0 --- /dev/null +++ b/artifacts/contracts/CErc20DelegateDAIAggregatorFix.sol/CErc20DelegateUSDCAggregatorFix.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../build-info/24725923d734a8bf04a89645a2c314a8.json" +} diff --git a/artifacts/contracts/CErc20DelegateDAIAggregatorFix.sol/CErc20DelegateUSDCAggregatorFix.json b/artifacts/contracts/CErc20DelegateDAIAggregatorFix.sol/CErc20DelegateUSDCAggregatorFix.json new file mode 100644 index 000000000..e8f1eb0cd --- /dev/null +++ b/artifacts/contracts/CErc20DelegateDAIAggregatorFix.sol/CErc20DelegateUSDCAggregatorFix.json @@ -0,0 +1,1568 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "CErc20DelegateUSDCAggregatorFix", + "sourceName": "contracts/CErc20DelegateDAIAggregatorFix.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "cashPrior", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "interestAccumulated", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "borrowIndex", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "totalBorrows", + "type": "uint256" + } + ], + "name": "AccrueInterest", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "borrower", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "borrowAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "accountBorrows", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "totalBorrows", + "type": "uint256" + } + ], + "name": "Borrow", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "error", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "info", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "detail", + "type": "uint256" + } + ], + "name": "Failure", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "liquidator", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "borrower", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "repayAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "cTokenCollateral", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "seizeTokens", + "type": "uint256" + } + ], + "name": "LiquidateBorrow", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "minter", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "mintAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "mintTokens", + "type": "uint256" + } + ], + "name": "Mint", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "oldAdminFeeMantissa", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newAdminFeeMantissa", + "type": "uint256" + } + ], + "name": "NewAdminFee", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "contract ComptrollerInterface", + "name": "oldComptroller", + "type": "address" + }, + { + "indexed": false, + "internalType": "contract ComptrollerInterface", + "name": "newComptroller", + "type": "address" + } + ], + "name": "NewComptroller", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "oldFuseFeeMantissa", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newFuseFeeMantissa", + "type": "uint256" + } + ], + "name": "NewFuseFee", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "oldImplementation", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newImplementation", + "type": "address" + } + ], + "name": "NewImplementation", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "contract InterestRateModel", + "name": "oldInterestRateModel", + "type": "address" + }, + { + "indexed": false, + "internalType": "contract InterestRateModel", + "name": "newInterestRateModel", + "type": "address" + } + ], + "name": "NewMarketInterestRateModel", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "oldReserveFactorMantissa", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newReserveFactorMantissa", + "type": "uint256" + } + ], + "name": "NewReserveFactor", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "redeemer", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "redeemAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "redeemTokens", + "type": "uint256" + } + ], + "name": "Redeem", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "payer", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "borrower", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "repayAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "accountBorrows", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "totalBorrows", + "type": "uint256" + } + ], + "name": "RepayBorrow", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "benefactor", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "addAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newTotalReserves", + "type": "uint256" + } + ], + "name": "ReservesAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "admin", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "reduceAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newTotalReserves", + "type": "uint256" + } + ], + "name": "ReservesReduced", + "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": "amount", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "_becomeImplementation", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "compLikeDelegatee", + "type": "address" + } + ], + "name": "_delegateCompLikeTo", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "_prepare", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "reduceAmount", + "type": "uint256" + } + ], + "name": "_reduceReserves", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "newAdminFeeMantissa", + "type": "uint256" + } + ], + "name": "_setAdminFee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "implementation_", + "type": "address" + }, + { + "internalType": "bool", + "name": "allowResign", + "type": "bool" + }, + { + "internalType": "bytes", + "name": "becomeImplementationData", + "type": "bytes" + } + ], + "name": "_setImplementationSafe", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "contract InterestRateModel", + "name": "newInterestRateModel", + "type": "address" + } + ], + "name": "_setInterestRateModel", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "string", + "name": "_name", + "type": "string" + }, + { + "internalType": "string", + "name": "_symbol", + "type": "string" + } + ], + "name": "_setNameAndSymbol", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "newReserveFactorMantissa", + "type": "uint256" + } + ], + "name": "_setReserveFactor", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "withdrawAmount", + "type": "uint256" + } + ], + "name": "_withdrawAdminFees", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "withdrawAmount", + "type": "uint256" + } + ], + "name": "_withdrawFuseFees", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "accrualBlockNumber", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "accrueInterest", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "adminFeeMantissa", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOfUnderlying", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "borrowAmount", + "type": "uint256" + } + ], + "name": "borrow", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "borrowBalanceCurrent", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "borrowBalanceStored", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "borrowIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "borrowRatePerBlock", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "comptroller", + "outputs": [ + { + "internalType": "contract ComptrollerInterface", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "exchangeRateCurrent", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "exchangeRateStored", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "fuseFeeMantissa", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "getAccountSnapshot", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getCash", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "implementation", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "contract ComptrollerInterface", + "name": "comptroller_", + "type": "address" + }, + { + "internalType": "contract InterestRateModel", + "name": "interestRateModel_", + "type": "address" + }, + { + "internalType": "uint256", + "name": "initialExchangeRateMantissa_", + "type": "uint256" + }, + { + "internalType": "string", + "name": "name_", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol_", + "type": "string" + }, + { + "internalType": "uint8", + "name": "decimals_", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "reserveFactorMantissa_", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "adminFeeMantissa_", + "type": "uint256" + } + ], + "name": "initialize", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "underlying_", + "type": "address" + }, + { + "internalType": "contract ComptrollerInterface", + "name": "comptroller_", + "type": "address" + }, + { + "internalType": "contract InterestRateModel", + "name": "interestRateModel_", + "type": "address" + }, + { + "internalType": "string", + "name": "name_", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol_", + "type": "string" + }, + { + "internalType": "uint256", + "name": "reserveFactorMantissa_", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "adminFeeMantissa_", + "type": "uint256" + } + ], + "name": "initialize", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "interestRateModel", + "outputs": [ + { + "internalType": "contract InterestRateModel", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "isCEther", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "isCToken", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "borrower", + "type": "address" + }, + { + "internalType": "uint256", + "name": "repayAmount", + "type": "uint256" + }, + { + "internalType": "contract CTokenInterface", + "name": "cTokenCollateral", + "type": "address" + } + ], + "name": "liquidateBorrow", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "mintAmount", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "protocolSeizeShareMantissa", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "redeemTokens", + "type": "uint256" + } + ], + "name": "redeem", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "redeemAmount", + "type": "uint256" + } + ], + "name": "redeemUnderlying", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "repayAmount", + "type": "uint256" + } + ], + "name": "repayBorrow", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "borrower", + "type": "address" + }, + { + "internalType": "uint256", + "name": "repayAmount", + "type": "uint256" + } + ], + "name": "repayBorrowBehalf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "reserveFactorMantissa", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "liquidator", + "type": "address" + }, + { + "internalType": "address", + "name": "borrower", + "type": "address" + }, + { + "internalType": "uint256", + "name": "seizeTokens", + "type": "uint256" + } + ], + "name": "seize", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "supplyRatePerBlock", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalAdminFees", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalBorrows", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "totalBorrowsCurrent", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalFuseFees", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalReserves", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "src", + "type": "address" + }, + { + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "underlying", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x6080604052615eb7806100136000396000f3fe6080604052600436106103765760003560e01c8063852a12e3116101d1578063ae9d70b011610102578063dc028ab1116100a0578063f5e3c4621161006f578063f5e3c46214610f69578063f8f9da2814610fac578063fca7820b14610fc1578063fe9c44ae14610feb57610376565b8063dc028ab114610ed1578063dd62ed3e14610ee6578063f2b3abbd14610f21578063f3fdb15a14610f5457610376565b8063c37f68e2116100dc578063c37f68e214610e0f578063c5ebeaec14610e68578063db006a7514610e92578063dbfe7c1914610ebc57610376565b8063ae9d70b014610da2578063b2a02ff114610db7578063bd6d894d14610dfa57610376565b8063a0712d681161016f578063a7b820df11610149578063a7b820df14610d15578063a9059cbb14610d3f578063aa5af0fd14610d78578063ac784ddc14610d8d57610376565b8063a0712d6814610b7a578063a0b0d28914610ba4578063a6afed9514610d0057610376565b806391dd36c6116101ab57806391dd36c614610ade57806395d89b4114610b0857806395dd919314610b1d578063a03dce8d14610b5057610376565b8063852a12e314610a8a5780638d02d9a114610ab45780638f840ddd14610ac957610376565b80633b1d21a2116102ab57806361feacff116102495780636f307dc3116102235780636f307dc3146109fa57806370a0823114610a0f57806373acee9814610a425780637f1e06be14610a5757610376565b806361feacff146109bb5780636752e702146109d05780636c540baf146109e557610376565b806356e677281161028557806356e67728146108d05780635c60da1b1461094b5780635fe3b5671461097c578063601a0bf11461099157610376565b80633b1d21a21461081457806347bd37181461082957806350d85b731461083e57610376565b8063182df0f5116103185780632608f818116102f25780632608f818146106b2578063313ce567146106eb57806334154d4c146107165780633af9e669146107e157610376565b8063182df0f5146106525780631db789441461066757806323b872dd1461066f57610376565b80630f8855e8116103545780630f8855e81461048e578063173b9904146105f557806317bfdfbc1461060a57806318160ddd1461063d57610376565b806306fdde031461037b578063095ea7b3146104055780630e75270214610452575b600080fd5b34801561038757600080fd5b50610390611000565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103ca5781810151838201526020016103b2565b50505050905090810190601f1680156103f75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561041157600080fd5b5061043e6004803603604081101561042857600080fd5b506001600160a01b03813516906020013561108b565b604080519115158252519081900360200190f35b34801561045e57600080fd5b5061047c6004803603602081101561047557600080fd5b50356110f8565b60408051918252519081900360200190f35b34801561049a57600080fd5b506105f360048036036101008110156104b257600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b8111156104ec57600080fd5b8201836020820111156104fe57600080fd5b803590602001918460018302840111600160201b8311171561051f57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561057157600080fd5b82018360208201111561058357600080fd5b803590602001918460018302840111600160201b831117156105a457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505060ff833516935050506020810135906040013561110e565b005b34801561060157600080fd5b5061047c6113bc565b34801561061657600080fd5b5061047c6004803603602081101561062d57600080fd5b50356001600160a01b03166113c2565b34801561064957600080fd5b5061047c61143e565b34801561065e57600080fd5b5061047c611444565b6105f36114a7565b34801561067b57600080fd5b5061043e6004803603606081101561069257600080fd5b506001600160a01b038135811691602081013590911690604001356114a9565b3480156106be57600080fd5b5061047c600480360360408110156106d557600080fd5b506001600160a01b0381351690602001356114d7565b3480156106f757600080fd5b506107006114ed565b6040805160ff9092168252519081900360200190f35b34801561072257600080fd5b506105f36004803603604081101561073957600080fd5b810190602081018135600160201b81111561075357600080fd5b82018360208201111561076557600080fd5b803590602001918460018302840111600160201b8311171561078657600080fd5b919390929091602081019035600160201b8111156107a357600080fd5b8201836020820111156107b557600080fd5b803590602001918460018302840111600160201b831117156107d657600080fd5b5090925090506114f6565b3480156107ed57600080fd5b5061047c6004803603602081101561080457600080fd5b50356001600160a01b0316611562565b34801561082057600080fd5b5061047c611618565b34801561083557600080fd5b5061047c611627565b34801561084a57600080fd5b506105f36004803603606081101561086157600080fd5b6001600160a01b03823516916020810135151591810190606081016040820135600160201b81111561089257600080fd5b8201836020820111156108a457600080fd5b803590602001918460018302840111600160201b831117156108c557600080fd5b50909250905061162d565b3480156108dc57600080fd5b506105f3600480360360208110156108f357600080fd5b810190602081018135600160201b81111561090d57600080fd5b82018360208201111561091f57600080fd5b803590602001918460018302840111600160201b8311171561094057600080fd5b5090925090506116b6565b34801561095757600080fd5b506109606117c9565b604080516001600160a01b039092168252519081900360200190f35b34801561098857600080fd5b506109606117d8565b34801561099d57600080fd5b5061047c600480360360208110156109b457600080fd5b50356117e7565b3480156109c757600080fd5b5061047c611838565b3480156109dc57600080fd5b5061047c61183e565b3480156109f157600080fd5b5061047c611849565b348015610a0657600080fd5b5061096061184f565b348015610a1b57600080fd5b5061047c60048036036020811015610a3257600080fd5b50356001600160a01b031661185e565b348015610a4e57600080fd5b5061047c611879565b348015610a6357600080fd5b506105f360048036036020811015610a7a57600080fd5b50356001600160a01b03166118ec565b348015610a9657600080fd5b5061047c60048036036020811015610aad57600080fd5b5035611991565b348015610ac057600080fd5b5061047c61199c565b348015610ad557600080fd5b5061047c6119a2565b348015610aea57600080fd5b5061047c60048036036020811015610b0157600080fd5b50356119a8565b348015610b1457600080fd5b506103906119e5565b348015610b2957600080fd5b5061047c60048036036020811015610b4057600080fd5b50356001600160a01b0316611a40565b348015610b5c57600080fd5b5061047c60048036036020811015610b7357600080fd5b5035611aa4565b348015610b8657600080fd5b5061047c60048036036020811015610b9d57600080fd5b5035611ae1565b348015610bb057600080fd5b506105f3600480360360e0811015610bc757600080fd5b6001600160a01b0382358116926020810135821692604082013590921691810190608081016060820135600160201b811115610c0257600080fd5b820183602082011115610c1457600080fd5b803590602001918460018302840111600160201b83111715610c3557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115610c8757600080fd5b820183602082011115610c9957600080fd5b803590602001918460018302840111600160201b83111715610cba57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505082359350505060200135611aed565b348015610d0c57600080fd5b5061047c611c06565b348015610d2157600080fd5b5061047c60048036036020811015610d3857600080fd5b5035611dcb565b348015610d4b57600080fd5b5061043e60048036036040811015610d6257600080fd5b506001600160a01b038135169060200135611e08565b348015610d8457600080fd5b5061047c611e35565b348015610d9957600080fd5b5061043e611e3b565b348015610dae57600080fd5b5061047c611e40565b348015610dc357600080fd5b5061047c60048036036060811015610dda57600080fd5b506001600160a01b03813581169160208101359091169060400135611ef8565b348015610e0657600080fd5b5061047c611f1c565b348015610e1b57600080fd5b50610e4260048036036020811015610e3257600080fd5b50356001600160a01b0316611f90565b604080519485526020850193909352838301919091526060830152519081900360800190f35b348015610e7457600080fd5b5061047c60048036036020811015610e8b57600080fd5b5035612025565b348015610e9e57600080fd5b5061047c60048036036020811015610eb557600080fd5b5035612030565b348015610ec857600080fd5b5061047c61203b565b348015610edd57600080fd5b5061047c612041565b348015610ef257600080fd5b5061047c60048036036040811015610f0957600080fd5b506001600160a01b0381358116916020013516612047565b348015610f2d57600080fd5b5061047c60048036036020811015610f4457600080fd5b50356001600160a01b0316612072565b348015610f6057600080fd5b506109606120ac565b348015610f7557600080fd5b5061047c60048036036060811015610f8c57600080fd5b506001600160a01b038135811691602081013591604090910135166120bb565b348015610fb857600080fd5b5061047c6120d3565b348015610fcd57600080fd5b5061047c60048036036020811015610fe457600080fd5b5035612148565b348015610ff757600080fd5b5061043e612185565b6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156110835780601f1061105857610100808354040283529160200191611083565b820191906000526020600020905b81548152906001019060200180831161106657829003601f168201915b505050505081565b3360008181526013602090815260408083206001600160a01b03871680855290835281842086905581518681529151939493909284927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a360019150505b92915050565b6000806111048361218a565b509150505b919050565b3373a731585ab05fc9f83555cf9bff8f58ee94e18f85146111605760405162461bcd60e51b8152600401808060200182810382526029815260200180615d6d6029913960400191505060405180910390fd5b600b541580156111705750600c54155b6111ab5760405162461bcd60e51b8152600401808060200182810382526023815260200180615c5a6023913960400191505060405180910390fd5b6007869055856111ec5760405162461bcd60e51b8152600401808060200182810382526030815260200180615c7d6030913960400191505060405180910390fd5b60006111f7896121ed565b9050801561124c576040805162461bcd60e51b815260206004820152601a60248201527f73657474696e6720636f6d7074726f6c6c6572206661696c6564000000000000604482015290519081900360640190fd5b611254612320565b600b55670de0b6b3a7640000600c5561126c88612324565b905080156112ab5760405162461bcd60e51b8152600401808060200182810382526022815260200180615cda6022913960400191505060405180910390fd5b85516112be906002906020890190615a4a565b5084516112d2906003906020880190615a4a565b506004805460ff191660ff86161790556112eb8361262a565b90508015611340576040805162461bcd60e51b815260206004820152601d60248201527f73657474696e67207265736572766520666163746f72206661696c6564000000604482015290519081900360640190fd5b611349826126e3565b9050801561139e576040805162461bcd60e51b815260206004820152601860248201527f73657474696e672061646d696e20666565206661696c65640000000000000000604482015290519081900360640190fd5b50506001805460ff60b01b1916600160b01b17905550505050505050565b600a5481565b6000806113ce81612808565b60006113d8611c06565b14611423576040805162461bcd60e51b81526020600482015260166024820152751858d8dc9d59481a5b9d195c995cdd0819985a5b195960521b604482015290519081900360640190fd5b61142c83611a40565b91505b611438816128d1565b50919050565b60115481565b600080600061145161293c565b9092509050600082600381111561146457fe5b146114a05760405162461bcd60e51b8152600401808060200182810382526035815260200180615e1a6035913960400191505060405180910390fd5b9150505b90565b565b6000806114b581612808565b60006114c3338787876129fc565b1491506114cf816128d1565b509392505050565b6000806114e48484612c88565b50949350505050565b60045460ff1681565b6114fe612ced565b611542576040805162461bcd60e51b815260206004820152601060248201526f31b0b63632b9103737ba1030b236b4b760811b604482015290519081900360640190fd5b61154e60028585615ac4565b5061155b60038383615ac4565b5050505050565b600061156c615b32565b604051806020016040528061157f611f1c565b90526001600160a01b0384166000908152601260205260408120549192509081906115ab908490612e68565b909250905060008260038111156115be57fe5b14611610576040805162461bcd60e51b815260206004820152601f60248201527f62616c616e636520636f756c64206e6f742062652063616c63756c6174656400604482015290519081900360640190fd5b949350505050565b6000611622612ebc565b905090565b600d5481565b611635612ced565b61166f576040805162461bcd60e51b815260206004820152600660248201526510b0b236b4b760d11b604482015290519081900360640190fd5b6116b0848484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612f0a92505050565b50505050565b73afd2aade64e6ea690173f6de59fc09f5c9190d7473cae4210e6676727ea4e0fd9ba5dfb95831356a16333014806116f157506116f1612ced565b61172a576040805162461bcd60e51b815260206004820152600560248201526410b9b2b63360d91b604482015290519081900360640190fd5b6000611734611c06565b14611770576040805162461bcd60e51b81526020600482015260076024820152662161636372756560c81b604482015290519081900360640190fd5b6001600160a01b0380831660008181526012602090815260408083208054908490559486168084529281902085905580518581529051929392600080516020615d96833981519152929181900390910190a35050505050565b6000546001600160a01b031681565b6005546001600160a01b031681565b6000806117f381612808565b60006117fd611c06565b905080156118235761181b81601181111561181457fe5b603b613126565b92505061142f565b61182c8461318c565b925050611438816128d1565b600f5481565b666379da05b6000081565b600b5481565b6015546001600160a01b031681565b6001600160a01b031660009081526012602052604090205490565b60008061188581612808565b600061188f611c06565b146118da576040805162461bcd60e51b81526020600482015260166024820152751858d8dc9d59481a5b9d195c995cdd0819985a5b195960521b604482015290519081900360640190fd5b600d5491506118e8816128d1565b5090565b6118f4612ced565b61192f5760405162461bcd60e51b815260040180806020018281038252602d815260200180615cad602d913960400191505060405180910390fd5b601554604080516317066a5760e21b81526001600160a01b03848116600483015291519190921691635c19a95c91602480830192600092919082900301818387803b15801561197d57600080fd5b505af115801561155b573d6000803e3d6000fd5b60006110f282613258565b60085481565b600e5481565b6000806119b481612808565b60006119be611c06565b905080156119dc5761181b8160118111156119d557fe5b6052613126565b61182c846126e3565b6003805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156110835780601f1061105857610100808354040283529160200191611083565b6000806000611a4e84613298565b90925090506000826003811115611a6157fe5b14611a9d5760405162461bcd60e51b8152600401808060200182810382526037815260200180615cfc6037913960400191505060405180910390fd5b9392505050565b600080611ab081612808565b6000611aba611c06565b90508015611ad85761181b816011811115611ad157fe5b6033613126565b61182c8461334c565b600080611104836133cd565b60006702c68af0bb14000090506000886001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015611b3557600080fd5b505afa158015611b49573d6000803e3d6000fd5b505050506040513d6020811015611b5f57600080fd5b50519050611b738888848989868a8a61110e565b601580546001600160a01b0319166001600160a01b038b81169190911791829055604080516318160ddd60e01b8152905192909116916318160ddd91600480820192602092909190829003018186803b158015611bcf57600080fd5b505afa158015611be3573d6000803e3d6000fd5b505050506040513d6020811015611bf957600080fd5b5050505050505050505050565b600080611c11612320565b905080600b541415611c275760009150506114a4565b6000611c31612ebc565b90506000600660009054906101000a90046001600160a01b03166001600160a01b03166315f2405383600d54611c76600e54611c71600f5460105461340d565b61340d565b6040518463ffffffff1660e01b815260040180848152602001838152602001828152602001935050505060206040518083038186803b158015611cb857600080fd5b505afa158015611ccc573d6000803e3d6000fd5b505050506040513d6020811015611ce257600080fd5b5051905065048c27395000811115611d41576040805162461bcd60e51b815260206004820152601c60248201527f626f72726f772072617465206973206162737572646c79206869676800000000604482015290519081900360640190fd5b600080611d5085600b54613443565b90925090506000826003811115611d6357fe5b14611db5576040805162461bcd60e51b815260206004820152601f60248201527f636f756c64206e6f742063616c63756c61746520626c6f636b2064656c746100604482015290519081900360640190fd5b611dc185858584613466565b9550505050505090565b600080611dd781612808565b6000611de1611c06565b90508015611dff5761181b816011811115611df857fe5b6037613126565b61182c8461367e565b600080611e1481612808565b6000611e22333387876129fc565b149150611e2e816128d1565b5092915050565b600c5481565b600081565b6006546000906001600160a01b031663b8168816611e5c612ebc565b600d54611e73600e54611c71600f5460105461340d565b600854600954600a5401016040518563ffffffff1660e01b81526004018085815260200184815260200183815260200182815260200194505050505060206040518083038186803b158015611ec757600080fd5b505afa158015611edb573d6000803e3d6000fd5b505050506040513d6020811015611ef157600080fd5b5051905090565b60006001611f0581612808565b611f1133868686613766565b91506114cf816128d1565b600080611f2881612808565b6000611f32611c06565b14611f7d576040805162461bcd60e51b81526020600482015260166024820152751858d8dc9d59481a5b9d195c995cdd0819985a5b195960521b604482015290519081900360640190fd5b611f85611444565b91506118e8816128d1565b6001600160a01b038116600090815260126020526040812054819081908190818080611fbb89613298565b935090506000816003811115611fcd57fe5b14611feb5760095b97506000965086955085945061201e9350505050565b611ff361293c565b92509050600081600381111561200557fe5b14612011576009611fd5565b5060009650919450925090505b9193509193565b60006110f282613b45565b60006110f282613b83565b60095481565b60105481565b6001600160a01b03918216600090815260136020908152604080832093909416825291909152205490565b60008061207d611c06565b905080156120a35761209b81601181111561209457fe5b604b613126565b915050611109565b611a9d83612324565b6006546001600160a01b031681565b6000806120c9858585613bbc565b5095945050505050565b6006546000906001600160a01b03166315f240536120ef612ebc565b600d54612106600e54611c71600f5460105461340d565b6040518463ffffffff1660e01b815260040180848152602001838152602001828152602001935050505060206040518083038186803b158015611ec757600080fd5b60008061215481612808565b600061215e611c06565b9050801561217c5761181b81601181111561217557fe5b6059613126565b61182c8461262a565b600181565b600080600061219881612808565b60006121a2611c06565b905080156121cd576121c08160118111156121b957fe5b6041613126565b9350600092506121de9050565b6121d8333387613ca8565b93509350505b6121e7816128d1565b50915091565b600080600560009054906101000a90046001600160a01b03169050826001600160a01b0316627e3dd26040518163ffffffff1660e01b815260040160206040518083038186803b15801561224057600080fd5b505afa158015612254573d6000803e3d6000fd5b505050506040513d602081101561226a57600080fd5b50516122bd576040805162461bcd60e51b815260206004820152601c60248201527f6d61726b6572206d6574686f642072657475726e65642066616c736500000000604482015290519081900360640190fd5b600580546001600160a01b0319166001600160a01b03858116918217909255604080519284168352602083019190915280517f7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d9281900390910190a16000611a9d565b4390565b60008061232f612ced565b61233f5761209b6001604d613126565b612347612320565b600b541461235b5761209b600a604c613126565b600660009054906101000a90046001600160a01b03169050826001600160a01b0316632191f92a6040518163ffffffff1660e01b815260040160206040518083038186803b1580156123ac57600080fd5b505afa1580156123c0573d6000803e3d6000fd5b505050506040513d60208110156123d657600080fd5b5051612429576040805162461bcd60e51b815260206004820152601c60248201527f6d61726b6572206d6574686f642072657475726e65642066616c736500000000604482015290519081900360640190fd5b600680546001600160a01b0319166001600160a01b03858116918217909255604080519284168352602083019190915280517fedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f9269281900390910190a16001600160a01b0381161561255b5760408051600481526024810182526020810180516001600160e01b0316636cc1140b60e11b178152915181516001600160a01b0385169382918083835b602083106124f05780518252601f1990920191602091820191016124d1565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612552576040519150601f19603f3d011682016040523d82523d6000602084013e612557565b606091505b5050505b60408051600481526024810182526020810180516001600160e01b031663742a137b60e11b178152915181516001600160a01b0387169382918083835b602083106125b75780518252601f199092019160209182019101612598565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612619576040519150601f19603f3d011682016040523d82523d6000602084013e61261e565b606091505b5060009150611a9d9050565b6000612634612ced565b61264b576126446001605a613126565b9050611109565b612653612320565b600b541461266757612644600a605b613126565b670de0b6b3a764000061268761267f8460085461340d565b60095461340d565b1115612699576126446002605c613126565b600a805490839055604080518281526020810185905281517faaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460929181900390910190a16000611a9d565b60006126ed612320565b600b541461270157612644600a6054613126565b6000198214156127115760085491505b600061271b613ff8565b9050670de0b6b3a764000061273b612735600a548661340d565b8361340d565b111561274d5761209b60026055613126565b82600854146127b35761275e612ced565b61276e5761209b60016053613126565b6008805490849055604080518281526020810186905281517fcdd0b588250e1398549f79cfdb8217c186688822905d6715b0834ea1c865594a929181900390910190a1505b8060095414612801576009805490829055604080518281526020810184905281517f92eef861b6533b7d3417f39c2ad7b460eed4e88a32fa3604f30e718b7602e7dc929181900390910190a1505b6000611a9d565b600154600160b01b900460ff16612853576040805162461bcd60e51b815260206004820152600a6024820152691c994b595b9d195c995960b21b604482015290519081900360640190fd5b806128c157600560009054906101000a90046001600160a01b03166001600160a01b031663c90c20b16040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156128a857600080fd5b505af11580156128bc573d6000803e3d6000fd5b505050505b506001805460ff60b01b19169055565b6001805460ff60b01b1916600160b01b1790558061293957600560009054906101000a90046001600160a01b03166001600160a01b031663632e51426040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561197d57600080fd5b50565b601154600090819080612957575050600754600091506129f8565b6000612961612ebc565b9050600061296d615b32565b600061298f84600d5461298a600e54611c71600f5460105461340d565b614047565b9350905060008160038111156129a157fe5b146129b6579550600094506129f89350505050565b6129c08386614093565b9250905060008160038111156129d257fe5b146129e7579550600094506129f89350505050565b50516000955093506129f892505050565b9091565b600554604080516317b9b84b60e31b81523060048201526001600160a01b03868116602483015285811660448301526064820185905291516000938493169163bdcdc25891608480830192602092919082900301818787803b158015612a6157600080fd5b505af1158015612a75573d6000803e3d6000fd5b505050506040513d6020811015612a8b57600080fd5b505190508015612aaa57612aa26003605d83614143565b915050611610565b836001600160a01b0316856001600160a01b03161415612ad057612aa26002605e613126565b60006001600160a01b038781169087161415612aef5750600019612b17565b506001600160a01b038086166000908152601360209081526040808320938a16835292905220545b600080600080612b278589613443565b90945092506000846003811115612b3a57fe5b14612b5857612b4b6009605e613126565b9650505050505050611610565b6001600160a01b038a16600090815260126020526040902054612b7b9089613443565b90945091506000846003811115612b8e57fe5b14612b9f57612b4b6009605f613126565b6001600160a01b038916600090815260126020526040902054612bc290896141cc565b90945090506000846003811115612bd557fe5b14612be657612b4b60096060613126565b6001600160a01b03808b16600090815260126020526040808220859055918b168152208190556000198514612c3e576001600160a01b03808b166000908152601360209081526040808320938f168352929052208390555b886001600160a01b03168a6001600160a01b0316600080516020615d968339815191528a6040518082815260200191505060405180910390a35060009a9950505050505050505050565b6000806000612c9681612808565b6000612ca0611c06565b90508015612ccb57612cbe816011811115612cb757fe5b6040613126565b935060009250612cdc9050565b612cd6338787613ca8565b93509350505b612ce5816128d1565b509250929050565b600554604080516303e1469160e61b815290516000926001600160a01b031691829163f851a44091600480820192602092909190829003018186803b158015612d3557600080fd5b505afa158015612d49573d6000803e3d6000fd5b505050506040513d6020811015612d5f57600080fd5b50516001600160a01b031633148015612dd95750806001600160a01b0316630a755ec26040518163ffffffff1660e01b815260040160206040518083038186803b158015612dac57600080fd5b505afa158015612dc0573d6000803e3d6000fd5b505050506040513d6020811015612dd657600080fd5b50515b806114a057503373a731585ab05fc9f83555cf9bff8f58ee94e18f851480156114a05750806001600160a01b0316632f1069ba6040518163ffffffff1660e01b815260040160206040518083038186803b158015612e3657600080fd5b505afa158015612e4a573d6000803e3d6000fd5b505050506040513d6020811015612e6057600080fd5b505191505090565b6000806000612e75615b32565b612e7f86866141f2565b90925090506000826003811115612e9257fe5b14612ea35750915060009050612eb5565b6000612eae8261425a565b9350935050505b9250929050565b601554604080516370a0823160e01b815230600482015290516000926001600160a01b03169182916370a0823191602480820192602092909190829003018186803b158015612e3657600080fd5b600054604080516338e6a07360e11b81526001600160a01b039283166004820152918516602483015283151560448301525173a731585ab05fc9f83555cf9bff8f58ee94e18f85916371cd40e6916064808301926020929190829003018186803b158015612f7757600080fd5b505afa158015612f8b573d6000803e3d6000fd5b505050506040513d6020811015612fa157600080fd5b5051612fdc576040805162461bcd60e51b8152602060048201526005602482015264085a5b5c1b60da1b604482015290519081900360640190fd5b8115612fea57612fea614269565b600080546001600160a01b038581166001600160a01b0319831617835560405160206024820181815286516044840152865193909416946130d794309488949193849360649093019290860191908190849084905b8381101561305757818101518382015260200161303f565b50505050905090810190601f1680156130845780820380516001836020036101000a031916815260200191505b5060408051601f19818403018152918152602080830180516001600160e01b0316630adccee560e31b17905281518083019092526007825266216265636f6d6560c81b90820152909350915061426e9050565b50600054604080516001600160a01b038085168252909216602083015280517fd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a9281900390910190a150505050565b60007f45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa083601181111561315557fe5b83606381111561316157fe5b604080519283526020830191909152600082820152519081900360600190a1826011811115611a9d57fe5b600080613197612ced565b6131a75761209b6001603c613126565b6131af612320565b600b54146131c35761209b600a603e613126565b826131cc612ebc565b10156131de5761209b600e603d613126565b600e548311156131f45761209b6002603f613126565b613200600e54846143bd565b600e819055905061321133846143f7565b604080513381526020810185905280820183905290517f3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e9181900360600190a16000611a9d565b60008061326481612808565b600061326e611c06565b9050801561328c5761181b81601181111561328557fe5b602a613126565b61182c3360008661447c565b6001600160a01b0381166000908152601460205260408120805482918291829182916132cf57506000945084935061334792505050565b6132df8160000154600c5461494c565b909450925060008460038111156132f257fe5b14613307575091935060009250613347915050565b61331583826001015461498b565b9094509150600084600381111561332857fe5b1461333d575091935060009250613347915050565b5060009450925050505b915091565b600080613357612320565b600b541461336b5761209b600a6035613126565b82613374612ebc565b10156133865761209b600e6034613126565b60105483111561339c5761209b60026036613126565b6133a8601054846143bd565b6010819055905061280173a731585ab05fc9f83555cf9bff8f58ee94e18f85846143f7565b60008060006133db81612808565b60006133e5611c06565b90508015613403576121c08160118111156133fc57fe5b6020613126565b6121d833866149b6565b6000611a9d8383604051806040016040528060118152602001706164646974696f6e206f766572666c6f7760781b815250614d32565b60008083831161345a575060009050818303612eb5565b50600390506000612eb5565b6000613470615b32565b61348860405180602001604052808681525084614d87565b9050600061349882600d54614db1565b905060006134a882600d5461340d565b905060006134c96040518060200160405280600a5481525084600e54614dd0565b905060006134ea604051806020016040528060095481525085601054614dd0565b9050600061350b604051806020016040528060085481525086600f54614dd0565b9050600061351e87600c54600c54614dd0565b600b8d9055600c819055600d869055600e8590556010849055600f839055604080518d8152602081018990528082018390526060810188905290519192507f4dec04e750ca11537cabcd8a9eab06494de08da3735bc8871cd41250e190bc04919081900360800190a16006546040805160248082018e905282518083039091018152604490910182526020810180516001600160e01b0316635efd023360e11b178152915181516001600160a01b0390941693919290918291908083835b602083106135fb5780518252601f1990920191602091820191016135dc565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461365d576040519150601f19603f3d011682016040523d82523d6000602084013e613662565b606091505b506000915061366e9050565b9c9b505050505050505050505050565b600080613689612320565b600b541461369d5761209b600a6039613126565b826136a6612ebc565b10156136b85761209b600e6038613126565b600f548311156136ce5761209b6002603a613126565b6136da600f54846143bd565b905080600f81905550612801600560009054906101000a90046001600160a01b03166001600160a01b031663f851a4406040518163ffffffff1660e01b815260040160206040518083038186803b15801561373457600080fd5b505afa158015613748573d6000803e3d6000fd5b505050506040513d602081101561375e57600080fd5b5051846143f7565b6005546040805163d02f735160e01b81523060048201526001600160a01b038781166024830152868116604483015285811660648301526084820185905291516000938493169163d02f73519160a480830192602092919082900301818787803b1580156137d357600080fd5b505af11580156137e7573d6000803e3d6000fd5b505050506040513d60208110156137fd57600080fd5b50519050801561381457612aa26003601d83614143565b846001600160a01b0316846001600160a01b0316141561383a57612aa26006601e613126565b613842615b45565b6001600160a01b0385166000908152601260205260409020546138659085613443565b602083018190528282600381111561387957fe5b600381111561388457fe5b905250600090508151600381111561389857fe5b146138c2576138b96009601c836000015160038111156138b457fe5b614143565b92505050611610565b6138e1846040518060200160405280666379da05b60000815250614df8565b608082018190526138f39085906143bd565b606082015261390061293c565b60c083018190528282600381111561391457fe5b600381111561391f57fe5b905250600090508151600381111561393357fe5b14613985576040805162461bcd60e51b815260206004820152601860248201527f65786368616e67652072617465206d617468206572726f720000000000000000604482015290519081900360640190fd5b6139a560405180602001604052808360c001518152508260800151614db1565b60a08201819052600e546139b89161340d565b60e082015260115460808201516139cf91906143bd565b6101008201526001600160a01b03861660009081526012602052604090205460608201516139fd91906141cc565b6040830181905282826003811115613a1157fe5b6003811115613a1c57fe5b9052506000905081516003811115613a3057fe5b14613a4c576138b96009601b836000015160038111156138b457fe5b60e0810151600e556101008101516011556020808201516001600160a01b0380881660008181526012855260408082209490945583860151928b16808252908490209290925560608501518351908152925191939092600080516020615d96833981519152929081900390910190a36080810151604080519182525130916001600160a01b03881691600080516020615d968339815191529181900360200190a360a081015160e082015160408051308152602081019390935282810191909152517fa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc59181900360600190a16000979650505050505050565b600080613b5181612808565b6000613b5b611c06565b90508015613b795761181b816011811115613b7257fe5b600a613126565b61182c3385614e20565b600080613b8f81612808565b6000613b99611c06565b90508015613bb05761181b81601181111561328557fe5b61182c3385600061447c565b6000806000613bca81612808565b6000613bd4611c06565b90508015613bff57613bf2816011811115613beb57fe5b6011613126565b935060009250613c969050565b846001600160a01b031663a6afed956040518163ffffffff1660e01b8152600401602060405180830381600087803b158015613c3a57600080fd5b505af1158015613c4e573d6000803e3d6000fd5b505050506040513d6020811015613c6457600080fd5b505190508015613c8457613bf2816011811115613c7d57fe5b6012613126565b613c9033888888615166565b93509350505b613c9f816128d1565b50935093915050565b60055460408051631200453160e11b81523060048201526001600160a01b0386811660248301528581166044830152606482018590529151600093849384939116916324008a629160848082019260209290919082900301818787803b158015613d1157600080fd5b505af1158015613d25573d6000803e3d6000fd5b505050506040513d6020811015613d3b57600080fd5b505190508015613d5f57613d526003604383614143565b925060009150613ff09050565b613d67612320565b600b5414613d7b57613d52600a6044613126565b613d83615b92565b6001600160a01b0386166000908152601460205260409020600101546060820152613dad86613298565b6080830181905260208301826003811115613dc457fe5b6003811115613dcf57fe5b9052506000905081602001516003811115613de657fe5b14613e1057613e0260096042836020015160038111156138b457fe5b935060009250613ff0915050565b600019851415613e295760808101516040820152613e31565b604081018590525b613e3f878260400151615658565b60e082018190526080820151613e5491613443565b60a0830181905260208301826003811115613e6b57fe5b6003811115613e7657fe5b9052506000905081602001516003811115613e8d57fe5b14613ec95760405162461bcd60e51b815260040180806020018281038252603a815260200180615d33603a913960400191505060405180910390fd5b613ed9600d548260e00151613443565b60c0830181905260208301826003811115613ef057fe5b6003811115613efb57fe5b9052506000905081602001516003811115613f1257fe5b14613f4e5760405162461bcd60e51b8152600401808060200182810382526031815260200180615db66031913960400191505060405180910390fd5b60a080820180516001600160a01b03808a16600081815260146020908152604091829020948555600c5460019095019490945560c0870151600d81905560e088015195518251948f16855294840192909252828101949094526060820192909252608081019190915290517f1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1929181900390910190a160e00151600093509150505b935093915050565b600073a731585ab05fc9f83555cf9bff8f58ee94e18f856001600160a01b031663dd86fea16040518163ffffffff1660e01b815260040160206040518083038186803b158015611ec757600080fd5b60008060008061405787876141cc565b9092509050600082600381111561406a57fe5b1461407b5750915060009050613ff0565b6140858186613443565b935093505050935093915050565b600061409d615b32565b6000806140b286670de0b6b3a764000061494c565b909250905060008260038111156140c557fe5b146140e457506040805160208101909152600081529092509050612eb5565b6000806140f1838861498b565b9092509050600082600381111561410457fe5b1461412657506040805160208101909152600081529094509250612eb5915050565b604080516020810190915290815260009890975095505050505050565b60007f45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa084601181111561417257fe5b84606381111561417e57fe5b604080519283526020830191909152818101859052519081900360600190a160038460118111156141ab57fe5b146141c1578360118111156141bc57fe5b611610565b506103e80192915050565b6000808383018481106141e457600092509050612eb5565b506002915060009050612eb5565b60006141fc615b32565b60008061420d86600001518661494c565b9092509050600082600381111561422057fe5b1461423f57506040805160208101909152600081529092509050612eb5565b60408051602081019091529081526000969095509350505050565b51670de0b6b3a7640000900490565b6114a7565b606060006060856001600160a01b0316856040518082805190602001908083835b602083106142ae5780518252601f19909201916020918201910161428f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614310576040519150601f19603f3d011682016040523d82523d6000602084013e614315565b606091505b5091509150816143b45780511561432f5780518082602001fd5b8360405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614379578181015183820152602001614361565b50505050905090810190601f1680156143a65780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b95945050505050565b6000611a9d8383604051806040016040528060158152602001747375627472616374696f6e20756e646572666c6f7760581b815250615835565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091018252602081810180516001600160e01b031663a9059cbb60e01b1790528251808401909352601983527f544f4b454e5f5452414e534645525f4f55545f4641494c454400000000000000908301526144789161588f565b5050565b6000821580614489575081155b6144c45760405162461bcd60e51b8152600401808060200182810382526034815260200180615e4f6034913960400191505060405180910390fd5b6144cc615bd8565b6144d461293c565b60408301819052602083018260038111156144eb57fe5b60038111156144f657fe5b905250600090508160200151600381111561450d57fe5b14614531576145296009602e836020015160038111156138b457fe5b915050611a9d565b83156145b25760608101849052604080516020810182529082015181526145589085612e68565b608083018190526020830182600381111561456f57fe5b600381111561457a57fe5b905250600090508160200151600381111561459157fe5b146145ad576145296009602c836020015160038111156138b457fe5b61462b565b6145ce836040518060200160405280846040015181525061591c565b60608301819052602083018260038111156145e557fe5b60038111156145f057fe5b905250600090508160200151600381111561460757fe5b14614623576145296009602d836020015160038111156138b457fe5b608081018390525b60055460608201516040805163eabe7d9160e01b81523060048201526001600160a01b03898116602483015260448201939093529051600093929092169163eabe7d919160648082019260209290919082900301818787803b15801561469057600080fd5b505af11580156146a4573d6000803e3d6000fd5b505050506040513d60208110156146ba57600080fd5b5051905080156146da576146d16003602b83614143565b92505050611a9d565b6146e2612320565b600b54146146f6576146d1600a602f613126565b6147066011548360600151613443565b60a084018190526020840182600381111561471d57fe5b600381111561472857fe5b905250600090508260200151600381111561473f57fe5b1461475b576146d160096031846020015160038111156138b457fe5b6001600160a01b03861660009081526012602052604090205460608301516147839190613443565b60c084018190526020840182600381111561479a57fe5b60038111156147a557fe5b90525060009050826020015160038111156147bc57fe5b146147d8576146d160096030846020015160038111156138b457fe5b81608001516147e5612ebc565b10156147f7576146d1600e6032613126565b60a082015160115560c08201516001600160a01b038716600090815260126020526040902055608082015161482d9087906143f7565b6060820151604080519182525130916001600160a01b03891691600080516020615d968339815191529181900360200190a36080820151606080840151604080516001600160a01b038b168152602081019490945283810191909152517fe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a9299281900390910190a160055460808301516060840151604080516351dff98960e01b81523060048201526001600160a01b038b81166024830152604482019490945260648101929092525191909216916351dff98991608480830192600092919082900301818387803b15801561492157600080fd5b505af1158015614935573d6000803e3d6000fd5b5060009250614942915050565b9695505050505050565b6000808361495f57506000905080612eb5565b8383028385828161496c57fe5b041461498057506002915060009050612eb5565b600092509050612eb5565b6000808261499f5750600190506000612eb5565b60008385816149aa57fe5b04915091509250929050565b60055460408051634ef4c3e160e01b81523060048201526001600160a01b03858116602483015260448201859052915160009384938493911691634ef4c3e19160648082019260209290919082900301818787803b158015614a1757600080fd5b505af1158015614a2b573d6000803e3d6000fd5b505050506040513d6020811015614a4157600080fd5b505190508015614a6557614a586003602183614143565b925060009150612eb59050565b614a6d612320565b600b5414614a8157614a58600a6024613126565b614a89615bd8565b614a9161293c565b6040830181905260208301826003811115614aa857fe5b6003811115614ab357fe5b9052506000905081602001516003811115614aca57fe5b14614af457614ae660096023836020015160038111156138b457fe5b935060009250612eb5915050565b614afe8686615658565b60c0820181905260408051602081018252908301518152614b1f919061591c565b6060830181905260208301826003811115614b3657fe5b6003811115614b4157fe5b9052506000905081602001516003811115614b5857fe5b14614baa576040805162461bcd60e51b815260206004820181905260248201527f4d494e545f45584348414e47455f43414c43554c4154494f4e5f4641494c4544604482015290519081900360640190fd5b614bba601154826060015161340d565b60808201526001600160a01b0386166000908152601260205260409020546060820151614be7919061340d565b60a0820181905260808201516011556001600160a01b0387166000818152601260209081526040918290209390935560c084015160608086015183519485529484019190915282820193909352517f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f929181900390910190a1606081015160408051918252516001600160a01b038816913091600080516020615d968339815191529181900360200190a360055460c08201516060830151604080516341c728b960e01b81523060048201526001600160a01b038b81166024830152604482019490945260648101929092525191909216916341c728b991608480830192600092919082900301818387803b158015614cff57600080fd5b505af1158015614d13573d6000803e3d6000fd5b5060009250614d20915050565b8160c001519350935050509250929050565b600083830182858210156114e45760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315614379578181015183820152602001614361565b614d8f615b32565b6040518060200160405280614da8856000015185615933565b90529392505050565b6000614dbb615b32565b614dc58484614d87565b90506116108161425a565b6000614dda615b32565b614de48585614d87565b90506143b4614df28261425a565b8461340d565b6000670de0b6b3a7640000614e11848460000151615933565b81614e1857fe5b049392505050565b6005546040805163368f515360e21b81523060048201526001600160a01b0385811660248301526044820185905291516000938493169163da3d454c91606480830192602092919082900301818787803b158015614e7d57600080fd5b505af1158015614e91573d6000803e3d6000fd5b505050506040513d6020811015614ea757600080fd5b505190508015614ec657614ebe6003601083614143565b9150506110f2565b614ece612320565b600b5414614ee257614ebe600a600c613126565b6000614eec612ebc565b905083811015614f0b57614f02600e600b613126565b925050506110f2565b614f13615c16565b614f1c86613298565b6020830181905282826003811115614f3057fe5b6003811115614f3b57fe5b9052506000905081516003811115614f4f57fe5b14614f7457614f6a600980836000015160038111156138b457fe5b93505050506110f2565b614f828160200151866141cc565b6040830181905282826003811115614f9657fe5b6003811115614fa157fe5b9052506000905081516003811115614fb557fe5b14614fd157614f6a6009600e836000015160038111156138b457fe5b6005546040808301518151631de6c8a560e21b8152306004820152602481019190915290516001600160a01b039092169163779b2294916044808201926020929091908290030181600087803b15801561502a57600080fd5b505af115801561503e573d6000803e3d6000fd5b505050506040513d602081101561505457600080fd5b50519250821561506b57614f6a6003601085614143565b615077600d54866141cc565b606083018190528282600381111561508b57fe5b600381111561509657fe5b90525060009050815160038111156150aa57fe5b146150c657614f6a6009600d836000015160038111156138b457fe5b6040808201516001600160a01b0388166000908152601460205291909120908155600c546001909101556060810151600d5561510286866143f7565b60408082015160608084015183516001600160a01b038b168152602081018a9052808501939093529082015290517f13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab809181900360800190a160009695505050505050565b60055460408051632fe3f38f60e11b81523060048201526001600160a01b0384811660248301528781166044830152868116606483015260848201869052915160009384938493911691635fc7e71e9160a48082019260209290919082900301818787803b1580156151d757600080fd5b505af11580156151eb573d6000803e3d6000fd5b505050506040513d602081101561520157600080fd5b505190508015615225576152186003601483614143565b92506000915061564f9050565b61522d612320565b600b541461524157615218600a6018613126565b615249612320565b846001600160a01b0316636c540baf6040518163ffffffff1660e01b815260040160206040518083038186803b15801561528257600080fd5b505afa158015615296573d6000803e3d6000fd5b505050506040513d60208110156152ac57600080fd5b5051146152bf57615218600a6013613126565b866001600160a01b0316866001600160a01b031614156152e55761521860066019613126565b846152f65761521860076017613126565b60001985141561530c5761521860076016613126565b60008061531a898989613ca8565b9092509050811561534a5761533b82601181111561533457fe5b601a613126565b94506000935061564f92505050565b6005546040805163c488847b60e01b81523060048201526001600160a01b038981166024830152604482018590528251600094859492169263c488847b926064808301939192829003018186803b1580156153a457600080fd5b505afa1580156153b8573d6000803e3d6000fd5b505050506040513d60408110156153ce57600080fd5b508051602090910151909250905081156154195760405162461bcd60e51b8152600401808060200182810382526033815260200180615de76033913960400191505060405180910390fd5b80886001600160a01b03166370a082318c6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561547057600080fd5b505afa158015615484573d6000803e3d6000fd5b505050506040513d602081101561549a57600080fd5b505110156154ef576040805162461bcd60e51b815260206004820152601860248201527f4c49515549444154455f5345495a455f544f4f5f4d5543480000000000000000604482015290519081900360640190fd5b60006001600160a01b0389163014156155155761550e308d8d85613766565b905061559f565b6040805163b2a02ff160e01b81526001600160a01b038e811660048301528d81166024830152604482018590529151918b169163b2a02ff1916064808201926020929091908290030181600087803b15801561557057600080fd5b505af1158015615584573d6000803e3d6000fd5b505050506040513d602081101561559a57600080fd5b505190505b80156155e9576040805162461bcd60e51b81526020600482015260146024820152731d1bdad95b881cd95a5e9d5c994819985a5b195960621b604482015290519081900360640190fd5b604080516001600160a01b03808f168252808e1660208301528183018790528b1660608201526080810184905290517f298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb529181900360a00190a16000975092955050505050505b94509492505050565b601554604080516370a0823160e01b8152306004820152905160009283926001600160a01b03909116916370a0823191602480820192602092909190829003018186803b1580156156a857600080fd5b505afa1580156156bc573d6000803e3d6000fd5b505050506040513d60208110156156d257600080fd5b5051604080516001600160a01b038716602482015230604482015260648082018790528251808303909101815260849091018252602081810180516001600160e01b03166323b872dd60e01b1790528251808401909352601883527f544f4b454e5f5452414e534645525f494e5f4641494c454400000000000000009083015291925061575f919061588f565b601554604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156157aa57600080fd5b505afa1580156157be573d6000803e3d6000fd5b505050506040513d60208110156157d457600080fd5b505190508181101561582d576040805162461bcd60e51b815260206004820152601a60248201527f544f4b454e5f5452414e534645525f494e5f4f564552464c4f57000000000000604482015290519081900360640190fd5b039392505050565b600081848411156158875760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315614379578181015183820152602001614361565b505050900390565b6015546060906158a9906001600160a01b0316848461426e565b805190915015615917578080602001905160208110156158c857600080fd5b505182906116b05760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315614379578181015183820152602001614361565b505050565b6000806000615929615b32565b612e7f8686615975565b6000611a9d83836040518060400160405280601781526020017f6d756c7469706c69636174696f6e206f766572666c6f770000000000000000008152506159d4565b600061597f615b32565b600080615994670de0b6b3a76400008761494c565b909250905060008260038111156159a757fe5b146159c657506040805160208101909152600081529092509050612eb5565b612eae818660000151614093565b60008315806159e1575082155b156159ee57506000611a9d565b838302838582816159fb57fe5b041483906114e45760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315614379578181015183820152602001614361565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10615a8b57805160ff1916838001178555615ab8565b82800160010185558215615ab8579182015b82811115615ab8578251825591602001919060010190615a9d565b506118e8929150615c3f565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10615b055782800160ff19823516178555615ab8565b82800160010185558215615ab8579182015b82811115615ab8578235825591602001919060010190615b17565b6040518060200160405280600081525090565b604080516101208101909152806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040805161010081019091528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040805160e0810190915280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b604080516080810190915280600081526020016000815260200160008152602001600081525090565b6114a491905b808211156118e85760008155600101615c4556fe6d61726b6574206d6179206f6e6c7920626520696e697469616c697a6564206f6e6365696e697469616c2065786368616e67652072617465206d7573742062652067726561746572207468616e207a65726f2e6f6e6c79207468652061646d696e206d6179207365742074686520636f6d702d6c696b652064656c656761746573657474696e6720696e7465726573742072617465206d6f64656c206661696c6564626f72726f7742616c616e636553746f7265643a20626f72726f7742616c616e636553746f726564496e7465726e616c206661696c656452455041595f424f52524f575f4e45575f4143434f554e545f424f52524f575f42414c414e43455f43414c43554c4154494f4e5f4641494c45446f6e6c7920467573652061646d696e206d617920696e697469616c697a6520746865206d61726b6574ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef52455041595f424f52524f575f4e45575f544f54414c5f42414c414e43455f43414c43554c4154494f4e5f4641494c45444c49515549444154455f434f4d5054524f4c4c45525f43414c43554c4154455f414d4f554e545f5345495a455f4641494c454465786368616e67655261746553746f7265643a2065786368616e67655261746553746f726564496e7465726e616c206661696c65646f6e65206f662072656465656d546f6b656e73496e206f722072656465656d416d6f756e74496e206d757374206265207a65726fa265627a7a72315820345834ea73eea58be7ba68700da98535b7a57f02e7c6c5859483e4dc77f12c4364736f6c63430005110032", + "deployedBytecode": "0x6080604052600436106103765760003560e01c8063852a12e3116101d1578063ae9d70b011610102578063dc028ab1116100a0578063f5e3c4621161006f578063f5e3c46214610f69578063f8f9da2814610fac578063fca7820b14610fc1578063fe9c44ae14610feb57610376565b8063dc028ab114610ed1578063dd62ed3e14610ee6578063f2b3abbd14610f21578063f3fdb15a14610f5457610376565b8063c37f68e2116100dc578063c37f68e214610e0f578063c5ebeaec14610e68578063db006a7514610e92578063dbfe7c1914610ebc57610376565b8063ae9d70b014610da2578063b2a02ff114610db7578063bd6d894d14610dfa57610376565b8063a0712d681161016f578063a7b820df11610149578063a7b820df14610d15578063a9059cbb14610d3f578063aa5af0fd14610d78578063ac784ddc14610d8d57610376565b8063a0712d6814610b7a578063a0b0d28914610ba4578063a6afed9514610d0057610376565b806391dd36c6116101ab57806391dd36c614610ade57806395d89b4114610b0857806395dd919314610b1d578063a03dce8d14610b5057610376565b8063852a12e314610a8a5780638d02d9a114610ab45780638f840ddd14610ac957610376565b80633b1d21a2116102ab57806361feacff116102495780636f307dc3116102235780636f307dc3146109fa57806370a0823114610a0f57806373acee9814610a425780637f1e06be14610a5757610376565b806361feacff146109bb5780636752e702146109d05780636c540baf146109e557610376565b806356e677281161028557806356e67728146108d05780635c60da1b1461094b5780635fe3b5671461097c578063601a0bf11461099157610376565b80633b1d21a21461081457806347bd37181461082957806350d85b731461083e57610376565b8063182df0f5116103185780632608f818116102f25780632608f818146106b2578063313ce567146106eb57806334154d4c146107165780633af9e669146107e157610376565b8063182df0f5146106525780631db789441461066757806323b872dd1461066f57610376565b80630f8855e8116103545780630f8855e81461048e578063173b9904146105f557806317bfdfbc1461060a57806318160ddd1461063d57610376565b806306fdde031461037b578063095ea7b3146104055780630e75270214610452575b600080fd5b34801561038757600080fd5b50610390611000565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103ca5781810151838201526020016103b2565b50505050905090810190601f1680156103f75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561041157600080fd5b5061043e6004803603604081101561042857600080fd5b506001600160a01b03813516906020013561108b565b604080519115158252519081900360200190f35b34801561045e57600080fd5b5061047c6004803603602081101561047557600080fd5b50356110f8565b60408051918252519081900360200190f35b34801561049a57600080fd5b506105f360048036036101008110156104b257600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b8111156104ec57600080fd5b8201836020820111156104fe57600080fd5b803590602001918460018302840111600160201b8311171561051f57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561057157600080fd5b82018360208201111561058357600080fd5b803590602001918460018302840111600160201b831117156105a457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505060ff833516935050506020810135906040013561110e565b005b34801561060157600080fd5b5061047c6113bc565b34801561061657600080fd5b5061047c6004803603602081101561062d57600080fd5b50356001600160a01b03166113c2565b34801561064957600080fd5b5061047c61143e565b34801561065e57600080fd5b5061047c611444565b6105f36114a7565b34801561067b57600080fd5b5061043e6004803603606081101561069257600080fd5b506001600160a01b038135811691602081013590911690604001356114a9565b3480156106be57600080fd5b5061047c600480360360408110156106d557600080fd5b506001600160a01b0381351690602001356114d7565b3480156106f757600080fd5b506107006114ed565b6040805160ff9092168252519081900360200190f35b34801561072257600080fd5b506105f36004803603604081101561073957600080fd5b810190602081018135600160201b81111561075357600080fd5b82018360208201111561076557600080fd5b803590602001918460018302840111600160201b8311171561078657600080fd5b919390929091602081019035600160201b8111156107a357600080fd5b8201836020820111156107b557600080fd5b803590602001918460018302840111600160201b831117156107d657600080fd5b5090925090506114f6565b3480156107ed57600080fd5b5061047c6004803603602081101561080457600080fd5b50356001600160a01b0316611562565b34801561082057600080fd5b5061047c611618565b34801561083557600080fd5b5061047c611627565b34801561084a57600080fd5b506105f36004803603606081101561086157600080fd5b6001600160a01b03823516916020810135151591810190606081016040820135600160201b81111561089257600080fd5b8201836020820111156108a457600080fd5b803590602001918460018302840111600160201b831117156108c557600080fd5b50909250905061162d565b3480156108dc57600080fd5b506105f3600480360360208110156108f357600080fd5b810190602081018135600160201b81111561090d57600080fd5b82018360208201111561091f57600080fd5b803590602001918460018302840111600160201b8311171561094057600080fd5b5090925090506116b6565b34801561095757600080fd5b506109606117c9565b604080516001600160a01b039092168252519081900360200190f35b34801561098857600080fd5b506109606117d8565b34801561099d57600080fd5b5061047c600480360360208110156109b457600080fd5b50356117e7565b3480156109c757600080fd5b5061047c611838565b3480156109dc57600080fd5b5061047c61183e565b3480156109f157600080fd5b5061047c611849565b348015610a0657600080fd5b5061096061184f565b348015610a1b57600080fd5b5061047c60048036036020811015610a3257600080fd5b50356001600160a01b031661185e565b348015610a4e57600080fd5b5061047c611879565b348015610a6357600080fd5b506105f360048036036020811015610a7a57600080fd5b50356001600160a01b03166118ec565b348015610a9657600080fd5b5061047c60048036036020811015610aad57600080fd5b5035611991565b348015610ac057600080fd5b5061047c61199c565b348015610ad557600080fd5b5061047c6119a2565b348015610aea57600080fd5b5061047c60048036036020811015610b0157600080fd5b50356119a8565b348015610b1457600080fd5b506103906119e5565b348015610b2957600080fd5b5061047c60048036036020811015610b4057600080fd5b50356001600160a01b0316611a40565b348015610b5c57600080fd5b5061047c60048036036020811015610b7357600080fd5b5035611aa4565b348015610b8657600080fd5b5061047c60048036036020811015610b9d57600080fd5b5035611ae1565b348015610bb057600080fd5b506105f3600480360360e0811015610bc757600080fd5b6001600160a01b0382358116926020810135821692604082013590921691810190608081016060820135600160201b811115610c0257600080fd5b820183602082011115610c1457600080fd5b803590602001918460018302840111600160201b83111715610c3557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115610c8757600080fd5b820183602082011115610c9957600080fd5b803590602001918460018302840111600160201b83111715610cba57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505082359350505060200135611aed565b348015610d0c57600080fd5b5061047c611c06565b348015610d2157600080fd5b5061047c60048036036020811015610d3857600080fd5b5035611dcb565b348015610d4b57600080fd5b5061043e60048036036040811015610d6257600080fd5b506001600160a01b038135169060200135611e08565b348015610d8457600080fd5b5061047c611e35565b348015610d9957600080fd5b5061043e611e3b565b348015610dae57600080fd5b5061047c611e40565b348015610dc357600080fd5b5061047c60048036036060811015610dda57600080fd5b506001600160a01b03813581169160208101359091169060400135611ef8565b348015610e0657600080fd5b5061047c611f1c565b348015610e1b57600080fd5b50610e4260048036036020811015610e3257600080fd5b50356001600160a01b0316611f90565b604080519485526020850193909352838301919091526060830152519081900360800190f35b348015610e7457600080fd5b5061047c60048036036020811015610e8b57600080fd5b5035612025565b348015610e9e57600080fd5b5061047c60048036036020811015610eb557600080fd5b5035612030565b348015610ec857600080fd5b5061047c61203b565b348015610edd57600080fd5b5061047c612041565b348015610ef257600080fd5b5061047c60048036036040811015610f0957600080fd5b506001600160a01b0381358116916020013516612047565b348015610f2d57600080fd5b5061047c60048036036020811015610f4457600080fd5b50356001600160a01b0316612072565b348015610f6057600080fd5b506109606120ac565b348015610f7557600080fd5b5061047c60048036036060811015610f8c57600080fd5b506001600160a01b038135811691602081013591604090910135166120bb565b348015610fb857600080fd5b5061047c6120d3565b348015610fcd57600080fd5b5061047c60048036036020811015610fe457600080fd5b5035612148565b348015610ff757600080fd5b5061043e612185565b6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156110835780601f1061105857610100808354040283529160200191611083565b820191906000526020600020905b81548152906001019060200180831161106657829003601f168201915b505050505081565b3360008181526013602090815260408083206001600160a01b03871680855290835281842086905581518681529151939493909284927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a360019150505b92915050565b6000806111048361218a565b509150505b919050565b3373a731585ab05fc9f83555cf9bff8f58ee94e18f85146111605760405162461bcd60e51b8152600401808060200182810382526029815260200180615d6d6029913960400191505060405180910390fd5b600b541580156111705750600c54155b6111ab5760405162461bcd60e51b8152600401808060200182810382526023815260200180615c5a6023913960400191505060405180910390fd5b6007869055856111ec5760405162461bcd60e51b8152600401808060200182810382526030815260200180615c7d6030913960400191505060405180910390fd5b60006111f7896121ed565b9050801561124c576040805162461bcd60e51b815260206004820152601a60248201527f73657474696e6720636f6d7074726f6c6c6572206661696c6564000000000000604482015290519081900360640190fd5b611254612320565b600b55670de0b6b3a7640000600c5561126c88612324565b905080156112ab5760405162461bcd60e51b8152600401808060200182810382526022815260200180615cda6022913960400191505060405180910390fd5b85516112be906002906020890190615a4a565b5084516112d2906003906020880190615a4a565b506004805460ff191660ff86161790556112eb8361262a565b90508015611340576040805162461bcd60e51b815260206004820152601d60248201527f73657474696e67207265736572766520666163746f72206661696c6564000000604482015290519081900360640190fd5b611349826126e3565b9050801561139e576040805162461bcd60e51b815260206004820152601860248201527f73657474696e672061646d696e20666565206661696c65640000000000000000604482015290519081900360640190fd5b50506001805460ff60b01b1916600160b01b17905550505050505050565b600a5481565b6000806113ce81612808565b60006113d8611c06565b14611423576040805162461bcd60e51b81526020600482015260166024820152751858d8dc9d59481a5b9d195c995cdd0819985a5b195960521b604482015290519081900360640190fd5b61142c83611a40565b91505b611438816128d1565b50919050565b60115481565b600080600061145161293c565b9092509050600082600381111561146457fe5b146114a05760405162461bcd60e51b8152600401808060200182810382526035815260200180615e1a6035913960400191505060405180910390fd5b9150505b90565b565b6000806114b581612808565b60006114c3338787876129fc565b1491506114cf816128d1565b509392505050565b6000806114e48484612c88565b50949350505050565b60045460ff1681565b6114fe612ced565b611542576040805162461bcd60e51b815260206004820152601060248201526f31b0b63632b9103737ba1030b236b4b760811b604482015290519081900360640190fd5b61154e60028585615ac4565b5061155b60038383615ac4565b5050505050565b600061156c615b32565b604051806020016040528061157f611f1c565b90526001600160a01b0384166000908152601260205260408120549192509081906115ab908490612e68565b909250905060008260038111156115be57fe5b14611610576040805162461bcd60e51b815260206004820152601f60248201527f62616c616e636520636f756c64206e6f742062652063616c63756c6174656400604482015290519081900360640190fd5b949350505050565b6000611622612ebc565b905090565b600d5481565b611635612ced565b61166f576040805162461bcd60e51b815260206004820152600660248201526510b0b236b4b760d11b604482015290519081900360640190fd5b6116b0848484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612f0a92505050565b50505050565b73afd2aade64e6ea690173f6de59fc09f5c9190d7473cae4210e6676727ea4e0fd9ba5dfb95831356a16333014806116f157506116f1612ced565b61172a576040805162461bcd60e51b815260206004820152600560248201526410b9b2b63360d91b604482015290519081900360640190fd5b6000611734611c06565b14611770576040805162461bcd60e51b81526020600482015260076024820152662161636372756560c81b604482015290519081900360640190fd5b6001600160a01b0380831660008181526012602090815260408083208054908490559486168084529281902085905580518581529051929392600080516020615d96833981519152929181900390910190a35050505050565b6000546001600160a01b031681565b6005546001600160a01b031681565b6000806117f381612808565b60006117fd611c06565b905080156118235761181b81601181111561181457fe5b603b613126565b92505061142f565b61182c8461318c565b925050611438816128d1565b600f5481565b666379da05b6000081565b600b5481565b6015546001600160a01b031681565b6001600160a01b031660009081526012602052604090205490565b60008061188581612808565b600061188f611c06565b146118da576040805162461bcd60e51b81526020600482015260166024820152751858d8dc9d59481a5b9d195c995cdd0819985a5b195960521b604482015290519081900360640190fd5b600d5491506118e8816128d1565b5090565b6118f4612ced565b61192f5760405162461bcd60e51b815260040180806020018281038252602d815260200180615cad602d913960400191505060405180910390fd5b601554604080516317066a5760e21b81526001600160a01b03848116600483015291519190921691635c19a95c91602480830192600092919082900301818387803b15801561197d57600080fd5b505af115801561155b573d6000803e3d6000fd5b60006110f282613258565b60085481565b600e5481565b6000806119b481612808565b60006119be611c06565b905080156119dc5761181b8160118111156119d557fe5b6052613126565b61182c846126e3565b6003805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156110835780601f1061105857610100808354040283529160200191611083565b6000806000611a4e84613298565b90925090506000826003811115611a6157fe5b14611a9d5760405162461bcd60e51b8152600401808060200182810382526037815260200180615cfc6037913960400191505060405180910390fd5b9392505050565b600080611ab081612808565b6000611aba611c06565b90508015611ad85761181b816011811115611ad157fe5b6033613126565b61182c8461334c565b600080611104836133cd565b60006702c68af0bb14000090506000886001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015611b3557600080fd5b505afa158015611b49573d6000803e3d6000fd5b505050506040513d6020811015611b5f57600080fd5b50519050611b738888848989868a8a61110e565b601580546001600160a01b0319166001600160a01b038b81169190911791829055604080516318160ddd60e01b8152905192909116916318160ddd91600480820192602092909190829003018186803b158015611bcf57600080fd5b505afa158015611be3573d6000803e3d6000fd5b505050506040513d6020811015611bf957600080fd5b5050505050505050505050565b600080611c11612320565b905080600b541415611c275760009150506114a4565b6000611c31612ebc565b90506000600660009054906101000a90046001600160a01b03166001600160a01b03166315f2405383600d54611c76600e54611c71600f5460105461340d565b61340d565b6040518463ffffffff1660e01b815260040180848152602001838152602001828152602001935050505060206040518083038186803b158015611cb857600080fd5b505afa158015611ccc573d6000803e3d6000fd5b505050506040513d6020811015611ce257600080fd5b5051905065048c27395000811115611d41576040805162461bcd60e51b815260206004820152601c60248201527f626f72726f772072617465206973206162737572646c79206869676800000000604482015290519081900360640190fd5b600080611d5085600b54613443565b90925090506000826003811115611d6357fe5b14611db5576040805162461bcd60e51b815260206004820152601f60248201527f636f756c64206e6f742063616c63756c61746520626c6f636b2064656c746100604482015290519081900360640190fd5b611dc185858584613466565b9550505050505090565b600080611dd781612808565b6000611de1611c06565b90508015611dff5761181b816011811115611df857fe5b6037613126565b61182c8461367e565b600080611e1481612808565b6000611e22333387876129fc565b149150611e2e816128d1565b5092915050565b600c5481565b600081565b6006546000906001600160a01b031663b8168816611e5c612ebc565b600d54611e73600e54611c71600f5460105461340d565b600854600954600a5401016040518563ffffffff1660e01b81526004018085815260200184815260200183815260200182815260200194505050505060206040518083038186803b158015611ec757600080fd5b505afa158015611edb573d6000803e3d6000fd5b505050506040513d6020811015611ef157600080fd5b5051905090565b60006001611f0581612808565b611f1133868686613766565b91506114cf816128d1565b600080611f2881612808565b6000611f32611c06565b14611f7d576040805162461bcd60e51b81526020600482015260166024820152751858d8dc9d59481a5b9d195c995cdd0819985a5b195960521b604482015290519081900360640190fd5b611f85611444565b91506118e8816128d1565b6001600160a01b038116600090815260126020526040812054819081908190818080611fbb89613298565b935090506000816003811115611fcd57fe5b14611feb5760095b97506000965086955085945061201e9350505050565b611ff361293c565b92509050600081600381111561200557fe5b14612011576009611fd5565b5060009650919450925090505b9193509193565b60006110f282613b45565b60006110f282613b83565b60095481565b60105481565b6001600160a01b03918216600090815260136020908152604080832093909416825291909152205490565b60008061207d611c06565b905080156120a35761209b81601181111561209457fe5b604b613126565b915050611109565b611a9d83612324565b6006546001600160a01b031681565b6000806120c9858585613bbc565b5095945050505050565b6006546000906001600160a01b03166315f240536120ef612ebc565b600d54612106600e54611c71600f5460105461340d565b6040518463ffffffff1660e01b815260040180848152602001838152602001828152602001935050505060206040518083038186803b158015611ec757600080fd5b60008061215481612808565b600061215e611c06565b9050801561217c5761181b81601181111561217557fe5b6059613126565b61182c8461262a565b600181565b600080600061219881612808565b60006121a2611c06565b905080156121cd576121c08160118111156121b957fe5b6041613126565b9350600092506121de9050565b6121d8333387613ca8565b93509350505b6121e7816128d1565b50915091565b600080600560009054906101000a90046001600160a01b03169050826001600160a01b0316627e3dd26040518163ffffffff1660e01b815260040160206040518083038186803b15801561224057600080fd5b505afa158015612254573d6000803e3d6000fd5b505050506040513d602081101561226a57600080fd5b50516122bd576040805162461bcd60e51b815260206004820152601c60248201527f6d61726b6572206d6574686f642072657475726e65642066616c736500000000604482015290519081900360640190fd5b600580546001600160a01b0319166001600160a01b03858116918217909255604080519284168352602083019190915280517f7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d9281900390910190a16000611a9d565b4390565b60008061232f612ced565b61233f5761209b6001604d613126565b612347612320565b600b541461235b5761209b600a604c613126565b600660009054906101000a90046001600160a01b03169050826001600160a01b0316632191f92a6040518163ffffffff1660e01b815260040160206040518083038186803b1580156123ac57600080fd5b505afa1580156123c0573d6000803e3d6000fd5b505050506040513d60208110156123d657600080fd5b5051612429576040805162461bcd60e51b815260206004820152601c60248201527f6d61726b6572206d6574686f642072657475726e65642066616c736500000000604482015290519081900360640190fd5b600680546001600160a01b0319166001600160a01b03858116918217909255604080519284168352602083019190915280517fedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f9269281900390910190a16001600160a01b0381161561255b5760408051600481526024810182526020810180516001600160e01b0316636cc1140b60e11b178152915181516001600160a01b0385169382918083835b602083106124f05780518252601f1990920191602091820191016124d1565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612552576040519150601f19603f3d011682016040523d82523d6000602084013e612557565b606091505b5050505b60408051600481526024810182526020810180516001600160e01b031663742a137b60e11b178152915181516001600160a01b0387169382918083835b602083106125b75780518252601f199092019160209182019101612598565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612619576040519150601f19603f3d011682016040523d82523d6000602084013e61261e565b606091505b5060009150611a9d9050565b6000612634612ced565b61264b576126446001605a613126565b9050611109565b612653612320565b600b541461266757612644600a605b613126565b670de0b6b3a764000061268761267f8460085461340d565b60095461340d565b1115612699576126446002605c613126565b600a805490839055604080518281526020810185905281517faaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460929181900390910190a16000611a9d565b60006126ed612320565b600b541461270157612644600a6054613126565b6000198214156127115760085491505b600061271b613ff8565b9050670de0b6b3a764000061273b612735600a548661340d565b8361340d565b111561274d5761209b60026055613126565b82600854146127b35761275e612ced565b61276e5761209b60016053613126565b6008805490849055604080518281526020810186905281517fcdd0b588250e1398549f79cfdb8217c186688822905d6715b0834ea1c865594a929181900390910190a1505b8060095414612801576009805490829055604080518281526020810184905281517f92eef861b6533b7d3417f39c2ad7b460eed4e88a32fa3604f30e718b7602e7dc929181900390910190a1505b6000611a9d565b600154600160b01b900460ff16612853576040805162461bcd60e51b815260206004820152600a6024820152691c994b595b9d195c995960b21b604482015290519081900360640190fd5b806128c157600560009054906101000a90046001600160a01b03166001600160a01b031663c90c20b16040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156128a857600080fd5b505af11580156128bc573d6000803e3d6000fd5b505050505b506001805460ff60b01b19169055565b6001805460ff60b01b1916600160b01b1790558061293957600560009054906101000a90046001600160a01b03166001600160a01b031663632e51426040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561197d57600080fd5b50565b601154600090819080612957575050600754600091506129f8565b6000612961612ebc565b9050600061296d615b32565b600061298f84600d5461298a600e54611c71600f5460105461340d565b614047565b9350905060008160038111156129a157fe5b146129b6579550600094506129f89350505050565b6129c08386614093565b9250905060008160038111156129d257fe5b146129e7579550600094506129f89350505050565b50516000955093506129f892505050565b9091565b600554604080516317b9b84b60e31b81523060048201526001600160a01b03868116602483015285811660448301526064820185905291516000938493169163bdcdc25891608480830192602092919082900301818787803b158015612a6157600080fd5b505af1158015612a75573d6000803e3d6000fd5b505050506040513d6020811015612a8b57600080fd5b505190508015612aaa57612aa26003605d83614143565b915050611610565b836001600160a01b0316856001600160a01b03161415612ad057612aa26002605e613126565b60006001600160a01b038781169087161415612aef5750600019612b17565b506001600160a01b038086166000908152601360209081526040808320938a16835292905220545b600080600080612b278589613443565b90945092506000846003811115612b3a57fe5b14612b5857612b4b6009605e613126565b9650505050505050611610565b6001600160a01b038a16600090815260126020526040902054612b7b9089613443565b90945091506000846003811115612b8e57fe5b14612b9f57612b4b6009605f613126565b6001600160a01b038916600090815260126020526040902054612bc290896141cc565b90945090506000846003811115612bd557fe5b14612be657612b4b60096060613126565b6001600160a01b03808b16600090815260126020526040808220859055918b168152208190556000198514612c3e576001600160a01b03808b166000908152601360209081526040808320938f168352929052208390555b886001600160a01b03168a6001600160a01b0316600080516020615d968339815191528a6040518082815260200191505060405180910390a35060009a9950505050505050505050565b6000806000612c9681612808565b6000612ca0611c06565b90508015612ccb57612cbe816011811115612cb757fe5b6040613126565b935060009250612cdc9050565b612cd6338787613ca8565b93509350505b612ce5816128d1565b509250929050565b600554604080516303e1469160e61b815290516000926001600160a01b031691829163f851a44091600480820192602092909190829003018186803b158015612d3557600080fd5b505afa158015612d49573d6000803e3d6000fd5b505050506040513d6020811015612d5f57600080fd5b50516001600160a01b031633148015612dd95750806001600160a01b0316630a755ec26040518163ffffffff1660e01b815260040160206040518083038186803b158015612dac57600080fd5b505afa158015612dc0573d6000803e3d6000fd5b505050506040513d6020811015612dd657600080fd5b50515b806114a057503373a731585ab05fc9f83555cf9bff8f58ee94e18f851480156114a05750806001600160a01b0316632f1069ba6040518163ffffffff1660e01b815260040160206040518083038186803b158015612e3657600080fd5b505afa158015612e4a573d6000803e3d6000fd5b505050506040513d6020811015612e6057600080fd5b505191505090565b6000806000612e75615b32565b612e7f86866141f2565b90925090506000826003811115612e9257fe5b14612ea35750915060009050612eb5565b6000612eae8261425a565b9350935050505b9250929050565b601554604080516370a0823160e01b815230600482015290516000926001600160a01b03169182916370a0823191602480820192602092909190829003018186803b158015612e3657600080fd5b600054604080516338e6a07360e11b81526001600160a01b039283166004820152918516602483015283151560448301525173a731585ab05fc9f83555cf9bff8f58ee94e18f85916371cd40e6916064808301926020929190829003018186803b158015612f7757600080fd5b505afa158015612f8b573d6000803e3d6000fd5b505050506040513d6020811015612fa157600080fd5b5051612fdc576040805162461bcd60e51b8152602060048201526005602482015264085a5b5c1b60da1b604482015290519081900360640190fd5b8115612fea57612fea614269565b600080546001600160a01b038581166001600160a01b0319831617835560405160206024820181815286516044840152865193909416946130d794309488949193849360649093019290860191908190849084905b8381101561305757818101518382015260200161303f565b50505050905090810190601f1680156130845780820380516001836020036101000a031916815260200191505b5060408051601f19818403018152918152602080830180516001600160e01b0316630adccee560e31b17905281518083019092526007825266216265636f6d6560c81b90820152909350915061426e9050565b50600054604080516001600160a01b038085168252909216602083015280517fd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a9281900390910190a150505050565b60007f45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa083601181111561315557fe5b83606381111561316157fe5b604080519283526020830191909152600082820152519081900360600190a1826011811115611a9d57fe5b600080613197612ced565b6131a75761209b6001603c613126565b6131af612320565b600b54146131c35761209b600a603e613126565b826131cc612ebc565b10156131de5761209b600e603d613126565b600e548311156131f45761209b6002603f613126565b613200600e54846143bd565b600e819055905061321133846143f7565b604080513381526020810185905280820183905290517f3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e9181900360600190a16000611a9d565b60008061326481612808565b600061326e611c06565b9050801561328c5761181b81601181111561328557fe5b602a613126565b61182c3360008661447c565b6001600160a01b0381166000908152601460205260408120805482918291829182916132cf57506000945084935061334792505050565b6132df8160000154600c5461494c565b909450925060008460038111156132f257fe5b14613307575091935060009250613347915050565b61331583826001015461498b565b9094509150600084600381111561332857fe5b1461333d575091935060009250613347915050565b5060009450925050505b915091565b600080613357612320565b600b541461336b5761209b600a6035613126565b82613374612ebc565b10156133865761209b600e6034613126565b60105483111561339c5761209b60026036613126565b6133a8601054846143bd565b6010819055905061280173a731585ab05fc9f83555cf9bff8f58ee94e18f85846143f7565b60008060006133db81612808565b60006133e5611c06565b90508015613403576121c08160118111156133fc57fe5b6020613126565b6121d833866149b6565b6000611a9d8383604051806040016040528060118152602001706164646974696f6e206f766572666c6f7760781b815250614d32565b60008083831161345a575060009050818303612eb5565b50600390506000612eb5565b6000613470615b32565b61348860405180602001604052808681525084614d87565b9050600061349882600d54614db1565b905060006134a882600d5461340d565b905060006134c96040518060200160405280600a5481525084600e54614dd0565b905060006134ea604051806020016040528060095481525085601054614dd0565b9050600061350b604051806020016040528060085481525086600f54614dd0565b9050600061351e87600c54600c54614dd0565b600b8d9055600c819055600d869055600e8590556010849055600f839055604080518d8152602081018990528082018390526060810188905290519192507f4dec04e750ca11537cabcd8a9eab06494de08da3735bc8871cd41250e190bc04919081900360800190a16006546040805160248082018e905282518083039091018152604490910182526020810180516001600160e01b0316635efd023360e11b178152915181516001600160a01b0390941693919290918291908083835b602083106135fb5780518252601f1990920191602091820191016135dc565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461365d576040519150601f19603f3d011682016040523d82523d6000602084013e613662565b606091505b506000915061366e9050565b9c9b505050505050505050505050565b600080613689612320565b600b541461369d5761209b600a6039613126565b826136a6612ebc565b10156136b85761209b600e6038613126565b600f548311156136ce5761209b6002603a613126565b6136da600f54846143bd565b905080600f81905550612801600560009054906101000a90046001600160a01b03166001600160a01b031663f851a4406040518163ffffffff1660e01b815260040160206040518083038186803b15801561373457600080fd5b505afa158015613748573d6000803e3d6000fd5b505050506040513d602081101561375e57600080fd5b5051846143f7565b6005546040805163d02f735160e01b81523060048201526001600160a01b038781166024830152868116604483015285811660648301526084820185905291516000938493169163d02f73519160a480830192602092919082900301818787803b1580156137d357600080fd5b505af11580156137e7573d6000803e3d6000fd5b505050506040513d60208110156137fd57600080fd5b50519050801561381457612aa26003601d83614143565b846001600160a01b0316846001600160a01b0316141561383a57612aa26006601e613126565b613842615b45565b6001600160a01b0385166000908152601260205260409020546138659085613443565b602083018190528282600381111561387957fe5b600381111561388457fe5b905250600090508151600381111561389857fe5b146138c2576138b96009601c836000015160038111156138b457fe5b614143565b92505050611610565b6138e1846040518060200160405280666379da05b60000815250614df8565b608082018190526138f39085906143bd565b606082015261390061293c565b60c083018190528282600381111561391457fe5b600381111561391f57fe5b905250600090508151600381111561393357fe5b14613985576040805162461bcd60e51b815260206004820152601860248201527f65786368616e67652072617465206d617468206572726f720000000000000000604482015290519081900360640190fd5b6139a560405180602001604052808360c001518152508260800151614db1565b60a08201819052600e546139b89161340d565b60e082015260115460808201516139cf91906143bd565b6101008201526001600160a01b03861660009081526012602052604090205460608201516139fd91906141cc565b6040830181905282826003811115613a1157fe5b6003811115613a1c57fe5b9052506000905081516003811115613a3057fe5b14613a4c576138b96009601b836000015160038111156138b457fe5b60e0810151600e556101008101516011556020808201516001600160a01b0380881660008181526012855260408082209490945583860151928b16808252908490209290925560608501518351908152925191939092600080516020615d96833981519152929081900390910190a36080810151604080519182525130916001600160a01b03881691600080516020615d968339815191529181900360200190a360a081015160e082015160408051308152602081019390935282810191909152517fa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc59181900360600190a16000979650505050505050565b600080613b5181612808565b6000613b5b611c06565b90508015613b795761181b816011811115613b7257fe5b600a613126565b61182c3385614e20565b600080613b8f81612808565b6000613b99611c06565b90508015613bb05761181b81601181111561328557fe5b61182c3385600061447c565b6000806000613bca81612808565b6000613bd4611c06565b90508015613bff57613bf2816011811115613beb57fe5b6011613126565b935060009250613c969050565b846001600160a01b031663a6afed956040518163ffffffff1660e01b8152600401602060405180830381600087803b158015613c3a57600080fd5b505af1158015613c4e573d6000803e3d6000fd5b505050506040513d6020811015613c6457600080fd5b505190508015613c8457613bf2816011811115613c7d57fe5b6012613126565b613c9033888888615166565b93509350505b613c9f816128d1565b50935093915050565b60055460408051631200453160e11b81523060048201526001600160a01b0386811660248301528581166044830152606482018590529151600093849384939116916324008a629160848082019260209290919082900301818787803b158015613d1157600080fd5b505af1158015613d25573d6000803e3d6000fd5b505050506040513d6020811015613d3b57600080fd5b505190508015613d5f57613d526003604383614143565b925060009150613ff09050565b613d67612320565b600b5414613d7b57613d52600a6044613126565b613d83615b92565b6001600160a01b0386166000908152601460205260409020600101546060820152613dad86613298565b6080830181905260208301826003811115613dc457fe5b6003811115613dcf57fe5b9052506000905081602001516003811115613de657fe5b14613e1057613e0260096042836020015160038111156138b457fe5b935060009250613ff0915050565b600019851415613e295760808101516040820152613e31565b604081018590525b613e3f878260400151615658565b60e082018190526080820151613e5491613443565b60a0830181905260208301826003811115613e6b57fe5b6003811115613e7657fe5b9052506000905081602001516003811115613e8d57fe5b14613ec95760405162461bcd60e51b815260040180806020018281038252603a815260200180615d33603a913960400191505060405180910390fd5b613ed9600d548260e00151613443565b60c0830181905260208301826003811115613ef057fe5b6003811115613efb57fe5b9052506000905081602001516003811115613f1257fe5b14613f4e5760405162461bcd60e51b8152600401808060200182810382526031815260200180615db66031913960400191505060405180910390fd5b60a080820180516001600160a01b03808a16600081815260146020908152604091829020948555600c5460019095019490945560c0870151600d81905560e088015195518251948f16855294840192909252828101949094526060820192909252608081019190915290517f1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1929181900390910190a160e00151600093509150505b935093915050565b600073a731585ab05fc9f83555cf9bff8f58ee94e18f856001600160a01b031663dd86fea16040518163ffffffff1660e01b815260040160206040518083038186803b158015611ec757600080fd5b60008060008061405787876141cc565b9092509050600082600381111561406a57fe5b1461407b5750915060009050613ff0565b6140858186613443565b935093505050935093915050565b600061409d615b32565b6000806140b286670de0b6b3a764000061494c565b909250905060008260038111156140c557fe5b146140e457506040805160208101909152600081529092509050612eb5565b6000806140f1838861498b565b9092509050600082600381111561410457fe5b1461412657506040805160208101909152600081529094509250612eb5915050565b604080516020810190915290815260009890975095505050505050565b60007f45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa084601181111561417257fe5b84606381111561417e57fe5b604080519283526020830191909152818101859052519081900360600190a160038460118111156141ab57fe5b146141c1578360118111156141bc57fe5b611610565b506103e80192915050565b6000808383018481106141e457600092509050612eb5565b506002915060009050612eb5565b60006141fc615b32565b60008061420d86600001518661494c565b9092509050600082600381111561422057fe5b1461423f57506040805160208101909152600081529092509050612eb5565b60408051602081019091529081526000969095509350505050565b51670de0b6b3a7640000900490565b6114a7565b606060006060856001600160a01b0316856040518082805190602001908083835b602083106142ae5780518252601f19909201916020918201910161428f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614310576040519150601f19603f3d011682016040523d82523d6000602084013e614315565b606091505b5091509150816143b45780511561432f5780518082602001fd5b8360405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614379578181015183820152602001614361565b50505050905090810190601f1680156143a65780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b95945050505050565b6000611a9d8383604051806040016040528060158152602001747375627472616374696f6e20756e646572666c6f7760581b815250615835565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091018252602081810180516001600160e01b031663a9059cbb60e01b1790528251808401909352601983527f544f4b454e5f5452414e534645525f4f55545f4641494c454400000000000000908301526144789161588f565b5050565b6000821580614489575081155b6144c45760405162461bcd60e51b8152600401808060200182810382526034815260200180615e4f6034913960400191505060405180910390fd5b6144cc615bd8565b6144d461293c565b60408301819052602083018260038111156144eb57fe5b60038111156144f657fe5b905250600090508160200151600381111561450d57fe5b14614531576145296009602e836020015160038111156138b457fe5b915050611a9d565b83156145b25760608101849052604080516020810182529082015181526145589085612e68565b608083018190526020830182600381111561456f57fe5b600381111561457a57fe5b905250600090508160200151600381111561459157fe5b146145ad576145296009602c836020015160038111156138b457fe5b61462b565b6145ce836040518060200160405280846040015181525061591c565b60608301819052602083018260038111156145e557fe5b60038111156145f057fe5b905250600090508160200151600381111561460757fe5b14614623576145296009602d836020015160038111156138b457fe5b608081018390525b60055460608201516040805163eabe7d9160e01b81523060048201526001600160a01b03898116602483015260448201939093529051600093929092169163eabe7d919160648082019260209290919082900301818787803b15801561469057600080fd5b505af11580156146a4573d6000803e3d6000fd5b505050506040513d60208110156146ba57600080fd5b5051905080156146da576146d16003602b83614143565b92505050611a9d565b6146e2612320565b600b54146146f6576146d1600a602f613126565b6147066011548360600151613443565b60a084018190526020840182600381111561471d57fe5b600381111561472857fe5b905250600090508260200151600381111561473f57fe5b1461475b576146d160096031846020015160038111156138b457fe5b6001600160a01b03861660009081526012602052604090205460608301516147839190613443565b60c084018190526020840182600381111561479a57fe5b60038111156147a557fe5b90525060009050826020015160038111156147bc57fe5b146147d8576146d160096030846020015160038111156138b457fe5b81608001516147e5612ebc565b10156147f7576146d1600e6032613126565b60a082015160115560c08201516001600160a01b038716600090815260126020526040902055608082015161482d9087906143f7565b6060820151604080519182525130916001600160a01b03891691600080516020615d968339815191529181900360200190a36080820151606080840151604080516001600160a01b038b168152602081019490945283810191909152517fe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a9299281900390910190a160055460808301516060840151604080516351dff98960e01b81523060048201526001600160a01b038b81166024830152604482019490945260648101929092525191909216916351dff98991608480830192600092919082900301818387803b15801561492157600080fd5b505af1158015614935573d6000803e3d6000fd5b5060009250614942915050565b9695505050505050565b6000808361495f57506000905080612eb5565b8383028385828161496c57fe5b041461498057506002915060009050612eb5565b600092509050612eb5565b6000808261499f5750600190506000612eb5565b60008385816149aa57fe5b04915091509250929050565b60055460408051634ef4c3e160e01b81523060048201526001600160a01b03858116602483015260448201859052915160009384938493911691634ef4c3e19160648082019260209290919082900301818787803b158015614a1757600080fd5b505af1158015614a2b573d6000803e3d6000fd5b505050506040513d6020811015614a4157600080fd5b505190508015614a6557614a586003602183614143565b925060009150612eb59050565b614a6d612320565b600b5414614a8157614a58600a6024613126565b614a89615bd8565b614a9161293c565b6040830181905260208301826003811115614aa857fe5b6003811115614ab357fe5b9052506000905081602001516003811115614aca57fe5b14614af457614ae660096023836020015160038111156138b457fe5b935060009250612eb5915050565b614afe8686615658565b60c0820181905260408051602081018252908301518152614b1f919061591c565b6060830181905260208301826003811115614b3657fe5b6003811115614b4157fe5b9052506000905081602001516003811115614b5857fe5b14614baa576040805162461bcd60e51b815260206004820181905260248201527f4d494e545f45584348414e47455f43414c43554c4154494f4e5f4641494c4544604482015290519081900360640190fd5b614bba601154826060015161340d565b60808201526001600160a01b0386166000908152601260205260409020546060820151614be7919061340d565b60a0820181905260808201516011556001600160a01b0387166000818152601260209081526040918290209390935560c084015160608086015183519485529484019190915282820193909352517f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f929181900390910190a1606081015160408051918252516001600160a01b038816913091600080516020615d968339815191529181900360200190a360055460c08201516060830151604080516341c728b960e01b81523060048201526001600160a01b038b81166024830152604482019490945260648101929092525191909216916341c728b991608480830192600092919082900301818387803b158015614cff57600080fd5b505af1158015614d13573d6000803e3d6000fd5b5060009250614d20915050565b8160c001519350935050509250929050565b600083830182858210156114e45760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315614379578181015183820152602001614361565b614d8f615b32565b6040518060200160405280614da8856000015185615933565b90529392505050565b6000614dbb615b32565b614dc58484614d87565b90506116108161425a565b6000614dda615b32565b614de48585614d87565b90506143b4614df28261425a565b8461340d565b6000670de0b6b3a7640000614e11848460000151615933565b81614e1857fe5b049392505050565b6005546040805163368f515360e21b81523060048201526001600160a01b0385811660248301526044820185905291516000938493169163da3d454c91606480830192602092919082900301818787803b158015614e7d57600080fd5b505af1158015614e91573d6000803e3d6000fd5b505050506040513d6020811015614ea757600080fd5b505190508015614ec657614ebe6003601083614143565b9150506110f2565b614ece612320565b600b5414614ee257614ebe600a600c613126565b6000614eec612ebc565b905083811015614f0b57614f02600e600b613126565b925050506110f2565b614f13615c16565b614f1c86613298565b6020830181905282826003811115614f3057fe5b6003811115614f3b57fe5b9052506000905081516003811115614f4f57fe5b14614f7457614f6a600980836000015160038111156138b457fe5b93505050506110f2565b614f828160200151866141cc565b6040830181905282826003811115614f9657fe5b6003811115614fa157fe5b9052506000905081516003811115614fb557fe5b14614fd157614f6a6009600e836000015160038111156138b457fe5b6005546040808301518151631de6c8a560e21b8152306004820152602481019190915290516001600160a01b039092169163779b2294916044808201926020929091908290030181600087803b15801561502a57600080fd5b505af115801561503e573d6000803e3d6000fd5b505050506040513d602081101561505457600080fd5b50519250821561506b57614f6a6003601085614143565b615077600d54866141cc565b606083018190528282600381111561508b57fe5b600381111561509657fe5b90525060009050815160038111156150aa57fe5b146150c657614f6a6009600d836000015160038111156138b457fe5b6040808201516001600160a01b0388166000908152601460205291909120908155600c546001909101556060810151600d5561510286866143f7565b60408082015160608084015183516001600160a01b038b168152602081018a9052808501939093529082015290517f13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab809181900360800190a160009695505050505050565b60055460408051632fe3f38f60e11b81523060048201526001600160a01b0384811660248301528781166044830152868116606483015260848201869052915160009384938493911691635fc7e71e9160a48082019260209290919082900301818787803b1580156151d757600080fd5b505af11580156151eb573d6000803e3d6000fd5b505050506040513d602081101561520157600080fd5b505190508015615225576152186003601483614143565b92506000915061564f9050565b61522d612320565b600b541461524157615218600a6018613126565b615249612320565b846001600160a01b0316636c540baf6040518163ffffffff1660e01b815260040160206040518083038186803b15801561528257600080fd5b505afa158015615296573d6000803e3d6000fd5b505050506040513d60208110156152ac57600080fd5b5051146152bf57615218600a6013613126565b866001600160a01b0316866001600160a01b031614156152e55761521860066019613126565b846152f65761521860076017613126565b60001985141561530c5761521860076016613126565b60008061531a898989613ca8565b9092509050811561534a5761533b82601181111561533457fe5b601a613126565b94506000935061564f92505050565b6005546040805163c488847b60e01b81523060048201526001600160a01b038981166024830152604482018590528251600094859492169263c488847b926064808301939192829003018186803b1580156153a457600080fd5b505afa1580156153b8573d6000803e3d6000fd5b505050506040513d60408110156153ce57600080fd5b508051602090910151909250905081156154195760405162461bcd60e51b8152600401808060200182810382526033815260200180615de76033913960400191505060405180910390fd5b80886001600160a01b03166370a082318c6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561547057600080fd5b505afa158015615484573d6000803e3d6000fd5b505050506040513d602081101561549a57600080fd5b505110156154ef576040805162461bcd60e51b815260206004820152601860248201527f4c49515549444154455f5345495a455f544f4f5f4d5543480000000000000000604482015290519081900360640190fd5b60006001600160a01b0389163014156155155761550e308d8d85613766565b905061559f565b6040805163b2a02ff160e01b81526001600160a01b038e811660048301528d81166024830152604482018590529151918b169163b2a02ff1916064808201926020929091908290030181600087803b15801561557057600080fd5b505af1158015615584573d6000803e3d6000fd5b505050506040513d602081101561559a57600080fd5b505190505b80156155e9576040805162461bcd60e51b81526020600482015260146024820152731d1bdad95b881cd95a5e9d5c994819985a5b195960621b604482015290519081900360640190fd5b604080516001600160a01b03808f168252808e1660208301528183018790528b1660608201526080810184905290517f298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb529181900360a00190a16000975092955050505050505b94509492505050565b601554604080516370a0823160e01b8152306004820152905160009283926001600160a01b03909116916370a0823191602480820192602092909190829003018186803b1580156156a857600080fd5b505afa1580156156bc573d6000803e3d6000fd5b505050506040513d60208110156156d257600080fd5b5051604080516001600160a01b038716602482015230604482015260648082018790528251808303909101815260849091018252602081810180516001600160e01b03166323b872dd60e01b1790528251808401909352601883527f544f4b454e5f5452414e534645525f494e5f4641494c454400000000000000009083015291925061575f919061588f565b601554604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156157aa57600080fd5b505afa1580156157be573d6000803e3d6000fd5b505050506040513d60208110156157d457600080fd5b505190508181101561582d576040805162461bcd60e51b815260206004820152601a60248201527f544f4b454e5f5452414e534645525f494e5f4f564552464c4f57000000000000604482015290519081900360640190fd5b039392505050565b600081848411156158875760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315614379578181015183820152602001614361565b505050900390565b6015546060906158a9906001600160a01b0316848461426e565b805190915015615917578080602001905160208110156158c857600080fd5b505182906116b05760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315614379578181015183820152602001614361565b505050565b6000806000615929615b32565b612e7f8686615975565b6000611a9d83836040518060400160405280601781526020017f6d756c7469706c69636174696f6e206f766572666c6f770000000000000000008152506159d4565b600061597f615b32565b600080615994670de0b6b3a76400008761494c565b909250905060008260038111156159a757fe5b146159c657506040805160208101909152600081529092509050612eb5565b612eae818660000151614093565b60008315806159e1575082155b156159ee57506000611a9d565b838302838582816159fb57fe5b041483906114e45760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315614379578181015183820152602001614361565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10615a8b57805160ff1916838001178555615ab8565b82800160010185558215615ab8579182015b82811115615ab8578251825591602001919060010190615a9d565b506118e8929150615c3f565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10615b055782800160ff19823516178555615ab8565b82800160010185558215615ab8579182015b82811115615ab8578235825591602001919060010190615b17565b6040518060200160405280600081525090565b604080516101208101909152806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040805161010081019091528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040805160e0810190915280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b604080516080810190915280600081526020016000815260200160008152602001600081525090565b6114a491905b808211156118e85760008155600101615c4556fe6d61726b6574206d6179206f6e6c7920626520696e697469616c697a6564206f6e6365696e697469616c2065786368616e67652072617465206d7573742062652067726561746572207468616e207a65726f2e6f6e6c79207468652061646d696e206d6179207365742074686520636f6d702d6c696b652064656c656761746573657474696e6720696e7465726573742072617465206d6f64656c206661696c6564626f72726f7742616c616e636553746f7265643a20626f72726f7742616c616e636553746f726564496e7465726e616c206661696c656452455041595f424f52524f575f4e45575f4143434f554e545f424f52524f575f42414c414e43455f43414c43554c4154494f4e5f4641494c45446f6e6c7920467573652061646d696e206d617920696e697469616c697a6520746865206d61726b6574ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef52455041595f424f52524f575f4e45575f544f54414c5f42414c414e43455f43414c43554c4154494f4e5f4641494c45444c49515549444154455f434f4d5054524f4c4c45525f43414c43554c4154455f414d4f554e545f5345495a455f4641494c454465786368616e67655261746553746f7265643a2065786368616e67655261746553746f726564496e7465726e616c206661696c65646f6e65206f662072656465656d546f6b656e73496e206f722072656465656d416d6f756e74496e206d757374206265207a65726fa265627a7a72315820345834ea73eea58be7ba68700da98535b7a57f02e7c6c5859483e4dc77f12c4364736f6c63430005110032", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/CErc20DelegateUSDCAggregatorFix.sol/CErc20DelegateUSDCAggregatorFix.dbg.json b/artifacts/contracts/CErc20DelegateUSDCAggregatorFix.sol/CErc20DelegateUSDCAggregatorFix.dbg.json new file mode 100644 index 000000000..3e43d1aa0 --- /dev/null +++ b/artifacts/contracts/CErc20DelegateUSDCAggregatorFix.sol/CErc20DelegateUSDCAggregatorFix.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../build-info/24725923d734a8bf04a89645a2c314a8.json" +} diff --git a/artifacts/contracts/CErc20DelegateUSDCAggregatorFix.sol/CErc20DelegateUSDCAggregatorFix.json b/artifacts/contracts/CErc20DelegateUSDCAggregatorFix.sol/CErc20DelegateUSDCAggregatorFix.json new file mode 100644 index 000000000..b85ccf0b7 --- /dev/null +++ b/artifacts/contracts/CErc20DelegateUSDCAggregatorFix.sol/CErc20DelegateUSDCAggregatorFix.json @@ -0,0 +1,1568 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "CErc20DelegateUSDCAggregatorFix", + "sourceName": "contracts/CErc20DelegateUSDCAggregatorFix.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "cashPrior", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "interestAccumulated", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "borrowIndex", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "totalBorrows", + "type": "uint256" + } + ], + "name": "AccrueInterest", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "borrower", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "borrowAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "accountBorrows", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "totalBorrows", + "type": "uint256" + } + ], + "name": "Borrow", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "error", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "info", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "detail", + "type": "uint256" + } + ], + "name": "Failure", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "liquidator", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "borrower", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "repayAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "cTokenCollateral", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "seizeTokens", + "type": "uint256" + } + ], + "name": "LiquidateBorrow", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "minter", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "mintAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "mintTokens", + "type": "uint256" + } + ], + "name": "Mint", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "oldAdminFeeMantissa", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newAdminFeeMantissa", + "type": "uint256" + } + ], + "name": "NewAdminFee", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "contract ComptrollerInterface", + "name": "oldComptroller", + "type": "address" + }, + { + "indexed": false, + "internalType": "contract ComptrollerInterface", + "name": "newComptroller", + "type": "address" + } + ], + "name": "NewComptroller", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "oldFuseFeeMantissa", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newFuseFeeMantissa", + "type": "uint256" + } + ], + "name": "NewFuseFee", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "oldImplementation", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newImplementation", + "type": "address" + } + ], + "name": "NewImplementation", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "contract InterestRateModel", + "name": "oldInterestRateModel", + "type": "address" + }, + { + "indexed": false, + "internalType": "contract InterestRateModel", + "name": "newInterestRateModel", + "type": "address" + } + ], + "name": "NewMarketInterestRateModel", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "oldReserveFactorMantissa", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newReserveFactorMantissa", + "type": "uint256" + } + ], + "name": "NewReserveFactor", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "redeemer", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "redeemAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "redeemTokens", + "type": "uint256" + } + ], + "name": "Redeem", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "payer", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "borrower", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "repayAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "accountBorrows", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "totalBorrows", + "type": "uint256" + } + ], + "name": "RepayBorrow", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "benefactor", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "addAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newTotalReserves", + "type": "uint256" + } + ], + "name": "ReservesAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "admin", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "reduceAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newTotalReserves", + "type": "uint256" + } + ], + "name": "ReservesReduced", + "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": "amount", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "_becomeImplementation", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "compLikeDelegatee", + "type": "address" + } + ], + "name": "_delegateCompLikeTo", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "_prepare", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "reduceAmount", + "type": "uint256" + } + ], + "name": "_reduceReserves", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "newAdminFeeMantissa", + "type": "uint256" + } + ], + "name": "_setAdminFee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "implementation_", + "type": "address" + }, + { + "internalType": "bool", + "name": "allowResign", + "type": "bool" + }, + { + "internalType": "bytes", + "name": "becomeImplementationData", + "type": "bytes" + } + ], + "name": "_setImplementationSafe", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "contract InterestRateModel", + "name": "newInterestRateModel", + "type": "address" + } + ], + "name": "_setInterestRateModel", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "string", + "name": "_name", + "type": "string" + }, + { + "internalType": "string", + "name": "_symbol", + "type": "string" + } + ], + "name": "_setNameAndSymbol", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "newReserveFactorMantissa", + "type": "uint256" + } + ], + "name": "_setReserveFactor", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "withdrawAmount", + "type": "uint256" + } + ], + "name": "_withdrawAdminFees", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "withdrawAmount", + "type": "uint256" + } + ], + "name": "_withdrawFuseFees", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "accrualBlockNumber", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "accrueInterest", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "adminFeeMantissa", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOfUnderlying", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "borrowAmount", + "type": "uint256" + } + ], + "name": "borrow", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "borrowBalanceCurrent", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "borrowBalanceStored", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "borrowIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "borrowRatePerBlock", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "comptroller", + "outputs": [ + { + "internalType": "contract ComptrollerInterface", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "exchangeRateCurrent", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "exchangeRateStored", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "fuseFeeMantissa", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "getAccountSnapshot", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getCash", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "implementation", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "contract ComptrollerInterface", + "name": "comptroller_", + "type": "address" + }, + { + "internalType": "contract InterestRateModel", + "name": "interestRateModel_", + "type": "address" + }, + { + "internalType": "uint256", + "name": "initialExchangeRateMantissa_", + "type": "uint256" + }, + { + "internalType": "string", + "name": "name_", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol_", + "type": "string" + }, + { + "internalType": "uint8", + "name": "decimals_", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "reserveFactorMantissa_", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "adminFeeMantissa_", + "type": "uint256" + } + ], + "name": "initialize", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "underlying_", + "type": "address" + }, + { + "internalType": "contract ComptrollerInterface", + "name": "comptroller_", + "type": "address" + }, + { + "internalType": "contract InterestRateModel", + "name": "interestRateModel_", + "type": "address" + }, + { + "internalType": "string", + "name": "name_", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol_", + "type": "string" + }, + { + "internalType": "uint256", + "name": "reserveFactorMantissa_", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "adminFeeMantissa_", + "type": "uint256" + } + ], + "name": "initialize", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "interestRateModel", + "outputs": [ + { + "internalType": "contract InterestRateModel", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "isCEther", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "isCToken", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "borrower", + "type": "address" + }, + { + "internalType": "uint256", + "name": "repayAmount", + "type": "uint256" + }, + { + "internalType": "contract CTokenInterface", + "name": "cTokenCollateral", + "type": "address" + } + ], + "name": "liquidateBorrow", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "mintAmount", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "protocolSeizeShareMantissa", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "redeemTokens", + "type": "uint256" + } + ], + "name": "redeem", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "redeemAmount", + "type": "uint256" + } + ], + "name": "redeemUnderlying", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "repayAmount", + "type": "uint256" + } + ], + "name": "repayBorrow", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "borrower", + "type": "address" + }, + { + "internalType": "uint256", + "name": "repayAmount", + "type": "uint256" + } + ], + "name": "repayBorrowBehalf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "reserveFactorMantissa", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "liquidator", + "type": "address" + }, + { + "internalType": "address", + "name": "borrower", + "type": "address" + }, + { + "internalType": "uint256", + "name": "seizeTokens", + "type": "uint256" + } + ], + "name": "seize", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "supplyRatePerBlock", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalAdminFees", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalBorrows", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "totalBorrowsCurrent", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalFuseFees", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalReserves", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "src", + "type": "address" + }, + { + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "underlying", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x6080604052615eb7806100136000396000f3fe6080604052600436106103765760003560e01c8063852a12e3116101d1578063ae9d70b011610102578063dc028ab1116100a0578063f5e3c4621161006f578063f5e3c46214610f69578063f8f9da2814610fac578063fca7820b14610fc1578063fe9c44ae14610feb57610376565b8063dc028ab114610ed1578063dd62ed3e14610ee6578063f2b3abbd14610f21578063f3fdb15a14610f5457610376565b8063c37f68e2116100dc578063c37f68e214610e0f578063c5ebeaec14610e68578063db006a7514610e92578063dbfe7c1914610ebc57610376565b8063ae9d70b014610da2578063b2a02ff114610db7578063bd6d894d14610dfa57610376565b8063a0712d681161016f578063a7b820df11610149578063a7b820df14610d15578063a9059cbb14610d3f578063aa5af0fd14610d78578063ac784ddc14610d8d57610376565b8063a0712d6814610b7a578063a0b0d28914610ba4578063a6afed9514610d0057610376565b806391dd36c6116101ab57806391dd36c614610ade57806395d89b4114610b0857806395dd919314610b1d578063a03dce8d14610b5057610376565b8063852a12e314610a8a5780638d02d9a114610ab45780638f840ddd14610ac957610376565b80633b1d21a2116102ab57806361feacff116102495780636f307dc3116102235780636f307dc3146109fa57806370a0823114610a0f57806373acee9814610a425780637f1e06be14610a5757610376565b806361feacff146109bb5780636752e702146109d05780636c540baf146109e557610376565b806356e677281161028557806356e67728146108d05780635c60da1b1461094b5780635fe3b5671461097c578063601a0bf11461099157610376565b80633b1d21a21461081457806347bd37181461082957806350d85b731461083e57610376565b8063182df0f5116103185780632608f818116102f25780632608f818146106b2578063313ce567146106eb57806334154d4c146107165780633af9e669146107e157610376565b8063182df0f5146106525780631db789441461066757806323b872dd1461066f57610376565b80630f8855e8116103545780630f8855e81461048e578063173b9904146105f557806317bfdfbc1461060a57806318160ddd1461063d57610376565b806306fdde031461037b578063095ea7b3146104055780630e75270214610452575b600080fd5b34801561038757600080fd5b50610390611000565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103ca5781810151838201526020016103b2565b50505050905090810190601f1680156103f75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561041157600080fd5b5061043e6004803603604081101561042857600080fd5b506001600160a01b03813516906020013561108b565b604080519115158252519081900360200190f35b34801561045e57600080fd5b5061047c6004803603602081101561047557600080fd5b50356110f8565b60408051918252519081900360200190f35b34801561049a57600080fd5b506105f360048036036101008110156104b257600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b8111156104ec57600080fd5b8201836020820111156104fe57600080fd5b803590602001918460018302840111600160201b8311171561051f57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561057157600080fd5b82018360208201111561058357600080fd5b803590602001918460018302840111600160201b831117156105a457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505060ff833516935050506020810135906040013561110e565b005b34801561060157600080fd5b5061047c6113bc565b34801561061657600080fd5b5061047c6004803603602081101561062d57600080fd5b50356001600160a01b03166113c2565b34801561064957600080fd5b5061047c61143e565b34801561065e57600080fd5b5061047c611444565b6105f36114a7565b34801561067b57600080fd5b5061043e6004803603606081101561069257600080fd5b506001600160a01b038135811691602081013590911690604001356114a9565b3480156106be57600080fd5b5061047c600480360360408110156106d557600080fd5b506001600160a01b0381351690602001356114d7565b3480156106f757600080fd5b506107006114ed565b6040805160ff9092168252519081900360200190f35b34801561072257600080fd5b506105f36004803603604081101561073957600080fd5b810190602081018135600160201b81111561075357600080fd5b82018360208201111561076557600080fd5b803590602001918460018302840111600160201b8311171561078657600080fd5b919390929091602081019035600160201b8111156107a357600080fd5b8201836020820111156107b557600080fd5b803590602001918460018302840111600160201b831117156107d657600080fd5b5090925090506114f6565b3480156107ed57600080fd5b5061047c6004803603602081101561080457600080fd5b50356001600160a01b0316611562565b34801561082057600080fd5b5061047c611618565b34801561083557600080fd5b5061047c611627565b34801561084a57600080fd5b506105f36004803603606081101561086157600080fd5b6001600160a01b03823516916020810135151591810190606081016040820135600160201b81111561089257600080fd5b8201836020820111156108a457600080fd5b803590602001918460018302840111600160201b831117156108c557600080fd5b50909250905061162d565b3480156108dc57600080fd5b506105f3600480360360208110156108f357600080fd5b810190602081018135600160201b81111561090d57600080fd5b82018360208201111561091f57600080fd5b803590602001918460018302840111600160201b8311171561094057600080fd5b5090925090506116b6565b34801561095757600080fd5b506109606117c9565b604080516001600160a01b039092168252519081900360200190f35b34801561098857600080fd5b506109606117d8565b34801561099d57600080fd5b5061047c600480360360208110156109b457600080fd5b50356117e7565b3480156109c757600080fd5b5061047c611838565b3480156109dc57600080fd5b5061047c61183e565b3480156109f157600080fd5b5061047c611849565b348015610a0657600080fd5b5061096061184f565b348015610a1b57600080fd5b5061047c60048036036020811015610a3257600080fd5b50356001600160a01b031661185e565b348015610a4e57600080fd5b5061047c611879565b348015610a6357600080fd5b506105f360048036036020811015610a7a57600080fd5b50356001600160a01b03166118ec565b348015610a9657600080fd5b5061047c60048036036020811015610aad57600080fd5b5035611991565b348015610ac057600080fd5b5061047c61199c565b348015610ad557600080fd5b5061047c6119a2565b348015610aea57600080fd5b5061047c60048036036020811015610b0157600080fd5b50356119a8565b348015610b1457600080fd5b506103906119e5565b348015610b2957600080fd5b5061047c60048036036020811015610b4057600080fd5b50356001600160a01b0316611a40565b348015610b5c57600080fd5b5061047c60048036036020811015610b7357600080fd5b5035611aa4565b348015610b8657600080fd5b5061047c60048036036020811015610b9d57600080fd5b5035611ae1565b348015610bb057600080fd5b506105f3600480360360e0811015610bc757600080fd5b6001600160a01b0382358116926020810135821692604082013590921691810190608081016060820135600160201b811115610c0257600080fd5b820183602082011115610c1457600080fd5b803590602001918460018302840111600160201b83111715610c3557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115610c8757600080fd5b820183602082011115610c9957600080fd5b803590602001918460018302840111600160201b83111715610cba57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505082359350505060200135611aed565b348015610d0c57600080fd5b5061047c611c06565b348015610d2157600080fd5b5061047c60048036036020811015610d3857600080fd5b5035611dcb565b348015610d4b57600080fd5b5061043e60048036036040811015610d6257600080fd5b506001600160a01b038135169060200135611e08565b348015610d8457600080fd5b5061047c611e35565b348015610d9957600080fd5b5061043e611e3b565b348015610dae57600080fd5b5061047c611e40565b348015610dc357600080fd5b5061047c60048036036060811015610dda57600080fd5b506001600160a01b03813581169160208101359091169060400135611ef8565b348015610e0657600080fd5b5061047c611f1c565b348015610e1b57600080fd5b50610e4260048036036020811015610e3257600080fd5b50356001600160a01b0316611f90565b604080519485526020850193909352838301919091526060830152519081900360800190f35b348015610e7457600080fd5b5061047c60048036036020811015610e8b57600080fd5b5035612025565b348015610e9e57600080fd5b5061047c60048036036020811015610eb557600080fd5b5035612030565b348015610ec857600080fd5b5061047c61203b565b348015610edd57600080fd5b5061047c612041565b348015610ef257600080fd5b5061047c60048036036040811015610f0957600080fd5b506001600160a01b0381358116916020013516612047565b348015610f2d57600080fd5b5061047c60048036036020811015610f4457600080fd5b50356001600160a01b0316612072565b348015610f6057600080fd5b506109606120ac565b348015610f7557600080fd5b5061047c60048036036060811015610f8c57600080fd5b506001600160a01b038135811691602081013591604090910135166120bb565b348015610fb857600080fd5b5061047c6120d3565b348015610fcd57600080fd5b5061047c60048036036020811015610fe457600080fd5b5035612148565b348015610ff757600080fd5b5061043e612185565b6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156110835780601f1061105857610100808354040283529160200191611083565b820191906000526020600020905b81548152906001019060200180831161106657829003601f168201915b505050505081565b3360008181526013602090815260408083206001600160a01b03871680855290835281842086905581518681529151939493909284927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a360019150505b92915050565b6000806111048361218a565b509150505b919050565b3373a731585ab05fc9f83555cf9bff8f58ee94e18f85146111605760405162461bcd60e51b8152600401808060200182810382526029815260200180615d6d6029913960400191505060405180910390fd5b600b541580156111705750600c54155b6111ab5760405162461bcd60e51b8152600401808060200182810382526023815260200180615c5a6023913960400191505060405180910390fd5b6007869055856111ec5760405162461bcd60e51b8152600401808060200182810382526030815260200180615c7d6030913960400191505060405180910390fd5b60006111f7896121ed565b9050801561124c576040805162461bcd60e51b815260206004820152601a60248201527f73657474696e6720636f6d7074726f6c6c6572206661696c6564000000000000604482015290519081900360640190fd5b611254612320565b600b55670de0b6b3a7640000600c5561126c88612324565b905080156112ab5760405162461bcd60e51b8152600401808060200182810382526022815260200180615cda6022913960400191505060405180910390fd5b85516112be906002906020890190615a4a565b5084516112d2906003906020880190615a4a565b506004805460ff191660ff86161790556112eb8361262a565b90508015611340576040805162461bcd60e51b815260206004820152601d60248201527f73657474696e67207265736572766520666163746f72206661696c6564000000604482015290519081900360640190fd5b611349826126e3565b9050801561139e576040805162461bcd60e51b815260206004820152601860248201527f73657474696e672061646d696e20666565206661696c65640000000000000000604482015290519081900360640190fd5b50506001805460ff60b01b1916600160b01b17905550505050505050565b600a5481565b6000806113ce81612808565b60006113d8611c06565b14611423576040805162461bcd60e51b81526020600482015260166024820152751858d8dc9d59481a5b9d195c995cdd0819985a5b195960521b604482015290519081900360640190fd5b61142c83611a40565b91505b611438816128d1565b50919050565b60115481565b600080600061145161293c565b9092509050600082600381111561146457fe5b146114a05760405162461bcd60e51b8152600401808060200182810382526035815260200180615e1a6035913960400191505060405180910390fd5b9150505b90565b565b6000806114b581612808565b60006114c3338787876129fc565b1491506114cf816128d1565b509392505050565b6000806114e48484612c88565b50949350505050565b60045460ff1681565b6114fe612ced565b611542576040805162461bcd60e51b815260206004820152601060248201526f31b0b63632b9103737ba1030b236b4b760811b604482015290519081900360640190fd5b61154e60028585615ac4565b5061155b60038383615ac4565b5050505050565b600061156c615b32565b604051806020016040528061157f611f1c565b90526001600160a01b0384166000908152601260205260408120549192509081906115ab908490612e68565b909250905060008260038111156115be57fe5b14611610576040805162461bcd60e51b815260206004820152601f60248201527f62616c616e636520636f756c64206e6f742062652063616c63756c6174656400604482015290519081900360640190fd5b949350505050565b6000611622612ebc565b905090565b600d5481565b611635612ced565b61166f576040805162461bcd60e51b815260206004820152600660248201526510b0b236b4b760d11b604482015290519081900360640190fd5b6116b0848484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612f0a92505050565b50505050565b7366f4856f1bbd1eb09e1c8d9d646f5a3a193da56973cae4210e6676727ea4e0fd9ba5dfb95831356a16333014806116f157506116f1612ced565b61172a576040805162461bcd60e51b815260206004820152600560248201526410b9b2b63360d91b604482015290519081900360640190fd5b6000611734611c06565b14611770576040805162461bcd60e51b81526020600482015260076024820152662161636372756560c81b604482015290519081900360640190fd5b6001600160a01b0380831660008181526012602090815260408083208054908490559486168084529281902085905580518581529051929392600080516020615d96833981519152929181900390910190a35050505050565b6000546001600160a01b031681565b6005546001600160a01b031681565b6000806117f381612808565b60006117fd611c06565b905080156118235761181b81601181111561181457fe5b603b613126565b92505061142f565b61182c8461318c565b925050611438816128d1565b600f5481565b666379da05b6000081565b600b5481565b6015546001600160a01b031681565b6001600160a01b031660009081526012602052604090205490565b60008061188581612808565b600061188f611c06565b146118da576040805162461bcd60e51b81526020600482015260166024820152751858d8dc9d59481a5b9d195c995cdd0819985a5b195960521b604482015290519081900360640190fd5b600d5491506118e8816128d1565b5090565b6118f4612ced565b61192f5760405162461bcd60e51b815260040180806020018281038252602d815260200180615cad602d913960400191505060405180910390fd5b601554604080516317066a5760e21b81526001600160a01b03848116600483015291519190921691635c19a95c91602480830192600092919082900301818387803b15801561197d57600080fd5b505af115801561155b573d6000803e3d6000fd5b60006110f282613258565b60085481565b600e5481565b6000806119b481612808565b60006119be611c06565b905080156119dc5761181b8160118111156119d557fe5b6052613126565b61182c846126e3565b6003805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156110835780601f1061105857610100808354040283529160200191611083565b6000806000611a4e84613298565b90925090506000826003811115611a6157fe5b14611a9d5760405162461bcd60e51b8152600401808060200182810382526037815260200180615cfc6037913960400191505060405180910390fd5b9392505050565b600080611ab081612808565b6000611aba611c06565b90508015611ad85761181b816011811115611ad157fe5b6033613126565b61182c8461334c565b600080611104836133cd565b60006702c68af0bb14000090506000886001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015611b3557600080fd5b505afa158015611b49573d6000803e3d6000fd5b505050506040513d6020811015611b5f57600080fd5b50519050611b738888848989868a8a61110e565b601580546001600160a01b0319166001600160a01b038b81169190911791829055604080516318160ddd60e01b8152905192909116916318160ddd91600480820192602092909190829003018186803b158015611bcf57600080fd5b505afa158015611be3573d6000803e3d6000fd5b505050506040513d6020811015611bf957600080fd5b5050505050505050505050565b600080611c11612320565b905080600b541415611c275760009150506114a4565b6000611c31612ebc565b90506000600660009054906101000a90046001600160a01b03166001600160a01b03166315f2405383600d54611c76600e54611c71600f5460105461340d565b61340d565b6040518463ffffffff1660e01b815260040180848152602001838152602001828152602001935050505060206040518083038186803b158015611cb857600080fd5b505afa158015611ccc573d6000803e3d6000fd5b505050506040513d6020811015611ce257600080fd5b5051905065048c27395000811115611d41576040805162461bcd60e51b815260206004820152601c60248201527f626f72726f772072617465206973206162737572646c79206869676800000000604482015290519081900360640190fd5b600080611d5085600b54613443565b90925090506000826003811115611d6357fe5b14611db5576040805162461bcd60e51b815260206004820152601f60248201527f636f756c64206e6f742063616c63756c61746520626c6f636b2064656c746100604482015290519081900360640190fd5b611dc185858584613466565b9550505050505090565b600080611dd781612808565b6000611de1611c06565b90508015611dff5761181b816011811115611df857fe5b6037613126565b61182c8461367e565b600080611e1481612808565b6000611e22333387876129fc565b149150611e2e816128d1565b5092915050565b600c5481565b600081565b6006546000906001600160a01b031663b8168816611e5c612ebc565b600d54611e73600e54611c71600f5460105461340d565b600854600954600a5401016040518563ffffffff1660e01b81526004018085815260200184815260200183815260200182815260200194505050505060206040518083038186803b158015611ec757600080fd5b505afa158015611edb573d6000803e3d6000fd5b505050506040513d6020811015611ef157600080fd5b5051905090565b60006001611f0581612808565b611f1133868686613766565b91506114cf816128d1565b600080611f2881612808565b6000611f32611c06565b14611f7d576040805162461bcd60e51b81526020600482015260166024820152751858d8dc9d59481a5b9d195c995cdd0819985a5b195960521b604482015290519081900360640190fd5b611f85611444565b91506118e8816128d1565b6001600160a01b038116600090815260126020526040812054819081908190818080611fbb89613298565b935090506000816003811115611fcd57fe5b14611feb5760095b97506000965086955085945061201e9350505050565b611ff361293c565b92509050600081600381111561200557fe5b14612011576009611fd5565b5060009650919450925090505b9193509193565b60006110f282613b45565b60006110f282613b83565b60095481565b60105481565b6001600160a01b03918216600090815260136020908152604080832093909416825291909152205490565b60008061207d611c06565b905080156120a35761209b81601181111561209457fe5b604b613126565b915050611109565b611a9d83612324565b6006546001600160a01b031681565b6000806120c9858585613bbc565b5095945050505050565b6006546000906001600160a01b03166315f240536120ef612ebc565b600d54612106600e54611c71600f5460105461340d565b6040518463ffffffff1660e01b815260040180848152602001838152602001828152602001935050505060206040518083038186803b158015611ec757600080fd5b60008061215481612808565b600061215e611c06565b9050801561217c5761181b81601181111561217557fe5b6059613126565b61182c8461262a565b600181565b600080600061219881612808565b60006121a2611c06565b905080156121cd576121c08160118111156121b957fe5b6041613126565b9350600092506121de9050565b6121d8333387613ca8565b93509350505b6121e7816128d1565b50915091565b600080600560009054906101000a90046001600160a01b03169050826001600160a01b0316627e3dd26040518163ffffffff1660e01b815260040160206040518083038186803b15801561224057600080fd5b505afa158015612254573d6000803e3d6000fd5b505050506040513d602081101561226a57600080fd5b50516122bd576040805162461bcd60e51b815260206004820152601c60248201527f6d61726b6572206d6574686f642072657475726e65642066616c736500000000604482015290519081900360640190fd5b600580546001600160a01b0319166001600160a01b03858116918217909255604080519284168352602083019190915280517f7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d9281900390910190a16000611a9d565b4390565b60008061232f612ced565b61233f5761209b6001604d613126565b612347612320565b600b541461235b5761209b600a604c613126565b600660009054906101000a90046001600160a01b03169050826001600160a01b0316632191f92a6040518163ffffffff1660e01b815260040160206040518083038186803b1580156123ac57600080fd5b505afa1580156123c0573d6000803e3d6000fd5b505050506040513d60208110156123d657600080fd5b5051612429576040805162461bcd60e51b815260206004820152601c60248201527f6d61726b6572206d6574686f642072657475726e65642066616c736500000000604482015290519081900360640190fd5b600680546001600160a01b0319166001600160a01b03858116918217909255604080519284168352602083019190915280517fedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f9269281900390910190a16001600160a01b0381161561255b5760408051600481526024810182526020810180516001600160e01b0316636cc1140b60e11b178152915181516001600160a01b0385169382918083835b602083106124f05780518252601f1990920191602091820191016124d1565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612552576040519150601f19603f3d011682016040523d82523d6000602084013e612557565b606091505b5050505b60408051600481526024810182526020810180516001600160e01b031663742a137b60e11b178152915181516001600160a01b0387169382918083835b602083106125b75780518252601f199092019160209182019101612598565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612619576040519150601f19603f3d011682016040523d82523d6000602084013e61261e565b606091505b5060009150611a9d9050565b6000612634612ced565b61264b576126446001605a613126565b9050611109565b612653612320565b600b541461266757612644600a605b613126565b670de0b6b3a764000061268761267f8460085461340d565b60095461340d565b1115612699576126446002605c613126565b600a805490839055604080518281526020810185905281517faaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460929181900390910190a16000611a9d565b60006126ed612320565b600b541461270157612644600a6054613126565b6000198214156127115760085491505b600061271b613ff8565b9050670de0b6b3a764000061273b612735600a548661340d565b8361340d565b111561274d5761209b60026055613126565b82600854146127b35761275e612ced565b61276e5761209b60016053613126565b6008805490849055604080518281526020810186905281517fcdd0b588250e1398549f79cfdb8217c186688822905d6715b0834ea1c865594a929181900390910190a1505b8060095414612801576009805490829055604080518281526020810184905281517f92eef861b6533b7d3417f39c2ad7b460eed4e88a32fa3604f30e718b7602e7dc929181900390910190a1505b6000611a9d565b600154600160b01b900460ff16612853576040805162461bcd60e51b815260206004820152600a6024820152691c994b595b9d195c995960b21b604482015290519081900360640190fd5b806128c157600560009054906101000a90046001600160a01b03166001600160a01b031663c90c20b16040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156128a857600080fd5b505af11580156128bc573d6000803e3d6000fd5b505050505b506001805460ff60b01b19169055565b6001805460ff60b01b1916600160b01b1790558061293957600560009054906101000a90046001600160a01b03166001600160a01b031663632e51426040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561197d57600080fd5b50565b601154600090819080612957575050600754600091506129f8565b6000612961612ebc565b9050600061296d615b32565b600061298f84600d5461298a600e54611c71600f5460105461340d565b614047565b9350905060008160038111156129a157fe5b146129b6579550600094506129f89350505050565b6129c08386614093565b9250905060008160038111156129d257fe5b146129e7579550600094506129f89350505050565b50516000955093506129f892505050565b9091565b600554604080516317b9b84b60e31b81523060048201526001600160a01b03868116602483015285811660448301526064820185905291516000938493169163bdcdc25891608480830192602092919082900301818787803b158015612a6157600080fd5b505af1158015612a75573d6000803e3d6000fd5b505050506040513d6020811015612a8b57600080fd5b505190508015612aaa57612aa26003605d83614143565b915050611610565b836001600160a01b0316856001600160a01b03161415612ad057612aa26002605e613126565b60006001600160a01b038781169087161415612aef5750600019612b17565b506001600160a01b038086166000908152601360209081526040808320938a16835292905220545b600080600080612b278589613443565b90945092506000846003811115612b3a57fe5b14612b5857612b4b6009605e613126565b9650505050505050611610565b6001600160a01b038a16600090815260126020526040902054612b7b9089613443565b90945091506000846003811115612b8e57fe5b14612b9f57612b4b6009605f613126565b6001600160a01b038916600090815260126020526040902054612bc290896141cc565b90945090506000846003811115612bd557fe5b14612be657612b4b60096060613126565b6001600160a01b03808b16600090815260126020526040808220859055918b168152208190556000198514612c3e576001600160a01b03808b166000908152601360209081526040808320938f168352929052208390555b886001600160a01b03168a6001600160a01b0316600080516020615d968339815191528a6040518082815260200191505060405180910390a35060009a9950505050505050505050565b6000806000612c9681612808565b6000612ca0611c06565b90508015612ccb57612cbe816011811115612cb757fe5b6040613126565b935060009250612cdc9050565b612cd6338787613ca8565b93509350505b612ce5816128d1565b509250929050565b600554604080516303e1469160e61b815290516000926001600160a01b031691829163f851a44091600480820192602092909190829003018186803b158015612d3557600080fd5b505afa158015612d49573d6000803e3d6000fd5b505050506040513d6020811015612d5f57600080fd5b50516001600160a01b031633148015612dd95750806001600160a01b0316630a755ec26040518163ffffffff1660e01b815260040160206040518083038186803b158015612dac57600080fd5b505afa158015612dc0573d6000803e3d6000fd5b505050506040513d6020811015612dd657600080fd5b50515b806114a057503373a731585ab05fc9f83555cf9bff8f58ee94e18f851480156114a05750806001600160a01b0316632f1069ba6040518163ffffffff1660e01b815260040160206040518083038186803b158015612e3657600080fd5b505afa158015612e4a573d6000803e3d6000fd5b505050506040513d6020811015612e6057600080fd5b505191505090565b6000806000612e75615b32565b612e7f86866141f2565b90925090506000826003811115612e9257fe5b14612ea35750915060009050612eb5565b6000612eae8261425a565b9350935050505b9250929050565b601554604080516370a0823160e01b815230600482015290516000926001600160a01b03169182916370a0823191602480820192602092909190829003018186803b158015612e3657600080fd5b600054604080516338e6a07360e11b81526001600160a01b039283166004820152918516602483015283151560448301525173a731585ab05fc9f83555cf9bff8f58ee94e18f85916371cd40e6916064808301926020929190829003018186803b158015612f7757600080fd5b505afa158015612f8b573d6000803e3d6000fd5b505050506040513d6020811015612fa157600080fd5b5051612fdc576040805162461bcd60e51b8152602060048201526005602482015264085a5b5c1b60da1b604482015290519081900360640190fd5b8115612fea57612fea614269565b600080546001600160a01b038581166001600160a01b0319831617835560405160206024820181815286516044840152865193909416946130d794309488949193849360649093019290860191908190849084905b8381101561305757818101518382015260200161303f565b50505050905090810190601f1680156130845780820380516001836020036101000a031916815260200191505b5060408051601f19818403018152918152602080830180516001600160e01b0316630adccee560e31b17905281518083019092526007825266216265636f6d6560c81b90820152909350915061426e9050565b50600054604080516001600160a01b038085168252909216602083015280517fd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a9281900390910190a150505050565b60007f45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa083601181111561315557fe5b83606381111561316157fe5b604080519283526020830191909152600082820152519081900360600190a1826011811115611a9d57fe5b600080613197612ced565b6131a75761209b6001603c613126565b6131af612320565b600b54146131c35761209b600a603e613126565b826131cc612ebc565b10156131de5761209b600e603d613126565b600e548311156131f45761209b6002603f613126565b613200600e54846143bd565b600e819055905061321133846143f7565b604080513381526020810185905280820183905290517f3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e9181900360600190a16000611a9d565b60008061326481612808565b600061326e611c06565b9050801561328c5761181b81601181111561328557fe5b602a613126565b61182c3360008661447c565b6001600160a01b0381166000908152601460205260408120805482918291829182916132cf57506000945084935061334792505050565b6132df8160000154600c5461494c565b909450925060008460038111156132f257fe5b14613307575091935060009250613347915050565b61331583826001015461498b565b9094509150600084600381111561332857fe5b1461333d575091935060009250613347915050565b5060009450925050505b915091565b600080613357612320565b600b541461336b5761209b600a6035613126565b82613374612ebc565b10156133865761209b600e6034613126565b60105483111561339c5761209b60026036613126565b6133a8601054846143bd565b6010819055905061280173a731585ab05fc9f83555cf9bff8f58ee94e18f85846143f7565b60008060006133db81612808565b60006133e5611c06565b90508015613403576121c08160118111156133fc57fe5b6020613126565b6121d833866149b6565b6000611a9d8383604051806040016040528060118152602001706164646974696f6e206f766572666c6f7760781b815250614d32565b60008083831161345a575060009050818303612eb5565b50600390506000612eb5565b6000613470615b32565b61348860405180602001604052808681525084614d87565b9050600061349882600d54614db1565b905060006134a882600d5461340d565b905060006134c96040518060200160405280600a5481525084600e54614dd0565b905060006134ea604051806020016040528060095481525085601054614dd0565b9050600061350b604051806020016040528060085481525086600f54614dd0565b9050600061351e87600c54600c54614dd0565b600b8d9055600c819055600d869055600e8590556010849055600f839055604080518d8152602081018990528082018390526060810188905290519192507f4dec04e750ca11537cabcd8a9eab06494de08da3735bc8871cd41250e190bc04919081900360800190a16006546040805160248082018e905282518083039091018152604490910182526020810180516001600160e01b0316635efd023360e11b178152915181516001600160a01b0390941693919290918291908083835b602083106135fb5780518252601f1990920191602091820191016135dc565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461365d576040519150601f19603f3d011682016040523d82523d6000602084013e613662565b606091505b506000915061366e9050565b9c9b505050505050505050505050565b600080613689612320565b600b541461369d5761209b600a6039613126565b826136a6612ebc565b10156136b85761209b600e6038613126565b600f548311156136ce5761209b6002603a613126565b6136da600f54846143bd565b905080600f81905550612801600560009054906101000a90046001600160a01b03166001600160a01b031663f851a4406040518163ffffffff1660e01b815260040160206040518083038186803b15801561373457600080fd5b505afa158015613748573d6000803e3d6000fd5b505050506040513d602081101561375e57600080fd5b5051846143f7565b6005546040805163d02f735160e01b81523060048201526001600160a01b038781166024830152868116604483015285811660648301526084820185905291516000938493169163d02f73519160a480830192602092919082900301818787803b1580156137d357600080fd5b505af11580156137e7573d6000803e3d6000fd5b505050506040513d60208110156137fd57600080fd5b50519050801561381457612aa26003601d83614143565b846001600160a01b0316846001600160a01b0316141561383a57612aa26006601e613126565b613842615b45565b6001600160a01b0385166000908152601260205260409020546138659085613443565b602083018190528282600381111561387957fe5b600381111561388457fe5b905250600090508151600381111561389857fe5b146138c2576138b96009601c836000015160038111156138b457fe5b614143565b92505050611610565b6138e1846040518060200160405280666379da05b60000815250614df8565b608082018190526138f39085906143bd565b606082015261390061293c565b60c083018190528282600381111561391457fe5b600381111561391f57fe5b905250600090508151600381111561393357fe5b14613985576040805162461bcd60e51b815260206004820152601860248201527f65786368616e67652072617465206d617468206572726f720000000000000000604482015290519081900360640190fd5b6139a560405180602001604052808360c001518152508260800151614db1565b60a08201819052600e546139b89161340d565b60e082015260115460808201516139cf91906143bd565b6101008201526001600160a01b03861660009081526012602052604090205460608201516139fd91906141cc565b6040830181905282826003811115613a1157fe5b6003811115613a1c57fe5b9052506000905081516003811115613a3057fe5b14613a4c576138b96009601b836000015160038111156138b457fe5b60e0810151600e556101008101516011556020808201516001600160a01b0380881660008181526012855260408082209490945583860151928b16808252908490209290925560608501518351908152925191939092600080516020615d96833981519152929081900390910190a36080810151604080519182525130916001600160a01b03881691600080516020615d968339815191529181900360200190a360a081015160e082015160408051308152602081019390935282810191909152517fa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc59181900360600190a16000979650505050505050565b600080613b5181612808565b6000613b5b611c06565b90508015613b795761181b816011811115613b7257fe5b600a613126565b61182c3385614e20565b600080613b8f81612808565b6000613b99611c06565b90508015613bb05761181b81601181111561328557fe5b61182c3385600061447c565b6000806000613bca81612808565b6000613bd4611c06565b90508015613bff57613bf2816011811115613beb57fe5b6011613126565b935060009250613c969050565b846001600160a01b031663a6afed956040518163ffffffff1660e01b8152600401602060405180830381600087803b158015613c3a57600080fd5b505af1158015613c4e573d6000803e3d6000fd5b505050506040513d6020811015613c6457600080fd5b505190508015613c8457613bf2816011811115613c7d57fe5b6012613126565b613c9033888888615166565b93509350505b613c9f816128d1565b50935093915050565b60055460408051631200453160e11b81523060048201526001600160a01b0386811660248301528581166044830152606482018590529151600093849384939116916324008a629160848082019260209290919082900301818787803b158015613d1157600080fd5b505af1158015613d25573d6000803e3d6000fd5b505050506040513d6020811015613d3b57600080fd5b505190508015613d5f57613d526003604383614143565b925060009150613ff09050565b613d67612320565b600b5414613d7b57613d52600a6044613126565b613d83615b92565b6001600160a01b0386166000908152601460205260409020600101546060820152613dad86613298565b6080830181905260208301826003811115613dc457fe5b6003811115613dcf57fe5b9052506000905081602001516003811115613de657fe5b14613e1057613e0260096042836020015160038111156138b457fe5b935060009250613ff0915050565b600019851415613e295760808101516040820152613e31565b604081018590525b613e3f878260400151615658565b60e082018190526080820151613e5491613443565b60a0830181905260208301826003811115613e6b57fe5b6003811115613e7657fe5b9052506000905081602001516003811115613e8d57fe5b14613ec95760405162461bcd60e51b815260040180806020018281038252603a815260200180615d33603a913960400191505060405180910390fd5b613ed9600d548260e00151613443565b60c0830181905260208301826003811115613ef057fe5b6003811115613efb57fe5b9052506000905081602001516003811115613f1257fe5b14613f4e5760405162461bcd60e51b8152600401808060200182810382526031815260200180615db66031913960400191505060405180910390fd5b60a080820180516001600160a01b03808a16600081815260146020908152604091829020948555600c5460019095019490945560c0870151600d81905560e088015195518251948f16855294840192909252828101949094526060820192909252608081019190915290517f1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1929181900390910190a160e00151600093509150505b935093915050565b600073a731585ab05fc9f83555cf9bff8f58ee94e18f856001600160a01b031663dd86fea16040518163ffffffff1660e01b815260040160206040518083038186803b158015611ec757600080fd5b60008060008061405787876141cc565b9092509050600082600381111561406a57fe5b1461407b5750915060009050613ff0565b6140858186613443565b935093505050935093915050565b600061409d615b32565b6000806140b286670de0b6b3a764000061494c565b909250905060008260038111156140c557fe5b146140e457506040805160208101909152600081529092509050612eb5565b6000806140f1838861498b565b9092509050600082600381111561410457fe5b1461412657506040805160208101909152600081529094509250612eb5915050565b604080516020810190915290815260009890975095505050505050565b60007f45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa084601181111561417257fe5b84606381111561417e57fe5b604080519283526020830191909152818101859052519081900360600190a160038460118111156141ab57fe5b146141c1578360118111156141bc57fe5b611610565b506103e80192915050565b6000808383018481106141e457600092509050612eb5565b506002915060009050612eb5565b60006141fc615b32565b60008061420d86600001518661494c565b9092509050600082600381111561422057fe5b1461423f57506040805160208101909152600081529092509050612eb5565b60408051602081019091529081526000969095509350505050565b51670de0b6b3a7640000900490565b6114a7565b606060006060856001600160a01b0316856040518082805190602001908083835b602083106142ae5780518252601f19909201916020918201910161428f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614310576040519150601f19603f3d011682016040523d82523d6000602084013e614315565b606091505b5091509150816143b45780511561432f5780518082602001fd5b8360405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614379578181015183820152602001614361565b50505050905090810190601f1680156143a65780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b95945050505050565b6000611a9d8383604051806040016040528060158152602001747375627472616374696f6e20756e646572666c6f7760581b815250615835565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091018252602081810180516001600160e01b031663a9059cbb60e01b1790528251808401909352601983527f544f4b454e5f5452414e534645525f4f55545f4641494c454400000000000000908301526144789161588f565b5050565b6000821580614489575081155b6144c45760405162461bcd60e51b8152600401808060200182810382526034815260200180615e4f6034913960400191505060405180910390fd5b6144cc615bd8565b6144d461293c565b60408301819052602083018260038111156144eb57fe5b60038111156144f657fe5b905250600090508160200151600381111561450d57fe5b14614531576145296009602e836020015160038111156138b457fe5b915050611a9d565b83156145b25760608101849052604080516020810182529082015181526145589085612e68565b608083018190526020830182600381111561456f57fe5b600381111561457a57fe5b905250600090508160200151600381111561459157fe5b146145ad576145296009602c836020015160038111156138b457fe5b61462b565b6145ce836040518060200160405280846040015181525061591c565b60608301819052602083018260038111156145e557fe5b60038111156145f057fe5b905250600090508160200151600381111561460757fe5b14614623576145296009602d836020015160038111156138b457fe5b608081018390525b60055460608201516040805163eabe7d9160e01b81523060048201526001600160a01b03898116602483015260448201939093529051600093929092169163eabe7d919160648082019260209290919082900301818787803b15801561469057600080fd5b505af11580156146a4573d6000803e3d6000fd5b505050506040513d60208110156146ba57600080fd5b5051905080156146da576146d16003602b83614143565b92505050611a9d565b6146e2612320565b600b54146146f6576146d1600a602f613126565b6147066011548360600151613443565b60a084018190526020840182600381111561471d57fe5b600381111561472857fe5b905250600090508260200151600381111561473f57fe5b1461475b576146d160096031846020015160038111156138b457fe5b6001600160a01b03861660009081526012602052604090205460608301516147839190613443565b60c084018190526020840182600381111561479a57fe5b60038111156147a557fe5b90525060009050826020015160038111156147bc57fe5b146147d8576146d160096030846020015160038111156138b457fe5b81608001516147e5612ebc565b10156147f7576146d1600e6032613126565b60a082015160115560c08201516001600160a01b038716600090815260126020526040902055608082015161482d9087906143f7565b6060820151604080519182525130916001600160a01b03891691600080516020615d968339815191529181900360200190a36080820151606080840151604080516001600160a01b038b168152602081019490945283810191909152517fe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a9299281900390910190a160055460808301516060840151604080516351dff98960e01b81523060048201526001600160a01b038b81166024830152604482019490945260648101929092525191909216916351dff98991608480830192600092919082900301818387803b15801561492157600080fd5b505af1158015614935573d6000803e3d6000fd5b5060009250614942915050565b9695505050505050565b6000808361495f57506000905080612eb5565b8383028385828161496c57fe5b041461498057506002915060009050612eb5565b600092509050612eb5565b6000808261499f5750600190506000612eb5565b60008385816149aa57fe5b04915091509250929050565b60055460408051634ef4c3e160e01b81523060048201526001600160a01b03858116602483015260448201859052915160009384938493911691634ef4c3e19160648082019260209290919082900301818787803b158015614a1757600080fd5b505af1158015614a2b573d6000803e3d6000fd5b505050506040513d6020811015614a4157600080fd5b505190508015614a6557614a586003602183614143565b925060009150612eb59050565b614a6d612320565b600b5414614a8157614a58600a6024613126565b614a89615bd8565b614a9161293c565b6040830181905260208301826003811115614aa857fe5b6003811115614ab357fe5b9052506000905081602001516003811115614aca57fe5b14614af457614ae660096023836020015160038111156138b457fe5b935060009250612eb5915050565b614afe8686615658565b60c0820181905260408051602081018252908301518152614b1f919061591c565b6060830181905260208301826003811115614b3657fe5b6003811115614b4157fe5b9052506000905081602001516003811115614b5857fe5b14614baa576040805162461bcd60e51b815260206004820181905260248201527f4d494e545f45584348414e47455f43414c43554c4154494f4e5f4641494c4544604482015290519081900360640190fd5b614bba601154826060015161340d565b60808201526001600160a01b0386166000908152601260205260409020546060820151614be7919061340d565b60a0820181905260808201516011556001600160a01b0387166000818152601260209081526040918290209390935560c084015160608086015183519485529484019190915282820193909352517f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f929181900390910190a1606081015160408051918252516001600160a01b038816913091600080516020615d968339815191529181900360200190a360055460c08201516060830151604080516341c728b960e01b81523060048201526001600160a01b038b81166024830152604482019490945260648101929092525191909216916341c728b991608480830192600092919082900301818387803b158015614cff57600080fd5b505af1158015614d13573d6000803e3d6000fd5b5060009250614d20915050565b8160c001519350935050509250929050565b600083830182858210156114e45760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315614379578181015183820152602001614361565b614d8f615b32565b6040518060200160405280614da8856000015185615933565b90529392505050565b6000614dbb615b32565b614dc58484614d87565b90506116108161425a565b6000614dda615b32565b614de48585614d87565b90506143b4614df28261425a565b8461340d565b6000670de0b6b3a7640000614e11848460000151615933565b81614e1857fe5b049392505050565b6005546040805163368f515360e21b81523060048201526001600160a01b0385811660248301526044820185905291516000938493169163da3d454c91606480830192602092919082900301818787803b158015614e7d57600080fd5b505af1158015614e91573d6000803e3d6000fd5b505050506040513d6020811015614ea757600080fd5b505190508015614ec657614ebe6003601083614143565b9150506110f2565b614ece612320565b600b5414614ee257614ebe600a600c613126565b6000614eec612ebc565b905083811015614f0b57614f02600e600b613126565b925050506110f2565b614f13615c16565b614f1c86613298565b6020830181905282826003811115614f3057fe5b6003811115614f3b57fe5b9052506000905081516003811115614f4f57fe5b14614f7457614f6a600980836000015160038111156138b457fe5b93505050506110f2565b614f828160200151866141cc565b6040830181905282826003811115614f9657fe5b6003811115614fa157fe5b9052506000905081516003811115614fb557fe5b14614fd157614f6a6009600e836000015160038111156138b457fe5b6005546040808301518151631de6c8a560e21b8152306004820152602481019190915290516001600160a01b039092169163779b2294916044808201926020929091908290030181600087803b15801561502a57600080fd5b505af115801561503e573d6000803e3d6000fd5b505050506040513d602081101561505457600080fd5b50519250821561506b57614f6a6003601085614143565b615077600d54866141cc565b606083018190528282600381111561508b57fe5b600381111561509657fe5b90525060009050815160038111156150aa57fe5b146150c657614f6a6009600d836000015160038111156138b457fe5b6040808201516001600160a01b0388166000908152601460205291909120908155600c546001909101556060810151600d5561510286866143f7565b60408082015160608084015183516001600160a01b038b168152602081018a9052808501939093529082015290517f13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab809181900360800190a160009695505050505050565b60055460408051632fe3f38f60e11b81523060048201526001600160a01b0384811660248301528781166044830152868116606483015260848201869052915160009384938493911691635fc7e71e9160a48082019260209290919082900301818787803b1580156151d757600080fd5b505af11580156151eb573d6000803e3d6000fd5b505050506040513d602081101561520157600080fd5b505190508015615225576152186003601483614143565b92506000915061564f9050565b61522d612320565b600b541461524157615218600a6018613126565b615249612320565b846001600160a01b0316636c540baf6040518163ffffffff1660e01b815260040160206040518083038186803b15801561528257600080fd5b505afa158015615296573d6000803e3d6000fd5b505050506040513d60208110156152ac57600080fd5b5051146152bf57615218600a6013613126565b866001600160a01b0316866001600160a01b031614156152e55761521860066019613126565b846152f65761521860076017613126565b60001985141561530c5761521860076016613126565b60008061531a898989613ca8565b9092509050811561534a5761533b82601181111561533457fe5b601a613126565b94506000935061564f92505050565b6005546040805163c488847b60e01b81523060048201526001600160a01b038981166024830152604482018590528251600094859492169263c488847b926064808301939192829003018186803b1580156153a457600080fd5b505afa1580156153b8573d6000803e3d6000fd5b505050506040513d60408110156153ce57600080fd5b508051602090910151909250905081156154195760405162461bcd60e51b8152600401808060200182810382526033815260200180615de76033913960400191505060405180910390fd5b80886001600160a01b03166370a082318c6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561547057600080fd5b505afa158015615484573d6000803e3d6000fd5b505050506040513d602081101561549a57600080fd5b505110156154ef576040805162461bcd60e51b815260206004820152601860248201527f4c49515549444154455f5345495a455f544f4f5f4d5543480000000000000000604482015290519081900360640190fd5b60006001600160a01b0389163014156155155761550e308d8d85613766565b905061559f565b6040805163b2a02ff160e01b81526001600160a01b038e811660048301528d81166024830152604482018590529151918b169163b2a02ff1916064808201926020929091908290030181600087803b15801561557057600080fd5b505af1158015615584573d6000803e3d6000fd5b505050506040513d602081101561559a57600080fd5b505190505b80156155e9576040805162461bcd60e51b81526020600482015260146024820152731d1bdad95b881cd95a5e9d5c994819985a5b195960621b604482015290519081900360640190fd5b604080516001600160a01b03808f168252808e1660208301528183018790528b1660608201526080810184905290517f298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb529181900360a00190a16000975092955050505050505b94509492505050565b601554604080516370a0823160e01b8152306004820152905160009283926001600160a01b03909116916370a0823191602480820192602092909190829003018186803b1580156156a857600080fd5b505afa1580156156bc573d6000803e3d6000fd5b505050506040513d60208110156156d257600080fd5b5051604080516001600160a01b038716602482015230604482015260648082018790528251808303909101815260849091018252602081810180516001600160e01b03166323b872dd60e01b1790528251808401909352601883527f544f4b454e5f5452414e534645525f494e5f4641494c454400000000000000009083015291925061575f919061588f565b601554604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156157aa57600080fd5b505afa1580156157be573d6000803e3d6000fd5b505050506040513d60208110156157d457600080fd5b505190508181101561582d576040805162461bcd60e51b815260206004820152601a60248201527f544f4b454e5f5452414e534645525f494e5f4f564552464c4f57000000000000604482015290519081900360640190fd5b039392505050565b600081848411156158875760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315614379578181015183820152602001614361565b505050900390565b6015546060906158a9906001600160a01b0316848461426e565b805190915015615917578080602001905160208110156158c857600080fd5b505182906116b05760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315614379578181015183820152602001614361565b505050565b6000806000615929615b32565b612e7f8686615975565b6000611a9d83836040518060400160405280601781526020017f6d756c7469706c69636174696f6e206f766572666c6f770000000000000000008152506159d4565b600061597f615b32565b600080615994670de0b6b3a76400008761494c565b909250905060008260038111156159a757fe5b146159c657506040805160208101909152600081529092509050612eb5565b612eae818660000151614093565b60008315806159e1575082155b156159ee57506000611a9d565b838302838582816159fb57fe5b041483906114e45760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315614379578181015183820152602001614361565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10615a8b57805160ff1916838001178555615ab8565b82800160010185558215615ab8579182015b82811115615ab8578251825591602001919060010190615a9d565b506118e8929150615c3f565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10615b055782800160ff19823516178555615ab8565b82800160010185558215615ab8579182015b82811115615ab8578235825591602001919060010190615b17565b6040518060200160405280600081525090565b604080516101208101909152806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040805161010081019091528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040805160e0810190915280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b604080516080810190915280600081526020016000815260200160008152602001600081525090565b6114a491905b808211156118e85760008155600101615c4556fe6d61726b6574206d6179206f6e6c7920626520696e697469616c697a6564206f6e6365696e697469616c2065786368616e67652072617465206d7573742062652067726561746572207468616e207a65726f2e6f6e6c79207468652061646d696e206d6179207365742074686520636f6d702d6c696b652064656c656761746573657474696e6720696e7465726573742072617465206d6f64656c206661696c6564626f72726f7742616c616e636553746f7265643a20626f72726f7742616c616e636553746f726564496e7465726e616c206661696c656452455041595f424f52524f575f4e45575f4143434f554e545f424f52524f575f42414c414e43455f43414c43554c4154494f4e5f4641494c45446f6e6c7920467573652061646d696e206d617920696e697469616c697a6520746865206d61726b6574ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef52455041595f424f52524f575f4e45575f544f54414c5f42414c414e43455f43414c43554c4154494f4e5f4641494c45444c49515549444154455f434f4d5054524f4c4c45525f43414c43554c4154455f414d4f554e545f5345495a455f4641494c454465786368616e67655261746553746f7265643a2065786368616e67655261746553746f726564496e7465726e616c206661696c65646f6e65206f662072656465656d546f6b656e73496e206f722072656465656d416d6f756e74496e206d757374206265207a65726fa265627a7a723158206bb55a5746461828ebe5f58429e48351bdca5941845d72ac9a60d0db0eed14ce64736f6c63430005110032", + "deployedBytecode": "0x6080604052600436106103765760003560e01c8063852a12e3116101d1578063ae9d70b011610102578063dc028ab1116100a0578063f5e3c4621161006f578063f5e3c46214610f69578063f8f9da2814610fac578063fca7820b14610fc1578063fe9c44ae14610feb57610376565b8063dc028ab114610ed1578063dd62ed3e14610ee6578063f2b3abbd14610f21578063f3fdb15a14610f5457610376565b8063c37f68e2116100dc578063c37f68e214610e0f578063c5ebeaec14610e68578063db006a7514610e92578063dbfe7c1914610ebc57610376565b8063ae9d70b014610da2578063b2a02ff114610db7578063bd6d894d14610dfa57610376565b8063a0712d681161016f578063a7b820df11610149578063a7b820df14610d15578063a9059cbb14610d3f578063aa5af0fd14610d78578063ac784ddc14610d8d57610376565b8063a0712d6814610b7a578063a0b0d28914610ba4578063a6afed9514610d0057610376565b806391dd36c6116101ab57806391dd36c614610ade57806395d89b4114610b0857806395dd919314610b1d578063a03dce8d14610b5057610376565b8063852a12e314610a8a5780638d02d9a114610ab45780638f840ddd14610ac957610376565b80633b1d21a2116102ab57806361feacff116102495780636f307dc3116102235780636f307dc3146109fa57806370a0823114610a0f57806373acee9814610a425780637f1e06be14610a5757610376565b806361feacff146109bb5780636752e702146109d05780636c540baf146109e557610376565b806356e677281161028557806356e67728146108d05780635c60da1b1461094b5780635fe3b5671461097c578063601a0bf11461099157610376565b80633b1d21a21461081457806347bd37181461082957806350d85b731461083e57610376565b8063182df0f5116103185780632608f818116102f25780632608f818146106b2578063313ce567146106eb57806334154d4c146107165780633af9e669146107e157610376565b8063182df0f5146106525780631db789441461066757806323b872dd1461066f57610376565b80630f8855e8116103545780630f8855e81461048e578063173b9904146105f557806317bfdfbc1461060a57806318160ddd1461063d57610376565b806306fdde031461037b578063095ea7b3146104055780630e75270214610452575b600080fd5b34801561038757600080fd5b50610390611000565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103ca5781810151838201526020016103b2565b50505050905090810190601f1680156103f75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561041157600080fd5b5061043e6004803603604081101561042857600080fd5b506001600160a01b03813516906020013561108b565b604080519115158252519081900360200190f35b34801561045e57600080fd5b5061047c6004803603602081101561047557600080fd5b50356110f8565b60408051918252519081900360200190f35b34801561049a57600080fd5b506105f360048036036101008110156104b257600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b8111156104ec57600080fd5b8201836020820111156104fe57600080fd5b803590602001918460018302840111600160201b8311171561051f57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561057157600080fd5b82018360208201111561058357600080fd5b803590602001918460018302840111600160201b831117156105a457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505060ff833516935050506020810135906040013561110e565b005b34801561060157600080fd5b5061047c6113bc565b34801561061657600080fd5b5061047c6004803603602081101561062d57600080fd5b50356001600160a01b03166113c2565b34801561064957600080fd5b5061047c61143e565b34801561065e57600080fd5b5061047c611444565b6105f36114a7565b34801561067b57600080fd5b5061043e6004803603606081101561069257600080fd5b506001600160a01b038135811691602081013590911690604001356114a9565b3480156106be57600080fd5b5061047c600480360360408110156106d557600080fd5b506001600160a01b0381351690602001356114d7565b3480156106f757600080fd5b506107006114ed565b6040805160ff9092168252519081900360200190f35b34801561072257600080fd5b506105f36004803603604081101561073957600080fd5b810190602081018135600160201b81111561075357600080fd5b82018360208201111561076557600080fd5b803590602001918460018302840111600160201b8311171561078657600080fd5b919390929091602081019035600160201b8111156107a357600080fd5b8201836020820111156107b557600080fd5b803590602001918460018302840111600160201b831117156107d657600080fd5b5090925090506114f6565b3480156107ed57600080fd5b5061047c6004803603602081101561080457600080fd5b50356001600160a01b0316611562565b34801561082057600080fd5b5061047c611618565b34801561083557600080fd5b5061047c611627565b34801561084a57600080fd5b506105f36004803603606081101561086157600080fd5b6001600160a01b03823516916020810135151591810190606081016040820135600160201b81111561089257600080fd5b8201836020820111156108a457600080fd5b803590602001918460018302840111600160201b831117156108c557600080fd5b50909250905061162d565b3480156108dc57600080fd5b506105f3600480360360208110156108f357600080fd5b810190602081018135600160201b81111561090d57600080fd5b82018360208201111561091f57600080fd5b803590602001918460018302840111600160201b8311171561094057600080fd5b5090925090506116b6565b34801561095757600080fd5b506109606117c9565b604080516001600160a01b039092168252519081900360200190f35b34801561098857600080fd5b506109606117d8565b34801561099d57600080fd5b5061047c600480360360208110156109b457600080fd5b50356117e7565b3480156109c757600080fd5b5061047c611838565b3480156109dc57600080fd5b5061047c61183e565b3480156109f157600080fd5b5061047c611849565b348015610a0657600080fd5b5061096061184f565b348015610a1b57600080fd5b5061047c60048036036020811015610a3257600080fd5b50356001600160a01b031661185e565b348015610a4e57600080fd5b5061047c611879565b348015610a6357600080fd5b506105f360048036036020811015610a7a57600080fd5b50356001600160a01b03166118ec565b348015610a9657600080fd5b5061047c60048036036020811015610aad57600080fd5b5035611991565b348015610ac057600080fd5b5061047c61199c565b348015610ad557600080fd5b5061047c6119a2565b348015610aea57600080fd5b5061047c60048036036020811015610b0157600080fd5b50356119a8565b348015610b1457600080fd5b506103906119e5565b348015610b2957600080fd5b5061047c60048036036020811015610b4057600080fd5b50356001600160a01b0316611a40565b348015610b5c57600080fd5b5061047c60048036036020811015610b7357600080fd5b5035611aa4565b348015610b8657600080fd5b5061047c60048036036020811015610b9d57600080fd5b5035611ae1565b348015610bb057600080fd5b506105f3600480360360e0811015610bc757600080fd5b6001600160a01b0382358116926020810135821692604082013590921691810190608081016060820135600160201b811115610c0257600080fd5b820183602082011115610c1457600080fd5b803590602001918460018302840111600160201b83111715610c3557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115610c8757600080fd5b820183602082011115610c9957600080fd5b803590602001918460018302840111600160201b83111715610cba57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505082359350505060200135611aed565b348015610d0c57600080fd5b5061047c611c06565b348015610d2157600080fd5b5061047c60048036036020811015610d3857600080fd5b5035611dcb565b348015610d4b57600080fd5b5061043e60048036036040811015610d6257600080fd5b506001600160a01b038135169060200135611e08565b348015610d8457600080fd5b5061047c611e35565b348015610d9957600080fd5b5061043e611e3b565b348015610dae57600080fd5b5061047c611e40565b348015610dc357600080fd5b5061047c60048036036060811015610dda57600080fd5b506001600160a01b03813581169160208101359091169060400135611ef8565b348015610e0657600080fd5b5061047c611f1c565b348015610e1b57600080fd5b50610e4260048036036020811015610e3257600080fd5b50356001600160a01b0316611f90565b604080519485526020850193909352838301919091526060830152519081900360800190f35b348015610e7457600080fd5b5061047c60048036036020811015610e8b57600080fd5b5035612025565b348015610e9e57600080fd5b5061047c60048036036020811015610eb557600080fd5b5035612030565b348015610ec857600080fd5b5061047c61203b565b348015610edd57600080fd5b5061047c612041565b348015610ef257600080fd5b5061047c60048036036040811015610f0957600080fd5b506001600160a01b0381358116916020013516612047565b348015610f2d57600080fd5b5061047c60048036036020811015610f4457600080fd5b50356001600160a01b0316612072565b348015610f6057600080fd5b506109606120ac565b348015610f7557600080fd5b5061047c60048036036060811015610f8c57600080fd5b506001600160a01b038135811691602081013591604090910135166120bb565b348015610fb857600080fd5b5061047c6120d3565b348015610fcd57600080fd5b5061047c60048036036020811015610fe457600080fd5b5035612148565b348015610ff757600080fd5b5061043e612185565b6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156110835780601f1061105857610100808354040283529160200191611083565b820191906000526020600020905b81548152906001019060200180831161106657829003601f168201915b505050505081565b3360008181526013602090815260408083206001600160a01b03871680855290835281842086905581518681529151939493909284927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a360019150505b92915050565b6000806111048361218a565b509150505b919050565b3373a731585ab05fc9f83555cf9bff8f58ee94e18f85146111605760405162461bcd60e51b8152600401808060200182810382526029815260200180615d6d6029913960400191505060405180910390fd5b600b541580156111705750600c54155b6111ab5760405162461bcd60e51b8152600401808060200182810382526023815260200180615c5a6023913960400191505060405180910390fd5b6007869055856111ec5760405162461bcd60e51b8152600401808060200182810382526030815260200180615c7d6030913960400191505060405180910390fd5b60006111f7896121ed565b9050801561124c576040805162461bcd60e51b815260206004820152601a60248201527f73657474696e6720636f6d7074726f6c6c6572206661696c6564000000000000604482015290519081900360640190fd5b611254612320565b600b55670de0b6b3a7640000600c5561126c88612324565b905080156112ab5760405162461bcd60e51b8152600401808060200182810382526022815260200180615cda6022913960400191505060405180910390fd5b85516112be906002906020890190615a4a565b5084516112d2906003906020880190615a4a565b506004805460ff191660ff86161790556112eb8361262a565b90508015611340576040805162461bcd60e51b815260206004820152601d60248201527f73657474696e67207265736572766520666163746f72206661696c6564000000604482015290519081900360640190fd5b611349826126e3565b9050801561139e576040805162461bcd60e51b815260206004820152601860248201527f73657474696e672061646d696e20666565206661696c65640000000000000000604482015290519081900360640190fd5b50506001805460ff60b01b1916600160b01b17905550505050505050565b600a5481565b6000806113ce81612808565b60006113d8611c06565b14611423576040805162461bcd60e51b81526020600482015260166024820152751858d8dc9d59481a5b9d195c995cdd0819985a5b195960521b604482015290519081900360640190fd5b61142c83611a40565b91505b611438816128d1565b50919050565b60115481565b600080600061145161293c565b9092509050600082600381111561146457fe5b146114a05760405162461bcd60e51b8152600401808060200182810382526035815260200180615e1a6035913960400191505060405180910390fd5b9150505b90565b565b6000806114b581612808565b60006114c3338787876129fc565b1491506114cf816128d1565b509392505050565b6000806114e48484612c88565b50949350505050565b60045460ff1681565b6114fe612ced565b611542576040805162461bcd60e51b815260206004820152601060248201526f31b0b63632b9103737ba1030b236b4b760811b604482015290519081900360640190fd5b61154e60028585615ac4565b5061155b60038383615ac4565b5050505050565b600061156c615b32565b604051806020016040528061157f611f1c565b90526001600160a01b0384166000908152601260205260408120549192509081906115ab908490612e68565b909250905060008260038111156115be57fe5b14611610576040805162461bcd60e51b815260206004820152601f60248201527f62616c616e636520636f756c64206e6f742062652063616c63756c6174656400604482015290519081900360640190fd5b949350505050565b6000611622612ebc565b905090565b600d5481565b611635612ced565b61166f576040805162461bcd60e51b815260206004820152600660248201526510b0b236b4b760d11b604482015290519081900360640190fd5b6116b0848484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612f0a92505050565b50505050565b7366f4856f1bbd1eb09e1c8d9d646f5a3a193da56973cae4210e6676727ea4e0fd9ba5dfb95831356a16333014806116f157506116f1612ced565b61172a576040805162461bcd60e51b815260206004820152600560248201526410b9b2b63360d91b604482015290519081900360640190fd5b6000611734611c06565b14611770576040805162461bcd60e51b81526020600482015260076024820152662161636372756560c81b604482015290519081900360640190fd5b6001600160a01b0380831660008181526012602090815260408083208054908490559486168084529281902085905580518581529051929392600080516020615d96833981519152929181900390910190a35050505050565b6000546001600160a01b031681565b6005546001600160a01b031681565b6000806117f381612808565b60006117fd611c06565b905080156118235761181b81601181111561181457fe5b603b613126565b92505061142f565b61182c8461318c565b925050611438816128d1565b600f5481565b666379da05b6000081565b600b5481565b6015546001600160a01b031681565b6001600160a01b031660009081526012602052604090205490565b60008061188581612808565b600061188f611c06565b146118da576040805162461bcd60e51b81526020600482015260166024820152751858d8dc9d59481a5b9d195c995cdd0819985a5b195960521b604482015290519081900360640190fd5b600d5491506118e8816128d1565b5090565b6118f4612ced565b61192f5760405162461bcd60e51b815260040180806020018281038252602d815260200180615cad602d913960400191505060405180910390fd5b601554604080516317066a5760e21b81526001600160a01b03848116600483015291519190921691635c19a95c91602480830192600092919082900301818387803b15801561197d57600080fd5b505af115801561155b573d6000803e3d6000fd5b60006110f282613258565b60085481565b600e5481565b6000806119b481612808565b60006119be611c06565b905080156119dc5761181b8160118111156119d557fe5b6052613126565b61182c846126e3565b6003805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156110835780601f1061105857610100808354040283529160200191611083565b6000806000611a4e84613298565b90925090506000826003811115611a6157fe5b14611a9d5760405162461bcd60e51b8152600401808060200182810382526037815260200180615cfc6037913960400191505060405180910390fd5b9392505050565b600080611ab081612808565b6000611aba611c06565b90508015611ad85761181b816011811115611ad157fe5b6033613126565b61182c8461334c565b600080611104836133cd565b60006702c68af0bb14000090506000886001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015611b3557600080fd5b505afa158015611b49573d6000803e3d6000fd5b505050506040513d6020811015611b5f57600080fd5b50519050611b738888848989868a8a61110e565b601580546001600160a01b0319166001600160a01b038b81169190911791829055604080516318160ddd60e01b8152905192909116916318160ddd91600480820192602092909190829003018186803b158015611bcf57600080fd5b505afa158015611be3573d6000803e3d6000fd5b505050506040513d6020811015611bf957600080fd5b5050505050505050505050565b600080611c11612320565b905080600b541415611c275760009150506114a4565b6000611c31612ebc565b90506000600660009054906101000a90046001600160a01b03166001600160a01b03166315f2405383600d54611c76600e54611c71600f5460105461340d565b61340d565b6040518463ffffffff1660e01b815260040180848152602001838152602001828152602001935050505060206040518083038186803b158015611cb857600080fd5b505afa158015611ccc573d6000803e3d6000fd5b505050506040513d6020811015611ce257600080fd5b5051905065048c27395000811115611d41576040805162461bcd60e51b815260206004820152601c60248201527f626f72726f772072617465206973206162737572646c79206869676800000000604482015290519081900360640190fd5b600080611d5085600b54613443565b90925090506000826003811115611d6357fe5b14611db5576040805162461bcd60e51b815260206004820152601f60248201527f636f756c64206e6f742063616c63756c61746520626c6f636b2064656c746100604482015290519081900360640190fd5b611dc185858584613466565b9550505050505090565b600080611dd781612808565b6000611de1611c06565b90508015611dff5761181b816011811115611df857fe5b6037613126565b61182c8461367e565b600080611e1481612808565b6000611e22333387876129fc565b149150611e2e816128d1565b5092915050565b600c5481565b600081565b6006546000906001600160a01b031663b8168816611e5c612ebc565b600d54611e73600e54611c71600f5460105461340d565b600854600954600a5401016040518563ffffffff1660e01b81526004018085815260200184815260200183815260200182815260200194505050505060206040518083038186803b158015611ec757600080fd5b505afa158015611edb573d6000803e3d6000fd5b505050506040513d6020811015611ef157600080fd5b5051905090565b60006001611f0581612808565b611f1133868686613766565b91506114cf816128d1565b600080611f2881612808565b6000611f32611c06565b14611f7d576040805162461bcd60e51b81526020600482015260166024820152751858d8dc9d59481a5b9d195c995cdd0819985a5b195960521b604482015290519081900360640190fd5b611f85611444565b91506118e8816128d1565b6001600160a01b038116600090815260126020526040812054819081908190818080611fbb89613298565b935090506000816003811115611fcd57fe5b14611feb5760095b97506000965086955085945061201e9350505050565b611ff361293c565b92509050600081600381111561200557fe5b14612011576009611fd5565b5060009650919450925090505b9193509193565b60006110f282613b45565b60006110f282613b83565b60095481565b60105481565b6001600160a01b03918216600090815260136020908152604080832093909416825291909152205490565b60008061207d611c06565b905080156120a35761209b81601181111561209457fe5b604b613126565b915050611109565b611a9d83612324565b6006546001600160a01b031681565b6000806120c9858585613bbc565b5095945050505050565b6006546000906001600160a01b03166315f240536120ef612ebc565b600d54612106600e54611c71600f5460105461340d565b6040518463ffffffff1660e01b815260040180848152602001838152602001828152602001935050505060206040518083038186803b158015611ec757600080fd5b60008061215481612808565b600061215e611c06565b9050801561217c5761181b81601181111561217557fe5b6059613126565b61182c8461262a565b600181565b600080600061219881612808565b60006121a2611c06565b905080156121cd576121c08160118111156121b957fe5b6041613126565b9350600092506121de9050565b6121d8333387613ca8565b93509350505b6121e7816128d1565b50915091565b600080600560009054906101000a90046001600160a01b03169050826001600160a01b0316627e3dd26040518163ffffffff1660e01b815260040160206040518083038186803b15801561224057600080fd5b505afa158015612254573d6000803e3d6000fd5b505050506040513d602081101561226a57600080fd5b50516122bd576040805162461bcd60e51b815260206004820152601c60248201527f6d61726b6572206d6574686f642072657475726e65642066616c736500000000604482015290519081900360640190fd5b600580546001600160a01b0319166001600160a01b03858116918217909255604080519284168352602083019190915280517f7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d9281900390910190a16000611a9d565b4390565b60008061232f612ced565b61233f5761209b6001604d613126565b612347612320565b600b541461235b5761209b600a604c613126565b600660009054906101000a90046001600160a01b03169050826001600160a01b0316632191f92a6040518163ffffffff1660e01b815260040160206040518083038186803b1580156123ac57600080fd5b505afa1580156123c0573d6000803e3d6000fd5b505050506040513d60208110156123d657600080fd5b5051612429576040805162461bcd60e51b815260206004820152601c60248201527f6d61726b6572206d6574686f642072657475726e65642066616c736500000000604482015290519081900360640190fd5b600680546001600160a01b0319166001600160a01b03858116918217909255604080519284168352602083019190915280517fedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f9269281900390910190a16001600160a01b0381161561255b5760408051600481526024810182526020810180516001600160e01b0316636cc1140b60e11b178152915181516001600160a01b0385169382918083835b602083106124f05780518252601f1990920191602091820191016124d1565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612552576040519150601f19603f3d011682016040523d82523d6000602084013e612557565b606091505b5050505b60408051600481526024810182526020810180516001600160e01b031663742a137b60e11b178152915181516001600160a01b0387169382918083835b602083106125b75780518252601f199092019160209182019101612598565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612619576040519150601f19603f3d011682016040523d82523d6000602084013e61261e565b606091505b5060009150611a9d9050565b6000612634612ced565b61264b576126446001605a613126565b9050611109565b612653612320565b600b541461266757612644600a605b613126565b670de0b6b3a764000061268761267f8460085461340d565b60095461340d565b1115612699576126446002605c613126565b600a805490839055604080518281526020810185905281517faaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460929181900390910190a16000611a9d565b60006126ed612320565b600b541461270157612644600a6054613126565b6000198214156127115760085491505b600061271b613ff8565b9050670de0b6b3a764000061273b612735600a548661340d565b8361340d565b111561274d5761209b60026055613126565b82600854146127b35761275e612ced565b61276e5761209b60016053613126565b6008805490849055604080518281526020810186905281517fcdd0b588250e1398549f79cfdb8217c186688822905d6715b0834ea1c865594a929181900390910190a1505b8060095414612801576009805490829055604080518281526020810184905281517f92eef861b6533b7d3417f39c2ad7b460eed4e88a32fa3604f30e718b7602e7dc929181900390910190a1505b6000611a9d565b600154600160b01b900460ff16612853576040805162461bcd60e51b815260206004820152600a6024820152691c994b595b9d195c995960b21b604482015290519081900360640190fd5b806128c157600560009054906101000a90046001600160a01b03166001600160a01b031663c90c20b16040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156128a857600080fd5b505af11580156128bc573d6000803e3d6000fd5b505050505b506001805460ff60b01b19169055565b6001805460ff60b01b1916600160b01b1790558061293957600560009054906101000a90046001600160a01b03166001600160a01b031663632e51426040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561197d57600080fd5b50565b601154600090819080612957575050600754600091506129f8565b6000612961612ebc565b9050600061296d615b32565b600061298f84600d5461298a600e54611c71600f5460105461340d565b614047565b9350905060008160038111156129a157fe5b146129b6579550600094506129f89350505050565b6129c08386614093565b9250905060008160038111156129d257fe5b146129e7579550600094506129f89350505050565b50516000955093506129f892505050565b9091565b600554604080516317b9b84b60e31b81523060048201526001600160a01b03868116602483015285811660448301526064820185905291516000938493169163bdcdc25891608480830192602092919082900301818787803b158015612a6157600080fd5b505af1158015612a75573d6000803e3d6000fd5b505050506040513d6020811015612a8b57600080fd5b505190508015612aaa57612aa26003605d83614143565b915050611610565b836001600160a01b0316856001600160a01b03161415612ad057612aa26002605e613126565b60006001600160a01b038781169087161415612aef5750600019612b17565b506001600160a01b038086166000908152601360209081526040808320938a16835292905220545b600080600080612b278589613443565b90945092506000846003811115612b3a57fe5b14612b5857612b4b6009605e613126565b9650505050505050611610565b6001600160a01b038a16600090815260126020526040902054612b7b9089613443565b90945091506000846003811115612b8e57fe5b14612b9f57612b4b6009605f613126565b6001600160a01b038916600090815260126020526040902054612bc290896141cc565b90945090506000846003811115612bd557fe5b14612be657612b4b60096060613126565b6001600160a01b03808b16600090815260126020526040808220859055918b168152208190556000198514612c3e576001600160a01b03808b166000908152601360209081526040808320938f168352929052208390555b886001600160a01b03168a6001600160a01b0316600080516020615d968339815191528a6040518082815260200191505060405180910390a35060009a9950505050505050505050565b6000806000612c9681612808565b6000612ca0611c06565b90508015612ccb57612cbe816011811115612cb757fe5b6040613126565b935060009250612cdc9050565b612cd6338787613ca8565b93509350505b612ce5816128d1565b509250929050565b600554604080516303e1469160e61b815290516000926001600160a01b031691829163f851a44091600480820192602092909190829003018186803b158015612d3557600080fd5b505afa158015612d49573d6000803e3d6000fd5b505050506040513d6020811015612d5f57600080fd5b50516001600160a01b031633148015612dd95750806001600160a01b0316630a755ec26040518163ffffffff1660e01b815260040160206040518083038186803b158015612dac57600080fd5b505afa158015612dc0573d6000803e3d6000fd5b505050506040513d6020811015612dd657600080fd5b50515b806114a057503373a731585ab05fc9f83555cf9bff8f58ee94e18f851480156114a05750806001600160a01b0316632f1069ba6040518163ffffffff1660e01b815260040160206040518083038186803b158015612e3657600080fd5b505afa158015612e4a573d6000803e3d6000fd5b505050506040513d6020811015612e6057600080fd5b505191505090565b6000806000612e75615b32565b612e7f86866141f2565b90925090506000826003811115612e9257fe5b14612ea35750915060009050612eb5565b6000612eae8261425a565b9350935050505b9250929050565b601554604080516370a0823160e01b815230600482015290516000926001600160a01b03169182916370a0823191602480820192602092909190829003018186803b158015612e3657600080fd5b600054604080516338e6a07360e11b81526001600160a01b039283166004820152918516602483015283151560448301525173a731585ab05fc9f83555cf9bff8f58ee94e18f85916371cd40e6916064808301926020929190829003018186803b158015612f7757600080fd5b505afa158015612f8b573d6000803e3d6000fd5b505050506040513d6020811015612fa157600080fd5b5051612fdc576040805162461bcd60e51b8152602060048201526005602482015264085a5b5c1b60da1b604482015290519081900360640190fd5b8115612fea57612fea614269565b600080546001600160a01b038581166001600160a01b0319831617835560405160206024820181815286516044840152865193909416946130d794309488949193849360649093019290860191908190849084905b8381101561305757818101518382015260200161303f565b50505050905090810190601f1680156130845780820380516001836020036101000a031916815260200191505b5060408051601f19818403018152918152602080830180516001600160e01b0316630adccee560e31b17905281518083019092526007825266216265636f6d6560c81b90820152909350915061426e9050565b50600054604080516001600160a01b038085168252909216602083015280517fd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a9281900390910190a150505050565b60007f45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa083601181111561315557fe5b83606381111561316157fe5b604080519283526020830191909152600082820152519081900360600190a1826011811115611a9d57fe5b600080613197612ced565b6131a75761209b6001603c613126565b6131af612320565b600b54146131c35761209b600a603e613126565b826131cc612ebc565b10156131de5761209b600e603d613126565b600e548311156131f45761209b6002603f613126565b613200600e54846143bd565b600e819055905061321133846143f7565b604080513381526020810185905280820183905290517f3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e9181900360600190a16000611a9d565b60008061326481612808565b600061326e611c06565b9050801561328c5761181b81601181111561328557fe5b602a613126565b61182c3360008661447c565b6001600160a01b0381166000908152601460205260408120805482918291829182916132cf57506000945084935061334792505050565b6132df8160000154600c5461494c565b909450925060008460038111156132f257fe5b14613307575091935060009250613347915050565b61331583826001015461498b565b9094509150600084600381111561332857fe5b1461333d575091935060009250613347915050565b5060009450925050505b915091565b600080613357612320565b600b541461336b5761209b600a6035613126565b82613374612ebc565b10156133865761209b600e6034613126565b60105483111561339c5761209b60026036613126565b6133a8601054846143bd565b6010819055905061280173a731585ab05fc9f83555cf9bff8f58ee94e18f85846143f7565b60008060006133db81612808565b60006133e5611c06565b90508015613403576121c08160118111156133fc57fe5b6020613126565b6121d833866149b6565b6000611a9d8383604051806040016040528060118152602001706164646974696f6e206f766572666c6f7760781b815250614d32565b60008083831161345a575060009050818303612eb5565b50600390506000612eb5565b6000613470615b32565b61348860405180602001604052808681525084614d87565b9050600061349882600d54614db1565b905060006134a882600d5461340d565b905060006134c96040518060200160405280600a5481525084600e54614dd0565b905060006134ea604051806020016040528060095481525085601054614dd0565b9050600061350b604051806020016040528060085481525086600f54614dd0565b9050600061351e87600c54600c54614dd0565b600b8d9055600c819055600d869055600e8590556010849055600f839055604080518d8152602081018990528082018390526060810188905290519192507f4dec04e750ca11537cabcd8a9eab06494de08da3735bc8871cd41250e190bc04919081900360800190a16006546040805160248082018e905282518083039091018152604490910182526020810180516001600160e01b0316635efd023360e11b178152915181516001600160a01b0390941693919290918291908083835b602083106135fb5780518252601f1990920191602091820191016135dc565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461365d576040519150601f19603f3d011682016040523d82523d6000602084013e613662565b606091505b506000915061366e9050565b9c9b505050505050505050505050565b600080613689612320565b600b541461369d5761209b600a6039613126565b826136a6612ebc565b10156136b85761209b600e6038613126565b600f548311156136ce5761209b6002603a613126565b6136da600f54846143bd565b905080600f81905550612801600560009054906101000a90046001600160a01b03166001600160a01b031663f851a4406040518163ffffffff1660e01b815260040160206040518083038186803b15801561373457600080fd5b505afa158015613748573d6000803e3d6000fd5b505050506040513d602081101561375e57600080fd5b5051846143f7565b6005546040805163d02f735160e01b81523060048201526001600160a01b038781166024830152868116604483015285811660648301526084820185905291516000938493169163d02f73519160a480830192602092919082900301818787803b1580156137d357600080fd5b505af11580156137e7573d6000803e3d6000fd5b505050506040513d60208110156137fd57600080fd5b50519050801561381457612aa26003601d83614143565b846001600160a01b0316846001600160a01b0316141561383a57612aa26006601e613126565b613842615b45565b6001600160a01b0385166000908152601260205260409020546138659085613443565b602083018190528282600381111561387957fe5b600381111561388457fe5b905250600090508151600381111561389857fe5b146138c2576138b96009601c836000015160038111156138b457fe5b614143565b92505050611610565b6138e1846040518060200160405280666379da05b60000815250614df8565b608082018190526138f39085906143bd565b606082015261390061293c565b60c083018190528282600381111561391457fe5b600381111561391f57fe5b905250600090508151600381111561393357fe5b14613985576040805162461bcd60e51b815260206004820152601860248201527f65786368616e67652072617465206d617468206572726f720000000000000000604482015290519081900360640190fd5b6139a560405180602001604052808360c001518152508260800151614db1565b60a08201819052600e546139b89161340d565b60e082015260115460808201516139cf91906143bd565b6101008201526001600160a01b03861660009081526012602052604090205460608201516139fd91906141cc565b6040830181905282826003811115613a1157fe5b6003811115613a1c57fe5b9052506000905081516003811115613a3057fe5b14613a4c576138b96009601b836000015160038111156138b457fe5b60e0810151600e556101008101516011556020808201516001600160a01b0380881660008181526012855260408082209490945583860151928b16808252908490209290925560608501518351908152925191939092600080516020615d96833981519152929081900390910190a36080810151604080519182525130916001600160a01b03881691600080516020615d968339815191529181900360200190a360a081015160e082015160408051308152602081019390935282810191909152517fa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc59181900360600190a16000979650505050505050565b600080613b5181612808565b6000613b5b611c06565b90508015613b795761181b816011811115613b7257fe5b600a613126565b61182c3385614e20565b600080613b8f81612808565b6000613b99611c06565b90508015613bb05761181b81601181111561328557fe5b61182c3385600061447c565b6000806000613bca81612808565b6000613bd4611c06565b90508015613bff57613bf2816011811115613beb57fe5b6011613126565b935060009250613c969050565b846001600160a01b031663a6afed956040518163ffffffff1660e01b8152600401602060405180830381600087803b158015613c3a57600080fd5b505af1158015613c4e573d6000803e3d6000fd5b505050506040513d6020811015613c6457600080fd5b505190508015613c8457613bf2816011811115613c7d57fe5b6012613126565b613c9033888888615166565b93509350505b613c9f816128d1565b50935093915050565b60055460408051631200453160e11b81523060048201526001600160a01b0386811660248301528581166044830152606482018590529151600093849384939116916324008a629160848082019260209290919082900301818787803b158015613d1157600080fd5b505af1158015613d25573d6000803e3d6000fd5b505050506040513d6020811015613d3b57600080fd5b505190508015613d5f57613d526003604383614143565b925060009150613ff09050565b613d67612320565b600b5414613d7b57613d52600a6044613126565b613d83615b92565b6001600160a01b0386166000908152601460205260409020600101546060820152613dad86613298565b6080830181905260208301826003811115613dc457fe5b6003811115613dcf57fe5b9052506000905081602001516003811115613de657fe5b14613e1057613e0260096042836020015160038111156138b457fe5b935060009250613ff0915050565b600019851415613e295760808101516040820152613e31565b604081018590525b613e3f878260400151615658565b60e082018190526080820151613e5491613443565b60a0830181905260208301826003811115613e6b57fe5b6003811115613e7657fe5b9052506000905081602001516003811115613e8d57fe5b14613ec95760405162461bcd60e51b815260040180806020018281038252603a815260200180615d33603a913960400191505060405180910390fd5b613ed9600d548260e00151613443565b60c0830181905260208301826003811115613ef057fe5b6003811115613efb57fe5b9052506000905081602001516003811115613f1257fe5b14613f4e5760405162461bcd60e51b8152600401808060200182810382526031815260200180615db66031913960400191505060405180910390fd5b60a080820180516001600160a01b03808a16600081815260146020908152604091829020948555600c5460019095019490945560c0870151600d81905560e088015195518251948f16855294840192909252828101949094526060820192909252608081019190915290517f1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1929181900390910190a160e00151600093509150505b935093915050565b600073a731585ab05fc9f83555cf9bff8f58ee94e18f856001600160a01b031663dd86fea16040518163ffffffff1660e01b815260040160206040518083038186803b158015611ec757600080fd5b60008060008061405787876141cc565b9092509050600082600381111561406a57fe5b1461407b5750915060009050613ff0565b6140858186613443565b935093505050935093915050565b600061409d615b32565b6000806140b286670de0b6b3a764000061494c565b909250905060008260038111156140c557fe5b146140e457506040805160208101909152600081529092509050612eb5565b6000806140f1838861498b565b9092509050600082600381111561410457fe5b1461412657506040805160208101909152600081529094509250612eb5915050565b604080516020810190915290815260009890975095505050505050565b60007f45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa084601181111561417257fe5b84606381111561417e57fe5b604080519283526020830191909152818101859052519081900360600190a160038460118111156141ab57fe5b146141c1578360118111156141bc57fe5b611610565b506103e80192915050565b6000808383018481106141e457600092509050612eb5565b506002915060009050612eb5565b60006141fc615b32565b60008061420d86600001518661494c565b9092509050600082600381111561422057fe5b1461423f57506040805160208101909152600081529092509050612eb5565b60408051602081019091529081526000969095509350505050565b51670de0b6b3a7640000900490565b6114a7565b606060006060856001600160a01b0316856040518082805190602001908083835b602083106142ae5780518252601f19909201916020918201910161428f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614310576040519150601f19603f3d011682016040523d82523d6000602084013e614315565b606091505b5091509150816143b45780511561432f5780518082602001fd5b8360405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614379578181015183820152602001614361565b50505050905090810190601f1680156143a65780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b95945050505050565b6000611a9d8383604051806040016040528060158152602001747375627472616374696f6e20756e646572666c6f7760581b815250615835565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091018252602081810180516001600160e01b031663a9059cbb60e01b1790528251808401909352601983527f544f4b454e5f5452414e534645525f4f55545f4641494c454400000000000000908301526144789161588f565b5050565b6000821580614489575081155b6144c45760405162461bcd60e51b8152600401808060200182810382526034815260200180615e4f6034913960400191505060405180910390fd5b6144cc615bd8565b6144d461293c565b60408301819052602083018260038111156144eb57fe5b60038111156144f657fe5b905250600090508160200151600381111561450d57fe5b14614531576145296009602e836020015160038111156138b457fe5b915050611a9d565b83156145b25760608101849052604080516020810182529082015181526145589085612e68565b608083018190526020830182600381111561456f57fe5b600381111561457a57fe5b905250600090508160200151600381111561459157fe5b146145ad576145296009602c836020015160038111156138b457fe5b61462b565b6145ce836040518060200160405280846040015181525061591c565b60608301819052602083018260038111156145e557fe5b60038111156145f057fe5b905250600090508160200151600381111561460757fe5b14614623576145296009602d836020015160038111156138b457fe5b608081018390525b60055460608201516040805163eabe7d9160e01b81523060048201526001600160a01b03898116602483015260448201939093529051600093929092169163eabe7d919160648082019260209290919082900301818787803b15801561469057600080fd5b505af11580156146a4573d6000803e3d6000fd5b505050506040513d60208110156146ba57600080fd5b5051905080156146da576146d16003602b83614143565b92505050611a9d565b6146e2612320565b600b54146146f6576146d1600a602f613126565b6147066011548360600151613443565b60a084018190526020840182600381111561471d57fe5b600381111561472857fe5b905250600090508260200151600381111561473f57fe5b1461475b576146d160096031846020015160038111156138b457fe5b6001600160a01b03861660009081526012602052604090205460608301516147839190613443565b60c084018190526020840182600381111561479a57fe5b60038111156147a557fe5b90525060009050826020015160038111156147bc57fe5b146147d8576146d160096030846020015160038111156138b457fe5b81608001516147e5612ebc565b10156147f7576146d1600e6032613126565b60a082015160115560c08201516001600160a01b038716600090815260126020526040902055608082015161482d9087906143f7565b6060820151604080519182525130916001600160a01b03891691600080516020615d968339815191529181900360200190a36080820151606080840151604080516001600160a01b038b168152602081019490945283810191909152517fe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a9299281900390910190a160055460808301516060840151604080516351dff98960e01b81523060048201526001600160a01b038b81166024830152604482019490945260648101929092525191909216916351dff98991608480830192600092919082900301818387803b15801561492157600080fd5b505af1158015614935573d6000803e3d6000fd5b5060009250614942915050565b9695505050505050565b6000808361495f57506000905080612eb5565b8383028385828161496c57fe5b041461498057506002915060009050612eb5565b600092509050612eb5565b6000808261499f5750600190506000612eb5565b60008385816149aa57fe5b04915091509250929050565b60055460408051634ef4c3e160e01b81523060048201526001600160a01b03858116602483015260448201859052915160009384938493911691634ef4c3e19160648082019260209290919082900301818787803b158015614a1757600080fd5b505af1158015614a2b573d6000803e3d6000fd5b505050506040513d6020811015614a4157600080fd5b505190508015614a6557614a586003602183614143565b925060009150612eb59050565b614a6d612320565b600b5414614a8157614a58600a6024613126565b614a89615bd8565b614a9161293c565b6040830181905260208301826003811115614aa857fe5b6003811115614ab357fe5b9052506000905081602001516003811115614aca57fe5b14614af457614ae660096023836020015160038111156138b457fe5b935060009250612eb5915050565b614afe8686615658565b60c0820181905260408051602081018252908301518152614b1f919061591c565b6060830181905260208301826003811115614b3657fe5b6003811115614b4157fe5b9052506000905081602001516003811115614b5857fe5b14614baa576040805162461bcd60e51b815260206004820181905260248201527f4d494e545f45584348414e47455f43414c43554c4154494f4e5f4641494c4544604482015290519081900360640190fd5b614bba601154826060015161340d565b60808201526001600160a01b0386166000908152601260205260409020546060820151614be7919061340d565b60a0820181905260808201516011556001600160a01b0387166000818152601260209081526040918290209390935560c084015160608086015183519485529484019190915282820193909352517f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f929181900390910190a1606081015160408051918252516001600160a01b038816913091600080516020615d968339815191529181900360200190a360055460c08201516060830151604080516341c728b960e01b81523060048201526001600160a01b038b81166024830152604482019490945260648101929092525191909216916341c728b991608480830192600092919082900301818387803b158015614cff57600080fd5b505af1158015614d13573d6000803e3d6000fd5b5060009250614d20915050565b8160c001519350935050509250929050565b600083830182858210156114e45760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315614379578181015183820152602001614361565b614d8f615b32565b6040518060200160405280614da8856000015185615933565b90529392505050565b6000614dbb615b32565b614dc58484614d87565b90506116108161425a565b6000614dda615b32565b614de48585614d87565b90506143b4614df28261425a565b8461340d565b6000670de0b6b3a7640000614e11848460000151615933565b81614e1857fe5b049392505050565b6005546040805163368f515360e21b81523060048201526001600160a01b0385811660248301526044820185905291516000938493169163da3d454c91606480830192602092919082900301818787803b158015614e7d57600080fd5b505af1158015614e91573d6000803e3d6000fd5b505050506040513d6020811015614ea757600080fd5b505190508015614ec657614ebe6003601083614143565b9150506110f2565b614ece612320565b600b5414614ee257614ebe600a600c613126565b6000614eec612ebc565b905083811015614f0b57614f02600e600b613126565b925050506110f2565b614f13615c16565b614f1c86613298565b6020830181905282826003811115614f3057fe5b6003811115614f3b57fe5b9052506000905081516003811115614f4f57fe5b14614f7457614f6a600980836000015160038111156138b457fe5b93505050506110f2565b614f828160200151866141cc565b6040830181905282826003811115614f9657fe5b6003811115614fa157fe5b9052506000905081516003811115614fb557fe5b14614fd157614f6a6009600e836000015160038111156138b457fe5b6005546040808301518151631de6c8a560e21b8152306004820152602481019190915290516001600160a01b039092169163779b2294916044808201926020929091908290030181600087803b15801561502a57600080fd5b505af115801561503e573d6000803e3d6000fd5b505050506040513d602081101561505457600080fd5b50519250821561506b57614f6a6003601085614143565b615077600d54866141cc565b606083018190528282600381111561508b57fe5b600381111561509657fe5b90525060009050815160038111156150aa57fe5b146150c657614f6a6009600d836000015160038111156138b457fe5b6040808201516001600160a01b0388166000908152601460205291909120908155600c546001909101556060810151600d5561510286866143f7565b60408082015160608084015183516001600160a01b038b168152602081018a9052808501939093529082015290517f13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab809181900360800190a160009695505050505050565b60055460408051632fe3f38f60e11b81523060048201526001600160a01b0384811660248301528781166044830152868116606483015260848201869052915160009384938493911691635fc7e71e9160a48082019260209290919082900301818787803b1580156151d757600080fd5b505af11580156151eb573d6000803e3d6000fd5b505050506040513d602081101561520157600080fd5b505190508015615225576152186003601483614143565b92506000915061564f9050565b61522d612320565b600b541461524157615218600a6018613126565b615249612320565b846001600160a01b0316636c540baf6040518163ffffffff1660e01b815260040160206040518083038186803b15801561528257600080fd5b505afa158015615296573d6000803e3d6000fd5b505050506040513d60208110156152ac57600080fd5b5051146152bf57615218600a6013613126565b866001600160a01b0316866001600160a01b031614156152e55761521860066019613126565b846152f65761521860076017613126565b60001985141561530c5761521860076016613126565b60008061531a898989613ca8565b9092509050811561534a5761533b82601181111561533457fe5b601a613126565b94506000935061564f92505050565b6005546040805163c488847b60e01b81523060048201526001600160a01b038981166024830152604482018590528251600094859492169263c488847b926064808301939192829003018186803b1580156153a457600080fd5b505afa1580156153b8573d6000803e3d6000fd5b505050506040513d60408110156153ce57600080fd5b508051602090910151909250905081156154195760405162461bcd60e51b8152600401808060200182810382526033815260200180615de76033913960400191505060405180910390fd5b80886001600160a01b03166370a082318c6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561547057600080fd5b505afa158015615484573d6000803e3d6000fd5b505050506040513d602081101561549a57600080fd5b505110156154ef576040805162461bcd60e51b815260206004820152601860248201527f4c49515549444154455f5345495a455f544f4f5f4d5543480000000000000000604482015290519081900360640190fd5b60006001600160a01b0389163014156155155761550e308d8d85613766565b905061559f565b6040805163b2a02ff160e01b81526001600160a01b038e811660048301528d81166024830152604482018590529151918b169163b2a02ff1916064808201926020929091908290030181600087803b15801561557057600080fd5b505af1158015615584573d6000803e3d6000fd5b505050506040513d602081101561559a57600080fd5b505190505b80156155e9576040805162461bcd60e51b81526020600482015260146024820152731d1bdad95b881cd95a5e9d5c994819985a5b195960621b604482015290519081900360640190fd5b604080516001600160a01b03808f168252808e1660208301528183018790528b1660608201526080810184905290517f298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb529181900360a00190a16000975092955050505050505b94509492505050565b601554604080516370a0823160e01b8152306004820152905160009283926001600160a01b03909116916370a0823191602480820192602092909190829003018186803b1580156156a857600080fd5b505afa1580156156bc573d6000803e3d6000fd5b505050506040513d60208110156156d257600080fd5b5051604080516001600160a01b038716602482015230604482015260648082018790528251808303909101815260849091018252602081810180516001600160e01b03166323b872dd60e01b1790528251808401909352601883527f544f4b454e5f5452414e534645525f494e5f4641494c454400000000000000009083015291925061575f919061588f565b601554604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156157aa57600080fd5b505afa1580156157be573d6000803e3d6000fd5b505050506040513d60208110156157d457600080fd5b505190508181101561582d576040805162461bcd60e51b815260206004820152601a60248201527f544f4b454e5f5452414e534645525f494e5f4f564552464c4f57000000000000604482015290519081900360640190fd5b039392505050565b600081848411156158875760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315614379578181015183820152602001614361565b505050900390565b6015546060906158a9906001600160a01b0316848461426e565b805190915015615917578080602001905160208110156158c857600080fd5b505182906116b05760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315614379578181015183820152602001614361565b505050565b6000806000615929615b32565b612e7f8686615975565b6000611a9d83836040518060400160405280601781526020017f6d756c7469706c69636174696f6e206f766572666c6f770000000000000000008152506159d4565b600061597f615b32565b600080615994670de0b6b3a76400008761494c565b909250905060008260038111156159a757fe5b146159c657506040805160208101909152600081529092509050612eb5565b612eae818660000151614093565b60008315806159e1575082155b156159ee57506000611a9d565b838302838582816159fb57fe5b041483906114e45760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315614379578181015183820152602001614361565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10615a8b57805160ff1916838001178555615ab8565b82800160010185558215615ab8579182015b82811115615ab8578251825591602001919060010190615a9d565b506118e8929150615c3f565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10615b055782800160ff19823516178555615ab8565b82800160010185558215615ab8579182015b82811115615ab8578235825591602001919060010190615b17565b6040518060200160405280600081525090565b604080516101208101909152806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040805161010081019091528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040805160e0810190915280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b604080516080810190915280600081526020016000815260200160008152602001600081525090565b6114a491905b808211156118e85760008155600101615c4556fe6d61726b6574206d6179206f6e6c7920626520696e697469616c697a6564206f6e6365696e697469616c2065786368616e67652072617465206d7573742062652067726561746572207468616e207a65726f2e6f6e6c79207468652061646d696e206d6179207365742074686520636f6d702d6c696b652064656c656761746573657474696e6720696e7465726573742072617465206d6f64656c206661696c6564626f72726f7742616c616e636553746f7265643a20626f72726f7742616c616e636553746f726564496e7465726e616c206661696c656452455041595f424f52524f575f4e45575f4143434f554e545f424f52524f575f42414c414e43455f43414c43554c4154494f4e5f4641494c45446f6e6c7920467573652061646d696e206d617920696e697469616c697a6520746865206d61726b6574ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef52455041595f424f52524f575f4e45575f544f54414c5f42414c414e43455f43414c43554c4154494f4e5f4641494c45444c49515549444154455f434f4d5054524f4c4c45525f43414c43554c4154455f414d4f554e545f5345495a455f4641494c454465786368616e67655261746553746f7265643a2065786368616e67655261746553746f726564496e7465726e616c206661696c65646f6e65206f662072656465656d546f6b656e73496e206f722072656465656d416d6f756e74496e206d757374206265207a65726fa265627a7a723158206bb55a5746461828ebe5f58429e48351bdca5941845d72ac9a60d0db0eed14ce64736f6c63430005110032", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/CErc20DelegateDAIAggregatorFix.sol b/contracts/CErc20DelegateDAIAggregatorFix.sol new file mode 100644 index 000000000..6c035e75c --- /dev/null +++ b/contracts/CErc20DelegateDAIAggregatorFix.sol @@ -0,0 +1,36 @@ +pragma solidity 0.5.17; + +import "./CErc20Delegate.sol"; + +/** + * @title Compound's CErc20Delegate Contract + * @notice CTokens which wrap Ether and are delegated to + * @author Compound + */ +contract CErc20DelegateUSDCAggregatorFix is CErc20Delegate { + /** + * @notice Called by the delegator on a delegate to initialize it for duty + * @param data The encoded bytes data for any initialization + */ + function _becomeImplementation(bytes calldata data) external { + address DAI_CONTROLLER = 0xaFD2AaDE64E6Ea690173F6DE59Fc09F5C9190d74; + address MERKLE_REDEEMER = 0xCAe4210e6676727EA4e0fD9BA5dFb95831356a16; + + require(msg.sender == address(this) || hasAdminRights(), "!self"); + require(accrueInterest() == uint(Error.NO_ERROR), "!accrue"); + + // Get account #1 supply balance + uint256 account1SupplyShares = accountTokens[DAI_CONTROLLER]; + + // Set account supply shares to 0 + accountTokens[DAI_CONTROLLER] = 0; + accountTokens[MERKLE_REDEEMER] = account1SupplyShares; + + emit Transfer(DAI_CONTROLLER, MERKLE_REDEEMER, account1SupplyShares); + } + + /** + * @notice Function called before all delegator functions + */ + function _prepare() external payable {} +} diff --git a/contracts/CErc20DelegateUSDCAggregatorFix.sol b/contracts/CErc20DelegateUSDCAggregatorFix.sol new file mode 100644 index 000000000..2d0826aff --- /dev/null +++ b/contracts/CErc20DelegateUSDCAggregatorFix.sol @@ -0,0 +1,36 @@ +pragma solidity 0.5.17; + +import "./CErc20Delegate.sol"; + +/** + * @title Compound's CErc20Delegate Contract + * @notice CTokens which wrap Ether and are delegated to + * @author Compound + */ +contract CErc20DelegateUSDCAggregatorFix is CErc20Delegate { + /** + * @notice Called by the delegator on a delegate to initialize it for duty + * @param data The encoded bytes data for any initialization + */ + function _becomeImplementation(bytes calldata data) external { + address USDC_CONTROLLER = 0x66f4856F1BBD1eb09e1C8d9D646f5A3a193dA569; + address MERKLE_REDEEMER = 0xCAe4210e6676727EA4e0fD9BA5dFb95831356a16; + + require(msg.sender == address(this) || hasAdminRights(), "!self"); + require(accrueInterest() == uint(Error.NO_ERROR), "!accrue"); + + // Get account #1 supply balance + uint256 account1SupplyShares = accountTokens[USDC_CONTROLLER]; + + // Set account supply shares to 0 + accountTokens[USDC_CONTROLLER] = 0; + accountTokens[MERKLE_REDEEMER] = account1SupplyShares; + + emit Transfer(USDC_CONTROLLER, MERKLE_REDEEMER, account1SupplyShares); + } + + /** + * @notice Function called before all delegator functions + */ + function _prepare() external payable {} +} diff --git a/contracts/CEther.sol b/contracts/CEther.sol index 2d3a51158..2aafb9025 100644 --- a/contracts/CEther.sol +++ b/contracts/CEther.sol @@ -135,8 +135,7 @@ contract CEther is CToken, CEtherInterface { function doTransferOut(address payable to, uint amount) internal { // Send the Ether and revert on failure - (bool success, ) = to.call.value(amount)(""); - require(success, "doTransferOut failed"); + to.transfer(amount); } function requireNoError(uint errCode, string memory message) internal pure { diff --git a/contracts/CToken.sol b/contracts/CToken.sol index f8d872421..b7bc82d57 100644 --- a/contracts/CToken.sol +++ b/contracts/CToken.sol @@ -703,6 +703,10 @@ contract CToken is CTokenInterface, Exponential, TokenErrorReporter { // EFFECTS & INTERACTIONS // (No safe failures beyond this point) + /* We write previously calculated values into storage */ + totalSupply = vars.totalSupplyNew; + accountTokens[redeemer] = vars.accountTokensNew; + /* * We invoke doTransferOut for the redeemer and the redeemAmount. * Note: The cToken must handle variations between ERC-20 and ETH underlying. @@ -711,10 +715,6 @@ contract CToken is CTokenInterface, Exponential, TokenErrorReporter { */ doTransferOut(redeemer, vars.redeemAmount); - /* We write previously calculated values into storage */ - totalSupply = vars.totalSupplyNew; - accountTokens[redeemer] = vars.accountTokensNew; - /* We emit a Transfer event, and a Redeem event */ emit Transfer(redeemer, address(this), vars.redeemTokens); emit Redeem(redeemer, vars.redeemAmount, vars.redeemTokens); @@ -803,6 +803,11 @@ contract CToken is CTokenInterface, Exponential, TokenErrorReporter { // EFFECTS & INTERACTIONS // (No safe failures beyond this point) + /* We write the previously calculated values into storage */ + accountBorrows[borrower].principal = vars.accountBorrowsNew; + accountBorrows[borrower].interestIndex = borrowIndex; + totalBorrows = vars.totalBorrowsNew; + /* * We invoke doTransferOut for the borrower and the borrowAmount. * Note: The cToken must handle variations between ERC-20 and ETH underlying. @@ -811,11 +816,6 @@ contract CToken is CTokenInterface, Exponential, TokenErrorReporter { */ doTransferOut(borrower, borrowAmount); - /* We write the previously calculated values into storage */ - accountBorrows[borrower].principal = vars.accountBorrowsNew; - accountBorrows[borrower].interestIndex = borrowIndex; - totalBorrows = vars.totalBorrowsNew; - /* We emit a Borrow event */ emit Borrow(borrower, borrowAmount, vars.accountBorrowsNew, vars.totalBorrowsNew); diff --git a/hardhat.config.ts b/hardhat.config.ts new file mode 100644 index 000000000..c5b3a81d0 --- /dev/null +++ b/hardhat.config.ts @@ -0,0 +1,46 @@ + +require("@nomiclabs/hardhat-waffle"); +require('hardhat-contract-sizer'); +require('dotenv').config(); +require("@nomiclabs/hardhat-etherscan"); + + +/** + * @type import('hardhat/config').HardhatUserConfig + */ +module.exports = { + solidity: { + version: "0.5.17", + settings: { + optimizer: { + enabled: true, + runs: 200 + } + } + }, + networks: { + hardhat: { + }, + development: { + url: "http://localhost:8546" + }, + mainnet: { + url: process.env.ETH_RPC_URL, + accounts: [process.env.ETH_PRIVATE_KEY] + }, + arbitrum: { + url: process.env.ARBITRUM_RPC_URL, + accounts: [process.env.ETH_PRIVATE_KEY] + } + }, + paths: { + tests: "./hardhat/test" + }, + etherscan: { + // Your API key for Etherscan + // Obtain one at https://etherscan.io/ + //apiKey: process.env.ETHERSCAN_API_KEY + apiKey: process.env.ARB_API_KEY + }, +}; + diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 000000000..b35b1a147 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,5089 @@ +{ + "name": "compound-protocol", + "version": "0.2.1", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "0.3.9" + } + }, + "@ethersproject/abi": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz", + "integrity": "sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==", + "requires": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "@ethersproject/abstract-provider": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" + } + }, + "@ethersproject/abstract-signer": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", + "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "requires": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "requires": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "requires": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "@ethersproject/hash": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", + "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", + "requires": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + }, + "@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "requires": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "requires": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "@metamask/eth-sig-util": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@metamask/eth-sig-util/-/eth-sig-util-4.0.1.tgz", + "integrity": "sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ==", + "requires": { + "ethereumjs-abi": "^0.6.8", + "ethereumjs-util": "^6.2.1", + "ethjs-util": "^0.1.6", + "tweetnacl": "^1.0.3", + "tweetnacl-util": "^0.15.1" + } + }, + "@noble/hashes": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.1.2.tgz", + "integrity": "sha512-KYRCASVTv6aeUi1tsF8/vpyR7zpfs3FUzy2Jqm+MU+LmUKhQ0y2FpfwqkCcxSg2ua4GALJd8k2R76WxwZGbQpA==" + }, + "@noble/secp256k1": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.6.3.tgz", + "integrity": "sha512-T04e4iTurVy7I8Sw4+c5OSN9/RkPlo1uKxAomtxQNLq8j1uPAqnsqG1bqvY3Jv7c13gyr6dui0zmh/I3+f/JaQ==" + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@nomicfoundation/ethereumjs-block": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-block/-/ethereumjs-block-4.0.0.tgz", + "integrity": "sha512-bk8uP8VuexLgyIZAHExH1QEovqx0Lzhc9Ntm63nCRKLHXIZkobaFaeCVwTESV7YkPKUk7NiK11s8ryed4CS9yA==", + "requires": { + "@nomicfoundation/ethereumjs-common": "^3.0.0", + "@nomicfoundation/ethereumjs-rlp": "^4.0.0", + "@nomicfoundation/ethereumjs-trie": "^5.0.0", + "@nomicfoundation/ethereumjs-tx": "^4.0.0", + "@nomicfoundation/ethereumjs-util": "^8.0.0", + "ethereum-cryptography": "0.1.3" + }, + "dependencies": { + "ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "requires": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + } + } + }, + "@nomicfoundation/ethereumjs-blockchain": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-blockchain/-/ethereumjs-blockchain-6.0.0.tgz", + "integrity": "sha512-pLFEoea6MWd81QQYSReLlLfH7N9v7lH66JC/NMPN848ySPPQA5renWnE7wPByfQFzNrPBuDDRFFULMDmj1C0xw==", + "requires": { + "@nomicfoundation/ethereumjs-block": "^4.0.0", + "@nomicfoundation/ethereumjs-common": "^3.0.0", + "@nomicfoundation/ethereumjs-ethash": "^2.0.0", + "@nomicfoundation/ethereumjs-rlp": "^4.0.0", + "@nomicfoundation/ethereumjs-trie": "^5.0.0", + "@nomicfoundation/ethereumjs-util": "^8.0.0", + "abstract-level": "^1.0.3", + "debug": "^4.3.3", + "ethereum-cryptography": "0.1.3", + "level": "^8.0.0", + "lru-cache": "^5.1.1", + "memory-level": "^1.0.0" + }, + "dependencies": { + "ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "requires": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + } + } + }, + "@nomicfoundation/ethereumjs-common": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-common/-/ethereumjs-common-3.0.0.tgz", + "integrity": "sha512-WS7qSshQfxoZOpHG/XqlHEGRG1zmyjYrvmATvc4c62+gZXgre1ymYP8ZNgx/3FyZY0TWe9OjFlKOfLqmgOeYwA==", + "requires": { + "@nomicfoundation/ethereumjs-util": "^8.0.0", + "crc-32": "^1.2.0" + } + }, + "@nomicfoundation/ethereumjs-ethash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-ethash/-/ethereumjs-ethash-2.0.0.tgz", + "integrity": "sha512-WpDvnRncfDUuXdsAXlI4lXbqUDOA+adYRQaEezIkxqDkc+LDyYDbd/xairmY98GnQzo1zIqsIL6GB5MoMSJDew==", + "requires": { + "@nomicfoundation/ethereumjs-block": "^4.0.0", + "@nomicfoundation/ethereumjs-rlp": "^4.0.0", + "@nomicfoundation/ethereumjs-util": "^8.0.0", + "abstract-level": "^1.0.3", + "bigint-crypto-utils": "^3.0.23", + "ethereum-cryptography": "0.1.3" + }, + "dependencies": { + "ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "requires": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + } + } + }, + "@nomicfoundation/ethereumjs-evm": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-evm/-/ethereumjs-evm-1.0.0.tgz", + "integrity": "sha512-hVS6qRo3V1PLKCO210UfcEQHvlG7GqR8iFzp0yyjTg2TmJQizcChKgWo8KFsdMw6AyoLgLhHGHw4HdlP8a4i+Q==", + "requires": { + "@nomicfoundation/ethereumjs-common": "^3.0.0", + "@nomicfoundation/ethereumjs-util": "^8.0.0", + "@types/async-eventemitter": "^0.2.1", + "async-eventemitter": "^0.2.4", + "debug": "^4.3.3", + "ethereum-cryptography": "0.1.3", + "mcl-wasm": "^0.7.1", + "rustbn.js": "~0.2.0" + }, + "dependencies": { + "ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "requires": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + } + } + }, + "@nomicfoundation/ethereumjs-rlp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-rlp/-/ethereumjs-rlp-4.0.0.tgz", + "integrity": "sha512-GaSOGk5QbUk4eBP5qFbpXoZoZUj/NrW7MRa0tKY4Ew4c2HAS0GXArEMAamtFrkazp0BO4K5p2ZCG3b2FmbShmw==" + }, + "@nomicfoundation/ethereumjs-statemanager": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-statemanager/-/ethereumjs-statemanager-1.0.0.tgz", + "integrity": "sha512-jCtqFjcd2QejtuAMjQzbil/4NHf5aAWxUc+CvS0JclQpl+7M0bxMofR2AJdtz+P3u0ke2euhYREDiE7iSO31vQ==", + "requires": { + "@nomicfoundation/ethereumjs-common": "^3.0.0", + "@nomicfoundation/ethereumjs-rlp": "^4.0.0", + "@nomicfoundation/ethereumjs-trie": "^5.0.0", + "@nomicfoundation/ethereumjs-util": "^8.0.0", + "debug": "^4.3.3", + "ethereum-cryptography": "0.1.3", + "functional-red-black-tree": "^1.0.1" + }, + "dependencies": { + "ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "requires": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + } + } + }, + "@nomicfoundation/ethereumjs-trie": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-trie/-/ethereumjs-trie-5.0.0.tgz", + "integrity": "sha512-LIj5XdE+s+t6WSuq/ttegJzZ1vliwg6wlb+Y9f4RlBpuK35B9K02bO7xU+E6Rgg9RGptkWd6TVLdedTI4eNc2A==", + "requires": { + "@nomicfoundation/ethereumjs-rlp": "^4.0.0", + "@nomicfoundation/ethereumjs-util": "^8.0.0", + "ethereum-cryptography": "0.1.3", + "readable-stream": "^3.6.0" + }, + "dependencies": { + "ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "requires": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + } + } + }, + "@nomicfoundation/ethereumjs-tx": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-tx/-/ethereumjs-tx-4.0.0.tgz", + "integrity": "sha512-Gg3Lir2lNUck43Kp/3x6TfBNwcWC9Z1wYue9Nz3v4xjdcv6oDW9QSMJxqsKw9QEGoBBZ+gqwpW7+F05/rs/g1w==", + "requires": { + "@nomicfoundation/ethereumjs-common": "^3.0.0", + "@nomicfoundation/ethereumjs-rlp": "^4.0.0", + "@nomicfoundation/ethereumjs-util": "^8.0.0", + "ethereum-cryptography": "0.1.3" + }, + "dependencies": { + "ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "requires": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + } + } + }, + "@nomicfoundation/ethereumjs-util": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-util/-/ethereumjs-util-8.0.0.tgz", + "integrity": "sha512-2emi0NJ/HmTG+CGY58fa+DQuAoroFeSH9gKu9O6JnwTtlzJtgfTixuoOqLEgyyzZVvwfIpRueuePb8TonL1y+A==", + "requires": { + "@nomicfoundation/ethereumjs-rlp": "^4.0.0-beta.2", + "ethereum-cryptography": "0.1.3" + }, + "dependencies": { + "ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "requires": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + } + } + }, + "@nomicfoundation/ethereumjs-vm": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-vm/-/ethereumjs-vm-6.0.0.tgz", + "integrity": "sha512-JMPxvPQ3fzD063Sg3Tp+UdwUkVxMoo1uML6KSzFhMH3hoQi/LMuXBoEHAoW83/vyNS9BxEe6jm6LmT5xdeEJ6w==", + "requires": { + "@nomicfoundation/ethereumjs-block": "^4.0.0", + "@nomicfoundation/ethereumjs-blockchain": "^6.0.0", + "@nomicfoundation/ethereumjs-common": "^3.0.0", + "@nomicfoundation/ethereumjs-evm": "^1.0.0", + "@nomicfoundation/ethereumjs-rlp": "^4.0.0", + "@nomicfoundation/ethereumjs-statemanager": "^1.0.0", + "@nomicfoundation/ethereumjs-trie": "^5.0.0", + "@nomicfoundation/ethereumjs-tx": "^4.0.0", + "@nomicfoundation/ethereumjs-util": "^8.0.0", + "@types/async-eventemitter": "^0.2.1", + "async-eventemitter": "^0.2.4", + "debug": "^4.3.3", + "ethereum-cryptography": "0.1.3", + "functional-red-black-tree": "^1.0.1", + "mcl-wasm": "^0.7.1", + "rustbn.js": "~0.2.0" + }, + "dependencies": { + "ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "requires": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + } + } + }, + "@nomicfoundation/solidity-analyzer": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer/-/solidity-analyzer-0.0.3.tgz", + "integrity": "sha512-VFMiOQvsw7nx5bFmrmVp2Q9rhIjw2AFST4DYvWVVO9PMHPE23BY2+kyfrQ4J3xCMFC8fcBbGLt7l4q7m1SlTqg==", + "requires": { + "@nomicfoundation/solidity-analyzer-darwin-arm64": "0.0.3", + "@nomicfoundation/solidity-analyzer-darwin-x64": "0.0.3", + "@nomicfoundation/solidity-analyzer-freebsd-x64": "0.0.3", + "@nomicfoundation/solidity-analyzer-linux-arm64-gnu": "0.0.3", + "@nomicfoundation/solidity-analyzer-linux-arm64-musl": "0.0.3", + "@nomicfoundation/solidity-analyzer-linux-x64-gnu": "0.0.3", + "@nomicfoundation/solidity-analyzer-linux-x64-musl": "0.0.3", + "@nomicfoundation/solidity-analyzer-win32-arm64-msvc": "0.0.3", + "@nomicfoundation/solidity-analyzer-win32-ia32-msvc": "0.0.3", + "@nomicfoundation/solidity-analyzer-win32-x64-msvc": "0.0.3" + } + }, + "@nomicfoundation/solidity-analyzer-darwin-arm64": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-arm64/-/solidity-analyzer-darwin-arm64-0.0.3.tgz", + "integrity": "sha512-W+bIiNiZmiy+MTYFZn3nwjyPUO6wfWJ0lnXx2zZrM8xExKObMrhCh50yy8pQING24mHfpPFCn89wEB/iG7vZDw==", + "optional": true + }, + "@nomicfoundation/solidity-analyzer-darwin-x64": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-x64/-/solidity-analyzer-darwin-x64-0.0.3.tgz", + "integrity": "sha512-HuJd1K+2MgmFIYEpx46uzwEFjvzKAI765mmoMxy4K+Aqq1p+q7hHRlsFU2kx3NB8InwotkkIq3A5FLU1sI1WDw==", + "optional": true + }, + "@nomicfoundation/solidity-analyzer-freebsd-x64": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-freebsd-x64/-/solidity-analyzer-freebsd-x64-0.0.3.tgz", + "integrity": "sha512-2cR8JNy23jZaO/vZrsAnWCsO73asU7ylrHIe0fEsXbZYqBP9sMr+/+xP3CELDHJxUbzBY8zqGvQt1ULpyrG+Kw==", + "optional": true + }, + "@nomicfoundation/solidity-analyzer-linux-arm64-gnu": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-gnu/-/solidity-analyzer-linux-arm64-gnu-0.0.3.tgz", + "integrity": "sha512-Eyv50EfYbFthoOb0I1568p+eqHGLwEUhYGOxcRNywtlTE9nj+c+MT1LA53HnxD9GsboH4YtOOmJOulrjG7KtbA==", + "optional": true + }, + "@nomicfoundation/solidity-analyzer-linux-arm64-musl": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-musl/-/solidity-analyzer-linux-arm64-musl-0.0.3.tgz", + "integrity": "sha512-V8grDqI+ivNrgwEt2HFdlwqV2/EQbYAdj3hbOvjrA8Qv+nq4h9jhQUxFpegYMDtpU8URJmNNlXgtfucSrAQwtQ==", + "optional": true + }, + "@nomicfoundation/solidity-analyzer-linux-x64-gnu": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-gnu/-/solidity-analyzer-linux-x64-gnu-0.0.3.tgz", + "integrity": "sha512-uRfVDlxtwT1vIy7MAExWAkRD4r9M79zMG7S09mCrWUn58DbLs7UFl+dZXBX0/8FTGYWHhOT/1Etw1ZpAf5DTrg==", + "optional": true + }, + "@nomicfoundation/solidity-analyzer-linux-x64-musl": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-musl/-/solidity-analyzer-linux-x64-musl-0.0.3.tgz", + "integrity": "sha512-8HPwYdLbhcPpSwsE0yiU/aZkXV43vlXT2ycH+XlOjWOnLfH8C41z0njK8DHRtEFnp4OVN6E7E5lHBBKDZXCliA==", + "optional": true + }, + "@nomicfoundation/solidity-analyzer-win32-arm64-msvc": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-arm64-msvc/-/solidity-analyzer-win32-arm64-msvc-0.0.3.tgz", + "integrity": "sha512-5WWcT6ZNvfCuxjlpZOY7tdvOqT1kIQYlDF9Q42wMpZ5aTm4PvjdCmFDDmmTvyXEBJ4WTVmY5dWNWaxy8h/E28g==", + "optional": true + }, + "@nomicfoundation/solidity-analyzer-win32-ia32-msvc": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-ia32-msvc/-/solidity-analyzer-win32-ia32-msvc-0.0.3.tgz", + "integrity": "sha512-P/LWGZwWkyjSwkzq6skvS2wRc3gabzAbk6Akqs1/Iiuggql2CqdLBkcYWL5Xfv3haynhL+2jlNkak+v2BTZI4A==", + "optional": true + }, + "@nomicfoundation/solidity-analyzer-win32-x64-msvc": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-x64-msvc/-/solidity-analyzer-win32-x64-msvc-0.0.3.tgz", + "integrity": "sha512-4AcTtLZG1s/S5mYAIr/sdzywdNwJpOcdStGF3QMBzEt+cGn3MchMaS9b1gyhb2KKM2c39SmPF5fUuWq1oBSQZQ==", + "optional": true + }, + "@scure/base": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.1.tgz", + "integrity": "sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==" + }, + "@scure/bip32": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.0.tgz", + "integrity": "sha512-ftTW3kKX54YXLCxH6BB7oEEoJfoE2pIgw7MINKAs5PsS6nqKPuKk1haTF/EuHmYqG330t5GSrdmtRuHaY1a62Q==", + "requires": { + "@noble/hashes": "~1.1.1", + "@noble/secp256k1": "~1.6.0", + "@scure/base": "~1.1.0" + } + }, + "@scure/bip39": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.0.tgz", + "integrity": "sha512-pwrPOS16VeTKg98dYXQyIjJEcWfz7/1YJIwxUEPFfQPtc86Ym/1sVgQ2RLoD43AazMk2l/unK4ITySSpW2+82w==", + "requires": { + "@noble/hashes": "~1.1.1", + "@scure/base": "~1.1.0" + } + }, + "@sentry/core": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-5.30.0.tgz", + "integrity": "sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg==", + "requires": { + "@sentry/hub": "5.30.0", + "@sentry/minimal": "5.30.0", + "@sentry/types": "5.30.0", + "@sentry/utils": "5.30.0", + "tslib": "^1.9.3" + } + }, + "@sentry/hub": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-5.30.0.tgz", + "integrity": "sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ==", + "requires": { + "@sentry/types": "5.30.0", + "@sentry/utils": "5.30.0", + "tslib": "^1.9.3" + } + }, + "@sentry/minimal": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-5.30.0.tgz", + "integrity": "sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw==", + "requires": { + "@sentry/hub": "5.30.0", + "@sentry/types": "5.30.0", + "tslib": "^1.9.3" + } + }, + "@sentry/node": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/node/-/node-5.30.0.tgz", + "integrity": "sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg==", + "requires": { + "@sentry/core": "5.30.0", + "@sentry/hub": "5.30.0", + "@sentry/tracing": "5.30.0", + "@sentry/types": "5.30.0", + "@sentry/utils": "5.30.0", + "cookie": "^0.4.1", + "https-proxy-agent": "^5.0.0", + "lru_map": "^0.3.3", + "tslib": "^1.9.3" + } + }, + "@sentry/tracing": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-5.30.0.tgz", + "integrity": "sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw==", + "requires": { + "@sentry/hub": "5.30.0", + "@sentry/minimal": "5.30.0", + "@sentry/types": "5.30.0", + "@sentry/utils": "5.30.0", + "tslib": "^1.9.3" + } + }, + "@sentry/types": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-5.30.0.tgz", + "integrity": "sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw==" + }, + "@sentry/utils": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-5.30.0.tgz", + "integrity": "sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww==", + "requires": { + "@sentry/types": "5.30.0", + "tslib": "^1.9.3" + } + }, + "@solidity-parser/parser": { + "version": "0.14.3", + "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.14.3.tgz", + "integrity": "sha512-29g2SZ29HtsqA58pLCtopI1P/cPy5/UAzlcAXO6T/CNJimG6yA8kx4NaseMyJULiC+TEs02Y9/yeHzClqoA0hw==", + "requires": { + "antlr4ts": "^0.5.0-alpha.4" + } + }, + "@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "dev": true + }, + "@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true + }, + "@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true + }, + "@tsconfig/node16": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", + "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", + "dev": true + }, + "@types/async-eventemitter": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@types/async-eventemitter/-/async-eventemitter-0.2.1.tgz", + "integrity": "sha512-M2P4Ng26QbAeITiH7w1d7OxtldgfAe0wobpyJzVK/XOb0cUGKU2R4pfAhqcJBXAe2ife5ZOhSv4wk7p+ffURtg==" + }, + "@types/bn.js": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.1.tgz", + "integrity": "sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g==", + "requires": { + "@types/node": "*" + } + }, + "@types/concat-stream": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@types/concat-stream/-/concat-stream-1.6.1.tgz", + "integrity": "sha512-eHE4cQPoj6ngxBZMvVf6Hw7Mh4jMW4U9lpGmS5GBPB9RYxlFg+CHaVN7ErNY4W9XfLIEn20b4VDYaIrbq0q4uA==", + "requires": { + "@types/node": "*" + } + }, + "@types/form-data": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/@types/form-data/-/form-data-0.0.33.tgz", + "integrity": "sha512-8BSvG1kGm83cyJITQMZSulnl6QV8jqAGreJsc5tPu1Jq0vTSOiY/k24Wx82JRpWwZSqrala6sd5rWi6aNXvqcw==", + "requires": { + "@types/node": "*" + } + }, + "@types/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "requires": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==" + }, + "@types/minimatch": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==" + }, + "@types/node": { + "version": "18.7.18", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.18.tgz", + "integrity": "sha512-m+6nTEOadJZuTPkKR/SYK3A2d7FZrgElol9UP1Kae90VVU4a6mxnPuLiIW1m4Cq4gZ/nWb9GrdVXJCoCazDAbg==" + }, + "@types/pbkdf2": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.0.tgz", + "integrity": "sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ==", + "requires": { + "@types/node": "*" + } + }, + "@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==" + }, + "@types/secp256k1": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.3.tgz", + "integrity": "sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w==", + "requires": { + "@types/node": "*" + } + }, + "@ungap/promise-all-settled": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", + "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==" + }, + "abbrev": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", + "integrity": "sha512-LEyx4aLEC3x6T0UguF6YILf+ntvmOaWsVfENmIW0E9H09vKlLDGelMjjSm0jkDHALj8A8quZ/HapKNigzwge+Q==" + }, + "abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "requires": { + "event-target-shim": "^5.0.0" + } + }, + "abstract-level": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/abstract-level/-/abstract-level-1.0.3.tgz", + "integrity": "sha512-t6jv+xHy+VYwc4xqZMn2Pa9DjcdzvzZmQGRjTFc8spIbRGHgBrEKbPq+rYXc7CCo0lxgYvSgKVg9qZAhpVQSjA==", + "requires": { + "buffer": "^6.0.3", + "catering": "^2.1.0", + "is-buffer": "^2.0.5", + "level-supports": "^4.0.0", + "level-transcoder": "^1.0.1", + "module-error": "^1.0.1", + "queue-microtask": "^1.2.3" + } + }, + "acorn": { + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", + "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", + "dev": true + }, + "acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true + }, + "address": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/address/-/address-1.2.1.tgz", + "integrity": "sha512-B+6bi5D34+fDYENiH5qOlA0cV2rAGKuWZ9LeyUUehbXy8e0VS9e498yO0Jeeh+iM+6KbfudHTFjXw2MmJD4QRA==" + }, + "adm-zip": { + "version": "0.4.16", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz", + "integrity": "sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==" + }, + "aes-js": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", + "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==" + }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "requires": { + "debug": "4" + } + }, + "aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==", + "optional": true + }, + "ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==" + }, + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "requires": { + "type-fest": "^0.21.3" + } + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "antlr4ts": { + "version": "0.5.0-alpha.4", + "resolved": "https://registry.npmjs.org/antlr4ts/-/antlr4ts-0.5.0-alpha.4.tgz", + "integrity": "sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ==" + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==" + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==" + }, + "array.prototype.reduce": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.4.tgz", + "integrity": "sha512-WnM+AjG/DvLRLo4DDl+r+SvCzYtD2Jd9oeBYMcEaI7t3fFrHY9M53/wdLcTvmZNQ70IU6Htj0emFkZ5TS+lrdw==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.2", + "es-array-method-boxes-properly": "^1.0.0", + "is-string": "^1.0.7" + } + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" + }, + "asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==" + }, + "async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "requires": { + "lodash": "^4.17.14" + } + }, + "async-eventemitter": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/async-eventemitter/-/async-eventemitter-0.2.4.tgz", + "integrity": "sha512-pd20BwL7Yt1zwDFy+8MX8F1+WCT8aQeKj0kQnTrH9WaeRETlRamVhD0JtRPmrV4GfOJ2F9CvdQkZeZhnh2TuHw==", + "requires": { + "async": "^2.4.0" + } + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==" + }, + "aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "base-x": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", + "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "requires": { + "tweetnacl": "^0.14.3" + }, + "dependencies": { + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" + } + } + }, + "bigint-crypto-utils": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/bigint-crypto-utils/-/bigint-crypto-utils-3.1.6.tgz", + "integrity": "sha512-k5ljSLHx94jQTW3+18KEfxLJR8/XFBHqhfhEGF48qT8p/jL6EdiG7oNOiiIRGMFh2wEP8kaCXZbVd+5dYkngUg==", + "requires": { + "bigint-mod-arith": "^3.1.0" + } + }, + "bigint-mod-arith": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/bigint-mod-arith/-/bigint-mod-arith-3.1.1.tgz", + "integrity": "sha512-SzFqdncZKXq5uh3oLFZXmzaZEMDsA7ml9l53xKaVGO6/+y26xNwAaTQEg2R+D+d07YduLbKi0dni3YPsR51UDQ==" + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" + }, + "blakejs": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz", + "integrity": "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==" + }, + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "requires": { + "fill-range": "^7.0.1" + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" + }, + "browser-level": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browser-level/-/browser-level-1.0.1.tgz", + "integrity": "sha512-XECYKJ+Dbzw0lbydyQuJzwNXtOpbMSq737qxJN11sIRTErOMShvDpbzTlgju7orJKvx4epULolZAuJGLzCmWRQ==", + "requires": { + "abstract-level": "^1.0.2", + "catering": "^2.1.1", + "module-error": "^1.0.2", + "run-parallel-limit": "^1.1.0" + } + }, + "browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==" + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "requires": { + "base-x": "^3.0.2" + } + }, + "bs58check": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", + "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", + "requires": { + "bs58": "^4.0.0", + "create-hash": "^1.1.0", + "safe-buffer": "^5.1.2" + } + }, + "buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==" + }, + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==" + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" + }, + "catering": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/catering/-/catering-2.1.1.tgz", + "integrity": "sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w==" + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "charenc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==" + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + } + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "classic-level": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/classic-level/-/classic-level-1.2.0.tgz", + "integrity": "sha512-qw5B31ANxSluWz9xBzklRWTUAJ1SXIdaVKTVS7HcTGKOAmExx65Wo5BUICW+YGORe2FOUaDghoI9ZDxj82QcFg==", + "requires": { + "abstract-level": "^1.0.2", + "catering": "^2.1.0", + "module-error": "^1.0.1", + "napi-macros": "~2.0.0", + "node-gyp-build": "^4.3.0" + } + }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" + }, + "cli-table3": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.5.1.tgz", + "integrity": "sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw==", + "requires": { + "colors": "^1.1.2", + "object-assign": "^4.1.0", + "string-width": "^2.1.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==" + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==" + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "command-exists": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", + "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==" + }, + "commander": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz", + "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" + }, + "crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==" + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, + "crypt": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==" + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "death": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/death/-/death-1.1.0.tgz", + "integrity": "sha512-vsV6S4KVHvTGxbEcij7hkWRv0It+sGGWVOM67dQde/o5Xjnr+KmLjxWJii2uEObIrt1CcM9w0Yaovx+iOlIL+w==" + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==" + }, + "deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" + }, + "define-properties": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "requires": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" + }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" + }, + "detect-port": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.5.0.tgz", + "integrity": "sha512-XA/tO5uCPYgRO8jWazmM/yaJQtqpya6x3Tm0iQVuKSRq6/dNB0TcoegMSGQWSl8AjFZNJPBBvnz7u12edNAwEQ==", + "requires": { + "address": "^1.0.1", + "debug": "4" + } + }, + "diff": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==" + }, + "difflib": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/difflib/-/difflib-0.2.4.tgz", + "integrity": "sha512-9YVwmMb0wQHQNr5J9m6BSj6fk4pfGITGQOOs+D9Fl+INODWFOfvhIU1hNv6GgR1RBoC/9NJcwu77zShxV0kT7w==", + "requires": { + "heap": ">= 0.2.0" + } + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "requires": { + "path-type": "^4.0.0" + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "requires": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + } + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "requires": { + "ansi-colors": "^4.1.1" + } + }, + "env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==" + }, + "es-abstract": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.2.tgz", + "integrity": "sha512-XxXQuVNrySBNlEkTYJoDNFe5+s2yIOpzq80sUHEdPdQr0S5nTLz4ZPPPswNIpKseDDUS5yghX1gfLIHQZ1iNuQ==", + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.1.2", + "get-symbol-description": "^1.0.0", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.2", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.4.3", + "string.prototype.trimend": "^1.0.5", + "string.prototype.trimstart": "^1.0.5", + "unbox-primitive": "^1.0.2" + }, + "dependencies": { + "object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + } + } + } + }, + "es-array-method-boxes-properly": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", + "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==" + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" + }, + "escodegen": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz", + "integrity": "sha512-yhi5S+mNTOuRvyW4gWlg5W1byMaQGWWSYHXsuFZ7GBo7tpyOwi2EdzMP/QWxh9hwkD2m+wDVHJsxhRIj+v/b/A==", + "requires": { + "esprima": "^2.7.1", + "estraverse": "^1.9.1", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.2.0" + }, + "dependencies": { + "esprima": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha512-OarPfz0lFCiW4/AV2Oy1Rp9qu0iusTKqykwTspGCZtPxmF81JR4MmIebvF1F9+UOKth2ZubLQ4XGGaU+hSn99A==" + }, + "source-map": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", + "integrity": "sha512-CBdZ2oa/BHhS4xj5DlhjWNHcan57/5YuvfdLf17iVmIpd9KRm+DFLmC6nBNj+6Ua7Kt3TmOjDpQT1aTYOQtoUA==", + "optional": true, + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + }, + "estraverse": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", + "integrity": "sha512-25w1fMXQrGdoquWnScXZGckOv+Wes+JDnuN/+7ex3SauFRS72r2lFDec0EKPt2YD1wUJ/IrfEex+9yp4hfSOJA==" + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" + }, + "eth-gas-reporter": { + "version": "0.2.25", + "resolved": "https://registry.npmjs.org/eth-gas-reporter/-/eth-gas-reporter-0.2.25.tgz", + "integrity": "sha512-1fRgyE4xUB8SoqLgN3eDfpDfwEfRxh2Sz1b7wzFbyQA+9TekMmvSjjoRu9SKcSVyK+vLkLIsVbJDsTWjw195OQ==", + "requires": { + "@ethersproject/abi": "^5.0.0-beta.146", + "@solidity-parser/parser": "^0.14.0", + "cli-table3": "^0.5.0", + "colors": "1.4.0", + "ethereum-cryptography": "^1.0.3", + "ethers": "^4.0.40", + "fs-readdir-recursive": "^1.1.0", + "lodash": "^4.17.14", + "markdown-table": "^1.1.3", + "mocha": "^7.1.1", + "req-cwd": "^2.0.0", + "request": "^2.88.0", + "request-promise-native": "^1.0.5", + "sha1": "^1.1.1", + "sync-request": "^6.0.0" + }, + "dependencies": { + "ansi-colors": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", + "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==" + }, + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==" + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + }, + "chokidar": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.0.tgz", + "integrity": "sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A==", + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.1", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.2.0" + } + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==" + }, + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==" + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "requires": { + "locate-path": "^3.0.0" + } + }, + "flat": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.1.tgz", + "integrity": "sha512-FmTtBsHskrU6FJ2VxCnsDb84wu9zhmO3cUX2kGFb5tuwhfXxGciiT0oRY+cck35QmG+NmGh5eLz6lLCpWTqwpA==", + "requires": { + "is-buffer": "~2.0.3" + } + }, + "fsevents": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "optional": true + }, + "glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==" + }, + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "log-symbols": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", + "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", + "requires": { + "chalk": "^2.4.2" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "mocha": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-7.2.0.tgz", + "integrity": "sha512-O9CIypScywTVpNaRrCAgoUnJgozpIofjKUYmJhiCIJMiuYnLI6otcb1/kpW9/n/tJODHGZ7i8aLQoDVsMtOKQQ==", + "requires": { + "ansi-colors": "3.2.3", + "browser-stdout": "1.3.1", + "chokidar": "3.3.0", + "debug": "3.2.6", + "diff": "3.5.0", + "escape-string-regexp": "1.0.5", + "find-up": "3.0.0", + "glob": "7.1.3", + "growl": "1.10.5", + "he": "1.2.0", + "js-yaml": "3.13.1", + "log-symbols": "3.0.0", + "minimatch": "3.0.4", + "mkdirp": "0.5.5", + "ms": "2.1.1", + "node-environment-flags": "1.0.6", + "object.assign": "4.1.0", + "strip-json-comments": "2.0.1", + "supports-color": "6.0.0", + "which": "1.3.1", + "wide-align": "1.1.3", + "yargs": "13.3.2", + "yargs-parser": "13.1.2", + "yargs-unparser": "1.6.0" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "readdirp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.2.0.tgz", + "integrity": "sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ==", + "requires": { + "picomatch": "^2.0.4" + } + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==" + }, + "supports-color": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz", + "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + } + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + }, + "yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + } + }, + "yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "yargs-unparser": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz", + "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==", + "requires": { + "flat": "^4.1.0", + "lodash": "^4.17.15", + "yargs": "^13.3.0" + } + } + } + }, + "ethereum-bloom-filters": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.10.tgz", + "integrity": "sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA==", + "requires": { + "js-sha3": "^0.8.0" + } + }, + "ethereum-cryptography": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-1.1.2.tgz", + "integrity": "sha512-XDSJlg4BD+hq9N2FjvotwUET9Tfxpxc3kWGE2AqUG5vcbeunnbImVk3cj6e/xT3phdW21mE8R5IugU4fspQDcQ==", + "requires": { + "@noble/hashes": "1.1.2", + "@noble/secp256k1": "1.6.3", + "@scure/bip32": "1.1.0", + "@scure/bip39": "1.1.0" + } + }, + "ethereumjs-abi": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz", + "integrity": "sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==", + "requires": { + "bn.js": "^4.11.8", + "ethereumjs-util": "^6.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + } + } + }, + "ethereumjs-util": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", + "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", + "requires": { + "@types/bn.js": "^4.11.3", + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "0.1.6", + "rlp": "^2.2.3" + }, + "dependencies": { + "@types/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", + "requires": { + "@types/node": "*" + } + }, + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "requires": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + }, + "rlp": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.7.tgz", + "integrity": "sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==", + "requires": { + "bn.js": "^5.2.0" + }, + "dependencies": { + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + } + } + } + } + }, + "ethers": { + "version": "4.0.49", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-4.0.49.tgz", + "integrity": "sha512-kPltTvWiyu+OktYy1IStSO16i2e7cS9D9OxZ81q2UUaiNPVrm/RTcbxamCXF9VUSKzJIdJV68EAIhTEVBalRWg==", + "requires": { + "aes-js": "3.0.0", + "bn.js": "^4.11.9", + "elliptic": "6.5.4", + "hash.js": "1.1.3", + "js-sha3": "0.5.7", + "scrypt-js": "2.0.4", + "setimmediate": "1.0.4", + "uuid": "2.0.1", + "xmlhttprequest": "1.8.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "hash.js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", + "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.0" + } + }, + "js-sha3": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", + "integrity": "sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g==" + }, + "scrypt-js": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-2.0.4.tgz", + "integrity": "sha512-4KsaGcPnuhtCZQCxFxN3GVYIhKFPTdLd8PLC552XwbMndtD0cjRFAhDuuydXQ0h08ZfPgzqe6EKHozpuH74iDw==" + }, + "setimmediate": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.4.tgz", + "integrity": "sha512-/TjEmXQVEzdod/FFskf3o7oOAsGhHf2j1dZqRFbDzq4F3mvvxflIIi4Hd3bLQE9y/CpwqfSQam5JakI/mi3Pog==" + }, + "uuid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.1.tgz", + "integrity": "sha512-nWg9+Oa3qD2CQzHIP4qKUqwNfzKn8P0LtFhotaCTFchsV7ZfDhAybeip/HZVeMIpZi9JgY1E3nUlwaCmZT1sEg==" + } + } + }, + "ethjs-unit": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz", + "integrity": "sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==", + "requires": { + "bn.js": "4.11.6", + "number-to-bn": "1.7.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==" + } + } + }, + "ethjs-util": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.6.tgz", + "integrity": "sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==", + "requires": { + "is-hex-prefixed": "1.0.0", + "strip-hex-prefix": "1.0.0" + } + }, + "event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==" + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==" + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" + }, + "fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "requires": { + "reusify": "^1.0.4" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "requires": { + "locate-path": "^2.0.0" + } + }, + "flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==" + }, + "follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==" + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "fp-ts": { + "version": "1.19.3", + "resolved": "https://registry.npmjs.org/fp-ts/-/fp-ts-1.19.3.tgz", + "integrity": "sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg==" + }, + "fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs-readdir-recursive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", + "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==" + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + } + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==" + }, + "functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==" + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + }, + "get-intrinsic": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", + "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + } + }, + "get-port": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", + "integrity": "sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==" + }, + "get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "ghost-testrpc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/ghost-testrpc/-/ghost-testrpc-0.0.2.tgz", + "integrity": "sha512-i08dAEgJ2g8z5buJIrCTduwPIhih3DP+hOCTyyryikfV8T0bNvHnGXO67i0DD1H4GBDETTclPy9njZbfluQYrQ==", + "requires": { + "chalk": "^2.4.2", + "node-emoji": "^1.10.0" + } + }, + "glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "requires": { + "is-glob": "^4.0.1" + } + }, + "global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "requires": { + "global-prefix": "^3.0.0" + } + }, + "global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "requires": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + } + }, + "globby": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz", + "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==", + "requires": { + "@types/glob": "^7.1.1", + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.0.3", + "glob": "^7.1.3", + "ignore": "^5.1.1", + "merge2": "^1.2.3", + "slash": "^3.0.0" + } + }, + "graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + }, + "growl": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==" + }, + "handlebars": { + "version": "4.7.7", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", + "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", + "requires": { + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4", + "wordwrap": "^1.0.0" + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==" + }, + "har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "requires": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + } + }, + "hardhat": { + "version": "2.11.2", + "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-2.11.2.tgz", + "integrity": "sha512-BdsXC1CFJQDJKmAgCwpmGhFuVU6dcqlgMgT0Kg/xmFAFVugkpYu6NRmh4AaJ3Fah0/BR9DOR4XgQGIbg4eon/Q==", + "requires": { + "@ethersproject/abi": "^5.1.2", + "@metamask/eth-sig-util": "^4.0.0", + "@nomicfoundation/ethereumjs-block": "^4.0.0", + "@nomicfoundation/ethereumjs-blockchain": "^6.0.0", + "@nomicfoundation/ethereumjs-common": "^3.0.0", + "@nomicfoundation/ethereumjs-evm": "^1.0.0", + "@nomicfoundation/ethereumjs-rlp": "^4.0.0", + "@nomicfoundation/ethereumjs-statemanager": "^1.0.0", + "@nomicfoundation/ethereumjs-trie": "^5.0.0", + "@nomicfoundation/ethereumjs-tx": "^4.0.0", + "@nomicfoundation/ethereumjs-util": "^8.0.0", + "@nomicfoundation/ethereumjs-vm": "^6.0.0", + "@nomicfoundation/solidity-analyzer": "^0.0.3", + "@sentry/node": "^5.18.1", + "@types/bn.js": "^5.1.0", + "@types/lru-cache": "^5.1.0", + "abort-controller": "^3.0.0", + "adm-zip": "^0.4.16", + "aggregate-error": "^3.0.0", + "ansi-escapes": "^4.3.0", + "chalk": "^2.4.2", + "chokidar": "^3.4.0", + "ci-info": "^2.0.0", + "debug": "^4.1.1", + "enquirer": "^2.3.0", + "env-paths": "^2.2.0", + "ethereum-cryptography": "^1.0.3", + "ethereumjs-abi": "^0.6.8", + "find-up": "^2.1.0", + "fp-ts": "1.19.3", + "fs-extra": "^7.0.1", + "glob": "7.2.0", + "immutable": "^4.0.0-rc.12", + "io-ts": "1.10.4", + "keccak": "^3.0.2", + "lodash": "^4.17.11", + "mnemonist": "^0.38.0", + "mocha": "^10.0.0", + "p-map": "^4.0.0", + "qs": "^6.7.0", + "raw-body": "^2.4.1", + "resolve": "1.17.0", + "semver": "^6.3.0", + "solc": "0.7.3", + "source-map-support": "^0.5.13", + "stacktrace-parser": "^0.1.10", + "tsort": "0.0.1", + "undici": "^5.4.0", + "uuid": "^8.3.2", + "ws": "^7.4.6" + } + }, + "hardhat-gas-reporter": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/hardhat-gas-reporter/-/hardhat-gas-reporter-1.0.9.tgz", + "integrity": "sha512-INN26G3EW43adGKBNzYWOlI3+rlLnasXTwW79YNnUhXPDa+yHESgt639dJEs37gCjhkbNKcRRJnomXEuMFBXJg==", + "requires": { + "array-uniq": "1.0.3", + "eth-gas-reporter": "^0.2.25", + "sha1": "^1.1.1" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" + }, + "has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "requires": { + "get-intrinsic": "^1.1.1" + } + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "requires": { + "has-symbols": "^1.0.2" + } + }, + "hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "requires": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + } + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" + }, + "heap": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/heap/-/heap-0.2.7.tgz", + "integrity": "sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==" + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "http-basic": { + "version": "8.1.3", + "resolved": "https://registry.npmjs.org/http-basic/-/http-basic-8.1.3.tgz", + "integrity": "sha512-/EcDMwJZh3mABI2NhGfHOGOeOZITqfkEO4p/xK+l3NpyncIHUQBoMvCSF/b5GqvKtySC2srL/GGG3+EtlqlmCw==", + "requires": { + "caseless": "^0.12.0", + "concat-stream": "^1.6.2", + "http-response-object": "^3.0.1", + "parse-cache-control": "^1.0.1" + } + }, + "http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "requires": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + } + }, + "http-response-object": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/http-response-object/-/http-response-object-3.0.2.tgz", + "integrity": "sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA==", + "requires": { + "@types/node": "^10.0.3" + }, + "dependencies": { + "@types/node": { + "version": "10.17.60", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", + "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==" + } + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, + "ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==" + }, + "immutable": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz", + "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==" + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "requires": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + } + }, + "interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==" + }, + "io-ts": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/io-ts/-/io-ts-1.10.4.tgz", + "integrity": "sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g==", + "requires": { + "fp-ts": "^1.0.0" + } + }, + "is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "requires": { + "has-bigints": "^1.0.1" + } + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==" + }, + "is-callable": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.6.tgz", + "integrity": "sha512-krO72EO2NptOGAX2KYyqbP9vYMlNAXdB53rq6f8LXY6RY7JdSR/3BD6wLUlPHSAesmY9vstNrjvqGaCiRK/91Q==" + }, + "is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-hex-prefixed": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", + "integrity": "sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==" + }, + "is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==" + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==" + }, + "is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "requires": { + "call-bind": "^1.0.2" + } + }, + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "requires": { + "has-symbols": "^1.0.2" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" + }, + "is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==" + }, + "is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "requires": { + "call-bind": "^1.0.2" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" + }, + "js-sha3": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==" + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "requires": { + "argparse": "^2.0.1" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" + }, + "json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsonschema": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.4.1.tgz", + "integrity": "sha512-S6cATIPVv1z0IlxdN+zUk5EPjkGCdnhN4wVSBlvoUO1tOLJootbo9CquNJmbIh4yikWHiUedhRYrNPn1arpEmQ==" + }, + "jsprim": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + } + }, + "keccak": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.2.tgz", + "integrity": "sha512-PyKKjkH53wDMLGrvmRGSNWgmSxZOUqbnXwKL9tmgbFYA1iAYqW21kfR7mZXV0MlESiefxQQE9X9fTa3X+2MPDQ==", + "requires": { + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0", + "readable-stream": "^3.6.0" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + }, + "klaw": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", + "integrity": "sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw==", + "requires": { + "graceful-fs": "^4.1.9" + } + }, + "level": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/level/-/level-8.0.0.tgz", + "integrity": "sha512-ypf0jjAk2BWI33yzEaaotpq7fkOPALKAgDBxggO6Q9HGX2MRXn0wbP1Jn/tJv1gtL867+YOjOB49WaUF3UoJNQ==", + "requires": { + "browser-level": "^1.0.1", + "classic-level": "^1.2.0" + } + }, + "level-supports": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-4.0.1.tgz", + "integrity": "sha512-PbXpve8rKeNcZ9C1mUicC9auIYFyGpkV9/i6g76tLgANwWhtG2v7I4xNBUlkn3lE2/dZF3Pi0ygYGtLc4RXXdA==" + }, + "level-transcoder": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/level-transcoder/-/level-transcoder-1.0.1.tgz", + "integrity": "sha512-t7bFwFtsQeD8cl8NIoQ2iwxA0CL/9IFw7/9gAjOonH0PWTTiRfY7Hq+Ejbsxh86tXobDQ6IOiddjNYIfOBs06w==", + "requires": { + "buffer": "^6.0.3", + "module-error": "^1.0.1" + } + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "requires": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "requires": { + "yallist": "^3.0.2" + } + }, + "lru_map": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz", + "integrity": "sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==" + }, + "make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "markdown-table": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-1.1.3.tgz", + "integrity": "sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q==" + }, + "mcl-wasm": { + "version": "0.7.9", + "resolved": "https://registry.npmjs.org/mcl-wasm/-/mcl-wasm-0.7.9.tgz", + "integrity": "sha512-iJIUcQWA88IJB/5L15GnJVnSQJmf/YaxxV6zRavv83HILHaJQb6y0iFyDMdDO0gN8X37tdxmAOrH/P8B6RB8sQ==" + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "memory-level": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/memory-level/-/memory-level-1.0.0.tgz", + "integrity": "sha512-UXzwewuWeHBz5krr7EvehKcmLFNoXxGcvuYhC41tRnkrTbJohtS7kVn9akmgirtRygg+f7Yjsfi8Uu5SGSQ4Og==", + "requires": { + "abstract-level": "^1.0.0", + "functional-red-black-tree": "^1.0.1", + "module-error": "^1.0.1" + } + }, + "memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==" + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "requires": { + "mime-db": "1.52.0" + } + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==" + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "requires": { + "minimist": "^1.2.5" + } + }, + "mnemonist": { + "version": "0.38.5", + "resolved": "https://registry.npmjs.org/mnemonist/-/mnemonist-0.38.5.tgz", + "integrity": "sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg==", + "requires": { + "obliterator": "^2.0.0" + } + }, + "mocha": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.0.0.tgz", + "integrity": "sha512-0Wl+elVUD43Y0BqPZBzZt8Tnkw9CMUdNYnUsTfOM1vuhJVZL+kiesFYsqwBkEEuEixaiPe5ZQdqDgX2jddhmoA==", + "requires": { + "@ungap/promise-all-settled": "1.1.2", + "ansi-colors": "4.1.1", + "browser-stdout": "1.3.1", + "chokidar": "3.5.3", + "debug": "4.3.4", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "7.2.0", + "he": "1.2.0", + "js-yaml": "4.1.0", + "log-symbols": "4.1.0", + "minimatch": "5.0.1", + "ms": "2.1.3", + "nanoid": "3.3.3", + "serialize-javascript": "6.0.0", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "workerpool": "6.2.1", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" + }, + "dependencies": { + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==" + }, + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "requires": { + "balanced-match": "^1.0.0" + } + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "requires": { + "p-locate": "^5.0.0" + } + }, + "minimatch": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "requires": { + "p-limit": "^3.0.2" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "module-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/module-error/-/module-error-1.0.2.tgz", + "integrity": "sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA==" + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "nanoid": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", + "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==" + }, + "napi-macros": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/napi-macros/-/napi-macros-2.0.0.tgz", + "integrity": "sha512-A0xLykHtARfueITVDernsAWdtIMbOJgKgcluwENp3AlsKN/PloyO10HtmoqnFAQAcxPkgZN7wdfPfEd0zNGxbg==" + }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" + }, + "node-addon-api": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", + "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==" + }, + "node-emoji": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", + "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", + "requires": { + "lodash": "^4.17.21" + } + }, + "node-environment-flags": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.6.tgz", + "integrity": "sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw==", + "requires": { + "object.getownpropertydescriptors": "^2.0.3", + "semver": "^5.7.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "node-gyp-build": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.5.0.tgz", + "integrity": "sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==" + }, + "nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==", + "requires": { + "abbrev": "1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + }, + "number-to-bn": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz", + "integrity": "sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==", + "requires": { + "bn.js": "4.11.6", + "strip-hex-prefix": "1.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==" + } + } + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" + }, + "object-inspect": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==" + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.getownpropertydescriptors": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.4.tgz", + "integrity": "sha512-sccv3L/pMModT6dJAYF3fzGMVcb38ysQ0tEE6ixv2yXJDtEIPph268OlAdJj5/qZMZDq2g/jqvwppt36uS/uQQ==", + "requires": { + "array.prototype.reduce": "^1.0.4", + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.1" + } + }, + "obliterator": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/obliterator/-/obliterator-2.0.4.tgz", + "integrity": "sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ==" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "requires": { + "wrappy": "1" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==" + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==" + }, + "parse-cache-control": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-cache-control/-/parse-cache-control-1.0.1.tgz", + "integrity": "sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg==" + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" + }, + "pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==" + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "promise": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/promise/-/promise-8.2.0.tgz", + "integrity": "sha512-+CMAlLHqwRYwBMXKCP+o8ns7DN+xHDUiI+0nArsiJ9y+kJVPLFxEaSw6Ha9s9H0tftxg2Yzl25wqj9G7m5wLZg==", + "requires": { + "asap": "~2.0.6" + } + }, + "psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + }, + "qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "requires": { + "side-channel": "^1.0.4" + } + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "requires": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "requires": { + "picomatch": "^2.2.1" + } + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "requires": { + "resolve": "^1.1.6" + } + }, + "recursive-readdir": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz", + "integrity": "sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg==", + "requires": { + "minimatch": "3.0.4" + }, + "dependencies": { + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + } + } + }, + "regexp.prototype.flags": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" + } + }, + "req-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/req-cwd/-/req-cwd-2.0.0.tgz", + "integrity": "sha512-ueoIoLo1OfB6b05COxAA9UpeoscNpYyM+BqYlA7H6LVF4hKGPXQQSSaD2YmvDVJMkk4UDpAHIeU1zG53IqjvlQ==", + "requires": { + "req-from": "^2.0.0" + } + }, + "req-from": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/req-from/-/req-from-2.0.0.tgz", + "integrity": "sha512-LzTfEVDVQHBRfjOUMgNBA+V6DWsSnoeKzf42J7l0xa/B4jyPOuuF5MlNSmomLNGemWTnV2TIdjSSLnEn95fOQA==", + "requires": { + "resolve-from": "^3.0.0" + } + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==" + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + } + } + }, + "request-promise-core": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", + "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", + "requires": { + "lodash": "^4.17.19" + } + }, + "request-promise-native": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz", + "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", + "requires": { + "request-promise-core": "1.1.4", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==" + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, + "resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==" + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "requires": { + "glob": "^7.1.3" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "run-parallel-limit": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/run-parallel-limit/-/run-parallel-limit-1.1.0.tgz", + "integrity": "sha512-jJA7irRNM91jaKc3Hcl1npHsFLOXOoTkPCUL1JEa1R82O2miplXXRaGdjW/KM/98YQWDhJLiSs793CnXfblJUw==", + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "rustbn.js": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/rustbn.js/-/rustbn.js-0.2.0.tgz", + "integrity": "sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA==" + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "sc-istanbul": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/sc-istanbul/-/sc-istanbul-0.4.6.tgz", + "integrity": "sha512-qJFF/8tW/zJsbyfh/iT/ZM5QNHE3CXxtLJbZsL+CzdJLBsPD7SedJZoUA4d8iAcN2IoMp/Dx80shOOd2x96X/g==", + "requires": { + "abbrev": "1.0.x", + "async": "1.x", + "escodegen": "1.8.x", + "esprima": "2.7.x", + "glob": "^5.0.15", + "handlebars": "^4.0.1", + "js-yaml": "3.x", + "mkdirp": "0.5.x", + "nopt": "3.x", + "once": "1.x", + "resolve": "1.1.x", + "supports-color": "^3.1.0", + "which": "^1.1.1", + "wordwrap": "^1.0.0" + }, + "dependencies": { + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==" + }, + "esprima": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha512-OarPfz0lFCiW4/AV2Oy1Rp9qu0iusTKqykwTspGCZtPxmF81JR4MmIebvF1F9+UOKth2ZubLQ4XGGaU+hSn99A==" + }, + "glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA==", + "requires": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==" + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "dependencies": { + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + } + } + }, + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg==" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "scrypt-js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", + "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==" + }, + "secp256k1": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.3.tgz", + "integrity": "sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==", + "requires": { + "elliptic": "^6.5.4", + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + }, + "serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "requires": { + "randombytes": "^2.1.0" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + }, + "setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "sha1": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/sha1/-/sha1-1.1.1.tgz", + "integrity": "sha512-dZBS6OrMjtgVkopB1Gmo4RQCDKiZsqcpAQpkV/aaj+FCrCg8r4I4qMkDPQjBgLIxlmu9k4nUbWq6ohXahOneYA==", + "requires": { + "charenc": ">= 0.0.1", + "crypt": ">= 0.0.1" + } + }, + "shelljs": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", + "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", + "requires": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + } + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" + }, + "solc": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/solc/-/solc-0.7.3.tgz", + "integrity": "sha512-GAsWNAjGzIDg7VxzP6mPjdurby3IkGCjQcM8GFYZT6RyaoUZKmMU6Y7YwG+tFGhv7dwZ8rmR4iwFDrrD99JwqA==", + "requires": { + "command-exists": "^1.2.8", + "commander": "3.0.2", + "follow-redirects": "^1.12.1", + "fs-extra": "^0.30.0", + "js-sha3": "0.8.0", + "memorystream": "^0.3.1", + "require-from-string": "^2.0.0", + "semver": "^5.5.0", + "tmp": "0.0.33" + }, + "dependencies": { + "fs-extra": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", + "integrity": "sha512-UvSPKyhMn6LEd/WpUaV9C9t3zATuqoqfWc3QdPhPLb58prN9tqYPlPWi8Krxi44loBoUzlobqZ3+8tGpxxSzwA==", + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^2.1.0", + "klaw": "^1.0.0", + "path-is-absolute": "^1.0.0", + "rimraf": "^2.2.8" + } + }, + "jsonfile": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==", + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "solidity-coverage": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/solidity-coverage/-/solidity-coverage-0.8.2.tgz", + "integrity": "sha512-cv2bWb7lOXPE9/SSleDO6czkFiMHgP4NXPj+iW9W7iEKLBk7Cj0AGBiNmGX3V1totl9wjPrT0gHmABZKZt65rQ==", + "requires": { + "@ethersproject/abi": "^5.0.9", + "@solidity-parser/parser": "^0.14.1", + "chalk": "^2.4.2", + "death": "^1.1.0", + "detect-port": "^1.3.0", + "difflib": "^0.2.4", + "fs-extra": "^8.1.0", + "ghost-testrpc": "^0.0.2", + "global-modules": "^2.0.0", + "globby": "^10.0.1", + "jsonschema": "^1.2.4", + "lodash": "^4.17.15", + "mocha": "7.1.2", + "node-emoji": "^1.10.0", + "pify": "^4.0.1", + "recursive-readdir": "^2.2.2", + "sc-istanbul": "^0.4.5", + "semver": "^7.3.4", + "shelljs": "^0.8.3", + "web3-utils": "^1.3.6" + }, + "dependencies": { + "ansi-colors": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", + "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==" + }, + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==" + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + }, + "chokidar": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.0.tgz", + "integrity": "sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A==", + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.1", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.2.0" + } + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==" + }, + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==" + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "requires": { + "locate-path": "^3.0.0" + } + }, + "flat": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.1.tgz", + "integrity": "sha512-FmTtBsHskrU6FJ2VxCnsDb84wu9zhmO3cUX2kGFb5tuwhfXxGciiT0oRY+cck35QmG+NmGh5eLz6lLCpWTqwpA==", + "requires": { + "is-buffer": "~2.0.3" + } + }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fsevents": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "optional": true + }, + "glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==" + }, + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "log-symbols": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", + "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", + "requires": { + "chalk": "^2.4.2" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "mocha": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-7.1.2.tgz", + "integrity": "sha512-o96kdRKMKI3E8U0bjnfqW4QMk12MwZ4mhdBTf+B5a1q9+aq2HRnj+3ZdJu0B/ZhJeK78MgYuv6L8d/rA5AeBJA==", + "requires": { + "ansi-colors": "3.2.3", + "browser-stdout": "1.3.1", + "chokidar": "3.3.0", + "debug": "3.2.6", + "diff": "3.5.0", + "escape-string-regexp": "1.0.5", + "find-up": "3.0.0", + "glob": "7.1.3", + "growl": "1.10.5", + "he": "1.2.0", + "js-yaml": "3.13.1", + "log-symbols": "3.0.0", + "minimatch": "3.0.4", + "mkdirp": "0.5.5", + "ms": "2.1.1", + "node-environment-flags": "1.0.6", + "object.assign": "4.1.0", + "strip-json-comments": "2.0.1", + "supports-color": "6.0.0", + "which": "1.3.1", + "wide-align": "1.1.3", + "yargs": "13.3.2", + "yargs-parser": "13.1.2", + "yargs-unparser": "1.6.0" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "readdirp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.2.0.tgz", + "integrity": "sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ==", + "requires": { + "picomatch": "^2.0.4" + } + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "requires": { + "lru-cache": "^6.0.0" + } + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==" + }, + "supports-color": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz", + "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + } + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + } + }, + "yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "yargs-unparser": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz", + "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==", + "requires": { + "flat": "^4.1.0", + "lodash": "^4.17.15", + "yargs": "^13.3.0" + } + } + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + }, + "sshpk": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "dependencies": { + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" + } + } + }, + "stacktrace-parser": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz", + "integrity": "sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==", + "requires": { + "type-fest": "^0.7.1" + }, + "dependencies": { + "type-fest": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz", + "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==" + } + } + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" + }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==" + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "string.prototype.trimend": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", + "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" + } + }, + "string.prototype.trimstart": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", + "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" + } + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-hex-prefix": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz", + "integrity": "sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==", + "requires": { + "is-hex-prefixed": "1.0.0" + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "sync-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/sync-request/-/sync-request-6.1.0.tgz", + "integrity": "sha512-8fjNkrNlNCrVc/av+Jn+xxqfCjYaBoHqCsDz6mt030UMxJGr+GSfCV1dQt2gRtlL63+VPidwDVLr7V2OcTSdRw==", + "requires": { + "http-response-object": "^3.0.1", + "sync-rpc": "^1.2.1", + "then-request": "^6.0.0" + } + }, + "sync-rpc": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/sync-rpc/-/sync-rpc-1.3.6.tgz", + "integrity": "sha512-J8jTXuZzRlvU7HemDgHi3pGnh/rkoqR/OZSjhTyyZrEkkYQbk7Z33AXp37mkPfPpfdOuj7Ex3H/TJM1z48uPQw==", + "requires": { + "get-port": "^3.1.0" + } + }, + "then-request": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/then-request/-/then-request-6.0.2.tgz", + "integrity": "sha512-3ZBiG7JvP3wbDzA9iNY5zJQcHL4jn/0BWtXIkagfz7QgOL/LqjCEOBQuJNZfu0XYnv5JhKh+cDxCPM4ILrqruA==", + "requires": { + "@types/concat-stream": "^1.6.0", + "@types/form-data": "0.0.33", + "@types/node": "^8.0.0", + "@types/qs": "^6.2.31", + "caseless": "~0.12.0", + "concat-stream": "^1.6.0", + "form-data": "^2.2.0", + "http-basic": "^8.1.1", + "http-response-object": "^3.0.1", + "promise": "^8.0.0", + "qs": "^6.4.0" + }, + "dependencies": { + "@types/node": { + "version": "8.10.66", + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.66.tgz", + "integrity": "sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw==" + } + } + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "requires": { + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "ts-node": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "dev": true, + "requires": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "dependencies": { + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true + } + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "tsort": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/tsort/-/tsort-0.0.1.tgz", + "integrity": "sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw==" + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==" + }, + "tweetnacl-util": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz", + "integrity": "sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==" + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==" + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" + }, + "typescript": { + "version": "4.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.3.tgz", + "integrity": "sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig==", + "dev": true + }, + "uglify-js": { + "version": "3.17.1", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.1.tgz", + "integrity": "sha512-+juFBsLLw7AqMaqJ0GFvlsGZwdQfI2ooKQB39PSBgMnMakcFosi9O8jCwE+2/2nMNcc0z63r9mwjoDG8zr+q0Q==", + "optional": true + }, + "unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "requires": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + } + }, + "undici": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.10.0.tgz", + "integrity": "sha512-c8HsD3IbwmjjbLvoZuRI26TZic+TSEe8FPMLLOkN1AfYRhdjnKBU6yL+IwcSCbdZiX4e5t0lfMDLDCqj4Sq70g==" + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "requires": { + "punycode": "^2.1.0" + } + }, + "utf8": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz", + "integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==" + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" + }, + "v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "web3-utils": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.8.0.tgz", + "integrity": "sha512-7nUIl7UWpLVka2f09CMbKOSEvorvHnaugIabU4mj7zfMvm0tSByLcEu3eyV9qgS11qxxLuOkzBIwCstTflhmpQ==", + "requires": { + "bn.js": "^5.2.1", + "ethereum-bloom-filters": "^1.0.6", + "ethereumjs-util": "^7.1.0", + "ethjs-unit": "0.1.6", + "number-to-bn": "1.7.0", + "randombytes": "^2.1.0", + "utf8": "3.0.0" + }, + "dependencies": { + "ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "requires": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + }, + "ethereumjs-util": { + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", + "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", + "requires": { + "@types/bn.js": "^5.1.0", + "bn.js": "^5.1.2", + "create-hash": "^1.1.2", + "ethereum-cryptography": "^0.1.3", + "rlp": "^2.2.4" + } + }, + "rlp": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.7.tgz", + "integrity": "sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==", + "requires": { + "bn.js": "^5.2.0" + } + } + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "requires": { + "isexe": "^2.0.0" + } + }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==" + }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "requires": { + "string-width": "^1.0.2 || 2" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==" + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==" + }, + "workerpool": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", + "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==" + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==" + }, + "xmlhttprequest": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz", + "integrity": "sha512-58Im/U0mlVBLM38NdZjHyhuMtCqa61469k2YP/AaPbvCoV9aQGUpbJBj1QRm2ytRiVQBD/fsw7L2bJGDVQswBA==" + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + }, + "yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==" + }, + "yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "requires": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + } + }, + "yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" + } + } +} diff --git a/package.json b/package.json index 3d3821da6..9d0d30d14 100644 --- a/package.json +++ b/package.json @@ -22,10 +22,15 @@ "jest-diff": "^24.9.0", "jest-junit": "^6.4.0", "solium": "^1.2.5", - "solparse": "^2.2.8" + "solparse": "^2.2.8", + "ts-node": "^10.9.1", + "typescript": "^4.8.3" }, "dependencies": { - "eth-saddle": "^0.1.17" + "eth-saddle": "^0.1.17", + "hardhat": "^2.11.2", + "hardhat-gas-reporter": "^1.0.9", + "solidity-coverage": "^0.8.2" }, "resolutions": { "scrypt.js": "https://registry.npmjs.org/@compound-finance/ethereumjs-wallet/-/ethereumjs-wallet-0.6.3.tgz",